Blame view

controllets/select-data-controllet/select-data-controllet.html 8.5 KB
0af843be   Renato De Donato   filters + alasql
1
2
  <link rel="import" href="../../bower_components/polymer/polymer.html" />
  
89558a41   Renato De Donato   datatype, provide...
3
4
  <link rel="import" href="../select-fields-controllet/select-fields-controllet.html" />
  <link rel="import" href="../data-table-controllet/data-table-controllet.html" />
0af843be   Renato De Donato   filters + alasql
5
6
  <link rel="import" href="../filters-controllet/filters-controllet.html" />
  
89558a41   Renato De Donato   datatype, provide...
7
8
9
10
11
12
13
  <link rel="import" href="../providers-utility-controllet/providers-utility-controllet.html" />
  
  <script type="text/javascript" src="../../alasql-utility/alasql.min.js"></script>
  <script type="text/javascript" src="../../alasql-utility/alasql-utility.js"></script>
  
  <script type="text/javascript" src="../../bower_components/JSDataChecker/jsdatachecker.min.js"></script>
  
0af843be   Renato De Donato   filters + alasql
14
15
16
  <dom-module id="select-data-controllet">
  
      <style is="custom-style">
89558a41   Renato De Donato   datatype, provide...
17
18
  
          #select_data_controllet_container {
0af843be   Renato De Donato   filters + alasql
19
20
              display: flex;
              flex-direction: row;
89558a41   Renato De Donato   datatype, provide...
21
              margin-top: 8px;
0af843be   Renato De Donato   filters + alasql
22
          }
89558a41   Renato De Donato   datatype, provide...
23
24
25
26
27
  
          #select_data_controllet_container * {
              font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
              font-size: 16px;
              line-height: 24px;
0af843be   Renato De Donato   filters + alasql
28
          }
0af843be   Renato De Donato   filters + alasql
29
  
89558a41   Renato De Donato   datatype, provide...
30
31
32
33
34
35
36
37
38
39
          #select_data_controllet_container #fields_container {
              height: 100%;
              width: 20%;
              min-width: 192px;
          }
  
          #select_data_controllet_container #right_container {
              height: 100%;
              width: calc(80% - 24px);
              margin-left: 24px;
0af843be   Renato De Donato   filters + alasql
40
41
          }
  
89558a41   Renato De Donato   datatype, provide...
42
43
          #select_data_controllet_container #table_container {
              height: calc(100% - 72px);
0af843be   Renato De Donato   filters + alasql
44
              width: 100%;
0af843be   Renato De Donato   filters + alasql
45
          }
89558a41   Renato De Donato   datatype, provide...
46
47
48
  
          #select_data_controllet_container #filters_container {
              height: 48px;
0af843be   Renato De Donato   filters + alasql
49
              width: 100%;
89558a41   Renato De Donato   datatype, provide...
50
              margin-top: 24px;
0af843be   Renato De Donato   filters + alasql
51
          }
89558a41   Renato De Donato   datatype, provide...
52
  
0af843be   Renato De Donato   filters + alasql
53
54
55
56
      </style>
  
      <template>
  
89558a41   Renato De Donato   datatype, provide...
57
58
59
60
61
62
63
64
65
          <providers-utility-controllet></providers-utility-controllet>
  
          <div id="select_data_controllet_container">
              <div id="fields_container">
                  <select-fields-controllet id="select_fields"></select-fields-controllet>
              </div>
              <div id="right_container">
                  <div id="table_container">
                      <data-table-controllet id="data_table"></data-table-controllet>
0af843be   Renato De Donato   filters + alasql
66
                  </div>
89558a41   Renato De Donato   datatype, provide...
67
                  <div id="filters_container">
0af843be   Renato De Donato   filters + alasql
68
69
                      <filters-controllet id="filters"></filters-controllet>
                  </div>
89558a41   Renato De Donato   datatype, provide...
70
              </div>
0af843be   Renato De Donato   filters + alasql
71
72
          </div>
  
89558a41   Renato De Donato   datatype, provide...
73
  
0af843be   Renato De Donato   filters + alasql
74
75
76
77
78
79
80
81
82
      </template>
  
      <script>
          Polymer({
  
              is : 'select-data-controllet',
  
              properties : {
  
89558a41   Renato De Donato   datatype, provide...
83
                  dataUrl : {
0af843be   Renato De Donato   filters + alasql
84
                      type  : String,
89558a41   Renato De Donato   datatype, provide...
85
86
                      value : undefined
  //                    observer : '_init'
0af843be   Renato De Donato   filters + alasql
87
88
                  },
  
89558a41   Renato De Donato   datatype, provide...
89
90
                  data : {
                      type  : Object,
0af843be   Renato De Donato   filters + alasql
91
92
93
                      value : undefined
                  },
  
89558a41   Renato De Donato   datatype, provide...
94
95
96
97
                  filters : {
                      type  : Array,
                      value : []
  //                    value : [{logicalOperator: "OR"}, {field: "annee", operation: "=", value: "2014"}, {field: "annee", operation: "=", value: "2015"}]
98d9d8a5   Renato De Donato   filters+groupby
98
99
                  },
  
89558a41   Renato De Donato   datatype, provide...
100
                  selectedFields : {
98d9d8a5   Renato De Donato   filters+groupby
101
                      type : Array,
a53fbbed   Renato De Donato   select-dataset ne...
102
                      value : []
89558a41   Renato De Donato   datatype, provide...
103
104
  //                    value : [0,2,4]
                  }
0af843be   Renato De Donato   filters + alasql
105
106
107
108
  
              },
  
              listeners: {
89558a41   Renato De Donato   datatype, provide...
109
110
                  'filters-controllet_show': '_resizeFilters',
                  'select-fields-controllet_selected-fields': '_updateFields',
98d9d8a5   Renato De Donato   filters+groupby
111
                  'filters-controllet_filters': '_updateFilters'
0af843be   Renato De Donato   filters + alasql
112
113
114
              },
  
              ready : function() {
89558a41   Renato De Donato   datatype, provide...
115
                  this.showFilter = false;
0af843be   Renato De Donato   filters + alasql
116
117
118
119
120
121
              },
  
              attached : function(){
                  this._resize();
                  var that = this;
                  window.addEventListener("resize", function() { that._resize(); });
a53fbbed   Renato De Donato   select-dataset ne...
122
123
              },
  
89558a41   Renato De Donato   datatype, provide...
124
125
              getSelectedFields : function() {
                  return utility_getSelectedFields(this.fields, this.selectedFields);;
0af843be   Renato De Donato   filters + alasql
126
127
              },
  
98d9d8a5   Renato De Donato   filters+groupby
128
              getFilters : function() {
89558a41   Renato De Donato   datatype, provide...
129
                  return this.filters;
98d9d8a5   Renato De Donato   filters+groupby
130
131
              },
  
89558a41   Renato De Donato   datatype, provide...
132
              getData : function() {
0f4f5f1b   Renato De Donato   new datalets mult...
133
134
135
136
137
138
139
140
141
                  //return datatable.getData
                  //this.fields = "*"
                  var data = alasql_selectData(this.data, this.fields, this.filters);
                  var converter = new DataTypeConverter();
                  var result = converter.inferJsonDataType(data, ["*"]);
                  result = converter.cast(result);
                  data = result.dataset;
  
                  return data;
0af843be   Renato De Donato   filters + alasql
142
143
              },
  
4f438cd9   Renato De Donato   datalets-modifier
144
145
146
              setSelectedFields : function(selectedFields) {
                  this.async(function() {
                      var selectedIndices = utility_getSelectedIndices(this.fields, selectedFields);
4f438cd9   Renato De Donato   datalets-modifier
147
148
149
150
151
152
153
154
155
156
                      this.$.select_fields.setSelectFields(selectedIndices);
                  }, 0);
              },
  
              setFilters : function(filters) {
                  this.async(function() {
                      this.$.filters.setFilters(filters);
                  }, 0);
              },
  
89558a41   Renato De Donato   datatype, provide...
157
158
159
160
161
162
163
164
165
166
167
168
169
              _resizeFilters : function() {
                  if(!this.showFilter) {
                      this.$.table_container.style.height = "calc(50% - 12px)";
                      this.$.filters_container.style.height = "calc(50% - 12px)";
                  }
                  else {
                      this.$.table_container.style.height = "calc(100% - 72px)";
                      this.$.filters_container.style.height = "48px";
                  }
  
                  this.$.data_table._resize();
  
                  this.showFilter = !this.showFilter;
0af843be   Renato De Donato   filters + alasql
170
171
              },
  
89558a41   Renato De Donato   datatype, provide...
172
173
174
175
176
177
              _updateFields : function(e) {
                  this.selectedFields = e.detail.selectedFields;
                  var fields = utility_getSelectedFields(this.fields, this.selectedFields);
                  var data = alasql_selectData(this.data, fields, this.filters);
                  this.$.data_table.setData(data);
              },
0af843be   Renato De Donato   filters + alasql
178
  
89558a41   Renato De Donato   datatype, provide...
179
180
181
182
183
              _updateFilters : function(e) {
                  this.filters = e.detail.filters;
                  var fields = utility_getSelectedFields(this.fields, this.selectedFields);
                  var data = alasql_selectData(this.data, fields, this.filters);
                  this.$.data_table.setData(data);
0af843be   Renato De Donato   filters + alasql
184
185
              },
  
89558a41   Renato De Donato   datatype, provide...
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
              init : function() {
                  if(this.dataUrl) {
  
                      var that = this;
  
                      $.ajax({
                          url: this.dataUrl,
                          dataType: "json",
                          success: function(data){
                              that.reset();
  
                              var f = Object.create(providerFactory);
                              var provider = f.getProvider(that.dataUrl);
                              data = provider.selectData(data);
  
                              var converter = new DataTypeConverter();
                              var result = converter.inferJsonDataType(data, ["*"]);
                              result = converter.cast(result);
                              that.fields = utility_getFields(result.types);
                              data = result.dataset;
                              that.data = alasql_selectData(data, that.fields);
  
                              that.$.select_fields.setFields(that.fields);
                              that.$.filters.setFields(that.fields);
89558a41   Renato De Donato   datatype, provide...
210
  
a1dedcfa   Renato De Donato   worning x gg
211
212
213
214
                              that.fire('data-ready', {ready : true});
                          },
                          error: function(){
                              that.fire('data-ready', {ready : false});
89558a41   Renato De Donato   datatype, provide...
215
216
                          }
                      });
0314f487   Renato De Donato   filters opendatasoft
217
                  }
0af843be   Renato De Donato   filters + alasql
218
  
89558a41   Renato De Donato   datatype, provide...
219
220
                  else {
                      this.reset();
0af843be   Renato De Donato   filters + alasql
221
  
89558a41   Renato De Donato   datatype, provide...
222
223
224
225
226
227
228
229
230
                      var converter = new DataTypeConverter();
                      var result = converter.inferJsonDataType(this.data, ["*"]);
                      result = converter.cast(result);
                      this.fields = utility_getFields(result.types);
                      data = result.dataset;
                      this.data = alasql_selectData(data, this.fields);
  
                      this.$.select_fields.setFields(this.fields);
                      this.$.filters.setFields(this.fields);
89558a41   Renato De Donato   datatype, provide...
231
                  }
0af843be   Renato De Donato   filters + alasql
232
233
              },
  
89558a41   Renato De Donato   datatype, provide...
234
              reset : function() {
89558a41   Renato De Donato   datatype, provide...
235
236
237
238
239
                  this.filters = [];
                  this.selectedFields = [];
                  this.$.select_fields.reset();
                  this.$.data_table.reset();
                  this.$.filters.reset();
98d9d8a5   Renato De Donato   filters+groupby
240
241
              },
  
0af843be   Renato De Donato   filters + alasql
242
243
              _resize : function(){
                  var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 16;
89558a41   Renato De Donato   datatype, provide...
244
245
                  h = h - 64 - 8; //height with page scroller + margin-top
                  $("#select_data_controllet_container").height(h);
0af843be   Renato De Donato   filters + alasql
246
247
248
249
250
251
252
              }
  
          });
  
      </script>
  
  </dom-module>