drizzle-cube 0.2.9 → 0.2.11
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/client/charts/chartConfigs.d.ts +3 -1
- package/dist/client/charts.js +15 -15
- package/dist/client/chunks/{chart-activitygridchart-Cz4bEf3V.js → chart-activitygridchart-D17Fxiuf.js} +841 -732
- package/dist/client/chunks/chart-activitygridchart-D17Fxiuf.js.map +1 -0
- package/dist/client/chunks/{chart-activitygridchart-config-DVH-sdYZ.js → chart-activitygridchart-config-AVBoHdRn.js} +6 -6
- package/dist/client/chunks/{chart-activitygridchart-config-DVH-sdYZ.js.map → chart-activitygridchart-config-AVBoHdRn.js.map} +1 -1
- package/dist/client/chunks/{chart-areachart-config-C2iwLEgm.js → chart-areachart-config-D9pPUKHZ.js} +16 -3
- package/dist/client/chunks/chart-areachart-config-D9pPUKHZ.js.map +1 -0
- package/dist/client/chunks/chart-areachart-udSbAzl1.js +239 -0
- package/dist/client/chunks/chart-areachart-udSbAzl1.js.map +1 -0
- package/dist/client/chunks/chart-axisformatcontrols-DqSa245M.js +196 -0
- package/dist/client/chunks/chart-axisformatcontrols-DqSa245M.js.map +1 -0
- package/dist/client/chunks/chart-barchart-CDIpqCKS.js +216 -0
- package/dist/client/chunks/chart-barchart-CDIpqCKS.js.map +1 -0
- package/dist/client/chunks/{chart-barchart-config-CAsUZfHw.js → chart-barchart-config-iniz62ni.js} +16 -3
- package/dist/client/chunks/chart-barchart-config-iniz62ni.js.map +1 -0
- package/dist/client/chunks/chart-bubblechart-CivK_yfh.js +214 -0
- package/dist/client/chunks/chart-bubblechart-CivK_yfh.js.map +1 -0
- package/dist/client/chunks/{chart-bubblechart-config-DRuY0m7S.js → chart-bubblechart-config-yLq2oyR3.js} +19 -5
- package/dist/client/chunks/{chart-bubblechart-config-DRuY0m7S.js.map → chart-bubblechart-config-yLq2oyR3.js.map} +1 -1
- package/dist/client/chunks/{chart-charttooltip-k8soCd2n.js → chart-charttooltip-BVEdz4Q-.js} +4 -4
- package/dist/client/chunks/{chart-charttooltip-k8soCd2n.js.map → chart-charttooltip-BVEdz4Q-.js.map} +1 -1
- package/dist/client/chunks/chart-datatable-NHE7BTMr.js +283 -0
- package/dist/client/chunks/chart-datatable-NHE7BTMr.js.map +1 -0
- package/dist/client/chunks/{chart-datatable-config-C0MoGDgo.js → chart-datatable-config-DmEA3A-7.js} +11 -3
- package/dist/client/chunks/{chart-datatable-config-C0MoGDgo.js.map → chart-datatable-config-DmEA3A-7.js.map} +1 -1
- package/dist/client/chunks/{chart-kpidelta-CTcuIO9G.js → chart-kpidelta-D-FR2o4V.js} +2 -2
- package/dist/client/chunks/{chart-kpidelta-CTcuIO9G.js.map → chart-kpidelta-D-FR2o4V.js.map} +1 -1
- package/dist/client/chunks/{chart-kpidelta-config-Bq2Ph_Sp.js → chart-kpidelta-config-DtSDG4Kl.js} +2 -2
- package/dist/client/chunks/{chart-kpidelta-config-Bq2Ph_Sp.js.map → chart-kpidelta-config-DtSDG4Kl.js.map} +1 -1
- package/dist/client/chunks/{chart-kpinumber-slEXt8C-.js → chart-kpinumber-DSH8RJxb.js} +4 -4
- package/dist/client/chunks/{chart-kpinumber-slEXt8C-.js.map → chart-kpinumber-DSH8RJxb.js.map} +1 -1
- package/dist/client/chunks/{chart-kpinumber-config-OMNhJXdH.js → chart-kpinumber-config-Da2LFeKM.js} +2 -2
- package/dist/client/chunks/{chart-kpinumber-config-OMNhJXdH.js.map → chart-kpinumber-config-Da2LFeKM.js.map} +1 -1
- package/dist/client/chunks/{chart-kpitext-giq03TOK.js → chart-kpitext-Z9oh0bJq.js} +3 -3
- package/dist/client/chunks/{chart-kpitext-giq03TOK.js.map → chart-kpitext-Z9oh0bJq.js.map} +1 -1
- package/dist/client/chunks/{chart-kpitext-config-BLiwQIVN.js → chart-kpitext-config-DjvigyfE.js} +2 -2
- package/dist/client/chunks/{chart-kpitext-config-BLiwQIVN.js.map → chart-kpitext-config-DjvigyfE.js.map} +1 -1
- package/dist/client/chunks/chart-linechart-D4r0uD1j.js +198 -0
- package/dist/client/chunks/chart-linechart-D4r0uD1j.js.map +1 -0
- package/dist/client/chunks/{chart-linechart-config-CVbDAvCB.js → chart-linechart-config-DLVS2Zxc.js} +18 -5
- package/dist/client/chunks/chart-linechart-config-DLVS2Zxc.js.map +1 -0
- package/dist/client/chunks/{chart-markdownchart-config-uttA9Th4.js → chart-markdownchart-config-CgOA3YSw.js} +2 -2
- package/dist/client/chunks/{chart-markdownchart-config-uttA9Th4.js.map → chart-markdownchart-config-CgOA3YSw.js.map} +1 -1
- package/dist/client/chunks/{chart-piechart-CZRDQxeB.js → chart-piechart-BhttUWuH.js} +61 -55
- package/dist/client/chunks/chart-piechart-BhttUWuH.js.map +1 -0
- package/dist/client/chunks/{chart-piechart-config-J748ISAR.js → chart-piechart-config-DgwOeKHr.js} +13 -5
- package/dist/client/chunks/{chart-piechart-config-J748ISAR.js.map → chart-piechart-config-DgwOeKHr.js.map} +1 -1
- package/dist/client/chunks/chart-radarchart-DnqlfoGr.js +131 -0
- package/dist/client/chunks/chart-radarchart-DnqlfoGr.js.map +1 -0
- package/dist/client/chunks/{chart-radarchart-config-CU_MwXOg.js → chart-radarchart-config-BAV8D5PR.js} +13 -5
- package/dist/client/chunks/{chart-radarchart-config-CU_MwXOg.js.map → chart-radarchart-config-BAV8D5PR.js.map} +1 -1
- package/dist/client/chunks/chart-radialbarchart-BFxxiqLw.js +120 -0
- package/dist/client/chunks/chart-radialbarchart-BFxxiqLw.js.map +1 -0
- package/dist/client/chunks/{chart-radialbarchart-config-D0eEa2hb.js → chart-radialbarchart-config-CKozBBEC.js} +11 -3
- package/dist/client/chunks/{chart-radialbarchart-config-D0eEa2hb.js.map → chart-radialbarchart-config-CKozBBEC.js.map} +1 -1
- package/dist/client/chunks/{chart-scatterchart-C83KgqYY.js → chart-scatterchart-MN4SM-w7.js} +86 -84
- package/dist/client/chunks/chart-scatterchart-MN4SM-w7.js.map +1 -0
- package/dist/client/chunks/{chart-scatterchart-config-Bh0qBq9F.js → chart-scatterchart-config-UdHmbZ3s.js} +19 -5
- package/dist/client/chunks/{chart-scatterchart-config-Bh0qBq9F.js.map → chart-scatterchart-config-UdHmbZ3s.js.map} +1 -1
- package/dist/client/chunks/chart-treemapchart-Nozh2m26.js +265 -0
- package/dist/client/chunks/chart-treemapchart-Nozh2m26.js.map +1 -0
- package/dist/client/chunks/{chart-treemapchart-config-Bl0wYGhB.js → chart-treemapchart-config-D17VOwTM.js} +13 -5
- package/dist/client/chunks/{chart-treemapchart-config-Bl0wYGhB.js.map → chart-treemapchart-config-D17VOwTM.js.map} +1 -1
- package/dist/client/chunks/{charts-BUq4jszb.js → charts-BSDHSv4l.js} +42 -42
- package/dist/client/chunks/charts-BSDHSv4l.js.map +1 -0
- package/dist/client/chunks/components-CbDovlG-.js +13923 -0
- package/dist/client/chunks/components-CbDovlG-.js.map +1 -0
- package/dist/client/chunks/{index-CSeLP8gq.js → index-th92_8oL.js} +2 -2
- package/dist/client/chunks/{index-CSeLP8gq.js.map → index-th92_8oL.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +3 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +2 -5
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +9 -0
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/types.d.ts +49 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +25 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +35 -0
- package/dist/client/components.js +3 -3
- package/dist/client/hooks.js +10 -10
- package/dist/client/icons.js +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +51 -3466
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +13 -0
- package/dist/client/utils/chartUtils.d.ts +20 -0
- package/dist/client/utils/pivotUtils.d.ts +11 -1
- package/dist/client-bundle-stats.html +1 -1
- package/package.json +2 -1
- package/dist/client/chunks/chart-activitygridchart-Cz4bEf3V.js.map +0 -1
- package/dist/client/chunks/chart-areachart-DLdolSnU.js +0 -204
- package/dist/client/chunks/chart-areachart-DLdolSnU.js.map +0 -1
- package/dist/client/chunks/chart-areachart-config-C2iwLEgm.js.map +0 -1
- package/dist/client/chunks/chart-barchart-Bdjz8DJp.js +0 -171
- package/dist/client/chunks/chart-barchart-Bdjz8DJp.js.map +0 -1
- package/dist/client/chunks/chart-barchart-config-CAsUZfHw.js.map +0 -1
- package/dist/client/chunks/chart-bubblechart-BlQkmqkI.js +0 -210
- package/dist/client/chunks/chart-bubblechart-BlQkmqkI.js.map +0 -1
- package/dist/client/chunks/chart-datatable-zyVFtRJ_.js +0 -249
- package/dist/client/chunks/chart-datatable-zyVFtRJ_.js.map +0 -1
- package/dist/client/chunks/chart-linechart-BfnU6L-D.js +0 -155
- package/dist/client/chunks/chart-linechart-BfnU6L-D.js.map +0 -1
- package/dist/client/chunks/chart-linechart-config-CVbDAvCB.js.map +0 -1
- package/dist/client/chunks/chart-piechart-CZRDQxeB.js.map +0 -1
- package/dist/client/chunks/chart-radarchart-D5yRnY9j.js +0 -124
- package/dist/client/chunks/chart-radarchart-D5yRnY9j.js.map +0 -1
- package/dist/client/chunks/chart-radialbarchart-Djtcn7aH.js +0 -109
- package/dist/client/chunks/chart-radialbarchart-Djtcn7aH.js.map +0 -1
- package/dist/client/chunks/chart-scatterchart-C83KgqYY.js.map +0 -1
- package/dist/client/chunks/chart-treemapchart-BDKnKGTz.js +0 -253
- package/dist/client/chunks/chart-treemapchart-BDKnKGTz.js.map +0 -1
- package/dist/client/chunks/charts-BUq4jszb.js.map +0 -1
- package/dist/client/chunks/components-DnhfrXo3.js +0 -9846
- package/dist/client/chunks/components-DnhfrXo3.js.map +0 -1
package/dist/client/chunks/{chart-linechart-config-CVbDAvCB.js → chart-linechart-config-DLVS2Zxc.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as e } from "./chart-activitygridchart-config-
|
|
2
|
-
const
|
|
1
|
+
import { g as e } from "./chart-activitygridchart-config-AVBoHdRn.js";
|
|
2
|
+
const s = {
|
|
3
3
|
icon: e("line"),
|
|
4
4
|
description: "Show trends and changes over time",
|
|
5
5
|
useCase: "Best for continuous data, trends, time series, and showing relationships between multiple series",
|
|
@@ -18,7 +18,8 @@ const i = {
|
|
|
18
18
|
description: "Measures for line values",
|
|
19
19
|
mandatory: !0,
|
|
20
20
|
acceptTypes: ["measure"],
|
|
21
|
-
emptyText: "Drop measures here"
|
|
21
|
+
emptyText: "Drop measures here",
|
|
22
|
+
enableDualAxis: !0
|
|
22
23
|
},
|
|
23
24
|
{
|
|
24
25
|
key: "series",
|
|
@@ -44,10 +45,22 @@ const i = {
|
|
|
44
45
|
type: "string",
|
|
45
46
|
placeholder: "e.g., 100 or 50,75 for spread",
|
|
46
47
|
description: "Single value or comma-separated values to spread across X-axis"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "leftYAxisFormat",
|
|
51
|
+
label: "Left Y-Axis Format",
|
|
52
|
+
type: "axisFormat",
|
|
53
|
+
description: "Number formatting for left Y-axis"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
key: "rightYAxisFormat",
|
|
57
|
+
label: "Right Y-Axis Format",
|
|
58
|
+
type: "axisFormat",
|
|
59
|
+
description: "Number formatting for right Y-axis"
|
|
47
60
|
}
|
|
48
61
|
]
|
|
49
62
|
};
|
|
50
63
|
export {
|
|
51
|
-
|
|
64
|
+
s as lineChartConfig
|
|
52
65
|
};
|
|
53
|
-
//# sourceMappingURL=chart-linechart-config-
|
|
66
|
+
//# sourceMappingURL=chart-linechart-config-DLVS2Zxc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-linechart-config-DLVS2Zxc.js","sources":["../../../src/client/components/charts/LineChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the line chart type\n */\nexport const lineChartConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('line'),\n description: 'Show trends and changes over time',\n useCase: 'Best for continuous data, trends, time series, and showing relationships between multiple series',\n dropZones: [\n {\n key: 'xAxis',\n label: 'X-Axis (Time/Categories)',\n description: 'Time dimensions or dimensions for X-axis',\n mandatory: true,\n acceptTypes: ['dimension', 'timeDimension'],\n emptyText: 'Drop time dimensions or dimensions here'\n },\n {\n key: 'yAxis',\n label: 'Y-Axis (Values)',\n description: 'Measures for line values',\n mandatory: true,\n acceptTypes: ['measure'],\n emptyText: 'Drop measures here',\n enableDualAxis: true\n },\n {\n key: 'series',\n label: 'Series (Multiple Lines)',\n description: 'Dimensions to create separate lines',\n mandatory: false,\n acceptTypes: ['dimension'],\n emptyText: 'Drop dimensions here for multiple lines'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'connectNulls',\n label: 'Connect Nulls',\n type: 'boolean',\n defaultValue: false,\n description: 'Draw continuous line through missing data points'\n },\n {\n key: 'target',\n label: 'Target Values',\n type: 'string',\n placeholder: 'e.g., 100 or 50,75 for spread',\n description: 'Single value or comma-separated values to spread across X-axis'\n },\n {\n key: 'leftYAxisFormat',\n label: 'Left Y-Axis Format',\n type: 'axisFormat',\n description: 'Number formatting for left Y-axis'\n },\n {\n key: 'rightYAxisFormat',\n label: 'Right Y-Axis Format',\n type: 'axisFormat',\n description: 'Number formatting for right Y-axis'\n }\n ]\n}"],"names":["lineChartConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAmC;AAAA,EAC9C,MAAMC,EAAiB,MAAM;AAAA,EAC7B,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,aAAa,eAAe;AAAA,MAC1C,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,MACX,gBAAgB;AAAA,IAAA;AAAA,IAElB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,YAAY,eAAe,YAAY;AAAA,EACtE,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as e } from "./chart-activitygridchart-config-
|
|
1
|
+
import { g as e } from "./chart-activitygridchart-config-AVBoHdRn.js";
|
|
2
2
|
const l = {
|
|
3
3
|
icon: e("markdown"),
|
|
4
4
|
description: "Display custom markdown content with formatting",
|
|
@@ -58,4 +58,4 @@ Add your **markdown** content here:
|
|
|
58
58
|
export {
|
|
59
59
|
l as markdownConfig
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chart-markdownchart-config-
|
|
61
|
+
//# sourceMappingURL=chart-markdownchart-config-CgOA3YSw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-markdownchart-config-
|
|
1
|
+
{"version":3,"file":"chart-markdownchart-config-CgOA3YSw.js","sources":["../../../src/client/components/charts/MarkdownChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the Markdown chart type\n */\nexport const markdownConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('markdown'),\n description: 'Display custom markdown content with formatting',\n useCase: 'Perfect for adding documentation, notes, instructions, or formatted text to dashboards',\n skipQuery: true, // This chart doesn't require a valid query\n dropZones: [], // No drop zones needed for markdown content\n displayOptionsConfig: [\n {\n key: 'content',\n label: 'Markdown Content',\n type: 'string',\n placeholder: '# Welcome\\n\\nAdd your **markdown** content here:\\n\\n- Lists with bullets\\n- [Links](https://example.com)\\n- *Italic* and **bold** text',\n description: 'Enter markdown text. Supports headers (#), bold (**text**), italic (*text*), links ([text](url)), and lists (- item).'\n },\n {\n key: 'accentColorIndex',\n label: 'Accent Color',\n type: 'paletteColor',\n defaultValue: 0,\n description: 'Color from the dashboard palette for headers, bullets, and links'\n },\n {\n key: 'fontSize',\n label: 'Font Size',\n type: 'select',\n defaultValue: 'medium',\n options: [\n { value: 'small', label: 'Small' },\n { value: 'medium', label: 'Medium' },\n { value: 'large', label: 'Large' }\n ],\n description: 'Overall text size for the markdown content'\n },\n {\n key: 'alignment',\n label: 'Text Alignment',\n type: 'select',\n defaultValue: 'left',\n options: [\n { value: 'left', label: 'Left' },\n { value: 'center', label: 'Center' },\n { value: 'right', label: 'Right' }\n ],\n description: 'Horizontal alignment of the markdown content'\n }\n ],\n displayOptions: ['hideHeader']\n}"],"names":["markdownConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAkC;AAAA,EAC7C,MAAMC,EAAiB,UAAU;AAAA,EACjC,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA;AAAA,EACX,WAAW,CAAA;AAAA;AAAA,EACX,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA,QACP,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,QACzB,EAAE,OAAO,UAAU,OAAO,SAAA;AAAA,QAC1B,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,MAAQ;AAAA,MAEnC,aAAa;AAAA,IAAA;AAAA,IAEf;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS;AAAA,QACP,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,QACxB,EAAE,OAAO,UAAU,OAAO,SAAA;AAAA,QAC1B,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,MAAQ;AAAA,MAEnC,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,gBAAgB,CAAC,YAAY;AAC/B;"}
|
|
@@ -1,78 +1,79 @@
|
|
|
1
1
|
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
2
2
|
import { useState as b } from "react";
|
|
3
|
-
import { PieChart as w, Pie as g, Cell as
|
|
4
|
-
import { C as
|
|
5
|
-
import { C as
|
|
6
|
-
import { u as
|
|
3
|
+
import { PieChart as w, Pie as g, Cell as F, Legend as L } from "recharts";
|
|
4
|
+
import { C as S } from "./chart-chartcontainer-CdwzIKP1.js";
|
|
5
|
+
import { C as T } from "./chart-charttooltip-BVEdz4Q-.js";
|
|
6
|
+
import { u as j, t as E, b as C, c as Y, a as A, f as $ } from "./chart-activitygridchart-D17Fxiuf.js";
|
|
7
7
|
function H({
|
|
8
8
|
data: x,
|
|
9
|
-
chartConfig:
|
|
10
|
-
displayConfig:
|
|
11
|
-
queryObject:
|
|
12
|
-
height:
|
|
13
|
-
colorPalette:
|
|
9
|
+
chartConfig: r,
|
|
10
|
+
displayConfig: m = {},
|
|
11
|
+
queryObject: v,
|
|
12
|
+
height: d = "100%",
|
|
13
|
+
colorPalette: u
|
|
14
14
|
}) {
|
|
15
|
-
const [
|
|
15
|
+
const [y, h] = b(null), { labelMap: N } = j();
|
|
16
16
|
try {
|
|
17
|
-
const
|
|
18
|
-
showLegend:
|
|
19
|
-
showTooltip:
|
|
17
|
+
const n = {
|
|
18
|
+
showLegend: m?.showLegend ?? !0,
|
|
19
|
+
showTooltip: m?.showTooltip ?? !0,
|
|
20
|
+
leftYAxisFormat: m?.leftYAxisFormat
|
|
20
21
|
};
|
|
21
22
|
if (!x || x.length === 0)
|
|
22
|
-
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height:
|
|
23
|
+
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: d }, children: /* @__PURE__ */ c("div", { className: "text-center", children: [
|
|
23
24
|
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No data available" }),
|
|
24
25
|
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: "No data points to display in pie chart" })
|
|
25
26
|
] }) });
|
|
26
|
-
let i, a,
|
|
27
|
-
if (
|
|
28
|
-
a = Array.isArray(
|
|
29
|
-
else if (
|
|
30
|
-
a =
|
|
27
|
+
let i, a, o, f = [];
|
|
28
|
+
if (r?.xAxis && r?.yAxis)
|
|
29
|
+
a = Array.isArray(r.xAxis) ? r.xAxis[0] : r.xAxis, o = Array.isArray(r.yAxis) ? r.yAxis : [r.yAxis], f = r.series || [];
|
|
30
|
+
else if (r?.x && r?.y)
|
|
31
|
+
a = r.x, o = Array.isArray(r.y) ? r.y : [r.y];
|
|
31
32
|
else
|
|
32
|
-
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height:
|
|
33
|
+
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: d }, children: /* @__PURE__ */ c("div", { className: "text-center", children: [
|
|
33
34
|
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
|
|
34
35
|
/* @__PURE__ */ e("div", { className: "text-xs", children: "chartConfig.x/y or chartConfig.xAxis/yAxis required for pie chart" })
|
|
35
36
|
] }) });
|
|
36
|
-
if (!a || !
|
|
37
|
-
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height:
|
|
37
|
+
if (!a || !o || o.length === 0)
|
|
38
|
+
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: d }, children: /* @__PURE__ */ c("div", { className: "text-center", children: [
|
|
38
39
|
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
|
|
39
40
|
/* @__PURE__ */ e("div", { className: "text-xs", children: "Missing required X-axis or Y-axis fields" })
|
|
40
41
|
] }) });
|
|
41
|
-
if (
|
|
42
|
-
const { data:
|
|
42
|
+
if (f.length > 0) {
|
|
43
|
+
const { data: s } = E(
|
|
43
44
|
x,
|
|
44
45
|
a,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
o,
|
|
47
|
+
v,
|
|
48
|
+
f,
|
|
49
|
+
N
|
|
49
50
|
);
|
|
50
|
-
if (i = [],
|
|
51
|
-
const t =
|
|
52
|
-
Object.keys(t).forEach((
|
|
53
|
-
|
|
54
|
-
name: String(
|
|
55
|
-
value: t[
|
|
51
|
+
if (i = [], s.length > 0) {
|
|
52
|
+
const t = s[0];
|
|
53
|
+
Object.keys(t).forEach((l) => {
|
|
54
|
+
l !== "name" && typeof t[l] == "number" && i.push({
|
|
55
|
+
name: String(l),
|
|
56
|
+
value: t[l]
|
|
56
57
|
});
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
} else {
|
|
60
|
-
const
|
|
61
|
+
const s = C(v, a);
|
|
61
62
|
i = x.map((t) => {
|
|
62
|
-
let
|
|
63
|
-
return typeof t[a] == "boolean" ?
|
|
64
|
-
name:
|
|
65
|
-
value: typeof t[
|
|
63
|
+
let l = Y(t[a], s) || String(t[a]) || "Unknown";
|
|
64
|
+
return typeof t[a] == "boolean" ? l = t[a] ? "Active" : "Inactive" : (l === "true" || l === "false") && (l = l === "true" ? "Active" : "Inactive"), {
|
|
65
|
+
name: l,
|
|
66
|
+
value: typeof t[o[0]] == "string" ? parseFloat(t[o[0]]) : t[o[0]] || 0
|
|
66
67
|
};
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
const p = i.length;
|
|
70
71
|
return i = i.filter(
|
|
71
|
-
(
|
|
72
|
-
), i.length === 0 ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height:
|
|
72
|
+
(s) => s.value != null && !isNaN(s.value) && s.value !== 0 && s.value > 0
|
|
73
|
+
), i.length === 0 ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: d }, children: /* @__PURE__ */ c("div", { className: "text-center", children: [
|
|
73
74
|
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No valid data" }),
|
|
74
75
|
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: p > 0 ? `Filtered out ${p} data points (zero or invalid values)` : "No data points to display in pie chart" })
|
|
75
|
-
] }) }) : /* @__PURE__ */ e(
|
|
76
|
+
] }) }) : /* @__PURE__ */ e(S, { height: d, children: /* @__PURE__ */ c(w, { children: [
|
|
76
77
|
/* @__PURE__ */ e(
|
|
77
78
|
g,
|
|
78
79
|
{
|
|
@@ -81,20 +82,25 @@ function H({
|
|
|
81
82
|
cy: "50%",
|
|
82
83
|
outerRadius: "70%",
|
|
83
84
|
dataKey: "value",
|
|
84
|
-
label:
|
|
85
|
-
children: i.map((
|
|
86
|
-
|
|
85
|
+
label: n.showLegend ? void 0 : ({ name: s, percent: t }) => `${s} ${((t || 0) * 100).toFixed(0)}%`,
|
|
86
|
+
children: i.map((s, t) => /* @__PURE__ */ e(
|
|
87
|
+
F,
|
|
87
88
|
{
|
|
88
|
-
fill:
|
|
89
|
-
fillOpacity:
|
|
89
|
+
fill: u?.colors && u.colors[t % u.colors.length] || A[t % A.length],
|
|
90
|
+
fillOpacity: y ? y === i[t].name ? 1 : 0.3 : 1
|
|
90
91
|
},
|
|
91
92
|
`cell-${t}`
|
|
92
93
|
))
|
|
93
94
|
}
|
|
94
95
|
),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
n.showTooltip && /* @__PURE__ */ e(
|
|
97
|
+
T,
|
|
98
|
+
{
|
|
99
|
+
formatter: n.leftYAxisFormat ? (s, t) => [$(s, n.leftYAxisFormat), t] : void 0
|
|
100
|
+
}
|
|
101
|
+
),
|
|
102
|
+
n.showLegend && /* @__PURE__ */ e(
|
|
103
|
+
L,
|
|
98
104
|
{
|
|
99
105
|
wrapperStyle: { fontSize: "12px", paddingTop: "10px" },
|
|
100
106
|
iconType: "circle",
|
|
@@ -102,15 +108,15 @@ function H({
|
|
|
102
108
|
layout: "horizontal",
|
|
103
109
|
align: "center",
|
|
104
110
|
verticalAlign: "bottom",
|
|
105
|
-
onMouseEnter: (
|
|
111
|
+
onMouseEnter: (s) => h(String(s.value || "")),
|
|
106
112
|
onMouseLeave: () => h(null)
|
|
107
113
|
}
|
|
108
114
|
)
|
|
109
115
|
] }) });
|
|
110
|
-
} catch (
|
|
111
|
-
return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center w-full text-red-500 p-4", style: { height:
|
|
116
|
+
} catch (n) {
|
|
117
|
+
return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center w-full text-red-500 p-4", style: { height: d }, children: /* @__PURE__ */ c("div", { className: "text-center", children: [
|
|
112
118
|
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Pie Chart Error" }),
|
|
113
|
-
/* @__PURE__ */ e("div", { className: "text-xs mb-2", children:
|
|
119
|
+
/* @__PURE__ */ e("div", { className: "text-xs mb-2", children: n instanceof Error ? n.message : "Unknown rendering error" }),
|
|
114
120
|
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-muted", children: "Check the data and configuration" })
|
|
115
121
|
] }) });
|
|
116
122
|
}
|
|
@@ -118,4 +124,4 @@ function H({
|
|
|
118
124
|
export {
|
|
119
125
|
H as default
|
|
120
126
|
};
|
|
121
|
-
//# sourceMappingURL=chart-piechart-
|
|
127
|
+
//# sourceMappingURL=chart-piechart-BhttUWuH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-piechart-BhttUWuH.js","sources":["../../../src/client/components/charts/PieChart.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { PieChart as RechartsPieChart, Pie, Cell, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries, formatTimeValue, getFieldGranularity, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function PieChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { labelMap } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n leftYAxisFormat: displayConfig?.leftYAxisFormat\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">No data points to display in pie chart</div>\n </div>\n </div>\n )\n }\n\n let pieData: Array<{name: string, value: number}>\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisFields: string[]\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis\n yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis]\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format\n xAxisField = chartConfig.x\n yAxisFields = Array.isArray(chartConfig.y) ? chartConfig.y : [chartConfig.y]\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">chartConfig.x/y or chartConfig.xAxis/yAxis required for pie chart</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n if (seriesFields.length > 0) {\n // Use series-based transformation for dimension-based pie slices\n const { data: chartData } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields,\n labelMap\n )\n \n // Convert series data to pie format\n pieData = []\n if (chartData.length > 0) {\n const firstRow = chartData[0]\n Object.keys(firstRow).forEach(key => {\n if (key !== 'name' && typeof firstRow[key] === 'number') {\n pieData.push({\n name: String(key),\n value: firstRow[key]\n })\n }\n })\n }\n } else {\n // Standard measure-based pie chart\n const granularity = getFieldGranularity(queryObject, xAxisField)\n pieData = data.map(item => {\n let name = formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown'\n // Handle boolean values with better labels\n if (typeof item[xAxisField] === 'boolean') {\n name = item[xAxisField] ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n }\n return {\n name,\n value: typeof item[yAxisFields[0]] === 'string' \n ? parseFloat(item[yAxisFields[0]]) \n : (item[yAxisFields[0]] || 0)\n }\n })\n }\n\n // Filter out invalid values (null, undefined, NaN, or zero)\n const originalLength = pieData.length\n pieData = pieData.filter(item => \n item.value != null && \n !isNaN(item.value) && \n item.value !== 0 && \n item.value > 0\n )\n \n if (pieData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs text-dc-text-secondary\">\n {originalLength > 0\n ? `Filtered out ${originalLength} data points (zero or invalid values)`\n : 'No data points to display in pie chart'\n }\n </div>\n </div>\n </div>\n )\n }\n \n return (\n <ChartContainer height={height}>\n <RechartsPieChart>\n <Pie\n data={pieData}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"70%\"\n dataKey=\"value\"\n label={!safeDisplayConfig.showLegend ? ({ name, percent }) => \n `${name} ${((percent || 0) * 100).toFixed(0)}%`\n : undefined}\n >\n {pieData.map((_entry, index) => (\n <Cell \n key={`cell-${index}`} \n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === pieData[index].name ? 1 : 0.3) : 1}\n />\n ))}\n </Pie>\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip\n formatter={safeDisplayConfig.leftYAxisFormat\n ? (value: any, name: string) => [formatAxisValue(value, safeDisplayConfig.leftYAxisFormat), name]\n : undefined\n }\n />\n )}\n {safeDisplayConfig.showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.value || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'PieChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Pie Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}"],"names":["PieChart","data","chartConfig","displayConfig","queryObject","height","colorPalette","hoveredLegend","setHoveredLegend","useState","labelMap","useCubeContext","safeDisplayConfig","jsx","jsxs","pieData","xAxisField","yAxisFields","seriesFields","chartData","transformChartDataWithSeries","firstRow","key","granularity","getFieldGranularity","item","name","formatTimeValue","originalLength","ChartContainer","RechartsPieChart","Pie","percent","_entry","index","Cell","CHART_COLORS","ChartTooltip","value","formatAxisValue","Legend","o","error"],"mappings":"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"}
|
package/dist/client/chunks/{chart-piechart-config-J748ISAR.js → chart-piechart-config-DgwOeKHr.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as e } from "./chart-activitygridchart-config-
|
|
2
|
-
const
|
|
1
|
+
import { g as e } from "./chart-activitygridchart-config-AVBoHdRn.js";
|
|
2
|
+
const i = {
|
|
3
3
|
icon: e("pie"),
|
|
4
4
|
description: "Show proportions of a whole",
|
|
5
5
|
useCase: "Best for showing percentage distribution or composition of a total (limit to 5-7 slices)",
|
|
@@ -23,9 +23,17 @@ const s = {
|
|
|
23
23
|
emptyText: "Drop a measure for values"
|
|
24
24
|
}
|
|
25
25
|
],
|
|
26
|
-
displayOptions: ["showLegend", "showTooltip", "hideHeader"]
|
|
26
|
+
displayOptions: ["showLegend", "showTooltip", "hideHeader"],
|
|
27
|
+
displayOptionsConfig: [
|
|
28
|
+
{
|
|
29
|
+
key: "leftYAxisFormat",
|
|
30
|
+
label: "Value Format",
|
|
31
|
+
type: "axisFormat",
|
|
32
|
+
description: "Number formatting for values"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
27
35
|
};
|
|
28
36
|
export {
|
|
29
|
-
|
|
37
|
+
i as pieChartConfig
|
|
30
38
|
};
|
|
31
|
-
//# sourceMappingURL=chart-piechart-config-
|
|
39
|
+
//# sourceMappingURL=chart-piechart-config-DgwOeKHr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-piechart-config-
|
|
1
|
+
{"version":3,"file":"chart-piechart-config-DgwOeKHr.js","sources":["../../../src/client/components/charts/PieChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the pie chart type\n */\nexport const pieChartConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('pie'),\n description: 'Show proportions of a whole',\n useCase: 'Best for showing percentage distribution or composition of a total (limit to 5-7 slices)',\n dropZones: [\n {\n key: 'xAxis',\n label: 'Categories',\n description: 'Dimension for pie slices',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['dimension'],\n emptyText: 'Drop a dimension for categories'\n },\n {\n key: 'yAxis',\n label: 'Values',\n description: 'Measure for slice sizes',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'Drop a measure for values'\n }\n ],\n displayOptions: ['showLegend', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'leftYAxisFormat',\n label: 'Value Format',\n type: 'axisFormat',\n description: 'Number formatting for values'\n }\n ]\n}"],"names":["pieChartConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAkC;AAAA,EAC7C,MAAMC,EAAiB,KAAK;AAAA,EAC5B,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,eAAe,YAAY;AAAA,EAC1D,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { jsx as e, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { useState as F } from "react";
|
|
3
|
+
import { RadarChart as S, PolarGrid as L, PolarAngleAxis as R, PolarRadiusAxis as j, Legend as k, Radar as T } from "recharts";
|
|
4
|
+
import { C } from "./chart-chartcontainer-CdwzIKP1.js";
|
|
5
|
+
import { C as Y } from "./chart-charttooltip-BVEdz4Q-.js";
|
|
6
|
+
import { t as z, b as E, c as G, f as g, a as v } from "./chart-activitygridchart-D17Fxiuf.js";
|
|
7
|
+
function V({
|
|
8
|
+
data: d,
|
|
9
|
+
chartConfig: o,
|
|
10
|
+
displayConfig: p = {},
|
|
11
|
+
queryObject: A,
|
|
12
|
+
height: x = "100%",
|
|
13
|
+
colorPalette: c
|
|
14
|
+
}) {
|
|
15
|
+
const [y, N] = F(null);
|
|
16
|
+
try {
|
|
17
|
+
const a = {
|
|
18
|
+
showLegend: p?.showLegend ?? !0,
|
|
19
|
+
showTooltip: p?.showTooltip ?? !0,
|
|
20
|
+
showGrid: p?.showGrid ?? !0,
|
|
21
|
+
leftYAxisFormat: p?.leftYAxisFormat
|
|
22
|
+
};
|
|
23
|
+
if (!d || d.length === 0)
|
|
24
|
+
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: x }, children: /* @__PURE__ */ h("div", { className: "text-center", children: [
|
|
25
|
+
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No data available" }),
|
|
26
|
+
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: "No data points to display in radar chart" })
|
|
27
|
+
] }) });
|
|
28
|
+
let m, f = [];
|
|
29
|
+
if (o?.xAxis && o?.yAxis) {
|
|
30
|
+
const t = Array.isArray(o.xAxis) ? o.xAxis[0] : o.xAxis, s = Array.isArray(o.yAxis) ? o.yAxis : [o.yAxis], l = o.series || [], { data: i, seriesKeys: r } = z(
|
|
31
|
+
d,
|
|
32
|
+
t,
|
|
33
|
+
s,
|
|
34
|
+
A,
|
|
35
|
+
l
|
|
36
|
+
);
|
|
37
|
+
m = i, f = r;
|
|
38
|
+
} else {
|
|
39
|
+
const t = d[0], s = Object.keys(t), l = s.find(
|
|
40
|
+
(r) => typeof t[r] == "string" || r.toLowerCase().includes("subject") || r.toLowerCase().includes("name") || r.toLowerCase().includes("category")
|
|
41
|
+
) || s[0], i = s.filter(
|
|
42
|
+
(r) => typeof t[r] == "number" && r !== l
|
|
43
|
+
);
|
|
44
|
+
if (i.length === 0)
|
|
45
|
+
return /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: x }, children: /* @__PURE__ */ h("div", { className: "text-center", children: [
|
|
46
|
+
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
|
|
47
|
+
/* @__PURE__ */ e("div", { className: "text-xs", children: "No numeric fields found for radar chart values" })
|
|
48
|
+
] }) });
|
|
49
|
+
if (l) {
|
|
50
|
+
const r = E(A, l);
|
|
51
|
+
m = d.map((n) => {
|
|
52
|
+
const w = {
|
|
53
|
+
name: G(n[l], r) || String(n[l]) || "Unknown"
|
|
54
|
+
};
|
|
55
|
+
return i.forEach((u) => {
|
|
56
|
+
const b = u.split(".").pop() || u;
|
|
57
|
+
w[b] = typeof n[u] == "string" ? parseFloat(n[u]) : n[u] || 0;
|
|
58
|
+
}), w;
|
|
59
|
+
}), f = i.map((n) => n.split(".").pop() || n);
|
|
60
|
+
} else
|
|
61
|
+
m = d.map((r) => ({
|
|
62
|
+
name: String(r[s[0]] || "Unknown"),
|
|
63
|
+
value: typeof r[i[0]] == "string" ? parseFloat(r[i[0]]) : r[i[0]] || 0
|
|
64
|
+
})), f = ["value"];
|
|
65
|
+
}
|
|
66
|
+
return !m || m.length === 0 ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: x }, children: /* @__PURE__ */ h("div", { className: "text-center", children: [
|
|
67
|
+
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "No valid data" }),
|
|
68
|
+
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-secondary", children: "No valid data points for radar chart after transformation" })
|
|
69
|
+
] }) }) : /* @__PURE__ */ e(C, { height: x, children: /* @__PURE__ */ h(S, { data: m, margin: { top: 20, right: 80, bottom: 20, left: 80 }, children: [
|
|
70
|
+
a.showGrid && /* @__PURE__ */ e(L, {}),
|
|
71
|
+
/* @__PURE__ */ e(
|
|
72
|
+
R,
|
|
73
|
+
{
|
|
74
|
+
dataKey: "name",
|
|
75
|
+
tick: { fontSize: 12 },
|
|
76
|
+
className: "text-dc-text-muted"
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ e(
|
|
80
|
+
j,
|
|
81
|
+
{
|
|
82
|
+
tick: { fontSize: 10 },
|
|
83
|
+
className: "text-dc-text-muted",
|
|
84
|
+
tickFormatter: a.leftYAxisFormat ? (t) => g(t, a.leftYAxisFormat) : void 0
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
a.showTooltip && /* @__PURE__ */ e(
|
|
88
|
+
Y,
|
|
89
|
+
{
|
|
90
|
+
formatter: a.leftYAxisFormat ? (t, s) => [g(t, a.leftYAxisFormat), s] : void 0
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
a.showLegend && f.length > 1 && /* @__PURE__ */ e(
|
|
94
|
+
k,
|
|
95
|
+
{
|
|
96
|
+
wrapperStyle: { fontSize: "12px", paddingTop: "10px" },
|
|
97
|
+
iconType: "rect",
|
|
98
|
+
iconSize: 8,
|
|
99
|
+
layout: "horizontal",
|
|
100
|
+
align: "center",
|
|
101
|
+
verticalAlign: "bottom",
|
|
102
|
+
onMouseEnter: (t) => N(String(t.dataKey || "")),
|
|
103
|
+
onMouseLeave: () => N(null)
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
f.map((t, s) => /* @__PURE__ */ e(
|
|
107
|
+
T,
|
|
108
|
+
{
|
|
109
|
+
name: t,
|
|
110
|
+
dataKey: t,
|
|
111
|
+
stroke: c?.colors && c.colors[s % c.colors.length] || v[s % v.length],
|
|
112
|
+
fill: c?.colors && c.colors[s % c.colors.length] || v[s % v.length],
|
|
113
|
+
fillOpacity: y ? y === t ? 0.6 : 0.1 : 0.3,
|
|
114
|
+
strokeOpacity: y ? y === t ? 1 : 0.3 : 1,
|
|
115
|
+
strokeWidth: 2
|
|
116
|
+
},
|
|
117
|
+
t
|
|
118
|
+
))
|
|
119
|
+
] }) });
|
|
120
|
+
} catch (a) {
|
|
121
|
+
return /* @__PURE__ */ e("div", { className: "flex flex-col items-center justify-center w-full text-red-500 p-4", style: { height: x }, children: /* @__PURE__ */ h("div", { className: "text-center", children: [
|
|
122
|
+
/* @__PURE__ */ e("div", { className: "text-sm font-semibold mb-1", children: "Radar Chart Error" }),
|
|
123
|
+
/* @__PURE__ */ e("div", { className: "text-xs mb-2", children: a instanceof Error ? a.message : "Unknown rendering error" }),
|
|
124
|
+
/* @__PURE__ */ e("div", { className: "text-xs text-dc-text-muted", children: "Check the data and configuration" })
|
|
125
|
+
] }) });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export {
|
|
129
|
+
V as default
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=chart-radarchart-DnqlfoGr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-radarchart-DnqlfoGr.js","sources":["../../../src/client/components/charts/RadarChart.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { RadarChart as RechartsRadarChart, PolarGrid, PolarAngleAxis, PolarRadiusAxis, Radar, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries, formatTimeValue, getFieldGranularity, formatAxisValue } from '../../utils/chartUtils'\nimport type { ChartProps } from '../../types'\n\nexport default function RadarChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n leftYAxisFormat: displayConfig?.leftYAxisFormat\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">No data points to display in radar chart</div>\n </div>\n </div>\n )\n }\n\n let radarData: any[]\n let seriesKeys: string[] = []\n\n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - use chart config\n const xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis // Subject/category field\n const yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis] // Value fields\n const seriesFields = chartConfig.series || []\n\n // Use shared function to transform data and handle series\n const { data: chartData, seriesKeys: transformedSeriesKeys } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields\n )\n \n radarData = chartData\n seriesKeys = transformedSeriesKeys\n } else {\n // Legacy format or auto-detection - try to find suitable fields\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find subject/category field\n const subjectField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('subject') ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find numeric fields for values\n const valueFields = keys.filter(key => \n typeof firstRow[key] === 'number' && key !== subjectField\n )\n\n if (valueFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">No numeric fields found for radar chart values</div>\n </div>\n </div>\n )\n }\n\n // Transform data for radar chart\n if (subjectField) {\n // Use subject field for radar categories\n const granularity = getFieldGranularity(queryObject, subjectField)\n radarData = data.map(item => {\n const transformedItem: any = {\n name: formatTimeValue(item[subjectField], granularity) || String(item[subjectField]) || 'Unknown'\n }\n \n valueFields.forEach(field => {\n const displayName = field.split('.').pop() || field\n transformedItem[displayName] = typeof item[field] === 'string' \n ? parseFloat(item[field]) \n : (item[field] || 0)\n })\n \n return transformedItem\n })\n \n seriesKeys = valueFields.map(field => field.split('.').pop() || field)\n } else {\n // Fallback - use first value field only\n radarData = data.map(item => ({\n name: String(item[keys[0]] || 'Unknown'),\n value: typeof item[valueFields[0]] === 'string' \n ? parseFloat(item[valueFields[0]]) \n : (item[valueFields[0]] || 0)\n }))\n seriesKeys = ['value']\n }\n }\n \n // Validate transformed data\n if (!radarData || radarData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs text-dc-text-secondary\">No valid data points for radar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsRadarChart data={radarData} margin={{ top: 20, right: 80, bottom: 20, left: 80 }}>\n {safeDisplayConfig.showGrid && (\n <PolarGrid />\n )}\n <PolarAngleAxis\n dataKey=\"name\"\n tick={{ fontSize: 12 }}\n className=\"text-dc-text-muted\"\n />\n <PolarRadiusAxis\n tick={{ fontSize: 10 }}\n className=\"text-dc-text-muted\"\n tickFormatter={safeDisplayConfig.leftYAxisFormat\n ? (value: any) => formatAxisValue(value, safeDisplayConfig.leftYAxisFormat)\n : undefined\n }\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip\n formatter={safeDisplayConfig.leftYAxisFormat\n ? (value: any, name: string) => [formatAxisValue(value, safeDisplayConfig.leftYAxisFormat), name]\n : undefined\n }\n />\n )}\n {(safeDisplayConfig.showLegend && seriesKeys.length > 1) && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"rect\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {seriesKeys.map((seriesKey, index) => (\n <Radar\n key={seriesKey}\n name={seriesKey}\n dataKey={seriesKey}\n stroke={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 0.6 : 0.1) : 0.3}\n strokeOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n strokeWidth={2}\n />\n ))}\n </RechartsRadarChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'RadarChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Radar Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}"],"names":["RadarChart","data","chartConfig","displayConfig","queryObject","height","colorPalette","hoveredLegend","setHoveredLegend","useState","safeDisplayConfig","jsx","jsxs","radarData","seriesKeys","xAxisField","yAxisFields","seriesFields","chartData","transformedSeriesKeys","transformChartDataWithSeries","firstRow","keys","subjectField","key","valueFields","granularity","getFieldGranularity","item","transformedItem","formatTimeValue","field","displayName","ChartContainer","RechartsRadarChart","PolarGrid","PolarAngleAxis","PolarRadiusAxis","value","formatAxisValue","ChartTooltip","name","Legend","o","seriesKey","index","Radar","CHART_COLORS","error"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as e } from "./chart-activitygridchart-config-
|
|
2
|
-
const
|
|
1
|
+
import { g as e } from "./chart-activitygridchart-config-AVBoHdRn.js";
|
|
2
|
+
const a = {
|
|
3
3
|
icon: e("radar"),
|
|
4
4
|
description: "Compare multiple metrics across categories",
|
|
5
5
|
useCase: "Best for multivariate comparisons, performance metrics, strengths/weaknesses analysis",
|
|
@@ -29,9 +29,17 @@ const r = {
|
|
|
29
29
|
emptyText: "Drop dimensions for multiple shapes"
|
|
30
30
|
}
|
|
31
31
|
],
|
|
32
|
-
displayOptions: ["showLegend", "showGrid", "showTooltip", "hideHeader"]
|
|
32
|
+
displayOptions: ["showLegend", "showGrid", "showTooltip", "hideHeader"],
|
|
33
|
+
displayOptionsConfig: [
|
|
34
|
+
{
|
|
35
|
+
key: "leftYAxisFormat",
|
|
36
|
+
label: "Value Format",
|
|
37
|
+
type: "axisFormat",
|
|
38
|
+
description: "Number formatting for values"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
33
41
|
};
|
|
34
42
|
export {
|
|
35
|
-
|
|
43
|
+
a as radarChartConfig
|
|
36
44
|
};
|
|
37
|
-
//# sourceMappingURL=chart-radarchart-config-
|
|
45
|
+
//# sourceMappingURL=chart-radarchart-config-BAV8D5PR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-radarchart-config-
|
|
1
|
+
{"version":3,"file":"chart-radarchart-config-BAV8D5PR.js","sources":["../../../src/client/components/charts/RadarChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { getChartTypeIcon } from '../../icons'\n\n/**\n * Configuration for the radar chart type\n */\nexport const radarChartConfig: ChartTypeConfig = {\n icon: getChartTypeIcon('radar'),\n description: 'Compare multiple metrics across categories',\n useCase: 'Best for multivariate comparisons, performance metrics, strengths/weaknesses analysis',\n dropZones: [\n {\n key: 'xAxis',\n label: 'Axes (Categories)',\n description: 'Dimensions for radar axes',\n mandatory: true,\n acceptTypes: ['dimension'],\n emptyText: 'Drop dimensions for radar axes'\n },\n {\n key: 'yAxis',\n label: 'Values',\n description: 'Measures for radar values',\n mandatory: true,\n acceptTypes: ['measure'],\n emptyText: 'Drop measures for values'\n },\n {\n key: 'series',\n label: 'Series (Multiple Shapes)',\n description: 'Dimensions to create multiple radar shapes',\n mandatory: false,\n acceptTypes: ['dimension'],\n emptyText: 'Drop dimensions for multiple shapes'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'leftYAxisFormat',\n label: 'Value Format',\n type: 'axisFormat',\n description: 'Number formatting for values'\n }\n ]\n}"],"names":["radarChartConfig","getChartTypeIcon"],"mappings":";AAMO,MAAMA,IAAoC;AAAA,EAC/C,MAAMC,EAAiB,OAAO;AAAA,EAC9B,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,YAAY,eAAe,YAAY;AAAA,EACtE,sBAAsB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;"}
|