source: TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/visualise.kid @ 2888

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/visualise.kid@2888
Revision 2888, 7.3 KB checked in by spascoe, 13 years ago (diff)

Selecting time domain is mainly working.

Line 
1<?python
2import sets
3?>
4<html py:extends="'ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml"
5    xmlns:py="http://purl.org/kid/ns#">
6   
7    <div py:def="wmsControl()">
8        <!-- Provides the controls necessary to select layers and time, the
9             bounding box is dealt with by the openlayers javascript
10             directly -->
11    </div>
12       
13    <script py:def="granuleMetadata(granuleDict)" language="javascript">
14
15      var app = null;
16      var control = null;
17     
18      <!--! load the metadata of all selected granules into a javascript object on the browser -->
19      var granules = {
20        <?python granuleNames = granuleDict.keys() ?>
21        <for py:for="granuleName in granuleNames" py:strip="True">
22          <?python
23            granule = granuleDict[granuleName]
24            featureIds = granule.getFeatureList()
25          ?>
26          "${granuleName}": {
27            "wmsURI": "${h.url_for(controller='csml_wms', uri=granuleName)}",
28            <for py:for="featureId in featureIds" py:strip="True">
29              <?python feature = granule.getFeature(featureId) ?>
30              "${featureId}": {
31                name: "${feature.description.CONTENT}",
32                ftype: "${feature.featureType}",
33                <!--!TODO make domain generic.  This is a hack! -->
34                domain: {time: ${str(feature.getDomain()['time'])}}
35              }<if py:if="featureId != featureIds[-1]" py:replace="','"/>
36            </for>
37          }<if py:if="granuleName != granuleNames[-1]" py:replace="','"/>
38        </for>
39      };
40
41      function initVisMapBox() {
42        app = new VisApp('visMap', 'navForm', 600, 10);
43        control = new VisControl(app, granules, 'dsList', 'fList', 'domainForm');
44        // Update the vis
45        control.populateDomainOptions();
46        control.updateVisApp();
47      }
48
49      var tabberOptions = {onLoad: initVisMapBox};
50
51    </script>
52       
53    <div py:def="inpage()">
54        <!-- This provides the user interaction tabbed material below the
55        graphics display -->
56        <?python headers=['Granules','Variables','Constraints']
57        print 'Visible',c.visible
58        status={}
59        for hh in headers:status[hh]='hidden'
60        status[c.visible]='current'
61        ?>
62        <div class="tabber">
63            <!-- This provides the tabs -->
64            <!-- This is the Dataset tab content -->
65            <div id="${headers[0]}" class="tabbertab">
66              <h3>${headers[0]}</h3>
67              <form id="dsList">
68              <ul>
69                <li py:for="uri in c.selections">
70                  <?python selStatus=False
71                    if uri==c.viewedDataset: selStatus=True
72                  ?>
73                ${XML(h.radio_button(name="dataset",value=uri,checked=selStatus, onchange="control.updateVisApp()"))}$uri</li>
74              </ul>
75              </form>
76            </div>
77            <!-- Now we have the variables tab content -->
78            <div id="${headers[1]}" class="tabbertab">
79              <h3>${headers[1]}</h3>
80              <?python
81                features=c.selections[c.viewedDataset].getFeatureList()
82                ii=0
83                localkeys={}
84                print c.selected
85                for u,f in c.selected:
86                    if u==c.viewedDataset: localkeys[f]=(u,f)
87              ?>
88              <h4> $c.viewedDataset</h4>
89              <form id="fList" onchange="control.updateVisApp()">
90                <ul>
91                  <li py:for="featureID in features">
92                    <?python
93                      selStatus=False
94                      if featureID in localkeys:
95                          selStatus=True
96                          feature=c.selected[localkeys[featureID]]
97                      else: feature=c.selections[c.viewedDataset].getFeature(featureID)
98                      name=feature.description.CONTENT
99                      ftype=feature.featureType
100                      checkname='Feature%s'%ii
101                      ii+=1
102                    ?>
103                    ${XML(h.check_box(name=checkname,value=featureID,checked=selStatus, onchange="control.updateVisApp()"))}$name
104                  ($ftype)</li>
105                </ul>
106              </form>
107            </div>
108            <div id="${headers[2]}" class="tabbertab">
109              <!-- Provides the constraints tab -->
110              <h3>${headers[2]}</h3>
111              <ul>
112                <li py:for="u,f in c.selected">$u <ul>
113                <li> $f : ${c.selected[(u,f)].featureType}<br />
114                ${','.join(c.selected[(u,f)].getAxisLabels())}</li>
115              </ul>
116                </li>
117                <li py:if="len(c.selected)==0">There are no features
118                selected, hence no constraints!</li>
119              </ul>
120              <div py:if="c.wmsAvailable">
121                <?python
122                  try:
123                      #use the first one for now
124                      for u,f in c.selected:
125                          i=c.selected[(u,f)]
126                          break
127                      taxis=i.getDomain()[i.getTimeAxis()]
128                      tstep=taxis[0]
129                  except Exception,e:
130                      tstep='Error: [%s] '%str(e)
131                ?>
132                <table>
133                  <tr><td>
134                    <form action="" name="navForm" id="navForm"
135                          onchange="control.updateVisApp()">
136                      <table><tr>
137                        <td>Northerly Latitude:</td>
138                        <td colspan="2" align="center">
139                          <input size="7" value="${c.bbox[0]}" name="bboxN"
140                                 onchange="control.updateVisApp()"/>
141                        </td></tr>
142                        <tr><td>Longitudinal Extent:</td>
143                        <td align="center">
144                          <input size="8" value="${c.bbox[1]}" name="bboxW"
145                                 onchange="control.updateVisApp()"/>
146                        </td>
147                        <td align="center">
148                          <input size="8" value="${c.bbox[2]}" name="bboxE"
149                                 onchange="control.updateVisApp()"/>
150                        </td></tr>
151                        <tr><td> Southerly Latitude:</td>
152                        <td colspan="2" align="center">
153                          <input size="7" value="${c.bbox[3]}" name="bboxS" onchange="control.updateVisApp()"/>
154                        </td></tr>
155                        <tr><td colspan="3">(Units: degrees, north and east positive)</td></tr>
156                      </table>
157                    </form>
158                    </td>
159                    <td>
160                      <!--! The domain dialogue is populated by control.updateVisApp() -->
161                      <?python
162                        domainKeys = sets.Set()
163                        granule = c.selections[c.viewedDataset]
164                        for featureId in granule.getFeatureList():
165                            feature = granule.getFeature(featureId)
166                            domainKeys.union_update(feature.getDomain().keys())
167                            domainKeys.difference_update(['latitude', 'longitude'])
168                      ?>
169                      <form action="" name="domainForm" id="domainForm"
170                            onchange="control.updateVisApp()">
171                        <ul>
172                          <li py:for="k in domainKeys">
173                            ${k}: <select name="${k}"></select>
174                          </li>
175                        </ul>
176                      </form>
177                    </td>
178                  </tr>
179                </table>
180              </div>
181            </div>
182        </div>
183       
184    </div>
185    <!-- usertalk -->
186    <div py:if="not c.fullpage" py:replace="inpage()"/>
187   
188    <head py:if="c.fullpage">
189      <replace py:replace="pagehead()" />
190
191      <link type="text/css" rel="stylesheet" href="/layout/tabber.css"/>
192      <script src="/js/OpenLayers.js"/>
193      <script src="/js/openlayers-x.js"/>
194      <script src="/js/VisMapBox.js"/>
195      <!--! granuleMetadata sets tabberOptions so include it first -->
196      <replace py:replace="granuleMetadata(c.selections)"/>
197      <script src="/js/tabber.js"/>
198
199    </head>
200
201    <body py:if="c.fullpage">
202        <div id="entirepage">
203            <div py:replace="header()" />
204            <div py:replace="PageTabs('Visualise')" />
205            <div py:replace="searchOneLine()" />
206            <div id="contents">
207                <div py:if="c.wmsAvailable" class="map" id="visMap" />
208                <p> The visualisation feature is not fully implemented. </p>
209                <div py:if="c.nothing2see">
210                    <p> There are no selected datasets </p>
211                </div>
212                <div py:if="not c.nothing2see">
213                    <div id="graphics"/>
214                   
215                    <div id="$c.inpageid">
216                        <div py:replace="inpage()"/>
217                    </div>
218                </div>
219            </div>
220            <div py:replace="footer()" />
221        </div>
222        <!-- entire page -->
223    </body>
224</html>
Note: See TracBrowser for help on using the repository browser.