source: TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/meta.kid @ 3538

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

Add new 'View' tab to NDG web page. This is opened when a user clicks on a
WMC record in the 'Display' panel. The tab displays the default OpenLayers?
maps and allows the user to select a layer from the WMC doc to display.

NB, the functionality was based on code borrowed and adapted from the DCIP codebase.

Line 
1<!-- This is a bunch of named functions for using when displaying metadata -->
2<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#">
3
4<!-- Parameter list class, used in StubB and DIF -->
5   
6    <div py:def="ParameterList(params)" class="ParameterList">
7        <table py:if="params!={}" cellspacing="0" cellpadding="3" border="0" width="100%"><tbody>
8            <tr><td class="linehead"><span class="heading0"> Parameters</span></td></tr>
9            <span py:for="item in params">
10                <tr><td class="rowhead">$item</td></tr>
11                <?python
12                #should make sure keyword with spaces are not split inappropriately
13                keywords='; '.join([k.replace(' ','&nbsp;') for k in params[item]])
14                ?>
15                <tr py:if="params[item]!=[]"><td>${XML(keywords)}</td></tr>
16            </span>
17        </tbody></table>
18    </div>
19   
20    <div py:def="Distribution(dlist)">
21        <table py:if="dlist!=[]" cellspacing="0" cellpadding="3" width=" 100%" border="0">
22        <tr><td class="linehead" colspan="4"><span class="headingO">Distribution</span></td></tr>
23        <tr><th> Format </th> <th> Size </th> <th> Media </th> <th> Fees </th> </tr>
24        <tr py:for="d in dlist">
25            <td>${d['Distribution_Format']}</td>
26            <td>${d['Distribution_Size']}</td>
27            <td>${d['Distribution_Media']}</td>
28            <td>${d['Fees']}</td>
29        </tr>
30        </table>
31    </div>
32   
33    <div py:def="Services()" id="ServiceList">
34        <table cellspacing="0" cellpadding="3" width=" 100%" border="0"><tbody>
35            <tr><td class="linehead" colspan="3"><span class="headingO">Links and Services</span></td></tr>
36            <tr py:for="s in c.doc.services">
37                <?python
38                t=s.contentType
39                isWMC = False
40                if 'WEB MAP CONTEXT' in t:
41                        isWMC = True
42                if t=='':
43                        t='R'
44                if 'GET DATA' in t:
45                        t='GET DATA'
46                try:
47                    icon={'GET DATA':g.icons_A,
48                        'VIEW EXTENDED METADATA':g.icons_B,
49                        'DISCOVERY':g.icons_D,
50                        'R':g.icons_R}[t]
51                except:
52                    icon=g.icons_R
53                ?>
54                <td width="20%" py:if="isWMC">
55                        <span py:replace="linkimage(g.server + '/viewItems?ENDPOINT=' + s.description,icon,s.description)" py:strip="True"/>
56                </td>
57                <td width="20%" py:if="not isWMC">
58                        <span py:replace="linkimage(s.url,icon,s.description)" py:strip="True"/>
59                </td>
60                <td>${s.description}</td>
61            </tr>
62            <tr py:if="c.doc.ndgObject is not None">
63            <td width="20%"><span py:replace="linkimage(c.doc.ndgObject.xmlURL,g.icons_xml,'[XML]')"/></td>
64            <td>Downloadable XML version of this record
65            <span py:if="c.doc.ndgObject.gettable==1">
66            (Original <span py:replace="linkimage(c.doc.ndgObject.xmlURL+'&amp;outputSchema=original',g.icons_xml,'[XML]')"/>)
67            </span></td></tr>
68            <tr py:if="c.doc.ndgObject is not None">
69            <td width="20%"><span py:replace="linkimage(c.doc.ndgObject.printableURL,g.icons_prn,'[HTML]')"/></td>
70            <td>Viewable XML version of this record
71             <span py:if="c.doc.ndgObject.gettable==1">
72            (Original <span py:replace="linkimage(c.doc.ndgObject.printableURL+'&amp;outputSchema=original',g.icons_prn,'[HTML]')"/>)
73            </span></td></tr>
74            <tr py:if="c.doc.ndgObject.gettable==1"><td></td><td>(Original records are the raw material harvested from data providers)</td></tr>
75        </tbody></table>
76    </div> <!-- ServiceList -->
77   
78   
79    <div py:def="Spatial(bbox,h)">
80        <!-- Currently this only shows the first bounding box -->
81        <table py:if="bbox.nboxes==1"><tbody>
82            <tr py:if="h==1"><td colspan="2" class="cellhead">Spatial coverage</td></tr>
83            <tr><td colspan="2" align="center">${bbox.boxes[0][0]}</td></tr>
84            <tr><td align="center">${bbox.boxes[0][1]}</td><td align="center">${bbox.boxes[0][2]}</td></tr>
85            <tr><td colspan="2" align="center">${bbox.boxes[0][3]}</td></tr>
86        </tbody></table>
87        <span py:if="bbox.nboxes!=1"><p py:if="h==1" class="cellhead">Spatial Coverage</p>
88            <p py:if="bbox.nboxes>1"> $bbox.nboxes different areas.</p>
89            <p py:if="bbox.nboxes==0"> No spatial coverage information available.</p>
90        </span>
91    </div>
92   
93    <div py:def="Coverage(bbox,timcov)">
94        <table cellspacing="0" cellpadding="3" border="0" width="100%"><tbody>
95            <tr><td class="linehead" colspan="2"><span class="heading0"> Data Coverage</span> </td></tr>
96            <tr><td><div py:replace="Spatial(bbox,1)"/></td>
97                <td><table><tr><td colspan="2" class="cellhead"> Temporal coverage</td></tr>
98                           <span py:if="len(timcov)==1">
99                                <tr><td> Start Date: ${timcov[0][0]}</td><td>End Date: ${timcov[0][1]}</td></tr>
100                                <tr><td colspan="2"> Status:${timcov[0][2]}</td></tr>
101                           </span>
102                           <tr py:if="len(timcov)==0"><td colspan="2">No temporal information available.</td></tr>
103                           <tr py:if="len(timcov)>1"><td colspan="2">${len(timcov)} different periods of data available.</td></tr>
104                    </table>
105                </td></tr>
106        </tbody></table>
107    </div>
108   
109    <div py:def="ShortCoverage(e)">
110        <span py:if="len(e.timeCoverage)==1">From ${e.timeCoverage[0][0]} to ${e.timeCoverage[0][1]}
111        </span><span py:if="e.bbox.nboxes==1">
112         for latitude ${e.bbox.boxes[0][3]} to ${e.bbox.boxes[0][0]}N and longitude ${e.bbox.boxes[0][1]} to ${e.bbox.boxes[0][2]}E
113        </span>
114    </div>
115   
116    <div py:def="People(ptype,listOf)">
117        <table py:if="listOf!=[]" cellspacing="0" cellpadding="3" border="0" width="100%"><tbody>
118            <tr><td class="linehead" colspan="2"><span class="heading0"> $ptype</span></td></tr>
119            <tr py:for="p in listOf"><td>${XML(p.core['role'])}</td><td>${XML(p.toHTML())}</td></tr>
120        </tbody></table>
121    </div>
122   
123    <div py:def="Centre(cen)">
124        <table cellspacing="0" cellpadding="3" border="0" width="100%"><tbody>
125            <tr><td class="linehead"><span class="heading0"> Data Centre</span></td></tr>
126            <tr><td>${XML(cen.toHTML())}</td></tr>
127        </tbody></table>
128    </div>
129   
130    <div py:def="Keywords(Name,listOf)">
131         <table cellspacing="0" cellpadding="3" border="0" width="100%"><tbody>
132            <tr><td class="linehead"><span class="heading0"> $Name</span></td></tr>
133            <tr py:for="item in listOf"><td>$item</td></tr>
134        </tbody></table>
135    </div>
136   
137    <!--- Create that little list of service icons on the result page -->
138    <span py:def="serviceIcons(sL)">
139        <span py:for="s in sL">
140            <?python
141            t=s.contentType
142            if t=='': t='R'
143            if 'GET DATA' in t: t='GET DATA'
144            try:
145                icon={'GET DATA':g.icons_A,
146                    'VIEW EXTENDED METADATA':g.icons_B,
147                    'DISCOVERY':g.icons_D,
148                    'R':g.icons_R}[t]
149            except:
150                icon=g.icons_R
151            ?>
152            <span py:replace="linkimage(s.url,icon,s.description)"/>
153        </span>
154    </span>
155   
156    <!--- Easy shortening of text for result pages, should use ajax to expand -->
157    <span py:def="abbreviate(text,L,url)">
158        <?python
159        if len(text)<L:
160            more=''
161        else:
162            if url:
163                more='&nbsp;<a href="%s">(more)</a>'%url
164            else: more='...'
165        ?>
166        ${text[0:L]}${XML(more)}
167    </span>
168   
169    <span py:def="result(i,d)">
170        <?python
171        if len(d.timeCoverage)==1:
172            tc=d.timeCoverage[0]
173        elif len(d.timeCoverage)==0:
174            tc=['','','']
175        else:
176            tc=d.timeCoverage[0]
177            for m in d.timeCoverage:
178                if m[0]<tc[0]:tc[0]=m[0]
179                if m[1]>tc[1]:tc[1]=m[1]
180        ?>   
181        <tr class="${i%2 and 'rowhi' or 'rowlo'}">
182            <td>
183                <span py:if="d.briefCitation!=''">
184                    <span class="ndgem">Citation:</span> ${d.briefCitation}</span>
185                <span class="ndgem"> Title:</span>
186                    <span py:replace="abbreviate(d.name,70,0)"/>
187                <br/>
188                <span class="ndgem"> Abstract:</span>
189                    <span py:replace="abbreviate(d.abstract,200,d.binding.url)"/>
190                <br/>
191                <span class="ndgem"> Sourced from:</span>&nbsp;${XML(d.centre.url())}
192                &nbsp;<span class="ndgem">Links:</span>
193                <span py:replace="serviceIcons([d.binding])"/>
194                <span py:replace="serviceIcons(d.services)"/>
195            </td>
196            <td>${tc[0]}</td>
197            <td>${tc[1]}</td>
198            <td>
199                <div py:replace="Spatial(d.bbox,0)"/>
200            </td>
201            <!-- check if the DIF has already been selected -->
202                        <?python
203                selected=False
204                select_td_id='select_td_id_%s'%d.entryID
205                if 'selection' in session:
206                        for item in session['selection']:
207                        if item.entryID == d.entryID:
208                                        selected=True
209            ?>
210                       
211                <td id="$select_td_id" align="center">
212                <span py:if="selected">
213                        ${XML(h.link_to_remote("Unselect",
214                                        dict(update=select_td_id,
215                                                 url=h.url_for(controller="selectedItems",
216                                                                   action="unSelectItem",
217                                                                   entryid=d.entryID,
218                                                                   divid=select_td_id))))}
219                                                                   
220                                </span>
221                                <span class="selectme" py:if="not selected">
222                        ${XML(h.link_to_remote("Select",
223                                        dict(update=select_td_id,
224                                                 url=h.url_for(controller="selectedItems",
225                                                                   action="addSelectedItem",
226                                                                   entryid=d.entryID,
227                                                                   kmlurl=d.kmlURL,
228                                                                   wmcurl=d.wmcURL,
229                                                                   title=d.name,
230                                                                   divid=select_td_id))))}
231                </span>
232            </td>
233        </tr>
234    </span>
235   
236</html>
Note: See TracBrowser for help on using the repository browser.