@gooddata/sdk-ui-charts 9.10.0-alpha.2 → 9.10.0-alpha.3
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/charts/index.d.ts +3 -0
- package/esm/charts/index.d.ts.map +1 -1
- package/esm/charts/index.js +4 -1
- package/esm/charts/index.js.map +1 -1
- package/esm/charts/repeater/CoreRepeater.d.ts +7 -0
- package/esm/charts/repeater/CoreRepeater.d.ts.map +1 -0
- package/esm/charts/repeater/CoreRepeater.js +38 -0
- package/esm/charts/repeater/CoreRepeater.js.map +1 -0
- package/esm/charts/repeater/Repeater.d.ts +40 -0
- package/esm/charts/repeater/Repeater.d.ts.map +1 -0
- package/esm/charts/repeater/Repeater.js +45 -0
- package/esm/charts/repeater/Repeater.js.map +1 -0
- package/esm/charts/repeater/internal/RepeaterChart.d.ts +8 -0
- package/esm/charts/repeater/internal/RepeaterChart.d.ts.map +1 -0
- package/esm/charts/repeater/internal/RepeaterChart.js +65 -0
- package/esm/charts/repeater/internal/RepeaterChart.js.map +1 -0
- package/esm/charts/repeater/internal/dataViewToRepeaterData.d.ts +22 -0
- package/esm/charts/repeater/internal/dataViewToRepeaterData.d.ts.map +1 -0
- package/esm/charts/repeater/internal/dataViewToRepeaterData.js +62 -0
- package/esm/charts/repeater/internal/dataViewToRepeaterData.js.map +1 -0
- package/esm/charts/repeater/internal/repeaterAgGridDataSource.d.ts +11 -0
- package/esm/charts/repeater/internal/repeaterAgGridDataSource.d.ts.map +1 -0
- package/esm/charts/repeater/internal/repeaterAgGridDataSource.js +32 -0
- package/esm/charts/repeater/internal/repeaterAgGridDataSource.js.map +1 -0
- package/esm/charts/repeater/internal/repeaterExecution.d.ts +14 -0
- package/esm/charts/repeater/internal/repeaterExecution.d.ts.map +1 -0
- package/esm/charts/repeater/internal/repeaterExecution.js +40 -0
- package/esm/charts/repeater/internal/repeaterExecution.js.map +1 -0
- package/esm/charts/repeater/internal/types.d.ts +3 -0
- package/esm/charts/repeater/internal/types.d.ts.map +1 -0
- package/esm/charts/repeater/internal/types.js +3 -0
- package/esm/charts/repeater/internal/types.js.map +1 -0
- package/esm/sdk-ui-charts.d.ts +58 -0
- package/package.json +13 -10
- package/styles/css/main.css +7935 -0
- package/styles/css/main.css.map +1 -1
- package/styles/css/repeater.css +7941 -0
- package/styles/css/repeater.css.map +1 -0
- package/styles/scss/main.scss +1 -0
- package/styles/scss/repeater.scss +682 -0
package/esm/charts/index.d.ts
CHANGED
|
@@ -23,5 +23,8 @@ export { DependencyWheelChart, IDependencyWheelChartProps, IDependencyWheelChart
|
|
|
23
23
|
export { WaterfallChart, IWaterfallChartProps, IWaterfallChartBucketProps, } from "./waterfallChart/WaterfallChart.js";
|
|
24
24
|
export { Xirr, IXirrProps, IXirrBucketProps } from "./xirr/Xirr.js";
|
|
25
25
|
export { CoreXirr } from "./xirr/CoreXirr.js";
|
|
26
|
+
export { constructRepeaterBuckets, constructRepeaterDimensions, } from "./repeater/internal/repeaterExecution.js";
|
|
27
|
+
export { Repeater, IRepeaterProps, IRepeaterBucketProps } from "./repeater/Repeater.js";
|
|
28
|
+
export { CoreRepeater } from "./repeater/CoreRepeater.js";
|
|
26
29
|
export { withJsxExport } from "./withJsxExport.js";
|
|
27
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,gCAAgC,GACnC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACH,cAAc,EACd,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EACH,oBAAoB,EACpB,0BAA0B,EAC1B,gCAAgC,GACnC,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACH,cAAc,EACd,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACH,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/esm/charts/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// (C) 2019-
|
|
1
|
+
// (C) 2019-2024 GoodData Corporation
|
|
2
2
|
export { BaseChart } from "./_base/BaseChart.js";
|
|
3
3
|
export { AreaChart } from "./areaChart/AreaChart.js";
|
|
4
4
|
export { BarChart } from "./barChart/BarChart.js";
|
|
@@ -23,5 +23,8 @@ export { DependencyWheelChart, } from "./dependencyWheelChart/DependencyWheelCha
|
|
|
23
23
|
export { WaterfallChart, } from "./waterfallChart/WaterfallChart.js";
|
|
24
24
|
export { Xirr } from "./xirr/Xirr.js";
|
|
25
25
|
export { CoreXirr } from "./xirr/CoreXirr.js";
|
|
26
|
+
export { constructRepeaterBuckets, constructRepeaterDimensions, } from "./repeater/internal/repeaterExecution.js";
|
|
27
|
+
export { Repeater } from "./repeater/Repeater.js";
|
|
28
|
+
export { CoreRepeater } from "./repeater/CoreRepeater.js";
|
|
26
29
|
export { withJsxExport } from "./withJsxExport.js";
|
|
27
30
|
//# sourceMappingURL=index.js.map
|
package/esm/charts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/charts/index.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,SAAS,EAA0C,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,UAAU,EAA4C,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,UAAU,EAA4C,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,YAAY,EAAgD,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,YAAY,EAA8B,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,EAG1B,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAA0C,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EACH,oBAAoB,GAGvB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACH,cAAc,GAGjB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAgC,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/charts/index.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,SAAS,EAA0C,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,UAAU,EAA4C,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,UAAU,EAA4C,MAAM,4BAA4B,CAAC;AAElG,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,YAAY,EAAgD,MAAM,gCAAgC,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,YAAY,EAA8B,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,EAG1B,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,GACxB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAA0C,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AAExF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAA8C,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EACH,oBAAoB,GAGvB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EACH,cAAc,GAGjB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAgC,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACH,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAwC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreRepeater.d.ts","sourceRoot":"","sources":["../../../src/charts/repeater/CoreRepeater.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0ClD,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { LoadingComponent as SDKLoadingComponent, ErrorComponent as SDKErrorComponent, useCancelablePromise, DataViewFacade, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { RepeaterChart } from "./internal/RepeaterChart.js";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export const CoreRepeater = (props) => {
|
|
9
|
+
const { execution, ErrorComponent = SDKErrorComponent, LoadingComponent = SDKLoadingComponent, onLoadingChanged, pushData, } = props;
|
|
10
|
+
const { result, error } = useCancelablePromise({
|
|
11
|
+
promise: async () => {
|
|
12
|
+
const isTwoDim = execution.definition.dimensions.length === 2;
|
|
13
|
+
const offset = isTwoDim ? [0, 0] : [0];
|
|
14
|
+
const size = isTwoDim ? [1, 1] : [1];
|
|
15
|
+
const executionResult = await execution.execute();
|
|
16
|
+
const dataWindow = await executionResult.readWindow(offset, size);
|
|
17
|
+
return DataViewFacade.for(dataWindow);
|
|
18
|
+
},
|
|
19
|
+
onLoading: () => {
|
|
20
|
+
onLoadingChanged?.({ isLoading: true });
|
|
21
|
+
},
|
|
22
|
+
onSuccess: (dataView) => {
|
|
23
|
+
onLoadingChanged?.({ isLoading: false });
|
|
24
|
+
pushData?.({ dataView: dataView.dataView });
|
|
25
|
+
},
|
|
26
|
+
onError: () => {
|
|
27
|
+
onLoadingChanged?.({ isLoading: false });
|
|
28
|
+
},
|
|
29
|
+
}, [execution.fingerprint()]);
|
|
30
|
+
if (error) {
|
|
31
|
+
return React.createElement(ErrorComponent, { message: error.message });
|
|
32
|
+
}
|
|
33
|
+
if (!result) {
|
|
34
|
+
return React.createElement(LoadingComponent, null);
|
|
35
|
+
}
|
|
36
|
+
return React.createElement(RepeaterChart, { dataView: result });
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=CoreRepeater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreRepeater.js","sourceRoot":"","sources":["../../../src/charts/repeater/CoreRepeater.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,gBAAgB,IAAI,mBAAmB,EACvC,cAAc,IAAI,iBAAiB,EACnC,oBAAoB,EACpB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA8B,CAAC,KAAK,EAAE,EAAE;IAC7D,MAAM,EACF,SAAS,EACT,cAAc,GAAG,iBAAiB,EAClC,gBAAgB,GAAG,mBAAmB,EACtC,gBAAgB,EAChB,QAAQ,GACX,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAC1C;QACI,OAAO,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAClE,OAAO,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACZ,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpB,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACV,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;KACJ,EACD,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAC5B,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,oBAAC,cAAc,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,oBAAC,gBAAgB,OAAG,CAAC;IAChC,CAAC;IAED,OAAO,oBAAC,aAAa,IAAC,QAAQ,EAAE,MAAM,GAAI,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AttributeOrPlaceholder, NullableFiltersOrPlaceholders, AttributesMeasuresOrPlaceholders } from "@gooddata/sdk-ui";
|
|
3
|
+
import { IBucketChartProps, ICoreChartProps } from "../../interfaces/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* @beta
|
|
6
|
+
*/
|
|
7
|
+
export interface IRepeaterBucketProps {
|
|
8
|
+
/**
|
|
9
|
+
* Main attribute that sets repeating frequency used for the computation.
|
|
10
|
+
*/
|
|
11
|
+
attribute: AttributeOrPlaceholder;
|
|
12
|
+
/**
|
|
13
|
+
* Definition of columns which are sliced by the main attribute.
|
|
14
|
+
*/
|
|
15
|
+
columns?: AttributesMeasuresOrPlaceholders;
|
|
16
|
+
/**
|
|
17
|
+
* Slicing attribute to be used for visualization measures.
|
|
18
|
+
*/
|
|
19
|
+
sliceVisualizationBy?: AttributeOrPlaceholder;
|
|
20
|
+
/**
|
|
21
|
+
* Specify filters to apply on the data to compute with.
|
|
22
|
+
*/
|
|
23
|
+
filters?: NullableFiltersOrPlaceholders;
|
|
24
|
+
/**
|
|
25
|
+
* Resolution context for composed placeholders.
|
|
26
|
+
*/
|
|
27
|
+
placeholdersResolutionContext?: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @beta
|
|
31
|
+
*/
|
|
32
|
+
export interface IRepeaterProps extends IBucketChartProps, IRepeaterBucketProps {
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @beta
|
|
36
|
+
*/
|
|
37
|
+
export declare const Repeater: (props: IRepeaterProps) => JSX.Element;
|
|
38
|
+
export declare function RenderRepeater(props: IRepeaterProps): JSX.Element;
|
|
39
|
+
export declare function toCoreRepeaterProps(props: IRepeaterProps): ICoreChartProps;
|
|
40
|
+
//# sourceMappingURL=Repeater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Repeater.d.ts","sourceRoot":"","sources":["../../../src/charts/repeater/Repeater.tsx"],"names":[],"mappings":";AAKA,OAAO,EAGH,sBAAsB,EACtB,6BAA6B,EAE7B,gCAAgC,EACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAS/E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,SAAS,EAAE,sBAAsB,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,gCAAgC,CAAC;IAE3C;;OAEG;IACH,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;IAE9C;;OAEG;IACH,OAAO,CAAC,EAAE,6BAA6B,CAAC;IAExC;;OAEG;IACH,6BAA6B,CAAC,EAAE,GAAG,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,iBAAiB,EAAE,oBAAoB;CAAG;AAIlF;;GAEG;AACH,eAAO,MAAM,QAAQ,UAAW,cAAc,KAAG,WAOhD,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAEjE;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAsB1E"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { useResolveValuesWithPlaceholders, withContexts, } from "@gooddata/sdk-ui";
|
|
4
|
+
import omit from "lodash/omit.js";
|
|
5
|
+
import { CoreRepeater } from "./CoreRepeater.js";
|
|
6
|
+
import { constructRepeaterBuckets, constructRepeaterDimensions } from "./internal/repeaterExecution.js";
|
|
7
|
+
const WrappedRepeater = withContexts(RenderRepeater);
|
|
8
|
+
/**
|
|
9
|
+
* @beta
|
|
10
|
+
*/
|
|
11
|
+
export const Repeater = (props) => {
|
|
12
|
+
const [attribute, measures, filters] = useResolveValuesWithPlaceholders([props.attribute, props.columns, props.filters], props.placeholdersResolutionContext);
|
|
13
|
+
return React.createElement(WrappedRepeater, { ...props, attribute, measures, filters });
|
|
14
|
+
};
|
|
15
|
+
export function RenderRepeater(props) {
|
|
16
|
+
return React.createElement(CoreRepeater, { ...toCoreRepeaterProps(props) });
|
|
17
|
+
}
|
|
18
|
+
export function toCoreRepeaterProps(props) {
|
|
19
|
+
const { attribute, columns = [], sliceVisualizationBy } = props;
|
|
20
|
+
const buckets = constructRepeaterBuckets(attribute, columns, sliceVisualizationBy);
|
|
21
|
+
const newProps = omit(props, [
|
|
22
|
+
"attribute",
|
|
23
|
+
"columns",
|
|
24
|
+
"sliceVisualizationBy",
|
|
25
|
+
"filters",
|
|
26
|
+
"backend",
|
|
27
|
+
]);
|
|
28
|
+
return {
|
|
29
|
+
...newProps,
|
|
30
|
+
execution: createExecution(buckets, props),
|
|
31
|
+
exportTitle: props.exportTitle || "Repeater", // TODO: is this correct? at least translate
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function createExecution(buckets, props) {
|
|
35
|
+
const { backend, workspace, execConfig } = props;
|
|
36
|
+
const dimensions = constructRepeaterDimensions(buckets);
|
|
37
|
+
return backend
|
|
38
|
+
.withTelemetry("Repeater", props)
|
|
39
|
+
.workspace(workspace)
|
|
40
|
+
.execution()
|
|
41
|
+
.forBuckets(buckets, props.filters)
|
|
42
|
+
.withDimensions(...dimensions)
|
|
43
|
+
.withExecConfig(execConfig);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=Repeater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Repeater.js","sourceRoot":"","sources":["../../../src/charts/repeater/Repeater.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAEH,gCAAgC,EAGhC,YAAY,GAEf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAyCxG,MAAM,eAAe,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAqB,EAAe,EAAE;IAC3D,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,gCAAgC,CACnE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAC/C,KAAK,CAAC,6BAA6B,CACtC,CAAC;IAEF,OAAO,oBAAC,eAAe,OAAK,KAAK,EAAQ,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAM,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,KAAqB;IAChD,OAAO,oBAAC,YAAY,OAAK,mBAAmB,CAAC,KAAK,CAAC,GAAI,CAAC;AAC5D,CAAC;AASD,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACrD,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IAEhE,MAAM,OAAO,GAAG,wBAAwB,CACpC,SAAuB,EACvB,OAAgC,EAChC,oBAAkC,CACrC,CAAC;IAEF,MAAM,QAAQ,GAA4B,IAAI,CAAiD,KAAK,EAAE;QAClG,WAAW;QACX,SAAS;QACT,sBAAsB;QACtB,SAAS;QACT,SAAS;KACZ,CAAC,CAAC;IAEH,OAAO;QACH,GAAG,QAAQ;QACX,SAAS,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;QAC1C,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,EAAE,4CAA4C;KAC7F,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,OAAkB,EAAE,KAAqB;IAC9D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACjD,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAExD,OAAO,OAAO;SACT,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;SAChC,SAAS,CAAC,SAAS,CAAC;SACpB,SAAS,EAAE;SACX,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,OAA4B,CAAC;SACvD,cAAc,CAAC,GAAG,UAAU,CAAC;SAC7B,cAAc,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
3
|
+
interface IRepeaterChartProps {
|
|
4
|
+
dataView: DataViewFacade;
|
|
5
|
+
}
|
|
6
|
+
export declare const RepeaterChart: React.FC<IRepeaterChartProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=RepeaterChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepeaterChart.d.ts","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/RepeaterChart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAe,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AAKjF,UAAU,mBAAmB;IACzB,QAAQ,EAAE,cAAc,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2FvD,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import React, { useMemo } from "react";
|
|
3
|
+
import { AgGridReact } from "@ag-grid-community/react";
|
|
4
|
+
import { AllCommunityModules } from "@ag-grid-community/all-modules";
|
|
5
|
+
import { BucketNames, LoadingComponent } from "@gooddata/sdk-ui";
|
|
6
|
+
import { AgGridDatasource } from "./repeaterAgGridDataSource.js";
|
|
7
|
+
import { attributeLocalId, bucketsFind, isMeasure, measureLocalId } from "@gooddata/sdk-model";
|
|
8
|
+
import { useTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
9
|
+
export const RepeaterChart = ({ dataView }) => {
|
|
10
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
11
|
+
const dataSource = useMemo(() => new AgGridDatasource(dataView), [dataView.fingerprint()]);
|
|
12
|
+
const columnDefs = useMemo(() => {
|
|
13
|
+
const attributeDescriptors = dataView.meta().attributeDescriptors();
|
|
14
|
+
const measureDescriptors = dataView.meta().measureDescriptors();
|
|
15
|
+
const columnsBucket = bucketsFind(dataView.definition.buckets, BucketNames.COLUMNS);
|
|
16
|
+
return columnsBucket.items.map((bucketItem) => {
|
|
17
|
+
if (isMeasure(bucketItem)) {
|
|
18
|
+
const localId = measureLocalId(bucketItem);
|
|
19
|
+
const measureDescriptor = measureDescriptors.find((descriptor) => descriptor.measureHeaderItem.localIdentifier === localId);
|
|
20
|
+
return {
|
|
21
|
+
headerName: measureDescriptor.measureHeaderItem.name,
|
|
22
|
+
field: localId,
|
|
23
|
+
cellClass: "gd-cell",
|
|
24
|
+
cellRenderer: function CellRenderer(props) {
|
|
25
|
+
const theme = useTheme();
|
|
26
|
+
const color = theme?.table?.loadingIconColor ?? theme?.palette?.complementary?.c6 ?? undefined;
|
|
27
|
+
const { value } = props;
|
|
28
|
+
if (!value) {
|
|
29
|
+
return (React.createElement(LoadingComponent, { color: color, width: 36, imageHeight: 8, height: 26, speed: 2 }));
|
|
30
|
+
}
|
|
31
|
+
return React.createElement("div", null, JSON.stringify(value));
|
|
32
|
+
},
|
|
33
|
+
valueGetter: (params) => {
|
|
34
|
+
return params.data?.[localId];
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const localId = attributeLocalId(bucketItem);
|
|
40
|
+
const attributeDescriptor = attributeDescriptors.find((descriptor) => descriptor.attributeHeader.localIdentifier === localId);
|
|
41
|
+
return {
|
|
42
|
+
headerName: attributeDescriptor.attributeHeader.name,
|
|
43
|
+
field: localId,
|
|
44
|
+
cellClass: "gd-cell",
|
|
45
|
+
cellRenderer: function CellRenderer(props) {
|
|
46
|
+
const theme = useTheme();
|
|
47
|
+
const color = theme?.table?.loadingIconColor ?? theme?.palette?.complementary?.c6 ?? undefined;
|
|
48
|
+
const { value } = props;
|
|
49
|
+
if (!value) {
|
|
50
|
+
return (React.createElement(LoadingComponent, { color: color, width: 36, imageHeight: 8, height: 26, speed: 2 }));
|
|
51
|
+
}
|
|
52
|
+
return React.createElement("div", null, value);
|
|
53
|
+
},
|
|
54
|
+
valueGetter: (params) => {
|
|
55
|
+
return params.data?.[localId]?.name;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
|
+
}, [dataView.fingerprint()]);
|
|
62
|
+
return (React.createElement("div", { className: "gd-repeater ag-theme-balham s-repeater" },
|
|
63
|
+
React.createElement(AgGridReact, { key: dataView.fingerprint(), modules: AllCommunityModules, columnDefs: columnDefs, rowClass: "gd-table-row", datasource: dataSource, rowModelType: "infinite" })));
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=RepeaterChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RepeaterChart.js","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/RepeaterChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IResultAttributeHeaderItem } from "@gooddata/sdk-model";
|
|
2
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
3
|
+
/**
|
|
4
|
+
* Key is the localId of the attribute or measure.
|
|
5
|
+
*
|
|
6
|
+
* For row, or column attributes, value is IResultAttributeHeaderItem
|
|
7
|
+
* For slicing attribute, value is array of IResultAttributeHeaderItem.
|
|
8
|
+
* For measure(s), value is array of string or nulls (formatted values).
|
|
9
|
+
*/
|
|
10
|
+
export type IRepeaterRow = Record<string, IResultAttributeHeaderItem | IResultAttributeHeaderItem[] | (string | null)[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Map data view to a structure that can be easily rendered in a table (repeater).
|
|
13
|
+
*
|
|
14
|
+
* Execution is always constructed by the following rules:
|
|
15
|
+
* - It always contains 1 main row attribute
|
|
16
|
+
* - It can contain 0..n column attributes
|
|
17
|
+
* - Column attributes have always the same count of headers as the main row attribute
|
|
18
|
+
* - It can contain 0..n measures
|
|
19
|
+
* - It can contain 0 or 1 slicing attribute.
|
|
20
|
+
*/
|
|
21
|
+
export declare function dataViewToRepeaterData(dataViewFacade: DataViewFacade): IRepeaterRow[];
|
|
22
|
+
//# sourceMappingURL=dataViewToRepeaterData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataViewToRepeaterData.d.ts","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/dataViewToRepeaterData.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,0BAA0B,EAI7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAC7B,MAAM,EACN,0BAA0B,GAAG,0BAA0B,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAChF,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,EAAE,CAqDrF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import { attributeDescriptorLocalId, isAttributeDescriptor, isMeasureGroupDescriptor, } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* Map data view to a structure that can be easily rendered in a table (repeater).
|
|
5
|
+
*
|
|
6
|
+
* Execution is always constructed by the following rules:
|
|
7
|
+
* - It always contains 1 main row attribute
|
|
8
|
+
* - It can contain 0..n column attributes
|
|
9
|
+
* - Column attributes have always the same count of headers as the main row attribute
|
|
10
|
+
* - It can contain 0..n measures
|
|
11
|
+
* - It can contain 0 or 1 slicing attribute.
|
|
12
|
+
*/
|
|
13
|
+
export function dataViewToRepeaterData(dataViewFacade) {
|
|
14
|
+
const rows = [];
|
|
15
|
+
const [firstDimDescriptors, secondDimDescriptors] = [
|
|
16
|
+
dataViewFacade.meta().dimensionItemDescriptors(0),
|
|
17
|
+
dataViewFacade.meta().dimensionItemDescriptors(1),
|
|
18
|
+
];
|
|
19
|
+
const [firstDimHeaders, secondDimHeaders] = dataViewFacade.meta().allHeaders();
|
|
20
|
+
// Process first dimension (row and column attributes)
|
|
21
|
+
firstDimDescriptors.forEach((dimDescriptor, headerIndex) => {
|
|
22
|
+
if (isAttributeDescriptor(dimDescriptor)) {
|
|
23
|
+
const localId = attributeDescriptorLocalId(dimDescriptor);
|
|
24
|
+
firstDimHeaders[headerIndex].forEach((headerItem, itemIndex) => {
|
|
25
|
+
rows[itemIndex] = rows[itemIndex] || {};
|
|
26
|
+
rows[itemIndex][localId] = headerItem.attributeHeaderItem;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
// Process second dimension (slicing attribute and measures)
|
|
31
|
+
secondDimDescriptors.forEach((dimDescriptor) => {
|
|
32
|
+
if (isAttributeDescriptor(dimDescriptor)) {
|
|
33
|
+
const localId = attributeDescriptorLocalId(dimDescriptor);
|
|
34
|
+
const headerItems = secondDimHeaders[secondDimDescriptors.indexOf(dimDescriptor)];
|
|
35
|
+
// Slicing attribute is same for each row
|
|
36
|
+
rows.forEach((row) => {
|
|
37
|
+
row[localId] = headerItems.map((header) => header.attributeHeaderItem);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else if (isMeasureGroupDescriptor(dimDescriptor)) {
|
|
41
|
+
// Map each measure to rows
|
|
42
|
+
dimDescriptor.measureGroupHeader.items.forEach((measureDescriptor) => {
|
|
43
|
+
const allSeries = dataViewFacade
|
|
44
|
+
.data()
|
|
45
|
+
.series()
|
|
46
|
+
.allForMeasure(measureDescriptor.measureHeaderItem.localIdentifier);
|
|
47
|
+
// Map each measure series to rows
|
|
48
|
+
[...allSeries].forEach((series, seriesIndex) => {
|
|
49
|
+
// Map data points to relevant rows and respective measure
|
|
50
|
+
series.dataPoints().forEach((dataPoint, pointIndex) => {
|
|
51
|
+
const measureLocalId = measureDescriptor.measureHeaderItem.localIdentifier;
|
|
52
|
+
rows[pointIndex][measureLocalId] = rows[pointIndex][measureLocalId] || [];
|
|
53
|
+
rows[pointIndex][measureLocalId][seriesIndex] =
|
|
54
|
+
dataPoint.formattedValue();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return rows;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=dataViewToRepeaterData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataViewToRepeaterData.js","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/dataViewToRepeaterData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GridApi, IDatasource, IGetRowsParams } from "@ag-grid-community/all-modules";
|
|
2
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
3
|
+
export type GridApiProvider = () => GridApi | undefined;
|
|
4
|
+
export declare class AgGridDatasource implements IDatasource {
|
|
5
|
+
rowCount: number | undefined;
|
|
6
|
+
private dataViewFacade;
|
|
7
|
+
constructor(dataViewFacade: DataViewFacade);
|
|
8
|
+
private loadExecutionWindow;
|
|
9
|
+
getRows: (params: IGetRowsParams) => void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=repeaterAgGridDataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeaterAgGridDataSource.d.ts","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/repeaterAgGridDataSource.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,GAAG,SAAS,CAAC;AAExD,qBAAa,gBAAiB,YAAW,WAAW;IACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,EAAE,cAAc;YAM5B,mBAAmB;IAO1B,OAAO,WAAY,cAAc,KAAG,IAAI,CAa7C;CACL"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
2
|
+
import { dataViewToRepeaterData } from "./dataViewToRepeaterData.js";
|
|
3
|
+
const MAX_COLUMNS = 1000;
|
|
4
|
+
export class AgGridDatasource {
|
|
5
|
+
rowCount;
|
|
6
|
+
dataViewFacade;
|
|
7
|
+
constructor(dataViewFacade) {
|
|
8
|
+
const [firstDimCount] = dataViewFacade.dataView.count;
|
|
9
|
+
this.dataViewFacade = dataViewFacade;
|
|
10
|
+
this.rowCount = firstDimCount;
|
|
11
|
+
}
|
|
12
|
+
async loadExecutionWindow(startRow, endRow) {
|
|
13
|
+
const hasTwoDim = this.dataViewFacade.meta().dimensions().length > 1;
|
|
14
|
+
const offset = hasTwoDim ? [startRow, 0] : [startRow];
|
|
15
|
+
const size = hasTwoDim ? [endRow - startRow, MAX_COLUMNS] : [endRow - startRow];
|
|
16
|
+
return this.dataViewFacade.result().readWindow(offset, size);
|
|
17
|
+
}
|
|
18
|
+
getRows = (params) => {
|
|
19
|
+
const { startRow, endRow, successCallback, failCallback } = params;
|
|
20
|
+
this.loadExecutionWindow(startRow, endRow)
|
|
21
|
+
.then((result) => {
|
|
22
|
+
const dataViewFacade = DataViewFacade.for(result);
|
|
23
|
+
const transformedResult = dataViewToRepeaterData(dataViewFacade);
|
|
24
|
+
successCallback(transformedResult, result.totalCount[0]);
|
|
25
|
+
})
|
|
26
|
+
.catch((error) => {
|
|
27
|
+
console.error("error", { error });
|
|
28
|
+
failCallback();
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=repeaterAgGridDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeaterAgGridDataSource.js","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/repeaterAgGridDataSource.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,GAAG,IAAI,CAAC;AAIzB,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAqB;IAC5B,cAAc,CAAiB;IAEvC,YAAY,cAA8B;QACtC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,MAAc;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAEM,OAAO,GAAG,CAAC,MAAsB,EAAQ,EAAE;QAC9C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEnE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC;aACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;YACjE,eAAe,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAClC,YAAY,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACX,CAAC,CAAC;CACL"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IAttribute, IAttributeOrMeasure, IBucket, IDimension } from "@gooddata/sdk-model";
|
|
2
|
+
/**
|
|
3
|
+
* Constructs repeater buckets from the provided attributes and measures.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare function constructRepeaterBuckets(rowAttribute: IAttribute, columns: IAttributeOrMeasure[], sliceVisualizationBy?: IAttribute): IBucket[];
|
|
8
|
+
/**
|
|
9
|
+
* Constructs repeater execution dimensions from the provided buckets.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function constructRepeaterDimensions(buckets: IBucket[]): IDimension[];
|
|
14
|
+
//# sourceMappingURL=repeaterExecution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeaterExecution.d.ts","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/repeaterExecution.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,UAAU,EACV,mBAAmB,EACnB,OAAO,EACP,UAAU,EAOb,MAAM,qBAAqB,CAAC;AAG7B;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,YAAY,EAAE,UAAU,EACxB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,oBAAoB,CAAC,EAAE,UAAU,aAOpC;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAuB5E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// (C) 2024 GoodData Corporation
|
|
2
|
+
import { MeasureGroupIdentifier, bucketAttributes, bucketMeasures, bucketsFind, newBucket, newDimension, } from "@gooddata/sdk-model";
|
|
3
|
+
import { BucketNames } from "@gooddata/sdk-ui";
|
|
4
|
+
/**
|
|
5
|
+
* Constructs repeater buckets from the provided attributes and measures.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export function constructRepeaterBuckets(rowAttribute, columns, sliceVisualizationBy) {
|
|
10
|
+
return [
|
|
11
|
+
newBucket(BucketNames.ATTRIBUTE, rowAttribute),
|
|
12
|
+
newBucket(BucketNames.COLUMNS, ...columns),
|
|
13
|
+
sliceVisualizationBy ? newBucket(BucketNames.VIEW, sliceVisualizationBy) : undefined,
|
|
14
|
+
].filter(Boolean);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Constructs repeater execution dimensions from the provided buckets.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function constructRepeaterDimensions(buckets) {
|
|
22
|
+
// Row attribute
|
|
23
|
+
const rowAttributeBucket = bucketsFind(buckets, BucketNames.ATTRIBUTE);
|
|
24
|
+
const rowAttributeBucketAttributes = rowAttributeBucket ? bucketAttributes(rowAttributeBucket) : [];
|
|
25
|
+
const rowAttribute = rowAttributeBucketAttributes[0];
|
|
26
|
+
// Columns (row attribute display forms + visualization measures)
|
|
27
|
+
const columnsBucket = bucketsFind(buckets, BucketNames.COLUMNS);
|
|
28
|
+
const columnBucketMeasures = columnsBucket ? bucketMeasures(columnsBucket) : [];
|
|
29
|
+
const columnBucketAttributes = columnsBucket ? bucketAttributes(columnsBucket) : [];
|
|
30
|
+
// Slice by attribute
|
|
31
|
+
const viewBucket = bucketsFind(buckets, BucketNames.VIEW);
|
|
32
|
+
const viewBucketAttributes = viewBucket ? bucketAttributes(viewBucket) : [];
|
|
33
|
+
const viewAttribute = viewBucketAttributes[0];
|
|
34
|
+
const dimensions = [[rowAttribute, ...columnBucketAttributes]];
|
|
35
|
+
if (viewAttribute && columnBucketMeasures.length > 0) {
|
|
36
|
+
dimensions.push([viewAttribute, MeasureGroupIdentifier]);
|
|
37
|
+
}
|
|
38
|
+
return dimensions.map((d) => newDimension(d));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=repeaterExecution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeaterExecution.js","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/repeaterExecution.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAMH,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,SAAS,EACT,YAAY,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACpC,YAAwB,EACxB,OAA8B,EAC9B,oBAAiC;IAEjC,OAAO;QACH,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,YAA0B,CAAC;QAC5D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,GAAI,OAAiC,CAAC;QACrE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAkC,CAAC,CAAC,CAAC,CAAC,SAAS;KACrG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAkB;IAC1D,gBAAgB;IAChB,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,4BAA4B,GAAG,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,MAAM,YAAY,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAErD,iEAAiE;IACjE,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,sBAAsB,GAAG,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpF,qBAAqB;IACrB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAsB,CAAC,CAAC,YAAY,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC;IAElF,IAAI,aAAa,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/charts/repeater/internal/types.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
|
package/esm/sdk-ui-charts.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ import { ExplicitDrill } from '@gooddata/sdk-ui';
|
|
|
21
21
|
import { FiltersOrPlaceholders } from '@gooddata/sdk-ui';
|
|
22
22
|
import { getColorMappingPredicate } from '@gooddata/sdk-ui-vis-commons';
|
|
23
23
|
import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi';
|
|
24
|
+
import { IAttribute } from '@gooddata/sdk-model';
|
|
24
25
|
import { IAttributeOrMeasure } from '@gooddata/sdk-model';
|
|
25
26
|
import { IBucket } from '@gooddata/sdk-model';
|
|
26
27
|
import { IColor } from '@gooddata/sdk-model';
|
|
@@ -28,6 +29,7 @@ import { IColorMapping } from '@gooddata/sdk-ui-vis-commons';
|
|
|
28
29
|
import { IColorPalette } from '@gooddata/sdk-model';
|
|
29
30
|
import { IDataView } from '@gooddata/sdk-backend-spi';
|
|
30
31
|
import { Identifier } from '@gooddata/sdk-model';
|
|
32
|
+
import { IDimension } from '@gooddata/sdk-model';
|
|
31
33
|
import { IDrillEventCallback } from '@gooddata/sdk-ui';
|
|
32
34
|
import { IDrillEventIntersectionElement } from '@gooddata/sdk-ui';
|
|
33
35
|
import { IExecutionConfig } from '@gooddata/sdk-model';
|
|
@@ -246,11 +248,30 @@ export declare type ComparisonPosition = "top" | "left" | "right" | "auto";
|
|
|
246
248
|
*/
|
|
247
249
|
export declare const ComparisonPositionValues: Record<Uppercase<ComparisonPosition>, ComparisonPosition>;
|
|
248
250
|
|
|
251
|
+
/**
|
|
252
|
+
* Constructs repeater buckets from the provided attributes and measures.
|
|
253
|
+
*
|
|
254
|
+
* @internal
|
|
255
|
+
*/
|
|
256
|
+
export declare function constructRepeaterBuckets(rowAttribute: IAttribute, columns: IAttributeOrMeasure[], sliceVisualizationBy?: IAttribute): IBucket[];
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Constructs repeater execution dimensions from the provided buckets.
|
|
260
|
+
*
|
|
261
|
+
* @internal
|
|
262
|
+
*/
|
|
263
|
+
export declare function constructRepeaterDimensions(buckets: IBucket[]): IDimension[];
|
|
264
|
+
|
|
249
265
|
/**
|
|
250
266
|
* @internal
|
|
251
267
|
*/
|
|
252
268
|
export declare const CoreHeadline: React_2.ComponentClass<ICoreChartProps & ICoreHeadlineExtendedProps, any>;
|
|
253
269
|
|
|
270
|
+
/**
|
|
271
|
+
* @internal
|
|
272
|
+
*/
|
|
273
|
+
export declare const CoreRepeater: React_2.FC<ICoreChartProps>;
|
|
274
|
+
|
|
254
275
|
/**
|
|
255
276
|
* NOTE: exported to satisfy sdk-ui-ext; is internal, must not be used outside of SDK; will disapppear.
|
|
256
277
|
*
|
|
@@ -1739,6 +1760,38 @@ export declare interface IPyramidChartBucketProps {
|
|
|
1739
1760
|
export declare interface IPyramidChartProps extends IBucketChartProps, IPyramidChartBucketProps {
|
|
1740
1761
|
}
|
|
1741
1762
|
|
|
1763
|
+
/**
|
|
1764
|
+
* @beta
|
|
1765
|
+
*/
|
|
1766
|
+
export declare interface IRepeaterBucketProps {
|
|
1767
|
+
/**
|
|
1768
|
+
* Main attribute that sets repeating frequency used for the computation.
|
|
1769
|
+
*/
|
|
1770
|
+
attribute: AttributeOrPlaceholder;
|
|
1771
|
+
/**
|
|
1772
|
+
* Definition of columns which are sliced by the main attribute.
|
|
1773
|
+
*/
|
|
1774
|
+
columns?: AttributesMeasuresOrPlaceholders;
|
|
1775
|
+
/**
|
|
1776
|
+
* Slicing attribute to be used for visualization measures.
|
|
1777
|
+
*/
|
|
1778
|
+
sliceVisualizationBy?: AttributeOrPlaceholder;
|
|
1779
|
+
/**
|
|
1780
|
+
* Specify filters to apply on the data to compute with.
|
|
1781
|
+
*/
|
|
1782
|
+
filters?: NullableFiltersOrPlaceholders;
|
|
1783
|
+
/**
|
|
1784
|
+
* Resolution context for composed placeholders.
|
|
1785
|
+
*/
|
|
1786
|
+
placeholdersResolutionContext?: any;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
/**
|
|
1790
|
+
* @beta
|
|
1791
|
+
*/
|
|
1792
|
+
export declare interface IRepeaterProps extends IBucketChartProps, IRepeaterBucketProps {
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1742
1795
|
/**
|
|
1743
1796
|
* @public
|
|
1744
1797
|
*/
|
|
@@ -2109,6 +2162,11 @@ export declare type PositionType = "left" | "right" | "top" | "bottom" | "auto";
|
|
|
2109
2162
|
*/
|
|
2110
2163
|
export declare const PyramidChart: (props: IPyramidChartProps) => React_2.JSX.Element;
|
|
2111
2164
|
|
|
2165
|
+
/**
|
|
2166
|
+
* @beta
|
|
2167
|
+
*/
|
|
2168
|
+
export declare const Repeater: (props: IRepeaterProps) => JSX.Element;
|
|
2169
|
+
|
|
2112
2170
|
/**
|
|
2113
2171
|
* A Sankey diagram is a type of flow diagram,
|
|
2114
2172
|
* in which the width of the link between two nodes is shown proportionally to the flow quantity.
|