drizzle-cube 0.5.7 → 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/{utils.d.ts → 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/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Dz1F4iwf.js → handler-CfgE0JSL.js} +515 -578
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/hono/index.js +208 -178
- 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/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/{server/openai-DiVskd89.js → adapters/openai-cDlFSTk6.js} +61 -59
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{utils-DosuoabY.js → utils-BPWZsX7k.js} +1285 -1220
- 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 +3 -17
- 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-6KRE36mm.js → DashboardEditModal-okVfH8ZK.js} +5446 -4486
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.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-x576-O5p.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-CiHrLH6Y.js → chart-activity-grid-DX0SJbxs.js} +642 -494
- 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-Bu9hy-17.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.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-Dau5AF4E.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.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-Cm5jrpaw.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-Eke8IPtG.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-BPW-EAm9.js → chart-markdown-CV75S_zL.js} +1359 -1240
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.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-CFzjGvZX.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.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-91Q2tzaB.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.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-DcHbbPaG.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-CrBDYN6N.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/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
- package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-2zTAWTej.js} +8 -2
- package/dist/client/chunks/{nl-NL-oyr2wENY.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-BszcrmZX.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-kqa-JIMg.js → utils-3P6z1vz5.js} +3 -3
- package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-3P6z1vz5.js.map} +1 -1
- package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-0hJNlZXQ.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/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- 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/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- 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/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- 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/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- 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/DashboardGrid.d.ts +1 -1
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- 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 +5 -3
- 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/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- 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/MissingDependencyFallback.d.ts +1 -1
- 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/DashboardContext.d.ts +2 -2
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- 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/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.d.ts +1 -1
- 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/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +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/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -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/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +6360 -6462
- package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/{adapters/openai-DiVskd89.js → server/openai-cDlFSTk6.js} +61 -59
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +332 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +68 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +120 -0
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +22 -0
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +66 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +16 -0
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +31 -0
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +108 -0
- package/dist/server/server/builders/date-time-builder.d.ts +34 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +25 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +145 -0
- package/dist/server/server/builders/group-by-builder.d.ts +38 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +185 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +98 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +85 -0
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +212 -0
- package/dist/server/server/cube-utils.d.ts +158 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- 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 +186 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +48 -0
- package/dist/server/server/index.d.ts +38 -0
- 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 +19 -0
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +34 -0
- 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 +199 -0
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -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/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +38 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -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 +98 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +158 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +544 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +144 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +15 -8
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-C63rJUUK.cjs +0 -25
- package/dist/adapters/locale-CTNwPVZI.cjs +0 -198
- package/dist/adapters/locale-gU_d1Wja.js +0 -8249
- package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
- package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
- package/dist/adapters/openai-6wrBvAnv.cjs +0 -1
- package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
- package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-x576-O5p.js.map +0 -1
- package/dist/client/chunks/analysis-builder-zd48FVJO.js +0 -5367
- package/dist/client/chunks/analysis-builder-zd48FVJO.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CiHrLH6Y.js.map +0 -1
- package/dist/client/chunks/chart-area-CXFK-Grv.js +0 -450
- package/dist/client/chunks/chart-area-CXFK-Grv.js.map +0 -1
- package/dist/client/chunks/chart-bar-DKXfLoGG.js +0 -271
- package/dist/client/chunks/chart-bar-DKXfLoGG.js.map +0 -1
- package/dist/client/chunks/chart-bubble-DGkTQlxM.js +0 -273
- package/dist/client/chunks/chart-bubble-DGkTQlxM.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-Cm5jrpaw.js.map +0 -1
- package/dist/client/chunks/chart-funnel-Eke8IPtG.js.map +0 -1
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js +0 -424
- package/dist/client/chunks/chart-gauge-DeRZNsyl.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js +0 -231
- package/dist/client/chunks/chart-heat-map-C86thSJ4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-CxOYD2f1.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js +0 -322
- package/dist/client/chunks/chart-kpi-number-C6gWz-x4.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js +0 -149
- package/dist/client/chunks/chart-kpi-text-dDONrhS-.js.map +0 -1
- package/dist/client/chunks/chart-line-r4iWevKZ.js +0 -433
- package/dist/client/chunks/chart-line-r4iWevKZ.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
- package/dist/client/chunks/chart-pie-yqH2YVEI.js +0 -172
- package/dist/client/chunks/chart-pie-yqH2YVEI.js.map +0 -1
- package/dist/client/chunks/chart-radar-B-_3v-rE.js +0 -154
- package/dist/client/chunks/chart-radar-B-_3v-rE.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js +0 -148
- package/dist/client/chunks/chart-radial-bar-C0EgzfAF.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DZPirzwX.js +0 -255
- package/dist/client/chunks/chart-scatter-DZPirzwX.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js +0 -298
- package/dist/client/chunks/chart-tree-map-Bi4axCvh.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-B5wCDJSj.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-6wrBvAnv.cjs +0 -1
- package/dist/server/openai-BDwb2u7y.cjs +0 -17
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, T as n, _ as r, i, k as a, n as o, w as s, x as c, y as l } from "./chart-activity-grid-CiHrLH6Y.js";
|
|
3
|
-
import { l as u } from "./chart-area-CXFK-Grv.js";
|
|
4
|
-
import d, { useState as f } from "react";
|
|
5
|
-
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
6
|
-
import { CartesianGrid as h, Legend as g, Scatter as _, ScatterChart as v, Tooltip as y, XAxis as b, YAxis as x } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/ScatterChart.tsx
|
|
8
|
-
var S = /* @__PURE__ */ e({ default: () => C }), C = d.memo(function({ data: e, chartConfig: d, displayConfig: S = {}, queryObject: C, height: w = "100%", colorPalette: T }) {
|
|
9
|
-
let { t: E } = a(), [D, O] = f(null), k = r();
|
|
10
|
-
try {
|
|
11
|
-
let r = {
|
|
12
|
-
showLegend: S?.showLegend ?? !0,
|
|
13
|
-
showGrid: S?.showGrid ?? !0,
|
|
14
|
-
showTooltip: S?.showTooltip ?? !0
|
|
15
|
-
}, a = S?.xAxisFormat, f = S?.leftYAxisFormat;
|
|
16
|
-
if (!e || e.length === 0) return /* @__PURE__ */ p("div", {
|
|
17
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
18
|
-
style: { height: w },
|
|
19
|
-
children: /* @__PURE__ */ m("div", {
|
|
20
|
-
className: "dc:text-center",
|
|
21
|
-
children: [/* @__PURE__ */ p("div", {
|
|
22
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
23
|
-
children: E("chart.runtime.noData")
|
|
24
|
-
}), /* @__PURE__ */ p("div", {
|
|
25
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
26
|
-
children: E("chart.runtime.noDataHint.scatter")
|
|
27
|
-
})]
|
|
28
|
-
})
|
|
29
|
-
});
|
|
30
|
-
let A, j, M = [];
|
|
31
|
-
if (d?.xAxis && d?.yAxis) {
|
|
32
|
-
A = Array.isArray(d.xAxis) ? d.xAxis[0] : d.xAxis, j = Array.isArray(d.yAxis) ? d.yAxis[0] : d.yAxis;
|
|
33
|
-
let e = d.series;
|
|
34
|
-
M = e ? Array.isArray(e) ? e : [e] : [];
|
|
35
|
-
} else if (d?.x && d?.y) A = d.x, j = Array.isArray(d.y) ? d.y[0] : d.y;
|
|
36
|
-
else return /* @__PURE__ */ p("div", {
|
|
37
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
38
|
-
style: { height: w },
|
|
39
|
-
children: /* @__PURE__ */ m("div", {
|
|
40
|
-
className: "dc:text-center",
|
|
41
|
-
children: [/* @__PURE__ */ p("div", {
|
|
42
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
43
|
-
children: E("chart.runtime.configError")
|
|
44
|
-
}), /* @__PURE__ */ p("div", {
|
|
45
|
-
className: "dc:text-xs",
|
|
46
|
-
children: E("chart.runtime.configErrorHint.axisInvalid")
|
|
47
|
-
})]
|
|
48
|
-
})
|
|
49
|
-
});
|
|
50
|
-
if (!A || !j) return /* @__PURE__ */ p("div", {
|
|
51
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
52
|
-
style: { height: w },
|
|
53
|
-
children: /* @__PURE__ */ m("div", {
|
|
54
|
-
className: "dc:text-center",
|
|
55
|
-
children: [/* @__PURE__ */ p("div", {
|
|
56
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
57
|
-
children: E("chart.runtime.configError")
|
|
58
|
-
}), /* @__PURE__ */ p("div", {
|
|
59
|
-
className: "dc:text-xs",
|
|
60
|
-
children: E("chart.runtime.configErrorHint.axisFields")
|
|
61
|
-
})]
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
let N = (C?.timeDimensions || []).map((e) => e.dimension), P, F = {};
|
|
65
|
-
if (M.length > 0) {
|
|
66
|
-
let r = M[0];
|
|
67
|
-
e.forEach((e) => {
|
|
68
|
-
let i = String(e[r] || "Default");
|
|
69
|
-
F[i] || (F[i] = []);
|
|
70
|
-
let a = t(C, A), o = c(e[A], a) || e[A], l = n(e[j]), u = typeof o == "string" ? parseFloat(o) : o;
|
|
71
|
-
if (s(u) && l !== null) {
|
|
72
|
-
let n = {};
|
|
73
|
-
N.forEach((r) => {
|
|
74
|
-
if (e[r]) {
|
|
75
|
-
let i = t(C, r);
|
|
76
|
-
n[r] = c(e[r], i);
|
|
77
|
-
}
|
|
78
|
-
}), F[i].push({
|
|
79
|
-
x: u,
|
|
80
|
-
y: l,
|
|
81
|
-
name: i,
|
|
82
|
-
timeValues: n,
|
|
83
|
-
originalItem: e
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}), P = Object.keys(F).flatMap((e) => F[e]);
|
|
87
|
-
} else {
|
|
88
|
-
let r = t(C, A);
|
|
89
|
-
P = e.map((e) => {
|
|
90
|
-
let i = c(e[A], r) || e[A], a = n(e[j]), o = typeof i == "string" ? parseFloat(i) : i, l = {};
|
|
91
|
-
return N.forEach((n) => {
|
|
92
|
-
if (e[n]) {
|
|
93
|
-
let r = t(C, n);
|
|
94
|
-
l[n] = c(e[n], r);
|
|
95
|
-
}
|
|
96
|
-
}), {
|
|
97
|
-
x: o,
|
|
98
|
-
y: a,
|
|
99
|
-
name: "Point",
|
|
100
|
-
timeValues: l,
|
|
101
|
-
originalItem: e,
|
|
102
|
-
isValid: s(o) && a !== null
|
|
103
|
-
};
|
|
104
|
-
}).filter((e) => e.isValid);
|
|
105
|
-
}
|
|
106
|
-
if (!P || P.length === 0) return /* @__PURE__ */ p("div", {
|
|
107
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
108
|
-
style: { height: w },
|
|
109
|
-
children: /* @__PURE__ */ m("div", {
|
|
110
|
-
className: "dc:text-center",
|
|
111
|
-
children: [/* @__PURE__ */ p("div", {
|
|
112
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
113
|
-
children: E("chart.runtime.noValidData")
|
|
114
|
-
}), /* @__PURE__ */ p("div", {
|
|
115
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
116
|
-
children: "No valid data points for scatter chart after transformation"
|
|
117
|
-
})]
|
|
118
|
-
})
|
|
119
|
-
});
|
|
120
|
-
let I = Object.keys(F), L = I.length > 1 && I.length <= 20, R = r.showLegend && L;
|
|
121
|
-
return /* @__PURE__ */ p(u, {
|
|
122
|
-
height: w,
|
|
123
|
-
children: /* @__PURE__ */ m(v, {
|
|
124
|
-
margin: {
|
|
125
|
-
...i,
|
|
126
|
-
left: 40
|
|
127
|
-
},
|
|
128
|
-
accessibilityLayer: !1,
|
|
129
|
-
children: [
|
|
130
|
-
r.showGrid && /* @__PURE__ */ p(h, { strokeDasharray: "3 3" }),
|
|
131
|
-
/* @__PURE__ */ p(b, {
|
|
132
|
-
type: "number",
|
|
133
|
-
dataKey: "x",
|
|
134
|
-
name: a?.label || k(A),
|
|
135
|
-
tick: { fontSize: 12 },
|
|
136
|
-
tickFormatter: a ? (e) => l(e, a) : void 0
|
|
137
|
-
}),
|
|
138
|
-
/* @__PURE__ */ p(x, {
|
|
139
|
-
type: "number",
|
|
140
|
-
dataKey: "y",
|
|
141
|
-
name: f?.label || k(j),
|
|
142
|
-
tick: { fontSize: 12 },
|
|
143
|
-
tickFormatter: f ? (e) => l(e, f) : void 0,
|
|
144
|
-
label: {
|
|
145
|
-
value: f?.label || k(j),
|
|
146
|
-
angle: -90,
|
|
147
|
-
position: "left",
|
|
148
|
-
style: {
|
|
149
|
-
textAnchor: "middle",
|
|
150
|
-
fontSize: "12px"
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}),
|
|
154
|
-
r.showTooltip && /* @__PURE__ */ p(y, {
|
|
155
|
-
cursor: { strokeDasharray: "3 3" },
|
|
156
|
-
content: ({ active: e, payload: t }) => {
|
|
157
|
-
if (!e || !t || t.length === 0) return null;
|
|
158
|
-
let n = t[0]?.payload;
|
|
159
|
-
return n ? /* @__PURE__ */ m("div", {
|
|
160
|
-
style: {
|
|
161
|
-
backgroundColor: "white",
|
|
162
|
-
border: "1px solid #e5e7eb",
|
|
163
|
-
borderRadius: "0.5rem",
|
|
164
|
-
fontSize: "0.875rem",
|
|
165
|
-
color: "#1f2937",
|
|
166
|
-
boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
167
|
-
padding: "8px 12px"
|
|
168
|
-
},
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ p("div", {
|
|
171
|
-
style: {
|
|
172
|
-
fontWeight: 600,
|
|
173
|
-
marginBottom: "4px"
|
|
174
|
-
},
|
|
175
|
-
children: n.name
|
|
176
|
-
}),
|
|
177
|
-
n.timeValues && Object.keys(n.timeValues).length > 0 && /* @__PURE__ */ p("div", {
|
|
178
|
-
style: {
|
|
179
|
-
marginBottom: "4px",
|
|
180
|
-
color: "#6b7280"
|
|
181
|
-
},
|
|
182
|
-
children: Object.entries(n.timeValues).map(([e, t]) => /* @__PURE__ */ m("div", { children: [
|
|
183
|
-
k(e),
|
|
184
|
-
": ",
|
|
185
|
-
t
|
|
186
|
-
] }, e))
|
|
187
|
-
}),
|
|
188
|
-
/* @__PURE__ */ m("div", { children: [
|
|
189
|
-
a?.label || k(A),
|
|
190
|
-
": ",
|
|
191
|
-
l(n.x, a)
|
|
192
|
-
] }),
|
|
193
|
-
/* @__PURE__ */ m("div", { children: [
|
|
194
|
-
f?.label || k(j),
|
|
195
|
-
": ",
|
|
196
|
-
l(n.y, f)
|
|
197
|
-
] })
|
|
198
|
-
]
|
|
199
|
-
}) : null;
|
|
200
|
-
}
|
|
201
|
-
}),
|
|
202
|
-
R && /* @__PURE__ */ p(g, {
|
|
203
|
-
wrapperStyle: {
|
|
204
|
-
fontSize: "12px",
|
|
205
|
-
paddingTop: "10px"
|
|
206
|
-
},
|
|
207
|
-
iconType: "circle",
|
|
208
|
-
iconSize: 8,
|
|
209
|
-
layout: "horizontal",
|
|
210
|
-
align: "center",
|
|
211
|
-
verticalAlign: "bottom",
|
|
212
|
-
onMouseEnter: (e) => O(String(e.dataKey || "")),
|
|
213
|
-
onMouseLeave: () => O(null)
|
|
214
|
-
}),
|
|
215
|
-
L ? I.map((e, t) => /* @__PURE__ */ p(_, {
|
|
216
|
-
name: e,
|
|
217
|
-
data: F[e],
|
|
218
|
-
fill: T?.colors && T.colors[t % T.colors.length] || o[t % o.length],
|
|
219
|
-
fillOpacity: D ? D === e ? 1 : .3 : 1
|
|
220
|
-
}, e)) : /* @__PURE__ */ p(_, {
|
|
221
|
-
name: "Data",
|
|
222
|
-
data: P,
|
|
223
|
-
fill: T?.colors && T.colors[0] || o[0]
|
|
224
|
-
})
|
|
225
|
-
]
|
|
226
|
-
})
|
|
227
|
-
});
|
|
228
|
-
} catch (e) {
|
|
229
|
-
return /* @__PURE__ */ p("div", {
|
|
230
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
231
|
-
style: { height: w },
|
|
232
|
-
children: /* @__PURE__ */ m("div", {
|
|
233
|
-
className: "dc:text-center",
|
|
234
|
-
children: [
|
|
235
|
-
/* @__PURE__ */ p("div", {
|
|
236
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
237
|
-
children: E("chart.runtime.chartError", { chartType: "Scatter Chart" })
|
|
238
|
-
}),
|
|
239
|
-
/* @__PURE__ */ p("div", {
|
|
240
|
-
className: "dc:text-xs dc:mb-2",
|
|
241
|
-
children: e instanceof Error ? e.message : E("chart.runtime.unknownError")
|
|
242
|
-
}),
|
|
243
|
-
/* @__PURE__ */ p("div", {
|
|
244
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
245
|
-
children: E("chart.runtime.checkConfig")
|
|
246
|
-
})
|
|
247
|
-
]
|
|
248
|
-
})
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
//#endregion
|
|
253
|
-
export { S as n, C as t };
|
|
254
|
-
|
|
255
|
-
//# sourceMappingURL=chart-scatter-DZPirzwX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-scatter-DZPirzwX.js","names":[],"sources":["../../../src/client/components/charts/ScatterChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Legend, Tooltip } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, parseNumericValue, isValidNumericValue, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst ScatterChart = React.memo(function ScatterChart({\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 // 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 showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n // Extract axis format configs\n // For scatter charts, xAxis uses xAxisFormat, yAxis uses leftYAxisFormat\n const xAxisFormat = displayConfig?.xAxisFormat\n const yAxisFormat = displayConfig?.leftYAxisFormat\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.scatter')}</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisField: string\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - handle both string and array values\n xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis\n yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis\n // Normalize series to array\n const seriesConfig = chartConfig.series\n seriesFields = seriesConfig ? (Array.isArray(seriesConfig) ? seriesConfig : [seriesConfig]) : []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format (adapt for scatter chart)\n xAxisField = chartConfig.x\n yAxisField = Array.isArray(chartConfig.y) ? chartConfig.y[0] : 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.axisInvalid')}</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField) {\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 // Extract time dimensions from query for tooltip display\n const timeDimensions = queryObject?.timeDimensions || []\n const timeDimensionFields = timeDimensions.map((td: any) => td.dimension)\n\n // Transform data for scatter plot\n // Null handling: Filter out data points where x or y coordinates are null\n let scatterData: any[]\n let seriesGroups: { [key: string]: any[] } = {}\n\n if (seriesFields.length > 0) {\n // Group data by series field\n const seriesField = seriesFields[0]\n data.forEach(item => {\n const seriesValue = String(item[seriesField] || 'Default')\n if (!seriesGroups[seriesValue]) {\n seriesGroups[seriesValue] = []\n }\n\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n\n // Only add point if both x and y are valid numbers\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n if (isValidNumericValue(xNum) && yValue !== null) {\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n seriesGroups[seriesValue].push({\n x: xNum,\n y: yValue,\n name: seriesValue,\n timeValues,\n originalItem: item\n })\n }\n })\n\n // Collect all valid points from all series for validation\n // (The actual rendering uses seriesGroups with series separated)\n const seriesKeys = Object.keys(seriesGroups)\n scatterData = seriesKeys.flatMap(key => seriesGroups[key])\n } else {\n // Single series scatter plot\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n scatterData = data\n .map(item => {\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n return {\n x: xNum,\n y: yValue,\n name: `Point`,\n timeValues,\n originalItem: item,\n isValid: isValidNumericValue(xNum) && yValue !== null\n }\n })\n .filter(point => point.isValid)\n }\n \n // Validate transformed data\n if (!scatterData || scatterData.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 scatter chart after transformation</div>\n </div>\n </div>\n )\n }\n\n const seriesKeys = Object.keys(seriesGroups)\n // Limit series to prevent performance issues with high-cardinality fields (e.g., dates)\n // If more than 20 unique series, fall back to single-series mode\n const MAX_SERIES = 20\n const hasSeries = seriesKeys.length > 1 && seriesKeys.length <= MAX_SERIES\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend && hasSeries\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsScatterChart margin={chartMargins} accessibilityLayer={false}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xAxisFormat?.label || getFieldLabel(xAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={xAxisFormat ? (value) => formatAxisValue(value, xAxisFormat) : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yAxisFormat?.label || getFieldLabel(yAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={yAxisFormat ? (value) => formatAxisValue(value, yAxisFormat) : undefined}\n label={{ value: yAxisFormat?.label || getFieldLabel(yAxisField), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <Tooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null\n // Only show the first (active) point\n const point = payload[0]?.payload\n if (!point) return null\n\n return (\n <div style={{\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n color: '#1f2937',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n padding: '8px 12px'\n }}>\n <div style={{ fontWeight: 600, marginBottom: '4px' }}>{point.name}</div>\n {/* Show time dimension values if present */}\n {point.timeValues && Object.keys(point.timeValues).length > 0 && (\n <div style={{ marginBottom: '4px', color: '#6b7280' }}>\n {Object.entries(point.timeValues).map(([field, value]) => (\n <div key={field}>{getFieldLabel(field)}: {value as string}</div>\n ))}\n </div>\n )}\n <div>{xAxisFormat?.label || getFieldLabel(xAxisField)}: {formatAxisValue(point.x, xAxisFormat)}</div>\n <div>{yAxisFormat?.label || getFieldLabel(yAxisField)}: {formatAxisValue(point.y, yAxisFormat)}</div>\n </div>\n )\n }}\n />\n )}\n {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.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {hasSeries ? (\n // Multiple series\n seriesKeys.map((seriesKey, index) => (\n <Scatter\n key={seriesKey}\n name={seriesKey}\n data={seriesGroups[seriesKey]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))\n ) : (\n // Single series\n <Scatter\n name=\"Data\"\n data={scatterData}\n fill={(colorPalette?.colors && colorPalette.colors[0]) || CHART_COLORS[0]}\n />\n )}\n </RechartsScatterChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'ScatterChart 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: 'Scatter 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 ScatterChart"],"mappings":"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"}
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, _ as n, k as r, n as i, r as a, x as o, y as s } from "./chart-activity-grid-CiHrLH6Y.js";
|
|
3
|
-
import { c, l } from "./chart-area-CXFK-Grv.js";
|
|
4
|
-
import u, { useState as d } from "react";
|
|
5
|
-
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
6
|
-
import { Treemap as m } from "recharts";
|
|
7
|
-
import { scaleOrdinal as h, scaleQuantize as g } from "d3";
|
|
8
|
-
//#region src/client/components/charts/TreeMapChart.tsx
|
|
9
|
-
var _ = /* @__PURE__ */ e({ default: () => v }), v = u.memo(function({ data: e, chartConfig: u, displayConfig: _ = {}, queryObject: v, height: y = "100%", colorPalette: b, onDataPointClick: x, drillEnabled: S }) {
|
|
10
|
-
let { t: C } = r(), [w, T] = d(null), E = n();
|
|
11
|
-
try {
|
|
12
|
-
let n = {
|
|
13
|
-
showTooltip: _?.showTooltip ?? !0,
|
|
14
|
-
showLegend: _?.showLegend ?? !0,
|
|
15
|
-
leftYAxisFormat: _?.leftYAxisFormat
|
|
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: y },
|
|
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: C("chart.runtime.noData")
|
|
25
|
-
}), /* @__PURE__ */ f("div", {
|
|
26
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
27
|
-
children: C("chart.runtime.noDataHint.treemap")
|
|
28
|
-
})]
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
let r, d = !1, D;
|
|
32
|
-
if (u?.xAxis && u?.yAxis) {
|
|
33
|
-
let n = Array.isArray(u.xAxis) ? u.xAxis[0] : u.xAxis, s = Array.isArray(u.yAxis) ? u.yAxis[0] : u.yAxis;
|
|
34
|
-
D = Array.isArray(u.series) ? u.series[0] : u.series;
|
|
35
|
-
let c = t(v, n);
|
|
36
|
-
if (D) {
|
|
37
|
-
let t = e.map((e) => {
|
|
38
|
-
let t = e[D];
|
|
39
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
40
|
-
}).filter((e) => !isNaN(e));
|
|
41
|
-
if (d = t.length === e.length && t.every((e) => typeof e == "number"), d) {
|
|
42
|
-
let i = Math.min(...t), l = Math.max(...t), u = g().domain([i, l]).range(a);
|
|
43
|
-
r = e.map((e) => {
|
|
44
|
-
let t = u(typeof e[D] == "string" ? parseFloat(e[D]) : e[D]);
|
|
45
|
-
return {
|
|
46
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
47
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
48
|
-
fill: t,
|
|
49
|
-
series: String(e[D])
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
} else {
|
|
53
|
-
let t = [...new Set(e.map((e) => String(e[D])))], a = h().domain(t).range(b?.colors || i);
|
|
54
|
-
r = e.map((e) => ({
|
|
55
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
56
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
57
|
-
fill: a(String(e[D])),
|
|
58
|
-
series: String(e[D])
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
} else r = e.map((e, t) => ({
|
|
62
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
63
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
64
|
-
fill: b?.colors && b.colors[t % b.colors.length] || i[t % i.length]
|
|
65
|
-
}));
|
|
66
|
-
} else {
|
|
67
|
-
let t = e[0], n = Object.keys(t), a = n.find((e) => typeof t[e] == "string" || e.toLowerCase().includes("name") || e.toLowerCase().includes("label") || e.toLowerCase().includes("category")) || n[0], o = n.find((e) => e.toLowerCase().includes("size")) || n.find((e) => typeof t[e] == "number" && e !== a) || n[1];
|
|
68
|
-
if (!o) return /* @__PURE__ */ f("div", {
|
|
69
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
70
|
-
style: { height: y },
|
|
71
|
-
children: /* @__PURE__ */ p("div", {
|
|
72
|
-
className: "dc:text-center",
|
|
73
|
-
children: [/* @__PURE__ */ f("div", {
|
|
74
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
75
|
-
children: C("chart.runtime.configError")
|
|
76
|
-
}), /* @__PURE__ */ f("div", {
|
|
77
|
-
className: "dc:text-xs",
|
|
78
|
-
children: C("chart.runtime.configErrorHint.treemapNumeric")
|
|
79
|
-
})]
|
|
80
|
-
})
|
|
81
|
-
});
|
|
82
|
-
r = e.map((e, t) => {
|
|
83
|
-
let n = e[a];
|
|
84
|
-
return n = typeof n == "boolean" ? n ? "Active" : "Inactive" : n === "true" || n === "false" ? n === "true" ? "Active" : "Inactive" : String(n), {
|
|
85
|
-
name: n,
|
|
86
|
-
size: typeof e[o] == "string" ? parseFloat(e[o]) : e[o] || 0,
|
|
87
|
-
fill: b?.colors && b.colors[t % b.colors.length] || i[t % i.length]
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
if (r = r.filter((e) => e.size != null && e.size > 0), r.length === 0) return /* @__PURE__ */ f("div", {
|
|
92
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
93
|
-
style: { height: y },
|
|
94
|
-
children: /* @__PURE__ */ p("div", {
|
|
95
|
-
className: "dc:text-center",
|
|
96
|
-
children: [/* @__PURE__ */ f("div", {
|
|
97
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
98
|
-
children: C("chart.runtime.noValidData")
|
|
99
|
-
}), /* @__PURE__ */ f("div", {
|
|
100
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
101
|
-
children: "No valid data points for treemap chart after transformation"
|
|
102
|
-
})]
|
|
103
|
-
})
|
|
104
|
-
});
|
|
105
|
-
let O = (e) => {
|
|
106
|
-
let { x: t, y: a, width: o, height: c, index: l, name: d, size: m } = e;
|
|
107
|
-
return o < 20 || c < 20 ? null : /* @__PURE__ */ p("g", { children: [/* @__PURE__ */ f("rect", {
|
|
108
|
-
x: t,
|
|
109
|
-
y: a,
|
|
110
|
-
width: o,
|
|
111
|
-
height: c,
|
|
112
|
-
style: {
|
|
113
|
-
fill: r[l]?.fill || b?.colors && b.colors[l % b.colors.length] || i[l % i.length],
|
|
114
|
-
fillOpacity: w === null ? .8 : w === l ? 1 : .6,
|
|
115
|
-
stroke: "#fff",
|
|
116
|
-
strokeWidth: 2,
|
|
117
|
-
cursor: S ? "pointer" : "default",
|
|
118
|
-
pointerEvents: "all"
|
|
119
|
-
},
|
|
120
|
-
onMouseEnter: () => T(l),
|
|
121
|
-
onMouseLeave: () => T(null),
|
|
122
|
-
onClick: S && x ? (e) => {
|
|
123
|
-
e.stopPropagation();
|
|
124
|
-
let t = r[l];
|
|
125
|
-
t && x && x({
|
|
126
|
-
dataPoint: t,
|
|
127
|
-
clickedField: v?.measures?.[0] || u?.yAxis?.[0] || "",
|
|
128
|
-
xValue: d,
|
|
129
|
-
position: {
|
|
130
|
-
x: e.clientX,
|
|
131
|
-
y: e.clientY
|
|
132
|
-
},
|
|
133
|
-
nativeEvent: e
|
|
134
|
-
});
|
|
135
|
-
} : void 0
|
|
136
|
-
}), /* @__PURE__ */ f("foreignObject", {
|
|
137
|
-
x: t,
|
|
138
|
-
y: a,
|
|
139
|
-
width: o,
|
|
140
|
-
height: c,
|
|
141
|
-
style: {
|
|
142
|
-
pointerEvents: "none",
|
|
143
|
-
overflow: "visible"
|
|
144
|
-
},
|
|
145
|
-
children: /* @__PURE__ */ p("div", {
|
|
146
|
-
style: {
|
|
147
|
-
width: "100%",
|
|
148
|
-
height: "100%",
|
|
149
|
-
display: "flex",
|
|
150
|
-
flexDirection: "column",
|
|
151
|
-
alignItems: "center",
|
|
152
|
-
justifyContent: "center",
|
|
153
|
-
padding: "4px",
|
|
154
|
-
boxSizing: "border-box",
|
|
155
|
-
color: "#ffffff",
|
|
156
|
-
textShadow: "0 1px 2px rgba(0,0,0,0.8)",
|
|
157
|
-
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
158
|
-
overflow: "hidden"
|
|
159
|
-
},
|
|
160
|
-
children: [o > 40 && c > 30 && /* @__PURE__ */ f("div", {
|
|
161
|
-
style: {
|
|
162
|
-
fontSize: `${Math.max(10, Math.min(o / 8, c / 8, 16))}px`,
|
|
163
|
-
fontWeight: "600",
|
|
164
|
-
textAlign: "center",
|
|
165
|
-
lineHeight: "1.2",
|
|
166
|
-
marginBottom: o > 60 && c > 45 ? "4px" : "0",
|
|
167
|
-
wordBreak: "break-word",
|
|
168
|
-
hyphens: "auto"
|
|
169
|
-
},
|
|
170
|
-
children: d
|
|
171
|
-
}), o > 60 && c > 45 && /* @__PURE__ */ f("div", {
|
|
172
|
-
style: {
|
|
173
|
-
fontSize: `${Math.max(8, Math.min(o / 10, c / 10, 14))}px`,
|
|
174
|
-
textAlign: "center",
|
|
175
|
-
opacity: .9
|
|
176
|
-
},
|
|
177
|
-
children: n.leftYAxisFormat ? s(m, n.leftYAxisFormat) : typeof m == "number" ? m.toLocaleString() : m
|
|
178
|
-
})]
|
|
179
|
-
})
|
|
180
|
-
})] });
|
|
181
|
-
}, k = r.some((e) => "series" in e) ? [...new Set(r.map((e) => e.series).filter(Boolean))] : [], A = [];
|
|
182
|
-
if (n.showLegend && D) if (d) {
|
|
183
|
-
let t = Math.min(...e.map((e) => {
|
|
184
|
-
let t = e[D];
|
|
185
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
186
|
-
})), r = Math.max(...e.map((e) => {
|
|
187
|
-
let t = e[D];
|
|
188
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
189
|
-
}));
|
|
190
|
-
A = a.map((e, i) => {
|
|
191
|
-
let o = i / (a.length - 1), c = t + (r - t) * o;
|
|
192
|
-
return {
|
|
193
|
-
value: n.leftYAxisFormat ? s(c, n.leftYAxisFormat) : c.toFixed(2),
|
|
194
|
-
type: "rect",
|
|
195
|
-
color: e
|
|
196
|
-
};
|
|
197
|
-
});
|
|
198
|
-
} else k.length > 1 && (A = k.map((e, t) => ({
|
|
199
|
-
value: e,
|
|
200
|
-
type: "rect",
|
|
201
|
-
color: i[t % i.length]
|
|
202
|
-
})));
|
|
203
|
-
let j = n.showLegend && A.length > 0;
|
|
204
|
-
return /* @__PURE__ */ p("div", {
|
|
205
|
-
className: "dc:w-full",
|
|
206
|
-
style: { height: j ? typeof y == "string" && y.includes("%") ? y : typeof y == "number" ? y + 60 : `calc(${y} + 60px)` : y },
|
|
207
|
-
children: [/* @__PURE__ */ f(l, {
|
|
208
|
-
height: j ? "calc(100% - 50px)" : "100%",
|
|
209
|
-
children: /* @__PURE__ */ f(m, {
|
|
210
|
-
data: r,
|
|
211
|
-
dataKey: "size",
|
|
212
|
-
aspectRatio: 4 / 3,
|
|
213
|
-
stroke: "#fff",
|
|
214
|
-
content: /* @__PURE__ */ f(O, {}),
|
|
215
|
-
children: n.showTooltip && /* @__PURE__ */ f(c, { formatter: n.leftYAxisFormat ? (e, t) => [s(e, n.leftYAxisFormat), t] : void 0 })
|
|
216
|
-
})
|
|
217
|
-
}), j && /* @__PURE__ */ f("div", {
|
|
218
|
-
className: "dc:flex dc:justify-center dc:items-center dc:mt-4 dc:pb-2",
|
|
219
|
-
children: d ? /* @__PURE__ */ p("div", {
|
|
220
|
-
className: "dc:flex dc:flex-col dc:items-center",
|
|
221
|
-
children: [/* @__PURE__ */ f("div", {
|
|
222
|
-
className: "dc:text-xs dc:font-semibold text-dc-text-primary dc:mb-2",
|
|
223
|
-
children: D ? E(D) : ""
|
|
224
|
-
}), /* @__PURE__ */ p("div", {
|
|
225
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
226
|
-
children: [
|
|
227
|
-
/* @__PURE__ */ f("span", {
|
|
228
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
229
|
-
children: n.leftYAxisFormat ? s(Math.min(...e.map((e) => {
|
|
230
|
-
let t = e[D];
|
|
231
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
232
|
-
})), n.leftYAxisFormat) : Math.min(...e.map((e) => {
|
|
233
|
-
let t = e[D];
|
|
234
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
235
|
-
})).toFixed(2)
|
|
236
|
-
}),
|
|
237
|
-
/* @__PURE__ */ f("div", {
|
|
238
|
-
className: "dc:h-4 dc:rounded-sm",
|
|
239
|
-
style: {
|
|
240
|
-
width: "200px",
|
|
241
|
-
background: `linear-gradient(to right, ${a.join(", ")})`
|
|
242
|
-
}
|
|
243
|
-
}),
|
|
244
|
-
/* @__PURE__ */ f("span", {
|
|
245
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
246
|
-
children: n.leftYAxisFormat ? s(Math.max(...e.map((e) => {
|
|
247
|
-
let t = e[D];
|
|
248
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
249
|
-
})), n.leftYAxisFormat) : Math.max(...e.map((e) => {
|
|
250
|
-
let t = e[D];
|
|
251
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
252
|
-
})).toFixed(2)
|
|
253
|
-
})
|
|
254
|
-
]
|
|
255
|
-
})]
|
|
256
|
-
}) : /* @__PURE__ */ f("div", {
|
|
257
|
-
className: "dc:flex dc:flex-wrap dc:justify-center dc:gap-4",
|
|
258
|
-
children: A.map((e, t) => /* @__PURE__ */ p("div", {
|
|
259
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
260
|
-
children: [/* @__PURE__ */ f("div", {
|
|
261
|
-
className: "dc:w-3 dc:h-3 rounded-xs",
|
|
262
|
-
style: { backgroundColor: e.color }
|
|
263
|
-
}), /* @__PURE__ */ f("span", {
|
|
264
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
265
|
-
children: e.value
|
|
266
|
-
})]
|
|
267
|
-
}, t))
|
|
268
|
-
})
|
|
269
|
-
})]
|
|
270
|
-
});
|
|
271
|
-
} catch (e) {
|
|
272
|
-
return /* @__PURE__ */ f("div", {
|
|
273
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
274
|
-
style: { height: y },
|
|
275
|
-
children: /* @__PURE__ */ p("div", {
|
|
276
|
-
className: "dc:text-center",
|
|
277
|
-
children: [
|
|
278
|
-
/* @__PURE__ */ f("div", {
|
|
279
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
280
|
-
children: C("chart.runtime.chartError", { chartType: "TreeMap Chart" })
|
|
281
|
-
}),
|
|
282
|
-
/* @__PURE__ */ f("div", {
|
|
283
|
-
className: "dc:text-xs dc:mb-2",
|
|
284
|
-
children: e instanceof Error ? e.message : C("chart.runtime.unknownError")
|
|
285
|
-
}),
|
|
286
|
-
/* @__PURE__ */ f("div", {
|
|
287
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
288
|
-
children: C("chart.runtime.checkConfig")
|
|
289
|
-
})
|
|
290
|
-
]
|
|
291
|
-
})
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
//#endregion
|
|
296
|
-
export { _ as n, v as t };
|
|
297
|
-
|
|
298
|
-
//# sourceMappingURL=chart-tree-map-Bi4axCvh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-tree-map-Bi4axCvh.js","names":[],"sources":["../../../src/client/components/charts/TreeMapChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { Treemap } from 'recharts'\nimport { scaleQuantize, scaleOrdinal } from 'd3'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_COLORS_GRADIENT } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst TreeMapChart = React.memo(function TreeMapChart({\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 [hoveredIndex, setHoveredIndex] = useState<number | 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 showTooltip: displayConfig?.showTooltip ?? true,\n showLegend: displayConfig?.showLegend ?? 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.treemap')}</div>\n </div>\n </div>\n )\n }\n\n let treemapData: Array<{name: string, size: number, fill?: string, series?: string}>\n let isNumericSeries = false\n let seriesField: string | undefined\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 // Size field\n seriesField = Array.isArray(chartConfig.series) ? chartConfig.series[0] : chartConfig.series // Color grouping field\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n \n if (seriesField) {\n // Check if series field is numeric for color scaling\n const seriesValues = data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }).filter(val => !isNaN(val))\n \n isNumericSeries = seriesValues.length === data.length && seriesValues.every(val => typeof val === 'number')\n \n \n if (isNumericSeries) {\n // Use D3 quantize scale for better color distribution with small ranges\n const minValue = Math.min(...seriesValues)\n const maxValue = Math.max(...seriesValues)\n \n // Create D3 quantize color scale - maps continuous data to discrete color bands\n const colorScale = scaleQuantize<string>()\n .domain([minValue, maxValue])\n .range(CHART_COLORS_GRADIENT)\n \n treemapData = data.map((item) => {\n const seriesValue = typeof item[seriesField!] === 'string' \n ? parseFloat(item[seriesField!]) \n : item[seriesField!]\n \n const color = colorScale(seriesValue)\n \n return {\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: color,\n series: String(item[seriesField!])\n }\n })\n } else {\n // Use D3 ordinal color scale for categorical series\n const uniqueSeriesValues = [...new Set(data.map(item => String(item[seriesField!])))]\n const colorScale = scaleOrdinal<string>()\n .domain(uniqueSeriesValues)\n .range(colorPalette?.colors || CHART_COLORS)\n \n treemapData = data.map((item) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: colorScale(String(item[seriesField!])),\n series: String(item[seriesField!])\n }))\n }\n } else {\n // No series grouping - use index-based colors\n treemapData = data.map((item, index) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: 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 }\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 size - look for 'size' field first, then any numeric\n const sizeField = keys.find(key => key.toLowerCase().includes('size')) ||\n keys.find(key => \n typeof firstRow[key] === 'number' && key !== nameField\n ) || keys[1]\n\n if (!sizeField) {\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.treemapNumeric')}</div>\n </div>\n </div>\n )\n }\n\n // Transform data for treemap chart\n treemapData = 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 size: typeof item[sizeField] === 'string' \n ? parseFloat(item[sizeField]) \n : (item[sizeField] || 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 and ensure positive sizes\n treemapData = treemapData.filter(item => item.size != null && item.size > 0)\n \n if (treemapData.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 treemap chart after transformation</div>\n </div>\n </div>\n )\n }\n\n // Custom content renderer for treemap cells with HTML overlays\n const CustomizedContent = (props: any) => {\n const { x, y, width, height, index, name, size } = props\n\n if (width < 20 || height < 20) return null // Don't render content for very small cells\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n const cellData = treemapData[index]\n if (cellData && onDataPointClick) {\n // Use query measures for proper field name (chartConfig.yAxis may contain display labels)\n const measureField = queryObject?.measures?.[0] || chartConfig?.yAxis?.[0] || ''\n onDataPointClick({\n dataPoint: cellData,\n clickedField: measureField,\n xValue: name,\n position: { x: event.clientX, y: event.clientY },\n nativeEvent: event\n })\n }\n }\n\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n style={{\n fill: treemapData[index]?.fill || ((colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]),\n fillOpacity: hoveredIndex !== null ? (hoveredIndex === index ? 1 : 0.6) : 0.8,\n stroke: '#fff',\n strokeWidth: 2,\n cursor: drillEnabled ? 'pointer' : 'default',\n pointerEvents: 'all' // Ensure rect captures click events\n }}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n onClick={drillEnabled && onDataPointClick ? handleClick : undefined}\n />\n <foreignObject \n x={x} \n y={y} \n width={width} \n height={height}\n style={{ pointerEvents: 'none', overflow: 'visible' }}\n >\n <div \n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px',\n boxSizing: 'border-box',\n color: '#ffffff',\n textShadow: '0 1px 2px rgba(0,0,0,0.8)',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n overflow: 'hidden'\n }}\n >\n {width > 40 && height > 30 && (\n <div \n style={{\n fontSize: `${Math.max(10, Math.min(width / 8, height / 8, 16))}px`,\n fontWeight: '600',\n textAlign: 'center',\n lineHeight: '1.2',\n marginBottom: width > 60 && height > 45 ? '4px' : '0',\n wordBreak: 'break-word',\n hyphens: 'auto'\n }}\n >\n {name}\n </div>\n )}\n {width > 60 && height > 45 && (\n <div\n style={{\n fontSize: `${Math.max(8, Math.min(width / 10, height / 10, 14))}px`,\n textAlign: 'center',\n opacity: 0.9\n }}\n >\n {safeDisplayConfig.leftYAxisFormat\n ? formatAxisValue(size, safeDisplayConfig.leftYAxisFormat)\n : (typeof size === 'number' ? size.toLocaleString() : size)\n }\n </div>\n )}\n </div>\n </foreignObject>\n </g>\n )\n }\n\n // Check if we have series data for legend\n const hasSeriesData = treemapData.some(item => 'series' in item)\n const uniqueSeries = hasSeriesData \n ? [...new Set(treemapData.map(item => item.series).filter(Boolean))]\n : []\n \n // For numeric series, create a legend showing the color scale\n let legendPayload: any[] = []\n if (safeDisplayConfig.showLegend && seriesField) {\n \n if (isNumericSeries) {\n // Create color scale legend for numeric values\n const minValue = Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n const maxValue = Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n \n \n // Create legend entries showing color scale\n legendPayload = CHART_COLORS_GRADIENT.map((color, index) => {\n const ratio = index / (CHART_COLORS_GRADIENT.length - 1)\n const value = minValue + (maxValue - minValue) * ratio\n return {\n value: safeDisplayConfig.leftYAxisFormat\n ? formatAxisValue(value, safeDisplayConfig.leftYAxisFormat)\n : value.toFixed(2),\n type: 'rect',\n color: color\n }\n })\n } else if (uniqueSeries.length > 1) {\n // Use categorical legend for non-numeric series\n legendPayload = uniqueSeries.map((series, index) => ({\n value: series,\n type: 'rect',\n color: CHART_COLORS[index % CHART_COLORS.length]\n }))\n }\n \n }\n\n // Calculate height adjustment for legend\n const hasLegend = safeDisplayConfig.showLegend && legendPayload.length > 0\n const adjustedHeight = hasLegend \n ? (typeof height === 'string' && height.includes('%') \n ? height \n : typeof height === 'number' \n ? height + 60 \n : `calc(${height} + 60px)`)\n : height\n\n return (\n <div className=\"dc:w-full\" style={{ height: adjustedHeight }}>\n <ChartContainer height={hasLegend ? `calc(100% - 50px)` : \"100%\"}>\n <Treemap\n data={treemapData}\n dataKey=\"size\"\n aspectRatio={4/3}\n stroke=\"#fff\"\n content={<CustomizedContent />}\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 </Treemap>\n </ChartContainer>\n \n {/* Custom Legend outside ChartContainer */}\n {hasLegend && (\n <div className=\"dc:flex dc:justify-center dc:items-center dc:mt-4 dc:pb-2\">\n {isNumericSeries ? (\n // Gradient legend for numeric series\n <div className=\"dc:flex dc:flex-col dc:items-center\">\n <div className=\"dc:text-xs dc:font-semibold text-dc-text-primary dc:mb-2\">\n {seriesField ? getFieldLabel(seriesField) : ''}\n </div>\n <div className=\"dc:flex dc:items-center dc:gap-2\">\n <span className=\"dc:text-xs text-dc-text-muted\">\n {safeDisplayConfig.leftYAxisFormat\n ? formatAxisValue(Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })), safeDisplayConfig.leftYAxisFormat)\n : Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)\n }\n </span>\n <div\n className=\"dc:h-4 dc:rounded-sm\"\n style={{\n width: '200px',\n background: `linear-gradient(to right, ${CHART_COLORS_GRADIENT.join(', ')})`\n }}\n />\n <span className=\"dc:text-xs text-dc-text-muted\">\n {safeDisplayConfig.leftYAxisFormat\n ? formatAxisValue(Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })), safeDisplayConfig.leftYAxisFormat)\n : Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)\n }\n </span>\n </div>\n </div>\n ) : (\n // Discrete legend for categorical series\n <div className=\"dc:flex dc:flex-wrap dc:justify-center dc:gap-4\">\n {legendPayload.map((item, index) => (\n <div key={index} className=\"dc:flex dc:items-center dc:gap-2\">\n <div\n className=\"dc:w-3 dc:h-3 rounded-xs\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"dc:text-xs text-dc-text-muted\">\n {item.value}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n } catch (error) {\n // 'TreeMapChart 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: 'TreeMap 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 TreeMapChart"],"mappings":"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"}
|