@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.
Files changed (130) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +4 -8
  3. package/dist/d.ts/chart/AbstractChartRenderer.d.ts +48 -0
  4. package/dist/d.ts/chart/AbstractChartRenderer.d.ts.map +1 -0
  5. package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts +65 -0
  6. package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts.map +1 -0
  7. package/dist/d.ts/chart/Chart.d.ts +162 -0
  8. package/dist/d.ts/chart/Chart.d.ts.map +1 -0
  9. package/dist/d.ts/chart/ChartAdapter.d.ts +8 -0
  10. package/dist/d.ts/chart/ChartAdapter.d.ts.map +1 -0
  11. package/dist/d.ts/chart/ChartEventMap.d.ts +16 -0
  12. package/dist/d.ts/chart/ChartEventMap.d.ts.map +1 -0
  13. package/dist/d.ts/chart/ChartJsRenderer.d.ts +299 -0
  14. package/dist/d.ts/chart/ChartJsRenderer.d.ts.map +1 -0
  15. package/dist/d.ts/chart/ChartLayout.d.ts +8 -0
  16. package/dist/d.ts/chart/ChartLayout.d.ts.map +1 -0
  17. package/dist/d.ts/chart/ChartModel.d.ts +11 -0
  18. package/dist/d.ts/chart/ChartModel.d.ts.map +1 -0
  19. package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts +22 -0
  20. package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts.map +1 -0
  21. package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts +61 -0
  22. package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts.map +1 -0
  23. package/dist/d.ts/chart/SpeedoChartRenderer.d.ts +90 -0
  24. package/dist/d.ts/chart/SpeedoChartRenderer.d.ts.map +1 -0
  25. package/dist/d.ts/chart/VennAsync3Calculator.d.ts +32 -0
  26. package/dist/d.ts/chart/VennAsync3Calculator.d.ts.map +1 -0
  27. package/dist/d.ts/chart/VennChartRenderer.d.ts +36 -0
  28. package/dist/d.ts/chart/VennChartRenderer.d.ts.map +1 -0
  29. package/dist/d.ts/chart/VennCircle.d.ts +20 -0
  30. package/dist/d.ts/chart/VennCircle.d.ts.map +1 -0
  31. package/dist/d.ts/chart/VennCircleHelper.d.ts +13 -0
  32. package/dist/d.ts/chart/VennCircleHelper.d.ts.map +1 -0
  33. package/dist/d.ts/form/fields/chartfield/ChartField.d.ts +11 -0
  34. package/dist/d.ts/form/fields/chartfield/ChartField.d.ts.map +1 -0
  35. package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts +4 -0
  36. package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts.map +1 -0
  37. package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts +6 -0
  38. package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts.map +1 -0
  39. package/dist/d.ts/index.d.ts +31 -0
  40. package/dist/d.ts/index.d.ts.map +1 -0
  41. package/dist/d.ts/table/controls/ChartTableControl.d.ts +136 -0
  42. package/dist/d.ts/table/controls/ChartTableControl.d.ts.map +1 -0
  43. package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts +5 -0
  44. package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts.map +1 -0
  45. package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts +9 -0
  46. package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts.map +1 -0
  47. package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts +8 -0
  48. package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts.map +1 -0
  49. package/dist/d.ts/table/controls/ChartTableControlModel.d.ts +9 -0
  50. package/dist/d.ts/table/controls/ChartTableControlModel.d.ts.map +1 -0
  51. package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts +28 -0
  52. package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts.map +1 -0
  53. package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts +11 -0
  54. package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts.map +1 -0
  55. package/dist/d.ts/tile/ChartFieldTile.d.ts +14 -0
  56. package/dist/d.ts/tile/ChartFieldTile.d.ts.map +1 -0
  57. package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts +4 -0
  58. package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts.map +1 -0
  59. package/dist/d.ts/tile/ChartFieldTileModel.d.ts +6 -0
  60. package/dist/d.ts/tile/ChartFieldTileModel.d.ts.map +1 -0
  61. package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js +3 -0
  62. package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js.map +1 -0
  63. package/dist/eclipse-scout-chart-theme-56ba6667e592ef147869.min.css +1 -0
  64. package/dist/eclipse-scout-chart-theme-dark-593955eea95984c5aa62.min.css +1 -0
  65. package/dist/eclipse-scout-chart-theme-dark.css +53 -59
  66. package/dist/eclipse-scout-chart-theme-dark.css.map +1 -1
  67. package/dist/eclipse-scout-chart-theme.css +41 -45
  68. package/dist/eclipse-scout-chart-theme.css.map +1 -1
  69. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js +3 -0
  70. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map +1 -0
  71. package/dist/eclipse-scout-chart.esm.js +6898 -0
  72. package/dist/eclipse-scout-chart.esm.js.map +1 -0
  73. package/dist/eclipse-scout-chart.js +737 -15226
  74. package/dist/eclipse-scout-chart.js.map +1 -1
  75. package/dist/file-list +8 -5
  76. package/dist/texts.json +17 -17
  77. package/package.json +22 -16
  78. package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +36 -31
  79. package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +82 -48
  80. package/src/chart/Chart.less +8 -8
  81. package/src/chart/{Chart.js → Chart.ts} +157 -68
  82. package/src/chart/ChartAdapter.ts +26 -0
  83. package/src/chart/ChartEventMap.ts +26 -0
  84. package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +362 -357
  85. package/src/chart/{ChartLayout.js → ChartLayout.ts} +13 -13
  86. package/src/chart/ChartModel.ts +20 -0
  87. package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +25 -23
  88. package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +102 -66
  89. package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +56 -43
  90. package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +41 -18
  91. package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +63 -40
  92. package/src/chart/VennCircle.ts +47 -0
  93. package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +19 -14
  94. package/src/eclipse-scout-chart-theme-dark.less +7 -8
  95. package/src/eclipse-scout-chart-theme.less +7 -8
  96. package/src/form/fields/chartfield/ChartField.ts +44 -0
  97. package/src/form/fields/chartfield/ChartFieldAdapter.ts +13 -0
  98. package/src/form/fields/chartfield/ChartFieldModel.ts +15 -0
  99. package/src/index-dark.less +6 -7
  100. package/src/index.less +6 -7
  101. package/src/index.ts +45 -0
  102. package/src/style/colors-dark.less +7 -8
  103. package/src/style/colors.less +6 -7
  104. package/src/table/controls/ChartTableControl.less +6 -7
  105. package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +164 -125
  106. package/src/table/controls/ChartTableControlAdapter.ts +18 -0
  107. package/src/table/controls/ChartTableControlEventMap.ts +18 -0
  108. package/src/table/controls/ChartTableControlLayout.ts +30 -0
  109. package/src/table/controls/ChartTableControlModel.ts +18 -0
  110. package/src/table/controls/ChartTableUserFilter.ts +84 -0
  111. package/src/table/controls/ChartTableUserFilterModel.ts +18 -0
  112. package/src/tile/ChartFieldTile.less +6 -7
  113. package/src/tile/ChartFieldTile.ts +51 -0
  114. package/src/tile/ChartFieldTileAdapter.ts +13 -0
  115. package/src/tile/ChartFieldTileModel.ts +15 -0
  116. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js +0 -3
  117. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js.LICENSE.txt +0 -6
  118. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js.map +0 -1
  119. package/dist/eclipse-scout-chart-theme-79622289bda68b525e3e.min.css +0 -1
  120. package/dist/eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css +0 -1
  121. package/src/chart/ChartAdapter.js +0 -30
  122. package/src/chart/VennCircle.js +0 -41
  123. package/src/form/fields/chartfield/ChartField.js +0 -39
  124. package/src/form/fields/chartfield/ChartFieldAdapter.js +0 -19
  125. package/src/index.js +0 -36
  126. package/src/table/controls/ChartTableControlAdapter.js +0 -20
  127. package/src/table/controls/ChartTableControlLayout.js +0 -29
  128. package/src/table/controls/ChartTableUserFilter.js +0 -72
  129. package/src/tile/ChartFieldTile.js +0 -46
  130. package/src/tile/ChartFieldTileAdapter.js +0 -18
@@ -1,52 +1,49 @@
1
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
2
+ * Copyright (c) 2010, 2023 BSI Business Systems Integration AG
7
3
  *
8
- * Contributors:
9
- * BSI Business Systems Integration AG - initial API and implementation
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
- * @typedef ChartValueGroup
16
- * @property {string} type
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
- * @typedef ClickObject
21
- * @property {number} datasetIndex
22
- * @property {number} dataIndex
23
- * @property {number} [xIndex]
24
- * @property {number} [yIndex]
25
- */
20
+ data: ChartData;
21
+ config: ChartConfig;
22
+ checkedItems: ClickObject[];
23
+
24
+ chartRenderer: AbstractChartRenderer;
26
25
 
27
- export default class Chart extends Widget {
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.updatedOnce = false;
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 anyways during the render phase. The ChartLayout
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.updatedOnce = true;
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
- _onValueClick(event) {
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', event);
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
+ }