Changeset 6472


Ignore:
Timestamp:
03/02/10 08:43:09 (9 years ago)
Author:
pnorton
Message:

Added the ability to remove line selections. Also introduced some css + jquery to the buildplot page.

Location:
qesdi/graphplotter/trunk/graphplotter
Files:
8 added
5 edited

Legend:

Unmodified
Added
Removed
  • qesdi/graphplotter/trunk/graphplotter/controllers/buildplot.py

    r6464 r6472  
    4545        log.debug("dfConfig = %s" % (dfConfig,)) 
    4646         
     47        allVars = reader.getVariableNames() 
    4748         
    4849        # if there is a dataVariables section, only include the variables 
    4950        # in this section, all others are to be ignored. 
    5051        if 'dataVariables' in dfConfig: 
    51             allVars = reader.getVariableNames() 
    5252             
    5353            c.variables = [('','')] 
     
    7272        c.selectedVariable = params.get('variable', '') 
    7373         
    74         if c.selectedVariable != '': 
     74        if c.selectedVariable != '' and c.selectedVariable in allVars: 
    7575            log.debug("c.selectedVariable = %s" % (c.selectedVariable,)) 
    7676            self._addVariableSelection(params, reader) 
     
    109109            vals = reader.getAxisValues(c.selectedVariable, ax) 
    110110                         
    111             c.axisSelect[ax] = [''] + [str(x) for x in vals] 
     111            #c.axisSelect[ax] = [''] + [str(x) for x in vals] 
     112            c.axisSelect[ax] = [str(x) for x in vals] 
    112113             
    113114            units = reader.getAxisUnits(c.selectedVariable, ax) 
  • qesdi/graphplotter/trunk/graphplotter/lib/plot_builder.py

    r6464 r6472  
    169169        variableUnits = reader.getVariableUnits(self.params['variable']) 
    170170         
    171         if variableUnits in [None, '']: 
     171        if variableUnits in [None, '', ' ']: 
    172172            ylabel = self._getVariableName(reader) 
    173173        else: 
     
    179179        axisUnits = reader.getAxisUnits(self.params['variable'], self.params['axis']) 
    180180 
    181         if axisUnits  in [None, '']: 
     181        if axisUnits  in [None, '', ' ']: 
    182182            xlabel = self.params['axis']         
    183183        else: 
  • qesdi/graphplotter/trunk/graphplotter/public/js/axisSelection.js

    r6330 r6472  
    55/*globals */ 
    66 
    7 AxisSelection = function (name) { 
     7AxisSelection = function (id) { 
    88     
    9     this.name = name; 
     9    this.id = id; 
    1010    this.selection = {}; 
    1111     
  • qesdi/graphplotter/trunk/graphplotter/public/js/axisSelectionList.js

    r6330 r6472  
    1515    addSelection: function () { 
    1616         
     17        this._removeEmptyItem(); 
     18     
    1719        var sel = this._buildSelection(); 
    1820         
     21        this._addSelectionToList(sel); 
     22         
     23    }, 
     24     
     25    addSelectionForAllOptions: function (selectItem) { 
     26         
     27        this._removeEmptyItem(); 
     28         
     29        var baseSel = this._buildSelection(); 
     30         
     31        var inputElement = document.getElementById(selectItem); 
     32         
     33        var selName = selectItem.slice(4); 
     34        for (var i = 0; i < inputElement.options.length; i++) { 
     35             
     36            Utils.log("inputElement.options.length = " + inputElement.options.length) 
     37             
     38            var option = inputElement.options[i]; 
     39             
     40            if (option.value === "") { 
     41                continue; 
     42            } 
     43             
     44            var sel = this._makeNewSelection(); 
     45            for (var k in baseSel.selection) { 
     46                if (k === selName) { 
     47                    sel.addSelectedValue(selName, option.value); 
     48                } 
     49                else { 
     50                    sel.addSelectedValue(k, baseSel.selection[k]); 
     51                } 
     52            } 
     53             
     54             
     55            this._addSelectionToList(sel); 
     56      
     57             
     58        } 
     59         
     60        return 0; 
     61    }, 
     62     
     63    _addSelectionToList: function (sel) { 
    1964        var li = this._buildLIFromSelection(sel); 
    2065         
     66 
     67        var div = document.createElement('div'); 
     68        div.className = 'close_box'; 
     69        div.href = ''; 
     70         
     71        Utils.addEventListener(div, 'click', this._closeBoxClick, this) 
     72        li.appendChild(div); 
     73         
    2174        this.selectionList.appendChild(li); 
    22         this.selections.push(sel); 
     75        this.selections.push(sel);                
     76    }, 
     77     
     78    _closeBoxClick: function (e, target) { 
     79        this._removeListItem(target.parentNode); 
     80    }, 
     81     
     82    _removeListItem: function (listItem) { 
    2383         
     84        var selections = this.selections; 
     85        for (var i = 0; i < selections.length; i++) { 
     86            var sel = selections[i]; 
     87            if (sel.id == listItem.id) { 
     88                this.selections.splice(i,1); 
     89                break; 
     90            } 
     91        } 
    2492         
     93        listItem.parentNode.removeChild(listItem); 
    2594    }, 
    2695     
    2796    _buildSelection: function () { 
    2897     
    29         var name = "list_item_" + this.itemCount; 
    30         this.itemCount = this.itemCount + 1; 
     98        var sel = this._makeNewSelection(); 
    3199         
    32         var sel = new AxisSelection(name); 
    33100        var selectElements = this.inputContainer.getElementsByTagName('select'); 
    34         var inputElements = this.inputContainer.getElementsByTagName('input'); 
    35          
    36101         
    37102        for (var i = 0; i <  selectElements.length; i++) { 
     
    41106            sel.addSelectedValue(name, value); 
    42107        } 
    43      
    44         for (var i = 0; i <  inputElements.length; i++) { 
    45             var child = inputElements[i]; 
    46             var name = child.name.slice(4); 
    47             var value = child.value; 
    48             sel.addSelectedValue(name, value); 
    49         } 
    50          
     108             
    51109        return sel; 
    52110    }, 
     
    55113        var li = document.createElement('li'); 
    56114        li.innerHTML = sel.getDescription(); 
    57         li.setAttribute('name', sel.name); 
    58                  
     115        li.id = sel.id; 
     116         
    59117        return li; 
    60118    }, 
    61119     
     120//    selectItem: function (selectionId) { 
     121//         
     122//        this._unselectAll(); 
     123//         
     124//        var elt = document.getElementById(selectionId); 
     125//        elt.className = 'selected'; 
     126//         
     127//    }, 
     128//     
     129//    _unselectAll: function () { 
     130//         
     131//        for (var i = 0; i < this.selectionList.childNodes.length; i++) { 
     132//            var child = this.selectionList.childNodes[i]; 
     133//             
     134//            if (child.className === 'selected') { 
     135//                child.className = ''; 
     136//            } 
     137//        } 
     138//         
     139//    }, 
     140     
     141    _makeNewSelection: function() { 
     142        var id = "list_item_" + this.itemCount; 
     143        this.itemCount = this.itemCount + 1; 
     144        var sel = new AxisSelection(id);       
     145        return sel; 
     146    }, 
     147         
    62148    getSelectionItems: function (){ 
    63149        return this.selections; 
     150    }, 
     151     
     152    _removeEmptyItem: function() { 
     153         
     154        for (var i = 0; i < this.selectionList.childNodes.length; i++) { 
     155             
     156            var child = this.selectionList.childNodes[i]; 
     157             
     158            if (child.className === 'empty_item') { 
     159                this.selectionList.removeChild(child); 
     160            } 
     161             
     162        } 
     163       
    64164    } 
    65      
    66165 
    67166}; 
  • qesdi/graphplotter/trunk/graphplotter/templates/buildplot.html

    r6464 r6472  
    1212<title>buildplot</title> 
    1313 
     14<link type="text/css" rel="stylesheet" href="${h.url_for('/css/buildplot.css', qualified=True)}" /> 
     15 
     16<script src="${h.url_for('/js/jquery-1.4.1.js', qualified=True)}" type="text/javascript"></script> 
     17<script src="${h.url_for('/js/jquery.corner.js', qualified=True)}" type="text/javascript"></script> 
     18 
     19<script src="${h.url_for('/js/utils.js', qualified=True)}" type="text/javascript"></script> 
    1420<script src="${h.url_for('/js/axisSelection.js', qualified=True)}" type="text/javascript"></script> 
    1521<script src="${h.url_for('/js/axisSelectionList.js', qualified=True)}" type="text/javascript"></script> 
     
    1723 
    1824<script type="text/javascript"> 
     25 
     26// jquery rounding a few corners 
     27 
     28$(document).ready(function(){ 
     29    $("#page").corner(); 
     30    $("#data_selection_controls").corner(); 
     31    $("#line_selection_controls").corner(); 
     32}); 
    1933 
    2034var refreshAction = "${h.url_for(controller='buildplot')}"; 
     
    2741    selList = new AxisSelectionList('selection_list', 'selection_input_container'); 
    2842    reqBuilder = new PlotRequestBuilder('hidden_input_container'); 
    29      
    3043} 
    3144 
     
    5164} 
    5265 
     66function onSelectAll(control) { 
     67    selList.addSelectionForAllOptions(control); 
     68} 
     69 
    5370</script> 
    5471 
    5572<style type="text/css"> 
    5673 
    57  
    58 #selection_list { 
    59     width:400px; 
    60     border:1px solid black; 
    61 } 
     74    .close_box { 
     75        display: inline-block; 
     76        background: #ffffff url("${h.url_for('/images/close.gif')}") no-repeat center; 
     77        width:17px; 
     78        height:17px; 
     79        position:relative; 
     80        top:3px; 
     81        cursor:pointer;cursor:hand; 
     82        margin-left: 3px; 
     83    } 
    6284 
    6385</style> 
     
    6789<body onload="init();"> 
    6890     
    69     <form id='buildplot'> 
    70         <div> 
    71             Select Data File: 
    72             ${ h.select('datafile', c.selectedDataFile, c.dataFiles, onChange='onRefreshClick()')} 
     91    <div id="page"> 
     92     
     93        <div id="header">Graphplotter</div> 
     94         
     95        <div id="main"> 
     96            <form id='buildplot'> 
     97             
     98                <fieldset id="data_selection_controls"> 
     99                 
     100                    <legend>Data Selection</legend> 
     101                 
     102                    <div class="data_input_item"> 
     103                        <label for="datafile"> Select Data File </label> 
     104                        ${ h.select('datafile', c.selectedDataFile, c.dataFiles, onChange='onRefreshClick()')} 
     105                    </div> 
     106                     
     107                     <py:if test="c.selectedDataFile != ''"> 
     108                         
     109                     <div class="data_input_item"> 
     110                        <label for="variable"> Select Variable </label> 
     111                        ${ h.select('variable', c.selectedVariable, c.variables, onChange='onRefreshClick()')} 
     112                     </div> 
     113                      
     114                     </py:if> 
     115                      
     116                     <py:if test="c.selectedVariable != ''"> 
     117                         
     118                     <div class="data_input_item"> 
     119                        <label for="axis"> Select Plotting Axis </label> 
     120                        ${ h.select('axis', c.selectedAxis, c.axis, onChange='onRefreshClick()')} 
     121                     </div> 
     122                      
     123                     </py:if> 
     124                  
     125                </fieldset> 
     126                  
     127                 <py:if test="c.selectedAxis != ''"> 
     128                  
     129                 <fieldset id="line_selection_controls"> 
     130         
     131                    <legend>Line Selection</legend> 
     132                     
     133                    <div id='selection_input_container'> 
     134                     
     135                    <py:for each="axSelect in c.axisSelect.keys()"> 
     136                        <div class="axis_select_item"> 
     137                        <label for="${'sel_' + axSelect}">${axSelect}</label> 
     138                        ${h.select('sel_' + axSelect, getattr(c, 'sel_' + axSelect), c.axisSelect[axSelect])} 
     139                        ${c.axisSelectUnits.get(axSelect, '')} 
     140                        <input class="select_all_button" type="button" value="Select All" onClick="onSelectAll('${'sel_' + axSelect}')" /> 
     141                        </div> 
     142                        <br /> 
     143                    </py:for> 
     144                     
     145                    </div>                 
     146                  
     147                    <br /> 
     148                    <input type="button" value="Add Selection" onClick="onAddSelectionClick();"></input>          
     149                    <br /> 
     150                     
     151                    <div> 
     152                        Selections: 
     153                        <br /> 
     154                        <ul id="selection_list"> 
     155                            <li class="empty_item"> Empty </li> 
     156                        </ul> 
     157                         
     158                        <div id="hidden_input_container" style="display:none;"></div> 
     159                    </div> 
     160                  
     161                 </fieldset> 
     162                  
     163                 </py:if> 
     164                 
     165            </form> 
     166             
     167            <div id="page_buttons"> 
     168                <input type="button" value="Remove Selection" onClick=""></input> 
     169                <input type="button" value="Clear Selections" onClick="onRefreshClick();"></input> 
     170                <input type="button" value="Plot" onClick="onPlotClick();"></input> 
     171            </div> 
    73172        </div> 
    74173         
    75          <py:if test="c.selectedDataFile != ''"> 
    76              
    77          <div> 
    78             Select Variable: 
    79             ${ h.select('variable', c.selectedVariable, c.variables, onChange='onRefreshClick()')} 
    80          </div> 
    81           
    82          </py:if> 
    83           
    84          <py:if test="c.selectedVariable != ''"> 
    85              
    86          <div> 
    87             Select Plotting Axis: 
    88             ${ h.select('axis', c.selectedAxis, c.axis, onChange='onRefreshClick()')} 
    89          </div> 
    90           
    91          </py:if> 
    92           
    93           
    94          <py:if test="c.selectedAxis != ''"> 
    95          <br /> 
    96           
    97          <div> 
    98             Axis Selection: 
    99              
    100             <div id='selection_input_container'> 
    101              
    102             <py:for each="axSelect in c.axisSelect.keys()"> 
    103                 ${axSelect}: 
    104                 ${h.select('sel_' + axSelect, getattr(c, 'sel_' + axSelect), c.axisSelect[axSelect])} 
    105                 ${c.axisSelectUnits.get(axSelect, '')} 
    106                 <br /> 
    107             </py:for> 
    108              
    109             </div>                 
    110          </div> 
    111           
    112          <br /> 
    113          <input type="button" value="Add Selection" onClick="onAddSelectionClick();"></input>          
    114          <br /> 
    115           
    116          <div> 
    117             Selections: 
    118             <br /> 
    119             <ul id="selection_list"> 
    120             </ul> 
    121              
    122             <div id="hidden_input_container" style="hidden"> 
    123              
    124             </div> 
    125          </div> 
    126           
    127           
    128          </py:if> 
    129          
    130          
    131     </form> 
    132     <input type="button" value="Remove Selection" onClick=""></input> 
     174    </div> 
    133175     
    134     <input type="button" value="Clear Selections" onClick="onRefreshClick();"></input> 
    135     <input type="button" value="Plot" onClick="onPlotClick();"></input> 
    136176</body> 
    137177 
Note: See TracChangeset for help on using the changeset viewer.