Ignore:
Timestamp:
14/02/08 14:17:54 (12 years ago)
Author:
cbyrom
Message:

Implement 'Selections' tab - a shopping cart type function to
allow the storing of different DIF selections together. Functionality
implemented to allow users to select/unselect DIFs from the results
screen and also to remove them, and remove everything, from the
Selections tab. Also, if KML is available for the DIF, icons are
provided to allow the user to open the file - currently valid for
the GoogleEarth? option but not the ConTerra?. Lastly, checkboxes
are provided - together with a 'select all' one - to allow selection
of multiple DIFs when viewing the associated KML. NB, this latter
functionality is not yet implemented.

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/config/routing.py

    r3246 r3421  
    4444    map.connect('correct/:uri', controller='retrieve', action='correct') 
    4545    map.connect('retrieve/:uri', controller = 'retrieve') 
    46     map.connect('selection',controller='selection',action='index') 
     46#    map.connect('selection',controller='selection',action='index') 
     47    map.connect('selectedItems',controller='selectedItems',action='index') 
     48    map.connect('addSelectedItem/:entryid/:kmlurl/:title/:divid',controller='selectedItems',action='addSelectedItem') 
     49    map.connect('unSelectItem/:entryid/:kmlurl/:title/:divid',controller='selectedItems',action='unSelectItem') 
     50    map.connect('removeSelectedItem/:entryid',controller='selectedItems',action='removeSelectedItem') 
    4751    map.connect('expand/:uri',controller='selection',action='expand') 
    4852    map.connect('visualise', controller='visualise', action='index') 
     
    6165    map.connect('discovery',controller='discovery') 
    6266    map.connect('updatetab/:value',controller='tabs',action='update') 
    63     map.connect('addSelection/:uri/:name',controller='tabs',action='addSelection') 
     67#    map.connect('addSelection/:uri/:name',controller='tabs',action='addSelection') 
    6468    map.connect('clear/:value',controller='tabs',action='clear') 
    6569    map.connect('visualise/:dataset/:view',controller='visualise',action='tabChange') 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/discovery.py

    r3249 r3421  
    1515debug=0 
    1616 
    17  
    1817class DiscoveryController(BaseController): 
    1918    ''' Provides the pylons controller for NDG discovery ''' 
     
    2524        self.inputs=dict(parse_querystring(request.environ)) 
    2625        self.message='' 
     26                
    2727     
    2828    def index(self): 
     
    257257                c.source=searchConstraints['scope'] 
    258258            c.geoSearchType=(searchConstraints['geoSearchType'] or 'overlaps') 
    259                  
    260259        return render_response('advanced') 
    261260         
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r3069 r3421  
    2626        if logger: self.logger=logger 
    2727        self.inputs=dict(parse_querystring(request.environ)) 
     28 
     29 
    2830        # NB: we could have two types of query string argument: 
    2931        #   format= (raw,html) and 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/tabs.py

    r2854 r3421  
    1515        session.save() 
    1616        return render_response('cart',fragment=True)  
    17      
    18     def addSelection(self,uri,name): 
    19         if 'selection' not in session: 
    20             newtabs=1 
    21             session['selection']=[(uri,name),] 
    22         else: 
    23             newtabs=0 
    24             rb=Utilities.RingBuffer(10) 
    25             for i in session['selection']: rb.append(i) 
    26             if (uri,name) in rb: rb.remove((uri,name)) 
    27             rb.append((uri,name)) 
    28             session['selection']=rb.tolist() 
    29         session.save() 
    30         if newtabs: 
    31             c.UpdatePageTabs=1 
    32             c.current='Display' 
    33             c.pageTabs.append(('Selections',h.url_for(controller='selection',action='index'))) 
    34             c.pageTabs.append(('Visualise',h.url_for(controller='visualise', action='index'))) 
    35             c.pageTabs.append(('Download','Blah')) 
    36         return render_response('ndgPage',fragment=True) 
    3717             
    3818    def clear(self,value): 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/visualise.py

    r2881 r3421  
    2828            return 0 
    2929        
    30         # Need two fundamental variables: the granules which have been selected 
    31         # for *possible* visualisation, and the (up to two) which have been 
     30        # Need two fundamental variables: the granules which has been selected 
     31        # for *possible* visualisation, and the granules (up to two) which have been 
    3232        # selected for *actual* visualisation: 
    3333        # session['selection'] holds the uris assocated with the first 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/base.py

    r2959 r3421  
    9292        if 'lastViewed' in session: c.pageTabs.append(('Display',session['lastViewed'])) 
    9393         
    94         if 'selection' in session: 
    95             c.pageTabs.append(('Selections',h.url_for(controller='selection',action='index'))) 
    96             c.pageTabs.append(('Visualise',h.url_for(controller='visualise', action='index'))) 
    97             c.pageTabs.append(('Download','Blah')) 
    98  
     94        # make selections tab available at all times - to simplify associated business logic 
     95        #if 'selection' in session: 
     96        c.pageTabs.append(('Selections',h.url_for(controller='selectedItems',action='index'))) 
     97#            c.pageTabs.append(('Visualise',h.url_for(controller='visualise', action='index'))) 
     98#            c.pageTabs.append(('Download','Blah')) 
     99         
    99100        return WSGIController.__call__(self, environ, start_response) 
    100101     
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/advanced.kid

    r3160 r3421  
    1818    <div id="entirepage"> 
    1919        <div py:replace="header1(0)"/> 
    20         <!--! The if on the call to the left panel needs to be here for subtle css reasons 
    21         <div py:if="'ndgSec' in session" py:replace="leftpanel()" id="Left"/>--> 
    2220        <div py:replace="PageTabs('Search')"/> 
    2321        <div class="outer"> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/meta.kid

    r3167 r3421  
    159159        if len(d.timeCoverage)==1: 
    160160            tc=d.timeCoverage[0] 
    161             #tc=[(i or '') for i in tc] 
    162161        elif len(d.timeCoverage)==0: 
    163162            tc=['','',''] 
     
    182181                <span py:replace="serviceIcons([d.binding])"/> 
    183182                <span py:replace="serviceIcons(d.services)"/> 
    184                 </td><td>${tc[0]}</td><td>${tc[1]}</td><td> 
    185                 <div py:replace="Spatial(d.bbox,0)"/> 
     183            </td> 
     184            <td>${tc[0]}</td> 
     185            <td>${tc[1]}</td> 
     186            <td> 
     187                <div py:replace="Spatial(d.bbox,0)"/> 
     188            </td> 
     189            <!-- check if the DIF has already been selected --> 
     190                        <?python  
     191                selected=False 
     192                select_td_id='select_td_id_%s'%d.entryID  
     193                if 'selection' in session: 
     194                        for item in session['selection']: 
     195                        if len(item) > 0 and item[0] == d.entryID: 
     196                                        selected=True 
     197            ?> 
     198                         
     199                <td id="$select_td_id" align="center"> 
     200                <span py:if="selected"> 
     201                        ${XML(h.link_to_remote("Unselect", 
     202                                        dict(update=select_td_id, 
     203                                                 url=h.url_for(controller="selectedItems", 
     204                                                                   action="unSelectItem", 
     205                                                                   entryid=d.entryID, 
     206                                                                   kmlurl=d.kmlURL, 
     207                                                                   title=d.name, 
     208                                                                   divid=select_td_id))))} 
     209                                                                    
     210                                </span> 
     211                                <span class="selectme" py:if="not selected"> 
     212                        ${XML(h.link_to_remote("Select", 
     213                                        dict(update=select_td_id, 
     214                                                 url=h.url_for(controller="selectedItems", 
     215                                                                   action="addSelectedItem", 
     216                                                                   entryid=d.entryID, 
     217                                                                   kmlurl=d.kmlURL, 
     218                                                                   title=d.name, 
     219                                                                   divid=select_td_id))))} 
     220                </span> 
    186221            </td> 
    187222        </tr> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/ndgPage.kid

    r3160 r3421  
    8383                    </span></li>  
    8484                 </span> 
    85                 <!--<li py:for="i in enumerate()" class="${status[i[0]]}"> 
    86                     <span class="pagetab">${i[1]}</span> 
    87                 </li>--> 
    88                 <!--    <li class="${status[i[0]]}"> 
    89                         <span class="pagetab"> ${i[1]}</span> 
    90                     </li> 
    91                     <li> $i </li> 
    92                 </span>--> 
    9385            </ul> 
    9486        </div> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/results.kid

    r3088 r3421  
    77    <div id="entirepage"> 
    88        <div py:replace="header()"/> 
    9         <!--<?python 
    10             tlist=['Search Page','Results','Selections','WMS','WCS'] 
    11             status=['hidden','current','hidden','hidden','hidden'] 
    12         ?> 
    13         <div py:replace="PageTabs(tlist,status)"/>--> 
    149        <div py:replace="PageTabs('Results')"/> 
    1510        <div py:replace="searchOneLine()"/> 
    16         <!--! The if on the call to the left panel needs to be here for subtle css reasons --> 
    17         <!-- <div py:if="'ndgSec' in session" py:replace="leftpanel()" id="Left"/>--> 
    1811        <?python 
    1912        id="contents" 
     
    5043                <table> 
    5144                    <thead><tr><th rowspan="2">Dataset description</th><th colspan="2">Temporal&nbsp;coverage</th> 
    52                         <th rowspan="2">Spatial coverage</th></tr> 
    53                     <tr><th> Start date </th><th> End date </th></tr></thead> 
     45                        <th rowspan="2">Spatial coverage</th> 
     46                        <th rowspan="2"/> 
     47                        </tr> 
     48                    <tr><th> Start date </th> 
     49                    <th> End date </th> 
     50                    </tr> 
     51                    </thead> 
    5452                    <tbody> 
    5553                        <span py:for="i,d in enumerate(c.difs)" py:replace="result(i,d)"/> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/short_results.kid

    r2976 r3421  
    1010    <div id="entirepage"> 
    1111        <div py:replace="header()"/> 
    12         <!--<?python 
    13             tlist=['Search Page','Results','Selections','WMS','WCS'] 
    14             status=['hidden','current','hidden','hidden','hidden'] 
    15         ?> 
    1612        <div py:replace="PageTabs(tlist,status)"/>--> 
    1713        <div py:replace="PageTabs('Results')"/> 
Note: See TracChangeset for help on using the changeset viewer.