@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.
Files changed (112) 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-dark.css.map +1 -1
  65. package/dist/eclipse-scout-chart-theme-e25b5923d4dba5f5ca7e.min.css +1 -0
  66. package/dist/eclipse-scout-chart-theme.css +1 -1
  67. package/dist/eclipse-scout-chart-theme.css.map +1 -1
  68. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js +3 -0
  69. package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map +1 -0
  70. package/dist/eclipse-scout-chart.esm.js +6919 -0
  71. package/dist/eclipse-scout-chart.esm.js.map +1 -0
  72. package/dist/eclipse-scout-chart.js +683 -15122
  73. package/dist/eclipse-scout-chart.js.map +1 -1
  74. package/dist/file-list +8 -5
  75. package/dist/texts.json +17 -17
  76. package/package.json +21 -15
  77. package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +31 -25
  78. package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +78 -43
  79. package/src/chart/{Chart.js → Chart.ts} +153 -62
  80. package/src/chart/ChartAdapter.ts +27 -0
  81. package/src/chart/ChartEventMap.ts +27 -0
  82. package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +367 -351
  83. package/src/chart/{ChartLayout.js → ChartLayout.ts} +9 -8
  84. package/src/chart/ChartModel.ts +21 -0
  85. package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +21 -18
  86. package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +96 -59
  87. package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +61 -39
  88. package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +37 -13
  89. package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +58 -34
  90. package/src/chart/{VennCircle.js → VennCircle.ts} +22 -15
  91. package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +15 -9
  92. package/src/form/fields/chartfield/{ChartField.js → ChartField.ts} +11 -5
  93. package/src/form/fields/chartfield/{ChartFieldAdapter.js → ChartFieldAdapter.ts} +3 -8
  94. package/src/form/fields/chartfield/ChartFieldModel.ts +16 -0
  95. package/src/index.ts +46 -0
  96. package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +160 -120
  97. package/src/table/controls/{ChartTableControlAdapter.js → ChartTableControlAdapter.ts} +3 -4
  98. package/src/table/controls/ChartTableControlEventMap.ts +19 -0
  99. package/src/table/controls/{ChartTableControlLayout.js → ChartTableControlLayout.ts} +7 -5
  100. package/src/table/controls/ChartTableControlModel.ts +19 -0
  101. package/src/table/controls/{ChartTableUserFilter.js → ChartTableUserFilter.ts} +25 -12
  102. package/src/table/controls/ChartTableUserFilterModel.ts +19 -0
  103. package/src/tile/{ChartFieldTile.js → ChartFieldTile.ts} +14 -8
  104. package/src/tile/{ChartFieldTileAdapter.js → ChartFieldTileAdapter.ts} +3 -7
  105. package/src/tile/ChartFieldTileModel.ts +16 -0
  106. package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js +0 -3
  107. package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.LICENSE.txt +0 -6
  108. package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.map +0 -1
  109. package/dist/eclipse-scout-chart-theme-79622289bda68b525e3e.min.css +0 -1
  110. package/dist/eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css +0 -1
  111. package/src/chart/ChartAdapter.js +0 -30
  112. 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,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.updatedOnce = true;
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 && this.chartRenderer.isDataUpdatable()) {
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
- _onValueClick(event) {
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', event);
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
+ }