Changeset 2689


Ignore:
Timestamp:
03/09/10 11:46:50 (2 years ago)
Author:
erikroos
Message:

Improved list plugin:

  • Remove button per column now only removes filter(s) on that column
  • It is now possible to filter on empty values
  • Added filter option to Animal column
  • Added support for <=, <, >, >= operators (still int's only at this point)
Location:
molgenis4animaldb/handwritten/java/plugin/listplugin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • molgenis4animaldb/handwritten/java/plugin/listplugin/ListPlugin.ftl

    r2658 r2689  
    4141         
    4242        <tr> 
    43                 <td></td> 
     43                <td><div align="center"> 
     44                        <button type="submit" onclick="ColumnInQuestion.value='-1'; __action.value='noFilterColumn';"><img src="res/img/nofunnel.jpg" alt="disable filter" /></button> 
     45                </div></td> 
    4446                <#assign i = 0> 
    4547                <#list screen.featureList as fl> 
     
    4850                                        <input type="submit" value="-" class="minusbutton" onclick="ColumnInQuestion.value='${i}'; __action.value='remColumn';" /> 
    4951                                        &nbsp; 
    50                                         <button type="submit" onclick="ColumnInQuestion.value='${i}'; __action.value='noFilterColumn';"><img src="res/img/nofunnel.jpg" alt="no funnel" /></button> 
     52                                        <button type="submit" onclick="ColumnInQuestion.value='${i}'; __action.value='noFilterColumn';"><img src="res/img/nofunnel.jpg" alt="disable filter" /></button> 
    5153                                </div></td> 
    5254                        </#if> 
     
    7779         
    7880        <tr> 
    79                 <td></td> 
     81                <td><div align="center"> 
     82                        <select name="operator-1"> 
     83                                <option value="=">=</option> 
     84                                <option value="<">&lt;</option> 
     85                                <option value="<=">&lt;=</option> 
     86                                <option value=">">&gt;</option> 
     87                                <option value=">=">&gt;=</option> 
     88                        </select> 
     89                        &nbsp; 
     90                        <input type="text" name="filtertext-1" /> 
     91                        &nbsp; 
     92                        <button type="submit" onclick="ColumnInQuestion.value='-1'; __action.value='filterColumn';"><img src="res/img/funnel.jpg" alt="enable filter" /></button> 
     93                </div></td> 
    8094                <#assign i = 0> 
    8195                <#list screen.featureList as fl> 
    8296                        <#if screen.featureVisibilityList[i] == 1> 
    8397                                <td><div align="center"> 
    84                                         <select name="operator"> 
     98                                        <select name="operator${i}"> 
    8599                                                <option value="=">=</option> 
     100                                                <option value="<">&lt;</option> 
     101                                                <option value="<=">&lt;=</option> 
     102                                                <option value=">">&gt;</option> 
     103                                                <option value=">=">&gt;=</option> 
    86104                                        </select> 
    87105                                        &nbsp; 
    88106                                        <input type="text" name="filtertext${i}" /> 
    89107                                        &nbsp; 
    90                                         <button type="submit" onclick="ColumnInQuestion.value='${i}'; __action.value='filterColumn';"><img src="res/img/funnel.jpg" alt="funnel" /></button> 
     108                                        <button type="submit" onclick="ColumnInQuestion.value='${i}'; __action.value='filterColumn';"><img src="res/img/funnel.jpg" alt="enable filter" /></button> 
    91109                                </div></td> 
    92110                        </#if> 
     
    97115        </table> 
    98116</div> 
     117 
    99118<div> 
    100119        <select name="feature" id="feature" class="selectbox"> 
  • molgenis4animaldb/handwritten/java/plugin/listplugin/ListPlugin.java

    r2671 r2689  
    3333        private List<Integer> animalVisibilityList = new ArrayList<Integer>();; 
    3434        private ArrayList<ArrayList<String>> valueMatrix = new ArrayList<ArrayList<String>>(); 
     35        private ArrayList<ArrayList<Integer>> valueVisibilityMatrix = new ArrayList<ArrayList<Integer>>(); 
    3536        private boolean firstTime = true; 
    3637 
     
    141142                } 
    142143        } 
     144         
     145        private void recalculateAnimalVisibilityList() { 
     146                for (int i = 0; i < animalList.size(); i++) { 
     147                        int vis = 1; 
     148                        ArrayList<Integer> tmpList = valueVisibilityMatrix.get(i); 
     149                        for (int j = 0; j < featureList.size() + 1; j++) { 
     150                                if (tmpList.get(j) == 0) { 
     151                                        vis = 0; 
     152                                } 
     153                        } 
     154                        animalVisibilityList.set(i, vis); 
     155                } 
     156        } 
    143157 
    144158        public void handleRequest(Database db, Tuple request) { 
     
    158172                        if (action.equals("filterColumn")) { 
    159173                                int selectedFeatureId = request.getInt("ColumnInQuestion"); 
    160                                 //String operator = request.getString("operator"); 
     174                                String operatorsymbol = request.getString("operator" + selectedFeatureId); 
    161175                                String filtertext = request.getString("filtertext" + selectedFeatureId); 
     176                                if (filtertext == null) { 
     177                                        filtertext = ""; 
     178                                } 
    162179                                for (int i = 0; i < animalList.size(); i++) { 
    163                                         String currentValue = valueMatrix.get(i).get(selectedFeatureId); 
    164                                         if (!currentValue.equals(filtertext)) { // TO DO: allow other operators! 
    165                                                 animalVisibilityList.set(i, 0); 
     180                                        String currentValue; 
     181                                        if (selectedFeatureId == -1) { 
     182                                                currentValue = animalList.get(i).getName(); 
     183                                        } else { 
     184                                                currentValue = valueMatrix.get(i).get(selectedFeatureId); 
    166185                                        } 
    167                                 } 
     186                                        if (operatorsymbol.equals("=")) { 
     187                                                if (!currentValue.equals(filtertext)) { 
     188                                                        valueVisibilityMatrix.get(i).set(selectedFeatureId + 1, 0); 
     189                                                } 
     190                                        } else { 
     191                                                int currVal = Integer.parseInt(currentValue); 
     192                                                int filterVal = Integer.parseInt(filtertext); 
     193                                                if ((operatorsymbol.equals("<") && currVal >= filterVal) || 
     194                                                        (operatorsymbol.equals("<=") && currVal > filterVal) || 
     195                                                        (operatorsymbol.equals(">") && currVal <= filterVal) || 
     196                                                        (operatorsymbol.equals(">=") && currVal < filterVal) 
     197                                                ) { 
     198                                                        valueVisibilityMatrix.get(i).set(selectedFeatureId + 1, 0); 
     199                                                } 
     200                                        } 
     201                                } 
     202                                recalculateAnimalVisibilityList(); 
    168203                        } 
    169204                         
    170205                        if (action.equals("noFilterColumn")) { 
    171                                 //int selectedFeatureId = request.getInt("ColumnInQuestion"); 
    172                                 // TO DO: remove only rows filtered out by filter on this column 
     206                                int selectedFeatureId = request.getInt("ColumnInQuestion"); 
    173207                                for (int i = 0; i < animalList.size(); i++) { 
    174                                         animalVisibilityList.set(i, 1); 
    175                                 } 
     208                                        valueVisibilityMatrix.get(i).set(selectedFeatureId + 1, 1); 
     209                                } 
     210                                recalculateAnimalVisibilityList(); 
    176211                        } 
    177212                         
     
    214249                                e.printStackTrace(); 
    215250                        } 
    216                          
    217                         // Initialize animal visibility list 
    218                         animalVisibilityList.clear(); 
    219                         for (int i = 0; i < animalList.size(); i++) { 
    220                                 animalVisibilityList.add(1); 
    221                         } 
    222251         
    223252                        // Populate feature list 
     
    229258                        } 
    230259                         
     260                        // Initialize animal visibility list 
     261                        animalVisibilityList.clear(); 
     262                        for (int i = 0; i < animalList.size(); i++) { 
     263                                animalVisibilityList.add(1); 
     264                        } 
     265                         
     266                        // Clean value visibility matrix 
     267                        valueVisibilityMatrix.clear(); 
     268                        for (int i = 0; i < animalList.size(); i++) { 
     269                                ArrayList<Integer> lineToAdd = new ArrayList<Integer>(); 
     270                                for (int j = 0; j < featureList.size() + 1; j++) { 
     271                                        lineToAdd.add(1); 
     272                                } 
     273                                valueVisibilityMatrix.add(lineToAdd); 
     274                        } 
     275                         
    231276                        // Clean feature visibility list 
    232277                        featureVisibilityList.clear(); 
Note: See TracChangeset for help on using the changeset viewer.