Commit 93ba71679c91deef6cef2d6c339d5d96e48d354d
1 parent
e31934c0
filters bug fix + ln
Showing
6 changed files
with
941 additions
and
5 deletions
controllets/datalet-selection-controllet/datalet-selection-controllet.html
@@ -219,7 +219,7 @@ | @@ -219,7 +219,7 @@ | ||
219 | 219 | ||
220 | <!-- EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE --> | 220 | <!-- EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE --> |
221 | 221 | ||
222 | - <div id="expert_header" on-click="_showExpertMode"><span id="expert">GROUP BY</span></div> | 222 | + <div id="expert_header" on-click="_showExpertMode"><span id="groupBy"></span></div> |
223 | 223 | ||
224 | <div id="expert_container"> | 224 | <div id="expert_container"> |
225 | 225 | ||
@@ -541,6 +541,8 @@ | @@ -541,6 +541,8 @@ | ||
541 | this.$.base_title.label = ln["title_" + ln["localization"]]; | 541 | this.$.base_title.label = ln["title_" + ln["localization"]]; |
542 | this.$.base_description.label = ln["description_" + ln["localization"]]; | 542 | this.$.base_description.label = ln["description_" + ln["localization"]]; |
543 | 543 | ||
544 | + this.$.groupBy.innerHTML = ln["groupBy_" + ln["localization"]]; | ||
545 | + | ||
544 | if(this.modify) | 546 | if(this.modify) |
545 | this.$.add_button.innerHTML = ln["modifyDatalet_" + ln["localization"]]; | 547 | this.$.add_button.innerHTML = ln["modifyDatalet_" + ln["localization"]]; |
546 | }, | 548 | }, |
controllets/filters-controllet/filters-controllet.html
@@ -229,7 +229,9 @@ | @@ -229,7 +229,9 @@ | ||
229 | _addFilter : function() { | 229 | _addFilter : function() { |
230 | if (this.$.filter_field.selectedItem && this.$.filter_operation_menu.selectedItem && this.$.filter_value.value != "" && !this.$.filter_value.invalid) { | 230 | if (this.$.filter_field.selectedItem && this.$.filter_operation_menu.selectedItem && this.$.filter_value.value != "" && !this.$.filter_value.invalid) { |
231 | var field = this.$.filter_field.value; | 231 | var field = this.$.filter_field.value; |
232 | - var operation = this.$.filter_operation.value; | 232 | + var id = this.$.filter_operation.selectedItem.id; |
233 | + var operation = this.operations[id]; | ||
234 | +// var operation = this.$.filter_operation.value; | ||
233 | var value = this.$.filter_value.value; | 235 | var value = this.$.filter_value.value; |
234 | 236 | ||
235 | var filters = this.filters; | 237 | var filters = this.filters; |
controllets/select-data-controllet/demo/index.html
@@ -16,7 +16,8 @@ | @@ -16,7 +16,8 @@ | ||
16 | <body> | 16 | <body> |
17 | 17 | ||
18 | <!--<select-data-controllet id="tvmt" root-name="data" opened-path="records,geometry" preselected-fields='["nhits", "records,datasetid", "records,recordid"]' data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=73e02092-85a1-434e-85fe-0c9a43aa9a52&limit=5"></select-data-controllet>--> | 18 | <!--<select-data-controllet id="tvmt" root-name="data" opened-path="records,geometry" preselected-fields='["nhits", "records,datasetid", "records,recordid"]' data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=73e02092-85a1-434e-85fe-0c9a43aa9a52&limit=5"></select-data-controllet>--> |
19 | - <select-data-controllet id="tvmt" root-name="data" data-url="https://data.issy.com/api/records/1.0/search?dataset=flux-rss-des-offres-demplois-a-issy-les-moulineaux&sort=published&facet=published&refine.published=2015%2F10"></select-data-controllet> | 19 | + <!--<select-data-controllet id="tvmt" root-name="data" data-url="https://data.issy.com/api/records/1.0/search?dataset=flux-rss-des-offres-demplois-a-issy-les-moulineaux&sort=published&facet=published&refine.published=2015%2F10"></select-data-controllet>--> |
20 | + <select-data-controllet id="tvmt" root-name="data" data-url="https://data.issy.com/api/records/1.0/search/?dataset=repartitiondeladetteparpreteursau3112n-feuille1&rows=56&sort=-annee"></select-data-controllet> | ||
20 | <!--<select-data-controllet id="tvmt" root-name="data" data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=73e02092-85a1-434e-85fe-0c9a43aa9a52&limit=5"></select-data-controllet>--> | 21 | <!--<select-data-controllet id="tvmt" root-name="data" data-url="http://ckan.routetopa.eu/api/action/datastore_search?resource_id=73e02092-85a1-434e-85fe-0c9a43aa9a52&limit=5"></select-data-controllet>--> |
21 | 22 | ||
22 | <script> | 23 | <script> |
controllets/select-visualization-controllet/select-visualization-controllet.html
0 → 100755
1 | +<link rel="import" href="../../bower_components/polymer/polymer.html" /> | ||
2 | + | ||
3 | +<link rel="import" href="../../bower_components/paper-material/paper-material.html" /> | ||
4 | + | ||
5 | +<link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html"> | ||
6 | +<link rel="import" href="../../bower_components/paper-menu/paper-menu.html"> | ||
7 | +<link rel="import" href="../../bower_components/paper-item/paper-item.html"> | ||
8 | + | ||
9 | +<link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html"> | ||
10 | +<link rel="import" href="../../bower_components/iron-icons/iron-icons.html"> | ||
11 | +<link rel="import" href="../../bower_components/iron-icon/iron-icon.html"> | ||
12 | + | ||
13 | +<link rel="import" href="../../bower_components/paper-input/paper-textarea.html"> | ||
14 | +<link rel="import" href="../../bower_components/paper-input/paper-input.html"> | ||
15 | + | ||
16 | +<link rel="import" href="../../bower_components/paper-button/paper-button.html"> | ||
17 | + | ||
18 | +<link rel="import" href="../../bower_components/paper-dialog/paper-dialog.html"> | ||
19 | + | ||
20 | +<link rel="import" href="../items-vslider-controllet/items-vslider-controllet.html" /> | ||
21 | + | ||
22 | +<script src="../../../DEEPCLIENT/js/deepClient.js"></script> | ||
23 | + | ||
24 | +<dom-module id="datalet-selection-controllet"> | ||
25 | + | ||
26 | + <template> | ||
27 | + | ||
28 | + <style is="custom-style"> | ||
29 | + :host { | ||
30 | + --paper-dropdown-menu-icon: { | ||
31 | + color: #2196F3; | ||
32 | + }; | ||
33 | + } | ||
34 | + | ||
35 | + #datalet_selection_container { | ||
36 | + display: flex; | ||
37 | + font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; | ||
38 | + font-size: 16px; | ||
39 | + margin-top: 8px; | ||
40 | + } | ||
41 | + | ||
42 | + #items_vslider_controllet { | ||
43 | + position: relative; | ||
44 | + min-width: 172px; | ||
45 | + } | ||
46 | + | ||
47 | + #datalet_selection_inputs { | ||
48 | + position: relative; | ||
49 | + height: 100vh; | ||
50 | + margin-left: 32px; | ||
51 | + min-width: 258px; | ||
52 | + } | ||
53 | + | ||
54 | + #datalet_selection_labels { | ||
55 | + position: relative; | ||
56 | + height: 100vh; | ||
57 | + margin-left: 32px; | ||
58 | + min-width: 258px; | ||
59 | + } | ||
60 | + | ||
61 | + #datalet_selection_column { | ||
62 | + position: relative; | ||
63 | + width: 100%; | ||
64 | + margin-left: 32px; | ||
65 | + } | ||
66 | + | ||
67 | + #datalet_selection_datalet { | ||
68 | + position: relative; | ||
69 | + height: 100vh; | ||
70 | + width: 100%; | ||
71 | + } | ||
72 | + | ||
73 | + #datalet_selection_datalet_placeholder { | ||
74 | + padding: 16px; | ||
75 | + } | ||
76 | + | ||
77 | + .inputs{ | ||
78 | + position: relative; | ||
79 | + } | ||
80 | + | ||
81 | + .input_header { | ||
82 | + height: 32px; | ||
83 | + padding-top: 16px; | ||
84 | + text-align: center; | ||
85 | + font-weight: 700; | ||
86 | + background-color: #B6B6B6; | ||
87 | + } | ||
88 | + | ||
89 | + #expert_container { | ||
90 | + display: none; | ||
91 | + } | ||
92 | + | ||
93 | + #expert_header { | ||
94 | + display: none; | ||
95 | + | ||
96 | + height: 32px; | ||
97 | + padding-top: 16px; | ||
98 | + margin-top: 8px; | ||
99 | + text-align: center; | ||
100 | + font-weight: 700; | ||
101 | + color: #00BCD4; | ||
102 | + cursor: pointer; | ||
103 | + } | ||
104 | + | ||
105 | + .field_nema { | ||
106 | + height: 40px; | ||
107 | + padding-top: 8px; | ||
108 | + | ||
109 | + margin-top: 8px; | ||
110 | + padding-left: 16px; | ||
111 | + font-weight: 700; | ||
112 | + color: #2196F3; | ||
113 | + background-color: #E0E0E0; | ||
114 | + } | ||
115 | + | ||
116 | + .info_button { | ||
117 | + position: absolute; | ||
118 | + top: 18px; | ||
119 | + right: 0px; | ||
120 | + } | ||
121 | + | ||
122 | + paper-input { | ||
123 | + display: inline-block; | ||
124 | + height: 48px; | ||
125 | + width: 210px; | ||
126 | + padding-left: 8px; | ||
127 | + padding-bottom: 8px; | ||
128 | + --paper-input-container-focus-color: #2196F3; | ||
129 | + } | ||
130 | + | ||
131 | + paper-input.base_input { | ||
132 | + width: 242px; | ||
133 | + } | ||
134 | + | ||
135 | + paper-textarea { | ||
136 | + width: 242px; | ||
137 | + padding-left: 8px; | ||
138 | + padding-bottom: 4px; | ||
139 | + --paper-input-container-focus-color: #2196F3; | ||
140 | + } | ||
141 | + | ||
142 | + paper-dropdown-menu { | ||
143 | + height: 48px; | ||
144 | + width: 210px;; | ||
145 | + padding-left: 8px; | ||
146 | + padding-bottom: 8px; | ||
147 | + --paper-input-container-focus-color: #2196F3; | ||
148 | + } | ||
149 | + | ||
150 | + paper-item.iron-selected { | ||
151 | + background-color: #2196F3; | ||
152 | + color: #FFFFFF; | ||
153 | + } | ||
154 | + | ||
155 | + paper-icon-button { | ||
156 | + color: #2196F3; | ||
157 | + --paper-icon-button-ink-color: #2196F3; | ||
158 | + margin: 0px; | ||
159 | + } | ||
160 | + | ||
161 | + paper-button { | ||
162 | + position: absolute; | ||
163 | + bottom: 16px; | ||
164 | + right: 11px; | ||
165 | + | ||
166 | + height: 48px; | ||
167 | + width: 172px; | ||
168 | + background-color: #00BCD4; | ||
169 | + color: white; | ||
170 | + font-weight: 700; | ||
171 | + padding: 16px; | ||
172 | + } | ||
173 | + | ||
174 | + paper-button:hover { | ||
175 | + background-color: #00AABF; | ||
176 | + | ||
177 | + box-shadow: 0px 8px 12px #888; | ||
178 | + -webkit-box-shadow: 0px 8px 12px #888; | ||
179 | + -moz-box-shadow: 0px 8px 12px #888; | ||
180 | + } | ||
181 | + | ||
182 | + paper-button[disabled] { | ||
183 | + background-color: #B6B6B6; | ||
184 | + } | ||
185 | + | ||
186 | + #dialog_info_input { | ||
187 | + border: 2px solid #2196F3; | ||
188 | + background-color: #E0E0E0; | ||
189 | + min-width: 248px; | ||
190 | + } | ||
191 | + </style> | ||
192 | + | ||
193 | + <iron-ajax id="selectedDatalet_request" on-response="_handleSelectedDatalet"></iron-ajax> | ||
194 | + | ||
195 | + <div id="datalet_selection_container"> | ||
196 | + | ||
197 | + <div id="items_vslider_controllet"> | ||
198 | + <items-vslider-controllet id="vslider" datalets-list-url={{dataletsListUrl}} preselected-datalet={{preselectedDatalet}}></items-vslider-controllet> | ||
199 | + </div> | ||
200 | + | ||
201 | + <paper-material id="datalet_selection_inputs" elevation="5"> | ||
202 | + <div class="input_header"><span id="inputs"></span></div> | ||
203 | + <template is="dom-repeat" items="{{inputs}}" index-as="ddl_index"> | ||
204 | + <div class="inputs"> | ||
205 | + <paper-dropdown-menu id={{ddl_index}} label={{_getLabelName(item.name)}}> | ||
206 | + <paper-menu class="dropdown-content"> | ||
207 | + <template is="dom-repeat" items={{fields}}> | ||
208 | + <paper-item id={{index}} on-tap="_addInput">{{_fieldName(item)}}</paper-item> | ||
209 | + <!--{{_fieldName(item)}}--> | ||
210 | + </template> | ||
211 | + </paper-menu> | ||
212 | + </paper-dropdown-menu> | ||
213 | + <div class="info_button"> | ||
214 | + <paper-icon-button id={{item.name}} on-click="_showInfo" icon="info-outline" title="{{_getLabelName(item.name)}} info"></paper-icon-button> | ||
215 | + </div> | ||
216 | + </div> | ||
217 | + </template> | ||
218 | + | ||
219 | + <!-- EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE --> | ||
220 | + | ||
221 | + <div id="expert_header" on-click="_showExpertMode"><span id="expert">ADVANCED: GROUP BY</span></div> | ||
222 | + | ||
223 | + <div id="expert_container"> | ||
224 | + | ||
225 | + <div class="inputs"> | ||
226 | + <paper-dropdown-menu id="group_by" label="GROUP BY"> | ||
227 | + <paper-menu class="dropdown-content"> | ||
228 | + <template is="dom-repeat" items={{selectedFields}}> | ||
229 | + <paper-item id={{index}} on-tap="_showGroupedFields">{{_fieldName(item)}}</paper-item> | ||
230 | + </template> | ||
231 | + </paper-menu> | ||
232 | + </paper-dropdown-menu> | ||
233 | + <div class="info_button"> | ||
234 | + <paper-icon-button id="gb" on-click="_addOrder" icon="unfold-more" title="unsort"></paper-icon-button> | ||
235 | + </div> | ||
236 | + </div> | ||
237 | + | ||
238 | + <template is="dom-repeat" items="{{groupedFields}}"> | ||
239 | + <div class="inputs"> | ||
240 | + <paper-dropdown-menu id="calculate_{{index}}" label="CALCULATE"> | ||
241 | + <paper-menu class="dropdown-content"> | ||
242 | + <paper-item on-tap="_addGroupByInput">COUNT of {{_fieldName(item)}}</paper-item> | ||
243 | + <paper-item on-tap="_addGroupByInput">SUM of {{_fieldName(item)}}</paper-item> | ||
244 | + <paper-item on-tap="_addGroupByInput">MIN of {{_fieldName(item)}}</paper-item> | ||
245 | + <paper-item on-tap="_addGroupByInput">MAX of {{_fieldName(item)}}</paper-item> | ||
246 | + <paper-item on-tap="_addGroupByInput">AVG of {{_fieldName(item)}}</paper-item> | ||
247 | + <paper-item on-tap="_addGroupByInput">FIRST of {{_fieldName(item)}}</paper-item> | ||
248 | + <paper-item on-tap="_addGroupByInput">LAST of {{_fieldName(item)}}</paper-item> | ||
249 | + </paper-menu> | ||
250 | + </paper-dropdown-menu> | ||
251 | + <div class="info_button"> | ||
252 | + <paper-icon-button id={{_fieldName(item)}} on-click="_addOrder" icon="unfold-more" title="unsort"></paper-icon-button> | ||
253 | + </div> | ||
254 | + </div> | ||
255 | + </template> | ||
256 | + | ||
257 | + </div> | ||
258 | + | ||
259 | + <!-- EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE EXPERT MODE --> | ||
260 | + | ||
261 | + </paper-material> | ||
262 | + | ||
263 | + <paper-material id="datalet_selection_labels" elevation="5"> | ||
264 | + <div class="input_header"><span id="baseInfo"></span></div> | ||
265 | + | ||
266 | + <div class="inputs"> | ||
267 | + <paper-input id="base_title" maxlength="32" class="base_input"></paper-input> | ||
268 | + </div> | ||
269 | + | ||
270 | + <div class="inputs"> | ||
271 | + <paper-textarea id="base_description" maxlength="100" class="base_input"></paper-textarea> | ||
272 | + </div> | ||
273 | + | ||
274 | + <div class="input_header"><span id="layouts"></span></div> | ||
275 | + | ||
276 | + <template is="dom-repeat" items="{{labels}}" index-as="index"> | ||
277 | + <div class="inputs"> | ||
278 | + <paper-input label={{_getLabelName(item.name)}}></paper-input> | ||
279 | + <div class="info_button"> | ||
280 | + <paper-icon-button id={{item.name}} on-click="_showInfo" icon="info-outline" title="{{_getLabelName(item.name)}} info"></paper-icon-button> | ||
281 | + </div> | ||
282 | + </div> | ||
283 | + </template> | ||
284 | + </paper-material> | ||
285 | + | ||
286 | + | ||
287 | + <div id="datalet_selection_column"> | ||
288 | + | ||
289 | + <paper-material id="datalet_selection_datalet" elevation="5"> | ||
290 | + <div class="input_header"><span id="dataletPreview"></span></div> | ||
291 | + <div id="datalet_selection_datalet_placeholder"></div> | ||
292 | + | ||
293 | + </paper-material> | ||
294 | + | ||
295 | + <paper-button id="add_button" disabled raised on-click="_addDatalet"></paper-button> | ||
296 | + | ||
297 | + </div> | ||
298 | + | ||
299 | + <paper-dialog id="dialog_info_input"> | ||
300 | + <h2 id="dialog_name"></h2> | ||
301 | + <p id="dialog_description"></p> | ||
302 | + </paper-dialog> | ||
303 | + | ||
304 | + </div> | ||
305 | + | ||
306 | + </template> | ||
307 | + | ||
308 | + <script> | ||
309 | + | ||
310 | + Polymer({ | ||
311 | + | ||
312 | + is : 'datalet-selection-controllet', | ||
313 | + | ||
314 | + properties : { | ||
315 | + | ||
316 | + deepUrl : { | ||
317 | + type : String, | ||
318 | + value : undefined | ||
319 | + }, | ||
320 | + | ||
321 | + dataletsListUrl : { | ||
322 | + type : String, | ||
323 | + value : undefined | ||
324 | + }, | ||
325 | + | ||
326 | + selectedDatalet : { | ||
327 | + type : String, | ||
328 | + value : undefined | ||
329 | + }, | ||
330 | + | ||
331 | + preselectedDatalet : { | ||
332 | + type : String, | ||
333 | + value : undefined | ||
334 | + }, | ||
335 | + | ||
336 | + loadPreview : { | ||
337 | + type : Boolean, | ||
338 | + value : false | ||
339 | + }, | ||
340 | + | ||
341 | + type : { | ||
342 | + type : String, | ||
343 | + value : undefined | ||
344 | + }, | ||
345 | + | ||
346 | + inputs : { | ||
347 | + type : Array, | ||
348 | + value : [] | ||
349 | + }, | ||
350 | + | ||
351 | + labels : { | ||
352 | + type : Array, | ||
353 | + value : [] | ||
354 | + }, | ||
355 | + | ||
356 | + filters : { | ||
357 | + type : Array, | ||
358 | + value : [] | ||
359 | + }, | ||
360 | + | ||
361 | + aggregators : { | ||
362 | + type : Array, | ||
363 | + value : [] | ||
364 | + }, | ||
365 | + | ||
366 | + orders : { | ||
367 | + type : Array, | ||
368 | + value : [] | ||
369 | + }, | ||
370 | + | ||
371 | + fields : { | ||
372 | + type : Array, | ||
373 | + value : [] | ||
374 | + }, | ||
375 | + | ||
376 | + selectedFields : { | ||
377 | + type : Array, | ||
378 | + value : [] | ||
379 | + }, | ||
380 | + | ||
381 | + groupedFields : { | ||
382 | + type : Array, | ||
383 | + value : [] | ||
384 | + }, | ||
385 | + | ||
386 | + dataletPreset : { | ||
387 | + type : Object, | ||
388 | + value : [] | ||
389 | + }, | ||
390 | + | ||
391 | +// selectableFields : { | ||
392 | +// type : Array, | ||
393 | +// value : [] | ||
394 | +// }, | ||
395 | + | ||
396 | + dataUrl : { | ||
397 | + type : String, | ||
398 | + value : undefined | ||
399 | + }, | ||
400 | + | ||
401 | + params:{ | ||
402 | + type: Object, | ||
403 | + value: undefined | ||
404 | + }, | ||
405 | + | ||
406 | + expert : { | ||
407 | + type : Boolean, | ||
408 | + value : false | ||
409 | + }, | ||
410 | + | ||
411 | + modify : { | ||
412 | + type : Boolean, | ||
413 | + value : false | ||
414 | + } | ||
415 | + | ||
416 | + }, | ||
417 | + | ||
418 | + listeners: { | ||
419 | + 'items-vslider-controllet_selected-datalet': '_selectDatalet', | ||
420 | +// 'tree-view-controllet_selected-fields': '_updateSelectedFields' | ||
421 | + 'change': '_paramsChanged' | ||
422 | + }, | ||
423 | + | ||
424 | + _showExpertMode : function() { | ||
425 | + if(!this.expert) { | ||
426 | + this.$.expert_header.style.color = "#000000"; | ||
427 | + this.$.expert_header.style.background = "#B6B6B6"; | ||
428 | + this.$.expert_container.style.display = "block"; | ||
429 | + } | ||
430 | + else { | ||
431 | + this.$.expert_header.style.color = "#00BCD4"; | ||
432 | + this.$.expert_header.style.background = "#FFFFFF"; | ||
433 | + this.$.expert_container.style.display = "none"; | ||
434 | + } | ||
435 | + | ||
436 | + this.expert = !this.expert; | ||
437 | + }, | ||
438 | + | ||
439 | + _showGroupedFields : function(e) { | ||
440 | + var index = e.target.id; | ||
441 | + var isSelected = false; | ||
442 | + var temp = []; | ||
443 | + | ||
444 | + for (var i = 0; i < this.selectedFields.length; i++) { | ||
445 | + if (this.selectedFields[i]) { | ||
446 | + if (this.selectedFields[i].indexOf(this.fields[index]) > -1) { | ||
447 | + isSelected = true; | ||
448 | + } | ||
449 | + else { | ||
450 | + temp.push(this.selectedFields[i]) | ||
451 | + } | ||
452 | + } | ||
453 | + } | ||
454 | + | ||
455 | + if (isSelected) | ||
456 | + this.groupedFields = this._copy(temp); | ||
457 | + else | ||
458 | + this.groupedFields =[]; | ||
459 | + | ||
460 | + this.async(function() { | ||
461 | + var ddls = document.getElementsByTagName("paper-dropdown-menu"); | ||
462 | + for (var i = 0; i < ddls.length; i++){ | ||
463 | + var id = ddls[i].id; | ||
464 | + if(id.indexOf("calculate") > -1) { | ||
465 | + $(ddls[i]).find("paper-menu")[0].select(-1); | ||
466 | + $(ddls[i]).find("paper-menu")[0].select(0); | ||
467 | + } | ||
468 | + } | ||
469 | + }, 0); | ||
470 | + | ||
471 | + this._addGroupByInput(); | ||
472 | + }, | ||
473 | + | ||
474 | + ready : function() { | ||
475 | + this._resize(); | ||
476 | + $(this.$.datalet_selection_inputs).perfectScrollbar(); | ||
477 | + $(this.$.datalet_selection_labels).perfectScrollbar(); | ||
478 | + $(this.$.datalet_selection_datalet).perfectScrollbar(); | ||
479 | + | ||
480 | + this.params = {'data-url' : this.dataUrl}; | ||
481 | + | ||
482 | + //this.modify = true;//da eliminare in futuro | ||
483 | + if(this.preselectedDatalet){ | ||
484 | + if(this.modify) | ||
485 | + this._preselectDatalet(); | ||
486 | + | ||
487 | + this.modify = true; | ||
488 | + this.preselectedDatalet = undefined; | ||
489 | + } | ||
490 | + }, | ||
491 | + | ||
492 | + attached : function() { | ||
493 | + this._resize(); | ||
494 | + var that = this; | ||
495 | + window.addEventListener("resize", function() { that._resize(); }); | ||
496 | + | ||
497 | + this._translate(); | ||
498 | + }, | ||
499 | + | ||
500 | + setFilters : function(filters) { | ||
501 | + this.filters = filters; | ||
502 | + }, | ||
503 | + | ||
504 | + setFields : function(fields) { | ||
505 | + this.fields = fields; | ||
506 | + }, | ||
507 | + | ||
508 | + reset : function() { | ||
509 | + this.selectedDatalet = undefined;//non va!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
510 | + this.preselectedDatalet = undefined; | ||
511 | + this.type = undefined; | ||
512 | + this.inputs = []; | ||
513 | + this.labels = []; | ||
514 | + this.$.expert_header.style.display = "none"; | ||
515 | + this.expert = true; | ||
516 | + this._showExpertMode(); | ||
517 | + this.loadPreview = false; | ||
518 | + this.$.datalet_selection_datalet_placeholder.innerHTML = ""; | ||
519 | + this._resetGroupBy(); | ||
520 | + }, | ||
521 | + | ||
522 | + _translate : function(){ | ||
523 | + | ||
524 | + this.$.add_button.innerHTML = ln["addDatalet_" + ln["localization"]]; | ||
525 | + this.$.inputs.innerHTML = ln["inputs_" + ln["localization"]]; | ||
526 | + this.$.baseInfo.innerHTML = ln["baseInfo_" + ln["localization"]]; | ||
527 | + this.$.layouts.innerHTML = ln["layouts_" + ln["localization"]]; | ||
528 | + this.$.dataletPreview.innerHTML = ln["dataletPreview_" + ln["localization"]]; | ||
529 | + | ||
530 | + this.$.base_title.label = ln["title_" + ln["localization"]]; | ||
531 | + this.$.base_description.label = ln["description_" + ln["localization"]]; | ||
532 | + | ||
533 | + if(this.modify) | ||
534 | + this.$.add_button.innerHTML = ln["modifyDatalet_" + ln["localization"]]; | ||
535 | + }, | ||
536 | + | ||
537 | + _selectDatalet : function(e){ | ||
538 | + this.$.add_button.setAttribute("disabled", "true"); | ||
539 | + | ||
540 | + this.selectedDatalet = e.detail.datalet; | ||
541 | + | ||
542 | + this.$.datalet_selection_datalet_placeholder.innerHTML = ""; | ||
543 | + | ||
544 | + if(!this.selectedDatalet){ | ||
545 | + this.type = undefined; | ||
546 | + this.inputs = []; | ||
547 | + this.labels = []; | ||
548 | + this.$.expert_header.style.display = "none"; | ||
549 | + this.expert = true; | ||
550 | + this._showExpertMode(); | ||
551 | + this.loadPreview = false; | ||
552 | + } | ||
553 | + else{ | ||
554 | + this.$.selectedDatalet_request.url = this.deepUrl + e.detail.datalet + "-datalet"; | ||
555 | + this.$.selectedDatalet_request.generateRequest(); | ||
556 | + this.$.expert_header.style.display = "block"; | ||
557 | + } | ||
558 | + }, | ||
559 | + | ||
560 | + _preselectDatalet : function() { | ||
561 | + this.type = "undefined"; | ||
562 | + this.$.selectedDatalet_request.url = this.deepUrl + this.preselectedDatalet + "-datalet"; | ||
563 | + this.$.selectedDatalet_request.generateRequest(); | ||
564 | + | ||
565 | + this.selectedDatalet = this.preselectedDatalet; | ||
566 | + this.selectedFields = this._copy(this.fields); | ||
567 | + | ||
568 | + this.async(function() { | ||
569 | + this.selectedFields = this._copy(this.fields); | ||
570 | + | ||
571 | + var inputs = document.getElementsByTagName("paper-dropdown-menu"); | ||
572 | + for (var i = 0; i < inputs.length; i++) | ||
573 | + $(inputs[i]).find("paper-menu")[0].select(i); | ||
574 | + | ||
575 | + //set info labels options | ||
576 | + var labels = this.$.datalet_selection_labels.querySelectorAll("paper-textarea"); | ||
577 | + for (var i = 0; i < labels.length; i++) | ||
578 | + labels[i].value = this.dataletPreset[labels[i].label]; | ||
579 | + | ||
580 | + var labels = this.$.datalet_selection_labels.querySelectorAll("paper-input"); | ||
581 | + for (var i = 0; i < labels.length; i++) | ||
582 | + labels[i].value = this.dataletPreset[labels[i].label]; | ||
583 | + | ||
584 | + this.loadPreview = true; | ||
585 | + this._loadDatalet(this.selectedFields); | ||
586 | + }, 300); | ||
587 | + }, | ||
588 | + | ||
589 | + _handleSelectedDatalet : function(e){ | ||
590 | + | ||
591 | + if(this.type != e.detail.response.type) { | ||
592 | + | ||
593 | + this.inputs = []; | ||
594 | + this.labels = []; | ||
595 | + | ||
596 | + var inputs = this._copy(e.detail.response.idm.inputs.input); | ||
597 | + | ||
598 | + if (inputs.constructor == Object) {//not Array && inputs.input.selection == "*" | ||
599 | + var name = inputs.name; | ||
600 | + var description = inputs.description; | ||
601 | + var selection = inputs.selection; | ||
602 | + inputs = []; | ||
603 | + for (var i in this.fields) | ||
604 | + inputs.push({name: name + " " + i, description: description, selection: selection}); | ||
605 | + } | ||
606 | + | ||
607 | + /**/ | ||
608 | + var computedInputs = []; | ||
609 | + computedInputs.push(inputs[0]); | ||
610 | + | ||
611 | + for(var i = 0; i < inputs.length; i++) { | ||
612 | + var input = inputs[i]; | ||
613 | + if(input.selection == "*") { | ||
614 | + var name = input.name; | ||
615 | + var description = input.description; | ||
616 | + var selection = input.selection; | ||
617 | + for(var j = 0; j < (this.fields.length - inputs.length +1); j++) | ||
618 | + computedInputs.push({name: name + " " + j, description: description, selection: selection}); | ||
619 | + } | ||
620 | + } | ||
621 | + | ||
622 | + if(computedInputs.length > inputs.length) | ||
623 | + inputs = computedInputs; | ||
624 | + /**/ | ||
625 | + | ||
626 | + this.async(function(){ | ||
627 | + this.type = e.detail.response.type; | ||
628 | + this.inputs = inputs; | ||
629 | + this.labels = e.detail.response.idm.inputs.layouts.input; | ||
630 | + | ||
631 | + this.selectedFields = new Array(inputs.length); | ||
632 | + },0); | ||
633 | + | ||
634 | + this._resetGroupBy(); | ||
635 | + | ||
636 | + this.loadPreview = false; | ||
637 | + } | ||
638 | + | ||
639 | + else if (this.loadPreview) | ||
640 | + this._loadDatalet(this.selectedFields); | ||
641 | + }, | ||
642 | + | ||
643 | + _resetGroupBy : function(){ | ||
644 | + $(this.$.group_by).find("paper-menu")[0].select(-1); | ||
645 | + this.groupedFields = []; | ||
646 | + this.aggregators = []; | ||
647 | + }, | ||
648 | + | ||
649 | + _addGroupByInput : function(){ | ||
650 | + this.async(function() {//codice reprlicato! | ||
651 | + var selectedFields = this.selectedFields; | ||
652 | + | ||
653 | + var load = true; | ||
654 | + | ||
655 | + if(this.inputs[0].selection == "*"){ | ||
656 | + var temp = []; | ||
657 | + for (var i = 0; i < selectedFields.length; i++) | ||
658 | + if(selectedFields[i]) | ||
659 | + temp.push(selectedFields[i]); | ||
660 | + selectedFields = temp; | ||
661 | + } | ||
662 | + else { | ||
663 | + for (var i = 0; i < selectedFields.length; i++) | ||
664 | + if (!selectedFields[i]) { | ||
665 | + load = false; | ||
666 | + break; | ||
667 | + } | ||
668 | + } | ||
669 | + | ||
670 | + if(load){ | ||
671 | + this.loadPreview = true; | ||
672 | + this._loadDatalet(selectedFields); | ||
673 | + } | ||
674 | + }, 0); | ||
675 | + }, | ||
676 | + | ||
677 | + _addOrder : function(e){ | ||
678 | + var t = e.target; | ||
679 | + if(t.tagName.indexOf("IRON-ICON") > -1) | ||
680 | + t = $(e.target).parents("paper-icon-button")[0]; | ||
681 | + | ||
682 | + var icon = t.getAttribute("icon"); | ||
683 | + var name = t.getAttribute("id"); | ||
684 | + | ||
685 | + if(name.indexOf("gb") > -1){ | ||
686 | + var selectedItem = $(this.$.group_by).find("paper-menu")[0].selectedItem; | ||
687 | + if(selectedItem) | ||
688 | + name = selectedItem.textContent.trim(); | ||
689 | +// name = "[" + selectedItem.textContent.trim() + "]"; | ||
690 | + else | ||
691 | + return; | ||
692 | + }// else { | ||
693 | +// var i = name; | ||
694 | +// var ddl = $("#calculate_"+i); | ||
695 | +// | ||
696 | +// var label = $(ddl).find("paper-menu")[0].selectedItem.textContent.trim(); | ||
697 | +// var index = label.split(" ", 2).join(" ").length; | ||
698 | +// var field = label.substring(index+1, label.length); | ||
699 | +// var operation = label.substring(0, label.indexOf(" ")); | ||
700 | +// name = operation + "([" + field + "])"; | ||
701 | +// } | ||
702 | + | ||
703 | + if(icon.indexOf("unfold-more") > -1){ | ||
704 | + t.setAttribute("icon", "expand-less"); | ||
705 | + t.setAttribute("title", "sort ascending"); | ||
706 | + var orders = this.orders.filter(function (el) { return el.field !== name; }); | ||
707 | + orders.push({"field": name, "operation": "ASC"}); | ||
708 | + this.orders = this._copy(orders); | ||
709 | + } | ||
710 | + else if(icon.indexOf("expand-less") > -1){ | ||
711 | + t.setAttribute("icon", "expand-more"); | ||
712 | + t.setAttribute("title", "sort descending"); | ||
713 | + var orders = this.orders.filter(function (el) { return el.field !== name; }); | ||
714 | + orders.push({"field": name, "operation": "DESC"}); | ||
715 | + this.orders = this._copy(orders); | ||
716 | + } | ||
717 | + else if(icon.indexOf("expand-more") > -1){ | ||
718 | + t.setAttribute("icon", "unfold-more"); | ||
719 | + t.setAttribute("title", "unsort"); | ||
720 | + var orders = this.orders.filter(function (el) { return el.field !== name; }); | ||
721 | + this.orders = this._copy(orders); | ||
722 | + } | ||
723 | + | ||
724 | + this._addGroupByInput();//no buoono | ||
725 | +// if(load){ | ||
726 | +// this.loadPreview = true; | ||
727 | +// this._loadDatalet(selectedFields); | ||
728 | +// } | ||
729 | + }, | ||
730 | + | ||
731 | + _addInput : function(e){ | ||
732 | + var selectedFields = this._copy(this.selectedFields); | ||
733 | + | ||
734 | +// var index = $(e.target).parents("paper-dropdown-menu")[0].id; | ||
735 | +// selectedFields[index] = e.target.innerHTML.trim(); | ||
736 | + | ||
737 | + var ddl_index = $(e.target).parents("paper-dropdown-menu")[0].id; | ||
738 | + var index = e.target.id; | ||
739 | + selectedFields[ddl_index] = this.fields[index]; | ||
740 | + | ||
741 | + this.selectedFields = this._copy(selectedFields); | ||
742 | + | ||
743 | + var load = true; | ||
744 | + | ||
745 | + if(this.inputs[0].selection == "*"){ | ||
746 | + var temp = []; | ||
747 | + for (var i = 0; i < selectedFields.length; i++) | ||
748 | + if(selectedFields[i]) | ||
749 | + temp.push(selectedFields[i]); | ||
750 | + selectedFields = temp; | ||
751 | + } | ||
752 | + else { | ||
753 | + for (var i = 0; i < selectedFields.length; i++) | ||
754 | + if (!selectedFields[i]) { | ||
755 | + load = false; | ||
756 | + break; | ||
757 | + } | ||
758 | + } | ||
759 | + | ||
760 | + this._resetGroupBy();//--> conflitto, in _updateparams valorizza this.aggregators | ||
761 | + | ||
762 | + if(load){ | ||
763 | + this.loadPreview = true; | ||
764 | + this._loadDatalet(selectedFields); | ||
765 | + } | ||
766 | + }, | ||
767 | + | ||
768 | + _updateParams : function(){ | ||
769 | + var textarea = this.$.datalet_selection_labels.querySelectorAll("paper-textarea"); | ||
770 | + this.params["description"] = textarea[0].value; | ||
771 | + | ||
772 | + if(!textarea[0].value) | ||
773 | + this.params[textarea[0].label] = ""; | ||
774 | + | ||
775 | + var inputs = this.$.datalet_selection_labels.querySelectorAll("paper-input"); | ||
776 | + this.params["title"] = inputs[0].value; | ||
777 | + | ||
778 | + for (var i = 1; i < inputs.length; i++) | ||
779 | + this.params[this.labels[i-1].name] = inputs[i].value; | ||
780 | + | ||
781 | + this.aggregators = []; | ||
782 | + | ||
783 | + var ddls = document.getElementsByTagName("paper-dropdown-menu"); | ||
784 | + for (var i = 0; i < ddls.length; i++){ | ||
785 | + var id = ddls[i].id; | ||
786 | + if(id.indexOf("group_by") > -1 && $(ddls[i]).find("paper-menu")[0].selectedItem) { | ||
787 | + var label = $(ddls[i]).find("paper-menu")[0].selectedItem.textContent.trim(); | ||
788 | + this.aggregators.push({"field": label, "operation": "GROUP BY"}); | ||
789 | + } | ||
790 | + if(id.indexOf("calculate") > -1) { | ||
791 | + var label = $(ddls[i]).find("paper-menu")[0].selectedItem.textContent.trim(); | ||
792 | +// var field = label.substring(label.lastIndexOf(" ")+1, label.length); | ||
793 | + var index = label.split(" ", 2).join(" ").length; | ||
794 | + var field = label.substring(index+1, label.length); | ||
795 | + var operation = label.substring(0, label.indexOf(" ")); | ||
796 | + this.aggregators.push({"field": field, "operation": operation}); | ||
797 | + } | ||
798 | + } | ||
799 | + }, | ||
800 | + | ||
801 | + _paramsChanged : function(){ | ||
802 | + | ||
803 | + this._updateParams(); | ||
804 | + | ||
805 | + if(this.$.datalet_selection_datalet_placeholder.children[1]) | ||
806 | + this.$.datalet_selection_datalet_placeholder.children[1].behavior.setParameters(this.params); | ||
807 | + }, | ||
808 | + | ||
809 | + _loadDatalet : function(selectedFields){ | ||
810 | + | ||
811 | + this._updateParams(); | ||
812 | + | ||
813 | + this.params["filters"] = JSON.stringify(this.filters); | ||
814 | + this.params["aggregators"] = JSON.stringify(this.aggregators); | ||
815 | + this.params["orders"] = JSON.stringify(this.orders); | ||
816 | + | ||
817 | +// this.params["filters"] = '[{"field": "Lat", "operation": ">=", "value": "53.298164"}, {"field": "Lat", "operation": "<", "value": "54"}]'; | ||
818 | +// this.params["aggregators"] = '[{"field": "Lat", "operation": "GROUP BY"}, {"field": "Lng", "operation": "COUNT"}]'; | ||
819 | +// this.params["orders"] = '[{"field": "Lat", "operation": "DESC"}, {"field": "Lat", "operation": "ASC"}]'; | ||
820 | + | ||
821 | + //this.params["aggregators"] = '[{"field": "Value", "operation": "GROUP BY"}, {"field": "LOCATION", "operation": "COUNT"}]'; | ||
822 | + //this.params["orders"] = '[{"field": "Value", "operation": "ASC"}, {"field": "Value", "operation": "ASC"}]'; | ||
823 | + | ||
824 | + var dataletParams ={ | ||
825 | + component : this.selectedDatalet+"-datalet", | ||
826 | + params : this.params, | ||
827 | + fields : selectedFields, | ||
828 | + placeHolder : this.$.datalet_selection_datalet_placeholder | ||
829 | + }; | ||
830 | + | ||
831 | + ComponentService.deep_url = this.deepUrl; | ||
832 | + ComponentService.getComponent(dataletParams); | ||
833 | + | ||
834 | + this.$.add_button.removeAttribute("disabled"); | ||
835 | + }, | ||
836 | + | ||
837 | + _addDatalet : function(){ | ||
838 | + | ||
839 | + this._updateParams(); | ||
840 | + | ||
841 | + var selectedFields = []; | ||
842 | + for (var i = 0; i < this.selectedFields.length; i++) | ||
843 | + if(this.selectedFields[i]) | ||
844 | + selectedFields.push(this.selectedFields[i]); | ||
845 | + | ||
846 | + var data = { | ||
847 | + dataUrl : this.dataUrl, | ||
848 | + params : this.params, | ||
849 | + fields : selectedFields, | ||
850 | + datalet : this.selectedDatalet+"-datalet", | ||
851 | +// comment : "",//DEPRECATED!!! | ||
852 | + staticData : JSON.stringify(this.$.datalet_selection_datalet_placeholder.children[1].behavior.data) | ||
853 | + } | ||
854 | + | ||
855 | + this.fire('data-sevc-controllet.dataletCreated', {data : data}); | ||
856 | + | ||
857 | + }, | ||
858 | + | ||
859 | + _showInfo : function(e){ | ||
860 | +// var that = this; | ||
861 | + var t = e.target; | ||
862 | + if(t.tagName.indexOf("IRON-ICON") != -1) | ||
863 | + t = $(e.target).parents("paper-icon-button")[0]; | ||
864 | + | ||
865 | +// var name = t.getAttribute("title").replace(" info", ""); | ||
866 | + var name = t.getAttribute("id"); | ||
867 | + | ||
868 | + var dataset = $.grep(this.inputs, function(e){ return e.name == name; })[0]; | ||
869 | + if(!dataset) | ||
870 | + dataset = $.grep(this.labels, function(e){ return e.name == name; })[0]; | ||
871 | + | ||
872 | + this.$.dialog_name.innerHTML = this._getLabelName(dataset.name); | ||
873 | + this.$.dialog_description.innerHTML = ln[dataset.description + "_" + ln["localization"]]; | ||
874 | + this.$.dialog_info_input.open(); | ||
875 | + | ||
876 | + var pos = t.getBoundingClientRect(); | ||
877 | + $("#dialog_info_input").css("top", pos.top - 4); | ||
878 | + $("#dialog_info_input").css("left", pos.left - 4); | ||
879 | + }, | ||
880 | + | ||
881 | + _fieldName : function(field) { | ||
882 | + if(!field)//when? | ||
883 | + return ""; | ||
884 | + return field.substring(field.lastIndexOf(",")+1, field.length); | ||
885 | + }, | ||
886 | + | ||
887 | + _copy : function(o) { | ||
888 | + var out, v, key; | ||
889 | + out = Array.isArray(o) ? new Array(o.length) : {}; | ||
890 | + for (key in o) { | ||
891 | + v = o[key]; | ||
892 | + out[key] = (typeof v === "object") ? this._copy(v) : v; | ||
893 | + } | ||
894 | + return out; | ||
895 | + }, | ||
896 | + | ||
897 | + _getLabelName: function(key) { | ||
898 | + //* exceptions | ||
899 | + if(key.indexOf("Cell") > -1) { | ||
900 | + return ln["Cell" + "_" +ln["localization"]] + key.slice(-2); | ||
901 | + } | ||
902 | + if(key.indexOf("Level") > -1) { | ||
903 | + return ln["Level" + "_" +ln["localization"]] + key.slice(-2); | ||
904 | + } | ||
905 | + if(key.indexOf("Category") > -1) { | ||
906 | + return ln["Category" + "_" +ln["localization"]] + key.slice(-2); | ||
907 | + } | ||
908 | + | ||
909 | + return ln[key + "_" +ln["localization"]]; | ||
910 | + }, | ||
911 | + | ||
912 | + _resize : function(){ | ||
913 | + var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16; | ||
914 | + h = h - 64 - 8; //height with page scroller | ||
915 | + | ||
916 | + $("#items_vslider_container").height(h);//vslider controllet | ||
917 | + | ||
918 | + $("#datalet_selection_inputs").height(h); | ||
919 | + $("#datalet_selection_labels").height(h); | ||
920 | +// if(this.modify) | ||
921 | +// $("#datalet_selection_datalet").height(h-128); | ||
922 | +// else | ||
923 | + $("#datalet_selection_datalet").height(h); | ||
924 | + } | ||
925 | + | ||
926 | + }); | ||
927 | + | ||
928 | + </script> | ||
929 | + | ||
930 | +</dom-module> | ||
0 | \ No newline at end of file | 931 | \ No newline at end of file |
datalets/base-ajax-json-alasql-datalet/static/js/AjaxJsonAlasqlBehavior.js
@@ -117,7 +117,7 @@ var AjaxJsonAlasqlBehavior = { | @@ -117,7 +117,7 @@ var AjaxJsonAlasqlBehavior = { | ||
117 | else if(filters[i]["operation"] == "ends") | 117 | else if(filters[i]["operation"] == "ends") |
118 | where += filters[i]["field"] + " like '%" + filters[i]["value"] + "' AND "; | 118 | where += filters[i]["field"] + " like '%" + filters[i]["value"] + "' AND "; |
119 | else | 119 | else |
120 | - where += filters[i]["field"] + " " + filters[i]["operation"] + " " + filters[i]["value"] + " AND "; | 120 | + where += filters[i]["field"] + " " + filters[i]["operation"] + " '" + filters[i]["value"] + "' AND "; |
121 | } | 121 | } |
122 | where = where.slice(0, -5); | 122 | where = where.slice(0, -5); |
123 | } | 123 | } |
locales/controllet_ln.js
@@ -38,7 +38,8 @@ ln["ends_en"] = "ends with"; | @@ -38,7 +38,8 @@ ln["ends_en"] = "ends with"; | ||
38 | ln["sortAscending_en"] = "sorted ascending"; | 38 | ln["sortAscending_en"] = "sorted ascending"; |
39 | ln["sortDescending_en"] = "sorted descending"; | 39 | ln["sortDescending_en"] = "sorted descending"; |
40 | ln["unsort_en"] = "unsorted"; | 40 | ln["unsort_en"] = "unsorted"; |
41 | -ln["countOf_en"] = "COUNT of"; | 41 | +//ln["countOf_en"] = "COUNT of"; |
42 | +ln["groupBy_en"] = "GROUP BY"; | ||
42 | 43 | ||
43 | ln["datatable_it"] = "tabella"; | 44 | ln["datatable_it"] = "tabella"; |
44 | ln["barchart_it"] = "bar-chart"; | 45 | ln["barchart_it"] = "bar-chart"; |