Ignore:
Timestamp:
07/06/06 00:44:32 (13 years ago)
Author:
astephen
Message:

Stable-ish version with fully-ish working dxc client.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI03-DataExtractor/trunk/pydxc/DisplayManager.py

    r794 r1109  
    151151 
    152152                 
    153     def _displayOptionsTable(self, optionCategories, options, optionStrings, sessionID, sessionObj): 
    154         """ 
    155         Prints the options provided in the format (optionCategory, [option1, 
     153    def _displayOptionsTable(self, summaryDict, optionCategories, options, optionStrings, sessionID, sessionObj): 
     154        """ 
     155        Displays the options provided in the format (optionCategory, [option1, 
    156156        option2, .., optionN]). Each dataset has these. It also sends the  
    157157        sessionID as a hidden variable. 
    158158        """      
    159         #raise str(options)+"<P>"+str(optionStrings) 
    160 #        print '<TD WIDTH="90%" class="tablestyle" VALIGN="top">'  
    161  
    162159        # Get the category name to show on the  
    163160        itemMap={"datasetGroup":"Dataset Group", "dataset":"Dataset", 
    164161                 "variable":"Variable"}  
    165 #       print "<P><B>PLEASE SELECT: %s</B><P>" % itemMap[optionCategories[0].split("_")[0]] 
    166162         
    167163        if len(options)==0: 
     
    174170             
    175171        # Now loop through getting the appropriate list of values to show        
    176         for dsetNumber in range(1, self.numberOfDatasets+1): 
     172        """ 
     173        for dsetNumber in range(1, self.numberOfDatasets+1): 
    177174            selectedFlag=None 
    178175            tableWidth=100/(self.numberOfDatasets) 
     
    226223                        print '<BR><INPUT TYPE="radio" NAME="%s" VALUE="%s">%s</INPUT>' % (radioName, option, optionString)      
    227224                          
    228         print "</TD>" 
     225        print "</TD>" """ 
     226         
     227        itemTitle=itemMap[optionCategories[0].split("_")[0]] 
     228        print "<P><B>PLEASE SELECT: %s</B><P>" % itemTitle  
     229         
     230        if itemTitle=="Dataset Group": 
     231                # Need to wade through metadata links to deal with this one... 
     232                selectionIDs=optionCategories 
     233                datasetGroupValues=[i[0] for i in options] 
     234                datasetGroupNames=[i[0] for i in optionStrings] 
     235                detailedMetadataLinks=[i[1][0] for i in options] 
     236                discoveryMetadataLinks=[i[1][1] for i in options] 
     237 
     238                selectedFlag=None                   
     239                for i in range(len(selectionIDs)): 
     240                    selectionID=selectionIDs[i] 
     241                    datasetGroupValue=datasetGroupValues[i] 
     242                    datasetGroupName=datasetGroupNames[i] 
     243                    detailedMetadataLink=detailedMetadataLinks[i] 
     244                    discoveryMetadataLink=discoveryMetadataLinks[i]      
     245                             
     246                    if not selectedFlag: 
     247                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s" CHECKED>%s</INPUT>' % (selectionID, datasetGroupName, datasetGroupValue)                  
     248                        selectedFlag=1 
     249                    else: 
     250                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s">%s</INPUT>' % (selectionID, datasetGroupName, datasetGroupValue)                      
     251 
     252                    if detailedMetadataLink.lower()!="undefined": 
     253                        print '&nbsp;<A HREF="%s">[ Detailed Metadata ]</A>' % detailedMetadataLink 
     254                    if discoveryMetadataLink.lower()!="undefined": 
     255                        print '&nbsp;<A HREF="%s">[ Discovery Metadata ]</A>' % discoveryMetadataLink 
     256 
     257        elif itemTitle=="Dataset": 
     258                selectionIDs=optionCategories 
     259                itemValues=options 
     260                itemNames=optionStrings 
     261                selectedFlag=None  
     262                 
     263                lastDatasetGroup="WON'T MATCH"              
     264                for i in range(len(selectionIDs)): 
     265                    selectionID=selectionIDs[i] 
     266                    itemName=itemNames[i] 
     267                    itemValue=itemValues[i] 
     268                     
     269                    dsgKey=re.match("dataset_(\d+)\.", selectionID).groups()[0] 
     270                    datasetGroup=summaryDict["datasetGroups"][dsgKey] 
     271                    if datasetGroup!=lastDatasetGroup: 
     272                        print """<BR><B>%s -&gt; Dataset selection:</B>""" % datasetGroup            
     273 
     274                    if not selectedFlag: 
     275                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s" CHECKED>%s</INPUT>' % (selectionID, itemName, itemValue)                  
     276                        selectedFlag=1 
     277                    else: 
     278                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s">%s</INPUT>' % (selectionID, itemName, itemValue)                      
     279                 
     280                    lastDatasetGroup=datasetGroup        
     281                         
     282 
     283        elif itemTitle=="Variable": 
     284                selectionIDs=optionCategories 
     285                itemValues=[i[0] for i in options] 
     286                itemNames=[i[1] for i in optionStrings] 
     287                selectedFlag=None  
     288                 
     289                lastDataset="WON'T MATCH" 
     290                lastDatasetGroup="WON'T MATCH"              
     291                for i in range(len(selectionIDs)): 
     292                    selectionID=selectionIDs[i] 
     293                    itemName=itemNames[i] 
     294                    itemValue=itemValues[i] 
     295 
     296                    (dsgKey, dsKey)=re.match("variable_(\d+)\.(\d+)\.", selectionID).groups() 
     297                    datasetGroup=summaryDict["datasetGroups"][dsgKey] 
     298                    dataset=summaryDict["datasets"]["%s.%s" % (dsgKey, dsKey)] 
     299                    if dataset!=lastDataset or lastDatasetGroup!=datasetGroup: 
     300                        print """<BR><B>%s -&gt; %s -&gt; Variable selection:</B>""" % (datasetGroup, dataset) 
     301 
     302                    if not selectedFlag: 
     303                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s" CHECKED>%s</INPUT>' % (selectionID, itemName, itemValue)                  
     304                        selectedFlag=1 
     305                    else: 
     306                        print '<BR><INPUT TYPE="checkBox" NAME="%s" VALUE="%s">%s</INPUT>' % (selectionID, itemName, itemValue)                      
     307                     
     308                    lastDataset=dataset  
     309                    lastDatasetGroup=datasetGroup            
    229310             
     311    def _displayDomainOptions(self, summaryDict, optionCategories, options, optionStrings, sessionID): 
     312        """ 
     313        Displays the domain options for each variable. 
     314        """      
     315        print "<P><B>PLEASE SELECT: Domain options</B><P>"       
     316        print "<TABLE>" 
     317        print """<TR CLASS="tablestyle"> 
     318                        <TD><B>AXIS NAME</B></TD> 
     319                        <TD><B>AXIS ID</B></TD> 
     320                        <TD><B>RECOGNISED AS</B></TD> 
     321                        <TD><B>UNITS</B></TD> 
     322                        <TD COLSPAN="3"><B>SELECTION</B></TD> 
     323                        <TD><B>INFORMATION</B></TD></TR>""" 
     324         
     325        # Predefine what we need for the axis selection in terms of interfaces... 
     326        knownAxisDict={} 
     327                 
     328        # Loop through keys to get the number of variables 
     329        axisDict={} 
     330        for i in range(len(optionCategories)): 
     331            optionName=optionCategories[i] 
     332            varIndex=".".join(optionName.split(".")[:-1])[5:] 
     333            axisIndex=int(optionName.split(".")[-1]) 
     334            items=options[i] 
     335            [knownAxis, id, longName, units, listType, unused]=items[:6]         
     336             
     337            if not axisDict.has_key(varIndex): 
     338                axisDict[varIndex]={"axes":[]} 
     339            if knownAxis in ("time", "latitude", "longitude"): 
     340                axisDict[varIndex][knownAxis]=axisIndex 
     341             
     342            axisDict[varIndex]["axes"].append([optionName, items]) 
     343               
     344        axisDictKeys=axisDict.keys() 
     345        axisDictKeys.sort() 
     346        #print axisDictKeys 
     347         
     348        for key in axisDictKeys: 
     349 
     350            varID=summaryDict["variables"][key] 
     351            dsgKey, dsKey=re.match("(\d+)\.(\d+)", key).groups() 
     352            datasetGroup=summaryDict["datasetGroups"][dsgKey] 
     353            dataset=summaryDict["datasets"]["%s.%s" % (dsgKey, dsKey)] 
     354            print """<TR><TD COLSPAN="8">&nbsp;</TD></TR>"""     
     355            print """<TR CLASS="tablestyle"><TD COLSPAN="8"><B>%s -&gt; %s -&gt; %s</TD></TR>""" % (datasetGroup, dataset, varID)            
     356         
     357            d=axisDict[key] 
     358            axes=d["axes"] 
     359             
     360            found={} 
     361            # Check time, lat and lon 
     362            for ax in ("time", "latitude", "longitude"): 
     363                if d.has_key(ax): 
     364                    found[ax]=d[ax] 
     365             
     366            for axis in axes: 
     367                (optionName, items)=axis 
     368                varIndex=".".join(optionName.split(".")[:-1])[5:] 
     369                axisIndex=int(optionName.split(".")[-1]) 
     370                #items=options[i] 
     371                [knownAxis, id, longName, units, listType, unused]=items[:6] 
     372 
     373                if (found.has_key("latitude") and found.has_key("longitude")) and \ 
     374                        axisIndex in (found["latitude"], found["longitude"]): 
     375                 
     376                    if found.has_key("used lat lon"):  continue 
     377                 
     378                    if axisIndex==found["latitude"]: 
     379                        # The current axis is latitude so need to get longitude 
     380                        latItems=items           
     381                        latOptionName=optionName         
     382                        lonIndex=found["longitude"] 
     383                         
     384                        for x in axes: 
     385                            if int(x[0].split(".")[-1])==lonIndex: 
     386                                # Found longitude axis in list 
     387                                (lonOptionName, lonItems)=x                      
     388                         
     389                    elif axisIndex==found["longitude"]: 
     390                        # The current axis is longitude so need to get latitude 
     391                        lonItems=items 
     392                        lonOptionName=optionName                         
     393                        latIndex=found["latitude"] 
     394                         
     395                        for x in axes: 
     396                            if int(x[0].split(".")[-1])==latIndex: 
     397                                # Found latitude axis in list 
     398                                (latOptionName, latItems)=x              
     399                                                                 
     400                    [latKnownAxis, latId, latLongName, latUnits, latListType, latUnused]=latItems[:6] 
     401                    northernExtent, southernExtent=latItems[6:8] 
     402                    [lonKnownAxis, lonId, lonLongName, lonUnits, lonListType, lonUnused]=lonItems[:6] 
     403                    westernExtent, easternExtent=lonItems[6:8] 
     404     
     405                    found["used lat lon"]=1 
     406                      
     407                    #print '<B>Horizontal Domain</B><P>' 
     408                      
     409                    print """<TR><TD WIDTH="20%%"><B>%s</B></TD> 
     410                     <TD WIDTH="30%%">%s</TD> 
     411                     <TD>%s</TD> 
     412                     <TD>%s</TD> 
     413                     <TD></TD>                                
     414                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     415                     <TD><B></B></TD> 
     416                     </TR>""" % (latLongName, latOptionName, latKnownAxis, latUnits,  
     417                                   latOptionName+"_high", northernExtent)   
     418                                                                              
     419                    print """<TR><TD WIDTH="20%%"><B>%s</B></TD> 
     420                     <TD WIDTH="30%%">%s</TD> 
     421                     <TD>%s</TD> 
     422                     <TD>%s</TD>                      
     423                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     424                     <TD><TABLE BORDER="0"><TR><TD ALIGN="LEFT">&nbsp;<B></B></TD><TD ALIGN="RIGHT"><B></B>&nbsp;</TD></TR></TABLE></TD>                      
     425                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     426                     </TR>""" % (lonLongName, lonOptionName, lonKnownAxis, lonUnits,  
     427                                   lonOptionName+"_low", westernExtent, lonOptionName+"_high", 
     428                                   easternExtent)   
     429                                                     
     430                    print """<TR><TD WIDTH="20%%"><B>%s</B></TD> 
     431                     <TD WIDTH="30%%">%s</TD> 
     432                     <TD>%s</TD> 
     433                     <TD>%s</TD>                      
     434                     <TD></TD>                                
     435                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     436                     <TD><B>&nbsp;</B></TD> 
     437                     </TR>""" % ("","","","",  
     438                                   latOptionName+"_low", southernExtent)                     
     439 
     440                elif found.has_key("time") and axisIndex==found["time"]: 
     441                    (start,end,intervalValue)=items[6:9] 
     442                    print """<TR><TD WIDTH="20%%"><B>%s</B></TD> 
     443                     <TD WIDTH="30%%">%s</TD> 
     444                     <TD>%s</TD> 
     445                     <TD>%s</TD>""" % (longName, optionName, knownAxis, units) 
     446 
     447                    self._displayTemporalDomainMenus(start, end, intervalValue, units, optionName) 
     448                              
     449                    """<TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     450                     <TD><TABLE BORDER="0"><TR><TD ALIGN="LEFT">&nbsp;<B>Low</B></TD><TD ALIGN="RIGHT"><B>High</B>&nbsp;</TD></TR></TABLE></TD>                       
     451                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     452                     </TR>""" % (optionName+"_low", start, optionName+"_high", end)    
     453                           
     454                else: 
     455                    start,end=items[6:8] 
     456                    print """<TR><TD WIDTH="20%%"><B>%s</B></TD> 
     457                     <TD WIDTH="30%%">%s</TD> 
     458                     <TD>%s</TD> 
     459                     <TD>%s</TD>                      
     460                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     461                     <TD><TABLE BORDER="0"><TR><TD ALIGN="LEFT">&lt;&nbsp;<B>Low</B></TD><TD ALIGN="RIGHT"><B>High</B>&nbsp;&gt;</TD></TR></TABLE></TD>               
     462                     <TD><INPUT TYPE="text" NAME="%s" VALUE="%s"/></TD> 
     463                     </TR>""" % (longName, optionName, knownAxis, units,  
     464                     optionName+"_low", start, optionName+"_high", end)    
     465 
     466            # Fudge output format for now 
     467            print """<TR><TD WIDTH="20%%"><B>OUTPUT FORMAT</B></TD>""" 
     468            print """<TD COLSPAN="4">Note that you should choose NetCDF format if you wish to visualise data.</TD>"""                 
     469            print '<TD COLSPAN="3"><SELECT NAME="outputFormat_%s">' % key 
     470            for format in ("NetCDF", "NASA Ames"): 
     471                print "<OPTION>%s</OPTION>" % format 
     472            print "</SELECT></TD>" 
     473                      
     474        print "</TABLE>" 
     475 
     476        print """<P><INPUT TYPE="checkbox" NAME="multipleFileOutput"> 
     477               &nbsp;Use multiple output files [ this is the default large files as limited by the server ].""" 
     478                
    230479 
    231480    def _displayUploadForm(self, sessionID): 
     
    435684        print "</TR></TABLE>" 
    436685 
    437          
    438     def _displayTemporalDomainOptions(self, options): 
     686 
     687    def _displayTemporalDomainMenus(self, startTime, endTime, intervalValue, intervalUnits, axisIndex): 
     688        """ 
     689        Displays a set of menus for entering the date and time limits for this axis. 
     690        """   
     691        startTime=getDateTimeComponents(startTime) 
     692        endTime=getDateTimeComponents(endTime) 
     693        super_index_list=[] 
     694        index_list=[] 
     695         
     696        # Get the bin list for all times 
     697        timeList=DateTimeManager.createList(startTime, endTime, (intervalValue, intervalUnits), listtype="tuple") 
     698        timeBins=DateTimeManager.getTimeBins(timeList) 
     699         
     700        for i in range(len(startTime)): 
     701            index_list.append(timeBins[i].index(startTime[i])) 
     702        #super_index_list=super_index_list+index_list[:]+index_list[:]  
     703 
     704        # Insert javascript functions to do date checking. 
     705        #if len(super_index_list)==12:  super_index_list=super_index_list+[0,0,0,0,0,0,0,0,0,0,0,0] 
     706        #print jsFunctions.js_dateCheckFunctionGroup % tuple(super_index_list)      
     707 
     708        # Temporal domain 
     709        #print '<P><B>Time</B><P><TABLE WIDTH="100%"><TR>' 
     710        #print '<INPUT NAME="timeIntervalUnits_%s" TYPE="hidden" VALUE="%s">' % (axisIndex, intervalUnits)  
     711        #print '<INPUT NAME="timeIntervalValue_%s" TYPE="hidden" VALUE="%s">' % (axisIndex, intervalValue) 
     712        #print '<TD WIDTH="50%">' 
     713        #print '<TABLE BORDER="1"><TR>' 
     714   
     715        print '<TD COLSPAN="3"><TABLE BORDER="1">' 
     716        for part in ("low", "", "high"): 
     717             
     718            if part in ("Dataset %s: Start time" % axisIndex, "End time"): 
     719                print '<TD COLSPAN="6">%s</TD>' % part 
     720            elif part=="": 
     721                print "<TR><TD>&nbsp;</TD></TR>" 
     722            else: 
     723                print '<TR>' 
     724                fieldFlag="" 
     725                count=0 
     726                for key in TIME_KEYS: 
     727                    if part=="text": 
     728                        print "<TD>%s</TD>" % key 
     729                    elif part in ("low", "high"): 
     730                        print """<TD><SELECT NAME="%s_%s.time.%s" %s onChange="checkDate('%s_%s')">""" % (axisIndex,  
     731                                   part, key.lower(), fieldFlag, part, axisIndex) 
     732                        if key=="year": 
     733                            timeFormat="%.4d" 
     734                        else: 
     735                            timeFormat="%.2d" 
     736 
     737                        for item in timeBins[count]: 
     738                            timeItem=timeFormat % item 
     739                            print """<OPTION VALUE="%s">%s</OPTION>""" % (timeItem, timeItem) 
     740                 
     741                        print "</SELECT></TD>" 
     742                        count=count+1 
     743 
     744                print "</TR>" 
     745        print "</TABLE></TD>" 
     746 
     747        #print "</TR></TABLE><P>" 
     748        # Call the javascript to update the date field at start 
     749        #print """<SCRIPT LANGUAGE="Javascript">resetAllDates(%s)</SCRIPT>""" % (dsetNumber-1)     
     750         
     751 
     752 
     753         
     754    def DEPRACATED_displayTemporalDomainOptions(self, options): 
    439755        """ 
    440756        Prints a form entry for specifying the temporal domain. 
     
    540856        # Get current number of Datasets before showing option of selecting number of datasets 
    541857        # This sets the instance variable that is re-used everywhere from now on - clunky, I know! 
    542         self.numberOfDatasets=int(summaryDict["numberOfDatasets"])       
     858        """self.numberOfDatasets=int(summaryDict["numberOfDatasets"])"""         
    543859         
    544860        if sessionID in (None, "None"): 
     
    548864         
    549865        # Show option for number of datasets if more than one allowed 
    550         if MAX_NUM_DATASETS>1: 
    551             print """ | Number of Datasets <SELECT NAME="ndsets" onchange="redirect(this);">""" 
     866        """if MAX_NUM_DATASETS>1: 
     867            print ' | Number of Datasets <SELECT NAME="ndsets" onchange="redirect(this);">' 
    552868             
    553869            for n in range(1, MAX_NUM_DATASETS+1): 
     
    557873                    print '<OPTION VALUE="%s?numberOfDatasets=%s%s">%s</OPTION>' % (CGI_SCRIPT_URL_PATH, n, sidString, n) 
    558874                     
    559             print "</SELECT>" 
     875            print "</SELECT>"  """ 
    560876         
    561877        # Link to view request summary 
     
    602918 
    603919        # Begin an HTML table 
    604         print '<TABLE WIDTH="100%"><TR class="tablerow"><TD COLSPAN="2">CURRENT REQUEST</TD></TR>' 
     920        """print '<TABLE WIDTH="100%"><TR class="tablerow"><TD COLSPAN="2">CURRENT REQUEST</TD></TR>' 
    605921 
    606922        print '<TR class="tablerow">' 
     
    631947          print "</TD>" 
    632948        print "</TR></TABLE>" 
    633         print "</I></B><P>" 
     949        print "</I></B><P>"   """ 
    634950 
    635951 
     
    680996        print "%s file%s been successfully written. The table below shows %s." % (nfiles, plural, displayedString) 
    681997        print "<TABLE>" 
     998         
    682999        for file in pathList: 
    683             if file=="...": 
     1000            localPath=file 
     1001            url=translateURI(localPath) 
     1002                 
     1003            if localPath=="...": 
    6841004                print """<TR class="tablerow"><TD COLSPAN="3">...</TD>""" 
    6851005            else: 
     
    6881008                         <TD><A HREF="%s">  Download  </A></TD> 
    6891009                         <TD><A HREF="%s?fileURIList=%s&fileVariable_1.1=SELECT_AUTOMATICALLY">  Visualise  </A></TD> 
    690                      </TR>""" % (file, file, GEOSPLAT_URL_PATH, file) 
     1010                     </TR>""" % (url, url, GEOSPLAT_URL_PATH, localPath) 
    6911011        print "</TABLE>" 
    6921012        print '<P><A HREF="%s">Start a new request</A>.' % CGI_SCRIPT_URL_PATH 
     
    7231043         
    7241044 
    725     def _displayRequestSummaryTable(self, summary): 
     1045    def _displayRequestSummaryTable(self, summaryDict): 
    7261046        """ 
    7271047        Prints a table summarising the current request. 
     
    7301050        print "<TABLE>" 
    7311051        # Chop up the request information into a dictionary 
    732         (summaryDict, orderedKeys)=self._chopUpSummary(summary) 
    733                  
    734         for key in orderedKeys: 
    735             print '<TR class="tablerow"><TD><B>%s</B></TD><TD>%s</TD></TR>' % (key, summaryDict[key]) 
     1052        #(summaryDict, orderedKeys)=self._chopUpSummary(summary) 
     1053         
     1054        d=summaryDict 
     1055        dsgKeys=d["datasetGroups"].keys() 
     1056        dsKeys=d["datasets"].keys() 
     1057        varKeys=d["variables"].keys() 
     1058        axisKeys=d["axes"].keys() 
     1059         
     1060        dsgKeys.sort() 
     1061        dsKeys.sort() 
     1062        varKeys.sort() 
     1063        axisKeys.sort() 
     1064         
     1065        template='<TR class="tablerow"><TD><B>%s%s</B></TD><TD>%s</TD></TR>' 
     1066         
     1067        for dsg in dsgKeys: 
     1068            print template % ("Dataset Group ", dsg, d["datasetGroups"][dsg])        
     1069             
     1070            for ds in dsKeys: 
     1071                (dsgIndex, dsIndex)=re.match(r"^(\d+)\.(\d+)$", ds).groups() 
     1072                if dsg==dsgIndex: 
     1073                    print template % ("Dataset ", ds, d["datasets"][ds]) 
     1074                     
     1075                for var in varKeys: 
     1076                    (dsgIndex, dsIndex, varIndex)=re.match(r"^(\d+)\.(\d+)\.(\d+)$", var).groups() 
     1077                    if dsg==dsgIndex and ds=="%s.%s" % (dsgIndex, dsIndex): 
     1078                        print template % ("Variable ", var, d["variables"][var]) 
     1079                        if d["outputFormats"].has_key(var): 
     1080                            print template % ("Output format ", var, d["outputFormats"][var]) 
     1081 
     1082                        if d["datasetURIs"].has_key(var): 
     1083                            print template % ("Dataset URI ", var, d["datasetURIs"][var])                        
     1084                         
     1085                    for axis in axisKeys: 
     1086                        (dsgIndex, dsIndex, varIndex, axisIndex)=re.match(r"^(\d+)\.(\d+)\.(\d+)\.(\d+)$", axis).groups() 
     1087                        if (dsg==dsgIndex and ds=="%s.%s" % (dsgIndex, dsIndex)) and var=="%s.%s.%s" % (dsgIndex, dsIndex, varIndex): 
     1088                            print template % ("Axis ", axis, d["axes"][axis]) 
     1089         
     1090            print "<TR><TD>&nbsp;</TD></TR>" 
     1091 
     1092         
     1093        # Now globals 
     1094        globalKeys=d["globals"].keys() 
     1095        globalKeys.sort() 
     1096         
     1097        for key in globalKeys: 
     1098            print template % (key, "", d["globals"][key]) 
    7361099         
    7371100        print "</TABLE>" 
     
    8291192        print '<P><A HREF="%s?sessionID=%s">Return to your current request</A><P>' % (CGI_SCRIPT_URL_PATH, sessionID) 
    8301193         
     1194 
     1195if __name__=="__main__": 
     1196    print "Testing DisplayManager.py..." 
     1197    DisplayManager() 
Note: See TracChangeset for help on using the changeset viewer.