@embeddable.com/remarkable-pro 0.1.12 → 0.1.13
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/PivotTablePro.js +1 -1
- package/dist/components/charts/tables/PivotTablePro/index.d.ts.map +1 -1
- package/dist/embeddable-components.json +34 -34
- package/dist/index-ezkJ1Yt0.js +135 -0
- package/dist/{index-B329Sipk.js.map → index-ezkJ1Yt0.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/dist/index-B329Sipk.js +0 -131
package/dist/PivotTablePro.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { l as t } from "./Color.type.emb-Bon3x9VC.js";
|
|
2
2
|
import { definePreview as d, defineComponent as u } from "@embeddable.com/react";
|
|
3
|
-
import { P as r } from "./index-
|
|
3
|
+
import { P as r } from "./index-ezkJ1Yt0.js";
|
|
4
4
|
import { i as o, s as i } from "./component.inputs.constants-DX8nFR6c.js";
|
|
5
5
|
import { p as a } from "./preview.data.constants-BeVHkWI3.js";
|
|
6
6
|
const w = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/tables/PivotTablePro/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAexE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,GAAG,oBAAoB,CAAC;AAEzB,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/tables/PivotTablePro/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAexE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,GAAG,oBAAoB,CAAC;AAEzB,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAmI/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
1
|
{
|
|
2
2
|
"components": [
|
|
3
3
|
"EmptyBlockPro",
|
|
4
|
-
"DimensionSingleSelectFieldPro",
|
|
5
4
|
"ComparisonPeriodSelectFieldPro",
|
|
5
|
+
"DimensionSingleSelectFieldPro",
|
|
6
6
|
"MultiSelectFieldPro",
|
|
7
|
-
"SingleSelectFieldPro",
|
|
8
|
-
"DateRangePickerCustomPro",
|
|
9
7
|
"MeasureSingleSelectFieldPro",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
8
|
+
"DateRangePickerCustomPro",
|
|
9
|
+
"GranularitySelectFieldPro",
|
|
10
|
+
"SingleSelectFieldPro",
|
|
11
|
+
"DateRangeSelectFieldPro",
|
|
12
|
+
"BarChartDefaultHorizontalPro",
|
|
12
13
|
"BarChartGroupedPro",
|
|
14
|
+
"BarChartGroupedHorizontalPro",
|
|
15
|
+
"KpiChartNumberPro",
|
|
16
|
+
"BarChartDefaultPro",
|
|
13
17
|
"BarChartStackedHorizontalPro",
|
|
18
|
+
"LineChartGroupedPro",
|
|
19
|
+
"LineChartDefaultPro",
|
|
20
|
+
"LineChartComparisonDefaultPro",
|
|
14
21
|
"BarChartStackedPro",
|
|
15
22
|
"KpiChartNumberComparisonPro",
|
|
16
23
|
"DonutChartPro",
|
|
17
|
-
"KpiChartNumberPro",
|
|
18
|
-
"LineChartDefaultPro",
|
|
19
|
-
"BarChartDefaultHorizontalPro",
|
|
20
|
-
"LineChartComparisonDefaultPro",
|
|
21
|
-
"PieChartPro",
|
|
22
|
-
"BarChartGroupedHorizontalPro",
|
|
23
|
-
"DateRangeSelectFieldPro",
|
|
24
|
-
"GranularitySelectFieldPro",
|
|
25
|
-
"LineChartGroupedPro",
|
|
26
24
|
"PivotTablePro",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
25
|
+
"DonutLabelChartPro",
|
|
26
|
+
"PieChartPro",
|
|
29
27
|
"HorizontalDividerPro",
|
|
30
|
-
"HeatMapPro"
|
|
28
|
+
"HeatMapPro",
|
|
29
|
+
"TableChartPaginated",
|
|
30
|
+
"TableScrollable"
|
|
31
31
|
],
|
|
32
32
|
"editors": [
|
|
33
33
|
"ColorEditor"
|
|
34
34
|
],
|
|
35
35
|
"previews": [
|
|
36
36
|
"EmptyBlockPro",
|
|
37
|
-
"DimensionSingleSelectFieldPro",
|
|
38
37
|
"ComparisonPeriodSelectFieldPro",
|
|
38
|
+
"DimensionSingleSelectFieldPro",
|
|
39
39
|
"MultiSelectFieldPro",
|
|
40
|
-
"SingleSelectFieldPro",
|
|
41
|
-
"DateRangePickerCustomPro",
|
|
42
40
|
"MeasureSingleSelectFieldPro",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
41
|
+
"DateRangePickerCustomPro",
|
|
42
|
+
"GranularitySelectFieldPro",
|
|
43
|
+
"SingleSelectFieldPro",
|
|
44
|
+
"DateRangeSelectFieldPro",
|
|
45
|
+
"BarChartDefaultHorizontalPro",
|
|
45
46
|
"BarChartGroupedPro",
|
|
47
|
+
"BarChartGroupedHorizontalPro",
|
|
48
|
+
"KpiChartNumberPro",
|
|
49
|
+
"BarChartDefaultPro",
|
|
46
50
|
"BarChartStackedHorizontalPro",
|
|
51
|
+
"LineChartGroupedPro",
|
|
52
|
+
"LineChartDefaultPro",
|
|
53
|
+
"LineChartComparisonDefaultPro",
|
|
47
54
|
"BarChartStackedPro",
|
|
48
55
|
"KpiChartNumberComparisonPro",
|
|
49
56
|
"DonutChartPro",
|
|
50
|
-
"KpiChartNumberPro",
|
|
51
|
-
"LineChartDefaultPro",
|
|
52
|
-
"BarChartDefaultHorizontalPro",
|
|
53
|
-
"LineChartComparisonDefaultPro",
|
|
54
|
-
"PieChartPro",
|
|
55
|
-
"BarChartGroupedHorizontalPro",
|
|
56
|
-
"DateRangeSelectFieldPro",
|
|
57
|
-
"GranularitySelectFieldPro",
|
|
58
|
-
"LineChartGroupedPro",
|
|
59
57
|
"PivotTablePro",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
58
|
+
"DonutLabelChartPro",
|
|
59
|
+
"PieChartPro",
|
|
62
60
|
"HorizontalDividerPro",
|
|
63
|
-
"HeatMapPro"
|
|
61
|
+
"HeatMapPro",
|
|
62
|
+
"TableChartPaginated",
|
|
63
|
+
"TableScrollable"
|
|
64
64
|
],
|
|
65
65
|
"plugin": "react"
|
|
66
66
|
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { j as P, t as X } from "./Color.type.emb-Bon3x9VC.js";
|
|
2
|
+
import { useTheme as Y } from "@embeddable.com/react";
|
|
3
|
+
import { a as Z, r as $, i as K } from "./component.utils-DubLDCwF.js";
|
|
4
|
+
import { C as ee } from "./ChartCard-BO7MZwqM.js";
|
|
5
|
+
import { useRef as te, useState as D, useEffect as oe } from "react";
|
|
6
|
+
import { u as S } from "./charts.fillGaps.hooks-C7KsWcZb.js";
|
|
7
|
+
import { g as x } from "./preview.data.constants-BeVHkWI3.js";
|
|
8
|
+
import { u as ne } from "./tables.hooks-fVC_4V5K.js";
|
|
9
|
+
const se = (t, e) => {
|
|
10
|
+
const o = x(e);
|
|
11
|
+
return t.measures.map((n) => {
|
|
12
|
+
var l, s;
|
|
13
|
+
return {
|
|
14
|
+
key: n.name,
|
|
15
|
+
label: o.dimensionOrMeasureTitle(n),
|
|
16
|
+
showAsPercentage: !!((l = n.inputs) != null && l.showAsPercentage),
|
|
17
|
+
percentageDecimalPlaces: ((s = n.inputs) == null ? void 0 : s.decimalPlaces) ?? 1,
|
|
18
|
+
accessor: (r) => r[n.name] == null ? t.displayNullAs : o.data(n, r[n.name])
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
}, R = (t, e) => {
|
|
22
|
+
const o = x(e);
|
|
23
|
+
return {
|
|
24
|
+
key: t.dimension.name,
|
|
25
|
+
label: o.dimensionOrMeasureTitle(t.dimension),
|
|
26
|
+
formatValue: (n) => o.data(t.dimension, n)
|
|
27
|
+
};
|
|
28
|
+
}, ae = (t) => t.filter((e) => {
|
|
29
|
+
var o;
|
|
30
|
+
return (o = e.inputs) == null ? void 0 : o.showColumnTotal;
|
|
31
|
+
}).map((e) => e.name), ie = (t) => t.filter((e) => {
|
|
32
|
+
var o;
|
|
33
|
+
return (o = e.inputs) == null ? void 0 : o.showRowTotal;
|
|
34
|
+
}).map((e) => e.name), re = (t, e, o = "asc") => [...t].sort((n, l) => n[e] < l[e] ? o === "asc" ? -1 : 1 : n[e] > l[e] ? o === "asc" ? 1 : -1 : 0), le = (t) => {
|
|
35
|
+
var p, b;
|
|
36
|
+
const e = Y();
|
|
37
|
+
Z(e);
|
|
38
|
+
const { title: o, description: n, tooltip: l } = $(t), {
|
|
39
|
+
resultsSubRows: s,
|
|
40
|
+
measures: r,
|
|
41
|
+
rowDimension: a,
|
|
42
|
+
subRowDimension: m,
|
|
43
|
+
columnDimension: c,
|
|
44
|
+
displayNullAs: F,
|
|
45
|
+
columnWidth: y,
|
|
46
|
+
firstColumnWidth: C,
|
|
47
|
+
hideMenu: M,
|
|
48
|
+
expandedRowKeys: w,
|
|
49
|
+
setExpandedRowKey: B
|
|
50
|
+
} = t, A = Array.from(
|
|
51
|
+
new Set((t.results.data ?? []).filter(Boolean).map((i) => i[c.name]))
|
|
52
|
+
), j = Array.from(
|
|
53
|
+
new Set((t.results.data ?? []).filter(Boolean).map((i) => i[a.name]))
|
|
54
|
+
), E = S({
|
|
55
|
+
results: t.results,
|
|
56
|
+
dimension: c
|
|
57
|
+
}), O = S({
|
|
58
|
+
results: E,
|
|
59
|
+
dimension: a
|
|
60
|
+
}), L = ne({
|
|
61
|
+
results: O,
|
|
62
|
+
columnOrder: A,
|
|
63
|
+
rowOrder: j,
|
|
64
|
+
columnDimension: c,
|
|
65
|
+
rowDimension: a,
|
|
66
|
+
measures: r
|
|
67
|
+
}), G = te(null), _ = se({ measures: r, displayNullAs: F }, e), k = R({ dimension: a }, e), N = m ? R({ dimension: m }, e) : void 0, W = R({ dimension: c }, e), z = ae(r), I = ie(r), [V, g] = D(/* @__PURE__ */ new Set()), [q, H] = D(/* @__PURE__ */ new Map()), J = (i) => {
|
|
68
|
+
g((u) => new Set(u).add(i)), B(i);
|
|
69
|
+
};
|
|
70
|
+
oe(() => {
|
|
71
|
+
if (!s || !(s != null && s.data) || w.length === 0)
|
|
72
|
+
return;
|
|
73
|
+
const i = /* @__PURE__ */ new Map();
|
|
74
|
+
w.forEach((u) => {
|
|
75
|
+
var h, v;
|
|
76
|
+
if ((h = s.data) == null ? void 0 : h.some(
|
|
77
|
+
(d) => String(d[a.name]) === u
|
|
78
|
+
)) {
|
|
79
|
+
const d = ((v = s.data) == null ? void 0 : v.filter((f) => String(f[a.name]) === u)) ?? [], U = m ? re(d, m.name, "asc") : d;
|
|
80
|
+
i.set(u, U), g((f) => {
|
|
81
|
+
const T = new Set(f);
|
|
82
|
+
return T.delete(u), T;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}), H(i);
|
|
86
|
+
}, [s, w, a, m]);
|
|
87
|
+
const Q = {
|
|
88
|
+
...t.results,
|
|
89
|
+
isLoading: !!((p = t.results) != null && p.isLoading || s != null && s.isLoading)
|
|
90
|
+
};
|
|
91
|
+
return /* @__PURE__ */ P.jsx(
|
|
92
|
+
ee,
|
|
93
|
+
{
|
|
94
|
+
ref: G,
|
|
95
|
+
title: o,
|
|
96
|
+
description: n,
|
|
97
|
+
tooltip: l,
|
|
98
|
+
data: Q,
|
|
99
|
+
dimensionsAndMeasures: [a, c, ...r],
|
|
100
|
+
errorMessage: (b = t.results) == null ? void 0 : b.error,
|
|
101
|
+
hideMenu: M,
|
|
102
|
+
children: /* @__PURE__ */ P.jsx(
|
|
103
|
+
X,
|
|
104
|
+
{
|
|
105
|
+
firstColumnWidth: C,
|
|
106
|
+
columnWidth: y,
|
|
107
|
+
totalLabel: K.t("charts.pivotTable.total"),
|
|
108
|
+
data: L,
|
|
109
|
+
measures: _,
|
|
110
|
+
rowDimension: k,
|
|
111
|
+
columnDimension: W,
|
|
112
|
+
columnTotalsFor: z,
|
|
113
|
+
rowTotalsFor: I,
|
|
114
|
+
expandableRows: !!m,
|
|
115
|
+
subRowsByRow: q,
|
|
116
|
+
loadingRows: V,
|
|
117
|
+
onRowExpand: J,
|
|
118
|
+
subRowDimension: N
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
}, be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
124
|
+
__proto__: null,
|
|
125
|
+
default: le
|
|
126
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
127
|
+
export {
|
|
128
|
+
le as P,
|
|
129
|
+
R as a,
|
|
130
|
+
se as b,
|
|
131
|
+
ie as c,
|
|
132
|
+
ae as g,
|
|
133
|
+
be as i
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=index-ezkJ1Yt0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-B329Sipk.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n }\n\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={props.results}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","jsx","ChartCard","PivotTable","i18n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-ezkJ1Yt0.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n }\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n const data: DataResponse = {\n ...props.results,\n isLoading: Boolean(props.results?.isLoading || resultsSubRows?.isLoading),\n };\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={data}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","data","jsx","ChartCard","PivotTable","i18n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import { i as He } from "./index-JCUdzaRx.js";
|
|
|
25
25
|
import { i as Ke } from "./index-CMhOFWvJ.js";
|
|
26
26
|
import { g as we, a as ze } from "./pies.utils-vTQtc_xP.js";
|
|
27
27
|
import { i as We } from "./index-U8AIqj5k.js";
|
|
28
|
-
import { i as _e, g as Ue, a as Ze, b as qe, c as Je } from "./index-
|
|
28
|
+
import { i as _e, g as Ue, a as Ze, b as qe, c as Je } from "./index-ezkJ1Yt0.js";
|
|
29
29
|
import { i as Ye } from "./index-DRlAqfj6.js";
|
|
30
30
|
import { T as ea, i as aa } from "./index-C2Wozewk.js";
|
|
31
31
|
import { g as oa, a as ta, b as sa, c as ia } from "./tables.utils-DS3rr8kb.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embeddable.com/remarkable-pro",
|
|
3
3
|
"author": "embeddable (https://embeddable.com)",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.13",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/embeddable-hq/remarkable-pro"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@embeddable.com/sdk-core": "^4.1.12",
|
|
80
|
-
"@embeddable.com/sdk-react": "^4.2.
|
|
80
|
+
"@embeddable.com/sdk-react": "^4.2.5",
|
|
81
81
|
"@eslint/css": "^0.13.0",
|
|
82
82
|
"@types/chroma-js": "^3.1.1",
|
|
83
83
|
"@types/react": "^19.1.9",
|
package/dist/index-B329Sipk.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { j as v, t as J } from "./Color.type.emb-Bon3x9VC.js";
|
|
2
|
-
import { useTheme as Q } from "@embeddable.com/react";
|
|
3
|
-
import { a as U, r as X, i as Y } from "./component.utils-DubLDCwF.js";
|
|
4
|
-
import { C as Z } from "./ChartCard-BO7MZwqM.js";
|
|
5
|
-
import { useRef as $, useState as T, useEffect as K } from "react";
|
|
6
|
-
import { u as S } from "./charts.fillGaps.hooks-C7KsWcZb.js";
|
|
7
|
-
import { g as P } from "./preview.data.constants-BeVHkWI3.js";
|
|
8
|
-
import { u as ee } from "./tables.hooks-fVC_4V5K.js";
|
|
9
|
-
const te = (t, e) => {
|
|
10
|
-
const o = P(e);
|
|
11
|
-
return t.measures.map((n) => {
|
|
12
|
-
var l, s;
|
|
13
|
-
return {
|
|
14
|
-
key: n.name,
|
|
15
|
-
label: o.dimensionOrMeasureTitle(n),
|
|
16
|
-
showAsPercentage: !!((l = n.inputs) != null && l.showAsPercentage),
|
|
17
|
-
percentageDecimalPlaces: ((s = n.inputs) == null ? void 0 : s.decimalPlaces) ?? 1,
|
|
18
|
-
accessor: (r) => r[n.name] == null ? t.displayNullAs : o.data(n, r[n.name])
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
}, R = (t, e) => {
|
|
22
|
-
const o = P(e);
|
|
23
|
-
return {
|
|
24
|
-
key: t.dimension.name,
|
|
25
|
-
label: o.dimensionOrMeasureTitle(t.dimension),
|
|
26
|
-
formatValue: (n) => o.data(t.dimension, n)
|
|
27
|
-
};
|
|
28
|
-
}, oe = (t) => t.filter((e) => {
|
|
29
|
-
var o;
|
|
30
|
-
return (o = e.inputs) == null ? void 0 : o.showColumnTotal;
|
|
31
|
-
}).map((e) => e.name), ne = (t) => t.filter((e) => {
|
|
32
|
-
var o;
|
|
33
|
-
return (o = e.inputs) == null ? void 0 : o.showRowTotal;
|
|
34
|
-
}).map((e) => e.name), se = (t, e, o = "asc") => [...t].sort((n, l) => n[e] < l[e] ? o === "asc" ? -1 : 1 : n[e] > l[e] ? o === "asc" ? 1 : -1 : 0), ae = (t) => {
|
|
35
|
-
var b;
|
|
36
|
-
const e = Q();
|
|
37
|
-
U(e);
|
|
38
|
-
const { title: o, description: n, tooltip: l } = X(t), {
|
|
39
|
-
resultsSubRows: s,
|
|
40
|
-
measures: r,
|
|
41
|
-
rowDimension: a,
|
|
42
|
-
subRowDimension: m,
|
|
43
|
-
columnDimension: d,
|
|
44
|
-
displayNullAs: D,
|
|
45
|
-
columnWidth: x,
|
|
46
|
-
firstColumnWidth: F,
|
|
47
|
-
hideMenu: y,
|
|
48
|
-
expandedRowKeys: f,
|
|
49
|
-
setExpandedRowKey: C
|
|
50
|
-
} = t, M = Array.from(
|
|
51
|
-
new Set((t.results.data ?? []).filter(Boolean).map((i) => i[d.name]))
|
|
52
|
-
), A = Array.from(
|
|
53
|
-
new Set((t.results.data ?? []).filter(Boolean).map((i) => i[a.name]))
|
|
54
|
-
), B = S({
|
|
55
|
-
results: t.results,
|
|
56
|
-
dimension: d
|
|
57
|
-
}), j = S({
|
|
58
|
-
results: B,
|
|
59
|
-
dimension: a
|
|
60
|
-
}), E = ee({
|
|
61
|
-
results: j,
|
|
62
|
-
columnOrder: M,
|
|
63
|
-
rowOrder: A,
|
|
64
|
-
columnDimension: d,
|
|
65
|
-
rowDimension: a,
|
|
66
|
-
measures: r
|
|
67
|
-
}), O = $(null), G = te({ measures: r, displayNullAs: D }, e), _ = R({ dimension: a }, e), k = m ? R({ dimension: m }, e) : void 0, L = R({ dimension: d }, e), N = oe(r), W = ne(r), [z, p] = T(/* @__PURE__ */ new Set()), [I, V] = T(/* @__PURE__ */ new Map()), q = (i) => {
|
|
68
|
-
p((u) => new Set(u).add(i)), C(i);
|
|
69
|
-
};
|
|
70
|
-
return K(() => {
|
|
71
|
-
if (!s || !(s != null && s.data) || f.length === 0)
|
|
72
|
-
return;
|
|
73
|
-
const i = /* @__PURE__ */ new Map();
|
|
74
|
-
f.forEach((u) => {
|
|
75
|
-
var g, h;
|
|
76
|
-
if ((g = s.data) == null ? void 0 : g.some(
|
|
77
|
-
(c) => String(c[a.name]) === u
|
|
78
|
-
)) {
|
|
79
|
-
const c = ((h = s.data) == null ? void 0 : h.filter((H) => String(H[a.name]) === u)) ?? [], w = m ? se(c, m.name, "asc") : c;
|
|
80
|
-
i.set(u, w);
|
|
81
|
-
}
|
|
82
|
-
p((c) => {
|
|
83
|
-
const w = new Set(c);
|
|
84
|
-
return w.delete(u), w;
|
|
85
|
-
});
|
|
86
|
-
}), V(i);
|
|
87
|
-
}, [s, f, a, m]), /* @__PURE__ */ v.jsx(
|
|
88
|
-
Z,
|
|
89
|
-
{
|
|
90
|
-
ref: O,
|
|
91
|
-
title: o,
|
|
92
|
-
description: n,
|
|
93
|
-
tooltip: l,
|
|
94
|
-
data: t.results,
|
|
95
|
-
dimensionsAndMeasures: [a, d, ...r],
|
|
96
|
-
errorMessage: (b = t.results) == null ? void 0 : b.error,
|
|
97
|
-
hideMenu: y,
|
|
98
|
-
children: /* @__PURE__ */ v.jsx(
|
|
99
|
-
J,
|
|
100
|
-
{
|
|
101
|
-
firstColumnWidth: F,
|
|
102
|
-
columnWidth: x,
|
|
103
|
-
totalLabel: Y.t("charts.pivotTable.total"),
|
|
104
|
-
data: E,
|
|
105
|
-
measures: G,
|
|
106
|
-
rowDimension: _,
|
|
107
|
-
columnDimension: L,
|
|
108
|
-
columnTotalsFor: N,
|
|
109
|
-
rowTotalsFor: W,
|
|
110
|
-
expandableRows: !!m,
|
|
111
|
-
subRowsByRow: I,
|
|
112
|
-
loadingRows: z,
|
|
113
|
-
onRowExpand: q,
|
|
114
|
-
subRowDimension: k
|
|
115
|
-
}
|
|
116
|
-
)
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
}, Re = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
120
|
-
__proto__: null,
|
|
121
|
-
default: ae
|
|
122
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
123
|
-
export {
|
|
124
|
-
ae as P,
|
|
125
|
-
R as a,
|
|
126
|
-
te as b,
|
|
127
|
-
ne as c,
|
|
128
|
-
oe as g,
|
|
129
|
-
Re as i
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=index-B329Sipk.js.map
|