@eclipse-scout/chart 22.0.41 → 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.
Files changed (110) hide show
  1. package/LICENSE +210 -0
  2. package/dist/d.ts/chart/AbstractChartRenderer.d.ts +48 -0
  3. package/dist/d.ts/chart/AbstractChartRenderer.d.ts.map +1 -0
  4. package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts +65 -0
  5. package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts.map +1 -0
  6. package/dist/d.ts/chart/Chart.d.ts +162 -0
  7. package/dist/d.ts/chart/Chart.d.ts.map +1 -0
  8. package/dist/d.ts/chart/ChartAdapter.d.ts +8 -0
  9. package/dist/d.ts/chart/ChartAdapter.d.ts.map +1 -0
  10. package/dist/d.ts/chart/ChartEventMap.d.ts +16 -0
  11. package/dist/d.ts/chart/ChartEventMap.d.ts.map +1 -0
  12. package/dist/d.ts/chart/ChartJsRenderer.d.ts +300 -0
  13. package/dist/d.ts/chart/ChartJsRenderer.d.ts.map +1 -0
  14. package/dist/d.ts/chart/ChartLayout.d.ts +8 -0
  15. package/dist/d.ts/chart/ChartLayout.d.ts.map +1 -0
  16. package/dist/d.ts/chart/ChartModel.d.ts +11 -0
  17. package/dist/d.ts/chart/ChartModel.d.ts.map +1 -0
  18. package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts +22 -0
  19. package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts.map +1 -0
  20. package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts +61 -0
  21. package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts.map +1 -0
  22. package/dist/d.ts/chart/SpeedoChartRenderer.d.ts +90 -0
  23. package/dist/d.ts/chart/SpeedoChartRenderer.d.ts.map +1 -0
  24. package/dist/d.ts/chart/VennAsync3Calculator.d.ts +32 -0
  25. package/dist/d.ts/chart/VennAsync3Calculator.d.ts.map +1 -0
  26. package/dist/d.ts/chart/VennChartRenderer.d.ts +36 -0
  27. package/dist/d.ts/chart/VennChartRenderer.d.ts.map +1 -0
  28. package/dist/d.ts/chart/VennCircle.d.ts +20 -0
  29. package/dist/d.ts/chart/VennCircle.d.ts.map +1 -0
  30. package/dist/d.ts/chart/VennCircleHelper.d.ts +13 -0
  31. package/dist/d.ts/chart/VennCircleHelper.d.ts.map +1 -0
  32. package/dist/d.ts/form/fields/chartfield/ChartField.d.ts +11 -0
  33. package/dist/d.ts/form/fields/chartfield/ChartField.d.ts.map +1 -0
  34. package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts +4 -0
  35. package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts.map +1 -0
  36. package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts +6 -0
  37. package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts.map +1 -0
  38. package/dist/d.ts/index.d.ts +31 -0
  39. package/dist/d.ts/index.d.ts.map +1 -0
  40. package/dist/d.ts/table/controls/ChartTableControl.d.ts +136 -0
  41. package/dist/d.ts/table/controls/ChartTableControl.d.ts.map +1 -0
  42. package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts +5 -0
  43. package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts.map +1 -0
  44. package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts +9 -0
  45. package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts.map +1 -0
  46. package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts +8 -0
  47. package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts.map +1 -0
  48. package/dist/d.ts/table/controls/ChartTableControlModel.d.ts +9 -0
  49. package/dist/d.ts/table/controls/ChartTableControlModel.d.ts.map +1 -0
  50. package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts +29 -0
  51. package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts.map +1 -0
  52. package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts +11 -0
  53. package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts.map +1 -0
  54. package/dist/d.ts/tile/ChartFieldTile.d.ts +14 -0
  55. package/dist/d.ts/tile/ChartFieldTile.d.ts.map +1 -0
  56. package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts +4 -0
  57. package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts.map +1 -0
  58. package/dist/d.ts/tile/ChartFieldTileModel.d.ts +6 -0
  59. package/dist/d.ts/tile/ChartFieldTileModel.d.ts.map +1 -0
  60. package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js +3 -0
  61. package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js.map +1 -0
  62. package/dist/eclipse-scout-chart-theme-dark-89bcf2022056cbf8e371.min.css +1 -0
  63. package/dist/eclipse-scout-chart-theme-dark.css +1 -1
  64. package/dist/eclipse-scout-chart-theme-e25b5923d4dba5f5ca7e.min.css +1 -0
  65. package/dist/eclipse-scout-chart-theme.css +1 -1
  66. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js +3 -0
  67. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map +1 -0
  68. package/dist/eclipse-scout-chart.esm.js +6919 -0
  69. package/dist/eclipse-scout-chart.esm.js.map +1 -0
  70. package/dist/eclipse-scout-chart.js +641 -15109
  71. package/dist/eclipse-scout-chart.js.map +1 -1
  72. package/dist/file-list +8 -5
  73. package/dist/texts.json +17 -17
  74. package/package.json +21 -15
  75. package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +31 -25
  76. package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +78 -43
  77. package/src/chart/{Chart.js → Chart.ts} +151 -61
  78. package/src/chart/ChartAdapter.ts +27 -0
  79. package/src/chart/ChartEventMap.ts +27 -0
  80. package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +356 -350
  81. package/src/chart/{ChartLayout.js → ChartLayout.ts} +9 -8
  82. package/src/chart/ChartModel.ts +21 -0
  83. package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +21 -18
  84. package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +96 -59
  85. package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +50 -36
  86. package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +37 -13
  87. package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +58 -34
  88. package/src/chart/{VennCircle.js → VennCircle.ts} +22 -15
  89. package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +15 -9
  90. package/src/form/fields/chartfield/{ChartField.js → ChartField.ts} +11 -5
  91. package/src/form/fields/chartfield/{ChartFieldAdapter.js → ChartFieldAdapter.ts} +3 -8
  92. package/src/form/fields/chartfield/ChartFieldModel.ts +16 -0
  93. package/src/index.ts +46 -0
  94. package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +160 -120
  95. package/src/table/controls/{ChartTableControlAdapter.js → ChartTableControlAdapter.ts} +3 -4
  96. package/src/table/controls/ChartTableControlEventMap.ts +19 -0
  97. package/src/table/controls/{ChartTableControlLayout.js → ChartTableControlLayout.ts} +7 -5
  98. package/src/table/controls/ChartTableControlModel.ts +19 -0
  99. package/src/table/controls/{ChartTableUserFilter.js → ChartTableUserFilter.ts} +25 -12
  100. package/src/table/controls/ChartTableUserFilterModel.ts +19 -0
  101. package/src/tile/{ChartFieldTile.js → ChartFieldTile.ts} +14 -8
  102. package/src/tile/{ChartFieldTileAdapter.js → ChartFieldTileAdapter.ts} +3 -7
  103. package/src/tile/ChartFieldTileModel.ts +16 -0
  104. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js +0 -3
  105. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js.LICENSE.txt +0 -6
  106. package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js.map +0 -1
  107. package/dist/eclipse-scout-chart-theme-79622289bda68b525e3e.min.css +0 -1
  108. package/dist/eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css +0 -1
  109. package/src/chart/ChartAdapter.js +0 -30
  110. 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
- * @typedef ChartValueGroup
16
- * @property {string} type
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
- * @typedef ClickObject
21
- * @property {number} datasetIndex
22
- * @property {number} dataIndex
23
- * @property {number} [xIndex]
24
- * @property {number} [yIndex]
25
- */
21
+ data: ChartData;
22
+ config: ChartConfig;
23
+ checkedItems: ClickObject[];
24
+
25
+ chartRenderer: AbstractChartRenderer;
26
+
27
+ /** @internal */
28
+ _updatedOnce: boolean;
26
29
 
27
- export default class Chart extends Widget {
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.updatedOnce = false;
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 anyways during the render phase. The ChartLayout
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,43 +245,33 @@ 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 || {};
288
276
  opts.onlyUpdateData = opts.onlyUpdateData && this.chartRenderer && this.chartRenderer.isDataUpdatable();
289
277
  opts.enforceRerender = !opts.onlyUpdateData && !opts.onlyRefresh;
@@ -326,7 +314,7 @@ export default class Chart extends Widget {
326
314
  return;
327
315
  }
328
316
 
329
- this.updatedOnce = true;
317
+ this._updatedOnce = true;
330
318
  if (!this.chartRenderer) {
331
319
  return; // nothing to render when there is no renderer.
332
320
  }
@@ -347,7 +335,7 @@ export default class Chart extends Widget {
347
335
  }
348
336
  }
349
337
 
350
- _resolveChartRenderer() {
338
+ protected _resolveChartRenderer(): AbstractChartRenderer {
351
339
  switch (this.config.type) {
352
340
  case Chart.Type.FULFILLMENT:
353
341
  return new FulfillmentChartRenderer(this);
@@ -372,15 +360,14 @@ export default class Chart extends Widget {
372
360
  return null;
373
361
  }
374
362
 
375
- _updateChartRenderer() {
363
+ protected _updateChartRenderer() {
376
364
  this.chartRenderer && this.chartRenderer.remove();
377
365
  this.setProperty('chartRenderer', this._resolveChartRenderer());
378
366
  }
379
367
 
380
- _onValueClick(event) {
368
+ handleValueClick(clickedItem: ClickObject, originalEvent?: Event) {
381
369
  if (this.config.options.checkable) {
382
370
  let checkedItems = [...this.checkedItems],
383
- clickedItem = event.data,
384
371
  checkedItem = checkedItems.filter(item => item.datasetIndex === clickedItem.datasetIndex && item.dataIndex === clickedItem.dataIndex)[0];
385
372
  if (checkedItem) {
386
373
  arrays.remove(checkedItems, checkedItem);
@@ -389,6 +376,109 @@ export default class Chart extends Widget {
389
376
  }
390
377
  this.setCheckedItems(checkedItems);
391
378
  }
392
- this.trigger('valueClick', event);
379
+ this.trigger('valueClick', {
380
+ data: clickedItem,
381
+ originalEvent
382
+ });
393
383
  }
394
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
+ }