Changeset 2528 for TI07-MOLES


Ignore:
Timestamp:
30/05/07 16:44:15 (11 years ago)
Author:
lawrence
Message:

Improvements associated with ticket:733

Location:
TI07-MOLES/trunk/PythonCode/wsgi
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/PythonCode/wsgi/DiscoveryGUI.py

    r2522 r2528  
    138138        else: 
    139139            self.standardInterface() 
     140             
     141    def message(self,message): 
     142        ''' Layout a message to the user ''' 
     143        self.html='<div class="message"><p>%s</p></div>'%message 
    140144         
    141145     
     
    145149        by the DiscoveryTemplate GUI, and are: All, Authors, Parameters ''' 
    146150         
     151        self.oneLineSearch() 
    147152        start,howmany=int(start),int(howmany)  # url arguments need conversion ... 
    148153         
     
    159164        state=self.__setState(id,searchString,hits,start,howmany) 
    160165        if hits==0:  
    161             self.html+='<p> No records found </p>' 
     166            self.html+=self.message('No records found') 
    162167        else: 
    163168            try: 
     
    173178                        errors.append((result[0],str(e))) 
    174179                if results==[]: 
    175                     self.html+='<p>No results for "%s"!</p>'%searchString 
     180                    self.html+=self.message('No results for "%s"!</p>'%searchString) 
    176181                elif difs==[]: 
    177                     self.html+='<p>No usable results for "%s"!'%searchString  
     182                    self.html+=self.message('No usable results for "%s"!'%searchString)  
    178183                else: 
    179184                    if errors<>[]: 
     
    189194                        self.html+=' (unfortunately %s hits matched unformattable documents from %s, an internal error has been logged):</p>'%(len(errors),dp) 
    190195                        mailError('b.n.lawrence@rl.ac.uk','DIF errors',str(errors),server=self.mailServer) 
    191                     self.html+=renderDiscoverySet(difs,state,config=self.config, 
    192                                summary=1,spatial=1,temporal=1,services=1) 
     196                    self.html+=renderDiscoverySet(difs,state,self.config) 
    193197            except ValueError,e: 
    194198                if debug:  
     
    197201                    self.html='<p> Error retrieving documents for %s hits is [%s]</p>'%(hits,e) 
    198202                                
    199         self.standardInterface() 
    200         return 
     203        #self.standardInterface() 
     204        return 
     205                 
    201206 
    202207    def standardInterface(self): 
     
    242247        return 
    243248         
    244          
     249    def oneLineSearch(self): 
     250        try: 
     251            discoveryURL=self.config.get('SEARCH','discoveryURL') 
     252        except: 
     253            self.message='Error, invalid configuration for search interface' 
     254            self.html='' 
     255            return 
     256        self.html+=DiscoveryTemplate.searchTextOneLine%locals() 
     257         
     258         
  • TI07-MOLES/trunk/PythonCode/wsgi/DiscoveryTemplate.py

    r1934 r2528  
    151151</div>''' 
    152152 
     153searchTextOneLine=''' 
     154    <div class="searchOneLine"><form action="%(discoveryURL)s"> 
     155        New Search:&nbsp; 
     156        <input type="text" size="60" name="searchString"><input type="hidden" value="0" name="advanced"> 
     157        (Target:&nbsp;<select name="textTarget"> 
     158            <option value="Authors">Authors</option> 
     159            <option value="All" selected="selected">All</option> 
     160            <option value="Params">Parameters</option> </select>) </form> 
     161    </div>''' 
  • TI07-MOLES/trunk/PythonCode/wsgi/layout/ndg.css

    r2522 r2528  
    5151 
    5252 
    53 tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF; BORDER-BOTTOM: thin solid black;} 
    54 tr.rbgGrey  {BACKGROUND-COLOR: #F0F0F0; BORDER-BOTTOM: thin solid black;} 
    55 tr.rbgBeige {BACKGROUND-COLOR: #FDFFCC; BORDER-BOTTOM: thin solid black;} 
    56 tr.separated{border-bottom:thin solid black;} 
    5753 
    58 #Header {color: black; background-color: white; text-align: center; margin-bottom: 10px; padding-top: 3px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px; clear: both; border-bottom: 2px solid red; font-size: medium; font-weight:bold;} 
    5954 
    60 #ListOfResults {color: black;} 
     55#Header {color: black; background-color: white; text-align: center; margin-bottom: 10px; padding-top: 3px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px; clear: both; border-bottom: 2px solid wheat; font-size: medium; font-weight:bold;} 
     56 
     57 
    6158 
    6259a img {border: none;} 
     
    6562 
    6663#simpleSearch {text-align: center; margin-top: 10px; margin-bottom: 10 px;} 
     64div.AdvancedSearch{margin-top: 10px; margin-bottom: 10 px;} 
    6765 
    68 div.AdvancedSearch{margin-top: 10px; margin-bottom: 10 px;} 
     66/* Result Set Controls */ 
     67 
     68#ListOfResults {color: black;} 
     69 
    6970div.stridePosition{margin-top: 2px; margin-bottom: 2px; background-color: wheat;} 
    70 div.error{margin-top:2px; margin-bottom: 2px; background-color:tomato;  
    71         padding-left:10px; padding-right:10px;} 
     71div.message {margin-top: 2px; margin-bottom: 2px; background-color: wheat;} 
     72div.error{margin-top:2px; margin-bottom: 2px; background-color:tomato; padding-left:10px; padding-right:10px;} 
     73div.searchOneLine{margin-top: 2px; margin-bottom: 2px; background-color: wheat; text-align:right;} 
     74tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF;} 
     75/* *tr.rbgGrey  {BACKGROUND-COLOR: #F0F0F0;} */ 
     76tr.rbgGrey {BACKGROUND-COLOR: #EEEEE0; } 
     77tr.rbgBeige {BACKGROUND-COLOR: #FDFFCC; } 
     78/* end of result set controls */ 
    7279 
    7380div.searchMethod {margin-top: 7px; margin-bottom: 8px;} 
     
    8390    padding-top:1px; padding-left: 4px; padding-right: 4px; text-decoration:none; color:black;} 
    8491 
    85 #Footer  { color: #999999; background-color: #f4f4f4; text-align: center;  margin-bottom: 25px; padding-top: 3px; padding-right: 10px; padding-left: 10px; height: 49px; clear: both; border-top: 2px solid red; margin-top:10px;} 
     92#Footer  { color: #999999; background-color: #f4f4f4; text-align: center;  margin-bottom: 25px; padding-top: 3px; padding-right: 10px; padding-left: 10px; height: 49px; clear: both; border-top: 2px solid wheat; margin-top:10px;} 
    8693 
    8794 
  • TI07-MOLES/trunk/PythonCode/wsgi/ndgDiscovery.config

    r2522 r2528  
    7474badc.nerc.ac.uk: glue.badc.rl.ac.uk 
    7575npm.ac.uk: wwwdev.npm.ac.uk/rsdas/projects/ndg 
    76 grid.bodc.nerc.ac.uk: glue.badc.rl.ac.uk 
     76#grid.bodc.nerc.ac.uk: glue.badc.rl.ac.uk 
     77grid.bodc.nerc.ac.uk: localhost:8001 
    7778ndg.noc.soton.ac.uk: ndg.noc.soton.ac.uk:8001 
    7879icon: %(layout)s/B.gif 
  • TI07-MOLES/trunk/PythonCode/wsgi/ndgLog.py

    r2490 r2528  
    5050    '''Default error handling WSGI application.''' 
    5151    start_response(HTTPMSG, [('Content-type', 'text/plain')], 
    52         exc_info=sys.exc_info()) 
     52         exc_info=sys.exc_info()) 
     53#        sys.exc_info()) 
    5354    return [ERRORMSG]     
    5455 
  • TI07-MOLES/trunk/PythonCode/wsgi/renderDiscoverySet.py

    r2487 r2528  
    4949     
    5050         
    51 def renderDiscoverySet(difSet,state,config,summary=0,services=0,spatial=0,temporal=0, 
    52     linkto='NDG_B_SERVICE',selector=None): 
     51def renderDiscoverySet(difSet,state,config, linkto='NDG_B_SERVICE',selector=None): 
    5352    '''Takes a set of xml DIFS from a discovery search (difSet) and renders a  
    54     list of responses as a table, with layout depending on a set of keywords: 
    55             summary (boolean) - show the abstract, 
    56             services (boolean) - show the service list, 
    57             spatial (boolean) - show the bounding box, 
    58             temporal (boolean) - show the date range, 
     53    list of responses as a table. The argument is  
    5954            linkto (string) - clicking on the select widget should add the url for 
    6055                              this service to the selected list 
     
    6762    # List of methods which deal with the actual row content ... 
    6863    #    
    69      
    70     def row(rowList,bgcolor='rbgWhite'): 
    71         h='<tr class="%s">'%bgcolor 
    72         for item in rowList: 
    73             if type(item)==type((1,2)): 
    74                 h+='<td colspan="%s">%s</td>'%(item[1],item[0]) 
    75             else:h+='<td>%s</td>'%item 
    76         h+='</tr>' 
    77         return h#span(h,bgcolor) 
    78  
     64    def doubleheader(args): 
     65        return '''<table><tbody><tr><td colspan="2" align="center">%s</td></tr> 
     66                  <tr><td align="center">%s</td><td align="center">%s</td></tr></tbody></table>'''%args 
     67    def row(rowlist,rclass='rbgWhite'): 
     68        print rowlist 
     69        r= '''<tr class="%s"><td width="70%%">%s</td><td width="12%%" align="center">%s</td> 
     70            '''%(rclass,rowlist[0],rowlist[1]) 
     71        ll=len(rowlist) 
     72        print 'BBB[',rowlist[2:],']' 
     73         
     74        if ll==3: 
     75            r+='<td align="center" colspan="2" width="12%%">%s</td></tr>'%rowlist[2] 
     76        elif ll==4: 
     77            r+='<td align="center">%s</td><td align="center">%s</td></tr>'%tuple(rowlist[2:]) 
     78        else: 
     79            raise 'Coding error in renderDiscovery' 
     80        print 'ok' 
     81        return r 
     82         
    7983    def spatialBox(elem): 
    8084        return elem.bbox.toHTMLbox() 
     
    107111    # ################################## 
    108112     
    109     # depending on keyword options, provide column headings 
    110     # 
     113    # previous versions of this code had options, but let's simplify this a lot ... 
    111114     
    112     columns=['Dataset',]    
    113     if spatial: columns.append('Location') 
    114     if temporal:  
    115         #two columns for temporal but put a column header across both columns 
    116         header='''<table><tbody><tr><td colspan="2" align="center">Time&nbsp;Coverage</td></tr><tr> 
    117         <td align="center">Start</td><td align="center"> End</td></tr></tbody></table>''' 
    118         columns.append((header,2)) 
    119     html='<table><tbody>'+row(columns,bgcolor="rbgBeige") 
     115    spatial=doubleheader(('Spatial&nbsp;Coverage','(-ve:W,S;','+ve:N,E)')) 
     116    temporal=doubleheader(('Temporal&nbsp;Coverage','Start','End')) 
     117    columns=['Dataset',spatial,temporal]  
     118    html='<table><tbody>'+row(columns,rclass="rbgBeige") 
    120119     
    121120    # ok, now let's cycle through the hits 
    122121    i=1 
    123122    for item in difSet: 
    124         #print item.entryID 
    125123        d=item # we used to do the diffing here ... but we don't anymore 
    126124        bgc={1:'rbgWhite',-1:'rbgGrey'}[i] 
    127125        i=-1*i 
    128         if debug: print 'Rendering ',d.entryID 
    129126        if d.tree is None: 
    130             html+='<tr class="%s"><td colspan="%s"> Unparseable record </td></tr>'%(bgc,len(columns)) 
     127            html+='<tr class="%s"><td colspan="4"> Unparseable record </td></tr>'%bgc 
    131128        else: 
    132129            ndg,slist=serviceList(d) 
    133130            rlist=['',] 
    134             if summary: 
    135                 if d.briefCitation <>'': 
    136                     rlist[0]='%s: %s'%(span('Citation','ndgem'),d.briefCitation) 
    137                 else: 
    138                     rlist[0]='%s: %s'%(span('Title','ndgem'),abbreviate(d.name,60)) 
    139                 rlist[0]+='<br/>%s: %s'%(span('Summary','ndgem'),abbreviate(d.abstract,200)) 
    140                 if d.binding is not None: rlist[0]+=' '+hyperlink('(more)',d.binding.url) 
     131            if d.briefCitation <>'': 
     132                rlist[0]='%s: %s'%(span('Citation','ndgem'),d.briefCitation) 
     133            else: 
     134                rlist[0]='%s: %s'%(span('Title','ndgem'),abbreviate(d.name,60)) 
     135            rlist[0]+='<br/>%s: %s'%(span('Summary','ndgem'),abbreviate(d.abstract,200)) 
     136            if d.binding is not None: rlist[0]+=' '+hyperlink('(more)',d.binding.url) 
    141137            rlist[0]+='<br/>%s: %s.'%(span('Repository','ndgem'),d.centre.url()) 
    142             if not summary and d.binding is not None: 
    143                 rlist[0]+=' '+hyperlink('(more)',d.binding.url) 
    144             if services:rlist[0]+=slist 
     138            rlist[0]+=slist 
    145139            if ndg and selector !=None:  
    146140                rlist[0]+=',&nbsp;'+selector.target(d.entryID,name=d.abbreviation) 
    147             if spatial: rlist.append(spatialBox(d)) 
    148             if temporal:  
    149                 rlist.append(htmlTime(d.timeCoverage[0])) 
    150                 rlist.append(htmlTime(d.timeCoverage[1])) 
    151             html+=row(rlist,bgcolor=bgc) 
    152         print 'Completed rendering ',d.entryID 
     141            rlist.append(spatialBox(d)) 
     142            rlist.append(htmlTime(d.timeCoverage[0])) 
     143            rlist.append(htmlTime(d.timeCoverage[1])) 
     144            html+=row(rlist,rclass=bgc) 
    153145 
    154146    html+='</tbody></table>' 
Note: See TracChangeset for help on using the changeset viewer.