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