@gooddata/sdk-ui-charts 10.26.0-alpha.35 → 10.26.0-alpha.37
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/esm/highcharts/chartTypes/_chartOptions/chartThresholds.d.ts +3 -1
- package/esm/highcharts/chartTypes/_chartOptions/chartThresholds.d.ts.map +1 -1
- package/esm/highcharts/chartTypes/_chartOptions/chartThresholds.js +37 -36
- package/esm/highcharts/chartTypes/_chartOptions/chartThresholds.js.map +1 -1
- package/package.json +10 -10
@@ -1,6 +1,8 @@
|
|
1
1
|
import { VisType, DataViewFacade } from "@gooddata/sdk-ui";
|
2
2
|
import { IChartConfig } from "../../../interfaces/index.js";
|
3
|
-
import { ISeriesItem } from "../../typings/unsafe.js";
|
3
|
+
import { ISeriesItem, IZone, ISeriesDataItem } from "../../typings/unsafe.js";
|
4
|
+
export declare const generateZones: (thresholdSeries: ISeriesDataItem[]) => IZone[];
|
5
|
+
export declare const getTrendDividerPlotLines: (thresholdSeries: ISeriesDataItem[]) => number[];
|
4
6
|
export declare function setupThresholdZones(type: VisType, series: ISeriesItem[], dv: DataViewFacade, config: IChartConfig): {
|
5
7
|
series: ISeriesItem[];
|
6
8
|
plotLines?: number[];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chartThresholds.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartThresholds.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,
|
1
|
+
{"version":3,"file":"chartThresholds.d.ts","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartThresholds.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAS9E,eAAO,MAAM,aAAa,oBAAqB,eAAe,EAAE,KAAG,KAAK,EAyBvE,CAAC;AAEF,eAAO,MAAM,wBAAwB,oBAAqB,eAAe,EAAE,aAajE,CAAC;AAEX,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,EAAE,EACrB,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,YAAY,GACrB;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAuCjD"}
|
@@ -2,40 +2,43 @@
|
|
2
2
|
import { isLineChart } from "../_util/common.js";
|
3
3
|
const isEmptyDataPoint = (value) => value === undefined || value === null || value === 0;
|
4
4
|
const getDashStyle = (value) => (isEmptyDataPoint(value) ? "shortDash" : "solid");
|
5
|
-
const generateZones = (
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
// Mark the end of the previous zone
|
16
|
-
if (previousZone) {
|
17
|
-
previousZone.value = index;
|
5
|
+
export const generateZones = (thresholdSeries) => {
|
6
|
+
const zones = thresholdSeries.reduce((zones, { y: value }, i, arr) => {
|
7
|
+
if (i > 0) {
|
8
|
+
const currentIsEmpty = isEmptyDataPoint(value);
|
9
|
+
const previousIsEmpty = isEmptyDataPoint(arr[i - 1].y);
|
10
|
+
if (currentIsEmpty && !previousIsEmpty) {
|
11
|
+
zones.push({ value: i - 1, dashStyle: "solid" }); // the plot line will be placed at last non-empty point
|
12
|
+
}
|
13
|
+
if (!currentIsEmpty && previousIsEmpty) {
|
14
|
+
zones.push({ value: i, dashStyle: "shortDash" }); // the plot line will be placed at the current non-empty point
|
18
15
|
}
|
19
|
-
// Start a new zone
|
20
|
-
zones.push({ dashStyle: currentDashStyle });
|
21
16
|
}
|
22
17
|
return zones;
|
23
18
|
}, []);
|
24
|
-
// Process the final zone (should not have a value property to signify it runs to the end)
|
25
19
|
if (zones.length > 0) {
|
26
|
-
|
27
|
-
|
20
|
+
// add final zone based on the last point value, it has index value to signify it runs to the end
|
21
|
+
const dashStyle = getDashStyle(thresholdSeries[thresholdSeries.length - 1].y);
|
22
|
+
return [...zones, { dashStyle: dashStyle }];
|
23
|
+
}
|
24
|
+
else if (thresholdSeries.length > 0 && thresholdSeries.every((item) => isEmptyDataPoint(item.y))) {
|
25
|
+
// Add dashed zone that runs across all series if no zone was created and all points are empty.
|
26
|
+
// This is necessary, as the previous reduce algo did not create any zone due to all points being
|
27
|
+
// same. The line is solid by default so this must be done only for empty points.
|
28
|
+
return [{ dashStyle: "shortDash" }];
|
28
29
|
}
|
29
30
|
return zones;
|
30
31
|
};
|
31
|
-
const
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
32
|
+
export const getTrendDividerPlotLines = (thresholdSeries) => thresholdSeries.reduce((indexes, { y: value }, i, arr) => {
|
33
|
+
if (i > 0) {
|
34
|
+
const currentIsEmpty = isEmptyDataPoint(value);
|
35
|
+
const previousIsEmpty = isEmptyDataPoint(arr[i - 1].y);
|
36
|
+
if (currentIsEmpty && !previousIsEmpty) {
|
37
|
+
indexes.push(i - 1); // the plot line will be placed at last non-empty point
|
38
|
+
}
|
39
|
+
if (!currentIsEmpty && previousIsEmpty) {
|
40
|
+
indexes.push(i); // the plot line will be placed at the current non-empty point
|
41
|
+
}
|
39
42
|
}
|
40
43
|
return indexes;
|
41
44
|
}, []);
|
@@ -55,21 +58,19 @@ export function setupThresholdZones(type, series, dv, config) {
|
|
55
58
|
if (thresholdMeasureIndex === -1) {
|
56
59
|
return { series };
|
57
60
|
}
|
61
|
+
const renderedSeries = series.filter((_value, index) => index !== thresholdMeasureIndex);
|
58
62
|
const thresholdSeries = series[thresholdMeasureIndex];
|
59
63
|
const zones = generateZones(thresholdSeries.data);
|
60
64
|
if (zones.length === 0 || (zones.length === 1 && zones[0].dashStyle === "solid")) {
|
61
|
-
|
65
|
+
// no zone was generated, there's no need to update series, just don't render the threshold series
|
66
|
+
return { series: renderedSeries };
|
62
67
|
}
|
63
68
|
return {
|
64
|
-
series: series
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
zoneAxis: "x",
|
70
|
-
zones,
|
71
|
-
};
|
72
|
-
}),
|
69
|
+
series: renderedSeries.map((series) => ({
|
70
|
+
...series,
|
71
|
+
zoneAxis: "x",
|
72
|
+
zones,
|
73
|
+
})),
|
73
74
|
plotLines: getTrendDividerPlotLines(thresholdSeries.data),
|
74
75
|
};
|
75
76
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chartThresholds.js","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartThresholds.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAMhC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,gBAAgB,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AAEpG,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE7F,MAAM,aAAa,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"chartThresholds.js","sourceRoot":"","sources":["../../../../src/highcharts/chartTypes/_chartOptions/chartThresholds.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@gooddata/sdk-ui-charts",
|
3
|
-
"version": "10.26.0-alpha.
|
3
|
+
"version": "10.26.0-alpha.37",
|
4
4
|
"description": "GoodData.UI SDK - Charts",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -67,13 +67,13 @@
|
|
67
67
|
"ts-invariant": "^0.7.5",
|
68
68
|
"tslib": "^2.5.0",
|
69
69
|
"uuid": "^8.3.2",
|
70
|
-
"@gooddata/sdk-backend-spi": "10.26.0-alpha.
|
71
|
-
"@gooddata/sdk-model": "10.26.0-alpha.
|
72
|
-
"@gooddata/sdk-ui-kit": "10.26.0-alpha.
|
73
|
-
"@gooddata/sdk-ui": "10.26.0-alpha.
|
74
|
-
"@gooddata/sdk-ui-theme-provider": "10.26.0-alpha.
|
75
|
-
"@gooddata/sdk-ui-vis-commons": "10.26.0-alpha.
|
76
|
-
"@gooddata/util": "10.26.0-alpha.
|
70
|
+
"@gooddata/sdk-backend-spi": "10.26.0-alpha.37",
|
71
|
+
"@gooddata/sdk-model": "10.26.0-alpha.37",
|
72
|
+
"@gooddata/sdk-ui-kit": "10.26.0-alpha.37",
|
73
|
+
"@gooddata/sdk-ui": "10.26.0-alpha.37",
|
74
|
+
"@gooddata/sdk-ui-theme-provider": "10.26.0-alpha.37",
|
75
|
+
"@gooddata/sdk-ui-vis-commons": "10.26.0-alpha.37",
|
76
|
+
"@gooddata/util": "10.26.0-alpha.37"
|
77
77
|
},
|
78
78
|
"peerDependencies": {
|
79
79
|
"react": "^16.10.0 || ^17.0.0 || ^18.0.0",
|
@@ -124,8 +124,8 @@
|
|
124
124
|
"vitest": "3.0.8",
|
125
125
|
"vitest-dom": "0.1.1",
|
126
126
|
"@types/js-yaml": "^4.0.9",
|
127
|
-
"@gooddata/
|
128
|
-
"@gooddata/
|
127
|
+
"@gooddata/sdk-backend-mockingbird": "10.26.0-alpha.37",
|
128
|
+
"@gooddata/reference-workspace": "10.26.0-alpha.37"
|
129
129
|
},
|
130
130
|
"scripts": {
|
131
131
|
"clean": "rm -rf ci dist esm coverage styles/css *.log tsconfig.tsbuildinfo",
|