Blame view

controllets/datalet-selection-controllet/datalet-selection-controllet.html 17.9 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){
9579b866   Renato De Donato   firefox bug fix
413
414
415
416
417
                  console.log(e.target.innerHTML.trim());
                  console.log(e.target.innerText);
                  console.log(e.currentTarget.innerHTML.trim());
                  console.log(e.currentTarget.innerText);
  
0f6424fe   root   update new data-s...
418
                  var selectedFields = this._copy(this.selectedFields);
0f6424fe   root   update new data-s...
419
  
e0e4a976   Renato De Donato   data-sevc-control...
420
                  var index = $(e.target).parents("paper-dropdown-menu")[0].id;
9579b866   Renato De Donato   firefox bug fix
421
                  selectedFields[index] = e.target.innerHTML.trim();
0f6424fe   root   update new data-s...
422
  
e0e4a976   Renato De Donato   data-sevc-control...
423
                  this.selectedFields = this._copy(selectedFields);
0f6424fe   root   update new data-s...
424
  
e0e4a976   Renato De Donato   data-sevc-control...
425
                  var load = true;
0f6424fe   root   update new data-s...
426
  
e0e4a976   Renato De Donato   data-sevc-control...
427
428
429
430
431
432
433
434
435
436
437
438
439
440
                  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...
441
442
  
                  if(load){
e0e4a976   Renato De Donato   data-sevc-control...
443
444
                      this._loadDatalet(selectedFields);
                  }
0f6424fe   root   update new data-s...
445
  
e0e4a976   Renato De Donato   data-sevc-control...
446
447
448
449
450
451
  //                $("#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...
452
  
e0e4a976   Renato De Donato   data-sevc-control...
453
454
              _loadDatalet : function(selectedFields){
                  var params = {'data-url' : this.dataUrl};
0f6424fe   root   update new data-s...
455
  
e0e4a976   Renato De Donato   data-sevc-control...
456
457
458
459
460
461
                  var dataletParams ={
                      component   : this.selectedDatalet+"-datalet",
                      params      : params,
                      fields      : selectedFields,
                      placeHolder : this.$.datalet_selection_datalet_placeholder
                  };
0f6424fe   root   update new data-s...
462
  
e0e4a976   Renato De Donato   data-sevc-control...
463
464
                  ComponentService.deep_url = this.deepUrl;
                  ComponentService.getComponent(dataletParams);
a31f0660   root   sevc-controllet i...
465
  
e0e4a976   Renato De Donato   data-sevc-control...
466
                  this.async(function(){this.$.add_button.removeAttribute("disabled");}, 1111);
0f6424fe   root   update new data-s...
467
468
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
469
              _addDatalet : function(){
0f6424fe   root   update new data-s...
470
  
9579b866   Renato De Donato   firefox bug fix
471
472
473
474
475
                  var selectedFields = [];
                  for (var i = 0; i < this.selectedFields.length; i++)
                      if(this.selectedFields[i])
                          selectedFields.push(this.selectedFields[i]);
  
0f6424fe   root   update new data-s...
476
477
478
479
                  var data = {
                      dataUrl : this.dataUrl,
  //                    params :  this.paramsFields,
                      params :  {'data-url' : this.dataUrl},
9579b866   Renato De Donato   firefox bug fix
480
                      fields :  selectedFields,
0f6424fe   root   update new data-s...
481
482
483
484
485
486
                      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...
487
488
489
  
              },
  
e0e4a976   Renato De Donato   data-sevc-control...
490
491
492
493
494
495
496
497
498
499
              _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...
500
501
502
503
504
505
506
507
              _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...
508
509
510
511
                  if(this.modify)
                      $("#datalet_selection_datalet").height(h-128);
                  else
                      $("#datalet_selection_datalet").height(h);
a31f0660   root   sevc-controllet i...
512
513
514
515
516
517
518
              }
  
          });
  
      </script>
  
  </dom-module>