@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.
- package/LICENSE +210 -0
- package/dist/d.ts/chart/AbstractChartRenderer.d.ts +48 -0
- package/dist/d.ts/chart/AbstractChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts +65 -0
- package/dist/d.ts/chart/AbstractSvgChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/Chart.d.ts +162 -0
- package/dist/d.ts/chart/Chart.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartAdapter.d.ts +8 -0
- package/dist/d.ts/chart/ChartAdapter.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartEventMap.d.ts +16 -0
- package/dist/d.ts/chart/ChartEventMap.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartJsRenderer.d.ts +300 -0
- package/dist/d.ts/chart/ChartJsRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartLayout.d.ts +8 -0
- package/dist/d.ts/chart/ChartLayout.d.ts.map +1 -0
- package/dist/d.ts/chart/ChartModel.d.ts +11 -0
- package/dist/d.ts/chart/ChartModel.d.ts.map +1 -0
- package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts +22 -0
- package/dist/d.ts/chart/FulfillmentChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts +61 -0
- package/dist/d.ts/chart/SalesfunnelChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/SpeedoChartRenderer.d.ts +90 -0
- package/dist/d.ts/chart/SpeedoChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/VennAsync3Calculator.d.ts +32 -0
- package/dist/d.ts/chart/VennAsync3Calculator.d.ts.map +1 -0
- package/dist/d.ts/chart/VennChartRenderer.d.ts +36 -0
- package/dist/d.ts/chart/VennChartRenderer.d.ts.map +1 -0
- package/dist/d.ts/chart/VennCircle.d.ts +20 -0
- package/dist/d.ts/chart/VennCircle.d.ts.map +1 -0
- package/dist/d.ts/chart/VennCircleHelper.d.ts +13 -0
- package/dist/d.ts/chart/VennCircleHelper.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartField.d.ts +11 -0
- package/dist/d.ts/form/fields/chartfield/ChartField.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts +4 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldAdapter.d.ts.map +1 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts +6 -0
- package/dist/d.ts/form/fields/chartfield/ChartFieldModel.d.ts.map +1 -0
- package/dist/d.ts/index.d.ts +31 -0
- package/dist/d.ts/index.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControl.d.ts +136 -0
- package/dist/d.ts/table/controls/ChartTableControl.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts +5 -0
- package/dist/d.ts/table/controls/ChartTableControlAdapter.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts +9 -0
- package/dist/d.ts/table/controls/ChartTableControlEventMap.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts +8 -0
- package/dist/d.ts/table/controls/ChartTableControlLayout.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableControlModel.d.ts +9 -0
- package/dist/d.ts/table/controls/ChartTableControlModel.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts +29 -0
- package/dist/d.ts/table/controls/ChartTableUserFilter.d.ts.map +1 -0
- package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts +11 -0
- package/dist/d.ts/table/controls/ChartTableUserFilterModel.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTile.d.ts +14 -0
- package/dist/d.ts/tile/ChartFieldTile.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts +4 -0
- package/dist/d.ts/tile/ChartFieldTileAdapter.d.ts.map +1 -0
- package/dist/d.ts/tile/ChartFieldTileModel.d.ts +6 -0
- package/dist/d.ts/tile/ChartFieldTileModel.d.ts.map +1 -0
- package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js +3 -0
- package/dist/eclipse-scout-chart-fae6f958a044232e659c.min.js.map +1 -0
- package/dist/eclipse-scout-chart-theme-dark-89bcf2022056cbf8e371.min.css +1 -0
- package/dist/eclipse-scout-chart-theme-dark.css +1 -1
- package/dist/eclipse-scout-chart-theme-dark.css.map +1 -1
- package/dist/eclipse-scout-chart-theme-e25b5923d4dba5f5ca7e.min.css +1 -0
- package/dist/eclipse-scout-chart-theme.css +1 -1
- package/dist/eclipse-scout-chart-theme.css.map +1 -1
- package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js +3 -0
- package/dist/eclipse-scout-chart.esm-2119cfea86a9d6f34a35.min.js.map +1 -0
- package/dist/eclipse-scout-chart.esm.js +6919 -0
- package/dist/eclipse-scout-chart.esm.js.map +1 -0
- package/dist/eclipse-scout-chart.js +683 -15122
- package/dist/eclipse-scout-chart.js.map +1 -1
- package/dist/file-list +8 -5
- package/dist/texts.json +17 -17
- package/package.json +21 -15
- package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +31 -25
- package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +78 -43
- package/src/chart/{Chart.js → Chart.ts} +153 -62
- package/src/chart/ChartAdapter.ts +27 -0
- package/src/chart/ChartEventMap.ts +27 -0
- package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +367 -351
- package/src/chart/{ChartLayout.js → ChartLayout.ts} +9 -8
- package/src/chart/ChartModel.ts +21 -0
- package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +21 -18
- package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +96 -59
- package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +61 -39
- package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +37 -13
- package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +58 -34
- package/src/chart/{VennCircle.js → VennCircle.ts} +22 -15
- package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +15 -9
- package/src/form/fields/chartfield/{ChartField.js → ChartField.ts} +11 -5
- package/src/form/fields/chartfield/{ChartFieldAdapter.js → ChartFieldAdapter.ts} +3 -8
- package/src/form/fields/chartfield/ChartFieldModel.ts +16 -0
- package/src/index.ts +46 -0
- package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +160 -120
- package/src/table/controls/{ChartTableControlAdapter.js → ChartTableControlAdapter.ts} +3 -4
- package/src/table/controls/ChartTableControlEventMap.ts +19 -0
- package/src/table/controls/{ChartTableControlLayout.js → ChartTableControlLayout.ts} +7 -5
- package/src/table/controls/ChartTableControlModel.ts +19 -0
- package/src/table/controls/{ChartTableUserFilter.js → ChartTableUserFilter.ts} +25 -12
- package/src/table/controls/ChartTableUserFilterModel.ts +19 -0
- package/src/tile/{ChartFieldTile.js → ChartFieldTile.ts} +14 -8
- package/src/tile/{ChartFieldTileAdapter.js → ChartFieldTileAdapter.ts} +3 -7
- package/src/tile/ChartFieldTileModel.ts +16 -0
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js +0 -3
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.LICENSE.txt +0 -6
- package/dist/eclipse-scout-chart-bc08151d11e1909eff6c.min.js.map +0 -1
- package/dist/eclipse-scout-chart-theme-79622289bda68b525e3e.min.css +0 -1
- package/dist/eclipse-scout-chart-theme-dark-1de09c03e3dc40a9529a.min.css +0 -1
- package/src/chart/ChartAdapter.js +0 -30
- package/src/index.js +0 -36
package/dist/file-list
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
eclipse-scout-chart-
|
|
2
|
-
eclipse-scout-chart-
|
|
3
|
-
eclipse-scout-chart-
|
|
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-dark-89bcf2022056cbf8e371.min.css
|
|
6
4
|
eclipse-scout-chart-theme-dark.css
|
|
7
5
|
eclipse-scout-chart-theme-dark.css.map
|
|
6
|
+
eclipse-scout-chart-theme-e25b5923d4dba5f5ca7e.min.css
|
|
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": "
|
|
3
|
+
"version": "23.1.0-beta.4",
|
|
4
4
|
"description": "Eclipse Scout chart",
|
|
5
5
|
"author": "BSI Business Systems Integration AG",
|
|
6
6
|
"homepage": "https://www.eclipse.org/scout",
|
|
@@ -10,44 +10,50 @@
|
|
|
10
10
|
},
|
|
11
11
|
"license": "EPL-1.0",
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
14
|
-
"npm": ">=
|
|
15
|
-
"pnpm": ">=
|
|
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": "./
|
|
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": "
|
|
29
|
+
"@eclipse-scout/cli": "23.1.0-beta.4",
|
|
29
30
|
"@eclipse-scout/releng": "^22.0.0",
|
|
30
|
-
"jasmine-core": "
|
|
31
|
-
"
|
|
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": "
|
|
39
|
+
"@eclipse-scout/core": "23.1.0-beta.4",
|
|
35
40
|
"jquery": "3.6.0",
|
|
36
|
-
"chart.js": "3.
|
|
37
|
-
"chartjs-plugin-datalabels": "2.
|
|
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": "
|
|
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
|
}
|
|
@@ -3,32 +3,38 @@
|
|
|
3
3
|
* All rights reserved. This program and the accompanying materials
|
|
4
4
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
5
5
|
* which accompanies this distribution, and is available at
|
|
6
|
-
*
|
|
6
|
+
* https://www.eclipse.org/legal/epl-v10.html
|
|
7
7
|
*
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
import {Chart} from '../index';
|
|
13
|
+
import {Session} from '@eclipse-scout/core';
|
|
14
|
+
import {UpdateChartOptions} from './Chart';
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export class AbstractChartRenderer {
|
|
17
|
+
chart: Chart;
|
|
18
|
+
session: Session;
|
|
19
|
+
|
|
20
|
+
/** true while this.render() is executing */
|
|
21
|
+
rendering: boolean;
|
|
22
|
+
rendered: boolean;
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
/** set by render() and remove(), makes it unnecessary to carry an argument through all method calls */
|
|
25
|
+
animationDuration: number;
|
|
26
|
+
firstOpaqueBackgroundColor: string;
|
|
27
|
+
|
|
28
|
+
constructor(chart: Chart) {
|
|
22
29
|
this.chart = chart;
|
|
23
30
|
this.session = chart.session;
|
|
24
|
-
this.rendering = false;
|
|
31
|
+
this.rendering = false;
|
|
25
32
|
this.rendered = false;
|
|
26
|
-
this.animationDuration = 0;
|
|
27
|
-
|
|
33
|
+
this.animationDuration = 0;
|
|
28
34
|
this.firstOpaqueBackgroundColor = '';
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
validate() {
|
|
37
|
+
validate(): boolean {
|
|
32
38
|
if (!this._validateChartData()) {
|
|
33
39
|
return false;
|
|
34
40
|
}
|
|
@@ -36,7 +42,7 @@ export default class AbstractChartRenderer {
|
|
|
36
42
|
return this._validate();
|
|
37
43
|
}
|
|
38
44
|
|
|
39
|
-
_validateChartData() {
|
|
45
|
+
protected _validateChartData(): boolean {
|
|
40
46
|
let chartData = this.chart && this.chart.data;
|
|
41
47
|
if (!chartData || !chartData.chartValueGroups || chartData.chartValueGroups.length === 0) {
|
|
42
48
|
return false;
|
|
@@ -71,7 +77,7 @@ export default class AbstractChartRenderer {
|
|
|
71
77
|
return true;
|
|
72
78
|
}
|
|
73
79
|
|
|
74
|
-
_validate() {
|
|
80
|
+
protected _validate(): boolean {
|
|
75
81
|
// Override in subclasses
|
|
76
82
|
return true;
|
|
77
83
|
}
|
|
@@ -81,7 +87,7 @@ export default class AbstractChartRenderer {
|
|
|
81
87
|
* Whether animations should be used while rendering the chart. Note that his
|
|
82
88
|
* property is ignored when chart.config.options.animation.duration is <code>0</code>!
|
|
83
89
|
*/
|
|
84
|
-
render(requestAnimation) {
|
|
90
|
+
render(requestAnimation: boolean) {
|
|
85
91
|
this.animationDuration = requestAnimation ? this.chart.config.options.animation.duration : 0;
|
|
86
92
|
if (!this.validate() || !this.chart.rendered) {
|
|
87
93
|
return;
|
|
@@ -92,7 +98,7 @@ export default class AbstractChartRenderer {
|
|
|
92
98
|
this.rendered = true;
|
|
93
99
|
}
|
|
94
100
|
|
|
95
|
-
_render() {
|
|
101
|
+
protected _render() {
|
|
96
102
|
// Override in subclasses
|
|
97
103
|
}
|
|
98
104
|
|
|
@@ -102,7 +108,7 @@ export default class AbstractChartRenderer {
|
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
110
|
|
|
105
|
-
_renderCheckedItems() {
|
|
111
|
+
protected _renderCheckedItems() {
|
|
106
112
|
// nop
|
|
107
113
|
}
|
|
108
114
|
|
|
@@ -111,7 +117,7 @@ export default class AbstractChartRenderer {
|
|
|
111
117
|
* Whether animations should be used while updating the chart. Note that his
|
|
112
118
|
* property is ignored when chart.config.options.animation.duration is <code>0</code>!
|
|
113
119
|
*/
|
|
114
|
-
updateData(requestAnimation) {
|
|
120
|
+
updateData(requestAnimation: boolean) {
|
|
115
121
|
if (!this.rendered) {
|
|
116
122
|
this.render(requestAnimation);
|
|
117
123
|
return;
|
|
@@ -123,11 +129,11 @@ export default class AbstractChartRenderer {
|
|
|
123
129
|
this._updateData();
|
|
124
130
|
}
|
|
125
131
|
|
|
126
|
-
_updateData() {
|
|
132
|
+
protected _updateData() {
|
|
127
133
|
// Override in subclasses
|
|
128
134
|
}
|
|
129
135
|
|
|
130
|
-
isDataUpdatable() {
|
|
136
|
+
isDataUpdatable(): boolean {
|
|
131
137
|
return false;
|
|
132
138
|
}
|
|
133
139
|
|
|
@@ -143,7 +149,7 @@ export default class AbstractChartRenderer {
|
|
|
143
149
|
* Whether animations should be used while removing the chart. Note that his
|
|
144
150
|
* property is ignored when chart.config.options.animation.duration is <code>0</code>!
|
|
145
151
|
*/
|
|
146
|
-
remove(requestAnimation, afterRemoveFunc) {
|
|
152
|
+
remove(requestAnimation = false, afterRemoveFunc?: (chartAnimationStopping?: boolean) => void) {
|
|
147
153
|
this.animationDuration = requestAnimation && this.chart.config.options.animation.duration;
|
|
148
154
|
if (this.animationDuration && this.rendered) {
|
|
149
155
|
this._removeAnimated(afterRemoveFunc);
|
|
@@ -152,12 +158,12 @@ export default class AbstractChartRenderer {
|
|
|
152
158
|
}
|
|
153
159
|
}
|
|
154
160
|
|
|
155
|
-
_remove(afterRemoveFunc) {
|
|
161
|
+
protected _remove(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
|
|
156
162
|
this.rendered = false;
|
|
157
163
|
afterRemoveFunc && afterRemoveFunc();
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
_removeAnimated(afterRemoveFunc) {
|
|
166
|
+
protected _removeAnimated(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
|
|
161
167
|
// Override in subclasses
|
|
162
168
|
this._remove(afterRemoveFunc);
|
|
163
169
|
}
|
|
@@ -165,7 +171,7 @@ export default class AbstractChartRenderer {
|
|
|
165
171
|
/**
|
|
166
172
|
* Controls if the animation of the chart is shown when chart data has been updated.
|
|
167
173
|
*/
|
|
168
|
-
shouldAnimateRemoveOnUpdate(opts) {
|
|
174
|
+
shouldAnimateRemoveOnUpdate(opts: UpdateChartOptions): boolean {
|
|
169
175
|
return opts.requestAnimation;
|
|
170
176
|
}
|
|
171
177
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2010-
|
|
2
|
+
* Copyright (c) 2010-2022 BSI Business Systems Integration AG.
|
|
3
3
|
* All rights reserved. This program and the accompanying materials
|
|
4
4
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
5
5
|
* which accompanies this distribution, and is available at
|
|
6
|
-
*
|
|
6
|
+
* https://www.eclipse.org/legal/epl-v10.html
|
|
7
7
|
*
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
@@ -11,15 +11,25 @@
|
|
|
11
11
|
import {ObjectFactory, strings, styles} from '@eclipse-scout/core';
|
|
12
12
|
import $ from 'jquery';
|
|
13
13
|
import {AbstractChartRenderer, Chart} from '../index';
|
|
14
|
+
import {ClickObject} from './Chart';
|
|
14
15
|
|
|
15
|
-
export
|
|
16
|
+
export class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
17
|
+
chartBox: ChartBox;
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
/** Clipping and masking */
|
|
20
|
+
clipId: string;
|
|
21
|
+
maskId: string;
|
|
22
|
+
suppressLegendBox: boolean;
|
|
23
|
+
height: number;
|
|
24
|
+
width: number;
|
|
25
|
+
chartAnimationStopping: boolean;
|
|
26
|
+
|
|
27
|
+
$svg: JQuery<SVGElement>;
|
|
28
|
+
|
|
29
|
+
constructor(chart: Chart) {
|
|
18
30
|
super(chart);
|
|
19
|
-
this.chartBox =
|
|
20
|
-
this.labelBox = {};
|
|
31
|
+
this.chartBox = null;
|
|
21
32
|
|
|
22
|
-
// Clipping and masking
|
|
23
33
|
this.clipId = 'Clip-' + ObjectFactory.get().createUniqueId();
|
|
24
34
|
this.maskId = 'Mask-' + ObjectFactory.get().createUniqueId();
|
|
25
35
|
|
|
@@ -31,16 +41,14 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
31
41
|
static FONT_SIZE_MIDDLE = 'middleFont';
|
|
32
42
|
static FONT_SIZE_BIG = 'bigFont';
|
|
33
43
|
|
|
34
|
-
_render() {
|
|
44
|
+
protected override _render() {
|
|
35
45
|
if (!this.$svg) {
|
|
36
46
|
this.$svg = this.chart.$container.appendSVG('svg', 'chart-svg');
|
|
37
47
|
}
|
|
38
48
|
this.firstOpaqueBackgroundColor = styles.getFirstOpaqueBackgroundColor(this.$svg);
|
|
39
|
-
this.svgHeight = this.$svg.height();
|
|
40
|
-
this.svgWidth = this.$svg.width();
|
|
41
49
|
// This works, because CSS specifies 100% width/height
|
|
42
|
-
this.height = this.
|
|
43
|
-
this.width = this.
|
|
50
|
+
this.height = this.$svg.height();
|
|
51
|
+
this.width = this.$svg.width();
|
|
44
52
|
this._initChartBox();
|
|
45
53
|
if (this._useFontSizeBig()) {
|
|
46
54
|
this.$svg.addClass(AbstractSvgChartRenderer.FONT_SIZE_BIG);
|
|
@@ -58,27 +66,27 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
58
66
|
this._renderInternal();
|
|
59
67
|
}
|
|
60
68
|
|
|
61
|
-
_renderInternal() {
|
|
69
|
+
protected _renderInternal() {
|
|
62
70
|
// Override in subclasses
|
|
63
71
|
}
|
|
64
72
|
|
|
65
|
-
_useFontSizeBig() {
|
|
73
|
+
protected _useFontSizeBig(): boolean {
|
|
66
74
|
return false;
|
|
67
75
|
}
|
|
68
76
|
|
|
69
|
-
_useFontSizeMiddle() {
|
|
77
|
+
protected _useFontSizeMiddle(): boolean {
|
|
70
78
|
return false;
|
|
71
79
|
}
|
|
72
80
|
|
|
73
|
-
_useFontSizeSmall() {
|
|
81
|
+
protected _useFontSizeSmall(): boolean {
|
|
74
82
|
return false;
|
|
75
83
|
}
|
|
76
84
|
|
|
77
|
-
_useFontSizeSmallest() {
|
|
85
|
+
protected _useFontSizeSmallest(): boolean {
|
|
78
86
|
return false;
|
|
79
87
|
}
|
|
80
88
|
|
|
81
|
-
remove(requestAnimation, afterRemoveFunc) {
|
|
89
|
+
override remove(requestAnimation = false, afterRemoveFunc?: (chartAnimationStopping?: boolean) => void) {
|
|
82
90
|
if (this.rendered && !this.chartAnimationStopping) {
|
|
83
91
|
this.chartAnimationStopping = true;
|
|
84
92
|
this.$svg.children().stop(true, false);
|
|
@@ -87,7 +95,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
87
95
|
super.remove(requestAnimation, afterRemoveFunc);
|
|
88
96
|
}
|
|
89
97
|
|
|
90
|
-
_remove(afterRemoveFunc) {
|
|
98
|
+
protected override _remove(afterRemoveFunc: (chartAnimationStopping?: boolean) => void) {
|
|
91
99
|
// this function is called directly from renderers after all removal animations are done
|
|
92
100
|
// 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
101
|
if (this.rendered) {
|
|
@@ -104,11 +112,8 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
104
112
|
|
|
105
113
|
/**
|
|
106
114
|
* 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
115
|
*/
|
|
111
|
-
_createClickObject(xIndex, datasetIndex) {
|
|
116
|
+
protected _createClickObject(xIndex: number, datasetIndex: number): ClickObject {
|
|
112
117
|
return {
|
|
113
118
|
xIndex: xIndex,
|
|
114
119
|
dataIndex: xIndex,
|
|
@@ -116,15 +121,15 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
116
121
|
};
|
|
117
122
|
}
|
|
118
123
|
|
|
119
|
-
_measureText(text, legendLabelClass) {
|
|
124
|
+
protected _measureText(text: string, legendLabelClass?: string): { height: number; width: number } {
|
|
120
125
|
let $label = this.$svg.appendSVG('text', legendLabelClass)
|
|
121
126
|
.attr('x', 0)
|
|
122
127
|
.attr('y', 0)
|
|
123
128
|
.attr('visibility', 'hidden')
|
|
124
|
-
.text(text)
|
|
129
|
+
.text(text) as JQuery<SVGGraphicsElement>;
|
|
125
130
|
let textBounds;
|
|
126
131
|
try {
|
|
127
|
-
// Firefox throws error when node is not in dom(already removed by navigating away). all other browser returns a
|
|
132
|
+
// Firefox throws error when node is not in dom(already removed by navigating away). all other browser returns a bounding box with 0
|
|
128
133
|
textBounds = $label[0].getBBox();
|
|
129
134
|
} catch (e) {
|
|
130
135
|
return {
|
|
@@ -137,7 +142,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
137
142
|
return textBounds;
|
|
138
143
|
}
|
|
139
144
|
|
|
140
|
-
_renderLine(x1, y1, x2, y2, lineClass) {
|
|
145
|
+
protected _renderLine(x1: number, y1: number, x2: number, y2: number, lineClass: string): JQuery<SVGElement> {
|
|
141
146
|
let $line = this.$svg.appendSVG('line', lineClass)
|
|
142
147
|
.attr('x1', x1).attr('y1', y1)
|
|
143
148
|
.attr('x2', x2).attr('y2', y2);
|
|
@@ -149,7 +154,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
149
154
|
return $line;
|
|
150
155
|
}
|
|
151
156
|
|
|
152
|
-
_renderLineLabel(x, y, label, labelClass, drawBackground) {
|
|
157
|
+
protected _renderLineLabel(x: number, y: number, label: string, labelClass: string, drawBackground: boolean): JQuery<SVGElement> {
|
|
153
158
|
let $label = this.$svg.appendSVG('text', labelClass ? labelClass : 'line-label')
|
|
154
159
|
.attr('x', x).attr('y', y)
|
|
155
160
|
.text(label);
|
|
@@ -179,7 +184,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
179
184
|
return $label;
|
|
180
185
|
}
|
|
181
186
|
|
|
182
|
-
_initChartBox() {
|
|
187
|
+
protected _initChartBox() {
|
|
183
188
|
this.chartBox = {
|
|
184
189
|
width: this.width,
|
|
185
190
|
height: this.height,
|
|
@@ -194,7 +199,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
194
199
|
};
|
|
195
200
|
}
|
|
196
201
|
|
|
197
|
-
_createAnimationObjectWithTabIndexRemoval(animationFunc, duration) {
|
|
202
|
+
protected _createAnimationObjectWithTabIndexRemoval<T>(animationFunc: (now: number, tween: JQuery.Tween<T>) => void, duration?: number): JQuery.EffectsOptions<T> {
|
|
198
203
|
return {
|
|
199
204
|
step: function(now, fx) {
|
|
200
205
|
try {
|
|
@@ -212,7 +217,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
212
217
|
};
|
|
213
218
|
}
|
|
214
219
|
|
|
215
|
-
_addClipping(cssClass) {
|
|
220
|
+
protected _addClipping(cssClass: string) {
|
|
216
221
|
// add clip and mask paths for all relevant objects
|
|
217
222
|
let $clip = this.$svg
|
|
218
223
|
.appendSVG('clipPath');
|
|
@@ -234,19 +239,22 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
234
239
|
});
|
|
235
240
|
}
|
|
236
241
|
|
|
237
|
-
_renderWireLegend(text, legendPositions, className, drawBackgroundBox) {
|
|
238
|
-
let legend = {
|
|
239
|
-
detachFunc: () => {
|
|
240
|
-
},
|
|
241
|
-
attachFunc: () => {
|
|
242
|
-
},
|
|
243
|
-
removeFunc: () => {
|
|
244
|
-
}
|
|
245
|
-
};
|
|
242
|
+
protected _renderWireLegend(text: string, legendPositions: LegendPositions, className: string, drawBackgroundBox?: boolean): Legend {
|
|
246
243
|
if (!this.chart.config.options.plugins.tooltip.enabled) {
|
|
247
|
-
return
|
|
244
|
+
return {
|
|
245
|
+
detachFunc: () => {
|
|
246
|
+
// nop
|
|
247
|
+
},
|
|
248
|
+
attachFunc: () => {
|
|
249
|
+
// nop
|
|
250
|
+
},
|
|
251
|
+
removeFunc: () => {
|
|
252
|
+
// nop
|
|
253
|
+
}
|
|
254
|
+
};
|
|
248
255
|
}
|
|
249
|
-
let
|
|
256
|
+
let legend = {} as Legend,
|
|
257
|
+
padding = 5,
|
|
250
258
|
$background,
|
|
251
259
|
backgroundWidth = 0,
|
|
252
260
|
lineHeight = 17,
|
|
@@ -274,7 +282,7 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
274
282
|
for (let i = 0; i < text.length; i++) {
|
|
275
283
|
let posIndex = text.length - i - 1;
|
|
276
284
|
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)
|
|
285
|
+
let $line = this._renderLineLabel(positions.x2 + padding, yPos, strings.truncateText(text[i], horizontalSpace, this._measureText.bind(this)), '', drawBackgroundBox) as JQuery<SVGTextContentElement>;
|
|
278
286
|
$line.addClass(className);
|
|
279
287
|
lengthLegend = Math.max(lengthLegend, $line[0].getComputedTextLength());
|
|
280
288
|
if (i === 0) {
|
|
@@ -417,3 +425,30 @@ export default class AbstractSvgChartRenderer extends AbstractChartRenderer {
|
|
|
417
425
|
return legend;
|
|
418
426
|
}
|
|
419
427
|
}
|
|
428
|
+
|
|
429
|
+
export type ChartBox = {
|
|
430
|
+
width: number;
|
|
431
|
+
height: number;
|
|
432
|
+
xOffset: number;
|
|
433
|
+
yOffset: number;
|
|
434
|
+
mX: () => number;
|
|
435
|
+
mY: () => number;
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
export type Legend = {
|
|
439
|
+
$field?: JQuery;
|
|
440
|
+
detachFunc: () => void;
|
|
441
|
+
attachFunc: () => void;
|
|
442
|
+
removeFunc: () => void;
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
export type LegendPositions = {
|
|
446
|
+
x1: number;
|
|
447
|
+
x2: number;
|
|
448
|
+
y1: number;
|
|
449
|
+
y2: number;
|
|
450
|
+
v: number;
|
|
451
|
+
h: number;
|
|
452
|
+
autoPosition: boolean;
|
|
453
|
+
posFunc: (labelWidth: number, labelHeight: number) => LegendPositions;
|
|
454
|
+
};
|