Ignore:
Timestamp:
19/02/08 11:58:53 (12 years ago)
Author:
cbyrom
Message:

Adjust templates to use new, selectedItem object.
Extend scripts to cope with multiple KML and WMC URLs - these are
presented in the selections table on separate rows allowing their
individual selection when creating aggregated KML/WMC docs. NB,
selected docs which don't have relevant KML/WMC info are ignored.

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

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/discovery.py

    r3430 r3457  
    211211                session['results']=h.current_url() 
    212212                session.save() 
     213                 
     214                # set up the displayed tabs 
    213215                if len(c.pageTabs)==1:  
    214216                    c.pageTabs.append(('Results',session['results'])) 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r3421 r3457  
    3737 
    3838        # Add selected granules to context 
    39         c.selectedGranules = [g_uri for g_uri, g_name in session.get('selection', [])] 
     39        #c.selectedGranules = [g_uri for g_uri, g_name in session.get('selection', [])] 
    4040                               
    4141 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/selectedItems.py

    r3431 r3457  
    22from paste.request import parse_querystring 
    33from ows_server.models import Utilities 
     4from ows_server.models import stubB 
     5import copy 
    46import urllib 
    57 
     
    4648        # now check for checkboxes as inputs; NB, these have the 
    4749        # same names as the DIF entryIDs - i.e. the first element 
    48         # in the selection arrays 
     50        # in the selection arrays - but with an extension appended to 
     51        # allow specific WMC/KMLs to be retrieved from list 
    4952        selectedItems = [] 
    50         for selection in session['selection']: 
    51             if selection[0] in self.inputs: 
    52                 selectedItems.append(selection) 
     53        for input in self.inputs: 
     54            if input.find('____') > -1: 
     55                entryID, i = input.split('____') 
     56                i = int(i) 
     57                for selection in session['selection']: 
     58                    if selection.entryID in entryID: 
     59                        newSelection = copy.deepcopy(selection) 
     60                        url = None 
     61                        if len(selection.kmlList) > i: 
     62                            url = selection.kmlList[i] 
     63                        newSelection.kmlURL = url 
     64                        url = None 
     65                        if len(selection.wmcList) > i: 
     66                            url = selection.wmcList[i] 
     67                        newSelection.wmcURL = url 
     68                        selectedItems.append(newSelection) 
    5369         
    5470        if len(selectedItems) > 0: 
    5571            session['selectedItems'] = selectedItems 
    56             session.save() 
    57          
     72 
     73        session.save() 
    5874         
    5975     
    60     def addSelectedItem(self,entryid,kmlurl,title,divid): 
    61         # add a selected item to the session 
    62         # - if this is the first item, then display the selections tab 
    63         selections = [(entryid,kmlurl,title),] 
     76    # add a selected item to the session 
     77    # - if this is the first item, then display the selections tab 
     78    def addSelectedItem(self,entryid,kmlurl,wmcurl,title,divid): 
     79         
     80        item = stubB.SelectedItem(entryid, title, kmlurl, wmcurl) 
     81         
     82        selections = [item,] 
    6483        if 'selection' not in session: 
    6584            newtabs=1 
     
    6887            newtabs=0 
    6988            for selection in session['selection']: 
    70                 if len(selection) > 0 and selection[0] != entryid: 
     89                if selection.entryID != entryid: 
    7190                    selections.append(selection) 
    7291                     
     
    83102                                         action='index'))) 
    84103 
     104        # Return a link to allow the item to be unselected 
     105        # - effectively this provides a remove function from the Results page 
    85106        return h.link_to_remote('Unselect', 
    86107                              dict(update=divid, 
     
    88109                                               action="unSelectItem", 
    89110                                               entryid=entryid, 
    90                                                kmlurl=urllib.quote(kmlurl,''), 
    91                                                title=title, 
    92111                                               divid=divid))) 
    93112 
    94113     
     114    # remove selected item from session data 
    95115    def removeSelectedItem(self,entryid): 
    96         # remove selected item from session data 
    97116        self.deleteSelectedItem(entryid) 
    98117        # rerender selections to update with item removed 
    99118        return render_response('selectedItems') 
    100119     
     120    # Remove selected item from session data 
     121    # - NB, do this by rebuilding the session data 
     122    # without the input data included 
    101123    def deleteSelectedItem(self,entryid): 
    102         # remove selected item from session data 
    103         # - NB, do this by rebuilding the session data 
    104         # without the input data included 
    105         selections = [[]] 
     124        selections = [] 
     125        deletedItem = None 
    106126        for selection in session['selection']:  
    107             if len(selection) > 0 and selection[0] != entryid: 
     127            if selection.entryID != entryid: 
    108128                selections.append(selection) 
     129            else: 
     130                deletedItem = selection 
     131                 
    109132                 
    110133        # if the new list is empty, remove the session variable and hide the selection page 
    111         if len(selections) == 1 and len(selections[0]) == 0: 
     134        if len(selections) == 0: 
    112135            del session['selection'] 
    113136            c.UpdatePageTabs=1 
     
    116139        session.save() 
    117140         
     141        return deletedItem 
     142         
    118143 
    119     def unSelectItem(self,entryid,kmlurl,title,divid): 
    120         # remove selected item from session data and adjust the 'select' link 
    121         # to be 'unselect' 
    122         self.deleteSelectedItem(entryid) 
     144    # remove selected item from session data and adjust the 'select' link 
     145    # to be 'unselect' 
     146    def unSelectItem(self,entryid,divid): 
     147        deletedItem = self.deleteSelectedItem(entryid) 
    123148         
    124149        return h.link_to_remote("Select", 
     
    126151                                    url=h.url_for(controller="selectedItems", 
    127152                                               action="addSelectedItem", 
    128                                                entryid=entryid, 
    129                                                kmlurl=urllib.quote(kmlurl,''), 
    130                                                title=title, 
     153                                               entryid=deletedItem.entryID, 
     154                                               kmlurl=urllib.quote(str(deletedItem.kmlURL),''), 
     155                                               wmcurl=urllib.quote(str(deletedItem.wmcURL),''), 
     156                                               title=deletedItem.title, 
    131157                                               divid=divid))) 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/kml_aggregate.kid

    r3432 r3457  
    77        <description>The NetworkLink KML resources are those selected by the user when creating the document in the NDG portal (include URL?)</description> 
    88    <for py:for="i in session['selectedItems']" py:strip="True"> 
    9             <NetworkLink py:if="len(i) > 0 and i[0] != i[1]"> 
    10                 <name>${i[2]}</name> 
    11                 <visibility>0</visibility> 
    12                 <open>0</open> 
    13                 <description>${i[2]} - aggregated by the NDG Portal</description> 
    14                 <refreshVisibility>0</refreshVisibility> 
    15                 <flyToView>0</flyToView> 
    16                 <Link> 
    17                         <href> 
    18                                 ${i[1]} 
    19                         </href> 
    20                     </Link> 
    21         </NetworkLink> 
     9            <span py:if="i.kmlURL"> 
     10                    <NetworkLink > 
     11                        <name>${i.title}</name> 
     12                        <visibility>0</visibility> 
     13                        <open>0</open> 
     14                        <description>${i.title} - aggregated by the NDG Portal</description> 
     15                        <refreshVisibility>0</refreshVisibility> 
     16                        <flyToView>0</flyToView> 
     17                        <Link> 
     18                                <href> 
     19                                        ${i.kmlURL} 
     20                                </href> 
     21                        </Link> 
     22                </NetworkLink> 
     23        </span> 
    2224    </for> 
    2325  </Folder> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/meta.kid

    r3421 r3457  
    193193                if 'selection' in session: 
    194194                        for item in session['selection']: 
    195                         if len(item) > 0 and item[0] == d.entryID: 
     195                        if item.entryID == d.entryID: 
    196196                                        selected=True 
    197197            ?> 
     
    204204                                                                   action="unSelectItem", 
    205205                                                                   entryid=d.entryID, 
    206                                                                    kmlurl=d.kmlURL, 
    207                                                                    title=d.name, 
    208206                                                                   divid=select_td_id))))} 
    209207                                                                    
     
    216214                                                                   entryid=d.entryID, 
    217215                                                                   kmlurl=d.kmlURL, 
     216                                                                   wmcurl=d.wmcURL, 
    218217                                                                   title=d.name, 
    219218                                                                   divid=select_td_id))))} 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/selectedItems.kid

    r3431 r3457  
    1414                <p> Please select which datasets you wish to view and which viewer you wish to use.</p> 
    1515                <form name="selectionsForm" id="selectionsForm" onSubmit='return true;'> 
    16                 <table class="selectedDatasets" id="selectedDatasets"> 
     16                <table class="selectedDatasets" id="selectedDatasets" width="100%"> 
    1717                                <thead> 
    1818                                <tr> 
    19                                         <th rowspan="2">Dataset Title</th> 
     19                                        <th rowspan="2" width="60%">Dataset Title</th> 
    2020                                        <th rowspan="2">Select 
    2121                                                <input type="checkbox" name="chk_cbox" onclick="selectAll(this,'selectedDatasets');"/> 
     
    3232                    <?python x=0 ?> 
    3333                        <for py:for="i in session['selection']" class="dataset" py:strip="True"> 
    34                                 <span py:if="len(i) > 0"> 
     34                                <!-- need a row for each KML or WMC URL to allow individual selection 
     35                                        - choose the large array to loop over to create table correctly --> 
     36                                <?python 
     37                                        rowNo = 1 
     38                                        listToIterate = i.kmlList 
     39                                        if i.kmlList: 
     40                                                rowNo = len(i.kmlList) 
     41                                        if i.wmcList and len(i.wmcList) > rowNo: 
     42                                        rowNo = len(i.wmcList) 
     43                                        listToIterate = i.wmcList 
     44                                j=0 
     45                                # include dummy list incase there is no wmc or kml data 
     46                                if len(listToIterate) == 0: 
     47                                        listToIterate = ['1'] 
     48                                ?> 
     49                            <for py:for="l in listToIterate" py:string="True"> 
    3550                                        <tr class="${x%2 and 'rowhi' or 'rowlo'}"> 
    3651                                        <td> 
    37                                                         ${i[2]} 
     52                                                <span py:if="j == 0"> 
     53                                                                ${i.title} 
     54                                                </span> 
    3855                                        </td> 
    3956                                                <td align="center"> 
    40                                                         <input type="checkbox" name="${i[0]}" /> 
     57                                                        <!-- NB, append counter to checkbox to allow retrieval of exact 
     58                                                                KML/WMC doc selected - in selectedItems.getSelectedItems() --> 
     59                                                        <input type="checkbox" name="${str(i.entryID) + '____' + str(j)}" /> 
    4160                                                </td> 
    4261                                        <td align="center"> 
    43                                         <span py:if="i[1]!=i[0]"> 
    44                                                 <span py:replace="linkimage(i[1],g.icons_plot,'[Display]')"/> 
     62                                        <span py:if="i.kmlURL and len(i.kmlList) > j"> 
     63                                                        <span py:replace="linkimage(i.kmlList[j],g.icons_plot,'[Display]')"/> 
    4564                                                </span> 
    4665                                        </td> 
    4766                                        <td align="center"> 
    48                                                 <span py:if="i[1]!=i[0]"> 
    49                                                         <span py:replace="linkimage(i[1],g.icons_plot,'[Display]')"/> 
     67                                                <span py:if="i.wmcURL and len(i.wmcList) > j"> 
     68                                                        <span py:replace="linkimage(i.wmcList[j],g.icons_plot,'[Display]')"/> 
    5069                                                </span> 
    5170                                </td> 
    5271                                        <td align="center"> 
    53                                                                         <span class="removeme"> 
    54                                                         ${XML(h.link_to_remote("Remove", 
    55                                                                 dict(update="entirepage", 
    56                                                                 url=h.url_for(controller="selectedItems", 
    57                                                                         action="removeSelectedItem", 
    58                                                                         entryid=i[0]))))} 
     72                                                <span py:if="j == 0"> 
     73                                                                                <span class="removeme"> 
     74                                                                ${XML(h.link_to_remote("Remove", 
     75                                                                        dict(update="entirepage", 
     76                                                                url=h.url_for(controller="selectedItems", 
     77                                                                                action="removeSelectedItem", 
     78                                                                                entryid=i.entryID))))} 
     79                                                        </span> 
    5980                                                        </span> 
    6081                                </td> 
    6182                                                        </tr> 
    62                                         <?python x=x+1 ?> 
    63                                 </span> 
     83                                        <?python  
     84                                                j+=1  
     85                                        ?> 
     86                                </for> 
     87                                        <?python  
     88                                                x+=1 
     89                                        ?> 
    6490                                        </for> 
    6591                                        <tr> 
Note: See TracChangeset for help on using the changeset viewer.