@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.
- package/LICENSE +277 -0
- package/README.md +4 -8
- 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 +299 -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 +28 -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-56ba6667e592ef147869.min.css +1 -0
- package/dist/eclipse-scout-chart-theme-dark-593955eea95984c5aa62.min.css +1 -0
- package/dist/eclipse-scout-chart-theme-dark.css +53 -59
- package/dist/eclipse-scout-chart-theme-dark.css.map +1 -1
- package/dist/eclipse-scout-chart-theme.css +41 -45
- 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 +6898 -0
- package/dist/eclipse-scout-chart.esm.js.map +1 -0
- package/dist/eclipse-scout-chart.js +737 -15226
- package/dist/eclipse-scout-chart.js.map +1 -1
- package/dist/file-list +8 -5
- package/dist/texts.json +17 -17
- package/package.json +22 -16
- package/src/chart/{AbstractChartRenderer.js → AbstractChartRenderer.ts} +36 -31
- package/src/chart/{AbstractSvgChartRenderer.js → AbstractSvgChartRenderer.ts} +82 -48
- package/src/chart/Chart.less +8 -8
- package/src/chart/{Chart.js → Chart.ts} +157 -68
- package/src/chart/ChartAdapter.ts +26 -0
- package/src/chart/ChartEventMap.ts +26 -0
- package/src/chart/{ChartJsRenderer.js → ChartJsRenderer.ts} +362 -357
- package/src/chart/{ChartLayout.js → ChartLayout.ts} +13 -13
- package/src/chart/ChartModel.ts +20 -0
- package/src/chart/{FulfillmentChartRenderer.js → FulfillmentChartRenderer.ts} +25 -23
- package/src/chart/{SalesfunnelChartRenderer.js → SalesfunnelChartRenderer.ts} +102 -66
- package/src/chart/{SpeedoChartRenderer.js → SpeedoChartRenderer.ts} +56 -43
- package/src/chart/{VennAsync3Calculator.js → VennAsync3Calculator.ts} +41 -18
- package/src/chart/{VennChartRenderer.js → VennChartRenderer.ts} +63 -40
- package/src/chart/VennCircle.ts +47 -0
- package/src/chart/{VennCircleHelper.js → VennCircleHelper.ts} +19 -14
- package/src/eclipse-scout-chart-theme-dark.less +7 -8
- package/src/eclipse-scout-chart-theme.less +7 -8
- package/src/form/fields/chartfield/ChartField.ts +44 -0
- package/src/form/fields/chartfield/ChartFieldAdapter.ts +13 -0
- package/src/form/fields/chartfield/ChartFieldModel.ts +15 -0
- package/src/index-dark.less +6 -7
- package/src/index.less +6 -7
- package/src/index.ts +45 -0
- package/src/style/colors-dark.less +7 -8
- package/src/style/colors.less +6 -7
- package/src/table/controls/ChartTableControl.less +6 -7
- package/src/table/controls/{ChartTableControl.js → ChartTableControl.ts} +164 -125
- package/src/table/controls/ChartTableControlAdapter.ts +18 -0
- package/src/table/controls/ChartTableControlEventMap.ts +18 -0
- package/src/table/controls/ChartTableControlLayout.ts +30 -0
- package/src/table/controls/ChartTableControlModel.ts +18 -0
- package/src/table/controls/ChartTableUserFilter.ts +84 -0
- package/src/table/controls/ChartTableUserFilterModel.ts +18 -0
- package/src/tile/ChartFieldTile.less +6 -7
- package/src/tile/ChartFieldTile.ts +51 -0
- package/src/tile/ChartFieldTileAdapter.ts +13 -0
- package/src/tile/ChartFieldTileModel.ts +15 -0
- package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js +0 -3
- package/dist/eclipse-scout-chart-8eb9461c14872058f638.min.js.LICENSE.txt +0 -6
- package/dist/eclipse-scout-chart-8eb9461c14872058f638.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/chart/VennCircle.js +0 -41
- package/src/form/fields/chartfield/ChartField.js +0 -39
- package/src/form/fields/chartfield/ChartFieldAdapter.js +0 -19
- package/src/index.js +0 -36
- package/src/table/controls/ChartTableControlAdapter.js +0 -20
- package/src/table/controls/ChartTableControlLayout.js +0 -29
- package/src/table/controls/ChartTableUserFilter.js +0 -72
- package/src/tile/ChartFieldTile.js +0 -46
- package/src/tile/ChartFieldTileAdapter.js +0 -18
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-
|
|
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": "
|
|
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-
|
|
11
|
+
"license": "EPL-2.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.1",
|
|
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.1",
|
|
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
|
}
|
|
@@ -1,34 +1,39 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2010
|
|
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
|
-
*
|
|
9
|
-
*
|
|
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
|
-
|
|
11
|
+
import {Chart} from '../index';
|
|
12
|
+
import {Session} from '@eclipse-scout/core';
|
|
13
|
+
import {UpdateChartOptions} from './Chart';
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
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;
|
|
30
|
+
this.rendering = false;
|
|
25
31
|
this.rendered = false;
|
|
26
|
-
this.animationDuration = 0;
|
|
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
|
|
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
|
-
*
|
|
9
|
-
*
|
|
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
|
-
|
|
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.
|
|
43
|
-
this.width = this.
|
|
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
|
|
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
|
|
243
|
+
return {
|
|
244
|
+
detachFunc: () => {
|
|
245
|
+
// nop
|
|
246
|
+
},
|
|
247
|
+
attachFunc: () => {
|
|
248
|
+
// nop
|
|
249
|
+
},
|
|
250
|
+
removeFunc: () => {
|
|
251
|
+
// nop
|
|
252
|
+
}
|
|
253
|
+
};
|
|
248
254
|
}
|
|
249
|
-
let
|
|
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
|
+
};
|
package/src/chart/Chart.less
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2010
|
|
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
|
-
*
|
|
9
|
-
*
|
|
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 > & {
|