Changeset 5668


Ignore:
Timestamp:
25/08/09 15:29:10 (10 years ago)
Author:
pnorton
Message:

Added some code that, when the time strings are of the correct format will split them up into different select boxes.

Location:
cowsclient/trunk/cowsclient
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • cowsclient/trunk/cowsclient/controllers/wcsdown.py

    r5665 r5668  
    1111 
    1212import paste 
     13import simplejson as json 
    1314 
    1415from cowsclient.lib.base import BaseController, g, response, config, request, c, session, render 
     
    1718 
    1819from cowsclient.lib.wmc_util import proxyFix, resetProxy 
     20 
     21from cowsclient.model.date_time_options import DateTimeOptionsBuilder 
    1922  
    2023 
     
    4750 
    4851        layers = [] 
     52        timepositions = None 
     53         
    4954        if endpoint != None: 
    5055             
     
    5257             
    5358            if layer != None: 
    54                 layerMetadata, c.bboxLimits, c.timepositions, c.supportedFormats, c.supportedCRS =\ 
     59                layerMetadata, c.bboxLimits, timepositions, c.supportedFormats, c.supportedCRS =\ 
    5560                       self._getWCSMetadata(wcs, layer) 
    5661                 
     
    5964            c.bboxLimits = bbox 
    6065         
     66         
     67        if timepositions != None: 
     68            builder = DateTimeOptionsBuilder(timepositions) 
     69            options = builder.buildOptions() 
     70            log.debug("options = %s" % (options,)) 
     71            c.timedata = json.dumps(options).replace('"', '\\"')  
     72             
    6173        c.crs = crs 
    6274        c.endpoint = endpoint 
  • cowsclient/trunk/cowsclient/model/date_time_options.py

    r5664 r5668  
    66class DateTimeOptionsBuilder(object): 
    77     
     8    format = '%(years)s-%(months)s-%(days)sT%(times)s' 
    89    isoDateTimePattern = re.compile("(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}:\d{2}.\d)") 
    910 
     
    1819        if ret == False: 
    1920            ret = self.dateTimeVals 
    20              
    21         log.debug("ret = %s" % (ret,)) 
    22                  
     21                             
    2322        return ret 
    2423         
     
    6059            return False 
    6160         
    62         options = DateTimeOptions(d['years'], d['months'], d['days'], d['times'])     
     61        d['_fmt'] = DateTimeOptionsBuilder.format 
    6362         
    64         return options 
     63        return d 
    6564  
    6665def isListUnique(items): 
     
    8685         
    8786    return l 
    88          
    89 class DateTimeOptions(object): 
    90      
    91     def __init__(self, years, months, days, times): 
    92          
    93         self.years = years 
    94         self.months = months 
    95         self.days = days 
    96         self.times = times 
    97          
     87                 
    9888if __name__ == '__main__': 
    9989    import unittest 
  • cowsclient/trunk/cowsclient/public/js/utils.js

    r5642 r5668  
    6262     
    6363    return select;   
     64} 
     65 
     66buildLabel = function(labelText, atts) { 
     67    var label = document.createElement("label"); 
     68    label.innerHTML = labelText; 
     69     
     70    for (var x in atts) { 
     71        label[x] = atts[x]; 
     72    } 
     73     
     74    return label 
    6475} 
    6576 
     
    128139} 
    129140 
    130 buildHiddenInputElement = function(name, value) { 
     141buildHiddenInputElement = function(name, value, id) { 
    131142    var input = document.createElement('input'); 
    132143    input.type = "hidden"; 
    133144    input.name = name; 
    134145    input.value = value; 
     146    if (id != undefined) { input.id = id;} 
    135147    return input; 
    136148}; 
  • cowsclient/trunk/cowsclient/templates/wcsdown.html

    r5664 r5668  
    6767<head> 
    6868 
     69<script src="$g.server/js/json2.js"></script> 
     70<script src="$g.server/js/splitSelect.js"></script> 
     71<script src="$g.server/js/wmsc.js"></script> 
     72<script src="$g.server/js/utils.js"></script> 
     73 
    6974<script type="text/javascript"> 
    7075 
     
    7277refreshAction = "$g.server/wcsdown"; 
    7378 
    74 function init()  
    75 { 
     79timedata = JSON.parse("${c.timedata}"); 
     80 
     81function init() { 
     82 
     83    var startTime = new SplitSelect('time_container', 'time', timedata, 'Start Time:'); 
     84    startTime.build(); 
     85 
     86    var endTime = new SplitSelect('time_end_container', 'time_end', timedata, 'End Time:'); 
     87    endTime.build(); 
     88     
    7689    setSingleTime('${c.singleTimePoint}' == 'true'); 
    7790} 
    7891 
    79 function cleanup()  
    80 { 
     92function cleanup() { 
     93     
    8194} 
    8295 
     
    156169        <py:if test="c.layer != None"> 
    157170         
    158         ${makeSelectInput('format', c.supportedFormats, label='Format:')} 
    159          
    160         ${makeSelectInput('crs', c.supportedCRS, label='CRS:', default=c.crs)} 
    161          
    162         ${makeTextInput('bbox', label='Bounding Box:', default=c.bboxLimits )} 
    163          
    164         <h4>Dimensions</h4> 
    165          
    166         <div> 
    167             <label for="single_time">Single Time Point:</label> 
    168             <input type="checkbox" id="single_time" name="single_time" value='true' onClick="setSingleTime(this.checked);"></input> 
    169         </div> 
    170          
    171         ${makeSelectInput('time', c.timepositions, label='Start Time:', default=c.time)} 
    172         ${makeSelectInput('time_end', c.timepositions, label='End Time:', default=c.time_end)} 
    173          
     171            ${makeSelectInput('format', c.supportedFormats, label='Format:')} 
     172             
     173            ${makeSelectInput('crs', c.supportedCRS, label='CRS:', default=c.crs)} 
     174             
     175            ${makeTextInput('bbox', label='Bounding Box:', default=c.bboxLimits )} 
     176             
     177            <h4>Dimensions</h4> 
     178             
     179            <div> 
     180                <label for="single_time">Single Time Point:</label> 
     181                <input type="checkbox" id="single_time" name="single_time" value='true' onClick="setSingleTime(this.checked);"></input> 
     182            </div> 
     183             
     184            <div id="time_container"> </div> 
     185            <div id="time_end_container"> </div> 
     186             
    174187        </py:if> 
    175188         
  • cowsclient/trunk/cowsclient/tests/test_date_time_options_builder.py

    r5664 r5668  
    11import unittest 
    22 
    3 from cowsclient.model.date_time_options import DateTimeOptionsBuilder, DateTimeOptions 
     3from cowsclient.model.date_time_options import DateTimeOptionsBuilder 
    44 
    55class TestDateTimeOptionsBuilder(unittest.TestCase): 
     
    4141            assert DateTimeOptionsBuilder.isoDateTimePattern.match(ti) == None 
    4242 
    43  
    4443    def test_003_repeatedAll(self): 
    4544         
    46  
    47  
    4845        resTimeOpts = self.builder.buildOptions() 
    4946         
    50         assert resTimeOpts.__class__ == DateTimeOptions 
     47        assert resTimeOpts.__class__ == dict 
    5148         
    52         assert resTimeOpts.years == self.years 
    53         assert resTimeOpts.months == self.months 
    54         assert resTimeOpts.days == self.days 
    55         assert resTimeOpts.times == self.times 
     49        assert resTimeOpts['years'] == self.years 
     50        assert resTimeOpts['months'] == self.months 
     51        assert resTimeOpts['days'] == self.days 
     52        assert resTimeOpts['times'] == self.times 
    5653 
    5754    def test_004_notAllOptions(self): 
     
    10198     
    10299    s = suite() 
    103     unittest.TextTestRunner(verbosity=2).run(s) 
     100    unittest.TextTestRunner(verbosity=1).run(s) 
Note: See TracChangeset for help on using the changeset viewer.