@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
package/dist/file-list CHANGED
@@ -1,12 +1,15 @@
1
- eclipse-scout-chart-8eb9461c14872058f638.min.js
2
- eclipse-scout-chart-8eb9461c14872058f638.min.js.LICENSE.txt
3
- eclipse-scout-chart-8eb9461c14872058f638.min.js.map
4
- eclipse-scout-chart-theme-79622289bda68b525e3e.min.css
5
- eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css
1
+ eclipse-scout-chart-fae6f958a044232e659c.min.js
2
+ eclipse-scout-chart-fae6f958a044232e659c.min.js.map
3
+ eclipse-scout-chart-theme-56ba6667e592ef147869.min.css
4
+ eclipse-scout-chart-theme-dark-593955eea95984c5aa62.min.css
6
5
  eclipse-scout-chart-theme-dark.css
7
6
  eclipse-scout-chart-theme-dark.css.map
8
7
  eclipse-scout-chart-theme.css
9
8
  eclipse-scout-chart-theme.css.map
9
+ eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js
10
+ eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map
11
+ eclipse-scout-chart.esm.js
12
+ eclipse-scout-chart.esm.js.map
10
13
  eclipse-scout-chart.js
11
14
  eclipse-scout-chart.js.map
12
15
  file-list
package/dist/texts.json CHANGED
@@ -33,23 +33,6 @@
33
33
  "ui.groupedByYear": "groupé par an",
34
34
  "ui.line": "Ligne"
35
35
  },
36
- "it": {
37
- "ui.Bio": "Bio",
38
- "ui.Brd": "Brd",
39
- "ui.Chart": "Diagramma",
40
- "ui.Mio": "Mio",
41
- "ui.Mrd": "Mrd",
42
- "ui.TooMuchData": "Troppi dati",
43
- "ui.Trd": "Trd",
44
- "ui.Tri": "Tri",
45
- "ui.Value": "Valore",
46
- "ui.bar": "barra",
47
- "ui.groupedByDate": "raggruppato per data",
48
- "ui.groupedByMonth": "raggruppato per mese",
49
- "ui.groupedByWeekday": "raggruppato per giorno della settimana",
50
- "ui.groupedByYear": "raggruppato per anno",
51
- "ui.line": "Linea"
52
- },
53
36
  "de": {
54
37
  "ui.Bio": "Bio.",
55
38
  "ui.Brd": "Brd.",
@@ -66,5 +49,22 @@
66
49
  "ui.groupedByWeekday": "gruppiert nach Wochentag",
67
50
  "ui.groupedByYear": "gruppiert nach Jahr",
68
51
  "ui.line": "Linie"
52
+ },
53
+ "it": {
54
+ "ui.Bio": "Bio",
55
+ "ui.Brd": "Brd",
56
+ "ui.Chart": "Diagramma",
57
+ "ui.Mio": "Mio",
58
+ "ui.Mrd": "Mrd",
59
+ "ui.TooMuchData": "Troppi dati",
60
+ "ui.Trd": "Trd",
61
+ "ui.Tri": "Tri",
62
+ "ui.Value": "Valore",
63
+ "ui.bar": "barra",
64
+ "ui.groupedByDate": "raggruppato per data",
65
+ "ui.groupedByMonth": "raggruppato per mese",
66
+ "ui.groupedByWeekday": "raggruppato per giorno della settimana",
67
+ "ui.groupedByYear": "raggruppato per anno",
68
+ "ui.line": "Linea"
69
69
  }
70
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-scout/chart",
3
- "version": "22.0.41",
3
+ "version": "23.1.1",
4
4
  "description": "Eclipse Scout chart",
5
5
  "author": "BSI Business Systems Integration AG",
6
6
  "homepage": "https://www.eclipse.org/scout",
@@ -8,46 +8,52 @@
8
8
  "type": "git",
9
9
  "url": "https://github.com/eclipse-scout/scout.rt.git"
10
10
  },
11
- "license": "EPL-1.0",
11
+ "license": "EPL-2.0",
12
12
  "engines": {
13
- "node": ">=16.13.0",
14
- "npm": ">=8.1.0",
15
- "pnpm": ">=6.22.2"
13
+ "node": ">=18.12.1",
14
+ "npm": ">=9.1.1",
15
+ "pnpm": ">=7.16.0"
16
16
  },
17
17
  "keywords": [
18
18
  "scout",
19
19
  "eclipse-scout",
20
20
  "chart"
21
21
  ],
22
- "main": "./src/index.js",
22
+ "main": "./dist/eclipse-scout-chart.esm.js",
23
+ "module": "./dist/eclipse-scout-chart.esm.js",
23
24
  "files": [
24
25
  "dist",
25
26
  "src"
26
27
  ],
27
28
  "devDependencies": {
28
- "@eclipse-scout/cli": "22.0.41",
29
+ "@eclipse-scout/cli": "23.1.1",
29
30
  "@eclipse-scout/releng": "^22.0.0",
30
- "jasmine-core": "3.10.1",
31
- "karma": "6.3.20"
31
+ "jasmine-core": "4.5.0",
32
+ "jasmine-jquery": "2.1.1",
33
+ "karma": "6.4.1",
34
+ "@types/jquery": "3.5.14",
35
+ "@types/jasmine": "4.3.0",
36
+ "@types/jasmine-jquery": "1.5.34"
32
37
  },
33
38
  "dependencies": {
34
- "@eclipse-scout/core": "22.0.41",
39
+ "@eclipse-scout/core": "23.1.1",
35
40
  "jquery": "3.6.0",
36
- "chart.js": "3.7.0",
37
- "chartjs-plugin-datalabels": "2.0.0"
41
+ "chart.js": "3.9.1",
42
+ "chartjs-plugin-datalabels": "2.1.0"
38
43
  },
39
44
  "scripts": {
40
45
  "testserver:start": "scout-scripts test-server:start",
41
46
  "testserver:stop": "scout-scripts test-server:stop",
42
47
  "test:ci": "scout-scripts test:ci",
43
- "build:dev": "scout-scripts build:dev",
44
- "build:prod": "scout-scripts build:prod",
45
- "build:all": "scout-scripts build:dev && scout-scripts build:prod",
48
+ "build:dev": "scout-scripts build:dev --run default global",
49
+ "build:prod": "scout-scripts build:prod --run default global",
50
+ "build:all": "npm run build:dev && npm run build:prod",
46
51
  "build:dev:watch": "scout-scripts build:dev:watch",
47
52
  "cleanup:snapshots": "releng-scripts cleanup:snapshots",
48
53
  "version:snapshot:dependencies": "releng-scripts version:snapshot:dependencies",
49
54
  "version:snapshot": "releng-scripts version:snapshot",
50
55
  "version:release:dependencies": "releng-scripts version:release:dependencies",
51
56
  "version:release": "releng-scripts version:release"
52
- }
57
+ },
58
+ "types": "./dist/d.ts/index.d.ts"
53
59
  }
@@ -1,34 +1,39 @@
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
- * http://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
10
 
12
- export default class AbstractChartRenderer {
11
+ import {Chart} from '../index';
12
+ import {Session} from '@eclipse-scout/core';
13
+ import {UpdateChartOptions} from './Chart';
13
14
 
14
- /**
15
- * @param {Chart} chart
16
- */
17
- constructor(chart) {
15
+ export class AbstractChartRenderer {
16
+ chart: Chart;
17
+ session: Session;
18
+
19
+ /** true while this.render() is executing */
20
+ rendering: boolean;
21
+ rendered: boolean;
18
22
 
19
- /**
20
- * @property {Chart} chart
21
- */
23
+ /** set by render() and remove(), makes it unnecessary to carry an argument through all method calls */
24
+ animationDuration: number;
25
+ firstOpaqueBackgroundColor: string;
26
+
27
+ constructor(chart: Chart) {
22
28
  this.chart = chart;
23
29
  this.session = chart.session;
24
- this.rendering = false; // true while this.render() is executing
30
+ this.rendering = false;
25
31
  this.rendered = false;
26
- this.animationDuration = 0; // set by render() and remove(), makes it unnecessary to carry an argument through all method calls
27
-
32
+ this.animationDuration = 0;
28
33
  this.firstOpaqueBackgroundColor = '';
29
34
  }
30
35
 
31
- validate() {
36
+ validate(): boolean {
32
37
  if (!this._validateChartData()) {
33
38
  return false;
34
39
  }
@@ -36,7 +41,7 @@ export default class AbstractChartRenderer {
36
41
  return this._validate();
37
42
  }
38
43
 
39
- _validateChartData() {
44
+ protected _validateChartData(): boolean {
40
45
  let chartData = this.chart && this.chart.data;
41
46
  if (!chartData || !chartData.chartValueGroups || chartData.chartValueGroups.length === 0) {
42
47
  return false;
@@ -71,7 +76,7 @@ export default class AbstractChartRenderer {
71
76
  return true;
72
77
  }
73
78
 
74
- _validate() {
79
+ protected _validate(): boolean {
75
80
  // Override in subclasses
76
81
  return true;
77
82
  }
@@ -81,7 +86,7 @@ export default class AbstractChartRenderer {
81
86
  * Whether animations should be used while rendering the chart. Note that his
82
87
  * property is ignored when chart.config.options.animation.duration is <code>0</code>!
83
88
  */
84
- render(requestAnimation) {
89
+ render(requestAnimation: boolean) {
85
90
  this.animationDuration = requestAnimation ? this.chart.config.options.animation.duration : 0;
86
91
  if (!this.validate() || !this.chart.rendered) {
87
92
  return;
@@ -92,7 +97,7 @@ export default class AbstractChartRenderer {
92
97
  this.rendered = true;
93
98
  }
94
99
 
95
- _render() {
100
+ protected _render() {
96
101
  // Override in subclasses
97
102
  }
98
103
 
@@ -102,7 +107,7 @@ export default class AbstractChartRenderer {
102
107
  }
103
108
  }
104
109
 
105
- _renderCheckedItems() {
110
+ protected _renderCheckedItems() {
106
111
  // nop
107
112
  }
108
113
 
@@ -111,7 +116,7 @@ export default class AbstractChartRenderer {
111
116
  * Whether animations should be used while updating the chart. Note that his
112
117
  * property is ignored when chart.config.options.animation.duration is <code>0</code>!
113
118
  */
114
- updateData(requestAnimation) {
119
+ updateData(requestAnimation: boolean) {
115
120
  if (!this.rendered) {
116
121
  this.render(requestAnimation);
117
122
  return;
@@ -123,11 +128,11 @@ export default class AbstractChartRenderer {
123
128
  this._updateData();
124
129
  }
125
130
 
126
- _updateData() {
131
+ protected _updateData() {
127
132
  // Override in subclasses
128
133
  }
129
134
 
130
- isDataUpdatable() {
135
+ isDataUpdatable(): boolean {
131
136
  return false;
132
137
  }
133
138
 
@@ -143,7 +148,7 @@ export default class AbstractChartRenderer {
143
148
  * Whether animations should be used while removing the chart. Note that his
144
149
  * property is ignored when chart.config.options.animation.duration is <code>0</code>!
145
150
  */
146
- remove(requestAnimation, afterRemoveFunc) {
151
+ remove(requestAnimation = false, afterRemoveFunc?: (chartAnimationStopping?: boolean) => void) {
147
152
  this.animationDuration = requestAnimation && this.chart.config.options.animation.duration;
148
153
  if (this.animationDuration && this.rendered) {
149
154
  this._removeAnimated(afterRemoveFunc);
@@ -152,12 +157,12 @@ export default class AbstractChartRenderer {
152
157
  }
153
158
  }
154
159
 
155
- _remove(afterRemoveFunc) {
160
+ protected _remove(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
156
161
  this.rendered = false;
157
162
  afterRemoveFunc && afterRemoveFunc();
158
163
  }
159
164
 
160
- _removeAnimated(afterRemoveFunc) {
165
+ protected _removeAnimated(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
161
166
  // Override in subclasses
162
167
  this._remove(afterRemoveFunc);
163
168
  }
@@ -165,7 +170,7 @@ export default class AbstractChartRenderer {
165
170
  /**
166
171
  * Controls if the animation of the chart is shown when chart data has been updated.
167
172
  */
168
- shouldAnimateRemoveOnUpdate(opts) {
173
+ shouldAnimateRemoveOnUpdate(opts: UpdateChartOptions): boolean {
169
174
  return opts.requestAnimation;
170
175
  }
171
176
  }
@@ -1,25 +1,34 @@
1
1
  /*
2
- * Copyright (c) 2010-2021 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
- * http://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
10
  import {ObjectFactory, strings, styles} from '@eclipse-scout/core';
12
11
  import $ from 'jquery';
13
12
  import {AbstractChartRenderer, Chart} from '../index';
13
+ import {ClickObject} from './Chart';
14
+
15
+ export class AbstractSvgChartRenderer extends AbstractChartRenderer {
16
+ chartBox: ChartBox;
17
+
18
+ /** Clipping and masking */
19
+ clipId: string;
20
+ maskId: string;
21
+ suppressLegendBox: boolean;
22
+ height: number;
23
+ width: number;
24
+ chartAnimationStopping: boolean;
14
25
 
15
- export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
26
+ $svg: JQuery<SVGElement>;
16
27
 
17
- constructor(chart) {
28
+ constructor(chart: Chart) {
18
29
  super(chart);
19
- this.chartBox = {};
20
- this.labelBox = {};
30
+ this.chartBox = null;
21
31
 
22
- // Clipping and masking
23
32
  this.clipId = 'Clip-' + ObjectFactory.get().createUniqueId();
24
33
  this.maskId = 'Mask-' + ObjectFactory.get().createUniqueId();
25
34
 
@@ -31,16 +40,14 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
31
40
  static FONT_SIZE_MIDDLE = 'middleFont';
32
41
  static FONT_SIZE_BIG = 'bigFont';
33
42
 
34
- _render() {
43
+ protected override _render() {
35
44
  if (!this.$svg) {
36
45
  this.$svg = this.chart.$container.appendSVG('svg', 'chart-svg');
37
46
  }
38
47
  this.firstOpaqueBackgroundColor = styles.getFirstOpaqueBackgroundColor(this.$svg);
39
- this.svgHeight = this.$svg.height();
40
- this.svgWidth = this.$svg.width();
41
48
  // This works, because CSS specifies 100% width/height
42
- this.height = this.svgHeight;
43
- this.width = this.svgWidth;
49
+ this.height = this.$svg.height();
50
+ this.width = this.$svg.width();
44
51
  this._initChartBox();
45
52
  if (this._useFontSizeBig()) {
46
53
  this.$svg.addClass(AbstractSvgChartRenderer.FONT_SIZE_BIG);
@@ -58,27 +65,27 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
58
65
  this._renderInternal();
59
66
  }
60
67
 
61
- _renderInternal() {
68
+ protected _renderInternal() {
62
69
  // Override in subclasses
63
70
  }
64
71
 
65
- _useFontSizeBig() {
72
+ protected _useFontSizeBig(): boolean {
66
73
  return false;
67
74
  }
68
75
 
69
- _useFontSizeMiddle() {
76
+ protected _useFontSizeMiddle(): boolean {
70
77
  return false;
71
78
  }
72
79
 
73
- _useFontSizeSmall() {
80
+ protected _useFontSizeSmall(): boolean {
74
81
  return false;
75
82
  }
76
83
 
77
- _useFontSizeSmallest() {
84
+ protected _useFontSizeSmallest(): boolean {
78
85
  return false;
79
86
  }
80
87
 
81
- remove(requestAnimation, afterRemoveFunc) {
88
+ override remove(requestAnimation = false, afterRemoveFunc?: (chartAnimationStopping?: boolean) => void) {
82
89
  if (this.rendered && !this.chartAnimationStopping) {
83
90
  this.chartAnimationStopping = true;
84
91
  this.$svg.children().stop(true, false);
@@ -87,7 +94,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
87
94
  super.remove(requestAnimation, afterRemoveFunc);
88
95
  }
89
96
 
90
- _remove(afterRemoveFunc) {
97
+ protected override _remove(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
91
98
  // this function is called directly from renderers after all removal animations are done
92
99
  // however, other animations may have been queued in the meantime (e.g. in case the chart was removed, then added (+animation queued), and then removed again)
93
100
  if (this.rendered) {
@@ -104,11 +111,8 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
104
111
 
105
112
  /**
106
113
  * For all parameters: use null when parameter is not used or set by a chart type.
107
- *
108
- * @param xIndex number
109
- * @param datasetIndex number
110
114
  */
111
- _createClickObject(xIndex, datasetIndex) {
115
+ protected _createClickObject(xIndex: number, datasetIndex: number): ClickObject {
112
116
  return {
113
117
  xIndex: xIndex,
114
118
  dataIndex: xIndex,
@@ -116,15 +120,15 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
116
120
  };
117
121
  }
118
122
 
119
- _measureText(text, legendLabelClass) {
123
+ protected _measureText(text: string, legendLabelClass?: string): { height: number; width: number } {
120
124
  let $label = this.$svg.appendSVG('text', legendLabelClass)
121
125
  .attr('x', 0)
122
126
  .attr('y', 0)
123
127
  .attr('visibility', 'hidden')
124
- .text(text);
128
+ .text(text) as JQuery<SVGGraphicsElement>;
125
129
  let textBounds;
126
130
  try {
127
- // Firefox throws error when node is not in dom(already removed by navigating away). all other browser returns a boundingbox with 0
131
+ // Firefox throws error when node is not in dom(already removed by navigating away). all other browser returns a bounding box with 0
128
132
  textBounds = $label[0].getBBox();
129
133
  } catch (e) {
130
134
  return {
@@ -137,7 +141,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
137
141
  return textBounds;
138
142
  }
139
143
 
140
- _renderLine(x1, y1, x2, y2, lineClass) {
144
+ protected _renderLine(x1: number, y1: number, x2: number, y2: number, lineClass: string): JQuery<SVGElement> {
141
145
  let $line = this.$svg.appendSVG('line', lineClass)
142
146
  .attr('x1', x1).attr('y1', y1)
143
147
  .attr('x2', x2).attr('y2', y2);
@@ -149,7 +153,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
149
153
  return $line;
150
154
  }
151
155
 
152
- _renderLineLabel(x, y, label, labelClass, drawBackground) {
156
+ protected _renderLineLabel(x: number, y: number, label: string, labelClass: string, drawBackground: boolean): JQuery<SVGElement> {
153
157
  let $label = this.$svg.appendSVG('text', labelClass ? labelClass : 'line-label')
154
158
  .attr('x', x).attr('y', y)
155
159
  .text(label);
@@ -179,7 +183,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
179
183
  return $label;
180
184
  }
181
185
 
182
- _initChartBox() {
186
+ protected _initChartBox() {
183
187
  this.chartBox = {
184
188
  width: this.width,
185
189
  height: this.height,
@@ -194,7 +198,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
194
198
  };
195
199
  }
196
200
 
197
- _createAnimationObjectWithTabIndexRemoval(animationFunc, duration) {
201
+ protected _createAnimationObjectWithTabIndexRemoval<T>(animationFunc: (now: number, tween: JQuery.Tween<T>) => void, duration?: number): JQuery.EffectsOptions<T> {
198
202
  return {
199
203
  step: function(now, fx) {
200
204
  try {
@@ -212,7 +216,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
212
216
  };
213
217
  }
214
218
 
215
- _addClipping(cssClass) {
219
+ protected _addClipping(cssClass: string) {
216
220
  // add clip and mask paths for all relevant objects
217
221
  let $clip = this.$svg
218
222
  .appendSVG('clipPath');
@@ -234,19 +238,22 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
234
238
  });
235
239
  }
236
240
 
237
- _renderWireLegend(text, legendPositions, className, drawBackgroundBox) {
238
- let legend = {
239
- detachFunc: () => {
240
- },
241
- attachFunc: () => {
242
- },
243
- removeFunc: () => {
244
- }
245
- };
241
+ protected _renderWireLegend(text: string, legendPositions: LegendPositions, className: string, drawBackgroundBox?: boolean): Legend {
246
242
  if (!this.chart.config.options.plugins.tooltip.enabled) {
247
- return legend;
243
+ return {
244
+ detachFunc: () => {
245
+ // nop
246
+ },
247
+ attachFunc: () => {
248
+ // nop
249
+ },
250
+ removeFunc: () => {
251
+ // nop
252
+ }
253
+ };
248
254
  }
249
- let padding = 5,
255
+ let legend = {} as Legend,
256
+ padding = 5,
250
257
  $background,
251
258
  backgroundWidth = 0,
252
259
  lineHeight = 17,
@@ -274,7 +281,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
274
281
  for (let i = 0; i < text.length; i++) {
275
282
  let posIndex = text.length - i - 1;
276
283
  let yPos = positions.y2 + positions.v * padding - lineHeight * posIndex - padding * posIndex;
277
- let $line = this._renderLineLabel(positions.x2 + padding, yPos, strings.truncateText(text[i], horizontalSpace, this._measureText.bind(this)), '', drawBackgroundBox);
284
+ let $line = this._renderLineLabel(positions.x2 + padding, yPos, strings.truncateText(text[i], horizontalSpace, this._measureText.bind(this)), '', drawBackgroundBox) as JQuery<SVGTextContentElement>;
278
285
  $line.addClass(className);
279
286
  lengthLegend = Math.max(lengthLegend, $line[0].getComputedTextLength());
280
287
  if (i === 0) {
@@ -417,3 +424,30 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
417
424
  return legend;
418
425
  }
419
426
  }
427
+
428
+ export type ChartBox = {
429
+ width: number;
430
+ height: number;
431
+ xOffset: number;
432
+ yOffset: number;
433
+ mX: () => number;
434
+ mY: () => number;
435
+ };
436
+
437
+ export type Legend = {
438
+ $field?: JQuery;
439
+ detachFunc: () => void;
440
+ attachFunc: () => void;
441
+ removeFunc: () => void;
442
+ };
443
+
444
+ export type LegendPositions = {
445
+ x1: number;
446
+ x2: number;
447
+ y1: number;
448
+ y2: number;
449
+ v: number;
450
+ h: number;
451
+ autoPosition: boolean;
452
+ posFunc: (labelWidth: number, labelHeight: number) => LegendPositions;
453
+ };
@@ -1,12 +1,11 @@
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
10
  #scout {
12
11
  /* Mixin to use the correct tile background color for the given attribute (use 'fill' or 'stroke') */
@@ -467,7 +466,8 @@
467
466
  & > .elements {
468
467
  #scout.chart-label-grid-colors();
469
468
 
470
- & > .grid {
469
+ & > .grid,
470
+ & > .scale-ticks {
471
471
  fill: darken(@chart-axis-line-color, 15);
472
472
 
473
473
  .inverted > & {