Mercurial > lada > lada-client
comparison app/controller/Filter.js @ 975:fb99332bb48e stammdatengrids
Severe changes concerning the Resultgrids.
- Intrduced "Stammdaten" which can be selected in the Mode Field on the left side,
- Added Stores and Models for the Stammdaten
- Removed the FilterResultgrid and replaced it with a model which uses inheritance.
Dynamic Grid Columns can now be derived from app/view/widget/DynamicGrid.js
For Proben and Messprogramme this is already done.
- There might be some REGRESSION concerning the buttons in the ProbeList and
MessprogrammeList grid, as those are not disabled properly.
This needs to be fixed in future commits.
author | Dustin Demuth <dustin@intevation.de> |
---|---|
date | Wed, 02 Dec 2015 17:39:04 +0100 |
parents | 96e04c258b8f |
children | 3c770fc7cf19 |
comparison
equal
deleted
inserted
replaced
974:ea477f62a667 | 975:fb99332bb48e |
---|---|
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 var columns = element.up('fieldset').down('displayfield[name=columns]'); |
64 var desc = element.up('fieldset').down('displayfield[name=description]'); | 68 var desc = element.up('fieldset').down('displayfield[name=description]'); |
65 this.displayFields = record[0].data.results; | 69 this.displayFields = record[0].data.results; |
66 var filterFields = record[0].data.filters; | 70 var filterFields = record[0].data.filters; |
71 var contentPanel = element.up('panel[name=main]').down('panel[name=contentpanel]'); | |
72 var queryType = record[0].get('type'); //The type of the query, might be proben, messprogramme, | |
73 // or a stammdatendtype | |
67 | 74 |
68 this.reset(element); | 75 this.reset(element); |
69 | 76 |
70 var columnString = []; | 77 contentPanel.removeAll(); |
71 for (var i = 0; i < this.displayFields.length; i++) { | 78 |
72 columnString.push(this.displayFields[i].header); | 79 /// THIS IS INTERMEDIARY CODE AND CAN BE REMOVED WHEN TYPES ARE SENT FOR PROBEN AND MESSPROGRAMME |
73 } | 80 console.log('remove this intermediary code...'); |
74 columns.setValue(columnString.join(', ')); | 81 var modes = element.up('panel[name=main]').down('radiogroup').getChecked(); |
75 desc.setValue(record[0].data.description); | 82 queryType = (queryType) ? queryType : modes[0].inputValue; |
76 | 83 /// END OF INTERMEDIARY CODE |
77 // Setup Columns of the probenlist | 84 |
78 this.displayFields.reverse(); | 85 |
79 | 86 if (queryType == 'proben' || queryType == 'messprogramme') { |
80 /* Setup Filters of the probenlist | 87 var frgrid; // The Resultgrid |
88 var gridstore; // The Store which will be used in the resultgrid. | |
89 | |
90 switch (queryType) { | |
91 case 'proben': | |
92 gridstore = Ext.create('Lada.store.ProbenList'); | |
93 frgrid = Ext.create('Lada.view.grid.ProbeList'); | |
94 break; | |
95 case 'messprogramme': | |
96 gridstore = Ext.create('Lada.store.MessprogrammeList'); | |
97 frgrid = Ext.create('Lada.view.grid.MessprogrammeList'); | |
98 break; | |
99 } | |
100 | |
101 var columnString = []; | |
102 for (var i = 0; i < this.displayFields.length; i++) { | |
103 columnString.push(this.displayFields[i].header); | |
104 } | |
105 columns.setValue(columnString.join(', ')); | |
106 desc.setValue(record[0].data.description); | |
107 | |
108 // Setup Columns | |
109 if (this.displayFields) { | |
110 this.displayFields.reverse(); | |
111 } | |
112 | |
113 if (gridstore) { | |
114 frgrid.setStore(gridstore); | |
115 } | |
116 | |
117 contentPanel.add(frgrid); | |
118 } | |
119 else { | |
120 // Grids which are not build with dynamic columns | |
121 var resultGrid; | |
122 switch (queryType) { | |
123 case 'MessprogrammKategorie': | |
124 resultGrid = Ext.create('Lada.view.grid.MessprogrammKategorie'); | |
125 break; | |
126 case 'DatensatzErzeuger': | |
127 resultGrid = Ext.create('Lada.view.grid.DatensatzErzeuger'); | |
128 break; | |
129 } | |
130 if (resultGrid) { | |
131 contentPanel.add(resultGrid); | |
132 } | |
133 } | |
134 /* Setup Filters | |
81 * | 135 * |
82 * Allowed types are | 136 * Allowed types are |
83 * * text | 137 * * text |
84 * * number | 138 * * number |
85 * * datetime | 139 * * datetime |
186 }, | 240 }, |
187 | 241 |
188 /** | 242 /** |
189 * Function is called when the user clicks the search button. The function | 243 * 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. | 244 * will perform a search to the server on refreshes the result list. |
245 * To do so it replaces the store of the Resultgrids. | |
191 */ | 246 */ |
192 search: function(element) { | 247 search: function(element) { |
193 var resultGrid = element.up('panel[name=main]').down('filterresultgrid'); | 248 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]'); | 249 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); |
195 var search = element.up('fieldset').down('combobox[name=filter]'); | 250 var search = element.up('fieldset').down('combobox[name=filter]'); |
251 | |
252 //Type of the search Proben/Messprogramme/Stammdaten | |
253 var type = search.store.getById(search.getValue()).get('type') | |
196 | 254 |
197 // Get search parameters: | 255 // Get search parameters: |
198 var searchParams = {}; | 256 var searchParams = {}; |
199 searchParams['qid'] = search.getValue(); | 257 searchParams['qid'] = search.getValue(); |
200 for (var i = filters.items.length - 1; i >= 0; i--) { | 258 for (var i = filters.items.length - 1; i >= 0; i--) { |
207 } | 265 } |
208 // Retrieve the mode | 266 // Retrieve the mode |
209 var modes = element.up('panel[name=main]').down('radiogroup').getChecked(); | 267 var modes = element.up('panel[name=main]').down('radiogroup').getChecked(); |
210 var sname = modes[0].inputValue; | 268 var sname = modes[0].inputValue; |
211 | 269 |
212 if (sname === 'ProbeList') { | 270 // Todo: Migragte away from sname, use type instead |
271 if (sname === 'proben') { | |
213 sname = 'Lada.store.ProbenList'; | 272 sname = 'Lada.store.ProbenList'; |
214 } | 273 } |
215 else if (sname === 'MessprogrammList') { | 274 else if (sname === 'messprogramme') { |
216 sname = 'Lada.store.MessprogrammeList'; | 275 sname = 'Lada.store.MessprogrammeList'; |
276 } | |
277 else if (sname === 'stammdaten') { | |
278 //Store depends of the Type... | |
279 // TODO the switchcasese should be unified | |
280 switch (type) { | |
281 case 'MessprogrammKategorie': | |
282 sname = 'Lada.store.MessprogrammKategorie'; | |
283 break; | |
284 case 'DatensatzErzeuger': | |
285 sname = 'Lada.store.DatensatzErzeuger'; | |
286 break; | |
287 } | |
217 } | 288 } |
218 | 289 |
219 // Find the store or create a new one. | 290 // Find the store or create a new one. |
220 var store = Ext.StoreManager.lookup(sname); | 291 var store = Ext.StoreManager.lookup(sname); |
221 if (!store) { | 292 if (!store) { |
222 store = Ext.create(sname); | 293 store = Ext.create(sname); |
223 } | 294 } |
295 console.log(store); | |
224 if (store) { | 296 if (store) { |
225 store.addListener('beforeload', this.loadingAnimationOn, resultGrid); | 297 store.addListener('beforeload', this.loadingAnimationOn, resultGrid); |
226 store.addListener('load', this.loadingAnimationOff, resultGrid); | 298 store.addListener('load', this.loadingAnimationOff, resultGrid); |
227 resultGrid.setStore(store); | 299 resultGrid.setStore(store); |
228 resultGrid.setupColumns(this.displayFields); | 300 resultGrid.setupColumns(this.displayFields); |