Mercurial > lada > lada-client
comparison app/controller/Filter.js @ 1007:23bfcbdb4527
merged.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 20 Jan 2016 17:33:33 +0100 |
parents | 092e245b13a4 0a5fe163f1c8 |
children | 9651def05ae6 |
comparison
equal
deleted
inserted
replaced
1002:54179b6043b6 | 1007:23bfcbdb4527 |
---|---|
54 }, | 54 }, |
55 | 55 |
56 /** | 56 /** |
57 * Function called when the user selects a SQL query in the dropdownlist. | 57 * Function called when the user selects a SQL query in the dropdownlist. |
58 * The function will hide/display additional element related to the | 58 * The function will hide/display additional element related to the |
59 * selected search query | 59 * selected search query. |
60 * It also replaces the Store of the Filteresultgrid. | |
61 * Two possibilities exist to do so: Proben/Messprogramme where dynamic columns exist, but the | |
62 * content remains of the same type and Stammdaten, were columns are fixed but the type might | |
63 * vary between orte, kategorien, ... | |
60 */ | 64 */ |
61 selectSql: function(element, record) { | 65 selectSql: function(element, record) { |
62 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); | 66 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); |
63 var columns = element.up('fieldset').down('displayfield[name=columns]'); | 67 |
68 // Set "Filter Auswahl" Description | |
64 var desc = element.up('fieldset').down('displayfield[name=description]'); | 69 var desc = element.up('fieldset').down('displayfield[name=description]'); |
70 desc.setValue(record[0].data.description); | |
71 | |
65 this.displayFields = record[0].data.results; | 72 this.displayFields = record[0].data.results; |
66 var filterFields = record[0].data.filters; | 73 var filterFields = record[0].data.filters; |
74 var contentPanel = element.up('panel[name=main]').down('panel[name=contentpanel]'); | |
75 var queryType = record[0].get('type'); //The type of the query, might be proben, messprogramme, | |
76 // or a stammdatendtype | |
67 | 77 |
68 this.reset(element); | 78 this.reset(element); |
69 | 79 |
80 contentPanel.removeAll(); //clear the panel: make space for new grids | |
81 | |
82 // Set "Filter Auswahl" Columns | |
83 var columns = element.up('fieldset').down('displayfield[name=columns]'); | |
70 var columnString = []; | 84 var columnString = []; |
71 for (var i = 0; i < this.displayFields.length; i++) { | 85 for (var i = 0; i < this.displayFields.length; i++) { |
72 columnString.push(this.displayFields[i].header); | 86 columnString.push(this.displayFields[i].header); |
73 } | 87 } |
74 columns.setValue(columnString.join(', ')); | 88 columns.setValue(columnString.join(', ')); |
75 desc.setValue(record[0].data.description); | 89 |
76 | 90 // Setup Columns |
77 // Setup Columns of the probenlist | 91 if (this.displayFields) { |
78 this.displayFields.reverse(); | 92 this.displayFields.reverse(); |
79 | 93 } |
80 /* Setup Filters of the probenlist | 94 |
95 if (queryType == 'probe' || queryType == 'messprogramm') { | |
96 // Dynamic Grids | |
97 // We need to set both grid and Store. | |
98 var frgrid; // The Resultgrid | |
99 var gridstore; // The Store which will be used in the resultgrid. | |
100 | |
101 switch (queryType) { | |
102 case 'probe': | |
103 gridstore = Ext.create('Lada.store.ProbenList'); | |
104 frgrid = Ext.create('Lada.view.grid.ProbeList'); | |
105 break; | |
106 case 'messprogramm': | |
107 gridstore = Ext.create('Lada.store.MessprogrammeList'); | |
108 frgrid = Ext.create('Lada.view.grid.MessprogrammeList'); | |
109 break; | |
110 } | |
111 | |
112 if (gridstore) { | |
113 frgrid.setStore(gridstore); | |
114 } | |
115 | |
116 contentPanel.add(frgrid); | |
117 } | |
118 else { | |
119 // Grids which are not build with dynamic columns | |
120 // The store is configured in each grid, hence we only need to set the | |
121 // grid | |
122 var resultGrid; | |
123 switch (queryType) { | |
124 case 'messprogrammkategorie': | |
125 resultGrid = Ext.create('Lada.view.grid.MessprogrammKategorie'); | |
126 break; | |
127 case 'datensatzerzeuger': | |
128 resultGrid = Ext.create('Lada.view.grid.DatensatzErzeuger'); | |
129 break; | |
130 case 'ort': | |
131 resultGrid = Ext.create('Lada.view.grid.Ort'); | |
132 break; | |
133 case 'probenehmer': | |
134 resultGrid = Ext.create('Lada.view.grid.Probenehmer'); | |
135 break; | |
136 } | |
137 if (resultGrid) { | |
138 contentPanel.add(resultGrid); | |
139 } | |
140 } | |
141 /* Setup Filters | |
81 * | 142 * |
82 * Allowed types are | 143 * Allowed types are |
83 * * text | 144 * * text |
84 * * number | 145 * * number |
85 * * datetime | 146 * * datetime |
186 }, | 247 }, |
187 | 248 |
188 /** | 249 /** |
189 * Function is called when the user clicks the search button. The function | 250 * Function is called when the user clicks the search button. The function |
190 * will perform a search to the server on refreshes the result list. | 251 * will perform a search to the server on refreshes the result list. |
252 * To do so it replaces the store of the Resultgrids. | |
191 */ | 253 */ |
192 search: function(element) { | 254 search: function(element) { |
193 var resultGrid = element.up('panel[name=main]').down('filterresultgrid'); | 255 var resultGrid = element.up('panel[name=main]').down('panel[name=contentpanel]').down('grid'); |
194 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); | 256 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); |
195 var search = element.up('fieldset').down('combobox[name=filter]'); | 257 var search = element.up('fieldset').down('combobox[name=filter]'); |
258 | |
259 //Type of the search Proben/Messprogramme/Stammdaten | |
260 var type = search.store.getById(search.getValue()).get('type') | |
196 | 261 |
197 // Get search parameters: | 262 // Get search parameters: |
198 var searchParams = {}; | 263 var searchParams = {}; |
199 searchParams['qid'] = search.getValue(); | 264 searchParams['qid'] = search.getValue(); |
200 for (var i = filters.items.length - 1; i >= 0; i--) { | 265 for (var i = filters.items.length - 1; i >= 0; i--) { |
203 if (value instanceof Array) { | 268 if (value instanceof Array) { |
204 value = value.join(','); | 269 value = value.join(','); |
205 } | 270 } |
206 searchParams[filter.getName()] = value; | 271 searchParams[filter.getName()] = value; |
207 } | 272 } |
208 // Retrieve the mode | 273 |
209 var modes = element.up('panel[name=main]').down('radiogroup').getChecked(); | 274 //Store depends of the Type... |
210 var sname = modes[0].inputValue; | 275 // TODO the switchcasese should be unified withj those in SelectSql |
211 | 276 switch (type) { |
212 if (sname === 'ProbeList') { | 277 case 'probe': |
213 sname = 'Lada.store.ProbenList'; | 278 sname = 'Lada.store.ProbenList'; |
214 } | 279 break; |
215 else if (sname === 'MessprogrammList') { | 280 case 'messprogramm': |
216 sname = 'Lada.store.MessprogrammeList'; | 281 sname = 'Lada.store.MessprogrammeList'; |
282 break; | |
283 case 'messprogrammkategorie': | |
284 sname = 'Lada.store.MessprogrammKategorie'; | |
285 break; | |
286 case 'datensatzerzeuger': | |
287 sname = 'Lada.store.DatensatzErzeuger'; | |
288 break; | |
289 case 'ort': | |
290 sname = 'Lada.store.Ort'; | |
291 break; | |
292 case 'probenehmer': | |
293 sname = 'Lada.store.Probenehmer'; | |
294 break; | |
217 } | 295 } |
218 | 296 |
219 // Find the store or create a new one. | 297 // Find the store or create a new one. |
220 var store = Ext.StoreManager.lookup(sname); | 298 var store = Ext.StoreManager.lookup(sname); |
221 if (!store) { | 299 if (!store) { |
222 store = Ext.create(sname); | 300 store = Ext.create(sname); |
223 } | 301 } |
224 if (store) { | 302 if (store) { |
225 store.addListener('beforeload', this.loadingAnimationOn, resultGrid); | 303 store.addListener('beforeload', this.loadingAnimationOn, resultGrid); |
226 store.addListener('load', this.loadingAnimationOff, resultGrid); | 304 store.addListener('load', this.loadingAnimationOff, resultGrid); |
305 | |
227 resultGrid.setStore(store); | 306 resultGrid.setStore(store); |
228 resultGrid.setupColumns(this.displayFields); | 307 //TODO: Check if this is still necessary, as a Grid exists |
308 // for each Type. | |
309 | |
310 if (resultGrid.isDynamic) { | |
311 //only the dynamic resultgrid can and needs to do the following: | |
312 resultGrid.setupColumns(this.displayFields); | |
313 } | |
314 | |
229 resultGrid.getStore().proxy.extraParams = searchParams; | 315 resultGrid.getStore().proxy.extraParams = searchParams; |
230 resultGrid.getStore().load(); | 316 resultGrid.getStore().load(); |
231 resultGrid.show(); | 317 resultGrid.show(); |
232 } | 318 } |
233 }, | 319 }, |