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 });

http://lada.wald.intevation.org