Blame view

controllets/datalet-selection-controllet/datalet-selection-controllet.html 17.5 KB
a31f0660   root   sevc-controllet i...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  <link rel="import" href="../../bower_components/polymer/polymer.html" />
  
  <link rel="import" href="../../bower_components/paper-material/paper-material.html" />
  
  <link rel="import" href="../../bower_components/paper-dropdown-menu/paper-dropdown-menu.html">
  <link rel="import" href="../../bower_components/paper-menu/paper-menu.html">
  <link rel="import" href="../../bower_components/paper-item/paper-item.html">
  
  <link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
  <link rel="import" href="../../bower_components/iron-icons/iron-icons.html">
  <link rel="import" href="../../bower_components/iron-icon/iron-icon.html">
  
  <link rel="import" href="../../bower_components/paper-input/paper-textarea.html">
  
  <link rel="import" href="../../bower_components/paper-button/paper-button.html">
  
  <link rel="import" href="../items-vslider-controllet/items-vslider-controllet.html" />
  
0f6424fe   root   update new data-s...
19
  <script src="../../../DEEPCLIENT/js/deepClient.js"></script>
a31f0660   root   sevc-controllet i...
20
21
22
23
24
25
  
  <dom-module id="datalet-selection-controllet">
  
      <template>
  
          <style is="custom-style">
e0e4a976   Renato De Donato   data-sevc-control...
26
27
28
29
30
              :host {
              --paper-dropdown-menu-icon: {
                   color: #2196F3;
               };
              }
a31f0660   root   sevc-controllet i...
31
32
33
34
35
  
              #datalet_selection_container {
                  display: flex;
                  font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
                  font-size: 16px;
0f6424fe   root   update new data-s...
36
                  margin-top: 8px;
a31f0660   root   sevc-controllet i...
37
38
39
40
41
42
              }
  
              #datalet_selection_inputs {
                  position: relative;
                  height: 100vh;
                  margin-left: 32px;
e0e4a976   Renato De Donato   data-sevc-control...
43
44
                  /*width: 344px;*/
                  min-width: 258px;
a31f0660   root   sevc-controllet i...
45
46
47
48
49
50
              }
  
              #datalet_selection_labels {
                  position: relative;
                  height: 100vh;
                  margin-left: 32px;
e0e4a976   Renato De Donato   data-sevc-control...
51
52
                  /*width: 344px;*/
                  min-width: 258px;
a31f0660   root   sevc-controllet i...
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
              }
  
              #datalet_selection_column {
                  position: relative;
                  width: 100%;
                  margin-left: 32px;
              }
  
              #datalet_selection_datalet {
                  position: relative;
                  height: 100vh;
                  width: 100%;
                  /*margin-left: 32px;*/
                  /*margin-top: 32px;*/
                  /*margin-bottom: 32px;*/
              }
  
              #datalet_selection_comment{
                  width: 100%;
e0e4a976   Renato De Donato   data-sevc-control...
72
                  /*height: 112px;*/
a31f0660   root   sevc-controllet i...
73
74
75
76
77
78
79
80
81
82
83
84
85
                  margin-bottom: 32px;
              }
  
              #datalet_selection_datalet_placeholder {
                  padding: 16px;
              }
  
              .inputs{
                  position: relative;
                  /*margin-left: 16px;*/
                  /*margin-right: 16px;*/
              }
  
e0e4a976   Renato De Donato   data-sevc-control...
86
87
88
89
              /*.input_name{*/
                  /*height: 16px;*/
                  /*padding: 16px;*/
                  /*/!*background-color: #B6B6B6;*!/*/
a31f0660   root   sevc-controllet i...
90
  
e0e4a976   Renato De Donato   data-sevc-control...
91
92
93
94
                  /*background-color: #2196F3;*/
                  /*color: #FFFFFF;*/
                  /*font-weight: 700;*/
              /*}*/
a31f0660   root   sevc-controllet i...
95
96
  
              .input_header{
e0e4a976   Renato De Donato   data-sevc-control...
97
98
99
                  height: 32px;
                  padding-top: 16px;
                  /*padding: 16px;*/
a31f0660   root   sevc-controllet i...
100
101
102
103
104
105
                  background-color: #B6B6B6;
                  text-align: center;
                  font-weight: 700;
              }
  
              .info_button {
e0e4a976   Renato De Donato   data-sevc-control...
106
                  /*background-color: red;*/
a31f0660   root   sevc-controllet i...
107
                  position: absolute;
e0e4a976   Renato De Donato   data-sevc-control...
108
                  top: 18px;
a31f0660   root   sevc-controllet i...
109
110
111
112
                  right: 0px;
              }
  
              paper-textarea {
e0e4a976   Renato De Donato   data-sevc-control...
113
                  display: inline-block;
a31f0660   root   sevc-controllet i...
114
                  height: 48px;
e0e4a976   Renato De Donato   data-sevc-control...
115
116
117
118
                  /*padding: 0px 8px;*/
                  width: 210px;
                  padding-left: 8px;
                  padding-bottom: 8px;
a31f0660   root   sevc-controllet i...
119
120
121
                  --paper-input-container-focus-color: #2196F3;
              }
  
e0e4a976   Renato De Donato   data-sevc-control...
122
123
124
125
126
              #datalet_selection_comment paper-textarea {
                  padding-bottom: 0px;
                  width: calc(100% - 16px);
              }
  
a31f0660   root   sevc-controllet i...
127
              paper-dropdown-menu {
e0e4a976   Renato De Donato   data-sevc-control...
128
                  /*display: inline-block;*/
a31f0660   root   sevc-controllet i...
129
                  height: 48px;
e0e4a976   Renato De Donato   data-sevc-control...
130
131
132
133
                  width: 210px;;
                  /*padding: 0px 8px;*/
                  padding-left: 8px;
                  padding-bottom: 8px;
a31f0660   root   sevc-controllet i...
134
135
136
137
138
139
140
141
142
                  --paper-input-container-focus-color: #2196F3;
              }
  
              paper-item.iron-selected {
                  background-color: #2196F3;
                  color: #FFFFFF;
              }
  
              paper-icon-button {
e0e4a976   Renato De Donato   data-sevc-control...
143
144
145
                  /*display: inline-block;*/
                  color: #2196F3;
                  /*color: #FFFFFF;*/
a31f0660   root   sevc-controllet i...
146
                  --paper-icon-button-ink-color: #2196F3;
e0e4a976   Renato De Donato   data-sevc-control...
147
                  margin: 0px;
a31f0660   root   sevc-controllet i...
148
149
150
151
152
153
154
155
156
                  /*padding: 0px;*/
              }
  
              paper-button {
                  /*display: block;*/
                  position: absolute;
                  bottom: 16px;
                  right: 11px;
  
a31f0660   root   sevc-controllet i...
157
158
159
160
161
162
163
164
165
166
167
                  height: 48px;
                  width: 172px;
                  background-color: #00BCD4;
                  color: white;
                  font-weight: 700;
                  padding: 16px;
              }
  
              paper-button:hover {
                  background-color: #00AABF;
              }
0f6424fe   root   update new data-s...
168
169
170
171
  
              paper-button[disabled] {
                  background-color: #B6B6B6;
              }
a31f0660   root   sevc-controllet i...
172
173
          </style>
  
0f6424fe   root   update new data-s...
174
          <iron-ajax id="selectedDatalet_request" on-response="_handleSelectedDatalet"></iron-ajax>
a31f0660   root   sevc-controllet i...
175
176
  
          <div id="datalet_selection_container">
e0e4a976   Renato De Donato   data-sevc-control...
177
              <items-vslider-controllet id="vslider" datalets-list-url={{dataletsListUrl}} preselected-datalet={{preselectedDatalet}}></items-vslider-controllet>
a31f0660   root   sevc-controllet i...
178
179
180
181
  
  
              <paper-material id="datalet_selection_inputs" elevation="5">
                  <div class="input_header">INPUTS</div>
e0e4a976   Renato De Donato   data-sevc-control...
182
                  <template is="dom-repeat" items="{{inputs}}" index-as="ddl_index">
a31f0660   root   sevc-controllet i...
183
                      <div class="inputs">
e0e4a976   Renato De Donato   data-sevc-control...
184
185
186
187
188
189
190
                          <!--<div class="input_name">-->
                              <!--{{item.name}}-->
                              <!--<div class="info_button">-->
                                  <!--<paper-icon-button id="info_button" on-click="_showInfo" icon="info-outline" title="{{item.name}} info"></paper-icon-button>-->
                              <!--</div>-->
                          <!--</div>-->
                          <paper-dropdown-menu id={{ddl_index}} label={{item.name}}>
a31f0660   root   sevc-controllet i...
191
                              <paper-menu class="dropdown-content">
e0e4a976   Renato De Donato   data-sevc-control...
192
193
                                  <template is="dom-repeat" items={{fields}}>
                                      <paper-item id={{index}} on-tap="_addInput">{{item}}</paper-item>
a31f0660   root   sevc-controllet i...
194
195
196
                                  </template>
                              </paper-menu>
                          </paper-dropdown-menu>
e0e4a976   Renato De Donato   data-sevc-control...
197
198
199
                          <div class="info_button">
                              <paper-icon-button id="info_button" on-click="_showInfo" icon="info-outline" title="{{item.name}} info"></paper-icon-button>
                          </div>
a31f0660   root   sevc-controllet i...
200
201
202
203
204
205
206
207
                      </div>
                  </template>
              </paper-material>
  
              <paper-material id="datalet_selection_labels" elevation="5">
                  <div class="input_header">LABELS</div>
                  <template is="dom-repeat" items="{{labels}}" index-as="index">
                      <div class="inputs">
e0e4a976   Renato De Donato   data-sevc-control...
208
209
210
211
212
213
214
215
216
                          <!--<div class="input_name">-->
                              <!--{{item.name}}-->
                              <!--<div class="info_button">-->
                                  <!--<paper-icon-button id="info_button" on-click="_showInfo" icon="info-outline" title="{{item.name}} info"></paper-icon-button>-->
                              <!--</div>-->
                          <!--</div>-->
                          <paper-textarea label={{item.name}}></paper-textarea>
                          <div class="info_button">
                              <paper-icon-button id="info_button" on-click="_showInfo" icon="info-outline" title="{{item.name}} info"></paper-icon-button>
a31f0660   root   sevc-controllet i...
217
                          </div>
a31f0660   root   sevc-controllet i...
218
219
220
221
222
223
                      </div>
                  </template>
              </paper-material>
  
  
              <div id="datalet_selection_column">
e0e4a976   Renato De Donato   data-sevc-control...
224
  
83faae2e   Renato De Donato   comment-modify
225
                  <!--<template is="dom-if" if={{modify}}>-->
e0e4a976   Renato De Donato   data-sevc-control...
226
227
228
229
                      <paper-material id="datalet_selection_comment" elevation="5">
                          <div class="input_header">COMMENT</div>
                          <paper-textarea id="comment" no-label-float maxlength="100" label="comment (max 100 characters)"></paper-textarea>
                      </paper-material>
83faae2e   Renato De Donato   comment-modify
230
                  <!--</template>-->
a31f0660   root   sevc-controllet i...
231
232
233
234
235
236
237
  
                  <paper-material id="datalet_selection_datalet" elevation="5">
                      <div class="input_header">DATALET PREVIEW</div>
                      <div id="datalet_selection_datalet_placeholder"></div>
  
                  </paper-material>
  
0f6424fe   root   update new data-s...
238
                  <paper-button id="add_button" disabled raised on-click="_addDatalet">ADD DATALET</paper-button>
a31f0660   root   sevc-controllet i...
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
  
              </div>
  
          </div>
  
      </template>
  
      <script>
  
          Polymer({
  
              is : 'datalet-selection-controllet',
  
              properties : {
  
                  deepUrl : {
                      type : String,
                      value : undefined
                  },
  
                  dataletsListUrl : {
                      type : String,
                      value : undefined
                  },
  
                  selectedDatalet : {
                      type  : String,
                      value : undefined
                  },
  
e0e4a976   Renato De Donato   data-sevc-control...
269
270
271
272
273
                  preselectedDatalet : {
                      type  : String,
                      value : undefined
                  },
  
a31f0660   root   sevc-controllet i...
274
275
276
277
278
279
280
281
282
283
284
285
                  inputs : {
                      type : Array,
                      value : []
                  },
  
                  labels : {
                      type : Array,
                      value : []
                  },
  
                  fields : {
                      type : Array,
0f6424fe   root   update new data-s...
286
287
288
289
290
291
292
293
                      value : []
                  },
  
                  selectedFields : {
                      type : Array,
                      value : []
                  },
  
e0e4a976   Renato De Donato   data-sevc-control...
294
295
296
297
  //                selectableFields : {
  //                    type : Array,
  //                    value : []
  //                },
a31f0660   root   sevc-controllet i...
298
299
300
  
                  dataUrl : {
                      type  : String,
0f6424fe   root   update new data-s...
301
                      value : undefined
e0e4a976   Renato De Donato   data-sevc-control...
302
303
304
305
306
                  },
  
                  modify : {
                      type  : Boolean,
                      value : false
a31f0660   root   sevc-controllet i...
307
308
309
310
311
                  }
  
              },
  
              listeners: {
e0e4a976   Renato De Donato   data-sevc-control...
312
                  'items-vslider-controllet_selected-datalet': '_selectDatalet'
0f6424fe   root   update new data-s...
313
  //                'tree-view-controllet_selected-fields': '_updateSelectedFields'
a31f0660   root   sevc-controllet i...
314
315
316
317
318
319
320
              },
  
              ready : function() {
                  this._resize();
                  $(this.$.datalet_selection_inputs).perfectScrollbar();
                  $(this.$.datalet_selection_labels).perfectScrollbar();
                  $(this.$.datalet_selection_datalet).perfectScrollbar();
0f6424fe   root   update new data-s...
321
  
fb432ae9   Renato De Donato   suggested
322
                  this.modify = true;//da eliminare in futuro
e0e4a976   Renato De Donato   data-sevc-control...
323
324
325
326
327
                  if(this.preselectedDatalet){
                      this.modify = true;
                      this._preselectDatalet();
                      this.preselectedDatalet = undefined;
                  }
a31f0660   root   sevc-controllet i...
328
329
330
331
332
333
              },
  
              attached : function() {
                  this._resize();
                  var that = this;
                  window.addEventListener("resize", function() { that._resize(); });
e0e4a976   Renato De Donato   data-sevc-control...
334
335
336
337
338
339
340
  
  //                var inputs = document.getElementsByTagName("paper-dropdown-menu");
  //                console.log(inputs);
  //                for(var i in inputs)
  //                    console.log(i);
  //                for(var i=0; i < inputs.length; i++)
  //                    console.log($(inputs[i]).children("paper-menu"));
a31f0660   root   sevc-controllet i...
341
342
              },
  
0f6424fe   root   update new data-s...
343
344
345
346
              setFields : function(fields) {
                  this.fields = fields;
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
347
348
349
350
351
352
353
354
              reset : function() {
                  this.selectedDatalet = undefined;
                  this.inputs = [];
                  this.labels = [];
                  this.$.datalet_selection_datalet_placeholder.innerHTML = "";
              },
  
              _selectDatalet : function(e){
0f6424fe   root   update new data-s...
355
356
                  this.$.add_button.setAttribute("disabled", "true");
  
a31f0660   root   sevc-controllet i...
357
                  this.selectedDatalet = e.detail.datalet;
0f6424fe   root   update new data-s...
358
359
360
                  this.inputs = [];
                  this.labels = [];
  
a31f0660   root   sevc-controllet i...
361
362
363
364
                  if(this.selectedDatalet){
                      this.$.selectedDatalet_request.url = this.deepUrl + e.detail.datalet + "-datalet";
                      this.$.selectedDatalet_request.generateRequest();
                  }
0f6424fe   root   update new data-s...
365
366
367
368
369
  //                else {
  //                    this.inputs = [];
  //                    this.labels = [];
  //                }
  
e0e4a976   Renato De Donato   data-sevc-control...
370
371
372
  //                this.$.datalet_selection_datalet_placeholder.innerHTML = "";
  //                this.selectedFields = [];
              },
0f6424fe   root   update new data-s...
373
  
e0e4a976   Renato De Donato   data-sevc-control...
374
375
376
377
378
379
380
381
382
383
384
385
              _preselectDatalet : function() {
                  this.$.add_button.innerText = "MODIFY DATALET";
  
  
                  this.selectedDatalet = this.preselectedDatalet;
                  this.selectedFields = this._copy(this.fields);
  
                  var inputs = document.getElementsByTagName("paper-dropdown-menu");
                  for(var i=0; i < inputs.length; i++)
                      $(inputs[i]).find("paper-menu")[0].select(i);
  
                  this._loadDatalet(this.selectedFields);
a31f0660   root   sevc-controllet i...
386
387
              },
  
0f6424fe   root   update new data-s...
388
              _handleSelectedDatalet : function(e){
e0e4a976   Renato De Donato   data-sevc-control...
389
                  this.$.datalet_selection_datalet_placeholder.innerHTML = "";
0f6424fe   root   update new data-s...
390
  
a31f0660   root   sevc-controllet i...
391
392
393
394
395
                  var inputs = e.detail.response.idm.inputs.input;
                  var labels = e.detail.response.idm.inputs.layouts.input;
  
                  if(inputs.constructor == Object) {//not Array && inputs.input.selection == "*"
                      var name = inputs.name;
0f6424fe   root   update new data-s...
396
397
                      var description = inputs.description;
                      var selection = inputs.selection;
a31f0660   root   sevc-controllet i...
398
399
                      inputs = [];
                      for(var i in this.fields)
0f6424fe   root   update new data-s...
400
                          inputs.push({name: name + " " + i, description: description, selection: selection});
a31f0660   root   sevc-controllet i...
401
402
403
404
                  }
  
                  this.inputs = inputs;
                  this.labels = labels;
a31f0660   root   sevc-controllet i...
405
  
e0e4a976   Renato De Donato   data-sevc-control...
406
407
408
409
  //                if(this.inputs[0].selection == "*")
  //                    this.selectedFields = [];
  //                else
                      this.selectedFields = new Array(inputs.length);
0f6424fe   root   update new data-s...
410
411
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
412
              _addInput : function(e){
0f6424fe   root   update new data-s...
413
                  var selectedFields = this._copy(this.selectedFields);
0f6424fe   root   update new data-s...
414
  
e0e4a976   Renato De Donato   data-sevc-control...
415
416
                  var index = $(e.target).parents("paper-dropdown-menu")[0].id;
                  selectedFields[index] = e.target.innerText;
0f6424fe   root   update new data-s...
417
  
e0e4a976   Renato De Donato   data-sevc-control...
418
                  this.selectedFields = this._copy(selectedFields);
0f6424fe   root   update new data-s...
419
  
e0e4a976   Renato De Donato   data-sevc-control...
420
                  var load = true;
0f6424fe   root   update new data-s...
421
  
e0e4a976   Renato De Donato   data-sevc-control...
422
423
424
425
426
427
428
429
430
431
432
433
434
435
                  if(this.inputs[0].selection == "*"){
                      var temp = [];
                      for (var i = 0; i < selectedFields.length; i++)
                          if(selectedFields[i])
                             temp.push(selectedFields[i]);
                      selectedFields = temp;
                  }
                  else {
                      for (var i = 0; i < selectedFields.length; i++)
                          if (!selectedFields[i]) {
                              load = false;
                              break;
                          }
                  }
0f6424fe   root   update new data-s...
436
437
  
                  if(load){
e0e4a976   Renato De Donato   data-sevc-control...
438
439
                      this._loadDatalet(selectedFields);
                  }
0f6424fe   root   update new data-s...
440
  
e0e4a976   Renato De Donato   data-sevc-control...
441
442
443
444
445
446
  //                $("#base_datalet_container").html("");
  //                $("#base_datalet_container").css('visibility','hidden');
  //                $("#base_datalet_container").css('padding','0px');
  //                $("#base_datalet_container").css('height','0px');
  //                console.log($("#base_datalet_container"));
              },
0f6424fe   root   update new data-s...
447
  
e0e4a976   Renato De Donato   data-sevc-control...
448
449
              _loadDatalet : function(selectedFields){
                  var params = {'data-url' : this.dataUrl};
0f6424fe   root   update new data-s...
450
  
e0e4a976   Renato De Donato   data-sevc-control...
451
452
453
454
455
456
                  var dataletParams ={
                      component   : this.selectedDatalet+"-datalet",
                      params      : params,
                      fields      : selectedFields,
                      placeHolder : this.$.datalet_selection_datalet_placeholder
                  };
0f6424fe   root   update new data-s...
457
  
e0e4a976   Renato De Donato   data-sevc-control...
458
459
                  ComponentService.deep_url = this.deepUrl;
                  ComponentService.getComponent(dataletParams);
a31f0660   root   sevc-controllet i...
460
  
e0e4a976   Renato De Donato   data-sevc-control...
461
                  this.async(function(){this.$.add_button.removeAttribute("disabled");}, 1111);
0f6424fe   root   update new data-s...
462
463
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
464
              _addDatalet : function(){
0f6424fe   root   update new data-s...
465
466
467
468
469
470
471
472
473
474
475
476
  
                  var data = {
                      dataUrl : this.dataUrl,
  //                    params :  this.paramsFields,
                      params :  {'data-url' : this.dataUrl},
                      fields :  this.selectedFields,
                      datalet : this.selectedDatalet+"-datalet",
                      comment : this.$.comment.value,
                      staticData : JSON.stringify(this.$.datalet_selection_datalet_placeholder.children[1].behavior.data)
                  }
  
                  this.fire('data-sevc-controllet.dataletCreated', {data : data});
a31f0660   root   sevc-controllet i...
477
478
479
  
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
480
481
482
483
484
485
486
487
488
489
              _copy : function(o) {
                  var out, v, key;
                  out = Array.isArray(o) ? new Array(o.length) : {};
                  for (key in o) {
                      v = o[key];
                      out[key] = (typeof v === "object") ? this._copy(v) : v;
                  }
                  return out;
              },
  
a31f0660   root   sevc-controllet i...
490
491
492
493
494
495
496
497
              _resize : function(){
                  var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16;
                  h = h - 64 - 8; //height with page scroller
  
                  $("#items_vslider_container").height(h);//vslider controllet
  
                  $("#datalet_selection_inputs").height(h);
                  $("#datalet_selection_labels").height(h);
e0e4a976   Renato De Donato   data-sevc-control...
498
499
500
501
                  if(this.modify)
                      $("#datalet_selection_datalet").height(h-128);
                  else
                      $("#datalet_selection_datalet").height(h);
a31f0660   root   sevc-controllet i...
502
503
504
505
506
507
508
              }
  
          });
  
      </script>
  
  </dom-module>