Mercurial > lada > lada-client
comparison app/controller/Filter.js @ 548:d47ee7439f44
Added new js files.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 06 Mar 2015 12:43:52 +0100 |
parents | |
children | 54dbb6c44ca6 |
comparison
equal
deleted
inserted
replaced
547:f172b35a3b92 | 548:d47ee7439f44 |
---|---|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz | |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU GPL (v>=3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out | |
6 * the documentation coming with IMIS-Labordaten-Application for details. | |
7 */ | |
8 | |
9 /** | |
10 * Controller for the Filter | |
11 * This controller handles all logic related to the filter | |
12 */ | |
13 Ext.define('Lada.controller.Filter', { | |
14 extend: 'Ext.app.Controller', | |
15 | |
16 requires: [ | |
17 'Lada.view.widget.Messstelle', | |
18 'Lada.view.widget.Umwelt' | |
19 ], | |
20 | |
21 stores: [ | |
22 'ProbenList', // List of found Proben | |
23 'Queries' | |
24 ], | |
25 | |
26 init: function() { | |
27 this.control({ | |
28 // CSS like selector to select element in the viewport. See | |
29 // ComponentQuery documentation for more details. | |
30 'combobox[name=filter]': { | |
31 // Map Doubleclick on rows of the probenlist. | |
32 select: this.selectSql | |
33 }, | |
34 'button[action=search]': { | |
35 // Map click event on Button. | |
36 click: this.search | |
37 }, | |
38 'button[action=reset]': { | |
39 // Map click event on Button. | |
40 click: this.reset | |
41 }, | |
42 'menuitem[action=about]': { | |
43 // Map click event on Button. | |
44 click: this.about | |
45 } | |
46 }); | |
47 this.callParent(arguments); | |
48 }, | |
49 | |
50 /** | |
51 * Function called when the user selects a SQL query in the dropdownlist. | |
52 * The function will hide/display additional element related to the | |
53 * selected search query | |
54 */ | |
55 selectSql: function(element, record) { | |
56 var resultGrid = element.up('panel[name=main]').down('filterresultgrid'); | |
57 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); | |
58 var columns = element.up('fieldset').down('displayfield[name=columns]'); | |
59 var desc = element.up('fieldset').down('displayfield[name=description]'); | |
60 var displayFields = record[0].data.results; | |
61 var filterFields = record[0].data.filters; | |
62 | |
63 this.reset(); | |
64 | |
65 var columnString = []; | |
66 for (var i = 0; i < displayFields.length; i++) { | |
67 columnString.push(displayFields[i].header); | |
68 } | |
69 columns.setValue(columnString.join(', ')); | |
70 desc.setValue(record[0].data.description); | |
71 | |
72 // Setup Columns of the probenlist | |
73 displayFields.reverse(); | |
74 resultGrid.setupColumns(displayFields); | |
75 | |
76 // Setup Filters of the probenlist | |
77 // | |
78 // Allowed types are | |
79 // * text | |
80 // * number | |
81 // * datetime | |
82 // * bool | |
83 // * listmst | |
84 // * listumw | |
85 // * listver | |
86 // * listdbasis | |
87 // * listnetz | |
88 // | |
89 // Iterate over all configured filters and add filters dynamically | |
90 // | |
91 // 1. Empty filters | |
92 filters.removeAll(); | |
93 var hide = true; | |
94 // 2. Iterate over all configured filters | |
95 var j; | |
96 for (j = 0; j < filterFields.length; j++) { | |
97 var type = filterFields[j].type; | |
98 var name = filterFields[j].dataIndex; | |
99 var label = filterFields[j].label; | |
100 var multi = filterFields[j].multiSelect; | |
101 var field = null; | |
102 if (type === 'text') { | |
103 field = Ext.create('Ext.form.field.Text', { | |
104 name: name, | |
105 fieldLabel: label | |
106 }); | |
107 } | |
108 else if (type === 'number') { | |
109 field = Ext.create('Ext.form.field.Number', { | |
110 name: name, | |
111 labelWidth: 135, | |
112 fieldLabel: label | |
113 }); | |
114 } | |
115 else if (type === 'datetime') { | |
116 field = Ext.create('Lada.view.widgets.Datetime', { | |
117 name: name, | |
118 labelWidth: 135, | |
119 fieldLabel: label | |
120 }); | |
121 } | |
122 else if (type === 'bool') { | |
123 field = Ext.create('Lada.view.widgets.Testdatensatz', { | |
124 name: name, | |
125 labelWidth: 135, | |
126 fieldLabel: label, | |
127 emptyText: '' | |
128 }); | |
129 } | |
130 else if (type === 'listmst') { | |
131 field = Ext.create('Lada.view.widgets.Messstelle', { | |
132 name: name, | |
133 labelWidth: 135, | |
134 fieldLabel: label, | |
135 multiSelect: multi | |
136 }); | |
137 } | |
138 else if (type === 'listumw') { | |
139 field = Ext.create('Lada.view.widgets.Umwelt', { | |
140 name: name, | |
141 labelWidth: 135, | |
142 fieldLabel: label, | |
143 multiSelect: multi | |
144 }); | |
145 } | |
146 else if (type === 'listdbasis') { | |
147 field = Ext.create('Lada.view.widgets.Datenbasis', { | |
148 name: name, | |
149 labelWidth: 135, | |
150 fieldLabel: label, | |
151 multiSelect: multi | |
152 }); | |
153 } | |
154 else if (type === 'listver') { | |
155 field = Ext.create('Lada.view.widgets.Verwaltungseinheit', { | |
156 name: name, | |
157 labelWidth: 135, | |
158 fieldLabel: label, | |
159 multiSelect: multi | |
160 }); | |
161 } | |
162 else if (type === 'listnetz') { | |
163 field = Ext.create('Lada.view.widgets.Netzbetreiber', { | |
164 name: name, | |
165 labelWidth: 135, | |
166 fieldLabel: label, | |
167 multiSelect: multi | |
168 }); | |
169 } | |
170 if (field) { | |
171 filters.add(field); | |
172 filters.show(); | |
173 hide = false; | |
174 } | |
175 } | |
176 if (hide) { | |
177 filters.hide(); | |
178 } | |
179 }, | |
180 | |
181 /** | |
182 * Function is called when the user clicks the search button. The function | |
183 * will perform a search to the server on refreshes the result list. | |
184 */ | |
185 search: function(element) { | |
186 var resultGrid = element.up('panel[name=main]').down('filterresultgrid'); | |
187 var filters = element.up('panel[name=main]').down('fieldset[name=filtervariables]'); | |
188 var search = element.up('fieldset').down('combobox[name=filter]'); | |
189 | |
190 // Get search parameters: | |
191 var searchParams = {}; | |
192 searchParams['qid'] = search.getValue(); | |
193 for (var i = filters.items.length - 1; i >= 0; i--) { | |
194 var filter = filters.items.items[i]; | |
195 var value = filter.getValue(); | |
196 if (value instanceof Array) { | |
197 value = value.join(','); | |
198 } | |
199 searchParams[filter.getName()] = value; | |
200 } | |
201 resultGrid.getStore().load({ | |
202 params: searchParams | |
203 }); | |
204 resultGrid.show(); | |
205 }, | |
206 | |
207 reset: function() { | |
208 // var buttons = Ext.getCmp('SearchBtnPanel'); | |
209 // var result = Ext.getCmp('result'); | |
210 // for (var i = 0; i < queries.length; ++i) { | |
211 // var toHide = Ext.getCmp(queries[i]); | |
212 // toHide.hide(); | |
213 // } | |
214 // result.hide(); | |
215 // buttons.hide(); | |
216 }, | |
217 | |
218 about: function() { | |
219 var info = this.getInfoStore(); | |
220 Ext.widget('about', { | |
221 info: info | |
222 }); | |
223 } | |
224 }); |