Changeset 6014 for cowsclient


Ignore:
Timestamp:
16/11/09 13:41:43 (10 years ago)
Author:
pnorton
Message:

Fixed the wcsdown action so that it now works with the new config file readers.

Location:
cowsclient/trunk/cowsclient
Files:
1 added
6 edited

Legend:

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

    r5979 r6014  
    1616import cowsclient.lib.utils as utils 
    1717from cowsclient.lib.base import BaseController, g, response, config, request, c, render 
    18 from cowsclient.lib.wmc_util import proxyFix, resetProxy 
     18from cowsclient.lib.wmc_util import proxyFix, resetProxy, parseEndpointString 
    1919from cowsclient.model.date_time_options import DateTimeOptionsBuilder 
    20 from cowsclient.lib.wmc_util import parseEndpointString 
    21  
    22 from cowsclient.lib.layer_config_parser import LayerConfigParser 
     20import cowsclient.lib.utils as utils 
     21 
     22from cowsclient.lib.config_file_parser import OutlineLayersConfigParser, EndpointConfigFileParser 
     23 
     24import pprint 
    2325 
    2426log = logging.getLogger(__name__) 
     
    3537 
    3638        #get the list of default WCS endpoints 
    37         c.defaultWCSEndpoints =  utils.toJSON(utils.readEndpoints().get('WCS',None)) 
     39        ep = EndpointConfigFileParser() 
     40        endpointList = ep.buildEndpointList('wcsdown') 
     41        wcsEPList = utils.filterEnpointList(endpointList, 'WCS') 
     42        #log.debug("wcsEPList = %s" % (pprint.pformat(wcsEPList),)) 
     43         
     44        c.defaultWCSEndpoints = utils.toJSON(wcsEPList) 
    3845         
    3946        log.debug("params = %s" % (params,)) 
     
    7582            c.selected_bbox = '-180.0,-90.0,180.0,90.0' 
    7683         
    77          
    78         if timepositions != None: 
     84        log.debug("timepositions = %s" % (timepositions,)) 
     85        if timepositions != None and timepositions != [None]: 
    7986            builder = DateTimeOptionsBuilder(timepositions) 
    8087            options = builder.buildOptions() 
     
    107114#        buildLayerJSONFromConfig 
    108115 
    109         lp = LayerConfigParser(config['outline_layers_file']) 
    110          
    111         layersList = lp.buildLayers('wcsdown') 
    112          
     116        lp = OutlineLayersConfigParser() 
     117         
     118        layersList = lp.getOutlineLayerList('wcsdown') 
     119                 
    113120        c.baseLayerJSON = utils.toJSON(layersList)  
    114121         
  • cowsclient/trunk/cowsclient/lib/config_file_parser.py

    r6013 r6014  
    140140            return None 
    141141     
     142    def getOutlineLayerList(self, page): 
     143        return self.buildList(page, 'outline', 'LayerConfig', ['params','url']) 
     144         
    142145    def _getItemFromSection(self, sectionName, requiredParams): 
    143146        """ 
  • cowsclient/trunk/cowsclient/lib/status_builder.py

    r6013 r6014  
    4949        endpointList = econfig.buildEndpointList('wmsviz') 
    5050        log.debug("endpointList = %s" % (endpointList,)) 
     51         
    5152        wmsList = [] 
    5253         
  • cowsclient/trunk/cowsclient/lib/utils.py

    r6013 r6014  
    116116    return json.dumps(obj).replace('"', '\\"') 
    117117 
    118  
     118def filterEnpointList(endpointList, requiredType, searchCowsIndex=True): 
     119        epList = [] 
     120         
     121        if endpointList is not None: 
     122            for e in endpointList: 
     123                if requiredType!= 'COWS' and e['service'] == 'COWS' and searchCowsIndex: 
     124                    try: 
     125                        for linkName, linkDict in parseCowsCatalog(e['url']): 
     126                            if requiredType in linkDict.keys(): 
     127                                epList.append( 
     128                                    {'service':requiredType,  
     129                                     'url':linkDict[requiredType],  
     130                                     'name':linkName} 
     131                                ) 
     132                    except: 
     133                        log.exception("An error occurred while reading cows catalog at %s"\ 
     134                                      % (e['url'],)) 
     135                             
     136                elif e['service'] == requiredType: 
     137                    epList.append(e) 
     138                 
     139        return epList     
  • cowsclient/trunk/cowsclient/public/js/boundingBoxMapSelect.js

    r5979 r6014  
    11/** 
     2 * A bounding box 
    23 *   
    34 * @param mapContainerId     - the container for the openlayers map 
    45 * @param controlContainerId - the container for the bounds control.   
    5  * @param stringContainerId  - the container for the map selection string to display the value to the user 
    6  * @param inputElementId     - the input element that the bbox value will be set in 
     6 * @param inputElementId     - the input element that the bbox value will be set in,  
     7 *     if set to null will be ignored 
     8 * @param stringContainerId  - the container for the map selection string to display, 
     9 *     the value to the user, if set to null will be ignored 
     10 * @param boundsMarkup      - a html string that sets the markup for the text bounds, 
     11 *                            selection. Must include 4 input elements with names  
     12 *                            'bboxN','bboxE','bboxS','bboxW'.  
    713 */ 
    8 var BoundingBoxMapSelect= function (mapContainerId, controlContainerId, baseLayerData, inputElementId, stringContainerId) { 
     14var BoundingBoxMapSelect= function (mapContainerId, controlContainerId, baseLayerData, inputElementId, stringContainerId, boundsMarkup) { 
    915     
    1016    this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);           
     
    2228         
    2329        if (inputValue !== null && inputValue !== '') { 
     30            // if the bbox input has a value attempt to use it to set the  
     31            // inital bounds on the map 
    2432            this._bbox = this._getBoundsFromString(inputValue); 
    2533        } 
     34    } 
     35     
     36    if (boundsMarkup) { 
     37        this.boundsMarkup = boundsMarkup; 
    2638    } 
    2739     
     
    5365    _buildMap: function (baseLayerData) { 
    5466        // couldn't get the sub-selection to work with the default controls 
    55         this.map = new OpenLayers.Map('map', {controls:[]}); 
     67        this.map = new OpenLayers.Map(this.mapContainerId, {controls:[]}); 
    5668     
    5769        this.map.addControl(new OpenLayers.Control.PanZoomBar()); 
     
    7183        } 
    7284        else { 
     85             
     86            // if the baseLayerData doesn't look like an array assume there is only 
     87            // one layer specified. 
     88            if (baseLayerData.constructor !== Array) { 
     89                baseLayerData = [baseLayerData]; 
     90            } 
    7391             
    7492            for (i = 0; i < baseLayerData.length; i++) { 
     
    95113                    ); 
    96114                } 
    97                  
    98  
    99                  
     115 
    100116                this.map.addLayer(layer); 
    101117                                           
     
    103119             
    104120        } 
    105          
    106          
    107 //        coastlineParams.transparent = 'false'; 
    108 //         
    109 //        var baseLayer = new OpenLayers.Layer.WMS( 
    110 //                "Coastline", 
    111 //                coastlineURL, 
    112 //                coastlineParams, 
    113 //                { isBaseLayer: true, maxResolution:"auto", numZoomLevels:5} 
    114 //        ); 
    115 //     
    116 //         
    117 //        this.map.addLayer(baseLayer); 
    118121         
    119122        this.map.zoomToMaxExtent(); 
     
    147150        } 
    148151         
    149  
    150 //        var c = new OpenLayers.LonLat(136.275, 69.7200); 
    151 //        this.map.setCenter(c); 
    152 //        this.map.zoomTo(1); 
    153          
    154152        this.map.events.register('moveend', this, this._mapMoved); 
    155          
    156          
    157     }, 
    158      
     153    }, 
     154     
     155    /** 
     156     * Build the bounds control using the markup in this.boundsMarkup 
     157     */ 
    159158    _buildBoundsControl: function () { 
    160159        this.boundsControl = new WMSC.BoundsControl(this.controlContainerId, this._bbox, this.events, this.boundsMarkup); 
    161160    }, 
    162161     
     162    /** 
     163     * Get the bbox string from the bounds control inputs 
     164     */ 
    163165    _getBBoxString: function () { 
    164166        return this._bbox.left.toFixed(1) + "," + this._bbox.bottom.toFixed(1) + "," + this._bbox.right.toFixed(1) + "," + this._bbox.top.toFixed(1); 
    165167    }, 
    166168     
     169    /** 
     170     * Update the string container or the input element with the new bounds string, 
     171     * does nothing if both of these are undefined. 
     172     */ 
    167173    _updateBBoxString: function () { 
    168174         
     
    180186    }, 
    181187     
     188    /** 
     189     * The map has moved, need to trigger the MAP_SELECTION_CHANGED event with the new 
     190     * bounds. The MAP_SELECTION_CHANGED is listened for by the boundsControl which 
     191     * should update to reflect the new active bouds. 
     192     */ 
    182193    _mapMoved: function () { 
    183194        this._bbox = this.subselControl.getActiveBounds(); 
     
    190201    }, 
    191202     
     203    /** 
     204     * The selected bounds in the bounds control have changed, need to update 
     205     * the map. 
     206     */ 
    192207    _boundsTextChanged: function (e) { 
    193208        this._bbox = e.selection; 
     
    196211    }, 
    197212     
     213    /** 
     214     * The reset button has been pressed, zoom the map to the max extent 
     215     */ 
    198216    _resetMapSelection: function () { 
    199217        this.subselControl.deactivateSubsel(); 
     
    204222    }, 
    205223     
     224    /** 
     225     * Takes a comma spearated bounds string (w,s,e,n) and returns an OpenLayers.Bounds object. 
     226     */ 
    206227    _getBoundsFromString: function (boundsString) { 
    207228        var splitResult = boundsString.split(','); 
  • cowsclient/trunk/cowsclient/templates/wcsdown.html

    r5979 r6014  
    7070<script src="$g.server/js/splitSelect.js"></script> 
    7171<script src="$g.server/js/utils.js"></script> 
     72<script src="$g.server/js/endpoint.js"></script> 
    7273 
    7374<script type="text/javascript"> 
     
    7980var defaultEndpoints = ${h.jsonParseIfNotEmpty(c.defaultWCSEndpoints)}; 
    8081 
    81 WMSC.log("defaultEndpoints = " + defaultEndpoints); 
    82  
    8382function init() { 
    8483 
    8584    var baseLayerData = ${h.jsonParseIfNotEmpty(c.baseLayerJSON)}; 
     85 
     86    var epUrls = []; 
     87 
     88    for (var i = 0; i &lt; defaultEndpoints.length; i ++) { 
     89        epUrls.push(defaultEndpoints[i].url); 
     90    } 
     91     
    8692     
    8793    // build endpoint autocomplete 
    88     Utils.makeCombobox("endpoint", "endpoint_toggle", "endpoint_options", defaultEndpoints, onEndpointChange); 
     94    Utils.makeCombobox("endpoint", "endpoint_toggle", "endpoint_options", epUrls, onEndpointChange); 
    8995     
    9096    <py:if test="c.selected_layer != None"> 
    91      
    92         var startTime = new SplitSelect('time_container', 'time', timedata, 'Start Time:'); 
    93         startTime.build(); 
    94      
    95         var endTime = new SplitSelect('time_end_container', 'time_end', timedata, 'End Time:'); 
    96         endTime.build(); 
    97          
    98         setSingleTime('${c.singleTimePoint}' == 'true'); 
     97 
     98        if (timedata !== null) { 
     99            var startTime = new SplitSelect('time_container', 'time', timedata, 'Start Time:'); 
     100            startTime.build(); 
     101         
     102            var endTime = new SplitSelect('time_end_container', 'time_end', timedata, 'End Time:'); 
     103            endTime.build(); 
     104             
     105            setSingleTime('${c.singleTimePoint}' == 'true'); 
     106        } 
    99107         
    100108        var bboxSelect = new BoundingBoxMapSelect('map', 'bounds_control_container', baseLayerData,  'bbox_hidden_input', null); 
Note: See TracChangeset for help on using the changeset viewer.