ru.coon 2.8.22 → 2.8.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
+ # Version 2.8.23, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c36774795559da6d9f0d5780d591a33e16b1c99f)
2
+ * ## Features
3
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([24fca5], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/24fca5f0d13c24b0e4d76c489d082589647d05de))
4
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([055785], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/05578581ee41bb993ed48efbc9072d0fd11b69b5))
5
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([dd953a], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/dd953a4782945ddfb6516fe8866bc9d6ee9d3370))
6
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([81da35], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/81da35474745b812fcf89c4b569870ed72a4c66e))
7
+
8
+ * upd ([571495], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/571495ffbd6b23c76edd9eac741b87163fc59cdc))
9
+ * add loadFakeData to ReportPanel ([671b7f], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/671b7f27f3538291a56ba8c1b45016910b42e17d))
10
+ * update: CHANGELOG.md ([c73ba4], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/c73ba4e040a66da70edbeb990b8e7d42a690cc1b))
11
+
1
12
  # Version 2.8.22, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/abdcd052a504db9e3ef0d640c05c861dab6fc771)
2
13
  * ## Features
3
14
  * <span style='color:green'>feat: HT-10212: fix layout bug</span> ([cec2b3], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/cec2b36d2917ca56537c119f1ce1ead71c8ca009))
15
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([6ddef7], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/6ddef7e1775c40563be1d0959a6270a929fa7509))
16
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([57ffb8], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/57ffb80671975236cd3cfc78583ac9e13779392b))
17
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([239bb2], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/239bb2d06eeb59e3dee05507fed41f41a8d64498))
4
18
  * <span style='color:green'>feat: HT-10463: fix add in context menu button</span> ([4588f7], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/4588f75ee55b80327192cb7df28770d41d4707c6))
5
19
 
6
20
  * update: CHANGELOG.md ([866504], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/86650477e9606983c72620ed063150bb23fc3e4e))
@@ -8,6 +22,7 @@
8
22
  # Version 2.8.21, [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/dcc7c4b24a73690b18533027979c7ed0e3c88a78)
9
23
  * ## Features
10
24
  * <span style='color:green'>feat: BFL-16584: fix create plugin method</span> ([0b4aaf], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/0b4aafb76151f2a689fed079857e972fb9c34ebd))
25
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([9eff33], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/9eff333c0a480672aea7d594bd44688fe3e89653))
11
26
 
12
27
  * update: CHANGELOG.md ([5cbccf], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/5cbccffafebcc1252fae28c0ca74fa09e43b2180))
13
28
 
@@ -15,6 +30,7 @@
15
30
  * ## Features
16
31
  * <span style='color:green'>feat: BFL-16584: fix create plugin method</span> ([36b867], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/36b8678a1bb336a50930d379219dc61ac5a06a97))
17
32
  * <span style='color:green'>feat: Add itemId property with pluginId value on each toolbar item to auto generate testId. Related to HT-8881.</span> ([32f736], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/32f7362b2a2a090842dd56feadc5586a5188b037))
33
+ * <span style='color:green'>feat: HT-10270 CoonChart new chartType and refactoring</span> ([fee620], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/fee62060cb96b665b4353b1c962b897de1c09046))
18
34
 
19
35
  * update: CHANGELOG.md ([7dcff7], [link](http://gitlab-dbr.sigma-it.local/dbr/ru.coon/-/commit/7dcff78843efc4b137d3796aee2273bf65db0e53))
20
36
 
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "ru.coon"
5
5
  },
6
6
  "description": "",
7
- "version": "2.8.22",
7
+ "version": "2.8.23",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+http://gitlab-dbr.sigma-it.local/dbr/ru.coon"
@@ -63,6 +63,9 @@ Ext.define('Coon.chart.BaseChart', {
63
63
  },
64
64
 
65
65
  clearChart() {
66
+ if (!this.chart) {
67
+ return;
68
+ }
66
69
  this.chart.clear();
67
70
  this.ownerCt.setFilterDefaults({});
68
71
  },
@@ -71,7 +74,7 @@ Ext.define('Coon.chart.BaseChart', {
71
74
  rows = rows || cfg.rows;
72
75
  cfg.series = cfg.serieFields.map((field) => {
73
76
  return Object.assign({}, cfg.serieConfig, {data: rows.map((row) => {
74
- return cfg.serieConfig.type === 'bar' ? row[field] : {name: row[cfg.axisField], value: row[field]};
77
+ return {name: row[cfg.legend], value: row[field]};
75
78
  })});
76
79
  });
77
80
  Coon.log.debug('loadChart', {cfg, rows});
@@ -180,43 +180,45 @@ Ext.define('Coon.chart.CoonChart', {
180
180
  },
181
181
 
182
182
  getChartConfig(type) {
183
+ const typeConfig = type === 'pie' ? type : 'default';
184
+ const defaultConfig = {
185
+ rows: [],
186
+ tooltip: {
187
+ trigger: 'item',
188
+ },
189
+ legend: {},
190
+ };
183
191
  const config = {
184
- bar: {
185
- rows: [],
192
+ default: {
186
193
  categoryAxis: {
187
194
  type: 'category',
188
- data: [],
189
195
  },
190
196
  valueAxis: {
191
197
  type: 'value',
198
+ name: '',
199
+ },
200
+ legend: {
201
+ data: [],
192
202
  },
193
- serieFields: [],
194
203
  serieConfig: {
195
204
  name: '',
196
- type: 'bar',
205
+ type: type,
197
206
  },
207
+ categoryLineY: false,
198
208
  },
199
209
  pie: {
200
- rows: [],
201
- tooltip: {
202
- trigger: 'item',
203
- },
204
210
  legend: {
205
211
  orient: 'vertical',
206
212
  left: 'left',
207
213
  },
208
214
  serieConfig: {
209
215
  name: '',
210
- type: 'pie',
216
+ type: type,
211
217
  radius: '50%',
212
218
  },
213
- serieFields: [],
214
219
  },
215
220
  };
216
- const result = config[type];
217
- if (result) {
218
- return result;
219
- }
221
+ return Ext.apply(defaultConfig, config[typeConfig]);
220
222
  },
221
223
 
222
224
  getCoonChartData(coonChartId) {
@@ -224,7 +226,7 @@ Ext.define('Coon.chart.CoonChart', {
224
226
  loadUiElementCommand.on('complete', function(response) {
225
227
  const propertyData = response.propertyData && JSON.parse(response.propertyData);
226
228
  this.coonChartData = Object.assign(this.getChartConfig(propertyData.chartType), response, propertyData);
227
- this.coonChartData.axisName = this.coonChartData.chartType === 'bar' && this.coonChartData.fieldset[this.coonChartData.axisField];
229
+ // this.coonChartData.axisName = this.coonChartData.chartType === 'bar' && this.coonChartData.fieldset[this.coonChartData.categoryField];
228
230
  this.loadDataFromSource();
229
231
  }, this);
230
232
  loadUiElementCommand.execute(coonChartId);
@@ -237,16 +239,20 @@ Ext.define('Coon.chart.CoonChart', {
237
239
  }
238
240
  const doFilter = (this.filterDefaults ? this.filterDefaults.doFilter : undefined);
239
241
  if (this.autoFilter || doFilter) {
240
- me.mask();
242
+ me.loadMask = new Ext.LoadMask({
243
+ target: me,
244
+ msg: 'Идет построение графика...',
245
+ });
246
+ me.loadMask.show();
241
247
  this.getDataSourceData(this.coonChartData).then(function(data) {
242
248
  if (data && Array.isArray(data.list) && data.list.length > 0) {
243
249
  me.coonChartData.rows = data.list;
244
250
  me.setChartData(me.coonChartData);
245
251
  }
246
- me.unmask();
247
252
  }).catch((error) => {
248
- me.unmask();
249
253
  Coon.log.error('getDataSourceData', error);
254
+ }).finally(() => {
255
+ me.loadMask && me.loadMask.destroy();
250
256
  });
251
257
  }
252
258
  },
@@ -301,51 +307,72 @@ Ext.define('Coon.chart.CoonChart', {
301
307
 
302
308
  setChartData(config, fieldAlerts) {
303
309
  const alerts = [];
304
- const isSettingAxisData = config.serieConfig.type === 'bar';
310
+ const isSettingAxisData = config.chartType === 'bar' || config.chartType === 'line';
311
+ const defaultConfig = this.getChartConfig(config.chartType);
305
312
  const isNumber = (v) => Ext.Number.isFinite(parseFloat(v));
306
- const normalizeSerieValue = (row, field) => {
307
- const value = row[field] && row[field].trim();
308
- if (typeof value !== 'number' && !value && isNumber(config.fieldDefaults)) {
309
- return config.fieldDefaults;
313
+ const normalizeValue = (row, fieldConfig, type) => {
314
+ let value;
315
+ const field = fieldConfig.reportField;
316
+ if (type === 'serie') {
317
+ value = isNumber(row[field]) && row[field] ||
318
+ isNumber(fieldConfig.defaultValue) && fieldConfig.defaultValue;
310
319
  }
311
- if (!isNumber(value)) {
320
+ if (type === 'axis') {
321
+ value = row[field] || fieldConfig.defaultValue;
322
+ }
323
+ if (!value) {
312
324
  alerts.push({type: 'serie', val: field});
325
+ return;
313
326
  }
314
327
  return value;
315
328
  };
316
329
 
317
- config.categoryAxis = config.categoryAxis || {};
318
- const normalizeAxisField = (field) => {
319
- const result = field || config.fieldDefaults[config.axisField];
320
- if (!result) {
321
- alerts.push({type: 'axis', val: config.axisField});
322
- }
323
- return result;
324
- };
325
- const series = config.serieFields.reduce((acc, field) => {
326
- acc[field] = Object.assign({}, config.serieConfig, {data: []});
327
- return acc;
328
- }, {});
329
- config.rows.forEach((row) => {
330
- const axisValue = normalizeAxisField(row[config.axisField]);
331
- isSettingAxisData && config.categoryAxis.data.push(axisValue);
332
- config.serieFields.map((field) => {
333
- series[field].data.push({
334
- name: axisValue,
335
- value: normalizeSerieValue(row, field),
336
- });
330
+ const categoryAxis = config.categoryConfig.map((fieldConfig) => {
331
+ const configObj = Object.assign({}, fieldConfig.additionalConfig, fieldConfig, defaultConfig.categoryAxis);
332
+ delete configObj.additionalConfig;
333
+ return configObj;
334
+ });
335
+ const valueAxis = config.valueConfig.map((fieldConfig) => {
336
+ const configObj = Object.assign({}, fieldConfig.additionalConfig, fieldConfig, defaultConfig.valueAxis);
337
+ delete configObj.additionalConfig;
338
+ return configObj;
339
+ });
340
+ const legend = config.legendConfig.map((fieldConfig) => {
341
+ const configObj = Object.assign({}, fieldConfig.additionalConfig, fieldConfig, defaultConfig.legend);
342
+ delete configObj.additionalConfig;
343
+ return configObj;
344
+ });
345
+ const series = config.serieConfig.map((fieldConfig) => {
346
+ const configObj = Object.assign({}, fieldConfig.additionalConfig, fieldConfig, defaultConfig.serieConfig);
347
+ delete configObj.additionalConfig;
348
+ return configObj;
349
+ });
350
+ config.rows.map((row) => {
351
+ categoryAxis.forEach((categoryEl) => {
352
+ categoryEl.data = categoryEl.data || [];
353
+ categoryEl.data.push(normalizeValue(row, categoryEl, 'axis'));
354
+ });
355
+ series.forEach((serieEl) => {
356
+ serieEl.data = serieEl.data || [];
357
+ serieEl.data.push(normalizeValue(row, serieEl, 'serie'));
358
+ });
359
+ legend.forEach((legendEl) => {
360
+ legendEl.data = legendEl.data || [];
361
+ legendEl.data.push(normalizeValue(row, legendEl, 'axis'));
337
362
  });
338
363
  });
339
-
340
- if (config.axisName === 'x') {
364
+ config.categoryAxis = isSettingAxisData && categoryAxis;
365
+ config.valueAxis = isSettingAxisData && valueAxis;
366
+ config.legend = legend;
367
+ if (isSettingAxisData && !config.categoryLineY) {
341
368
  config.xAxis = config.categoryAxis;
342
369
  config.yAxis = config.valueAxis;
343
370
  }
344
- if (config.axisName === 'y') {
371
+ if (isSettingAxisData && config.categoryLineY) {
345
372
  config.yAxis = config.categoryAxis;
346
373
  config.xAxis = config.valueAxis;
347
374
  }
348
- config.series = Object.values(series);
375
+ config.series = series;
349
376
  this.showErrorMessage(alerts, fieldAlerts);
350
377
  this.down('BaseChart').clearChart();
351
378
  this.loadChart(config);
@@ -34,13 +34,10 @@ Ext.define('Coon.chart.editor.CoonChartEditor', {
34
34
  type: 'vbox',
35
35
  align: 'stretch',
36
36
  },
37
- // defaults: {
38
- // flex: 1,
39
- // },
40
37
  items: [
41
38
  {
42
39
  xtype: 'panel',
43
- title: 'Параметры',
40
+ title: 'Параметры диаграммы',
44
41
  layout: {
45
42
  type: 'vbox',
46
43
  align: 'stretch',
@@ -74,61 +71,98 @@ Ext.define('Coon.chart.editor.CoonChartEditor', {
74
71
  reference: 'description',
75
72
  xtype: 'textfield',
76
73
  bind: '{coonChart.description}',
74
+ },
75
+ {
76
+ xtype: 'combo',
77
+ fieldLabel: 'Тип диаграммы',
78
+ reference: 'chartType',
79
+ editable: false,
80
+ bind: {
81
+ value: '{coonChart.chartType}',
82
+ },
83
+ store: ['bar', 'pie', 'line'],
77
84
  }
78
85
  ],
79
86
  },
80
87
  {
81
- xtype: 'combo',
82
- fieldLabel: 'тип диаграммы',
83
- reference: 'chartType',
84
- editable: false,
85
- bind: {
86
- value: '{coonChart.chartType}',
88
+ xtype: 'panel',
89
+ layout: {
90
+ type: 'hbox',
91
+ align: 'stretch',
87
92
  },
88
- store: ['bar', 'pie'],
89
- },
90
- {
91
- xtype: 'radiogroup',
92
- reference: 'sourceType',
93
93
  items: [
94
- {boxLabel: 'репорт', name: 'sourceType', inputValue: 'report'},
95
- {boxLabel: 'команда', name: 'sourceType', inputValue: 'command'}
96
- ],
97
- },
98
- {
99
- xtype: 'AbstractComponentComboBox',
100
- fieldLabel: 'команда',
101
- reference: 'command',
102
- displayField: 'name',
103
- valueField: 'value',
104
- getData() {
105
- return [];
106
- },
107
- bind: {
108
- value: '{coonChart.commandSourceId}',
109
- hidden: '{coonChart.sourceType === "report"}',
110
- },
111
- },
94
+ {
95
+ xtype: 'combo',
96
+ reference: 'sourceType',
97
+ displayField: 'descr',
98
+ valueField: 'val',
99
+ name: 'sourceType',
100
+ flex: 1,
101
+ store: [
102
+ {descr: 'репорт', val: 'report'},
103
+ {descr: 'команда', val: 'command'}
104
+ ],
105
+ bind: {
106
+ value: '{coonChart.sourceType}',
107
+ },
108
+ },
109
+ {
110
+ xtype: 'AbstractComponentComboBox',
111
+ fieldLabel: 'команда',
112
+ reference: 'command',
113
+ displayField: 'name',
114
+ valueField: 'value',
115
+ flex: 2,
116
+ getData() {
117
+ return [];
118
+ },
119
+ bind: {
120
+ value: '{coonChart.commandSourceId}',
121
+ hidden: '{coonChart.sourceType === "report"}',
122
+ },
123
+ },
124
+ {
125
+ xtype: 'ReportLookupCombo',
126
+ reportId: 'REPORTS',
127
+ valueField: 'CM_REPORT_CD',
128
+ displayField: 'CM_REPORT_CD',
129
+ reference: 'reportSourceField',
130
+ flex: 2,
131
+ bind: {
132
+ value: '{coonChart.reportSourceId}',
133
+ hidden: '{coonChart.sourceType === "command"}',
134
+ },
135
+ }
136
+ ]},
112
137
  {
113
138
  xtype: 'textfield',
114
- fieldLabel: 'reportId',
115
- reference: 'reportSourceField',
139
+ fieldLabel: 'Параметры в фомате {"parameter1Name":"value","parameter2Name":"value"}',
140
+ reference: 'parametersField',
116
141
  bind: {
117
- value: '{coonChart.reportSourceId}',
118
- hidden: '{coonChart.sourceType === "command"}',
142
+ value: '{coonChart.parameters}',
119
143
  },
120
144
  },
121
145
  {
122
- xtype: 'textfield',
123
- fieldLabel: 'parameters',
124
- reference: 'parametersField',
146
+ xtype: 'checkbox',
147
+ boxLabel: 'Отобразить категорию по оси y',
148
+ boxLabelAlign: 'after',
125
149
  bind: {
126
- value: '{coonChart.parameters}',
150
+ value: '{coonChart.categoryLineY}',
127
151
  },
128
152
  }
129
153
  ],
130
154
  buttons: [
131
- {text: 'загрузить данные', itemId: 'configDataSourceBindBtn'}
155
+ {
156
+ text: 'Загрузить данные',
157
+ itemId: 'configDataSourceBindBtn',
158
+ handler: 'configDataSourceBinds',
159
+ },
160
+ {
161
+ text: 'Отобразить диаграмму',
162
+ tooltip: 'Чтобы отобразить диаграмму нужно загрузить данные',
163
+ itemId: 'loadDataBtn',
164
+ handler: 'showCoonChartHandler',
165
+ }
132
166
  ],
133
167
  },
134
168
  {
@@ -140,23 +174,6 @@ Ext.define('Coon.chart.editor.CoonChartEditor', {
140
174
  align: 'stretch',
141
175
  },
142
176
  items: [
143
- // {
144
- // xtype: 'panel',
145
- // title: 'конфигурация',
146
- // layout: {
147
- // type: 'vbox',
148
- // align: 'stretch',
149
- // },
150
- // flex: 1,
151
- // items: [
152
- // {
153
- // xtype: 'UiAceEditor',
154
- // reference: 'UiAceEditor',
155
- // flex: 1,
156
- // margin: 10,
157
- // }
158
- // ],
159
- // },
160
177
  {
161
178
  xtype: 'DataSourceChartBindForm',
162
179
  flex: 1,
@@ -183,7 +200,11 @@ Ext.define('Coon.chart.editor.CoonChartEditor', {
183
200
  {text: 'отменить', itemId: 'cancel', handler(btn) {
184
201
  btn.up('CoonChartEditor').close();
185
202
  }},
186
- {text: 'подтвердить', itemId: 'submit'}
203
+ {
204
+ text: 'подтвердить',
205
+ itemId: 'submit',
206
+ handler: 'onSubmitCoonChart',
207
+ }
187
208
  ],
188
209
 
189
210
  });