Changeset 5993


Ignore:
Timestamp:
11/11/09 12:36:05 (10 years ago)
Author:
pnorton
Message:

Modified a number of controls so that they include their own markup rather than relying on it being in the template.

Also removed the layer getFigure button from the layer info control.

Location:
cowsclient/trunk/cowsclient
Files:
5 added
1 deleted
9 edited

Legend:

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

    r5851 r5993  
    4242        Default controller method to handle the initial requests to the page 
    4343        """ 
    44         log.debug('wmsviz controller') 
     44        log.debug('endtered wmsviz controller index action') 
    4545         
    4646        g.helpIcon='layout/icons/help.png'  #needs to go in config 
     
    6060            if self.inputs['REQUEST'] == 'GetWebMapContext': 
    6161                wmc= GetWebMapContext(self) 
     62                log.debug("finished wmsviz controller index action, req = GetWebMapContext") 
    6263                return wmc 
    6364            
     
    6768                response.headers['Content-Type'] = 'text/xml' 
    6869                response.write(wmcDoc) 
     70                log.debug("finished wmsviz controller index action, req = GetWebMapCapabilities") 
    6971                return            
    7072             
    7173            elif self.inputs['REQUEST'] == 'GetLegend': 
    72                 return GetLegend(self) 
     74                resp = GetLegend(self) 
     75                log.debug("finished wmsviz controller index action, req = GetLegend") 
     76                return resp 
    7377             
    7478            if self.inputs['REQUEST'] == 'GetDisplayOptions': 
     
    7882                response.headers['Content-Type'] = 'application/json' 
    7983                response.write(jsonTxt) 
     84                log.debug("finished wmsviz controller index action, req = GetDisplayOptions") 
    8085                return 
    8186             
     
    134139                        # Send response to user 
    135140                        self.start_response("%d %s" % (e.code, e.msg), e.headers.dict.items()) 
     141                          
    136142                        return xresponse 
    137143                 
     
    150156        c.initialSetupJSON = utils.toJSON(initialSetup)  
    151157        c.initialStatus = utils.toJSON(status) 
     158         
     159        log.debug("finished wmsviz controller index action") 
    152160         
    153161        return render('wmsviz') 
  • cowsclient/trunk/cowsclient/public/js/figureBuilder.js

    r5776 r5993  
    22/*globals WMSC: false, document: false, Utils: false, alert: false*/ 
    33 
    4 var FigureBuilder = function (formId, buttonId, initialBounds, eventsManager) { 
    5         this._form = document.getElementById(formId); 
    6         this._button = document.getElementById(buttonId); 
     4var FigureBuilder = function (containerId, makeFigureActionURL, initialBounds, eventsManager) { 
     5     
     6    this._container = document.getElementById(containerId); 
     7     
     8    this._container.innerHTML = this.controlMarkup; 
     9     
     10        this._form = document.getElementById('figureForm'); 
     11        this._form.action = makeFigureActionURL; 
     12        this._button = document.getElementById('make_figure_btn'); 
    713         
    814        this._currentLayers = null; 
     
    2026 
    2127FigureBuilder.prototype = { 
    22                  
     28 
     29    controlMarkup: '\ 
     30<form id="figureForm" method="get">\ 
     31    <div>\ 
     32        <select name="figFormat">\ 
     33          <option value="image/png" selected="1"> PNG </option>\ 
     34          <option value="image/jpeg"> JPEG </option>\ 
     35          <option value="image/gif"> GIF </option>\ 
     36          <option value="application/postscript"> EPS </option>\ 
     37          <option value="image/svg+xml"> SVG </option>\ 
     38        </select>\ 
     39        <input type="button" value="Make Figure" id="make_figure_btn"/>\ 
     40    </div>\ 
     41</form>', 
     42         
    2343        /** 
    2444         * When the layer order changes update the current layers 
  • cowsclient/trunk/cowsclient/public/js/layerDimensions.js

    r5965 r5993  
    6666        var i; 
    6767        var dims = wmcLayer.getDimensions(); 
    68         var fs = document.createElement('fieldset'); 
    69         var leg = document.createElement('legend'); 
    70         leg.innerHTML = 'Dimensions'; 
    71         fs.appendChild(leg); 
     68        var div = document.createElement('div'); 
    7269         
    7370        for (var id in dims) {  
     
    8481            } 
    8582             
    86             fs.appendChild(select.build()); 
     83            div.appendChild(select.build()); 
    8784 
    8885        } 
    8986         
    90         this._form.appendChild(fs); 
     87        this._form.appendChild(div); 
    9188         
    9289        // It appears that IE8 dosen't fire the onchange event for the fieldset 
  • cowsclient/trunk/cowsclient/public/js/layerDisplayOptions.js

    r5979 r5993  
    137137        } 
    138138                 
    139         var fs = document.createElement('fieldset'); 
    140         var leg = document.createElement('legend'); 
    141         leg.innerHTML = 'Display Options'; 
    142         fs.appendChild(leg); 
     139        var div = document.createElement('div'); 
    143140 
    144141        // generic display options 
     
    146143        var currentStyle = this._getCurrentLayerProperty('styles'); 
    147144         
    148         fs.appendChild(this._buildGenericDisplayOptions(layerStyles, currentStyle)); 
     145        div.appendChild(this._buildGenericDisplayOptions(layerStyles, currentStyle)); 
    149146         
    150147        // are there any additional display options for this endpoint 
     
    152149            // display options common to all layers for this endpoint (should appear first) 
    153150            if (displayOptions.common !== undefined) { 
    154                 fs.appendChild(this._buildDisplayOptionsList(displayOptions.common, hideOptions)); 
     151                div.appendChild(this._buildDisplayOptionsList(displayOptions.common, hideOptions)); 
    155152            } 
    156153             
     
    159156            if (currentStyle !== null) { 
    160157                if (displayOptions[currentStyle] !== undefined) { 
    161                     fs.appendChild(this._buildDisplayOptionsList(displayOptions[currentStyle], hideOptions)); 
     158                    div.appendChild(this._buildDisplayOptionsList(displayOptions[currentStyle], hideOptions)); 
    162159                } 
    163160            } 
     
    168165        this._form.innerHTML = ""; 
    169166         
    170         this._form.appendChild(fs); 
    171         WMSC.log("Adding onchange event to fs (fs = " + fs + ")"); 
     167        this._form.appendChild(div); 
    172168         
    173169        // It appears that IE8 dosen't fire the onchange event for the fieldset 
     
    184180        } 
    185181         
    186         // div.appendChild(this._buildDisplayOptionBool({name:'transparent', title:'Transparent Background', defaultValue:'true'})); 
    187         // div.appendChild(this._buildDisplayOptionValue({name:'bgcolor', title:'Background Colour', defaultValue:null})); 
     182        div.appendChild(this._buildDisplayOptionBool({name:'transparent', title:'Transparent Background', defaultValue:'true'})); 
     183        div.appendChild(this._buildDisplayOptionValue({name:'bgcolor', title:'Background Colour', defaultValue:null})); 
    188184         
    189185        return div; 
  • cowsclient/trunk/cowsclient/public/js/layerInformation.js

    r5979 r5993  
    2222 * @constructor 
    2323 */ 
    24 var LayerInfo = function (layerInfoFormId, eventsManager) { 
     24var LayerInfo = function (layerInfoContainerId, eventsManager) { 
    2525     
    26     this._form = document.getElementById(layerInfoFormId); 
     26    this._container = document.getElementById(layerInfoContainerId); 
    2727    this.eventsManager = eventsManager; 
    28     this.displayOptsRetriever = new DisplayOptionsRetriever(); 
    29     this.currentWMCLayer = null; 
    30     this.currentOLLayer = null; 
    31      
    32     this._hiddenInputContainer = null; 
    33     this._selectHandler = null; 
    34     this._getFigureHandler = null; 
    35     this._getFigureButton = null; 
    36     this._styleSelect = null; 
    37      
    38     this._currentSelection =  new OpenLayers.Bounds(-180, -90, 180, 90); 
    3928     
    4029    this.eventsManager.register('CURRENT_WMCLAYER_CHANGED', this, this._onCurrentLayerChanged); 
     
    5039    _onCurrentLayerChanged: function (e) { 
    5140         
    52         this._clearForm(); 
    53          
    5441        if (e.wmcLayer !== null && e.olLayer !== null) { 
    55             this._buildInfo(e.wmcLayer, e.olLayer, e.wmc); 
     42            this._buildInfo(e.wmcLayer, e.olLayer); 
     43        } 
     44        else { 
     45            this._clearInfo(); 
    5646        } 
    5747         
    58         this.currentOLLayer = e.olLayer; 
    59         this.currentWMCLayer = e.wmcLayer; 
    6048    }, 
    6149     
     
    6351     * Rebuilds all of the display option controls given by the layer 
    6452     */ 
    65     _buildInfo: function (wmcLayer, olLayer, wmc) { 
     53    _buildInfo: function (wmcLayer, olLayer) { 
    6654         
    67         var fs = document.createElement('fieldset'); 
    68         var leg = document.createElement('legend'); 
    69         leg.innerHTML = 'Layer Information'; 
    70         fs.appendChild(leg); 
    71                      
    72         fs.appendChild(this._buildInfoItem('URL', olLayer.url)); 
    73         fs.appendChild(this._buildInfoItem('Layer Name', this._getLayerProperty(olLayer, 'layers'))); 
    74         fs.appendChild(this._buildInfoItem('Layer Abstract', wmcLayer.getAbstract())); 
    75                  
    76         if (wmc.supportsRequest('GetFigure')) { 
    77             fs.appendChild(this._buildGetFigureButton(wmc)); 
    78             fs.appendChild(document.createTextNode("\n")); 
    79         } 
    80  
    81         this._hiddenInputContainer = document.createElement('div'); 
    82         fs.appendChild(this._hiddenInputContainer); 
    83           
    84         this._form.appendChild(fs); 
     55        var div = document.createElement('div'); 
    8556         
     57        div.appendChild(this._buildInfoItem('URL', olLayer.url)); 
     58        div.appendChild(this._buildInfoItem('Layer Name', this._getLayerProperty(olLayer, 'layers'))); 
     59        div.appendChild(this._buildInfoItem('Layer Abstract', wmcLayer.getAbstract())); 
     60         
     61        this._clearInfo(); 
     62        this._container.appendChild(div); 
    8663    }, 
    8764 
    88     _clearForm: function () { 
    89          
    90         // remove the event handler before deleting the element 
    91         if (this._styleSelect !== null && this._selectHandler !== null) { 
    92             Utils.removeHTMLEventListener(this._styleSelect, 'change', this._selectHandler); 
    93         } 
    94          
    95         // remove the get figure event handler 
    96         if (this._getFigureButton !== null && this._getFigureHandler !== null) { 
    97             Utils.removeHTMLEventListener(this._getFigureButton, 'click', this._getFigureHandler); 
    98         } 
    99          
    100         this._form.innerHTML = ""; 
    101          
    102         this._styleSelect = null; 
    103         this._selectHandler = null; 
    104         this._getFigureButton = null; 
    105         this._getFigureHandler = null; 
    106         this._hiddenInputContainer = null; 
     65    _clearInfo: function () { 
     66        this._container.innerHTML = ""; 
    10767    }, 
    10868     
     
    12383        return Utils.buildLabelInputDiv(name, span, 'layerInfoItem'); 
    12484         
    125     }, 
    126      
    127     _buildGetFigureButton: function (wmc) { 
    128         var i; 
    129         var div = document.createElement('div'); 
    130          
    131         var req = wmc.getRequest('GetFigure'); 
    132          
    133         var formatDescriptions = []; 
    134         var formatValues = []; 
    135         var formatList = req.formats; 
    136          
    137         for (i = 0; i < formatList.length; i++) { 
    138          
    139             formatValues.push(formatList[i]); 
    140              
    141             if (formatList[i] === 'image/svg+xml') { 
    142                 formatDescriptions.push('SVG'); 
    143             } 
    144             else if (formatList[i].indexOf('image/') === 0) { 
    145                 formatDescriptions.push(formatList[i].slice(6, formatList[i].length).toUpperCase()); 
    146             } 
    147             else if (formatList[i] === 'application/postscript') { 
    148                 formatDescriptions.push('PS'); 
    149             } 
    150             else if (formatList[i] === 'application/pdf') { 
    151                 formatDescriptions.push('PDF'); 
    152             }             
    153             else { 
    154                 formatDescriptions.push(formatList[i]); 
    155             } 
    156         } 
    157          
    158         var inputs = Utils.buildSelect(null, 'format', formatDescriptions, formatValues); 
    159          
    160         div.appendChild(inputs); 
    161          
    162         this._getFigureButton = document.createElement('input'); 
    163         this._getFigureButton.type = 'button'; 
    164         this._getFigureButton.value = "Get Figure"; 
    165          
    166         this._getFigureHandler = Utils.addHTMLEventListener(this._getFigureButton,  
    167                                      'click', this._onGetFigureClick, this); 
    168          
    169         div.appendChild(this._getFigureButton); 
    170         return div; 
    171     }, 
    172      
    173     _onGetFigureClick: function (e) { 
    174         WMSC.log("_onGetFigureClick running"); 
    175         this._addHiddenInputItems(); 
    176          
    177         this._form.action = this.currentOLLayer.url;  
    178         this._form.method = "get";  
    179         this._form.target = "_blank"; 
    180         this._form.submit(); 
    181     }, 
    182      
    183     _addHiddenInputItems: function () { 
    184          
    185         // clear any old hidden inputs 
    186         this._hiddenInputContainer.innerHTML = ""; 
    187          
    188         for (var p in this.currentOLLayer.params) { 
    189             if (p.toUpperCase() === 'REQUEST') { 
    190                 this._hiddenInputContainer.appendChild(Utils.buildHiddenInputElement('REQUEST', 'GetFigure')); 
    191             } 
    192             else if (p.toUpperCase() === 'FORMAT') { 
    193                 //ignore the format parameter 
    194             } 
    195             else { 
    196                 this._hiddenInputContainer.appendChild(Utils.buildHiddenInputElement(p, this.currentOLLayer.params[p])); 
    197             } 
    198         } 
    199          
    200         var bboxString = this._currentSelection.left + "," + this._currentSelection.bottom + "," + this._currentSelection.right + "," + this._currentSelection.top; 
    201          
    202         this._hiddenInputContainer.appendChild(Utils.buildHiddenInputElement('BBOX', bboxString)); 
    203         this._hiddenInputContainer.appendChild(Utils.buildHiddenInputElement('WIDTH', '1200')); 
    204         this._hiddenInputContainer.appendChild(Utils.buildHiddenInputElement('HEIGHT', '900')); 
    205     }, 
    206     
    207     addMapSelectionChangedHandlers: function (events) { 
    208         events.register('MAP_SELECTION_CHANGED', this, this.onChangeSelection); 
    209     }, 
    210      
    211     onChangeSelection: function (e) { 
    212         this._currentSelection = e.selection; 
    21385    } 
    21486     
  • cowsclient/trunk/cowsclient/public/js/layerParameters.js

    r5979 r5993  
    2828    this.wmcRetriever = wmcRetriever; 
    2929     
    30     this.layerInfo = new LayerInfo('layer_info_form', this.eventsManager); 
     30    this.layerInfo = new LayerInfo('layer_info_container', this.eventsManager); 
    3131    this.layerDims = new LayerDimensions('WMSC_dimForm', this.eventsManager); 
    3232    this.layerDisplay = new LayerDisplayOpts(selectionFormId, hideDisplayOptions, this.eventsManager); 
  • cowsclient/trunk/cowsclient/public/js/utils.js

    r5759 r5993  
    533533    return matchingChildren; 
    534534}; 
     535 
     536Utils.getDateString = function () { 
     537 
     538    var d = new Date(); 
     539     
     540    // based on the code from the json2 file 
     541    // http://www.json.org/json2.js 
     542     
     543    function f(n) { 
     544      return n < 10 ? '0' + n : n; 
     545    } 
     546     
     547    return d.getUTCFullYear()   + '-' + 
     548         f(d.getUTCMonth() + 1) + '-' + 
     549         f(d.getUTCDate())      + 'T' + 
     550         f(d.getUTCHours())     + ':' + 
     551         f(d.getUTCMinutes())   + ':' + 
     552         f(d.getUTCSeconds())   + 'Z'; 
     553}; 
     554 
     555Utils.getTimeString = function () { 
     556 
     557    var d = new Date(); 
     558     
     559    // based on the code from the json2 file 
     560    // http://www.json.org/json2.js 
     561     
     562    function f(n) { 
     563      return n < 10 ? '0' + n : n; 
     564    } 
     565     
     566    return f(d.getUTCHours())     + ':' + 
     567         f(d.getUTCMinutes())   + ':' + 
     568         f(d.getUTCSeconds())   + '.' + 
     569         d.getMilliseconds(); 
     570     
     571}; 
  • cowsclient/trunk/cowsclient/public/js/wcs.js

    r5842 r5993  
    22WCSDownloadControl = function (downloadDivId, initailBounds, eventsManager) { 
    33     
    4     this.downloadButton = this.createDownloadButton() 
     4    this.downloadButton = this.createDownloadButton(); 
    55    this.eventsManager = eventsManager; 
    66    this.downloadDiv = document.getElementById(downloadDivId); 
  • cowsclient/trunk/cowsclient/templates/wmsviz.html

    r5974 r5993  
    119119<link rel="stylesheet" type="text/css" href="$g.server/layout/yui_autocomplete.css" /> 
    120120 
     121<script type="text/javascript" src="$g.server/js/layerFigureDownload.js"></script> 
    121122<script type="text/javascript" src="$g.server/js/layerInformation.js"></script> 
    122123<script type="text/javascript" src="$g.server/js/layerDisplayOptions.js"></script> 
     
    166167        var initialBounds = new OpenLayers.Bounds(-180,-90,180,90); 
    167168 
     169 
     170    var makeFigureURL = "$g.server/wmsviz/get_figure"; 
     171     
    168172    var allEvents = []; 
    169173 
     
    184188    var legendContainer = new LegendContainer('legend', eventsManager); 
    185189    var downloadControl = new WCSDownloadControl('wcsdownloadDiv', initialBounds, eventsManager); 
    186     var figBuilder = new FigureBuilder('figureForm','make_figure_btn', initialBounds, eventsManager); 
     190    var figDownload = new LayerFigureDownload('get_figure_container', eventsManager); 
     191     
     192    var figBuilder = new FigureBuilder('composite_figure_container', makeFigureURL, initialBounds, eventsManager)  
     193        //new FigureBuilder('figureForm','make_figure_btn', initialBounds, eventsManager); 
    187194    var outlineControl = new OutlineControl('add_outline', eventsManager, initialStatus.OutlineSettings); 
    188195    var boundsControl = new WMSC.BoundsControl('dims', initialBounds, eventsManager); 
     
    281288                <b>Generate Figure</b>  
    282289            <br /> 
    283                     <form id="figureForm" action="$g.server/wmsviz/get_figure" method="get"> 
    284                       <!--  <b>Plot type</b><br/> 
    285                       <input type="radio" name="figType" value="colour" checked="1"/>Colour<br/> 
    286                       <input type="radio" name="figType" value="bw"/>B/W Contour<br/> --> 
    287               <div> 
    288                       <select name="figFormat"> 
    289                         <option value="image/png" selected="1"> PNG </option> 
    290                         <option value="image/jpeg"> JPEG </option> 
    291                         <option value="image/gif"> GIF </option> 
    292                         <option value="application/postscript"> EPS </option> 
    293                         <option value="image/svg+xml"> SVG </option> 
    294                       </select> 
    295                       <input type="button" value="Make Figure" id="make_figure_btn"/> 
    296               </div> 
    297                     </form> 
     290                    <div id="composite_figure_container" > </div> 
    298291                     
    299292            </div> 
     
    384377                                           <div id="legend"></div>  
    385378                     
    386                             <div id="layer_info_container"> 
    387                                        <form id='layer_info_form'> 
    388                                        </form> 
    389                                     </div> 
    390          
    391                             <div id="layer_display_options_container">       
    392                                                     <form id='selection_form'> 
    393                                                     </form> 
    394                                             </div> 
     379                        <fieldset> 
     380                            <legend>Layer Info</legend> 
     381                               <div id="layer_info_container"></div> 
     382                            <div id="get_figure_container"></div> 
     383                        </fieldset> 
     384        
     385                        <fieldset> 
     386                            <legend>Display Options</legend> 
     387         
     388                            <div id="layer_display_options_container">       
     389                                                    <form id='selection_form'> 
     390                                                    </form> 
     391                                            </div> 
     392                        </fieldset> 
    395393                                             
    396                                             <div id="layer_dimensions_container"> 
    397                                                     <form id="WMSC_dimForm"> 
    398                                                     </form> 
    399                                             </div> 
     394                        <fieldset> 
     395                            <legend>Dimensions</legend> 
     396                                            <div id="layer_dimensions_container"> 
     397                                                    <form id="WMSC_dimForm"> 
     398                                                    </form> 
     399                                            </div> 
     400                        </fieldset> 
    400401                                             
    401402                     
Note: See TracChangeset for help on using the changeset viewer.