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

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

Small change to add a WMS endpoint link to the visualise page.

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