@hitachivantara/uikit-react-viz 5.10.2 → 5.11.0
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/dist/cjs/BarChart/BarChart.cjs +9 -1
- package/dist/cjs/Boxplot/Boxplot.cjs +118 -0
- package/dist/cjs/Boxplot/Boxplot.styles.cjs +25 -0
- package/dist/cjs/Boxplot/useBoxplot.cjs +77 -0
- package/dist/cjs/Boxplot/useBoxplotData.cjs +31 -0
- package/dist/cjs/ConfusionMatrix/ConfusionMatrix.cjs +2 -0
- package/dist/cjs/DonutChart/DonutChart.cjs +2 -1
- package/dist/cjs/LineChart/LineChart.cjs +9 -1
- package/dist/cjs/ScatterPlot/ScatterPlot.cjs +9 -1
- package/dist/cjs/hooks/tooltip/useTooltip.cjs +3 -3
- package/dist/cjs/hooks/useData.cjs +13 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/utils/index.cjs +27 -0
- package/dist/esm/BarChart/BarChart.js +9 -1
- package/dist/esm/BarChart/BarChart.js.map +1 -1
- package/dist/esm/Boxplot/Boxplot.js +99 -0
- package/dist/esm/Boxplot/Boxplot.js.map +1 -0
- package/dist/esm/Boxplot/Boxplot.styles.js +25 -0
- package/dist/esm/Boxplot/Boxplot.styles.js.map +1 -0
- package/dist/esm/Boxplot/useBoxplot.js +77 -0
- package/dist/esm/Boxplot/useBoxplot.js.map +1 -0
- package/dist/esm/Boxplot/useBoxplotData.js +31 -0
- package/dist/esm/Boxplot/useBoxplotData.js.map +1 -0
- package/dist/esm/ConfusionMatrix/ConfusionMatrix.js +2 -0
- package/dist/esm/ConfusionMatrix/ConfusionMatrix.js.map +1 -1
- package/dist/esm/DonutChart/DonutChart.js +2 -1
- package/dist/esm/DonutChart/DonutChart.js.map +1 -1
- package/dist/esm/Heatmap/Heatmap.js.map +1 -1
- package/dist/esm/LineChart/LineChart.js +9 -1
- package/dist/esm/LineChart/LineChart.js.map +1 -1
- package/dist/esm/ScatterPlot/ScatterPlot.js +9 -1
- package/dist/esm/ScatterPlot/ScatterPlot.js.map +1 -1
- package/dist/esm/Treemap/Treemap.js.map +1 -1
- package/dist/esm/hooks/tooltip/useTooltip.js +3 -3
- package/dist/esm/hooks/tooltip/useTooltip.js.map +1 -1
- package/dist/esm/hooks/useData.js +15 -3
- package/dist/esm/hooks/useData.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/index.js +27 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/index.d.ts +50 -2
- package/package.json +2 -2
|
@@ -57,6 +57,7 @@ const HvBarChart = react.forwardRef(
|
|
|
57
57
|
groupBy,
|
|
58
58
|
splitBy,
|
|
59
59
|
sortBy,
|
|
60
|
+
filters,
|
|
60
61
|
stack,
|
|
61
62
|
seriesNameFormatter,
|
|
62
63
|
measures,
|
|
@@ -68,7 +69,14 @@ const HvBarChart = react.forwardRef(
|
|
|
68
69
|
onOptionChange,
|
|
69
70
|
...others
|
|
70
71
|
} = props;
|
|
71
|
-
const chartData = useData.useData({
|
|
72
|
+
const chartData = useData.useData({
|
|
73
|
+
data,
|
|
74
|
+
groupBy,
|
|
75
|
+
sortBy,
|
|
76
|
+
splitBy,
|
|
77
|
+
measures,
|
|
78
|
+
filters
|
|
79
|
+
});
|
|
72
80
|
const chartDataset = useDataset.useDataset(chartData);
|
|
73
81
|
const chartYAxis = useYAxis.useYAxis({
|
|
74
82
|
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const charts = require("echarts/charts");
|
|
6
|
+
const components = require("echarts/components");
|
|
7
|
+
const echarts = require("echarts/core");
|
|
8
|
+
const Boxplot_styles = require("./Boxplot.styles.cjs");
|
|
9
|
+
const useBoxplot = require("./useBoxplot.cjs");
|
|
10
|
+
const useTooltip = require("../hooks/tooltip/useTooltip.cjs");
|
|
11
|
+
const useGrid = require("../hooks/useGrid.cjs");
|
|
12
|
+
const useLegend = require("../hooks/useLegend.cjs");
|
|
13
|
+
const useXAxis = require("../hooks/useXAxis.cjs");
|
|
14
|
+
const useYAxis = require("../hooks/useYAxis.cjs");
|
|
15
|
+
const useOption = require("../hooks/useOption.cjs");
|
|
16
|
+
const BaseChart = require("../BaseChart/BaseChart.cjs");
|
|
17
|
+
function _interopNamespace(e) {
|
|
18
|
+
if (e && e.__esModule)
|
|
19
|
+
return e;
|
|
20
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
21
|
+
if (e) {
|
|
22
|
+
for (const k in e) {
|
|
23
|
+
if (k !== "default") {
|
|
24
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
25
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: () => e[k]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
n.default = e;
|
|
33
|
+
return Object.freeze(n);
|
|
34
|
+
}
|
|
35
|
+
const echarts__namespace = /* @__PURE__ */ _interopNamespace(echarts);
|
|
36
|
+
echarts__namespace.use([charts.BoxplotChart, components.TooltipComponent, components.VisualMapComponent]);
|
|
37
|
+
const HvBoxplot = react.forwardRef(
|
|
38
|
+
(props, ref) => {
|
|
39
|
+
const {
|
|
40
|
+
name,
|
|
41
|
+
data,
|
|
42
|
+
xAxis,
|
|
43
|
+
yAxis,
|
|
44
|
+
grid,
|
|
45
|
+
legend,
|
|
46
|
+
measures,
|
|
47
|
+
groupBy,
|
|
48
|
+
splitBy,
|
|
49
|
+
sortBy,
|
|
50
|
+
tooltip,
|
|
51
|
+
width,
|
|
52
|
+
height,
|
|
53
|
+
classes: classesProp,
|
|
54
|
+
onOptionChange,
|
|
55
|
+
...others
|
|
56
|
+
} = props;
|
|
57
|
+
const { classes } = Boxplot_styles.useClasses(classesProp);
|
|
58
|
+
const chartTooltip = useTooltip.useTooltip({
|
|
59
|
+
component: (params) => {
|
|
60
|
+
const title = params?.title;
|
|
61
|
+
const upper = params?.value?.[5];
|
|
62
|
+
const q3 = params?.value?.[4];
|
|
63
|
+
const median = params?.value?.[3];
|
|
64
|
+
const q1 = params?.value?.[2];
|
|
65
|
+
const lower = params?.value?.[1];
|
|
66
|
+
return `
|
|
67
|
+
<div class="${classes.tooltipRoot}">
|
|
68
|
+
<div class="${classes.tooltipContainer}">
|
|
69
|
+
<div>
|
|
70
|
+
<p class="${classes.tooltipText}">${title}</p>
|
|
71
|
+
<p class="${classes.tooltipText}">Upper: ${upper}</p>
|
|
72
|
+
<p class="${classes.tooltipText}">Q3: ${q3}</p>
|
|
73
|
+
<p class="${classes.tooltipText}">Median: ${median}</p>
|
|
74
|
+
<p class="${classes.tooltipText}">Q1: ${q1}</p>
|
|
75
|
+
<p class="${classes.tooltipText}">Lower: ${lower}</p>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</div>`;
|
|
79
|
+
},
|
|
80
|
+
...tooltip
|
|
81
|
+
});
|
|
82
|
+
const chartGrid = useGrid.useGrid({ ...grid });
|
|
83
|
+
const chartLegend = useLegend.useLegend({
|
|
84
|
+
...legend,
|
|
85
|
+
icon: "square"
|
|
86
|
+
});
|
|
87
|
+
const chartXAxis = useXAxis.useXAxis({
|
|
88
|
+
...xAxis
|
|
89
|
+
});
|
|
90
|
+
const chartYAxis = useYAxis.useYAxis({
|
|
91
|
+
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
|
|
92
|
+
defaultType: "continuous",
|
|
93
|
+
...yAxis
|
|
94
|
+
});
|
|
95
|
+
const chartBoxplot = useBoxplot.useBoxplot({ data, groupBy, measures });
|
|
96
|
+
const chartOption = useOption.useOption({
|
|
97
|
+
option: {
|
|
98
|
+
...chartBoxplot,
|
|
99
|
+
...chartGrid,
|
|
100
|
+
...chartLegend,
|
|
101
|
+
...chartTooltip,
|
|
102
|
+
...chartXAxis,
|
|
103
|
+
...chartYAxis
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
BaseChart.HvBaseChart,
|
|
108
|
+
{
|
|
109
|
+
ref,
|
|
110
|
+
option: chartOption,
|
|
111
|
+
width,
|
|
112
|
+
height,
|
|
113
|
+
...others
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
exports.HvBoxplot = HvBoxplot;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitReactCore = require("@hitachivantara/uikit-react-core");
|
|
4
|
+
const { useClasses, staticClasses } = uikitReactCore.createClasses("HvBoxplot", {
|
|
5
|
+
tooltipRoot: {
|
|
6
|
+
backgroundColor: uikitReactCore.theme.colors.atmo1,
|
|
7
|
+
width: "fit-content",
|
|
8
|
+
minWidth: 150,
|
|
9
|
+
boxShadow: uikitReactCore.theme.colors.shadow,
|
|
10
|
+
zIndex: uikitReactCore.theme.zIndices.sticky
|
|
11
|
+
},
|
|
12
|
+
tooltipContainer: {
|
|
13
|
+
padding: uikitReactCore.theme.spacing("15px", "sm"),
|
|
14
|
+
display: "flex",
|
|
15
|
+
flexDirection: "column"
|
|
16
|
+
},
|
|
17
|
+
tooltipText: {
|
|
18
|
+
fontFamily: uikitReactCore.theme.fontFamily.body,
|
|
19
|
+
fontWeight: uikitReactCore.theme.fontWeights.normal,
|
|
20
|
+
fontSize: uikitReactCore.theme.fontSizes.sm,
|
|
21
|
+
color: uikitReactCore.theme.colors.secondary
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
exports.staticClasses = staticClasses;
|
|
25
|
+
exports.useClasses = useClasses;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const useBoxplotData = require("./useBoxplotData.cjs");
|
|
5
|
+
const useBoxplot = ({ data, groupBy, measures }) => {
|
|
6
|
+
const measuresFields = react.useMemo(() => {
|
|
7
|
+
if (measures == null) {
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
10
|
+
if (typeof measures === "string") {
|
|
11
|
+
return { [measures]: void 0 };
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(measures)) {
|
|
14
|
+
return measures.reduce(
|
|
15
|
+
(acc, value) => {
|
|
16
|
+
let field;
|
|
17
|
+
if (typeof value === "string") {
|
|
18
|
+
field = value;
|
|
19
|
+
} else {
|
|
20
|
+
field = value.field;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
...acc,
|
|
24
|
+
[field]: typeof value === "string" ? void 0 : value.yAxis
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
{}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return { [measures.field]: measures.yAxis };
|
|
31
|
+
}, [measures]);
|
|
32
|
+
const chartData = useBoxplotData.useBoxplotData({
|
|
33
|
+
data,
|
|
34
|
+
groupBy,
|
|
35
|
+
measures: measuresFields
|
|
36
|
+
});
|
|
37
|
+
const boxplotData = react.useMemo(() => {
|
|
38
|
+
const setData = {};
|
|
39
|
+
Object.keys(measuresFields).forEach((m) => {
|
|
40
|
+
setData[m] = [];
|
|
41
|
+
Object.keys(chartData).forEach((key) => {
|
|
42
|
+
setData[m].push(chartData[key][m]);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
const sources = [];
|
|
46
|
+
const transforms = [];
|
|
47
|
+
const series = [];
|
|
48
|
+
Object.keys(measuresFields).forEach((m, index) => {
|
|
49
|
+
sources.push({
|
|
50
|
+
source: setData[m],
|
|
51
|
+
id: m
|
|
52
|
+
});
|
|
53
|
+
transforms.push({
|
|
54
|
+
fromDatasetId: m,
|
|
55
|
+
transform: {
|
|
56
|
+
type: "boxplot",
|
|
57
|
+
config: {
|
|
58
|
+
itemNameFormatter: (params) => Object.keys(chartData)[params.value]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
series.push({
|
|
63
|
+
name: m,
|
|
64
|
+
type: "boxplot",
|
|
65
|
+
datasetIndex: Object.keys(measuresFields).length + index,
|
|
66
|
+
yAxisId: measuresFields[m]
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
const datasets = {
|
|
70
|
+
dataset: [...sources, ...transforms],
|
|
71
|
+
series
|
|
72
|
+
};
|
|
73
|
+
return datasets;
|
|
74
|
+
}, [chartData, measuresFields]);
|
|
75
|
+
return boxplotData;
|
|
76
|
+
};
|
|
77
|
+
exports.useBoxplot = useBoxplot;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const arquero = require("arquero");
|
|
5
|
+
const useBoxplotData = ({
|
|
6
|
+
data,
|
|
7
|
+
groupBy,
|
|
8
|
+
measures
|
|
9
|
+
}) => {
|
|
10
|
+
const chartData = react.useMemo(() => {
|
|
11
|
+
let tableData;
|
|
12
|
+
if (data instanceof arquero.internal.ColumnTable) {
|
|
13
|
+
tableData = data;
|
|
14
|
+
} else if (Array.isArray(data)) {
|
|
15
|
+
tableData = arquero.from(data);
|
|
16
|
+
} else {
|
|
17
|
+
tableData = arquero.table(data);
|
|
18
|
+
}
|
|
19
|
+
const uniqueGroupBy = new Set(tableData.array(groupBy || ""));
|
|
20
|
+
const results = {};
|
|
21
|
+
uniqueGroupBy.forEach((group) => {
|
|
22
|
+
results[group] = {};
|
|
23
|
+
Object.keys(measures).forEach((measure) => {
|
|
24
|
+
results[group][measure] = tableData.params({ group, groupBy }).filter((d, $) => d[$.groupBy] === $.group).array(measure);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return results;
|
|
28
|
+
}, [data, groupBy, measures]);
|
|
29
|
+
return chartData;
|
|
30
|
+
};
|
|
31
|
+
exports.useBoxplotData = useBoxplotData;
|
|
@@ -48,6 +48,7 @@ const HvConfusionMatrix = react.forwardRef((props, ref) => {
|
|
|
48
48
|
measure,
|
|
49
49
|
sortBy,
|
|
50
50
|
splitBy,
|
|
51
|
+
filters,
|
|
51
52
|
grid,
|
|
52
53
|
data: dataProp,
|
|
53
54
|
tooltip,
|
|
@@ -72,6 +73,7 @@ const HvConfusionMatrix = react.forwardRef((props, ref) => {
|
|
|
72
73
|
sortBy: sortBy ?? groupBy,
|
|
73
74
|
// automatically orders x axis to create the confusion matrix
|
|
74
75
|
splitBy,
|
|
76
|
+
filters,
|
|
75
77
|
delta: typeof delta === "string" ? delta : void 0
|
|
76
78
|
});
|
|
77
79
|
const colorScale = utils.useColorScale({
|
|
@@ -49,6 +49,7 @@ const HvDonutChart = react.forwardRef(
|
|
|
49
49
|
tooltip,
|
|
50
50
|
measure: measures,
|
|
51
51
|
sortBy,
|
|
52
|
+
filters,
|
|
52
53
|
grid,
|
|
53
54
|
width,
|
|
54
55
|
height,
|
|
@@ -57,7 +58,7 @@ const HvDonutChart = react.forwardRef(
|
|
|
57
58
|
onOptionChange,
|
|
58
59
|
...others
|
|
59
60
|
} = props;
|
|
60
|
-
const chartData = useData.useData({ data, groupBy, measures, sortBy });
|
|
61
|
+
const chartData = useData.useData({ data, groupBy, measures, sortBy, filters });
|
|
61
62
|
const chartDataset = useDataset.useDataset(chartData);
|
|
62
63
|
const chartSeries = useSeries.useSeries({
|
|
63
64
|
type: "pie",
|
|
@@ -59,6 +59,7 @@ const HvLineChart = react.forwardRef(
|
|
|
59
59
|
groupBy,
|
|
60
60
|
splitBy,
|
|
61
61
|
sortBy,
|
|
62
|
+
filters,
|
|
62
63
|
measures,
|
|
63
64
|
stack,
|
|
64
65
|
seriesNameFormatter,
|
|
@@ -70,7 +71,14 @@ const HvLineChart = react.forwardRef(
|
|
|
70
71
|
onOptionChange,
|
|
71
72
|
...others
|
|
72
73
|
} = props;
|
|
73
|
-
const chartData = useData.useData({
|
|
74
|
+
const chartData = useData.useData({
|
|
75
|
+
data,
|
|
76
|
+
groupBy,
|
|
77
|
+
measures,
|
|
78
|
+
splitBy,
|
|
79
|
+
sortBy,
|
|
80
|
+
filters
|
|
81
|
+
});
|
|
74
82
|
const chartDataset = useDataset.useDataset(chartData);
|
|
75
83
|
const chartYAxis = useYAxis.useYAxis({
|
|
76
84
|
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis]
|
|
@@ -56,6 +56,7 @@ const HvScatterPlot = react.forwardRef(
|
|
|
56
56
|
groupBy,
|
|
57
57
|
splitBy,
|
|
58
58
|
sortBy,
|
|
59
|
+
filters,
|
|
59
60
|
measures,
|
|
60
61
|
seriesNameFormatter,
|
|
61
62
|
legend,
|
|
@@ -66,7 +67,14 @@ const HvScatterPlot = react.forwardRef(
|
|
|
66
67
|
onOptionChange,
|
|
67
68
|
...others
|
|
68
69
|
} = props;
|
|
69
|
-
const chartData = useData.useData({
|
|
70
|
+
const chartData = useData.useData({
|
|
71
|
+
data,
|
|
72
|
+
groupBy,
|
|
73
|
+
measures,
|
|
74
|
+
splitBy,
|
|
75
|
+
sortBy,
|
|
76
|
+
filters
|
|
77
|
+
});
|
|
70
78
|
const chartDataset = useDataset.useDataset(chartData);
|
|
71
79
|
const chartYAxis = useYAxis.useYAxis({
|
|
72
80
|
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis]
|
|
@@ -18,11 +18,11 @@ const useTooltip = ({
|
|
|
18
18
|
const { classes: hvClasses } = styles.useClasses(classes);
|
|
19
19
|
const renderTooltip = react.useCallback(
|
|
20
20
|
(params) => {
|
|
21
|
-
const title = params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" ? params[0].name : params[0].seriesType === "pie" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]];
|
|
21
|
+
const title = params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" || params[0].seriesType === "boxplot" ? params[0].name : params[0].seriesType === "pie" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]];
|
|
22
22
|
const formattedTitle = titleFormatter ? titleFormatter(title) : title;
|
|
23
23
|
if (type === "single") {
|
|
24
24
|
const measure = index.getMeasure(
|
|
25
|
-
params[0].seriesType === "pie" || params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" ? params[0].name : horizontal ? params[0].dimensionNames[params[0].encode.x[0]] : params[0].dimensionNames[params[0].encode.y[0]],
|
|
25
|
+
params[0].seriesType === "pie" || params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" || params[0].seriesType === "boxplot" ? params[0].name : horizontal ? params[0].dimensionNames[params[0].encode.x[0]] : params[0].dimensionNames[params[0].encode.y[0]],
|
|
26
26
|
measures
|
|
27
27
|
);
|
|
28
28
|
const value = params[0].seriesType === "pie" || params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" ? params[0].value[params[0].encode.value[0]] : horizontal ? params[0].value[params[0].encode.x[0]] : params[0].value[params[0].encode.y[0]];
|
|
@@ -79,7 +79,7 @@ const useTooltip = ({
|
|
|
79
79
|
(params) => {
|
|
80
80
|
if (typeof component === "function") {
|
|
81
81
|
const values = {
|
|
82
|
-
title: params[0].seriesType === "pie" || params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]],
|
|
82
|
+
title: params[0].seriesType === "boxplot" ? params[0].name : params[0].seriesType === "pie" || params[0].seriesType === "treemap" || params[0].seriesType === "heatmap" ? params[0].seriesName : horizontal ? params[0].value[params[0].encode.y[0]] : params[0].value[params[0].encode.x[0]],
|
|
83
83
|
series: params.map((p) => {
|
|
84
84
|
return {
|
|
85
85
|
color: p.color,
|
|
@@ -10,6 +10,7 @@ const useData = ({
|
|
|
10
10
|
measures,
|
|
11
11
|
sortBy,
|
|
12
12
|
splitBy,
|
|
13
|
+
filters,
|
|
13
14
|
delta
|
|
14
15
|
}) => {
|
|
15
16
|
const groupByKey = index.getGroupKey(groupBy);
|
|
@@ -92,6 +93,17 @@ const useData = ({
|
|
|
92
93
|
{ after: groupByFields[groupByFields.length - 1] }
|
|
93
94
|
);
|
|
94
95
|
}
|
|
96
|
+
if (filters) {
|
|
97
|
+
const filtersArray = Array.isArray(filters) ? filters : [filters];
|
|
98
|
+
const combinedFilterFunction = (row) => {
|
|
99
|
+
return filtersArray.every((filter) => {
|
|
100
|
+
const { field, operation, value } = filter;
|
|
101
|
+
const filterFunction = index.getFilterFunction(operation, field, value);
|
|
102
|
+
return filterFunction(row);
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
tableData = tableData.filter(arquero.escape(combinedFilterFunction));
|
|
106
|
+
}
|
|
95
107
|
if (Object.keys(sortByFields).length > 0) {
|
|
96
108
|
tableData = tableData.orderby(
|
|
97
109
|
...Object.keys(sortByFields).filter((key) => allFields.includes(key)).map((key) => sortByFields[key] === "desc" ? arquero.desc(key) : key)
|
|
@@ -101,7 +113,7 @@ const useData = ({
|
|
|
101
113
|
tableData = tableData.select(arquero.not(...groupByFields));
|
|
102
114
|
}
|
|
103
115
|
return tableData;
|
|
104
|
-
}, [data, groupBy, splitBy, measures, sortBy, delta, groupByKey]);
|
|
116
|
+
}, [data, groupBy, splitBy, measures, sortBy, delta, filters, groupByKey]);
|
|
105
117
|
return chartData;
|
|
106
118
|
};
|
|
107
119
|
exports.useData = useData;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -8,6 +8,7 @@ const Treemap = require("./Treemap/Treemap.cjs");
|
|
|
8
8
|
const ConfusionMatrix = require("./ConfusionMatrix/ConfusionMatrix.cjs");
|
|
9
9
|
const ScatterPlot = require("./ScatterPlot/ScatterPlot.cjs");
|
|
10
10
|
const Heatmap = require("./Heatmap/Heatmap.cjs");
|
|
11
|
+
const Boxplot = require("./Boxplot/Boxplot.cjs");
|
|
11
12
|
exports.HvVizContext = Provider.HvVizContext;
|
|
12
13
|
exports.HvVizProvider = Provider.HvVizProvider;
|
|
13
14
|
exports.HvLineChart = LineChart.HvLineChart;
|
|
@@ -17,3 +18,4 @@ exports.HvTreemapChart = Treemap.HvTreemapChart;
|
|
|
17
18
|
exports.HvConfusionMatrix = ConfusionMatrix.HvConfusionMatrix;
|
|
18
19
|
exports.HvScatterPlot = ScatterPlot.HvScatterPlot;
|
|
19
20
|
exports.HvHeatmap = Heatmap.HvHeatmap;
|
|
21
|
+
exports.HvBoxplot = Boxplot.HvBoxplot;
|
package/dist/cjs/utils/index.cjs
CHANGED
|
@@ -34,7 +34,34 @@ const getMeasure = (name, msr) => {
|
|
|
34
34
|
return m.field === measureName;
|
|
35
35
|
}) ?? measuresArray[0];
|
|
36
36
|
};
|
|
37
|
+
const getFilterFunction = (operation, field, value) => {
|
|
38
|
+
switch (operation) {
|
|
39
|
+
case "is": {
|
|
40
|
+
const valueArray = Array.isArray(value) ? value : [value];
|
|
41
|
+
return (row) => valueArray.includes(row[field]);
|
|
42
|
+
}
|
|
43
|
+
case "isNot": {
|
|
44
|
+
const valueArray = Array.isArray(value) ? value : [value];
|
|
45
|
+
return (row) => !valueArray.includes(row[field]);
|
|
46
|
+
}
|
|
47
|
+
case "contains":
|
|
48
|
+
return (row) => row[field].includes(value);
|
|
49
|
+
case "greaterThan":
|
|
50
|
+
return (row) => row[field] > (Array.isArray(value) ? value[0] : value);
|
|
51
|
+
case "greaterThanOrEqual":
|
|
52
|
+
return (row) => row[field] >= (Array.isArray(value) ? value[0] : value);
|
|
53
|
+
case "lessThan":
|
|
54
|
+
return (row) => row[field] < (Array.isArray(value) ? value[0] : value);
|
|
55
|
+
case "lessThanOrEqual":
|
|
56
|
+
return (row) => row[field] <= (Array.isArray(value) ? value[0] : value);
|
|
57
|
+
case "between":
|
|
58
|
+
return (row) => row[field] >= value[0] && row[field] <= value[1];
|
|
59
|
+
default:
|
|
60
|
+
throw new Error("Unsupported operation");
|
|
61
|
+
}
|
|
62
|
+
};
|
|
37
63
|
exports.getAxisType = getAxisType;
|
|
64
|
+
exports.getFilterFunction = getFilterFunction;
|
|
38
65
|
exports.getGroupKey = getGroupKey;
|
|
39
66
|
exports.getLegendIcon = getLegendIcon;
|
|
40
67
|
exports.getMeasure = getMeasure;
|
|
@@ -36,6 +36,7 @@ const HvBarChart = forwardRef(
|
|
|
36
36
|
groupBy,
|
|
37
37
|
splitBy,
|
|
38
38
|
sortBy,
|
|
39
|
+
filters,
|
|
39
40
|
stack,
|
|
40
41
|
seriesNameFormatter,
|
|
41
42
|
measures,
|
|
@@ -47,7 +48,14 @@ const HvBarChart = forwardRef(
|
|
|
47
48
|
onOptionChange,
|
|
48
49
|
...others
|
|
49
50
|
} = props;
|
|
50
|
-
const chartData = useData({
|
|
51
|
+
const chartData = useData({
|
|
52
|
+
data,
|
|
53
|
+
groupBy,
|
|
54
|
+
sortBy,
|
|
55
|
+
splitBy,
|
|
56
|
+
measures,
|
|
57
|
+
filters
|
|
58
|
+
});
|
|
51
59
|
const chartDataset = useDataset(chartData);
|
|
52
60
|
const chartYAxis = useYAxis({
|
|
53
61
|
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.js","sources":["../../../src/BarChart/BarChart.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport { BarChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n DataZoomInsideComponent,\n DataZoomSliderComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n TooltipComponent,\n} from \"echarts/components\";\nimport * as echarts from \"echarts/core\";\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport {\n HvChartTooltipClasses,\n useData,\n useDataset,\n useDataZoom,\n useGrid,\n useLegend,\n useOption,\n useSeries,\n useTooltip,\n useXAxis,\n useYAxis,\n} from \"../hooks\";\nimport { HvBarChartMeasures } from \"../types\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../types/common\";\n\n// Register chart components\necharts.use([\n BarChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n MarkLineComponent,\n]);\n\nexport interface HvBarChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvBarChartProps\n extends HvAxisChartCommonProps,\n HvChartCommonProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<HvBarChartMeasures>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBarChartClasses;\n}\n\n/**\n * A bar chart is a chart or graph that presents categorical data with rectangular bars.\n */\nexport const HvBarChart = forwardRef<ReactECharts, HvBarChartProps>(\n (props, ref) => {\n const {\n yAxis,\n xAxis,\n horizontal = false,\n horizontalRangeSlider,\n grid,\n data,\n groupBy,\n splitBy,\n sortBy,\n stack,\n seriesNameFormatter,\n measures,\n legend,\n tooltip,\n classes,\n height,\n width,\n onOptionChange,\n ...others\n } = props;\n\n const chartData = useData({
|
|
1
|
+
{"version":3,"file":"BarChart.js","sources":["../../../src/BarChart/BarChart.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport { BarChart } from \"echarts/charts\";\nimport {\n DatasetComponent,\n DataZoomInsideComponent,\n DataZoomSliderComponent,\n GridComponent,\n LegendComponent,\n MarkLineComponent,\n TooltipComponent,\n} from \"echarts/components\";\nimport * as echarts from \"echarts/core\";\nimport { Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport {\n HvChartTooltipClasses,\n useData,\n useDataset,\n useDataZoom,\n useGrid,\n useLegend,\n useOption,\n useSeries,\n useTooltip,\n useXAxis,\n useYAxis,\n} from \"../hooks\";\nimport { HvBarChartMeasures } from \"../types\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../types/common\";\n\n// Register chart components\necharts.use([\n BarChart,\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n MarkLineComponent,\n]);\n\nexport interface HvBarChartClasses extends HvChartTooltipClasses {}\n\nexport interface HvBarChartProps\n extends HvAxisChartCommonProps,\n HvChartCommonProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<HvBarChartMeasures>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBarChartClasses;\n}\n\n/**\n * A bar chart is a chart or graph that presents categorical data with rectangular bars.\n */\nexport const HvBarChart = forwardRef<ReactECharts, HvBarChartProps>(\n (props, ref) => {\n const {\n yAxis,\n xAxis,\n horizontal = false,\n horizontalRangeSlider,\n grid,\n data,\n groupBy,\n splitBy,\n sortBy,\n filters,\n stack,\n seriesNameFormatter,\n measures,\n legend,\n tooltip,\n classes,\n height,\n width,\n onOptionChange,\n ...others\n } = props;\n\n const chartData = useData({\n data,\n groupBy,\n sortBy,\n splitBy,\n measures,\n filters,\n });\n\n const chartDataset = useDataset(chartData);\n\n const chartYAxis = useYAxis({\n axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],\n defaultType: horizontal ? \"categorical\" : \"continuous\",\n });\n\n const chartXAxis = useXAxis({\n type: horizontal ? \"continuous\" : \"categorical\",\n ...xAxis,\n });\n\n const chartSlider = useDataZoom({\n showHorizontal: horizontalRangeSlider?.show,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const chartSeries = useSeries({\n type: \"bar\",\n data: chartData,\n groupBy,\n measures,\n stack,\n nameFormatter: seriesNameFormatter,\n horizontal,\n });\n\n const chartLegend = useLegend({\n ...legend,\n series: chartSeries.series,\n icon: \"square\",\n });\n\n const chartTooltip = useTooltip({\n ...tooltip,\n trigger: \"axis\",\n measures,\n classes,\n horizontal,\n });\n\n const option = useOption({\n option: {\n ...chartYAxis,\n ...chartXAxis,\n ...chartSlider,\n ...chartGrid,\n ...chartDataset,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n },\n onOptionChange,\n });\n\n return (\n <HvBaseChart\n ref={ref}\n option={option}\n width={width}\n height={height}\n {...others}\n />\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAiCA,QAAQ,IAAI;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAkBM,MAAM,aAAa;AAAA,EACxB,CAAC,OAAO,QAAQ;AACR,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACD,IAAA;AAEJ,UAAM,YAAY,QAAQ;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAEK,UAAA,eAAe,WAAW,SAAS;AAEzC,UAAM,aAAa,SAAS;AAAA,MAC1B,MAAM,MAAM,QAAQ,KAAK,KAAK,SAAS,OAAO,QAAQ,CAAC,KAAK;AAAA,MAC5D,aAAa,aAAa,gBAAgB;AAAA,IAAA,CAC3C;AAED,UAAM,aAAa,SAAS;AAAA,MAC1B,MAAM,aAAa,eAAe;AAAA,MAClC,GAAG;AAAA,IAAA,CACJ;AAED,UAAM,cAAc,YAAY;AAAA,MAC9B,gBAAgB,uBAAuB;AAAA,IAAA,CACxC;AAED,UAAM,YAAY,QAAQ,EAAE,GAAG,KAAM,CAAA;AAErC,UAAM,cAAc,UAAU;AAAA,MAC5B,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf;AAAA,IAAA,CACD;AAED,UAAM,cAAc,UAAU;AAAA,MAC5B,GAAG;AAAA,MACH,QAAQ,YAAY;AAAA,MACpB,MAAM;AAAA,IAAA,CACP;AAED,UAAM,eAAe,WAAW;AAAA,MAC9B,GAAG;AAAA,MACH,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAED,UAAM,SAAS,UAAU;AAAA,MACvB,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA;AAAA,IAAA,CACD;AAGC,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { BoxplotChart } from "echarts/charts";
|
|
4
|
+
import { TooltipComponent, VisualMapComponent } from "echarts/components";
|
|
5
|
+
import * as echarts from "echarts/core";
|
|
6
|
+
import { useClasses } from "./Boxplot.styles.js";
|
|
7
|
+
import { useBoxplot } from "./useBoxplot.js";
|
|
8
|
+
import { useTooltip } from "../hooks/tooltip/useTooltip.js";
|
|
9
|
+
import { useGrid } from "../hooks/useGrid.js";
|
|
10
|
+
import { useLegend } from "../hooks/useLegend.js";
|
|
11
|
+
import { useXAxis } from "../hooks/useXAxis.js";
|
|
12
|
+
import { useYAxis } from "../hooks/useYAxis.js";
|
|
13
|
+
import { useOption } from "../hooks/useOption.js";
|
|
14
|
+
import { HvBaseChart } from "../BaseChart/BaseChart.js";
|
|
15
|
+
echarts.use([BoxplotChart, TooltipComponent, VisualMapComponent]);
|
|
16
|
+
const HvBoxplot = forwardRef(
|
|
17
|
+
(props, ref) => {
|
|
18
|
+
const {
|
|
19
|
+
name,
|
|
20
|
+
data,
|
|
21
|
+
xAxis,
|
|
22
|
+
yAxis,
|
|
23
|
+
grid,
|
|
24
|
+
legend,
|
|
25
|
+
measures,
|
|
26
|
+
groupBy,
|
|
27
|
+
splitBy,
|
|
28
|
+
sortBy,
|
|
29
|
+
tooltip,
|
|
30
|
+
width,
|
|
31
|
+
height,
|
|
32
|
+
classes: classesProp,
|
|
33
|
+
onOptionChange,
|
|
34
|
+
...others
|
|
35
|
+
} = props;
|
|
36
|
+
const { classes } = useClasses(classesProp);
|
|
37
|
+
const chartTooltip = useTooltip({
|
|
38
|
+
component: (params) => {
|
|
39
|
+
const title = params?.title;
|
|
40
|
+
const upper = params?.value?.[5];
|
|
41
|
+
const q3 = params?.value?.[4];
|
|
42
|
+
const median = params?.value?.[3];
|
|
43
|
+
const q1 = params?.value?.[2];
|
|
44
|
+
const lower = params?.value?.[1];
|
|
45
|
+
return `
|
|
46
|
+
<div class="${classes.tooltipRoot}">
|
|
47
|
+
<div class="${classes.tooltipContainer}">
|
|
48
|
+
<div>
|
|
49
|
+
<p class="${classes.tooltipText}">${title}</p>
|
|
50
|
+
<p class="${classes.tooltipText}">Upper: ${upper}</p>
|
|
51
|
+
<p class="${classes.tooltipText}">Q3: ${q3}</p>
|
|
52
|
+
<p class="${classes.tooltipText}">Median: ${median}</p>
|
|
53
|
+
<p class="${classes.tooltipText}">Q1: ${q1}</p>
|
|
54
|
+
<p class="${classes.tooltipText}">Lower: ${lower}</p>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>`;
|
|
58
|
+
},
|
|
59
|
+
...tooltip
|
|
60
|
+
});
|
|
61
|
+
const chartGrid = useGrid({ ...grid });
|
|
62
|
+
const chartLegend = useLegend({
|
|
63
|
+
...legend,
|
|
64
|
+
icon: "square"
|
|
65
|
+
});
|
|
66
|
+
const chartXAxis = useXAxis({
|
|
67
|
+
...xAxis
|
|
68
|
+
});
|
|
69
|
+
const chartYAxis = useYAxis({
|
|
70
|
+
axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
|
|
71
|
+
defaultType: "continuous",
|
|
72
|
+
...yAxis
|
|
73
|
+
});
|
|
74
|
+
const chartBoxplot = useBoxplot({ data, groupBy, measures });
|
|
75
|
+
const chartOption = useOption({
|
|
76
|
+
option: {
|
|
77
|
+
...chartBoxplot,
|
|
78
|
+
...chartGrid,
|
|
79
|
+
...chartLegend,
|
|
80
|
+
...chartTooltip,
|
|
81
|
+
...chartXAxis,
|
|
82
|
+
...chartYAxis
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return /* @__PURE__ */ jsx(
|
|
86
|
+
HvBaseChart,
|
|
87
|
+
{
|
|
88
|
+
ref,
|
|
89
|
+
option: chartOption,
|
|
90
|
+
width,
|
|
91
|
+
height,
|
|
92
|
+
...others
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
export {
|
|
98
|
+
HvBoxplot
|
|
99
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boxplot.js","sources":["../../../src/Boxplot/Boxplot.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport { BoxplotChart } from \"echarts/charts\";\nimport { TooltipComponent, VisualMapComponent } from \"echarts/components\";\nimport * as echarts from \"echarts/core\";\nimport { Arrayable, ExtractNames } from \"@hitachivantara/uikit-react-core\";\n\nimport { HvBaseChart } from \"../BaseChart\";\nimport {\n useGrid,\n useLegend,\n useOption,\n useTooltip,\n useXAxis,\n useYAxis,\n} from \"../hooks\";\nimport { HvBoxplotMeasure, HvChartTooltip } from \"../types\";\nimport { HvAxisChartCommonProps, HvChartCommonProps } from \"../types/common\";\nimport { useClasses } from \"./Boxplot.styles\";\nimport { useBoxplot } from \"./useBoxplot\";\n\n// Register chart components\necharts.use([BoxplotChart, TooltipComponent, VisualMapComponent]);\n\nexport type HvBoxplotClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBoxplotProps\n extends HvAxisChartCommonProps,\n Omit<HvChartCommonProps, \"groupBy\"> {\n /** The name of the heatmap */\n name?: string;\n /** Columns to measure on the chart. */\n measures: Arrayable<HvBoxplotMeasure>;\n /** Columns to use to group the data. */\n groupBy?: string;\n /** The tooltip options. */\n tooltip?: Omit<HvChartTooltip, \"type\" | \"valueFormatter\" | \"titleFormatter\">;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBoxplotClasses;\n}\n\n/**\n * A Boxplot chart visually summarizes the distribution of a dataset by depicting key statistical measures such as the median, quartiles, and outliers.\n */\nexport const HvBoxplot = forwardRef<ReactECharts, HvBoxplotProps>(\n (props, ref) => {\n const {\n name,\n data,\n xAxis,\n yAxis,\n grid,\n legend,\n measures,\n groupBy,\n splitBy,\n sortBy,\n tooltip,\n width,\n height,\n classes: classesProp,\n onOptionChange,\n ...others\n } = props;\n\n const { classes } = useClasses(classesProp);\n\n const chartTooltip = useTooltip({\n component: (params) => {\n const title = params?.title;\n const upper = params?.value?.[5];\n const q3 = params?.value?.[4];\n const median = params?.value?.[3];\n const q1 = params?.value?.[2];\n const lower = params?.value?.[1];\n\n return `\n <div class=\"${classes.tooltipRoot}\">\n <div class=\"${classes.tooltipContainer}\">\n <div>\n <p class=\"${classes.tooltipText}\">${title}</p>\n <p class=\"${classes.tooltipText}\">Upper: ${upper}</p>\n <p class=\"${classes.tooltipText}\">Q3: ${q3}</p>\n <p class=\"${classes.tooltipText}\">Median: ${median}</p>\n <p class=\"${classes.tooltipText}\">Q1: ${q1}</p>\n <p class=\"${classes.tooltipText}\">Lower: ${lower}</p>\n </div>\n </div>\n </div>`;\n },\n ...tooltip,\n });\n\n const chartGrid = useGrid({ ...grid });\n\n const chartLegend = useLegend({\n ...legend,\n icon: \"square\",\n });\n\n const chartXAxis = useXAxis({\n ...xAxis,\n });\n\n const chartYAxis = useYAxis({\n axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],\n defaultType: \"continuous\",\n ...yAxis,\n });\n\n const chartBoxplot = useBoxplot({ data, groupBy, measures });\n\n const chartOption = useOption({\n option: {\n ...chartBoxplot,\n ...chartGrid,\n ...chartLegend,\n ...chartTooltip,\n ...chartXAxis,\n ...chartYAxis,\n },\n });\n\n return (\n <HvBaseChart\n ref={ref}\n option={chartOption}\n width={width}\n height={height}\n {...others}\n />\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAsBA,QAAQ,IAAI,CAAC,cAAc,kBAAkB,kBAAkB,CAAC;AAsBzD,MAAM,YAAY;AAAA,EACvB,CAAC,OAAO,QAAQ;AACR,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,GAAG;AAAA,IACD,IAAA;AAEJ,UAAM,EAAE,QAAA,IAAY,WAAW,WAAW;AAE1C,UAAM,eAAe,WAAW;AAAA,MAC9B,WAAW,CAAC,WAAW;AACrB,cAAM,QAAQ,QAAQ;AAChB,cAAA,QAAQ,QAAQ,QAAQ,CAAC;AACzB,cAAA,KAAK,QAAQ,QAAQ,CAAC;AACtB,cAAA,SAAS,QAAQ,QAAQ,CAAC;AAC1B,cAAA,KAAK,QAAQ,QAAQ,CAAC;AACtB,cAAA,QAAQ,QAAQ,QAAQ,CAAC;AAExB,eAAA;AAAA,wBACS,QAAQ,WAAW;AAAA,0BACjB,QAAQ,gBAAgB;AAAA;AAAA,0BAExB,QAAQ,WAAW,KAAK,KAAK;AAAA,0BAC7B,QAAQ,WAAW,YAAY,KAAK;AAAA,0BACpC,QAAQ,WAAW,SAAS,EAAE;AAAA,0BAC9B,QAAQ,WAAW,aAAa,MAAM;AAAA,0BACtC,QAAQ,WAAW,SAAS,EAAE;AAAA,0BAC9B,QAAQ,WAAW,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA,MAIxD;AAAA,MACA,GAAG;AAAA,IAAA,CACJ;AAED,UAAM,YAAY,QAAQ,EAAE,GAAG,KAAM,CAAA;AAErC,UAAM,cAAc,UAAU;AAAA,MAC5B,GAAG;AAAA,MACH,MAAM;AAAA,IAAA,CACP;AAED,UAAM,aAAa,SAAS;AAAA,MAC1B,GAAG;AAAA,IAAA,CACJ;AAED,UAAM,aAAa,SAAS;AAAA,MAC1B,MAAM,MAAM,QAAQ,KAAK,KAAK,SAAS,OAAO,QAAQ,CAAC,KAAK;AAAA,MAC5D,aAAa;AAAA,MACb,GAAG;AAAA,IAAA,CACJ;AAED,UAAM,eAAe,WAAW,EAAE,MAAM,SAAS,UAAU;AAE3D,UAAM,cAAc,UAAU;AAAA,MAC5B,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IAAA,CACD;AAGC,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createClasses, theme } from "@hitachivantara/uikit-react-core";
|
|
2
|
+
const { useClasses, staticClasses } = createClasses("HvBoxplot", {
|
|
3
|
+
tooltipRoot: {
|
|
4
|
+
backgroundColor: theme.colors.atmo1,
|
|
5
|
+
width: "fit-content",
|
|
6
|
+
minWidth: 150,
|
|
7
|
+
boxShadow: theme.colors.shadow,
|
|
8
|
+
zIndex: theme.zIndices.sticky
|
|
9
|
+
},
|
|
10
|
+
tooltipContainer: {
|
|
11
|
+
padding: theme.spacing("15px", "sm"),
|
|
12
|
+
display: "flex",
|
|
13
|
+
flexDirection: "column"
|
|
14
|
+
},
|
|
15
|
+
tooltipText: {
|
|
16
|
+
fontFamily: theme.fontFamily.body,
|
|
17
|
+
fontWeight: theme.fontWeights.normal,
|
|
18
|
+
fontSize: theme.fontSizes.sm,
|
|
19
|
+
color: theme.colors.secondary
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
export {
|
|
23
|
+
staticClasses,
|
|
24
|
+
useClasses
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Boxplot.styles.js","sources":["../../../src/Boxplot/Boxplot.styles.tsx"],"sourcesContent":["import { createClasses, theme } from \"@hitachivantara/uikit-react-core\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvBoxplot\", {\n tooltipRoot: {\n backgroundColor: theme.colors.atmo1,\n width: \"fit-content\",\n minWidth: 150,\n boxShadow: theme.colors.shadow,\n zIndex: theme.zIndices.sticky,\n },\n tooltipContainer: {\n padding: theme.spacing(\"15px\", \"sm\"),\n display: \"flex\",\n flexDirection: \"column\",\n },\n tooltipText: {\n fontFamily: theme.fontFamily.body,\n fontWeight: theme.fontWeights.normal,\n fontSize: theme.fontSizes.sm,\n color: theme.colors.secondary,\n },\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,YAAY,kBAAkB,cAAc,aAAa;AAAA,EACtE,aAAa;AAAA,IACX,iBAAiB,MAAM,OAAO;AAAA,IAC9B,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW,MAAM,OAAO;AAAA,IACxB,QAAQ,MAAM,SAAS;AAAA,EACzB;AAAA,EACA,kBAAkB;AAAA,IAChB,SAAS,MAAM,QAAQ,QAAQ,IAAI;AAAA,IACnC,SAAS;AAAA,IACT,eAAe;AAAA,EACjB;AAAA,EACA,aAAa;AAAA,IACX,YAAY,MAAM,WAAW;AAAA,IAC7B,YAAY,MAAM,YAAY;AAAA,IAC9B,UAAU,MAAM,UAAU;AAAA,IAC1B,OAAO,MAAM,OAAO;AAAA,EACtB;AACF,CAAC;"}
|