@eclipse-scout/chart 22.0.39 → 23.1.0-beta.4
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/LICENSE +210 -0
- package/dist/d.ts/chart/AbstractChartRenderer.d.ts +48 -0
- package/dist/d.ts/chart/AbstractChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts +65 -0
- package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/Chart.d.ts +162 -0
- package/dist/d.ts/chart/Chart.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartAdapter.d.ts +8 -0
- package/dist/d.ts/chart/ChartAdapter.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartEventMap.d.ts +16 -0
- package/dist/d.ts/chart/ChartEventMap.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartJsRenderer.d.ts +300 -0
- package/dist/d.ts/chart/ChartJsRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartLayout.d.ts +8 -0
- package/dist/d.ts/chart/ChartLayout.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartModel.d.ts +11 -0
- package/dist/d.ts/chart/ChartModel.d.ts.map +1 -0
- package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts +22 -0
- package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts +61 -0
- package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/SpeedoChartRenderer.d.ts +90 -0
- package/dist/d.ts/chart/SpeedoChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/VennAsync3Calculator.d.ts +32 -0
- package/dist/d.ts/chart/VennAsync3Calculator.d.ts.map +1 -0
- package/dist/d.ts/chart/VennChartRenderer.d.ts +36 -0
- package/dist/d.ts/chart/VennChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/VennCircle.d.ts +20 -0
- package/dist/d.ts/chart/VennCircle.d.ts.map +1 -0
- package/dist/d.ts/chart/VennCircleHelper.d.ts +13 -0
- package/dist/d.ts/chart/VennCircleHelper.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartField.d.ts +11 -0
- package/dist/d.ts/form/fields/chartfield/ChartField.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts +4 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts +6 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts.map +1 -0
- package/dist/d.ts/index.d.ts +31 -0
- package/dist/d.ts/index.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControl.d.ts +136 -0
- package/dist/d.ts/table/controls/ChartTableControl.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts +5 -0
- package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts +9 -0
- package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts +8 -0
- package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlModel.d.ts +9 -0
- package/dist/d.ts/table/controls/ChartTableControlModel.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts +29 -0
- package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts +11 -0
- package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTile.d.ts +14 -0
- package/dist/d.ts/tile/ChartFieldTile.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts +4 -0
- package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTileModel.d.ts +6 -0
- package/dist/d.ts/tile/ChartFieldTileModel.d.ts.map +1 -0
- package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js +3 -0
- package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js.map +1 -0
- package/dist/eclipse-scout-chart-theme-dark-89bcf2022056cbf8e371.min.css +1 -0
- package/dist/eclipse-scout-chart-theme-dark.css +1 -1
- package/dist/eclipse-scout-chart-theme-dark.css.map +1 -1
- package/dist/eclipse-scout-chart-theme-e25b5923d4dba5f5ca7e.min.css +1 -0
- package/dist/eclipse-scout-chart-theme.css +1 -1
- package/dist/eclipse-scout-chart-theme.css.map +1 -1
- package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js +3 -0
- package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map +1 -0
- package/dist/eclipse-scout-chart.esm.js +6919 -0
- package/dist/eclipse-scout-chart.esm.js.map +1 -0
- package/dist/eclipse-scout-chart.js +683 -15122
- package/dist/eclipse-scout-chart.js.map +1 -1
- package/dist/file-list +8 -5
- package/dist/texts.json +17 -17
- package/package.json +21 -15
- package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +31 -25
- package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +78 -43
- package/src/chart/{Chart.js → Chart.ts} +153 -62
- package/src/chart/ChartAdapter.ts +27 -0
- package/src/chart/ChartEventMap.ts +27 -0
- package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +367 -351
- package/src/chart/{ChartLayout.js → ChartLayout.ts} +9 -8
- package/src/chart/ChartModel.ts +21 -0
- package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +21 -18
- package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +96 -59
- package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +61 -39
- package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +37 -13
- package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +58 -34
- package/src/chart/{VennCircle.js → VennCircle.ts} +22 -15
- package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +15 -9
- package/src/form/fields/chartfield/{ChartField.js → ChartField.ts} +11 -5
- package/src/form/fields/chartfield/{ChartFieldAdapter.js → ChartFieldAdapter.ts} +3 -8
- package/src/form/fields/chartfield/ChartFieldModel.ts +16 -0
- package/src/index.ts +46 -0
- package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +160 -120
- package/src/table/controls/{ChartTableControlAdapter.js → ChartTableControlAdapter.ts} +3 -4
- package/src/table/controls/ChartTableControlEventMap.ts +19 -0
- package/src/table/controls/{ChartTableControlLayout.js → ChartTableControlLayout.ts} +7 -5
- package/src/table/controls/ChartTableControlModel.ts +19 -0
- package/src/table/controls/{ChartTableUserFilter.js → ChartTableUserFilter.ts} +25 -12
- package/src/table/controls/ChartTableUserFilterModel.ts +19 -0
- package/src/tile/{ChartFieldTile.js → ChartFieldTile.ts} +14 -8
- package/src/tile/{ChartFieldTileAdapter.js → ChartFieldTileAdapter.ts} +3 -7
- package/src/tile/ChartFieldTileModel.ts +16 -0
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js +0 -3
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.LICENSE.txt +0 -6
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.map +0 -1
- package/dist/eclipse-scout-chart-theme-79622289bda68b525e3e.min.css +0 -1
- package/dist/eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css +0 -1
- package/src/chart/ChartAdapter.js +0 -30
- package/src/index.js +0 -36
|
@@ -8,45 +8,43 @@
|
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
|
-
import {ChartJsRenderer, ChartLayout, FulfillmentChartRenderer, SalesfunnelChartRenderer, SpeedoChartRenderer, VennChartRenderer} from '../index';
|
|
12
|
-
import {arrays, colorSchemes, HtmlComponent, objects, Widget} from '@eclipse-scout/core';
|
|
11
|
+
import {AbstractChartRenderer, ChartEventMap, ChartJsRenderer, ChartLayout, ChartModel, FulfillmentChartRenderer, SalesfunnelChartRenderer, SpeedoChartRenderer, VennChartRenderer} from '../index';
|
|
12
|
+
import {arrays, ColorScheme, colorSchemes, EnumObject, HtmlComponent, InitModelOf, objects, Widget} from '@eclipse-scout/core';
|
|
13
|
+
import {GreenAreaPosition} from './SpeedoChartRenderer';
|
|
14
|
+
import {ChartConfiguration, LinearScaleOptions, RadialLinearScaleOptions} from 'chart.js';
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export class Chart extends Widget implements ChartModel {
|
|
17
|
+
declare model: ChartModel;
|
|
18
|
+
declare eventMap: ChartEventMap;
|
|
19
|
+
declare self: Chart;
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
21
|
+
data: ChartData;
|
|
22
|
+
config: ChartConfig;
|
|
23
|
+
checkedItems: ClickObject[];
|
|
24
|
+
|
|
25
|
+
chartRenderer: AbstractChartRenderer;
|
|
26
|
+
|
|
27
|
+
/** @internal */
|
|
28
|
+
_updatedOnce: boolean;
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
protected _updateChartTimeoutId: number;
|
|
31
|
+
protected _updateChartOpts: UpdateChartOptions;
|
|
32
|
+
protected _updateChartOptsWhileNotAttached: UpdateChartOptions[];
|
|
28
33
|
|
|
29
34
|
constructor() {
|
|
30
35
|
super();
|
|
31
36
|
|
|
32
37
|
this.$container = null;
|
|
33
|
-
this.chartRenderer = null;
|
|
34
38
|
|
|
35
|
-
/**
|
|
36
|
-
* @type {object}
|
|
37
|
-
* @property {ChartValueGroup[]} chartValueGroups
|
|
38
|
-
*/
|
|
39
39
|
this.data = null;
|
|
40
40
|
this.config = null;
|
|
41
|
-
/**
|
|
42
|
-
* @type {ClickObject[]}
|
|
43
|
-
*/
|
|
44
41
|
this.checkedItems = [];
|
|
45
42
|
|
|
43
|
+
this.chartRenderer = null;
|
|
46
44
|
this._updateChartTimeoutId = null;
|
|
47
45
|
this._updateChartOpts = null;
|
|
48
46
|
this._updateChartOptsWhileNotAttached = [];
|
|
49
|
-
this.
|
|
47
|
+
this._updatedOnce = false;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
static Type = {
|
|
@@ -64,7 +62,7 @@ export default class Chart extends Widget {
|
|
|
64
62
|
RADAR: 'radar',
|
|
65
63
|
BUBBLE: 'bubble',
|
|
66
64
|
SCATTER: 'scatter'
|
|
67
|
-
};
|
|
65
|
+
} as const;
|
|
68
66
|
|
|
69
67
|
static Position = {
|
|
70
68
|
TOP: 'top',
|
|
@@ -72,28 +70,28 @@ export default class Chart extends Widget {
|
|
|
72
70
|
LEFT: 'left',
|
|
73
71
|
RIGHT: 'right',
|
|
74
72
|
CENTER: 'center'
|
|
75
|
-
};
|
|
73
|
+
} as const;
|
|
76
74
|
|
|
77
75
|
static DEFAULT_ANIMATION_DURATION = 600; // ms
|
|
78
76
|
static DEFAULT_DEBOUNCE_TIMEOUT = 100; // ms
|
|
79
77
|
|
|
80
|
-
_init(model) {
|
|
78
|
+
protected override _init(model: InitModelOf<this>) {
|
|
81
79
|
super._init(model);
|
|
82
80
|
this.setConfig(this.config);
|
|
83
81
|
}
|
|
84
82
|
|
|
85
|
-
_render() {
|
|
83
|
+
protected override _render() {
|
|
86
84
|
this.$container = this.$parent.appendDiv('chart');
|
|
87
85
|
|
|
88
86
|
this.htmlComp = HtmlComponent.install(this.$container, this.session);
|
|
89
87
|
this.htmlComp.setLayout(new ChartLayout(this));
|
|
90
88
|
|
|
91
89
|
// !!! Do _not_ update the chart here, because usually the container size
|
|
92
|
-
// !!! is not correct
|
|
90
|
+
// !!! is not correct anyway during the render phase. The ChartLayout
|
|
93
91
|
// !!! will eventually call updateChart() when the layout is validated.
|
|
94
92
|
}
|
|
95
93
|
|
|
96
|
-
_renderProperties() {
|
|
94
|
+
protected override _renderProperties() {
|
|
97
95
|
super._renderProperties();
|
|
98
96
|
this._renderClickable();
|
|
99
97
|
this._renderCheckable();
|
|
@@ -105,12 +103,12 @@ export default class Chart extends Widget {
|
|
|
105
103
|
});
|
|
106
104
|
}
|
|
107
105
|
|
|
108
|
-
_renderOnAttach() {
|
|
106
|
+
protected override _renderOnAttach() {
|
|
109
107
|
super._renderOnAttach();
|
|
110
108
|
this._updateChartOptsWhileNotAttached.splice(0).forEach(opts => this.updateChart($.extend(true, {}, opts, {debounce: true})));
|
|
111
109
|
}
|
|
112
110
|
|
|
113
|
-
_remove() {
|
|
111
|
+
protected override _remove() {
|
|
114
112
|
if (this.chartRenderer) {
|
|
115
113
|
this.chartRenderer.remove(false);
|
|
116
114
|
}
|
|
@@ -118,12 +116,12 @@ export default class Chart extends Widget {
|
|
|
118
116
|
this.$container = null;
|
|
119
117
|
}
|
|
120
118
|
|
|
121
|
-
setData(data) {
|
|
119
|
+
setData(data: ChartData) {
|
|
122
120
|
this.setProperty('data', data);
|
|
123
121
|
this.setCheckedItems(this.checkedItems);
|
|
124
122
|
}
|
|
125
123
|
|
|
126
|
-
_renderData() {
|
|
124
|
+
protected _renderData() {
|
|
127
125
|
this.updateChart({
|
|
128
126
|
requestAnimation: true,
|
|
129
127
|
debounce: Chart.DEFAULT_DEBOUNCE_TIMEOUT,
|
|
@@ -131,7 +129,7 @@ export default class Chart extends Widget {
|
|
|
131
129
|
});
|
|
132
130
|
}
|
|
133
131
|
|
|
134
|
-
setConfig(config) {
|
|
132
|
+
setConfig(config: ChartConfig) {
|
|
135
133
|
let defaultConfig = {
|
|
136
134
|
type: Chart.Type.PIE,
|
|
137
135
|
options: {
|
|
@@ -174,7 +172,7 @@ export default class Chart extends Widget {
|
|
|
174
172
|
delete oldConfigWithNewData.data;
|
|
175
173
|
}
|
|
176
174
|
|
|
177
|
-
// the label map is technically part of the config, but it is handled as data. Therefore it is excluded from this check.
|
|
175
|
+
// the label map is technically part of the config, but it is handled as data. Therefore, it is excluded from this check.
|
|
178
176
|
let transferLabelMap = (source, target, identifier) => {
|
|
179
177
|
if (!source || !target || !identifier) {
|
|
180
178
|
return;
|
|
@@ -214,7 +212,7 @@ export default class Chart extends Widget {
|
|
|
214
212
|
this._updateChartRenderer();
|
|
215
213
|
}
|
|
216
214
|
|
|
217
|
-
_renderConfig(onlyUpdateData) {
|
|
215
|
+
protected _renderConfig(onlyUpdateData: boolean) {
|
|
218
216
|
this._renderClickable();
|
|
219
217
|
this._renderCheckable();
|
|
220
218
|
this._renderChartType();
|
|
@@ -226,11 +224,11 @@ export default class Chart extends Widget {
|
|
|
226
224
|
});
|
|
227
225
|
}
|
|
228
226
|
|
|
229
|
-
setCheckedItems(checkedItems) {
|
|
227
|
+
setCheckedItems(checkedItems: ClickObject[]) {
|
|
230
228
|
this.setProperty('checkedItems', arrays.ensure(this._filterCheckedItems(checkedItems)));
|
|
231
229
|
}
|
|
232
230
|
|
|
233
|
-
_filterCheckedItems(checkedItems) {
|
|
231
|
+
protected _filterCheckedItems(checkedItems: ClickObject[]): ClickObject[] {
|
|
234
232
|
if (!Array.isArray(checkedItems)) {
|
|
235
233
|
return checkedItems;
|
|
236
234
|
}
|
|
@@ -247,44 +245,35 @@ export default class Chart extends Widget {
|
|
|
247
245
|
return checkedItems;
|
|
248
246
|
}
|
|
249
247
|
|
|
250
|
-
_renderCheckedItems() {
|
|
248
|
+
protected _renderCheckedItems() {
|
|
251
249
|
if (this.chartRenderer) {
|
|
252
250
|
this.chartRenderer.renderCheckedItems();
|
|
253
251
|
}
|
|
254
252
|
}
|
|
255
253
|
|
|
256
|
-
|
|
257
|
-
* @override
|
|
258
|
-
*/
|
|
259
|
-
_renderEnabled() {
|
|
254
|
+
protected override _renderEnabled() {
|
|
260
255
|
this.updateChart();
|
|
261
256
|
}
|
|
262
257
|
|
|
263
|
-
_renderClickable() {
|
|
258
|
+
protected _renderClickable() {
|
|
264
259
|
this.$container.toggleClass('clickable', this.config.options.clickable);
|
|
265
260
|
}
|
|
266
261
|
|
|
267
|
-
_renderCheckable() {
|
|
262
|
+
protected _renderCheckable() {
|
|
268
263
|
this.$container.toggleClass('checkable', this.config.options.checkable);
|
|
269
264
|
}
|
|
270
265
|
|
|
271
|
-
_renderChartType() {
|
|
266
|
+
protected _renderChartType() {
|
|
272
267
|
this.$container.addClass(this.config.type + '-chart');
|
|
273
268
|
}
|
|
274
269
|
|
|
275
|
-
_renderColorScheme() {
|
|
270
|
+
protected _renderColorScheme() {
|
|
276
271
|
colorSchemes.toggleColorSchemeClasses(this.$container, this.config.options.colorScheme);
|
|
277
272
|
}
|
|
278
273
|
|
|
279
|
-
|
|
280
|
-
* @param opts
|
|
281
|
-
* [requestAnimation] default false
|
|
282
|
-
* [debounce] default 0
|
|
283
|
-
* [onlyUpdateData] default false
|
|
284
|
-
* [onlyRefresh] default false
|
|
285
|
-
*/
|
|
286
|
-
updateChart(opts) {
|
|
274
|
+
updateChart(opts?: UpdateChartOptions) {
|
|
287
275
|
opts = opts || {};
|
|
276
|
+
opts.onlyUpdateData = opts.onlyUpdateData && this.chartRenderer && this.chartRenderer.isDataUpdatable();
|
|
288
277
|
opts.enforceRerender = !opts.onlyUpdateData && !opts.onlyRefresh;
|
|
289
278
|
|
|
290
279
|
// Cancel previously scheduled update and merge opts
|
|
@@ -325,7 +314,7 @@ export default class Chart extends Widget {
|
|
|
325
314
|
return;
|
|
326
315
|
}
|
|
327
316
|
|
|
328
|
-
this.
|
|
317
|
+
this._updatedOnce = true;
|
|
329
318
|
if (!this.chartRenderer) {
|
|
330
319
|
return; // nothing to render when there is no renderer.
|
|
331
320
|
}
|
|
@@ -338,7 +327,7 @@ export default class Chart extends Widget {
|
|
|
338
327
|
this.chartRenderer.render(opts.requestAnimation);
|
|
339
328
|
this.trigger('chartRender');
|
|
340
329
|
});
|
|
341
|
-
} else if (opts.onlyUpdateData
|
|
330
|
+
} else if (opts.onlyUpdateData) {
|
|
342
331
|
this.chartRenderer.updateData(opts.requestAnimation);
|
|
343
332
|
} else if (opts.onlyRefresh) {
|
|
344
333
|
this.chartRenderer.refresh();
|
|
@@ -346,7 +335,7 @@ export default class Chart extends Widget {
|
|
|
346
335
|
}
|
|
347
336
|
}
|
|
348
337
|
|
|
349
|
-
_resolveChartRenderer() {
|
|
338
|
+
protected _resolveChartRenderer(): AbstractChartRenderer {
|
|
350
339
|
switch (this.config.type) {
|
|
351
340
|
case Chart.Type.FULFILLMENT:
|
|
352
341
|
return new FulfillmentChartRenderer(this);
|
|
@@ -371,15 +360,14 @@ export default class Chart extends Widget {
|
|
|
371
360
|
return null;
|
|
372
361
|
}
|
|
373
362
|
|
|
374
|
-
_updateChartRenderer() {
|
|
363
|
+
protected _updateChartRenderer() {
|
|
375
364
|
this.chartRenderer && this.chartRenderer.remove();
|
|
376
365
|
this.setProperty('chartRenderer', this._resolveChartRenderer());
|
|
377
366
|
}
|
|
378
367
|
|
|
379
|
-
|
|
368
|
+
handleValueClick(clickedItem: ClickObject, originalEvent?: Event) {
|
|
380
369
|
if (this.config.options.checkable) {
|
|
381
370
|
let checkedItems = [...this.checkedItems],
|
|
382
|
-
clickedItem = event.data,
|
|
383
371
|
checkedItem = checkedItems.filter(item => item.datasetIndex === clickedItem.datasetIndex && item.dataIndex === clickedItem.dataIndex)[0];
|
|
384
372
|
if (checkedItem) {
|
|
385
373
|
arrays.remove(checkedItems, checkedItem);
|
|
@@ -388,6 +376,109 @@ export default class Chart extends Widget {
|
|
|
388
376
|
}
|
|
389
377
|
this.setCheckedItems(checkedItems);
|
|
390
378
|
}
|
|
391
|
-
this.trigger('valueClick',
|
|
379
|
+
this.trigger('valueClick', {
|
|
380
|
+
data: clickedItem,
|
|
381
|
+
originalEvent
|
|
382
|
+
});
|
|
392
383
|
}
|
|
393
384
|
}
|
|
385
|
+
|
|
386
|
+
export type ChartData = {
|
|
387
|
+
axes: ChartAxis[][];
|
|
388
|
+
chartValueGroups: ChartValueGroup[];
|
|
389
|
+
};
|
|
390
|
+
export type ChartAxis = {
|
|
391
|
+
label: string;
|
|
392
|
+
};
|
|
393
|
+
export type ChartValueGroup = {
|
|
394
|
+
type?: string;
|
|
395
|
+
groupName: string;
|
|
396
|
+
values: number[] | Record<string, number>[];
|
|
397
|
+
colorHexValue?: string;
|
|
398
|
+
cssClass?: string;
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
export type ChartConfig = Partial<Omit<ChartConfiguration, 'type'>> & {
|
|
402
|
+
type: ChartType;
|
|
403
|
+
options?: {
|
|
404
|
+
autoColor?: boolean;
|
|
405
|
+
colorScheme?: ColorScheme | string;
|
|
406
|
+
transparent?: boolean;
|
|
407
|
+
maxSegments?: number;
|
|
408
|
+
otherSegmentClickable?: boolean;
|
|
409
|
+
adjustGridMaxMin?: boolean;
|
|
410
|
+
clickable?: boolean;
|
|
411
|
+
checkable?: boolean;
|
|
412
|
+
scaleLabelByTypeMap?: Record<ChartType, Record<string, string>>;
|
|
413
|
+
numberFormatter?: NumberFormatter;
|
|
414
|
+
reformatLabels?: boolean;
|
|
415
|
+
handleResize?: boolean;
|
|
416
|
+
animation?: {
|
|
417
|
+
duration?: number;
|
|
418
|
+
};
|
|
419
|
+
scales?: {
|
|
420
|
+
x?: LinearScaleOptions & {
|
|
421
|
+
minSpaceBetweenTicks?: number;
|
|
422
|
+
};
|
|
423
|
+
y?: LinearScaleOptions & {
|
|
424
|
+
minSpaceBetweenTicks?: number;
|
|
425
|
+
};
|
|
426
|
+
yDiffType?: LinearScaleOptions;
|
|
427
|
+
r?: RadialLinearScaleOptions & {
|
|
428
|
+
minSpaceBetweenTicks?: number;
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
bubble?: {
|
|
432
|
+
sizeOfLargestBubble?: number;
|
|
433
|
+
minBubbleSize?: number;
|
|
434
|
+
};
|
|
435
|
+
fulfillment?: {
|
|
436
|
+
startValue?: number;
|
|
437
|
+
};
|
|
438
|
+
salesfunnel?: {
|
|
439
|
+
normalized?: boolean;
|
|
440
|
+
calcConversionRate?: boolean;
|
|
441
|
+
};
|
|
442
|
+
speedo?: {
|
|
443
|
+
greenAreaPosition?: GreenAreaPosition;
|
|
444
|
+
};
|
|
445
|
+
venn?: {
|
|
446
|
+
numberOfCircles?: 1 | 2 | 3;
|
|
447
|
+
};
|
|
448
|
+
plugins?: {
|
|
449
|
+
legend?: {
|
|
450
|
+
clickable?: boolean;
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
export type ChartType = EnumObject<typeof Chart.Type>;
|
|
456
|
+
export type ChartPosition = EnumObject<typeof Chart.Position>;
|
|
457
|
+
export type NumberFormatter = (label: number | string, defaultFormatter: (label: number | string) => string) => string;
|
|
458
|
+
|
|
459
|
+
export type ClickObject = {
|
|
460
|
+
datasetIndex: number;
|
|
461
|
+
dataIndex: number;
|
|
462
|
+
xIndex?: number;
|
|
463
|
+
yIndex?: number;
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
export type UpdateChartOptions = {
|
|
467
|
+
/**
|
|
468
|
+
* Default is false.
|
|
469
|
+
*/
|
|
470
|
+
requestAnimation?: boolean;
|
|
471
|
+
/**
|
|
472
|
+
* Default is 0.
|
|
473
|
+
*/
|
|
474
|
+
debounce?: number | boolean;
|
|
475
|
+
/**
|
|
476
|
+
* Default is false.
|
|
477
|
+
*/
|
|
478
|
+
onlyUpdateData?: boolean;
|
|
479
|
+
/**
|
|
480
|
+
* Default is false.
|
|
481
|
+
*/
|
|
482
|
+
onlyRefresh?: boolean;
|
|
483
|
+
enforceRerender?: boolean;
|
|
484
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2010-2022 BSI Business Systems Integration AG.
|
|
3
|
+
* All rights reserved. This program and the accompanying materials
|
|
4
|
+
* are made available under the terms of the Eclipse Public License v1.0
|
|
5
|
+
* which accompanies this distribution, and is available at
|
|
6
|
+
* https://www.eclipse.org/legal/epl-v10.html
|
|
7
|
+
*
|
|
8
|
+
* Contributors:
|
|
9
|
+
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
|
+
*/
|
|
11
|
+
import {Event, ModelAdapter} from '@eclipse-scout/core';
|
|
12
|
+
import {Chart} from '../index';
|
|
13
|
+
import {ChartValueClickEvent} from './ChartEventMap';
|
|
14
|
+
|
|
15
|
+
export class ChartAdapter extends ModelAdapter {
|
|
16
|
+
protected _onWidgetValueClick(event: ChartValueClickEvent) {
|
|
17
|
+
this._send('valueClick', event.data);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
protected override _onWidgetEvent(event: Event<Chart>) {
|
|
21
|
+
if (event.type === 'valueClick') {
|
|
22
|
+
this._onWidgetValueClick(event as ChartValueClickEvent);
|
|
23
|
+
} else {
|
|
24
|
+
super._onWidgetEvent(event);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2010-2022 BSI Business Systems Integration AG.
|
|
3
|
+
* All rights reserved. This program and the accompanying materials
|
|
4
|
+
* are made available under the terms of the Eclipse Public License v1.0
|
|
5
|
+
* which accompanies this distribution, and is available at
|
|
6
|
+
* https://www.eclipse.org/legal/epl-v10.html
|
|
7
|
+
*
|
|
8
|
+
* Contributors:
|
|
9
|
+
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
|
+
*/
|
|
11
|
+
import {Event as ScoutEvent, PropertyChangeEvent, WidgetEventMap} from '@eclipse-scout/core';
|
|
12
|
+
import {AbstractChartRenderer, Chart} from '../index';
|
|
13
|
+
import {ChartConfig, ChartData, ClickObject} from './Chart';
|
|
14
|
+
|
|
15
|
+
export interface ChartValueClickEvent<C = Chart> extends ScoutEvent<C> {
|
|
16
|
+
data: ClickObject;
|
|
17
|
+
originalEvent?: Event;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ChartEventMap extends WidgetEventMap {
|
|
21
|
+
'chartRender': ScoutEvent<Chart>;
|
|
22
|
+
'valueClick': ChartValueClickEvent;
|
|
23
|
+
'propertyChange:chartRenderer': PropertyChangeEvent<AbstractChartRenderer>;
|
|
24
|
+
'propertyChange:checkedItems': PropertyChangeEvent<ClickObject[]>;
|
|
25
|
+
'propertyChange:config': PropertyChangeEvent<ChartConfig>;
|
|
26
|
+
'propertyChange:data': PropertyChangeEvent<ChartData>;
|
|
27
|
+
}
|