drizzle-cube 0.5.8 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/adapters/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/adapters/utils.d.ts +6 -81
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/adapters/{google-CFYljAOF.js → google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Cx8QYLk6.js → handler-CfgE0JSL.js} +499 -576
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +205 -175
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
- package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/adapters/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{utils-D9JPLmfl.js → utils-BPWZsX7k.js} +1271 -1218
- package/dist/adapters/utils-_whV4fXL.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +2 -2
- package/dist/client/charts/ChartLoader.d.ts +2 -16
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/client/charts.js +14 -13
- package/dist/client/chunks/{DashboardEditModal-CjCIAT-J.js → DashboardEditModal-okVfH8ZK.js} +5296 -4544
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-BPkfcTa8.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/{RetentionCombinedChart-BPkfcTa8.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
- package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-CYVwSPqt.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-DmruKPab.js → chart-activity-grid-DX0SJbxs.js} +635 -492
- package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
- package/dist/client/chunks/chart-area-of01_62R.js +775 -0
- package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-DYKfyOI8.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-DYKfyOI8.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
- package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
- package/dist/client/chunks/{chart-candlestick-Dwc92Mrj.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dwc92Mrj.js.map → chart-candlestick-DZp19Tzh.js.map} +1 -1
- package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
- package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
- package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
- package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-BO4sXsim.js → chart-data-table-CKauQXme.js} +1046 -1121
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-DnWRsmnS.js → chart-funnel-CToKSBaL.js} +184 -222
- package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-dgUetjyM.js → chart-markdown-CV75S_zL.js} +2 -2
- package/dist/client/chunks/{chart-markdown-dgUetjyM.js.map → chart-markdown-CV75S_zL.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
- package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
- package/dist/client/chunks/{chart-sankey-M3XpO_ah.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/{chart-sankey-M3XpO_ah.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
- package/dist/client/chunks/{chart-sunburst-A_u6lqlS.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-A_u6lqlS.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
- package/dist/client/chunks/{chart-waterfall-BuhMoagf.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/{chart-waterfall-BuhMoagf.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-jRtb0S2M.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-jRtb0S2M.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
- package/dist/client/chunks/{nl-NL-CpVs7ox3.js → nl-NL-2zTAWTej.js} +2 -1
- package/dist/client/chunks/{nl-NL-CpVs7ox3.js.map → nl-NL-2zTAWTej.js.map} +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-DE09kQE3.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/{schema-visualization-DE09kQE3.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-CoeQbprt.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-DlnXWdmz.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/{useExplainAI-DlnXWdmz.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-CTKNaXS8.js → utils-3P6z1vz5.js} +2 -2
- package/dist/client/chunks/{utils-CTKNaXS8.js.map → utils-3P6z1vz5.js.map} +1 -1
- package/dist/client/chunks/{vendor-CPIYyeuD.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-CPIYyeuD.js.map → vendor-DSpR0IW6.js.map} +1 -1
- package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +5 -0
- package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +3 -1
- package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/client/components/shared/utils.d.ts +4 -43
- package/dist/client/components.js +3 -3
- package/dist/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +2 -2
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/utils.d.ts +2 -4
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +55 -55
- package/dist/server/google-BOnRIN1w.cjs +2 -0
- package/dist/server/{google-CFYljAOF.js → google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.js +6330 -6458
- package/dist/server/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +80 -35
- package/dist/server/server/adapters/databend-adapter.d.ts +8 -59
- package/dist/server/server/adapters/duckdb-adapter.d.ts +5 -59
- package/dist/server/server/adapters/mysql-adapter.d.ts +13 -70
- package/dist/server/server/adapters/postgres-adapter.d.ts +1 -65
- package/dist/server/server/adapters/snowflake-adapter.d.ts +5 -68
- package/dist/server/server/adapters/sqlite-adapter.d.ts +12 -32
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +0 -5
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +4 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +0 -3
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +0 -3
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/cte-builder.d.ts +46 -0
- package/dist/server/server/builders/date-time-builder.d.ts +5 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +2 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +46 -19
- package/dist/server/server/builders/funnel-query-builder.d.ts +16 -5
- package/dist/server/server/builders/group-by-builder.d.ts +11 -0
- package/dist/server/server/builders/measure-builder.d.ts +43 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +12 -14
- package/dist/server/server/cache-utils.d.ts +25 -5
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +8 -14
- package/dist/server/server/cube-utils.d.ts +29 -4
- package/dist/server/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/server/execution/mode-router.d.ts +25 -0
- package/dist/server/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/server/executor.d.ts +33 -30
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/filter-cache.d.ts +2 -2
- package/dist/server/server/gap-filler.d.ts +6 -0
- package/dist/server/server/index.d.ts +3 -1
- package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/server/logical-plan/index.d.ts +6 -1
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +7 -200
- package/dist/server/server/logical-plan/optimiser.d.ts +3 -1
- package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/server/logical-plan/types.d.ts +17 -9
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +21 -21
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +11 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +5 -0
- package/dist/server/server/query-handlers.d.ts +79 -0
- package/dist/server/server/query-modes.d.ts +28 -0
- package/dist/server/server/query-validator.d.ts +9 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +5 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +6 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/types/cube.d.ts +18 -4
- package/dist/server/server/types/flow.d.ts +6 -5
- package/dist/server/server/types/index.d.ts +1 -1
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +11 -4
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-CzbCuS6_.cjs +0 -25
- package/dist/adapters/locale-BPB7flIG.js +0 -8249
- package/dist/adapters/locale-tIMrNcCr.cjs +0 -198
- package/dist/adapters/mcp-transport-C2QzXm6h.cjs +0 -40
- package/dist/adapters/mcp-transport-D0B3S1tB.js +0 -579
- package/dist/adapters/openai-D_U4V0kT.cjs +0 -1
- package/dist/adapters/utils-KV37IBIv.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +0 -1
- package/dist/client/chunks/analysis-builder-MuMIzoRq.js +0 -5367
- package/dist/client/chunks/analysis-builder-MuMIzoRq.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-CYVwSPqt.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-DmruKPab.js.map +0 -1
- package/dist/client/chunks/chart-area-DHCPM4Em.js +0 -450
- package/dist/client/chunks/chart-area-DHCPM4Em.js.map +0 -1
- package/dist/client/chunks/chart-bar-KddciGDv.js +0 -271
- package/dist/client/chunks/chart-bar-KddciGDv.js.map +0 -1
- package/dist/client/chunks/chart-bubble-CfqiB538.js +0 -273
- package/dist/client/chunks/chart-bubble-CfqiB538.js.map +0 -1
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
- package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
- package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +0 -1
- package/dist/client/chunks/chart-funnel-DnWRsmnS.js.map +0 -1
- package/dist/client/chunks/chart-gauge-CgMeqeGb.js +0 -424
- package/dist/client/chunks/chart-gauge-CgMeqeGb.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-DcGm9SWK.js +0 -231
- package/dist/client/chunks/chart-heat-map-DcGm9SWK.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-gWYF44ol.js +0 -322
- package/dist/client/chunks/chart-kpi-number-gWYF44ol.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js +0 -149
- package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js.map +0 -1
- package/dist/client/chunks/chart-line-9BEGN5Ti.js +0 -433
- package/dist/client/chunks/chart-line-9BEGN5Ti.js.map +0 -1
- package/dist/client/chunks/chart-pie-BjAIhyOi.js +0 -172
- package/dist/client/chunks/chart-pie-BjAIhyOi.js.map +0 -1
- package/dist/client/chunks/chart-radar-Dgkcl2bN.js +0 -154
- package/dist/client/chunks/chart-radar-Dgkcl2bN.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js +0 -148
- package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DaHYP_OL.js +0 -255
- package/dist/client/chunks/chart-scatter-DaHYP_OL.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-uiwUU4nb.js +0 -298
- package/dist/client/chunks/chart-tree-map-uiwUU4nb.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-D_U4V0kT.cjs +0 -1
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { D as t, S as n, _ as r, k as i, n as a, x as o, y as s } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { c, l } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import u, { useState as d } from "react";
|
|
5
|
-
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
6
|
-
import { Cell as m, Legend as h, Pie as g, PieChart as _ } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/PieChart.tsx
|
|
8
|
-
var v = /* @__PURE__ */ e({ default: () => y }), y = u.memo(function({ data: e, chartConfig: u, displayConfig: v = {}, queryObject: y, height: b = "100%", colorPalette: x, onDataPointClick: S, drillEnabled: C }) {
|
|
9
|
-
let { t: w } = i(), [T, E] = d(null), D = r();
|
|
10
|
-
try {
|
|
11
|
-
let r = {
|
|
12
|
-
showLegend: v?.showLegend ?? !0,
|
|
13
|
-
showTooltip: v?.showTooltip ?? !0,
|
|
14
|
-
leftYAxisFormat: v?.leftYAxisFormat,
|
|
15
|
-
innerRadius: v?.innerRadius || "0%"
|
|
16
|
-
};
|
|
17
|
-
if (!e || e.length === 0) return /* @__PURE__ */ f("div", {
|
|
18
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
19
|
-
style: { height: b },
|
|
20
|
-
children: /* @__PURE__ */ p("div", {
|
|
21
|
-
className: "dc:text-center",
|
|
22
|
-
children: [/* @__PURE__ */ f("div", {
|
|
23
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
24
|
-
children: w("chart.runtime.noData")
|
|
25
|
-
}), /* @__PURE__ */ f("div", {
|
|
26
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
27
|
-
children: w("chart.runtime.noDataHint.pie")
|
|
28
|
-
})]
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
let i, d, O, k = [];
|
|
32
|
-
if (u?.xAxis && u?.yAxis) d = Array.isArray(u.xAxis) ? u.xAxis[0] : u.xAxis, O = Array.isArray(u.yAxis) ? u.yAxis : [u.yAxis], k = u.series || [];
|
|
33
|
-
else if (u?.x && u?.y) d = u.x, O = Array.isArray(u.y) ? u.y : [u.y];
|
|
34
|
-
else return /* @__PURE__ */ f("div", {
|
|
35
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
36
|
-
style: { height: b },
|
|
37
|
-
children: /* @__PURE__ */ p("div", {
|
|
38
|
-
className: "dc:text-center",
|
|
39
|
-
children: [/* @__PURE__ */ f("div", {
|
|
40
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
41
|
-
children: w("chart.runtime.configError")
|
|
42
|
-
}), /* @__PURE__ */ f("div", {
|
|
43
|
-
className: "dc:text-xs",
|
|
44
|
-
children: w("chart.runtime.configErrorHint.pieAxis")
|
|
45
|
-
})]
|
|
46
|
-
})
|
|
47
|
-
});
|
|
48
|
-
if (!d || !O || O.length === 0) return /* @__PURE__ */ f("div", {
|
|
49
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
50
|
-
style: { height: b },
|
|
51
|
-
children: /* @__PURE__ */ p("div", {
|
|
52
|
-
className: "dc:text-center",
|
|
53
|
-
children: [/* @__PURE__ */ f("div", {
|
|
54
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
55
|
-
children: w("chart.runtime.configError")
|
|
56
|
-
}), /* @__PURE__ */ f("div", {
|
|
57
|
-
className: "dc:text-xs",
|
|
58
|
-
children: w("chart.runtime.configErrorHint.axisFields")
|
|
59
|
-
})]
|
|
60
|
-
})
|
|
61
|
-
});
|
|
62
|
-
if (k.length > 0) {
|
|
63
|
-
let { data: n } = t(e, d, O, y, k, D);
|
|
64
|
-
if (i = [], n.length > 0) {
|
|
65
|
-
let e = n[0];
|
|
66
|
-
Object.keys(e).forEach((t) => {
|
|
67
|
-
t !== "name" && typeof e[t] == "number" && i.push({
|
|
68
|
-
name: String(t),
|
|
69
|
-
value: e[t]
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
let t = n(y, d);
|
|
75
|
-
i = e.map((e) => {
|
|
76
|
-
let n = o(e[d], t) || String(e[d]) || "Unknown";
|
|
77
|
-
return typeof e[d] == "boolean" ? n = e[d] ? "Active" : "Inactive" : (n === "true" || n === "false") && (n = n === "true" ? "Active" : "Inactive"), {
|
|
78
|
-
name: n,
|
|
79
|
-
value: typeof e[O[0]] == "string" ? parseFloat(e[O[0]]) : e[O[0]] || 0
|
|
80
|
-
};
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
let A = i.length;
|
|
84
|
-
return i = i.filter((e) => e.value != null && !isNaN(e.value) && e.value !== 0 && e.value > 0), i.length === 0 ? /* @__PURE__ */ f("div", {
|
|
85
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
86
|
-
style: { height: b },
|
|
87
|
-
children: /* @__PURE__ */ p("div", {
|
|
88
|
-
className: "dc:text-center",
|
|
89
|
-
children: [/* @__PURE__ */ f("div", {
|
|
90
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
91
|
-
children: w("chart.runtime.noValidData")
|
|
92
|
-
}), /* @__PURE__ */ f("div", {
|
|
93
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
94
|
-
children: A > 0 ? `Filtered out ${A} data points (zero or invalid values)` : "No data points to display in pie chart"
|
|
95
|
-
})]
|
|
96
|
-
})
|
|
97
|
-
}) : /* @__PURE__ */ f(l, {
|
|
98
|
-
height: b,
|
|
99
|
-
children: /* @__PURE__ */ p(_, {
|
|
100
|
-
accessibilityLayer: !1,
|
|
101
|
-
children: [
|
|
102
|
-
/* @__PURE__ */ f(g, {
|
|
103
|
-
data: i,
|
|
104
|
-
cx: "50%",
|
|
105
|
-
cy: "50%",
|
|
106
|
-
innerRadius: r.innerRadius === "0%" ? void 0 : r.innerRadius,
|
|
107
|
-
outerRadius: "70%",
|
|
108
|
-
dataKey: "value",
|
|
109
|
-
label: r.showLegend ? void 0 : ({ name: e, percent: t }) => `${e} ${((t || 0) * 100).toFixed(0)}%`,
|
|
110
|
-
cursor: C ? "pointer" : void 0,
|
|
111
|
-
onClick: (e, t, n) => {
|
|
112
|
-
S && C && e && S({
|
|
113
|
-
dataPoint: e,
|
|
114
|
-
clickedField: O[0],
|
|
115
|
-
xValue: e.name,
|
|
116
|
-
position: {
|
|
117
|
-
x: n.clientX,
|
|
118
|
-
y: n.clientY
|
|
119
|
-
},
|
|
120
|
-
nativeEvent: n
|
|
121
|
-
});
|
|
122
|
-
},
|
|
123
|
-
children: i.map((e, t) => /* @__PURE__ */ f(m, {
|
|
124
|
-
fill: x?.colors && x.colors[t % x.colors.length] || a[t % a.length],
|
|
125
|
-
fillOpacity: T ? T === i[t].name ? 1 : .3 : 1
|
|
126
|
-
}, `cell-${t}`))
|
|
127
|
-
}),
|
|
128
|
-
r.showTooltip && /* @__PURE__ */ f(c, { formatter: r.leftYAxisFormat ? (e, t) => [s(e, r.leftYAxisFormat), t] : void 0 }),
|
|
129
|
-
r.showLegend && /* @__PURE__ */ f(h, {
|
|
130
|
-
wrapperStyle: {
|
|
131
|
-
fontSize: "12px",
|
|
132
|
-
paddingTop: "10px"
|
|
133
|
-
},
|
|
134
|
-
iconType: "circle",
|
|
135
|
-
iconSize: 8,
|
|
136
|
-
layout: "horizontal",
|
|
137
|
-
align: "center",
|
|
138
|
-
verticalAlign: "bottom",
|
|
139
|
-
onMouseEnter: (e) => E(String(e.value || "")),
|
|
140
|
-
onMouseLeave: () => E(null)
|
|
141
|
-
})
|
|
142
|
-
]
|
|
143
|
-
})
|
|
144
|
-
});
|
|
145
|
-
} catch (e) {
|
|
146
|
-
return /* @__PURE__ */ f("div", {
|
|
147
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
148
|
-
style: { height: b },
|
|
149
|
-
children: /* @__PURE__ */ p("div", {
|
|
150
|
-
className: "dc:text-center",
|
|
151
|
-
children: [
|
|
152
|
-
/* @__PURE__ */ f("div", {
|
|
153
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
154
|
-
children: w("chart.runtime.chartError", { chartType: "Pie Chart" })
|
|
155
|
-
}),
|
|
156
|
-
/* @__PURE__ */ f("div", {
|
|
157
|
-
className: "dc:text-xs dc:mb-2",
|
|
158
|
-
children: e instanceof Error ? e.message : w("chart.runtime.unknownError")
|
|
159
|
-
}),
|
|
160
|
-
/* @__PURE__ */ f("div", {
|
|
161
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
162
|
-
children: w("chart.runtime.checkConfig")
|
|
163
|
-
})
|
|
164
|
-
]
|
|
165
|
-
})
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
//#endregion
|
|
170
|
-
export { v as n, y as t };
|
|
171
|
-
|
|
172
|
-
//# sourceMappingURL=chart-pie-BjAIhyOi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-pie-BjAIhyOi.js","names":[],"sources":["../../../src/client/components/charts/PieChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\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 { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst PieChart = React.memo(function PieChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette,\n onDataPointClick,\n drillEnabled\n}: ChartProps) {\n const { t } = useTranslation()\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n // Use specialized hook to avoid re-renders from unrelated context changes\n const getFieldLabel = useCubeFieldLabel()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n leftYAxisFormat: displayConfig?.leftYAxisFormat,\n innerRadius: displayConfig?.innerRadius || '0%'\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.pie')}</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=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.pieAxis')}</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.axisFields')}</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 getFieldLabel\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=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noValidData')}</div>\n <div className=\"dc: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 accessibilityLayer={false}>\n <Pie\n data={pieData}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={safeDisplayConfig.innerRadius !== '0%' ? safeDisplayConfig.innerRadius : undefined}\n outerRadius=\"70%\"\n dataKey=\"value\"\n label={!safeDisplayConfig.showLegend ? ({ name, percent }) =>\n `${name} ${((percent || 0) * 100).toFixed(0)}%`\n : undefined}\n cursor={drillEnabled ? 'pointer' : undefined}\n onClick={(sliceData: any, _index: number, event: React.MouseEvent) => {\n if (onDataPointClick && drillEnabled && sliceData) {\n onDataPointClick({\n dataPoint: sliceData,\n clickedField: yAxisFields[0],\n xValue: sliceData.name,\n position: { x: event.clientX, y: event.clientY },\n nativeEvent: event\n })\n }\n }}\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=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.chartError', { chartType: 'Pie Chart' })}</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : t('chart.runtime.unknownError')}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">{t('chart.runtime.checkConfig')}</div>\n </div>\n </div>\n )\n }\n})\n\nexport default PieChart"],"mappings":"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"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { D as t, S as n, k as r, n as i, x as a, y as o } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { c as s, l as c } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import l, { useState as u } from "react";
|
|
5
|
-
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
|
-
import { Legend as p, PolarAngleAxis as m, PolarGrid as h, PolarRadiusAxis as g, Radar as _, RadarChart as v } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/RadarChart.tsx
|
|
8
|
-
var y = /* @__PURE__ */ e({ default: () => b }), b = l.memo(function({ data: e, chartConfig: l, displayConfig: y = {}, queryObject: b, height: x = "100%", colorPalette: S }) {
|
|
9
|
-
let { t: C } = r(), [w, T] = u(null);
|
|
10
|
-
try {
|
|
11
|
-
let r = {
|
|
12
|
-
showLegend: y?.showLegend ?? !0,
|
|
13
|
-
showTooltip: y?.showTooltip ?? !0,
|
|
14
|
-
showGrid: y?.showGrid ?? !0,
|
|
15
|
-
leftYAxisFormat: y?.leftYAxisFormat
|
|
16
|
-
};
|
|
17
|
-
if (!e || e.length === 0) return /* @__PURE__ */ d("div", {
|
|
18
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
19
|
-
style: { height: x },
|
|
20
|
-
children: /* @__PURE__ */ f("div", {
|
|
21
|
-
className: "dc:text-center",
|
|
22
|
-
children: [/* @__PURE__ */ d("div", {
|
|
23
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
24
|
-
children: C("chart.runtime.noData")
|
|
25
|
-
}), /* @__PURE__ */ d("div", {
|
|
26
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
27
|
-
children: C("chart.runtime.noDataHint.radar")
|
|
28
|
-
})]
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
let u, E = [];
|
|
32
|
-
if (l?.xAxis && l?.yAxis) {
|
|
33
|
-
let { data: n, seriesKeys: r } = t(e, Array.isArray(l.xAxis) ? l.xAxis[0] : l.xAxis, Array.isArray(l.yAxis) ? l.yAxis : [l.yAxis], b, l.series || []);
|
|
34
|
-
u = n, E = r;
|
|
35
|
-
} else {
|
|
36
|
-
let t = e[0], r = Object.keys(t), i = r.find((e) => typeof t[e] == "string" || e.toLowerCase().includes("subject") || e.toLowerCase().includes("name") || e.toLowerCase().includes("category")) || r[0], o = r.filter((e) => typeof t[e] == "number" && e !== i);
|
|
37
|
-
if (o.length === 0) return /* @__PURE__ */ d("div", {
|
|
38
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
39
|
-
style: { height: x },
|
|
40
|
-
children: /* @__PURE__ */ f("div", {
|
|
41
|
-
className: "dc:text-center",
|
|
42
|
-
children: [/* @__PURE__ */ d("div", {
|
|
43
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
44
|
-
children: C("chart.runtime.configError")
|
|
45
|
-
}), /* @__PURE__ */ d("div", {
|
|
46
|
-
className: "dc:text-xs",
|
|
47
|
-
children: C("chart.runtime.configErrorHint.radarNumeric")
|
|
48
|
-
})]
|
|
49
|
-
})
|
|
50
|
-
});
|
|
51
|
-
if (i) {
|
|
52
|
-
let t = n(b, i);
|
|
53
|
-
u = e.map((e) => {
|
|
54
|
-
let n = { name: a(e[i], t) || String(e[i]) || "Unknown" };
|
|
55
|
-
return o.forEach((t) => {
|
|
56
|
-
let r = t.split(".").pop() || t;
|
|
57
|
-
n[r] = typeof e[t] == "string" ? parseFloat(e[t]) : e[t] || 0;
|
|
58
|
-
}), n;
|
|
59
|
-
}), E = o.map((e) => e.split(".").pop() || e);
|
|
60
|
-
} else u = e.map((e) => ({
|
|
61
|
-
name: String(e[r[0]] || "Unknown"),
|
|
62
|
-
value: typeof e[o[0]] == "string" ? parseFloat(e[o[0]]) : e[o[0]] || 0
|
|
63
|
-
})), E = ["value"];
|
|
64
|
-
}
|
|
65
|
-
return !u || u.length === 0 ? /* @__PURE__ */ d("div", {
|
|
66
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
67
|
-
style: { height: x },
|
|
68
|
-
children: /* @__PURE__ */ f("div", {
|
|
69
|
-
className: "dc:text-center",
|
|
70
|
-
children: [/* @__PURE__ */ d("div", {
|
|
71
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
72
|
-
children: C("chart.runtime.noValidData")
|
|
73
|
-
}), /* @__PURE__ */ d("div", {
|
|
74
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
75
|
-
children: "No valid data points for radar chart after transformation"
|
|
76
|
-
})]
|
|
77
|
-
})
|
|
78
|
-
}) : /* @__PURE__ */ d(c, {
|
|
79
|
-
height: x,
|
|
80
|
-
children: /* @__PURE__ */ f(v, {
|
|
81
|
-
data: u,
|
|
82
|
-
margin: {
|
|
83
|
-
top: 20,
|
|
84
|
-
right: 80,
|
|
85
|
-
bottom: 20,
|
|
86
|
-
left: 80
|
|
87
|
-
},
|
|
88
|
-
accessibilityLayer: !1,
|
|
89
|
-
children: [
|
|
90
|
-
r.showGrid && /* @__PURE__ */ d(h, {}),
|
|
91
|
-
/* @__PURE__ */ d(m, {
|
|
92
|
-
dataKey: "name",
|
|
93
|
-
tick: { fontSize: 12 },
|
|
94
|
-
className: "text-dc-text-muted"
|
|
95
|
-
}),
|
|
96
|
-
/* @__PURE__ */ d(g, {
|
|
97
|
-
tick: { fontSize: 10 },
|
|
98
|
-
className: "text-dc-text-muted",
|
|
99
|
-
tickFormatter: r.leftYAxisFormat ? (e) => o(e, r.leftYAxisFormat) : void 0
|
|
100
|
-
}),
|
|
101
|
-
r.showTooltip && /* @__PURE__ */ d(s, { formatter: r.leftYAxisFormat ? (e, t) => [o(e, r.leftYAxisFormat), t] : void 0 }),
|
|
102
|
-
r.showLegend && E.length > 1 && /* @__PURE__ */ d(p, {
|
|
103
|
-
wrapperStyle: {
|
|
104
|
-
fontSize: "12px",
|
|
105
|
-
paddingTop: "10px"
|
|
106
|
-
},
|
|
107
|
-
iconType: "rect",
|
|
108
|
-
iconSize: 8,
|
|
109
|
-
layout: "horizontal",
|
|
110
|
-
align: "center",
|
|
111
|
-
verticalAlign: "bottom",
|
|
112
|
-
onMouseEnter: (e) => T(String(e.dataKey || "")),
|
|
113
|
-
onMouseLeave: () => T(null)
|
|
114
|
-
}),
|
|
115
|
-
E.map((e, t) => /* @__PURE__ */ d(_, {
|
|
116
|
-
name: e,
|
|
117
|
-
dataKey: e,
|
|
118
|
-
stroke: S?.colors && S.colors[t % S.colors.length] || i[t % i.length],
|
|
119
|
-
fill: S?.colors && S.colors[t % S.colors.length] || i[t % i.length],
|
|
120
|
-
fillOpacity: w ? w === e ? .6 : .1 : .3,
|
|
121
|
-
strokeOpacity: w ? w === e ? 1 : .3 : 1,
|
|
122
|
-
strokeWidth: 2
|
|
123
|
-
}, e))
|
|
124
|
-
]
|
|
125
|
-
})
|
|
126
|
-
});
|
|
127
|
-
} catch (e) {
|
|
128
|
-
return /* @__PURE__ */ d("div", {
|
|
129
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
130
|
-
style: { height: x },
|
|
131
|
-
children: /* @__PURE__ */ f("div", {
|
|
132
|
-
className: "dc:text-center",
|
|
133
|
-
children: [
|
|
134
|
-
/* @__PURE__ */ d("div", {
|
|
135
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
136
|
-
children: C("chart.runtime.chartError", { chartType: "Radar Chart" })
|
|
137
|
-
}),
|
|
138
|
-
/* @__PURE__ */ d("div", {
|
|
139
|
-
className: "dc:text-xs dc:mb-2",
|
|
140
|
-
children: e instanceof Error ? e.message : C("chart.runtime.unknownError")
|
|
141
|
-
}),
|
|
142
|
-
/* @__PURE__ */ d("div", {
|
|
143
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
144
|
-
children: C("chart.runtime.checkConfig")
|
|
145
|
-
})
|
|
146
|
-
]
|
|
147
|
-
})
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
//#endregion
|
|
152
|
-
export { y as n, b as t };
|
|
153
|
-
|
|
154
|
-
//# sourceMappingURL=chart-radar-Dgkcl2bN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-radar-Dgkcl2bN.js","names":[],"sources":["../../../src/client/components/charts/RadarChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\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\nconst RadarChart = React.memo(function RadarChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\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=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.radar')}</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=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.radarNumeric')}</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=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noValidData')}</div>\n <div className=\"dc: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 }} accessibilityLayer={false}>\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=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.chartError', { chartType: 'Radar Chart' })}</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : t('chart.runtime.unknownError')}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">{t('chart.runtime.checkConfig')}</div>\n </div>\n </div>\n )\n }\n})\n\nexport default RadarChart"],"mappings":"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"}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, k as n, n as r, x as i, y as a } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { c as o, l as s } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import c, { useState as l } from "react";
|
|
5
|
-
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
6
|
-
import { Cell as f, Legend as p, RadialBar as m, RadialBarChart as h } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/RadialBarChart.tsx
|
|
8
|
-
var g = /* @__PURE__ */ e({ default: () => _ }), _ = c.memo(function({ data: e, chartConfig: c, displayConfig: g = {}, queryObject: _, height: v = "100%", colorPalette: y }) {
|
|
9
|
-
let { t: b } = n(), [x, S] = l(null);
|
|
10
|
-
try {
|
|
11
|
-
let n = {
|
|
12
|
-
showLegend: g?.showLegend ?? !0,
|
|
13
|
-
showTooltip: g?.showTooltip ?? !0,
|
|
14
|
-
leftYAxisFormat: g?.leftYAxisFormat
|
|
15
|
-
};
|
|
16
|
-
if (!e || e.length === 0) return /* @__PURE__ */ u("div", {
|
|
17
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
18
|
-
style: { height: v },
|
|
19
|
-
children: /* @__PURE__ */ d("div", {
|
|
20
|
-
className: "dc:text-center",
|
|
21
|
-
children: [/* @__PURE__ */ u("div", {
|
|
22
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
23
|
-
children: b("chart.runtime.noData")
|
|
24
|
-
}), /* @__PURE__ */ u("div", {
|
|
25
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
26
|
-
children: b("chart.runtime.noDataHint.radialBar")
|
|
27
|
-
})]
|
|
28
|
-
})
|
|
29
|
-
});
|
|
30
|
-
let l;
|
|
31
|
-
if (c?.xAxis && c?.yAxis) {
|
|
32
|
-
let n = Array.isArray(c.xAxis) ? c.xAxis[0] : c.xAxis, a = Array.isArray(c.yAxis) ? c.yAxis[0] : c.yAxis, o = t(_, n);
|
|
33
|
-
l = e.map((e, t) => ({
|
|
34
|
-
name: i(e[n], o) || String(e[n]) || "Unknown",
|
|
35
|
-
value: typeof e[a] == "string" ? parseFloat(e[a]) : e[a] || 0,
|
|
36
|
-
fill: y?.colors && y.colors[t % y.colors.length] || r[t % r.length]
|
|
37
|
-
}));
|
|
38
|
-
} else {
|
|
39
|
-
let t = e[0], n = Object.keys(t), i = n.find((e) => typeof t[e] == "string" || e.toLowerCase().includes("name") || e.toLowerCase().includes("label") || e.toLowerCase().includes("category")) || n[0], a = n.find((e) => typeof t[e] == "number" && e !== i) || n[1];
|
|
40
|
-
if (!a) return /* @__PURE__ */ u("div", {
|
|
41
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
42
|
-
style: { height: v },
|
|
43
|
-
children: /* @__PURE__ */ d("div", {
|
|
44
|
-
className: "dc:text-center",
|
|
45
|
-
children: [/* @__PURE__ */ u("div", {
|
|
46
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
47
|
-
children: b("chart.runtime.configError")
|
|
48
|
-
}), /* @__PURE__ */ u("div", {
|
|
49
|
-
className: "dc:text-xs",
|
|
50
|
-
children: b("chart.runtime.configErrorHint.radialBarNumeric")
|
|
51
|
-
})]
|
|
52
|
-
})
|
|
53
|
-
});
|
|
54
|
-
l = e.map((e, t) => {
|
|
55
|
-
let n = e[i];
|
|
56
|
-
return n = typeof n == "boolean" ? n ? "Active" : "Inactive" : n === "true" || n === "false" ? n === "true" ? "Active" : "Inactive" : String(n), {
|
|
57
|
-
name: n,
|
|
58
|
-
value: typeof e[a] == "string" ? parseFloat(e[a]) : e[a] || 0,
|
|
59
|
-
fill: y?.colors && y.colors[t % y.colors.length] || r[t % r.length]
|
|
60
|
-
};
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return l = l.filter((e) => e.value != null && e.value !== 0), l.length === 0 ? /* @__PURE__ */ u("div", {
|
|
64
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
65
|
-
style: { height: v },
|
|
66
|
-
children: /* @__PURE__ */ d("div", {
|
|
67
|
-
className: "dc:text-center",
|
|
68
|
-
children: [/* @__PURE__ */ u("div", {
|
|
69
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
70
|
-
children: b("chart.runtime.noValidData")
|
|
71
|
-
}), /* @__PURE__ */ u("div", {
|
|
72
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
73
|
-
children: "No valid data points for radial bar chart after transformation"
|
|
74
|
-
})]
|
|
75
|
-
})
|
|
76
|
-
}) : /* @__PURE__ */ u(s, {
|
|
77
|
-
height: v,
|
|
78
|
-
children: /* @__PURE__ */ d(h, {
|
|
79
|
-
data: l,
|
|
80
|
-
innerRadius: "10%",
|
|
81
|
-
outerRadius: "80%",
|
|
82
|
-
margin: {
|
|
83
|
-
top: 20,
|
|
84
|
-
right: 30,
|
|
85
|
-
bottom: 20,
|
|
86
|
-
left: 30
|
|
87
|
-
},
|
|
88
|
-
accessibilityLayer: !1,
|
|
89
|
-
children: [
|
|
90
|
-
n.showTooltip && /* @__PURE__ */ u(o, { formatter: n.leftYAxisFormat ? (e, t) => [a(e, n.leftYAxisFormat), t] : void 0 }),
|
|
91
|
-
n.showLegend && /* @__PURE__ */ u(p, {
|
|
92
|
-
wrapperStyle: {
|
|
93
|
-
fontSize: "12px",
|
|
94
|
-
paddingTop: "10px"
|
|
95
|
-
},
|
|
96
|
-
iconType: "circle",
|
|
97
|
-
iconSize: 8,
|
|
98
|
-
layout: "horizontal",
|
|
99
|
-
align: "center",
|
|
100
|
-
verticalAlign: "bottom",
|
|
101
|
-
onMouseEnter: (e) => S(String(e.value || "")),
|
|
102
|
-
onMouseLeave: () => S(null)
|
|
103
|
-
}),
|
|
104
|
-
/* @__PURE__ */ u(m, {
|
|
105
|
-
dataKey: "value",
|
|
106
|
-
cornerRadius: 4,
|
|
107
|
-
label: {
|
|
108
|
-
position: "insideStart",
|
|
109
|
-
fill: "#fff",
|
|
110
|
-
fontSize: 12,
|
|
111
|
-
formatter: n.leftYAxisFormat ? (e) => a(e, n.leftYAxisFormat) : void 0
|
|
112
|
-
},
|
|
113
|
-
children: l.map((e, t) => /* @__PURE__ */ u(f, {
|
|
114
|
-
fill: e.fill,
|
|
115
|
-
fillOpacity: x ? x === e.name ? 1 : .3 : 1
|
|
116
|
-
}, `cell-${t}`))
|
|
117
|
-
})
|
|
118
|
-
]
|
|
119
|
-
})
|
|
120
|
-
});
|
|
121
|
-
} catch (e) {
|
|
122
|
-
return /* @__PURE__ */ u("div", {
|
|
123
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
124
|
-
style: { height: v },
|
|
125
|
-
children: /* @__PURE__ */ d("div", {
|
|
126
|
-
className: "dc:text-center",
|
|
127
|
-
children: [
|
|
128
|
-
/* @__PURE__ */ u("div", {
|
|
129
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
130
|
-
children: b("chart.runtime.chartError", { chartType: "Radial Bar Chart" })
|
|
131
|
-
}),
|
|
132
|
-
/* @__PURE__ */ u("div", {
|
|
133
|
-
className: "dc:text-xs dc:mb-2",
|
|
134
|
-
children: e instanceof Error ? e.message : b("chart.runtime.unknownError")
|
|
135
|
-
}),
|
|
136
|
-
/* @__PURE__ */ u("div", {
|
|
137
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
138
|
-
children: b("chart.runtime.checkConfig")
|
|
139
|
-
})
|
|
140
|
-
]
|
|
141
|
-
})
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
//#endregion
|
|
146
|
-
export { g as n, _ as t };
|
|
147
|
-
|
|
148
|
-
//# sourceMappingURL=chart-radial-bar-DdWJjAhK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-radial-bar-DdWJjAhK.js","names":[],"sources":["../../../src/client/components/charts/RadialBarChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { RadialBarChart as RechartsRadialBarChart, RadialBar, Legend, Cell } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, formatAxisValue } from '../../utils/chartUtils'\nimport type { ChartProps } from '../../types'\n\nconst RadialBarChart = React.memo(function RadialBarChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\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 leftYAxisFormat: displayConfig?.leftYAxisFormat\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.radialBar')}</div>\n </div>\n </div>\n )\n }\n\n let radialData: Array<{name: string, value: number, fill?: 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 // Name/category field\n const yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis // Value field\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n radialData = data.map((item, index) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n value: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }))\n } else {\n // Legacy format or auto-detection\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find name/label field\n const nameField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('label') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find a numeric field for values\n const valueField = keys.find(key => \n typeof firstRow[key] === 'number' && key !== nameField\n ) || keys[1]\n\n if (!valueField) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.radialBarNumeric')}</div>\n </div>\n </div>\n )\n }\n\n // Transform data for radial bar chart\n radialData = data.map((item, index) => {\n let name = item[nameField]\n // Handle boolean values with better labels\n if (typeof name === 'boolean') {\n name = name ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n } else {\n name = String(name)\n }\n return {\n name,\n value: typeof item[valueField] === 'string' \n ? parseFloat(item[valueField]) \n : (item[valueField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }\n })\n }\n\n // Filter out zero/null values\n radialData = radialData.filter(item => item.value != null && item.value !== 0)\n \n if (radialData.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noValidData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">No valid data points for radial bar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsRadialBarChart\n data={radialData}\n innerRadius=\"10%\"\n outerRadius=\"80%\"\n margin={{ top: 20, right: 30, bottom: 20, left: 30 }}\n accessibilityLayer={false}\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 && (\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 <RadialBar\n dataKey=\"value\"\n cornerRadius={4}\n label={{\n position: 'insideStart',\n fill: '#fff',\n fontSize: 12,\n formatter: safeDisplayConfig.leftYAxisFormat\n ? (value: any) => formatAxisValue(value, safeDisplayConfig.leftYAxisFormat)\n : undefined\n }}\n >\n {radialData.map((entry, index) => (\n <Cell \n key={`cell-${index}`} \n fill={entry.fill}\n fillOpacity={hoveredLegend ? (hoveredLegend === entry.name ? 1 : 0.3) : 1}\n />\n ))}\n </RadialBar>\n </RechartsRadialBarChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'RadialBarChart rendering error\n return (\n <div className=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.chartError', { chartType: 'Radial Bar Chart' })}</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : t('chart.runtime.unknownError')}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">{t('chart.runtime.checkConfig')}</div>\n </div>\n </div>\n )\n }\n})\n\nexport default RadialBarChart"],"mappings":"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"}
|