@hitachivantara/uikit-react-viz 6.1.6 → 6.1.8

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.
@@ -1,47 +1,38 @@
1
- import { jsx } from "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";
1
+ import { HvBaseChart } from "../BaseChart/BaseChart.js";
11
2
  import { useXAxis } from "../hooks/useXAxis.js";
12
3
  import { useYAxis } from "../hooks/useYAxis.js";
4
+ import { useGrid } from "../hooks/useGrid.js";
5
+ import { useLegend } from "../hooks/useLegend.js";
6
+ import { useTooltip } from "../hooks/tooltip/useTooltip.js";
13
7
  import { useOption } from "../hooks/useOption.js";
14
- import { HvBaseChart } from "../BaseChart/BaseChart.js";
15
- echarts.use([BoxplotChart, TooltipComponent, VisualMapComponent]);
16
- const HvBoxplot = forwardRef(
17
- function HvBoxplot2(props, ref) {
18
- const {
19
- name,
20
- data,
21
- xAxis,
22
- yAxis,
23
- grid,
24
- legend,
25
- measures,
26
- groupBy,
27
- tooltip,
28
- width,
29
- height,
30
- filters,
31
- classes: classesProp,
32
- onOptionChange,
33
- ...others
34
- } = props;
35
- const { classes } = useClasses(classesProp);
36
- const chartTooltip = useTooltip({
37
- component: (params) => {
38
- const title = params?.title;
39
- const upper = params?.value?.[5];
40
- const q3 = params?.value?.[4];
41
- const median = params?.value?.[3];
42
- const q1 = params?.value?.[2];
43
- const lower = params?.value?.[1];
44
- return `
8
+ import { useClasses } from "./Boxplot.styles.js";
9
+ import { useBoxplot } from "./useBoxplot.js";
10
+ import { forwardRef } from "react";
11
+ import { TooltipComponent, VisualMapComponent } from "echarts/components";
12
+ import * as echarts from "echarts/core";
13
+ import { jsx } from "react/jsx-runtime";
14
+ import { BoxplotChart } from "echarts/charts";
15
+ //#region src/Boxplot/Boxplot.tsx
16
+ echarts.use([
17
+ BoxplotChart,
18
+ TooltipComponent,
19
+ VisualMapComponent
20
+ ]);
21
+ /**
22
+ * A Boxplot chart visually summarizes the distribution of a dataset by depicting key statistical measures such as the median, quartiles, and outliers.
23
+ */
24
+ var HvBoxplot = forwardRef(function HvBoxplot(props, ref) {
25
+ const { name, data, xAxis, yAxis, grid, legend, measures, groupBy, tooltip, width, height, filters, classes: classesProp, onOptionChange, ...others } = props;
26
+ const { classes } = useClasses(classesProp);
27
+ const chartTooltip = useTooltip({
28
+ component: (params) => {
29
+ const title = params?.title;
30
+ const upper = params?.value?.[5];
31
+ const q3 = params?.value?.[4];
32
+ const median = params?.value?.[3];
33
+ const q1 = params?.value?.[2];
34
+ const lower = params?.value?.[1];
35
+ return `
45
36
  <div class="${classes.tooltipRoot}">
46
37
  <div class="${classes.tooltipContainer}">
47
38
  <div>
@@ -54,45 +45,39 @@ const HvBoxplot = forwardRef(
54
45
  </div>
55
46
  </div>
56
47
  </div>`;
57
- },
58
- ...tooltip
59
- });
60
- const chartGrid = useGrid({ ...grid });
61
- const chartLegend = useLegend({
62
- ...legend,
63
- icon: "square"
64
- });
65
- const chartXAxis = useXAxis({
66
- ...xAxis
67
- });
68
- const chartYAxis = useYAxis({
69
- axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
70
- defaultType: "continuous",
71
- ...yAxis
72
- });
73
- const chartBoxplot = useBoxplot({ data, groupBy, measures, filters });
74
- const chartOption = useOption({
75
- option: {
76
- ...chartBoxplot,
77
- ...chartGrid,
78
- ...chartLegend,
79
- ...chartTooltip,
80
- ...chartXAxis,
81
- ...chartYAxis
82
- }
83
- });
84
- return /* @__PURE__ */ jsx(
85
- HvBaseChart,
86
- {
87
- ref,
88
- option: chartOption,
89
- width,
90
- height,
91
- ...others
92
- }
93
- );
94
- }
95
- );
96
- export {
97
- HvBoxplot
98
- };
48
+ },
49
+ ...tooltip
50
+ });
51
+ const chartGrid = useGrid({ ...grid });
52
+ const chartLegend = useLegend({
53
+ ...legend,
54
+ icon: "square"
55
+ });
56
+ const chartXAxis = useXAxis({ ...xAxis });
57
+ const chartYAxis = useYAxis({
58
+ axes: Array.isArray(yAxis) || yAxis == null ? yAxis : [yAxis],
59
+ defaultType: "continuous",
60
+ ...yAxis
61
+ });
62
+ return /* @__PURE__ */ jsx(HvBaseChart, {
63
+ ref,
64
+ option: useOption({ option: {
65
+ ...useBoxplot({
66
+ data,
67
+ groupBy,
68
+ measures,
69
+ filters
70
+ }),
71
+ ...chartGrid,
72
+ ...chartLegend,
73
+ ...chartTooltip,
74
+ ...chartXAxis,
75
+ ...chartYAxis
76
+ } }),
77
+ width,
78
+ height,
79
+ ...others
80
+ });
81
+ });
82
+ //#endregion
83
+ export { HvBoxplot };
@@ -1,26 +1,25 @@
1
1
  import { createClasses } from "@hitachivantara/uikit-react-utils";
2
2
  import { theme } from "@hitachivantara/uikit-styles";
3
- const { useClasses, staticClasses } = createClasses("HvBoxplot", {
4
- tooltipRoot: {
5
- backgroundColor: theme.colors.bgContainer,
6
- width: "fit-content",
7
- minWidth: 150,
8
- boxShadow: theme.colors.shadow,
9
- zIndex: theme.zIndices.sticky
10
- },
11
- tooltipContainer: {
12
- padding: theme.spacing("15px", "sm"),
13
- display: "flex",
14
- flexDirection: "column"
15
- },
16
- tooltipText: {
17
- fontFamily: theme.fontFamily.body,
18
- fontWeight: theme.fontWeights.normal,
19
- fontSize: theme.fontSizes.sm,
20
- color: theme.colors.text
21
- }
3
+ //#region src/Boxplot/Boxplot.styles.tsx
4
+ var { useClasses, staticClasses } = createClasses("HvBoxplot", {
5
+ tooltipRoot: {
6
+ backgroundColor: theme.colors.bgContainer,
7
+ width: "fit-content",
8
+ minWidth: 150,
9
+ boxShadow: theme.colors.shadow,
10
+ zIndex: theme.zIndices.sticky
11
+ },
12
+ tooltipContainer: {
13
+ padding: theme.spacing("15px", "sm"),
14
+ display: "flex",
15
+ flexDirection: "column"
16
+ },
17
+ tooltipText: {
18
+ fontFamily: theme.fontFamily.body,
19
+ fontWeight: theme.fontWeights.normal,
20
+ fontSize: theme.fontSizes.sm,
21
+ color: theme.colors.text
22
+ }
22
23
  });
23
- export {
24
- staticClasses,
25
- useClasses
26
- };
24
+ //#endregion
25
+ export { useClasses };
@@ -1,72 +1,58 @@
1
- import { useMemo } from "react";
2
1
  import { useBoxplotData } from "./useBoxplotData.js";
3
- const useBoxplot = ({
4
- data,
5
- groupBy,
6
- measures,
7
- filters
8
- }) => {
9
- const measuresFields = useMemo(() => {
10
- if (measures == null) return {};
11
- if (typeof measures === "string") return { [measures]: void 0 };
12
- if (Array.isArray(measures)) {
13
- return measures.reduce(
14
- (acc, value) => {
15
- const field = typeof value === "string" ? value : value.field;
16
- acc[field] = typeof value === "string" ? void 0 : value.yAxis;
17
- return acc;
18
- },
19
- {}
20
- );
21
- }
22
- return { [measures.field]: measures.yAxis };
23
- }, [measures]);
24
- const chartData = useBoxplotData({
25
- data,
26
- groupBy,
27
- measures: measuresFields,
28
- filters
29
- });
30
- const boxplotData = useMemo(() => {
31
- const setData = {};
32
- Object.keys(measuresFields).forEach((m) => {
33
- setData[m] = [];
34
- Object.keys(chartData).forEach((key) => {
35
- setData[m].push(chartData[key][m]);
36
- });
37
- });
38
- const sources = [];
39
- const transforms = [];
40
- const series = [];
41
- Object.keys(measuresFields).forEach((m, index) => {
42
- sources.push({
43
- source: setData[m],
44
- id: m
45
- });
46
- transforms.push({
47
- fromDatasetId: m,
48
- transform: {
49
- type: "boxplot",
50
- config: {
51
- itemNameFormatter: (params) => Object.keys(chartData)[params.value]
52
- }
53
- }
54
- });
55
- series.push({
56
- name: m,
57
- type: "boxplot",
58
- datasetIndex: Object.keys(measuresFields).length + index,
59
- yAxisId: measuresFields[m]
60
- });
61
- });
62
- const datasets = {
63
- dataset: [...sources, ...transforms],
64
- series
65
- };
66
- return datasets;
67
- }, [chartData, measuresFields]);
68
- return boxplotData;
69
- };
70
- export {
71
- useBoxplot
2
+ import { useMemo } from "react";
3
+ //#region src/Boxplot/useBoxplot.tsx
4
+ var useBoxplot = ({ data, groupBy, measures, filters }) => {
5
+ const measuresFields = useMemo(() => {
6
+ if (measures == null) return {};
7
+ if (typeof measures === "string") return { [measures]: void 0 };
8
+ if (Array.isArray(measures)) return measures.reduce((acc, value) => {
9
+ const field = typeof value === "string" ? value : value.field;
10
+ acc[field] = typeof value === "string" ? void 0 : value.yAxis;
11
+ return acc;
12
+ }, {});
13
+ return { [measures.field]: measures.yAxis };
14
+ }, [measures]);
15
+ const chartData = useBoxplotData({
16
+ data,
17
+ groupBy,
18
+ measures: measuresFields,
19
+ filters
20
+ });
21
+ return useMemo(() => {
22
+ const setData = {};
23
+ Object.keys(measuresFields).forEach((m) => {
24
+ setData[m] = [];
25
+ Object.keys(chartData).forEach((key) => {
26
+ setData[m].push(chartData[key][m]);
27
+ });
28
+ });
29
+ const sources = [];
30
+ const transforms = [];
31
+ const series = [];
32
+ Object.keys(measuresFields).forEach((m, index) => {
33
+ sources.push({
34
+ source: setData[m],
35
+ id: m
36
+ });
37
+ transforms.push({
38
+ fromDatasetId: m,
39
+ transform: {
40
+ type: "boxplot",
41
+ config: { itemNameFormatter: (params) => Object.keys(chartData)[params.value] }
42
+ }
43
+ });
44
+ series.push({
45
+ name: m,
46
+ type: "boxplot",
47
+ datasetIndex: Object.keys(measuresFields).length + index,
48
+ yAxisId: measuresFields[m]
49
+ });
50
+ });
51
+ return {
52
+ dataset: [...sources, ...transforms],
53
+ series
54
+ };
55
+ }, [chartData, measuresFields]);
72
56
  };
57
+ //#endregion
58
+ export { useBoxplot };
@@ -1,40 +1,37 @@
1
+ import { getHvArqueroCombinedFilters, normalizeColumnName, processTableData } from "../utils/index.js";
1
2
  import { useMemo } from "react";
2
3
  import { escape } from "arquero";
3
- import { processTableData, normalizeColumnName, getHvArqueroCombinedFilters } from "../utils/index.js";
4
- const useBoxplotData = ({
5
- data,
6
- groupBy: groupByProp,
7
- measures,
8
- filters: filtersProp
9
- }) => {
10
- const chartData = useMemo(() => {
11
- const { data: processedData } = processTableData(data);
12
- let tableData = processedData;
13
- if (filtersProp) {
14
- const filters = (Array.isArray(filtersProp) ? filtersProp : [filtersProp]).map((filter) => ({
15
- ...filter,
16
- field: normalizeColumnName(filter.field)
17
- // normalize
18
- }));
19
- tableData = tableData.filter(
20
- escape((row) => getHvArqueroCombinedFilters(row, filters))
21
- );
22
- }
23
- const normalizedGroupBy = normalizeColumnName(groupByProp || "");
24
- const uniqueGroupBy = new Set(
25
- tableData.array(normalizedGroupBy)
26
- );
27
- const results = {};
28
- uniqueGroupBy.forEach((group) => {
29
- results[group] = {};
30
- Object.keys(measures).forEach((measure) => {
31
- results[group][measure] = tableData.params({ group, groupBy: normalizedGroupBy }).filter((d, $) => d[$.groupBy] === $.group).array(normalizeColumnName(measure));
32
- });
33
- });
34
- return results;
35
- }, [data, filtersProp, groupByProp, measures]);
36
- return chartData;
37
- };
38
- export {
39
- useBoxplotData
4
+ //#region src/Boxplot/useBoxplotData.tsx
5
+ var useBoxplotData = ({ data, groupBy: groupByProp, measures, filters: filtersProp }) => {
6
+ return useMemo(() => {
7
+ const { data: processedData } = processTableData(data);
8
+ let tableData = processedData;
9
+ if (filtersProp) {
10
+ const filters = (Array.isArray(filtersProp) ? filtersProp : [filtersProp]).map((filter) => ({
11
+ ...filter,
12
+ field: normalizeColumnName(filter.field)
13
+ }));
14
+ tableData = tableData.filter(escape((row) => getHvArqueroCombinedFilters(row, filters)));
15
+ }
16
+ const normalizedGroupBy = normalizeColumnName(groupByProp || "");
17
+ const uniqueGroupBy = new Set(tableData.array(normalizedGroupBy));
18
+ const results = {};
19
+ uniqueGroupBy.forEach((group) => {
20
+ results[group] = {};
21
+ Object.keys(measures).forEach((measure) => {
22
+ results[group][measure] = tableData.params({
23
+ group,
24
+ groupBy: normalizedGroupBy
25
+ }).filter((d, $) => d[$.groupBy] === $.group).array(normalizeColumnName(measure));
26
+ });
27
+ });
28
+ return results;
29
+ }, [
30
+ data,
31
+ filtersProp,
32
+ groupByProp,
33
+ measures
34
+ ]);
40
35
  };
36
+ //#endregion
37
+ export { useBoxplotData };