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,271 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { D as t, _ as n, i as r, k as i, n as a, o as ee, w as o, y as s } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { a as c, c as l, l as u, o as d, s as f } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import p, { useMemo as m, useState as h } from "react";
|
|
5
|
-
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
6
|
-
import { Bar as y, CartesianGrid as b, Cell as x, ComposedChart as S, Legend as te, Line as C, XAxis as ne, YAxis as w } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/BarChart.tsx
|
|
8
|
-
var T = /* @__PURE__ */ e({ default: () => E }), E = p.memo(function({ data: e, chartConfig: p, displayConfig: T = {}, queryObject: E, height: D = "100%", colorPalette: O, onDataPointClick: k, drillEnabled: A }) {
|
|
9
|
-
let { t: j } = i(), [M, N] = h(null), P = n(), F = T?.stackType ?? (T?.stacked ? "normal" : "none"), I = F !== "none", L = F === "percent", R = {
|
|
10
|
-
showLegend: T?.showLegend ?? !0,
|
|
11
|
-
showGrid: T?.showGrid ?? !0,
|
|
12
|
-
showTooltip: T?.showTooltip ?? !0
|
|
13
|
-
}, re = T?.showAllXLabels ?? !0, z = T?.leftYAxisFormat, B = T?.rightYAxisFormat, { xAxisField: V, yAxisFields: H, seriesFields: U, configError: W } = m(() => {
|
|
14
|
-
let e, t = [], n = [], r = null;
|
|
15
|
-
return p?.xAxis && p?.yAxis ? (e = Array.isArray(p.xAxis) ? p.xAxis[0] : p.xAxis, t = Array.isArray(p.yAxis) ? p.yAxis : [p.yAxis], n = p.series || []) : p?.x && p?.y ? (e = p.x, t = Array.isArray(p.y) ? p.y : [p.y]) : r = "Invalid or missing chart axis configuration", !r && (!e || !t || t.length === 0) && (r = "Missing required X-axis or Y-axis fields"), {
|
|
16
|
-
xAxisField: e,
|
|
17
|
-
yAxisFields: t,
|
|
18
|
-
seriesFields: n,
|
|
19
|
-
configError: r
|
|
20
|
-
};
|
|
21
|
-
}, [p]), { data: G, seriesKeys: K } = m(() => W || !e || e.length === 0 || !V ? {
|
|
22
|
-
data: [],
|
|
23
|
-
seriesKeys: []
|
|
24
|
-
} : t(e, V, H, E, U, P), [
|
|
25
|
-
e,
|
|
26
|
-
V,
|
|
27
|
-
H,
|
|
28
|
-
E,
|
|
29
|
-
U,
|
|
30
|
-
P,
|
|
31
|
-
W
|
|
32
|
-
]), q = m(() => p?.yAxisAssignment || {}, [p?.yAxisAssignment]), J = m(() => {
|
|
33
|
-
let e = {};
|
|
34
|
-
return H.forEach((t) => {
|
|
35
|
-
let n = P(t);
|
|
36
|
-
e[n] = t;
|
|
37
|
-
}), e;
|
|
38
|
-
}, [H, P]), Y = H.some((e) => q[e] === "right"), X = H.filter((e) => (q[e] || "left") === "left"), Z = H.filter((e) => q[e] === "right"), { chartData: Q, skippedCount: $ } = m(() => {
|
|
39
|
-
if (G.length === 0 || K.length === 0) return {
|
|
40
|
-
chartData: [],
|
|
41
|
-
skippedCount: 0
|
|
42
|
-
};
|
|
43
|
-
let e = G.filter((e) => K.some((t) => o(e[t])));
|
|
44
|
-
return {
|
|
45
|
-
chartData: e,
|
|
46
|
-
skippedCount: G.length - e.length
|
|
47
|
-
};
|
|
48
|
-
}, [G, K]);
|
|
49
|
-
try {
|
|
50
|
-
if (!e || e.length === 0) return /* @__PURE__ */ _("div", {
|
|
51
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
52
|
-
style: { height: D },
|
|
53
|
-
children: /* @__PURE__ */ v("div", {
|
|
54
|
-
className: "dc:text-center",
|
|
55
|
-
children: [/* @__PURE__ */ _("div", {
|
|
56
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
57
|
-
children: j("chart.runtime.noData")
|
|
58
|
-
}), /* @__PURE__ */ _("div", {
|
|
59
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
60
|
-
children: "No data points to display in bar chart"
|
|
61
|
-
})]
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
if (W) return /* @__PURE__ */ _("div", {
|
|
65
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
66
|
-
style: { height: D },
|
|
67
|
-
children: /* @__PURE__ */ v("div", {
|
|
68
|
-
className: "dc:text-center",
|
|
69
|
-
children: [/* @__PURE__ */ _("div", {
|
|
70
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
71
|
-
children: j("chart.runtime.configError")
|
|
72
|
-
}), /* @__PURE__ */ _("div", {
|
|
73
|
-
className: "dc:text-xs",
|
|
74
|
-
children: W
|
|
75
|
-
})]
|
|
76
|
-
})
|
|
77
|
-
});
|
|
78
|
-
let t = I && !Y, n = L && !Y, i = n ? "expand" : void 0, o = K.length === 1 && Q.some((e) => {
|
|
79
|
-
let t = e[K[0]];
|
|
80
|
-
return typeof t == "number" && t < 0;
|
|
81
|
-
}), p = K.length === 1 && !o && !U.length && Q.length > 1, m = R.showLegend, h = {
|
|
82
|
-
...r,
|
|
83
|
-
left: 40,
|
|
84
|
-
right: Y ? 40 : 20
|
|
85
|
-
}, E = d(c(T?.target || ""), Q.length), F = Q;
|
|
86
|
-
return E.length > 0 && (F = Q.map((e, t) => ({
|
|
87
|
-
...e,
|
|
88
|
-
__target: E[t] || null
|
|
89
|
-
}))), !Q || Q.length === 0 ? /* @__PURE__ */ _("div", {
|
|
90
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
91
|
-
style: { height: D },
|
|
92
|
-
children: /* @__PURE__ */ v("div", {
|
|
93
|
-
className: "dc:text-center",
|
|
94
|
-
children: [/* @__PURE__ */ _("div", {
|
|
95
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
96
|
-
children: j("chart.runtime.noValidData")
|
|
97
|
-
}), /* @__PURE__ */ _("div", {
|
|
98
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
99
|
-
children: "No valid data points for bar chart after transformation"
|
|
100
|
-
})]
|
|
101
|
-
})
|
|
102
|
-
}) : /* @__PURE__ */ v("div", {
|
|
103
|
-
className: "dc:relative dc:w-full",
|
|
104
|
-
style: { height: D },
|
|
105
|
-
children: [/* @__PURE__ */ _(u, {
|
|
106
|
-
height: $ > 0 ? "calc(100% - 20px)" : "100%",
|
|
107
|
-
children: /* @__PURE__ */ v(S, {
|
|
108
|
-
data: F,
|
|
109
|
-
margin: h,
|
|
110
|
-
stackOffset: i,
|
|
111
|
-
accessibilityLayer: !1,
|
|
112
|
-
children: [
|
|
113
|
-
R.showGrid && /* @__PURE__ */ _(b, {
|
|
114
|
-
strokeDasharray: "3 3",
|
|
115
|
-
style: { pointerEvents: "none" }
|
|
116
|
-
}),
|
|
117
|
-
/* @__PURE__ */ _(ne, {
|
|
118
|
-
dataKey: "name",
|
|
119
|
-
type: "category",
|
|
120
|
-
tick: /* @__PURE__ */ _(f, {}),
|
|
121
|
-
height: 60,
|
|
122
|
-
interval: re ? 0 : void 0
|
|
123
|
-
}),
|
|
124
|
-
/* @__PURE__ */ _(w, {
|
|
125
|
-
yAxisId: "left",
|
|
126
|
-
orientation: "left",
|
|
127
|
-
tick: { fontSize: 12 },
|
|
128
|
-
tickFormatter: n ? (e) => `${(e * 100).toFixed(0)}%` : z ? (e) => s(e, z) : void 0,
|
|
129
|
-
domain: n ? [0, 1] : void 0,
|
|
130
|
-
label: n ? void 0 : X.length > 0 ? {
|
|
131
|
-
value: z?.label || P(X[0]),
|
|
132
|
-
angle: -90,
|
|
133
|
-
position: "left",
|
|
134
|
-
style: {
|
|
135
|
-
textAnchor: "middle",
|
|
136
|
-
fontSize: "12px"
|
|
137
|
-
}
|
|
138
|
-
} : void 0
|
|
139
|
-
}),
|
|
140
|
-
Y && /* @__PURE__ */ _(w, {
|
|
141
|
-
yAxisId: "right",
|
|
142
|
-
orientation: "right",
|
|
143
|
-
tick: { fontSize: 12 },
|
|
144
|
-
tickFormatter: B ? (e) => s(e, B) : void 0,
|
|
145
|
-
label: Z.length > 0 ? {
|
|
146
|
-
value: B?.label || P(Z[0]),
|
|
147
|
-
angle: 90,
|
|
148
|
-
position: "right",
|
|
149
|
-
style: {
|
|
150
|
-
textAnchor: "middle",
|
|
151
|
-
fontSize: "12px"
|
|
152
|
-
}
|
|
153
|
-
} : void 0
|
|
154
|
-
}),
|
|
155
|
-
R.showTooltip && /* @__PURE__ */ _(l, { formatter: (e, t) => {
|
|
156
|
-
if (e == null) return ["No data", t];
|
|
157
|
-
if (t === "Target") return [s(e, z), "Target Value"];
|
|
158
|
-
if (n && typeof e == "number") return [`${(e * 100).toFixed(1)}%`, t];
|
|
159
|
-
let r = J[t];
|
|
160
|
-
return [s(e, (r && q[r] === "right" ? "right" : "left") == "right" ? B : z), t];
|
|
161
|
-
} }),
|
|
162
|
-
m && /* @__PURE__ */ _(te, {
|
|
163
|
-
wrapperStyle: {
|
|
164
|
-
fontSize: "12px",
|
|
165
|
-
paddingTop: "25px"
|
|
166
|
-
},
|
|
167
|
-
iconType: "rect",
|
|
168
|
-
iconSize: 8,
|
|
169
|
-
layout: "horizontal",
|
|
170
|
-
align: "center",
|
|
171
|
-
verticalAlign: "bottom",
|
|
172
|
-
onMouseEnter: (e) => N(String(e.dataKey || "")),
|
|
173
|
-
onMouseLeave: () => N(null)
|
|
174
|
-
}),
|
|
175
|
-
K.map((e, n) => {
|
|
176
|
-
let r = J[e];
|
|
177
|
-
return /* @__PURE__ */ v(y, {
|
|
178
|
-
dataKey: e,
|
|
179
|
-
yAxisId: r && q[r] === "right" ? "right" : "left",
|
|
180
|
-
stackId: t ? "stack" : void 0,
|
|
181
|
-
fill: o ? ee : O?.colors && O.colors[n % O.colors.length] || a[n % a.length],
|
|
182
|
-
fillOpacity: M ? M === e ? 1 : .3 : 1,
|
|
183
|
-
cursor: A ? "pointer" : void 0,
|
|
184
|
-
onClick: (t, n, i) => {
|
|
185
|
-
k && A && t && k({
|
|
186
|
-
dataPoint: F[n] || t,
|
|
187
|
-
clickedField: r || e,
|
|
188
|
-
xValue: t.name,
|
|
189
|
-
position: {
|
|
190
|
-
x: i.clientX,
|
|
191
|
-
y: i.clientY
|
|
192
|
-
},
|
|
193
|
-
nativeEvent: i
|
|
194
|
-
});
|
|
195
|
-
},
|
|
196
|
-
children: [o && Q.map((t, n) => {
|
|
197
|
-
let r = t[e];
|
|
198
|
-
return /* @__PURE__ */ _(x, {
|
|
199
|
-
fill: typeof r == "number" && r < 0 ? "#ef4444" : "#10b981",
|
|
200
|
-
fillOpacity: M ? M === e ? 1 : .3 : 1
|
|
201
|
-
}, `cell-${n}`);
|
|
202
|
-
}), p && Q.map((t, n) => {
|
|
203
|
-
let r = O?.colors || a;
|
|
204
|
-
return /* @__PURE__ */ _(x, {
|
|
205
|
-
fill: r[n % r.length],
|
|
206
|
-
fillOpacity: M ? M === e ? 1 : .3 : 1
|
|
207
|
-
}, `cat-${n}`);
|
|
208
|
-
})]
|
|
209
|
-
}, e);
|
|
210
|
-
}),
|
|
211
|
-
E.length > 0 && /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(C, {
|
|
212
|
-
type: "monotone",
|
|
213
|
-
dataKey: "__target",
|
|
214
|
-
yAxisId: "left",
|
|
215
|
-
stroke: "#ffffff",
|
|
216
|
-
strokeWidth: 2,
|
|
217
|
-
dot: !1,
|
|
218
|
-
activeDot: !1,
|
|
219
|
-
connectNulls: !1
|
|
220
|
-
}), /* @__PURE__ */ _(C, {
|
|
221
|
-
type: "monotone",
|
|
222
|
-
dataKey: "__target",
|
|
223
|
-
yAxisId: "left",
|
|
224
|
-
name: "Target",
|
|
225
|
-
stroke: "#8B5CF6",
|
|
226
|
-
strokeWidth: 2,
|
|
227
|
-
strokeDasharray: "2 3",
|
|
228
|
-
dot: !1,
|
|
229
|
-
activeDot: !1,
|
|
230
|
-
connectNulls: !1
|
|
231
|
-
})] })
|
|
232
|
-
]
|
|
233
|
-
})
|
|
234
|
-
}), $ > 0 && /* @__PURE__ */ v("div", {
|
|
235
|
-
className: "dc:text-xs text-dc-text-muted dc:text-center dc:mt-1",
|
|
236
|
-
children: [
|
|
237
|
-
$,
|
|
238
|
-
" data point",
|
|
239
|
-
$ === 1 ? "" : "s",
|
|
240
|
-
" with no values hidden"
|
|
241
|
-
]
|
|
242
|
-
})]
|
|
243
|
-
});
|
|
244
|
-
} catch (e) {
|
|
245
|
-
return /* @__PURE__ */ _("div", {
|
|
246
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
247
|
-
style: { height: D },
|
|
248
|
-
children: /* @__PURE__ */ v("div", {
|
|
249
|
-
className: "dc:text-center",
|
|
250
|
-
children: [
|
|
251
|
-
/* @__PURE__ */ _("div", {
|
|
252
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
253
|
-
children: j("chart.runtime.chartError", { chartType: "Bar Chart" })
|
|
254
|
-
}),
|
|
255
|
-
/* @__PURE__ */ _("div", {
|
|
256
|
-
className: "dc:text-xs dc:mb-2",
|
|
257
|
-
children: e instanceof Error ? e.message : j("chart.runtime.unknownError")
|
|
258
|
-
}),
|
|
259
|
-
/* @__PURE__ */ _("div", {
|
|
260
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
261
|
-
children: j("chart.runtime.checkConfig")
|
|
262
|
-
})
|
|
263
|
-
]
|
|
264
|
-
})
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
//#endregion
|
|
269
|
-
export { T as n, E as t };
|
|
270
|
-
|
|
271
|
-
//# sourceMappingURL=chart-bar-KddciGDv.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-bar-KddciGDv.js","names":[],"sources":["../../../src/client/components/charts/BarChart.tsx"],"sourcesContent":["import React, { useState, useMemo } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { ComposedChart, Bar, Line, XAxis, YAxis, CartesianGrid, Cell, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport AngledXAxisTick from './AngledXAxisTick'\nimport { CHART_COLORS, POSITIVE_COLOR, NEGATIVE_COLOR, CHART_MARGINS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries, isValidNumericValue, formatAxisValue } from '../../utils/chartUtils'\nimport { parseTargetValues, spreadTargetValues } from '../../utils/targetUtils'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst BarChart = React.memo(function BarChart({\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 // Determine stacking from stackType (new) or stacked (legacy)\n const stackType = displayConfig?.stackType ?? (displayConfig?.stacked ? 'normal' : 'none')\n const shouldStack = stackType !== 'none'\n const isPercentStack = stackType === 'percent'\n\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n const showAllXLabels = displayConfig?.showAllXLabels ?? true\n\n // Extract axis format configs\n const leftYAxisFormat = displayConfig?.leftYAxisFormat\n const rightYAxisFormat = displayConfig?.rightYAxisFormat\n\n // Validate chartConfig - support both legacy and new formats\n // Do validation but don't early return yet (hooks must come first)\n const { xAxisField, yAxisFields, seriesFields, configError } = useMemo(() => {\n let xAxisField: string | undefined\n let yAxisFields: string[] = []\n let seriesFields: string[] = []\n let configError: string | null = null\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 configError = 'Invalid or missing chart axis configuration'\n }\n\n if (!configError && (!xAxisField || !yAxisFields || yAxisFields.length === 0)) {\n configError = 'Missing required X-axis or Y-axis fields'\n }\n\n return { xAxisField, yAxisFields, seriesFields, configError }\n }, [chartConfig])\n\n // Transform data (will be empty arrays if config is invalid)\n const { data: transformedData, seriesKeys } = useMemo(() => {\n if (configError || !data || data.length === 0 || !xAxisField) {\n return { data: [], seriesKeys: [] }\n }\n return transformChartDataWithSeries(\n data,\n xAxisField,\n yAxisFields,\n queryObject,\n seriesFields,\n getFieldLabel\n )\n }, [data, xAxisField, yAxisFields, queryObject, seriesFields, getFieldLabel, configError])\n\n // Dual Y-axis support: extract yAxisAssignment from chartConfig (memoized to prevent object recreation)\n const yAxisAssignment = useMemo(() =>\n chartConfig?.yAxisAssignment || {},\n [chartConfig?.yAxisAssignment]\n )\n\n // Build mapping from series key (label) to original field name\n const seriesKeyToField: Record<string, string> = useMemo(() => {\n const mapping: Record<string, string> = {}\n yAxisFields.forEach((field) => {\n const label = getFieldLabel(field)\n mapping[label] = field\n })\n return mapping\n }, [yAxisFields, getFieldLabel])\n\n // Determine if we need a right Y-axis\n const hasRightAxis = yAxisFields.some((field) => yAxisAssignment[field] === 'right')\n\n // Get fields for left and right axes for labels\n const leftAxisFields = yAxisFields.filter((f) => (yAxisAssignment[f] || 'left') === 'left')\n const rightAxisFields = yAxisFields.filter((f) => yAxisAssignment[f] === 'right')\n\n // Null handling: Filter out data points where ALL measure values are null\n // This prevents rendering empty bars and makes the chart clearer\n const { chartData, skippedCount } = useMemo(() => {\n if (transformedData.length === 0 || seriesKeys.length === 0) {\n return { chartData: [], skippedCount: 0 }\n }\n const filtered = transformedData.filter(row => {\n // Keep the row if at least one series has a valid numeric value\n return seriesKeys.some(key => isValidNumericValue(row[key]))\n })\n const skipped = transformedData.length - filtered.length\n return { chartData: filtered, skippedCount: skipped }\n }, [transformedData, seriesKeys])\n\n // Now handle early returns AFTER all hooks\n try {\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\">No data points to display in bar chart</div>\n </div>\n </div>\n )\n }\n\n if (configError) {\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\">{configError}</div>\n </div>\n </div>\n )\n }\n\n // Determine stack offset for percentage stacking\n // Disable stacking when dual Y-axis is used (bars on different axes can't be stacked)\n const effectiveShouldStack = shouldStack && !hasRightAxis\n const effectiveIsPercentStack = isPercentStack && !hasRightAxis\n const stackOffset = effectiveIsPercentStack ? 'expand' as const : undefined\n\n // Check if we should use positive/negative coloring\n // This is enabled when we have single series data with mixed positive/negative values\n const usePositiveNegativeColoring = seriesKeys.length === 1 && chartData.some(row => {\n const value = row[seriesKeys[0]]\n return typeof value === 'number' && value < 0\n })\n\n // Color each bar by its x-axis category when there's a single measure and no series dimension.\n // This gives each category a distinct color without needing to abuse the series field.\n const useColorByCategory = seriesKeys.length === 1\n && !usePositiveNegativeColoring\n && !seriesFields.length\n && chartData.length > 1\n\n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend\n\n // Use custom chart margins with extra space for Y-axis labels\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40, // Space for left Y-axis label\n right: hasRightAxis ? 40 : 20 // Extra space for right Y-axis label if needed\n }\n \n // Process target values and add to chart data\n const targetValues = parseTargetValues(displayConfig?.target || '')\n const spreadTargets = spreadTargetValues(targetValues, chartData.length)\n \n // Add target data to chart data if targets exist\n let enhancedChartData = chartData\n if (spreadTargets.length > 0) {\n enhancedChartData = chartData.map((dataPoint, index) => ({\n ...dataPoint,\n __target: spreadTargets[index] || null\n }))\n }\n \n // Validate transformed data\n if (!chartData || chartData.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 bar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"dc:relative dc:w-full\" style={{ height }}>\n <ChartContainer height={skippedCount > 0 ? `calc(100% - 20px)` : \"100%\"}>\n <ComposedChart data={enhancedChartData} margin={chartMargins} stackOffset={stackOffset} accessibilityLayer={false}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" style={{ pointerEvents: 'none' }} />\n )}\n <XAxis\n dataKey=\"name\"\n type=\"category\"\n tick={<AngledXAxisTick />}\n height={60}\n interval={showAllXLabels ? 0 : undefined}\n />\n <YAxis\n yAxisId=\"left\"\n orientation=\"left\"\n tick={{ fontSize: 12 }}\n tickFormatter={\n effectiveIsPercentStack\n ? (v) => `${(v * 100).toFixed(0)}%`\n : leftYAxisFormat\n ? (value) => formatAxisValue(value, leftYAxisFormat)\n : undefined\n }\n domain={effectiveIsPercentStack ? [0, 1] : undefined}\n label={\n effectiveIsPercentStack\n ? undefined\n : leftAxisFields.length > 0\n ? {\n value: leftYAxisFormat?.label || getFieldLabel(leftAxisFields[0]),\n angle: -90,\n position: 'left',\n style: { textAnchor: 'middle', fontSize: '12px' }\n }\n : undefined\n }\n />\n {hasRightAxis && (\n <YAxis\n yAxisId=\"right\"\n orientation=\"right\"\n tick={{ fontSize: 12 }}\n tickFormatter={rightYAxisFormat ? (value) => formatAxisValue(value, rightYAxisFormat) : undefined}\n label={\n rightAxisFields.length > 0\n ? {\n value: rightYAxisFormat?.label || getFieldLabel(rightAxisFields[0]),\n angle: 90,\n position: 'right',\n style: { textAnchor: 'middle', fontSize: '12px' }\n }\n : undefined\n }\n />\n )}\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip\n formatter={(value: any, name: any) => {\n // Handle null values in tooltip\n if (value === null || value === undefined) {\n return ['No data', name]\n }\n if (name === 'Target') {\n // Use left Y-axis format for target values\n return [formatAxisValue(value, leftYAxisFormat), 'Target Value']\n }\n // Format as percentage when using percent stacking\n if (effectiveIsPercentStack && typeof value === 'number') {\n return [`${(value * 100).toFixed(1)}%`, name]\n }\n // Determine which axis format to use based on series name\n const originalField = seriesKeyToField[name]\n const axisId = originalField && yAxisAssignment[originalField] === 'right' ? 'right' : 'left'\n const formatConfig = axisId === 'right' ? rightYAxisFormat : leftYAxisFormat\n return [formatAxisValue(value, formatConfig), name]\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '25px' }}\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 // Look up the original field name to get its axis assignment\n const originalField = seriesKeyToField[seriesKey]\n const axisId = originalField && yAxisAssignment[originalField] === 'right' ? 'right' : 'left'\n return (\n <Bar\n key={seriesKey}\n dataKey={seriesKey}\n yAxisId={axisId}\n stackId={effectiveShouldStack ? 'stack' : undefined}\n fill={\n usePositiveNegativeColoring\n ? POSITIVE_COLOR\n : (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) ||\n CHART_COLORS[index % CHART_COLORS.length]\n }\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n cursor={drillEnabled ? 'pointer' : undefined}\n onClick={(barData: any, dataIndex: number, event: React.MouseEvent) => {\n if (onDataPointClick && drillEnabled && barData) {\n onDataPointClick({\n dataPoint: enhancedChartData[dataIndex] || barData,\n clickedField: originalField || seriesKey,\n xValue: barData.name,\n position: { x: event.clientX, y: event.clientY },\n nativeEvent: event\n })\n }\n }}\n >\n {usePositiveNegativeColoring &&\n chartData.map((entry, entryIndex) => {\n const value = entry[seriesKey]\n const fillColor = typeof value === 'number' && value < 0 ? NEGATIVE_COLOR : POSITIVE_COLOR\n return (\n <Cell\n key={`cell-${entryIndex}`}\n fill={fillColor}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n )\n })}\n {useColorByCategory &&\n chartData.map((_entry, entryIndex) => {\n const colors = colorPalette?.colors || CHART_COLORS\n return (\n <Cell\n key={`cat-${entryIndex}`}\n fill={colors[entryIndex % colors.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n )\n })}\n </Bar>\n )\n })}\n {spreadTargets.length > 0 && (\n <>\n {/* White background line */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n yAxisId=\"left\"\n stroke=\"#ffffff\"\n strokeWidth={2}\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n {/* Grey dashed line on top */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n yAxisId=\"left\"\n name=\"Target\"\n stroke=\"#8B5CF6\"\n strokeWidth={2}\n strokeDasharray=\"2 3\"\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n </>\n )}\n </ComposedChart>\n </ChartContainer>\n {skippedCount > 0 && (\n <div className=\"dc:text-xs text-dc-text-muted dc:text-center dc:mt-1\">\n {skippedCount} data point{skippedCount !== 1 ? 's' : ''} with no values hidden\n </div>\n )}\n </div>\n )\n } catch (error) {\n // 'BarChart 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: '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 BarChart"],"mappings":"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"}
|
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, T as n, _ as r, g as i, i as a, k as o, m as s, n as c, r as l, u, w as d, x as f, y as p } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import m, { useCallback as h, useEffect as g, useLayoutEffect as _, useMemo as v, useRef as y, useState as b, useSyncExternalStore as x } from "react";
|
|
4
|
-
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
5
|
-
import { axisBottom as w, axisLeft as T, extent as E, max as D, scaleLinear as O, scaleOrdinal as k, scaleQuantize as ee, scaleSqrt as te, select as A } from "d3";
|
|
6
|
-
//#region src/client/hooks/useTheme.ts
|
|
7
|
-
var j = {
|
|
8
|
-
listeners: /* @__PURE__ */ new Set(),
|
|
9
|
-
subscribe(e) {
|
|
10
|
-
return this.listeners.add(e), () => this.listeners.delete(e);
|
|
11
|
-
},
|
|
12
|
-
notify() {
|
|
13
|
-
this.listeners.forEach((e) => e());
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
i(() => {
|
|
17
|
-
j.notify();
|
|
18
|
-
});
|
|
19
|
-
function M() {
|
|
20
|
-
return {
|
|
21
|
-
theme: x(j.subscribe.bind(j), u, u),
|
|
22
|
-
setTheme: h((e) => {
|
|
23
|
-
s(e), j.notify();
|
|
24
|
-
}, [])
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region src/client/components/charts/BubbleChart.tsx
|
|
29
|
-
var N = /* @__PURE__ */ e({ default: () => P }), P = m.memo(function({ data: e, chartConfig: i, displayConfig: s = {}, queryObject: u, height: m = "100%", colorPalette: h }) {
|
|
30
|
-
let { t: x } = o(), j = y(null), N = y(null), [P, F] = b({
|
|
31
|
-
width: 0,
|
|
32
|
-
height: 0
|
|
33
|
-
}), [I, L] = b(!1), { theme: R } = M(), z = r(), B = v(() => ({
|
|
34
|
-
showLegend: s?.showLegend ?? !0,
|
|
35
|
-
showGrid: s?.showGrid ?? !0,
|
|
36
|
-
showTooltip: s?.showTooltip ?? !0,
|
|
37
|
-
minBubbleSize: s?.minBubbleSize ?? 5,
|
|
38
|
-
maxBubbleSize: s?.maxBubbleSize ?? 50,
|
|
39
|
-
bubbleOpacity: s?.bubbleOpacity ?? .7,
|
|
40
|
-
xAxisFormat: s?.xAxisFormat,
|
|
41
|
-
leftYAxisFormat: s?.leftYAxisFormat
|
|
42
|
-
}), [
|
|
43
|
-
s?.showLegend,
|
|
44
|
-
s?.showGrid,
|
|
45
|
-
s?.showTooltip,
|
|
46
|
-
s?.minBubbleSize,
|
|
47
|
-
s?.maxBubbleSize,
|
|
48
|
-
s?.bubbleOpacity,
|
|
49
|
-
s?.xAxisFormat,
|
|
50
|
-
s?.leftYAxisFormat
|
|
51
|
-
]);
|
|
52
|
-
return _(() => {
|
|
53
|
-
let e = 0, t, n, r = () => {
|
|
54
|
-
if (N.current) {
|
|
55
|
-
let { width: e, height: t } = N.current.getBoundingClientRect();
|
|
56
|
-
if (e > 0 && t > 0) return F({
|
|
57
|
-
width: e,
|
|
58
|
-
height: t
|
|
59
|
-
}), L(!0), !0;
|
|
60
|
-
}
|
|
61
|
-
return !1;
|
|
62
|
-
};
|
|
63
|
-
if (!r() && e < 10) {
|
|
64
|
-
let i = () => {
|
|
65
|
-
!r() && e < 10 && (e++, n = setTimeout(() => {
|
|
66
|
-
t = requestAnimationFrame(i);
|
|
67
|
-
}, 50 * e));
|
|
68
|
-
};
|
|
69
|
-
t = requestAnimationFrame(i);
|
|
70
|
-
}
|
|
71
|
-
return () => {
|
|
72
|
-
t && cancelAnimationFrame(t), n && clearTimeout(n);
|
|
73
|
-
};
|
|
74
|
-
}, []), g(() => {
|
|
75
|
-
let e = null, t = () => {
|
|
76
|
-
if (N.current) {
|
|
77
|
-
let { width: e, height: t } = N.current.getBoundingClientRect();
|
|
78
|
-
e > 0 && t > 0 && (F({
|
|
79
|
-
width: e,
|
|
80
|
-
height: t
|
|
81
|
-
}), I || L(!0));
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
return N.current && (e = new ResizeObserver((e) => {
|
|
85
|
-
for (let t of e) {
|
|
86
|
-
let { width: e, height: n } = t.contentRect;
|
|
87
|
-
e > 0 && n > 0 && (F({
|
|
88
|
-
width: e,
|
|
89
|
-
height: n
|
|
90
|
-
}), I || L(!0));
|
|
91
|
-
}
|
|
92
|
-
}), e.observe(N.current), t()), window.addEventListener("resize", t), () => {
|
|
93
|
-
e && e.disconnect(), window.removeEventListener("resize", t);
|
|
94
|
-
};
|
|
95
|
-
}, [I]), g(() => {
|
|
96
|
-
if (!e || e.length === 0 || !j.current || !I || P.width === 0 || (A(j.current).selectAll("*").remove(), !i?.xAxis || !i?.yAxis || !i?.series)) return;
|
|
97
|
-
let r = Array.isArray(i.xAxis) ? i.xAxis[0] : i.xAxis, o = Array.isArray(i.yAxis) ? i.yAxis[0] : i.yAxis, s = Array.isArray(i.series) ? i.series[0] : i.series, m = Array.isArray(i.sizeField) ? i.sizeField[0] : i.sizeField || o, g = Array.isArray(i.colorField) ? i.colorField[0] : i.colorField;
|
|
98
|
-
if (!r || !o || !s || !m) return;
|
|
99
|
-
let _ = t(u, r), v = u?.timeDimensions?.some((e) => e.dimension === r) || !1, y = e.map((e) => {
|
|
100
|
-
let t = e[r], i, a;
|
|
101
|
-
if (v && t) {
|
|
102
|
-
let e = String(t), n;
|
|
103
|
-
if (e.match(/^\d{4}-\d{2}-\d{2}[T ]/)) {
|
|
104
|
-
let t = e;
|
|
105
|
-
e.includes(" ") && (t = e.replace(" ", "T").replace("+00", "Z").replace(/\+\d{2}:\d{2}$/, "Z")), !t.endsWith("Z") && !t.includes("+") && (t += "Z"), n = new Date(t);
|
|
106
|
-
} else n = new Date(e);
|
|
107
|
-
i = isNaN(n.getTime()) ? parseFloat(e) : n.getTime(), a = f(t, _);
|
|
108
|
-
} else {
|
|
109
|
-
let e = f(t, _) || t;
|
|
110
|
-
i = typeof e == "string" ? parseFloat(e) : e, a = String(e);
|
|
111
|
-
}
|
|
112
|
-
let c = n(e[o]), l = n(e[m]), u = e[s];
|
|
113
|
-
return {
|
|
114
|
-
x: i,
|
|
115
|
-
xLabel: a,
|
|
116
|
-
y: c,
|
|
117
|
-
size: l === null ? 0 : Math.abs(l),
|
|
118
|
-
color: g ? e[g] : u,
|
|
119
|
-
series: u,
|
|
120
|
-
label: `${u || "Unknown"}`,
|
|
121
|
-
isValid: d(i) && c !== null && l !== null && l > 0
|
|
122
|
-
};
|
|
123
|
-
}).filter((e) => e.isValid && e.size > 0);
|
|
124
|
-
if (y.length === 0) return;
|
|
125
|
-
let b = {
|
|
126
|
-
...a,
|
|
127
|
-
left: a.left + 30,
|
|
128
|
-
bottom: B.showLegend && g ? 100 : 40
|
|
129
|
-
}, x = P.width - b.left - b.right, S = P.height - b.top - b.bottom, C = A(j.current).attr("width", P.width).attr("height", P.height), M = C.append("g").attr("transform", `translate(${b.left},${b.top})`), N = O().domain(E(y, (e) => e.x)).range([0, x]).nice(), F = O().domain(E(y, (e) => e.y)).range([S, 0]).nice(), L = te().domain([0, D(y, (e) => e.size)]).range([B.minBubbleSize, B.maxBubbleSize]), V, H = !1, U = [];
|
|
130
|
-
if (g && y.length > 0) {
|
|
131
|
-
let e = y.map((e) => {
|
|
132
|
-
let t = e.color;
|
|
133
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
134
|
-
}).filter((e) => !isNaN(e));
|
|
135
|
-
if (H = e.length === y.length && e.every((e) => typeof e == "number"), H) {
|
|
136
|
-
let t = Math.min(...e), n = Math.max(...e);
|
|
137
|
-
V = ee().domain([t, n]).range(h?.gradient || l);
|
|
138
|
-
} else U = [...new Set(y.map((e) => String(e.color)))], V = k().domain(U).range(h?.colors || c);
|
|
139
|
-
} else V = k().domain(["default"]).range([c[0]]);
|
|
140
|
-
let W = (e, t) => getComputedStyle(document.documentElement).getPropertyValue(e).trim() || t, G = R !== "light", K = G ? W("--dc-text-muted", "#cbd5e1") : W("--dc-text-secondary", "#374151"), q = G ? W("--dc-border", "#475569") : "#9ca3af";
|
|
141
|
-
if (B.showGrid) {
|
|
142
|
-
let e = M.append("g").attr("class", "grid").attr("transform", `translate(0,${S})`).call(w(N).tickSize(-S).tickFormat(() => ""));
|
|
143
|
-
e.selectAll("line").style("stroke", q).style("stroke-dasharray", "3,3").style("opacity", .3), e.select(".domain").style("stroke", "none");
|
|
144
|
-
let t = M.append("g").attr("class", "grid").call(T(F).tickSize(-x).tickFormat(() => ""));
|
|
145
|
-
t.selectAll("line").style("stroke", q).style("stroke-dasharray", "3,3").style("opacity", .3), t.select(".domain").style("stroke", "none");
|
|
146
|
-
}
|
|
147
|
-
let J = w(N);
|
|
148
|
-
v ? J.tickFormat((e) => {
|
|
149
|
-
let t = new Date(e);
|
|
150
|
-
if (isNaN(t.getTime())) return String(e);
|
|
151
|
-
switch (_?.toLowerCase()) {
|
|
152
|
-
case "year": return String(t.getUTCFullYear());
|
|
153
|
-
case "quarter": {
|
|
154
|
-
let e = Math.floor(t.getUTCMonth() / 3) + 1;
|
|
155
|
-
return `${t.getUTCFullYear()}-Q${e}`;
|
|
156
|
-
}
|
|
157
|
-
case "month": return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
158
|
-
case "week":
|
|
159
|
-
case "day": return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}-${String(t.getUTCDate()).padStart(2, "0")}`;
|
|
160
|
-
case "hour": return `${String(t.getUTCMonth() + 1).padStart(2, "0")}-${String(t.getUTCDate()).padStart(2, "0")} ${String(t.getUTCHours()).padStart(2, "0")}:00`;
|
|
161
|
-
default: return `${t.getUTCFullYear()}-${String(t.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
162
|
-
}
|
|
163
|
-
}) : B.xAxisFormat && J.tickFormat((e) => p(e, B.xAxisFormat));
|
|
164
|
-
let Y = M.append("g").attr("transform", `translate(0,${S})`).call(J);
|
|
165
|
-
Y.selectAll("text").style("fill", K), Y.selectAll("line, path").style("stroke", q), Y.append("text").attr("x", x / 2).attr("y", 35).attr("fill", K).style("text-anchor", "middle").style("font-size", "12px").text(B.xAxisFormat?.label || z(r));
|
|
166
|
-
let X = T(F);
|
|
167
|
-
B.leftYAxisFormat && X.tickFormat((e) => p(e, B.leftYAxisFormat));
|
|
168
|
-
let Z = M.append("g").call(X);
|
|
169
|
-
Z.selectAll("text").style("fill", K), Z.selectAll("line, path").style("stroke", q), Z.append("text").attr("transform", "rotate(-90)").attr("y", -35).attr("x", -S / 2).attr("fill", K).style("text-anchor", "middle").style("font-size", "12px").text(B.leftYAxisFormat?.label || z(o));
|
|
170
|
-
let Q = A("body").append("div").attr("class", "bubble-chart-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3), $ = M.selectAll(".bubble").data(y).enter().append("circle").attr("class", "bubble").attr("cx", (e) => N(e.x)).attr("cy", (e) => F(e.y)).attr("r", (e) => L(e.size)).style("fill", (e) => g && e.color !== void 0 ? V(H ? e.color : String(e.color)) : c[0]).style("opacity", B.bubbleOpacity).style("stroke", "#fff").style("stroke-width", 1).style("cursor", "pointer");
|
|
171
|
-
if (B.showTooltip && $.on("mouseover", function(e, t) {
|
|
172
|
-
A(this).transition().duration(200).style("opacity", 1).attr("r", L(t.size) * 1.1);
|
|
173
|
-
let n = [
|
|
174
|
-
`<strong>${t.series || "Unknown"}</strong>`,
|
|
175
|
-
`${z(r)}: ${t.xLabel || (B.xAxisFormat ? p(t.x, B.xAxisFormat) : t.x)}`,
|
|
176
|
-
`${z(o)}: ${B.leftYAxisFormat ? p(t.y, B.leftYAxisFormat) : t.y}`,
|
|
177
|
-
`${z(m)}: ${B.leftYAxisFormat ? p(t.size, B.leftYAxisFormat) : t.size}`,
|
|
178
|
-
g && t.color ? `${z(g)}: ${t.color}` : ""
|
|
179
|
-
].filter(Boolean).join("<br>");
|
|
180
|
-
Q.html(n).style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px").transition().duration(200).style("opacity", 1);
|
|
181
|
-
}).on("mousemove", function(e) {
|
|
182
|
-
Q.style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px");
|
|
183
|
-
}).on("mouseout", function(e, t) {
|
|
184
|
-
A(this).transition().duration(200).style("opacity", B.bubbleOpacity).attr("r", L(t.size)), Q.transition().duration(200).style("opacity", 0);
|
|
185
|
-
}), B.showLegend && g) if (H) {
|
|
186
|
-
let e = Math.min(...y.map((e) => e.color)), t = Math.max(...y.map((e) => e.color)), n = M.append("g").attr("class", "color-legend").attr("transform", `translate(${x / 2 - 200 / 2}, ${S + 60})`), r = C.append("defs").append("linearGradient").attr("id", "color-scale-gradient").attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%"), i = h?.gradient || l;
|
|
187
|
-
i.forEach((e, t) => {
|
|
188
|
-
r.append("stop").attr("offset", `${t / (i.length - 1) * 100}%`).attr("stop-color", e);
|
|
189
|
-
}), n.append("rect").attr("width", 200).attr("height", 20).style("fill", "url(#color-scale-gradient)").style("stroke", "#ccc").style("stroke-width", 1), n.append("text").attr("x", 0).attr("y", 35).attr("text-anchor", "start").style("font-size", "11px").style("fill", K).text(B.leftYAxisFormat ? p(e, B.leftYAxisFormat) : e.toFixed(2)), n.append("text").attr("x", 200).attr("y", 35).attr("text-anchor", "end").style("font-size", "11px").style("fill", K).text(B.leftYAxisFormat ? p(t, B.leftYAxisFormat) : t.toFixed(2)), n.append("text").attr("x", 200 / 2).attr("y", -5).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", K).text(z(g));
|
|
190
|
-
} else {
|
|
191
|
-
let e = U;
|
|
192
|
-
if (e.length > 0) {
|
|
193
|
-
let t = M.append("g").attr("class", "legend").attr("transform", `translate(${x / 2 - e.length * 80 / 2}, ${S + 60})`).selectAll(".legend-item").data(e).enter().append("g").attr("class", "legend-item").attr("transform", (e, t) => `translate(${t * 80}, 0)`).style("cursor", "pointer");
|
|
194
|
-
t.append("circle").attr("cx", 5).attr("cy", 5).attr("r", 5).style("fill", (e) => V(e)).style("opacity", B.bubbleOpacity), t.append("text").attr("x", 15).attr("y", 5).attr("dy", ".35em").style("font-size", "11px").style("fill", K).text((e) => String(e)), t.on("mouseover", function(e, t) {
|
|
195
|
-
$.transition().duration(200).style("opacity", (e) => g && String(e.color) === t ? 1 : .2);
|
|
196
|
-
}).on("mouseout", function() {
|
|
197
|
-
$.transition().duration(200).style("opacity", B.bubbleOpacity);
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return () => {
|
|
202
|
-
Q.remove();
|
|
203
|
-
};
|
|
204
|
-
}, [
|
|
205
|
-
e,
|
|
206
|
-
i,
|
|
207
|
-
B,
|
|
208
|
-
u,
|
|
209
|
-
P,
|
|
210
|
-
I,
|
|
211
|
-
h,
|
|
212
|
-
R,
|
|
213
|
-
z
|
|
214
|
-
]), !e || e.length === 0 ? /* @__PURE__ */ S("div", {
|
|
215
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
216
|
-
style: { height: m },
|
|
217
|
-
children: /* @__PURE__ */ C("div", {
|
|
218
|
-
className: "dc:text-center",
|
|
219
|
-
children: [/* @__PURE__ */ S("div", {
|
|
220
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
221
|
-
children: x("chart.runtime.noData")
|
|
222
|
-
}), /* @__PURE__ */ S("div", {
|
|
223
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
224
|
-
children: x("chart.runtime.noDataHint.bubble")
|
|
225
|
-
})]
|
|
226
|
-
})
|
|
227
|
-
}) : i?.xAxis && i?.yAxis && i?.series ? /* @__PURE__ */ S("div", {
|
|
228
|
-
className: "dc:w-full dc:flex-1 dc:flex dc:flex-col dc:relative",
|
|
229
|
-
style: {
|
|
230
|
-
height: m,
|
|
231
|
-
minHeight: "250px",
|
|
232
|
-
overflow: "hidden"
|
|
233
|
-
},
|
|
234
|
-
children: /* @__PURE__ */ C("div", {
|
|
235
|
-
ref: N,
|
|
236
|
-
className: "dc:w-full dc:h-full dc:relative",
|
|
237
|
-
children: [/* @__PURE__ */ S("svg", {
|
|
238
|
-
ref: j,
|
|
239
|
-
className: "dc:w-full dc:h-full"
|
|
240
|
-
}), !I && /* @__PURE__ */ S("div", {
|
|
241
|
-
className: "dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center",
|
|
242
|
-
children: /* @__PURE__ */ S("div", {
|
|
243
|
-
className: "text-dc-text-muted dc:text-sm",
|
|
244
|
-
children: x("chart.runtime.measuringDimensions")
|
|
245
|
-
})
|
|
246
|
-
})]
|
|
247
|
-
})
|
|
248
|
-
}) : /* @__PURE__ */ S("div", {
|
|
249
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
250
|
-
style: { height: m },
|
|
251
|
-
children: /* @__PURE__ */ C("div", {
|
|
252
|
-
className: "dc:text-center",
|
|
253
|
-
children: [
|
|
254
|
-
/* @__PURE__ */ S("div", {
|
|
255
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
256
|
-
children: x("chart.runtime.activityGridConfigRequired")
|
|
257
|
-
}),
|
|
258
|
-
/* @__PURE__ */ S("div", {
|
|
259
|
-
className: "dc:text-xs",
|
|
260
|
-
children: x("chart.runtime.configErrorHint.bubbleRequired")
|
|
261
|
-
}),
|
|
262
|
-
/* @__PURE__ */ S("div", {
|
|
263
|
-
className: "dc:text-xs dc:mt-1",
|
|
264
|
-
children: x("chart.runtime.configErrorHint.bubbleOptional")
|
|
265
|
-
})
|
|
266
|
-
]
|
|
267
|
-
})
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
//#endregion
|
|
271
|
-
export { M as n, N as t };
|
|
272
|
-
|
|
273
|
-
//# sourceMappingURL=chart-bubble-CfqiB538.js.map
|