drizzle-cube 0.10.1 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/ActivityGridChart.config-XMtoteb6.js +2 -0
- package/dist/adapters/ActivityGridChart.config-h1AXPvn0.cjs +1 -0
- package/dist/adapters/AreaChart.config-DYf9wufo.cjs +1 -0
- package/dist/adapters/AreaChart.config-We6b53aT.js +2 -0
- package/dist/adapters/BarChart.config-4SX44IYv.cjs +1 -0
- package/dist/adapters/BarChart.config-CwBnyptL.js +2 -0
- package/dist/adapters/BoxPlotChart.config-BzNe-FlW.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-mfAHqmcp.js +2 -0
- package/dist/adapters/BubbleChart.config-CBT5jMdc.cjs +1 -0
- package/dist/adapters/BubbleChart.config-DxG_Umal.js +2 -0
- package/dist/adapters/CandlestickChart.config-Cqw3XP1h.js +2 -0
- package/dist/adapters/CandlestickChart.config-DPSSlzUD.cjs +1 -0
- package/dist/adapters/DataTable.config-DS1bvaDu.js +2 -0
- package/dist/adapters/DataTable.config-D_NsMeyz.cjs +1 -0
- package/dist/adapters/DotStripChart.config-BApWn6QV.cjs +1 -0
- package/dist/adapters/DotStripChart.config-Bdk5-YfB.js +2 -0
- package/dist/adapters/FunnelChart.config-BT5up_Bg.cjs +1 -0
- package/dist/adapters/FunnelChart.config-ISZiz9fn.js +2 -0
- package/dist/adapters/GaugeChart.config-Biaq1cKc.cjs +1 -0
- package/dist/adapters/GaugeChart.config-BjGfB84t.js +2 -0
- package/dist/adapters/HeatMapChart.config-Bmca8KiH.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-uWvR0B-N.js +2 -0
- package/dist/adapters/KpiDelta.config-CJeDdj_1.js +2 -0
- package/dist/adapters/KpiDelta.config-CKr9pAxL.cjs +1 -0
- package/dist/adapters/KpiNumber.config-6YLEF2fy.cjs +1 -0
- package/dist/adapters/KpiNumber.config-C00M46GA.js +2 -0
- package/dist/adapters/KpiText.config-C8Av_D2W.cjs +1 -0
- package/dist/adapters/KpiText.config-bKTHob0C.js +2 -0
- package/dist/adapters/LineChart.config-DH68HT_B.js +2 -0
- package/dist/adapters/LineChart.config-DPq7GvL9.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-CaaJPO3c.js +2 -0
- package/dist/adapters/MarkdownChart.config-ca_UyhWJ.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-C1Il0IqL.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-DMOnkmb6.js +2 -0
- package/dist/adapters/PieChart.config-Bg-8cxWK.js +2 -0
- package/dist/adapters/PieChart.config-joJcF--K.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-B2sltKsI.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-BlCedy1v.js +2 -0
- package/dist/adapters/RadarChart.config-DD1pX6FZ.js +2 -0
- package/dist/adapters/RadarChart.config-DVCCLSVw.cjs +1 -0
- package/dist/adapters/RadialBarChart.config--VIE2jMM.js +2 -0
- package/dist/adapters/RadialBarChart.config-BZwyWhTg.cjs +1 -0
- package/dist/adapters/RecordsTable.config-CTBQc-2r.js +2 -0
- package/dist/adapters/RecordsTable.config-DPdO0DL5.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-PGVxnkRL.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-mX5PMh82.cjs +1 -0
- package/dist/adapters/RetentionHeatmap.config-Co-JMzBm.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-Cub3-ksy.cjs +1 -0
- package/dist/adapters/SankeyChart.config-BkIyUcAE.cjs +1 -0
- package/dist/adapters/SankeyChart.config-DGTnRmYg.js +2 -0
- package/dist/adapters/ScatterChart.config-CdZrBorg.js +2 -0
- package/dist/adapters/ScatterChart.config-CwN9niUL.cjs +1 -0
- package/dist/adapters/SunburstChart.config-D0ZkRSJv.cjs +1 -0
- package/dist/adapters/SunburstChart.config-RF3uu5Sa.js +2 -0
- package/dist/adapters/TreeMapChart.config-B2Yn_V7p.cjs +1 -0
- package/dist/adapters/TreeMapChart.config-diJtcs4D.js +2 -0
- package/dist/adapters/WaterfallChart.config-B10PxftT.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BImlkLmR.js +2 -0
- package/dist/adapters/chartConfigHelpers-BhME7ow_.cjs +1 -0
- package/dist/adapters/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
- package/dist/adapters/{compiler-Dw5tYox7.cjs → compiler-B-yljK02.cjs} +6 -6
- package/dist/adapters/{compiler-C8fOs43d.js → compiler-BhityGUO.js} +197 -186
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.js +1 -1
- package/dist/adapters/{core-BP6GiYzO.cjs → core-CQOrzBNh.cjs} +1 -1
- package/dist/adapters/{core-z6vXJ8nF.js → core-xZE0miIu.js} +2 -2
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +5 -5
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +5 -5
- package/dist/adapters/{handler-CI3Rt-Zt.js → handler-ByeQ0-1r.js} +237 -234
- package/dist/adapters/handler-DSNmfv1R.cjs +16 -0
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +4 -4
- package/dist/adapters/mcp-app-html-CNp0VqS_.cjs +1 -0
- package/dist/adapters/mcp-app-html-CvWoYMO3.js +5 -0
- package/dist/adapters/mcp-app-html.cjs +1 -1
- package/dist/adapters/mcp-app-html.js +1 -1
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +3 -3
- package/dist/adapters/{mcp-transport-DpS_e0gL.js → mcp-transport-Cy6n4uj1.js} +1 -1
- package/dist/adapters/{mcp-transport-Bc7-KSG_.cjs → mcp-transport-DnLP5FPL.cjs} +1 -1
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +5 -5
- package/dist/adapters/{openai-7064EJ1j.cjs → openai-BQl0yJCS.cjs} +1 -1
- package/dist/adapters/{openai-CnUBYFyY.js → openai-C4HrjyJj.js} +1 -1
- package/dist/adapters/{openai-DpGdZL3m.js → openai-D3Nt6Bj7.js} +1 -1
- package/dist/adapters/{openai-B0mByiYQ.cjs → openai-z1ai-G4Q.cjs} +1 -1
- package/dist/adapters/{utils-CN_bxSiq.js → utils-BaxFceDq.js} +6 -1
- package/dist/adapters/{utils-CvC1czqb.cjs → utils-a2p2B6x8.cjs} +2 -2
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/client/charts/chartConfigHelpers.d.ts +5 -0
- package/dist/cjs/client/components/AnalysisBuilder/types.d.ts +4 -0
- package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +6 -1
- package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
- package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
- package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
- package/dist/cjs/client/hooks/useAnalysisQuery.d.ts +6 -1
- package/dist/cjs/client/index.d.ts +2 -0
- package/dist/cjs/client/types.d.ts +5 -0
- package/dist/cjs/client/utils/gapFilling.d.ts +52 -0
- package/dist/cjs/client/utils/index.d.ts +1 -0
- package/dist/cjs/server/ai/query-schema.d.ts +1 -1
- package/dist/cjs/server/execution/result-post-processor.d.ts +4 -2
- package/dist/cjs/server/executor.d.ts +2 -0
- package/dist/cjs/server/gap-filler.d.ts +8 -43
- package/dist/cjs/server/types/core.d.ts +2 -0
- package/dist/cjs/server/types/cube.d.ts +12 -0
- package/dist/cjs/server/types/metadata.d.ts +5 -0
- package/dist/cjs/server/types/query.d.ts +2 -1
- package/dist/client/charts/chartConfigHelpers.d.ts +5 -0
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-5ZSP--FQ.js → DashboardEditModal-DifODH4h.js} +2360 -2548
- package/dist/client/chunks/DashboardEditModal-DifODH4h.js.map +1 -0
- package/dist/client/chunks/{DotStripChart-DTukhwG-.js → DotStripChart-B9IVCFPO.js} +3 -3
- package/dist/client/chunks/{DotStripChart-DTukhwG-.js.map → DotStripChart-B9IVCFPO.js.map} +1 -1
- package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js → ProportionBarChart-DieF9AzP.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js.map → ProportionBarChart-DieF9AzP.js.map} +1 -1
- package/dist/client/chunks/{RecordsTable-BC5l67Dc.js → RecordsTable-Mo3ai5_M.js} +4 -4
- package/dist/client/chunks/{RecordsTable-BC5l67Dc.js.map → RecordsTable-Mo3ai5_M.js.map} +1 -1
- package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js → RetentionCombinedChart-Bie4ADyA.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js.map → RetentionCombinedChart-Bie4ADyA.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js → RetentionHeatmap-qstIAx5B.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js.map → RetentionHeatmap-qstIAx5B.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-Db4umQtd.js → analysis-builder-D78aDJoL.js} +41 -41
- package/dist/client/chunks/analysis-builder-D78aDJoL.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-BEvvX6ln.js → analysis-builder-shared-CsIs4-Xf.js} +538 -523
- package/dist/client/chunks/analysis-builder-shared-CsIs4-Xf.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-Bbc58UJD.js → chart-activity-grid-Ly_-2B-f.js} +7 -2
- package/dist/client/chunks/chart-activity-grid-Ly_-2B-f.js.map +1 -0
- package/dist/client/chunks/{chart-area-9uCXIvMN.js → chart-area-D3l-71Wy.js} +2 -2
- package/dist/client/chunks/{chart-area-9uCXIvMN.js.map → chart-area-D3l-71Wy.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-C5a1T9Ce.js → chart-bar-BaTyQOqs.js} +3 -3
- package/dist/client/chunks/{chart-bar-C5a1T9Ce.js.map → chart-bar-BaTyQOqs.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js → chart-box-plot-Cem6PHjz.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js.map → chart-box-plot-Cem6PHjz.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-dt5ESb7m.js → chart-bubble-DFlfqCDG.js} +2 -2
- package/dist/client/chunks/{chart-bubble-dt5ESb7m.js.map → chart-bubble-DFlfqCDG.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js → chart-candlestick-BkAFBXtZ.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js.map → chart-candlestick-BkAFBXtZ.js.map} +1 -1
- package/dist/client/chunks/{chart-config-area-DsrZCIwF.js → chart-config-area-BnsRQ-MY.js} +35 -14
- package/dist/client/chunks/chart-config-area-BnsRQ-MY.js.map +1 -0
- package/dist/client/chunks/{chart-config-bar-BixSs43E.js → chart-config-bar-G2HJJBVV.js} +8 -7
- package/dist/client/chunks/chart-config-bar-G2HJJBVV.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js → chart-config-kpi-delta-BIAq1Ftg.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js.map → chart-config-kpi-delta-BIAq1Ftg.js.map} +1 -1
- package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js → chart-config-kpi-number-Dgc4gIYu.js} +2 -2
- package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js.map → chart-config-kpi-number-Dgc4gIYu.js.map} +1 -1
- package/dist/client/chunks/{chart-config-line-CBF9Px9b.js → chart-config-line-DLkRs1Zr.js} +9 -8
- package/dist/client/chunks/chart-config-line-DLkRs1Zr.js.map +1 -0
- package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js → chart-config-pie-XrHim0C8.js} +2 -2
- package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js.map → chart-config-pie-XrHim0C8.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js → chart-config-radar-xNS6Juqc.js} +2 -2
- package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js.map → chart-config-radar-xNS6Juqc.js.map} +1 -1
- package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js → chart-config-radial-bar-ChUChsEe.js} +2 -2
- package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js.map → chart-config-radial-bar-ChUChsEe.js.map} +1 -1
- package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js → chart-config-tree-map-CnrJ7OC1.js} +2 -2
- package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js.map → chart-config-tree-map-CnrJ7OC1.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-zSjYEy0r.js → chart-data-table-Cxd0cdAl.js} +36 -36
- package/dist/client/chunks/{chart-data-table-zSjYEy0r.js.map → chart-data-table-Cxd0cdAl.js.map} +1 -1
- package/dist/client/chunks/{chart-funnel-CuOSCsbt.js → chart-funnel-71Kn4eeF.js} +2 -2
- package/dist/client/chunks/{chart-funnel-CuOSCsbt.js.map → chart-funnel-71Kn4eeF.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DxKeqCCD.js → chart-gauge-BddS_9oS.js} +3 -3
- package/dist/client/chunks/{chart-gauge-DxKeqCCD.js.map → chart-gauge-BddS_9oS.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js → chart-heat-map-BQIsrn8m.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js.map → chart-heat-map-BQIsrn8m.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js → chart-kpi-delta-DndbqdZT.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js.map → chart-kpi-delta-DndbqdZT.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js → chart-kpi-number-DAbfoHMt.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js.map → chart-kpi-number-DAbfoHMt.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js → chart-kpi-text-D8oQgpxL.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js.map → chart-kpi-text-D8oQgpxL.js.map} +1 -1
- package/dist/client/chunks/{chart-line-CjW9Yo03.js → chart-line-BNqjUowg.js} +3 -3
- package/dist/client/chunks/{chart-line-CjW9Yo03.js.map → chart-line-BNqjUowg.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-Cgs62had.js → chart-markdown-DtgpU3xd.js} +2 -2
- package/dist/client/chunks/{chart-markdown-Cgs62had.js.map → chart-markdown-DtgpU3xd.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js → chart-measure-profile-D5nZMWlI.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js.map → chart-measure-profile-D5nZMWlI.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-BTb5nKd7.js → chart-pie-D8r9HCZ4.js} +3 -3
- package/dist/client/chunks/{chart-pie-BTb5nKd7.js.map → chart-pie-D8r9HCZ4.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-8384sPlX.js → chart-radar-R4PuCIWp.js} +3 -3
- package/dist/client/chunks/{chart-radar-8384sPlX.js.map → chart-radar-R4PuCIWp.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js → chart-radial-bar-hmrSFa6O.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js.map → chart-radial-bar-hmrSFa6O.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js → chart-sankey-CFXPybny.js} +2 -2
- package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js.map → chart-sankey-CFXPybny.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-Bdj95OeV.js → chart-scatter-CH82md0L.js} +3 -3
- package/dist/client/chunks/{chart-scatter-Bdj95OeV.js.map → chart-scatter-CH82md0L.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-CuG8520_.js → chart-sunburst-CTj95eEC.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-CuG8520_.js.map → chart-sunburst-CTj95eEC.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-CtJADX87.js → chart-tree-map-CmysE4bF.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-CtJADX87.js.map → chart-tree-map-CmysE4bF.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-D430fO48.js → chart-waterfall-Bv1mPvlB.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-D430fO48.js.map → chart-waterfall-Bv1mPvlB.js.map} +1 -1
- package/dist/client/chunks/{charts-core-BSmlKmf0.js → charts-core-BdEQgbqN.js} +2 -2
- package/dist/client/chunks/{charts-core-BSmlKmf0.js.map → charts-core-BdEQgbqN.js.map} +1 -1
- package/dist/client/chunks/charts-loader-DoLQqFXg.js +87 -0
- package/dist/client/chunks/{charts-loader-Bz9yHkW1.js.map → charts-loader-DoLQqFXg.js.map} +1 -1
- package/dist/client/chunks/gapFilling-DKBRHcQL.js +391 -0
- package/dist/client/chunks/gapFilling-DKBRHcQL.js.map +1 -0
- package/dist/client/chunks/{nl-NL-BrqrWoAj.js → nl-NL-DVZXf8U7.js} +6 -1
- package/dist/client/chunks/nl-NL-DVZXf8U7.js.map +1 -0
- package/dist/client/chunks/{schema-visualization-D2NvjQny.js → schema-visualization-MlRrcJQH.js} +3 -3
- package/dist/client/chunks/{schema-visualization-D2NvjQny.js.map → schema-visualization-MlRrcJQH.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-DL_AnCWZ.js → useDirtyStateTracking-DUyYwuN_.js} +318 -293
- package/dist/client/chunks/useDirtyStateTracking-DUyYwuN_.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CdPWtj7E.js → useExplainAI-BtoS3tb5.js} +4 -4
- package/dist/client/chunks/{useExplainAI-CdPWtj7E.js.map → useExplainAI-BtoS3tb5.js.map} +1 -1
- package/dist/client/chunks/utils-CToHkuhU.js.map +1 -1
- package/dist/client/chunks/{vendor-Bpaolt6h.js → vendor-BfBpNmMa.js} +2 -2
- package/dist/client/chunks/{vendor-Bpaolt6h.js.map → vendor-BfBpNmMa.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/types.d.ts +4 -0
- package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +6 -1
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
- package/dist/client/components.js +2 -2
- package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
- package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
- package/dist/client/hooks/useAnalysisQuery.d.ts +6 -1
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +193 -192
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/types.d.ts +5 -0
- package/dist/client/utils/gapFilling.d.ts +52 -0
- package/dist/client/utils/index.d.ts +1 -0
- package/dist/client/utils.js +9 -8
- package/dist/client/utils.js.map +1 -1
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +101 -101
- package/dist/server/ai/query-schema.d.ts +1 -1
- package/dist/server/chartConfigHelpers-BhME7ow_.cjs +1 -0
- package/dist/server/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
- package/dist/server/execution/result-post-processor.d.ts +4 -2
- package/dist/server/executor.d.ts +2 -0
- package/dist/server/gap-filler.d.ts +8 -43
- package/dist/server/index.cjs +34 -34
- package/dist/server/index.js +2049 -2030
- package/dist/server/types/core.d.ts +2 -0
- package/dist/server/types/cube.d.ts +12 -0
- package/dist/server/types/metadata.d.ts +5 -0
- package/dist/server/types/query.d.ts +2 -1
- package/package.json +1 -1
- package/dist/adapters/ActivityGridChart.config-BpGv0FYq.js +0 -2
- package/dist/adapters/ActivityGridChart.config-DWs9dRl7.cjs +0 -1
- package/dist/adapters/AreaChart.config-Cn8nAQqj.cjs +0 -1
- package/dist/adapters/AreaChart.config-NDMkAi9w.js +0 -2
- package/dist/adapters/BarChart.config-CuGCupRX.cjs +0 -1
- package/dist/adapters/BarChart.config-D4Ct_ZuS.js +0 -2
- package/dist/adapters/BoxPlotChart.config-BEHZDgrz.js +0 -2
- package/dist/adapters/BoxPlotChart.config-DnC3xk7q.cjs +0 -1
- package/dist/adapters/BubbleChart.config-D0ouKOKS.cjs +0 -1
- package/dist/adapters/BubbleChart.config-Du8aEfdQ.js +0 -2
- package/dist/adapters/CandlestickChart.config-B0B6dKYG.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-DBilZaFc.js +0 -2
- package/dist/adapters/DataTable.config-BXalzUPO.cjs +0 -1
- package/dist/adapters/DataTable.config-CF8BzQHu.js +0 -2
- package/dist/adapters/DotStripChart.config-0ggseDij.cjs +0 -1
- package/dist/adapters/DotStripChart.config-CfHh0XSW.js +0 -2
- package/dist/adapters/FunnelChart.config-AcSpen_Q.js +0 -2
- package/dist/adapters/FunnelChart.config-D6k89qDc.cjs +0 -1
- package/dist/adapters/GaugeChart.config-B5BcrEvW.cjs +0 -1
- package/dist/adapters/GaugeChart.config-BChbha74.js +0 -2
- package/dist/adapters/HeatMapChart.config-BgkP8kiW.js +0 -2
- package/dist/adapters/HeatMapChart.config-Crq7vBwj.cjs +0 -1
- package/dist/adapters/KpiDelta.config-Cqu1WOkV.js +0 -2
- package/dist/adapters/KpiDelta.config-edWLG1bM.cjs +0 -1
- package/dist/adapters/KpiNumber.config-BLkE67us.cjs +0 -1
- package/dist/adapters/KpiNumber.config-DNsH72Rs.js +0 -2
- package/dist/adapters/KpiText.config-CAnLZYht.cjs +0 -1
- package/dist/adapters/KpiText.config-CQGd10Hj.js +0 -2
- package/dist/adapters/LineChart.config-C7l_xff-.js +0 -2
- package/dist/adapters/LineChart.config-DOxwtnfG.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-BV5j1oJl.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-CBkJAEpW.js +0 -2
- package/dist/adapters/MeasureProfileChart.config-CyyFz-x_.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-VIvr7lq6.js +0 -2
- package/dist/adapters/PieChart.config-BP8OlSJ4.js +0 -2
- package/dist/adapters/PieChart.config-BaMxIlBa.cjs +0 -1
- package/dist/adapters/ProportionBarChart.config-CtZaP8Xn.js +0 -2
- package/dist/adapters/ProportionBarChart.config-DAyEQ8Pn.cjs +0 -1
- package/dist/adapters/RadarChart.config-CG07QZUT.cjs +0 -1
- package/dist/adapters/RadarChart.config-DJJuD-Tb.js +0 -2
- package/dist/adapters/RadialBarChart.config-BNgzWkot.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-DVM_jg9B.js +0 -2
- package/dist/adapters/RecordsTable.config-BEQmKQ-S.cjs +0 -1
- package/dist/adapters/RecordsTable.config-d4s8HV9m.js +0 -2
- package/dist/adapters/RetentionCombinedChart.config-DJ4N-ffd.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-DV1h3rW2.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-CIJDenRg.cjs +0 -1
- package/dist/adapters/RetentionHeatmap.config-P3VVn3QJ.js +0 -2
- package/dist/adapters/SankeyChart.config-CQ89DYf7.cjs +0 -1
- package/dist/adapters/SankeyChart.config-CfMmdmXJ.js +0 -2
- package/dist/adapters/ScatterChart.config-C4zrFpF-.cjs +0 -1
- package/dist/adapters/ScatterChart.config-DaJ3LVWH.js +0 -2
- package/dist/adapters/SunburstChart.config-1ZRhfGr0.cjs +0 -1
- package/dist/adapters/SunburstChart.config-DHgrSIkQ.js +0 -2
- package/dist/adapters/TreeMapChart.config-Cy3sAsJP.js +0 -2
- package/dist/adapters/TreeMapChart.config-D365WWEK.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-DYEf1vQT.js +0 -2
- package/dist/adapters/WaterfallChart.config-s8pICbm8.cjs +0 -1
- package/dist/adapters/chartConfigHelpers-BZMu_1EP.cjs +0 -1
- package/dist/adapters/handler-B78akmC_.cjs +0 -16
- package/dist/adapters/mcp-app-html-C1fEW5oE.js +0 -5
- package/dist/adapters/mcp-app-html-CGk4ubE0.cjs +0 -1
- package/dist/client/chunks/DashboardEditModal-5ZSP--FQ.js.map +0 -1
- package/dist/client/chunks/analysis-builder-Db4umQtd.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-BEvvX6ln.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-Bbc58UJD.js.map +0 -1
- package/dist/client/chunks/chart-config-area-DsrZCIwF.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-BixSs43E.js.map +0 -1
- package/dist/client/chunks/chart-config-line-CBF9Px9b.js.map +0 -1
- package/dist/client/chunks/charts-loader-Bz9yHkW1.js +0 -87
- package/dist/client/chunks/nl-NL-BrqrWoAj.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-DL_AnCWZ.js.map +0 -1
- package/dist/server/chartConfigHelpers-BZMu_1EP.cjs +0 -1
|
@@ -1,53 +1,56 @@
|
|
|
1
|
-
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-
|
|
2
|
-
import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-
|
|
3
|
-
import {
|
|
4
|
-
import { a as
|
|
5
|
-
import { O as
|
|
6
|
-
import { A as
|
|
7
|
-
import { B as
|
|
8
|
-
import { a as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-BfBpNmMa.js";
|
|
2
|
+
import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-Cxd0cdAl.js";
|
|
3
|
+
import { C as f, D as p, M as m, _ as h, b as g, d as _, f as v, it as y, nt as b, rt as x, u as S, v as C, w, x as T, y as E } from "./DashboardEditModal-DifODH4h.js";
|
|
4
|
+
import { a as D, s as O, t as k } from "./retention-ChW9jYdy.js";
|
|
5
|
+
import { O as A, k as j } from "./dashboardExport-Db3rmUP1.js";
|
|
6
|
+
import { A as ee, D as M, F as N, I as te, M as P, N as ne, O as re, P as ie, S as F, T as I, a as ae, d as oe, j as L, k as R, l as se, n as ce, r as le, s as ue } from "./useDirtyStateTracking-DUyYwuN_.js";
|
|
7
|
+
import { B as de, F as z } from "./chart-activity-grid-Ly_-2B-f.js";
|
|
8
|
+
import { a as fe, i as B, r as pe } from "./gapFilling-DKBRHcQL.js";
|
|
9
|
+
import { a as me, i as he } from "./useExplainAI-BtoS3tb5.js";
|
|
10
|
+
import { r as ge, s as _e } from "./chart-funnel-71Kn4eeF.js";
|
|
11
|
+
import { n as ve } from "./charts-core-BdEQgbqN.js";
|
|
12
|
+
import V, { createContext as ye, memo as be, useCallback as H, useContext as xe, useEffect as U, useMemo as W, useRef as G, useState as K } from "react";
|
|
13
|
+
import { Fragment as Se, jsx as q, jsxs as J } from "react/jsx-runtime";
|
|
13
14
|
//#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
|
|
14
15
|
function Ce(e, t) {
|
|
15
|
-
let n =
|
|
16
|
+
let n = L(t, e);
|
|
16
17
|
if (!n?.dateRange) return;
|
|
17
|
-
let r =
|
|
18
|
+
let r = fe(n.dateRange);
|
|
18
19
|
if (!r) return;
|
|
19
|
-
let i =
|
|
20
|
-
return [[
|
|
20
|
+
let i = pe(r.start, r.end);
|
|
21
|
+
return [[B(r.start), B(r.end)], [B(i.start), B(i.end)]];
|
|
21
22
|
}
|
|
22
23
|
function we(e, t) {
|
|
23
|
-
return
|
|
24
|
+
return N(e, t, "inDateRange");
|
|
24
25
|
}
|
|
25
26
|
//#endregion
|
|
26
27
|
//#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
|
|
27
|
-
function Te(e, t, n, r, i = !1, a, o = !1) {
|
|
28
|
-
let
|
|
29
|
-
if (!i) for (let e of
|
|
30
|
-
|
|
31
|
-
let
|
|
28
|
+
function Te(e, t, n, r, i = !1, a, o = !1, s) {
|
|
29
|
+
let c = (e) => e.isTimeDimension && e.enableComparison && !o, l = t.filter(c).map((e) => e.field), u = n;
|
|
30
|
+
if (!i) for (let e of l) u = we(u, e);
|
|
31
|
+
u = u.filter((e) => b(e));
|
|
32
|
+
let d = {
|
|
32
33
|
measures: e.map((e) => e.field),
|
|
33
34
|
dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
|
|
34
35
|
timeDimensions: t.filter((e) => e.isTimeDimension).map((e) => {
|
|
35
36
|
let t = {
|
|
36
37
|
dimension: e.field,
|
|
37
|
-
granularity: e.granularity || "day"
|
|
38
|
+
granularity: e.granularity || "day",
|
|
39
|
+
...e.fillMissingDates !== void 0 && !(o && e.fillMissingDates) && { fillMissingDates: e.fillMissingDates }
|
|
38
40
|
};
|
|
39
|
-
if (e
|
|
41
|
+
if (c(e)) {
|
|
40
42
|
let r = Ce(e.field, n);
|
|
41
43
|
r && (t.compareDateRange = r);
|
|
42
44
|
}
|
|
43
45
|
return t;
|
|
44
46
|
}),
|
|
45
|
-
filters:
|
|
47
|
+
filters: u.length > 0 ? u : void 0,
|
|
46
48
|
order: r && Object.keys(r).length > 0 ? r : void 0,
|
|
47
49
|
limit: a ?? void 0,
|
|
48
|
-
ungrouped: o || void 0
|
|
50
|
+
ungrouped: o || void 0,
|
|
51
|
+
...s !== void 0 && { fillMissingDatesValue: s }
|
|
49
52
|
};
|
|
50
|
-
return
|
|
53
|
+
return d.measures?.length === 0 && delete d.measures, d.dimensions?.length === 0 && delete d.dimensions, d.timeDimensions?.length === 0 && delete d.timeDimensions, d;
|
|
51
54
|
}
|
|
52
55
|
function Y() {
|
|
53
56
|
return {
|
|
@@ -102,14 +105,14 @@ function ke({ filter: e, dateRange: t }) {
|
|
|
102
105
|
}), /* @__PURE__ */ q(Oe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
|
|
103
106
|
}), o && /* @__PURE__ */ q("div", {
|
|
104
107
|
className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded-sm dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
|
|
105
|
-
children:
|
|
108
|
+
children: C.map((e) => /* @__PURE__ */ q("button", {
|
|
106
109
|
onClick: () => c(e.value),
|
|
107
110
|
className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${e.value === r ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
|
|
108
111
|
children: n(e.label)
|
|
109
112
|
}, e.value))
|
|
110
113
|
})]
|
|
111
114
|
}),
|
|
112
|
-
|
|
115
|
+
M(r) && /* @__PURE__ */ J("div", {
|
|
113
116
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
114
117
|
children: [/* @__PURE__ */ q("input", {
|
|
115
118
|
type: "number",
|
|
@@ -289,66 +292,66 @@ function Me({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
|
289
292
|
//#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
|
|
290
293
|
var Ne = d("close"), Pe = d("chevronDown"), Fe = d("dimension"), Ie = d("timeDimension"), Le = d("measure");
|
|
291
294
|
function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
|
|
292
|
-
let { t: a } = z(), [o, s] =
|
|
295
|
+
let { t: a } = z(), [o, s] = K(e), [c, l] = K(!1), [u, d] = K(!1), [f, p] = K(!1), [m, _] = K("this_month"), [v, b] = K(1), [S, w] = K(""), [E, D] = K(null), [O, k] = K(-1), A = G(null), j = G(null), ee = ce(S, 300), N = g(o.member, t), te = N?.field.type || "string", P = te === "time", ne = N?.fieldType === "measure", re = N?.fieldType === "dimension", ie = T(o.member, t), F = x[o.operator], ae = y(te), oe = P && o.operator === "inDateRange", L = H(() => [
|
|
293
296
|
"equals",
|
|
294
297
|
"notEquals",
|
|
295
298
|
"in",
|
|
296
299
|
"notIn"
|
|
297
|
-
].includes(o.operator) &&
|
|
300
|
+
].includes(o.operator) && re && !P, [
|
|
298
301
|
o.operator,
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
])(), { values:
|
|
302
|
-
|
|
302
|
+
re,
|
|
303
|
+
P
|
|
304
|
+
])(), { values: R, loading: se, error: ue, searchValues: de } = le(o.member, L);
|
|
305
|
+
U(() => {
|
|
303
306
|
if (!i) {
|
|
304
|
-
|
|
307
|
+
D(null);
|
|
305
308
|
return;
|
|
306
309
|
}
|
|
307
310
|
let e = i.getBoundingClientRect(), t = e.top, n = window.innerHeight - e.bottom, r = t > 500 || t > n, a = Math.max(16, Math.min(e.left, window.innerWidth - 400 - 16));
|
|
308
|
-
|
|
311
|
+
D(r ? {
|
|
309
312
|
bottom: window.innerHeight - e.top + 8,
|
|
310
313
|
left: a
|
|
311
314
|
} : {
|
|
312
315
|
top: e.bottom + 8,
|
|
313
316
|
left: a
|
|
314
317
|
});
|
|
315
|
-
}, [i]),
|
|
318
|
+
}, [i]), U(() => {
|
|
316
319
|
let e = (e) => {
|
|
317
|
-
|
|
320
|
+
A.current && !A.current.contains(e.target) && (l(!1), d(!1), p(!1));
|
|
318
321
|
};
|
|
319
322
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
320
|
-
}, []),
|
|
321
|
-
u &&
|
|
323
|
+
}, []), U(() => {
|
|
324
|
+
u && L && de && de("", !0), u || k(-1);
|
|
322
325
|
}, [
|
|
323
326
|
u,
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
]),
|
|
327
|
-
if (
|
|
328
|
-
let e =
|
|
327
|
+
L,
|
|
328
|
+
de
|
|
329
|
+
]), U(() => {
|
|
330
|
+
if (O >= 0 && j.current) {
|
|
331
|
+
let e = j.current.children[O];
|
|
329
332
|
e && e.scrollIntoView({ block: "nearest" });
|
|
330
333
|
}
|
|
331
|
-
}, [
|
|
332
|
-
u &&
|
|
334
|
+
}, [O]), U(() => {
|
|
335
|
+
u && L && de && ee !== void 0 && de(ee);
|
|
333
336
|
}, [
|
|
334
|
-
|
|
337
|
+
ee,
|
|
335
338
|
u,
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
]),
|
|
339
|
-
if (!
|
|
340
|
-
let e =
|
|
341
|
-
e && (
|
|
342
|
-
}, [o.dateRange,
|
|
343
|
-
let
|
|
339
|
+
L,
|
|
340
|
+
de
|
|
341
|
+
]), U(() => {
|
|
342
|
+
if (!oe) return;
|
|
343
|
+
let e = h(o.dateRange);
|
|
344
|
+
e && (_(e.rangeType), e.numberValue !== void 0 && b(e.numberValue));
|
|
345
|
+
}, [o.dateRange, oe]);
|
|
346
|
+
let fe = H((e) => {
|
|
344
347
|
s({
|
|
345
348
|
member: o.member,
|
|
346
349
|
operator: e,
|
|
347
350
|
values: []
|
|
348
351
|
}), l(!1);
|
|
349
|
-
}, [o.member]),
|
|
352
|
+
}, [o.member]), B = H((e, t) => {
|
|
350
353
|
let n = t?.shiftKey ?? !1, r = o.values || [];
|
|
351
|
-
|
|
354
|
+
F?.supportsMultipleValues ? (r.includes(e) ? s({
|
|
352
355
|
...o,
|
|
353
356
|
values: r.filter((t) => t !== e)
|
|
354
357
|
}) : s({
|
|
@@ -357,28 +360,28 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
357
360
|
}), n || d(!1)) : (s({
|
|
358
361
|
...o,
|
|
359
362
|
values: [e]
|
|
360
|
-
}), d(!1)),
|
|
361
|
-
}, [o,
|
|
363
|
+
}), d(!1)), w(""), k(-1);
|
|
364
|
+
}, [o, F?.supportsMultipleValues]), pe = H((e) => {
|
|
362
365
|
let t = (o.values || []).filter((t) => t !== e);
|
|
363
366
|
s({
|
|
364
367
|
...o,
|
|
365
368
|
values: t
|
|
366
369
|
});
|
|
367
|
-
}, [o]),
|
|
368
|
-
let t = Ee(e.key, u,
|
|
370
|
+
}, [o]), me = H((e) => {
|
|
371
|
+
let t = Ee(e.key, u, R.length, O);
|
|
369
372
|
if (t.type !== "none") {
|
|
370
373
|
if (e.preventDefault(), t.type === "highlight") return k(t.index);
|
|
371
|
-
if (t.type === "select") return
|
|
374
|
+
if (t.type === "select") return B(R[t.index], { shiftKey: e.shiftKey });
|
|
372
375
|
d(!1), k(-1);
|
|
373
376
|
}
|
|
374
377
|
}, [
|
|
375
378
|
u,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
]),
|
|
379
|
+
R,
|
|
380
|
+
O,
|
|
381
|
+
B
|
|
382
|
+
]), he = H((e) => {
|
|
380
383
|
let t = e.target.value;
|
|
381
|
-
if (
|
|
384
|
+
if (F?.valueType === "number") {
|
|
382
385
|
let e = parseFloat(t);
|
|
383
386
|
isNaN(e) ? (t === "" || t === "-") && s({
|
|
384
387
|
...o,
|
|
@@ -391,110 +394,110 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
391
394
|
...o,
|
|
392
395
|
values: t ? [t] : []
|
|
393
396
|
});
|
|
394
|
-
}, [o,
|
|
397
|
+
}, [o, F?.valueType]), ge = H((e) => {
|
|
395
398
|
let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
|
|
396
399
|
s({
|
|
397
400
|
...o,
|
|
398
401
|
values: n
|
|
399
402
|
});
|
|
400
|
-
}, [o]),
|
|
403
|
+
}, [o]), _e = H((e) => {
|
|
401
404
|
let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
|
|
402
405
|
s({
|
|
403
406
|
...o,
|
|
404
407
|
values: n
|
|
405
408
|
});
|
|
406
|
-
}, [o]),
|
|
409
|
+
}, [o]), ve = H((e) => {
|
|
407
410
|
let t = e.target.value;
|
|
408
411
|
s({
|
|
409
412
|
...o,
|
|
410
413
|
values: t ? [t] : []
|
|
411
414
|
});
|
|
412
|
-
}, [o]),
|
|
413
|
-
|
|
415
|
+
}, [o]), V = H((e) => {
|
|
416
|
+
_(e), p(!1);
|
|
414
417
|
let t;
|
|
415
418
|
if (e === "custom") {
|
|
416
419
|
let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
417
420
|
t = [e, e];
|
|
418
|
-
} else t =
|
|
421
|
+
} else t = M(e) ? I(e, v) : I(e);
|
|
419
422
|
s({
|
|
420
423
|
...o,
|
|
421
424
|
dateRange: t
|
|
422
425
|
});
|
|
423
|
-
}, [o,
|
|
424
|
-
if (
|
|
426
|
+
}, [o, v]), ye = H((e) => {
|
|
427
|
+
if (b(e), M(m)) {
|
|
425
428
|
let t = I(m, e);
|
|
426
429
|
s({
|
|
427
430
|
...o,
|
|
428
431
|
dateRange: t
|
|
429
432
|
});
|
|
430
433
|
}
|
|
431
|
-
}, [o, m]),
|
|
434
|
+
}, [o, m]), be = H((e) => {
|
|
432
435
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
|
|
433
436
|
s({
|
|
434
437
|
...o,
|
|
435
438
|
dateRange: [t, n]
|
|
436
439
|
});
|
|
437
|
-
}, [o]),
|
|
440
|
+
}, [o]), xe = H((e) => {
|
|
438
441
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : ["", o.dateRange || ""])[0] || t;
|
|
439
442
|
s({
|
|
440
443
|
...o,
|
|
441
444
|
dateRange: [n, t]
|
|
442
445
|
});
|
|
443
|
-
}, [o]), Ce = a(
|
|
446
|
+
}, [o]), Ce = a(ae.find((e) => e.operator === o.operator)?.label || o.operator), we = a(C.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
|
|
444
447
|
filter: o,
|
|
445
|
-
operatorMeta:
|
|
446
|
-
shouldShowDateRange:
|
|
447
|
-
shouldShowComboBox:
|
|
448
|
+
operatorMeta: F,
|
|
449
|
+
shouldShowDateRange: oe,
|
|
450
|
+
shouldShowComboBox: L
|
|
448
451
|
}, Y = {
|
|
449
452
|
rangeType: m,
|
|
450
|
-
numberValue:
|
|
453
|
+
numberValue: v,
|
|
451
454
|
label: we,
|
|
452
455
|
isOpen: f,
|
|
453
456
|
onToggle: p,
|
|
454
|
-
onRangeTypeChange:
|
|
455
|
-
onNumberValueChange:
|
|
456
|
-
onCustomStartDate:
|
|
457
|
-
onCustomEndDate:
|
|
458
|
-
onOpen:
|
|
457
|
+
onRangeTypeChange: V,
|
|
458
|
+
onNumberValueChange: ye,
|
|
459
|
+
onCustomStartDate: be,
|
|
460
|
+
onCustomEndDate: xe,
|
|
461
|
+
onOpen: H(() => {
|
|
459
462
|
l(!1), d(!1);
|
|
460
463
|
}, [])
|
|
461
464
|
}, De = {
|
|
462
465
|
isOpen: u,
|
|
463
|
-
options:
|
|
464
|
-
loading:
|
|
465
|
-
error:
|
|
466
|
-
searchText:
|
|
467
|
-
highlightedIndex:
|
|
468
|
-
listRef:
|
|
469
|
-
onSearchTextChange:
|
|
466
|
+
options: R,
|
|
467
|
+
loading: se,
|
|
468
|
+
error: ue,
|
|
469
|
+
searchText: S,
|
|
470
|
+
highlightedIndex: O,
|
|
471
|
+
listRef: j,
|
|
472
|
+
onSearchTextChange: w,
|
|
470
473
|
onHighlightedIndexChange: k,
|
|
471
|
-
onSelect:
|
|
472
|
-
onRemove:
|
|
473
|
-
onKeyDown:
|
|
474
|
-
onOpen:
|
|
474
|
+
onSelect: B,
|
|
475
|
+
onRemove: pe,
|
|
476
|
+
onKeyDown: me,
|
|
477
|
+
onOpen: H(() => {
|
|
475
478
|
l(!1), p(!1), d((e) => !e);
|
|
476
479
|
}, [])
|
|
477
|
-
}, Oe =
|
|
478
|
-
onBetweenStart:
|
|
479
|
-
onBetweenEnd:
|
|
480
|
-
onDate:
|
|
481
|
-
onDirect:
|
|
480
|
+
}, Oe = W(() => ({
|
|
481
|
+
onBetweenStart: ge,
|
|
482
|
+
onBetweenEnd: _e,
|
|
483
|
+
onDate: ve,
|
|
484
|
+
onDirect: he
|
|
482
485
|
}), [
|
|
486
|
+
ge,
|
|
483
487
|
_e,
|
|
484
488
|
ve,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${S ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
|
|
489
|
+
he
|
|
490
|
+
]), ke = P ? Ie : ne ? Le : Fe;
|
|
491
|
+
return /* @__PURE__ */ q(Se, { children: /* @__PURE__ */ q("div", {
|
|
492
|
+
className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${E ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
|
|
490
493
|
onClick: r,
|
|
491
494
|
children: /* @__PURE__ */ J("div", {
|
|
492
|
-
ref:
|
|
493
|
-
className:
|
|
495
|
+
ref: A,
|
|
496
|
+
className: E ? "bg-dc-surface dc:rounded-lg dc:border border-dc-border" : "bg-dc-surface dc:rounded-lg dc:border border-dc-border dc:max-w-md dc:w-full",
|
|
494
497
|
style: {
|
|
495
|
-
...
|
|
498
|
+
...E ? {
|
|
496
499
|
position: "fixed",
|
|
497
|
-
...
|
|
500
|
+
...E,
|
|
498
501
|
maxWidth: "400px",
|
|
499
502
|
width: "100%"
|
|
500
503
|
} : {},
|
|
@@ -523,7 +526,7 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
523
526
|
className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
|
|
524
527
|
children: [/* @__PURE__ */ q(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ q("span", {
|
|
525
528
|
className: "dc:text-sm dc:font-medium text-dc-text",
|
|
526
|
-
children:
|
|
529
|
+
children: ie
|
|
527
530
|
})]
|
|
528
531
|
})] }),
|
|
529
532
|
/* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
|
|
@@ -542,8 +545,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
542
545
|
}), /* @__PURE__ */ q(Pe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
|
|
543
546
|
}), c && /* @__PURE__ */ q("div", {
|
|
544
547
|
className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded-sm dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
|
|
545
|
-
children:
|
|
546
|
-
onClick: () =>
|
|
548
|
+
children: ae.map((e) => /* @__PURE__ */ q("button", {
|
|
549
|
+
onClick: () => fe(e.operator),
|
|
547
550
|
className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${e.operator === o.operator ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
|
|
548
551
|
children: a(e.label)
|
|
549
552
|
}, e.operator))
|
|
@@ -580,8 +583,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
580
583
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
|
|
581
584
|
var ze = d("close"), Be = d("dimension"), Ve = d("timeDimension"), He = d("measure");
|
|
582
585
|
function Ue({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
583
|
-
let { t: i } = z(), [a, o] =
|
|
584
|
-
return /* @__PURE__ */ J(
|
|
586
|
+
let { t: i } = z(), [a, o] = K(!1), s = G(null), c = g(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = T(e.member, t), f = x[e.operator], p = f?.label ? i(f.label) : e.operator, m = We(e, f, i), h = l ? Ve : u ? He : Be;
|
|
587
|
+
return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("div", {
|
|
585
588
|
className: "dc:flex dc:items-start dc:gap-2 dc:px-2 dc:py-1.5 bg-dc-surface-secondary dc:rounded-lg dc:group hover:bg-dc-surface-tertiary dc:transition-all dc:duration-150 dc:w-full",
|
|
586
589
|
children: [
|
|
587
590
|
/* @__PURE__ */ q("span", {
|
|
@@ -638,22 +641,22 @@ function We(e, t, n) {
|
|
|
638
641
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
|
|
639
642
|
var Ge = d("add"), Ke = d("close");
|
|
640
643
|
function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
|
|
641
|
-
let { t: s } = z(), [c, l] =
|
|
642
|
-
|
|
644
|
+
let { t: s } = z(), [c, l] = K(!1), u = G(null);
|
|
645
|
+
U(() => {
|
|
643
646
|
let e = (e) => {
|
|
644
647
|
u.current && !u.current.contains(e.target) && l(!1);
|
|
645
648
|
};
|
|
646
649
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
647
650
|
}, []);
|
|
648
|
-
let d =
|
|
649
|
-
n(
|
|
650
|
-
}, [e, n]), f =
|
|
651
|
+
let d = H(() => {
|
|
652
|
+
n(te(e));
|
|
653
|
+
}, [e, n]), f = H((t, r) => {
|
|
651
654
|
let i = [...e.filters];
|
|
652
655
|
i[t] = r, n({
|
|
653
656
|
...e,
|
|
654
657
|
filters: i
|
|
655
658
|
});
|
|
656
|
-
}, [e, n]), p =
|
|
659
|
+
}, [e, n]), p = H((t) => {
|
|
657
660
|
let i = e.filters.filter((e, n) => n !== t);
|
|
658
661
|
i.length === 0 ? r() : n({
|
|
659
662
|
...e,
|
|
@@ -664,7 +667,7 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
664
667
|
n,
|
|
665
668
|
r,
|
|
666
669
|
a
|
|
667
|
-
]), m =
|
|
670
|
+
]), m = H((t) => {
|
|
668
671
|
let r = {
|
|
669
672
|
type: t,
|
|
670
673
|
filters: []
|
|
@@ -673,9 +676,9 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
673
676
|
...e,
|
|
674
677
|
filters: [...e.filters, r]
|
|
675
678
|
}), l(!1);
|
|
676
|
-
}, [e, n]), h =
|
|
679
|
+
}, [e, n]), h = H(() => {
|
|
677
680
|
i([]), l(!1);
|
|
678
|
-
}, [i]), g =
|
|
681
|
+
}, [i]), g = H((e) => (t = []) => {
|
|
679
682
|
i([e, ...t]);
|
|
680
683
|
}, [i]), _ = () => a % 2 == 0 ? "border-dc-border" : "border-dc-border dark:border-dc-border", v = () => e.type === "and" ? "bg-dc-info-bg/50" : "bg-dc-warning-bg/50", y = e.filters.length, b = s(y === 1 ? "filter.group.condition" : "filter.group.conditions");
|
|
681
684
|
return /* @__PURE__ */ J("div", {
|
|
@@ -746,12 +749,12 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
746
749
|
className: "dc:text-xs text-dc-primary dc:hover:underline",
|
|
747
750
|
children: s("filter.group.addFilterLink")
|
|
748
751
|
})]
|
|
749
|
-
}) : e.filters.map((e, n) =>
|
|
752
|
+
}) : e.filters.map((e, n) => ne(e) ? /* @__PURE__ */ q(Ue, {
|
|
750
753
|
filter: e,
|
|
751
754
|
schema: t,
|
|
752
755
|
onUpdate: (e) => f(n, e),
|
|
753
756
|
onRemove: () => p(n)
|
|
754
|
-
}, `filter-${n}`) :
|
|
757
|
+
}, `filter-${n}`) : P(e) ? /* @__PURE__ */ q(qe, {
|
|
755
758
|
group: e,
|
|
756
759
|
schema: t,
|
|
757
760
|
onUpdate: (e) => f(n, e),
|
|
@@ -766,42 +769,42 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
766
769
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
|
|
767
770
|
var Je = d("add");
|
|
768
771
|
function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
|
|
769
|
-
let { t: a } = z(), [o, s] =
|
|
772
|
+
let { t: a } = z(), [o, s] = K(!1), [c, l] = K(!1), u = G([]), d = R(e), f = H((e) => {
|
|
770
773
|
e.preventDefault(), e.stopPropagation(), l(!0);
|
|
771
|
-
}, []), p =
|
|
774
|
+
}, []), p = H((e) => {
|
|
772
775
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
773
|
-
}, []), m =
|
|
776
|
+
}, []), m = H((e) => {
|
|
774
777
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
775
778
|
try {
|
|
776
779
|
let t = JSON.parse(e.dataTransfer.getData("text/plain"));
|
|
777
780
|
t.field && r && r(t.field);
|
|
778
781
|
} catch {}
|
|
779
|
-
}, [r]), h =
|
|
782
|
+
}, [r]), h = ee(e), g = H((t, r, i) => {
|
|
780
783
|
let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
|
|
781
784
|
member: t.name,
|
|
782
785
|
operator: o,
|
|
783
786
|
values: []
|
|
784
787
|
};
|
|
785
|
-
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(
|
|
786
|
-
}, [e, n]), _ =
|
|
788
|
+
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(re(e, u.current, c)), s(!1), u.current = [];
|
|
789
|
+
}, [e, n]), _ = H((t, r) => {
|
|
787
790
|
let i = [...e];
|
|
788
791
|
i[t] = r, n(i);
|
|
789
|
-
}, [e, n]), v =
|
|
790
|
-
n(
|
|
791
|
-
}, [e, n]), y =
|
|
792
|
+
}, [e, n]), v = H((t) => {
|
|
793
|
+
n(ie(e, t));
|
|
794
|
+
}, [e, n]), y = H(() => {
|
|
792
795
|
n([]);
|
|
793
|
-
}, [n]), b =
|
|
796
|
+
}, [n]), b = H(() => {
|
|
794
797
|
u.current = [], s(!0);
|
|
795
|
-
}, []), x =
|
|
798
|
+
}, []), x = H((e) => (t = []) => {
|
|
796
799
|
u.current = [...e, ...t], s(!0);
|
|
797
800
|
}, []), S = (n, r, i = []) => {
|
|
798
801
|
let a = [...i, r];
|
|
799
|
-
return
|
|
802
|
+
return ne(n) ? /* @__PURE__ */ q(Ue, {
|
|
800
803
|
filter: n,
|
|
801
804
|
schema: t,
|
|
802
805
|
onUpdate: (e) => _(r, e),
|
|
803
806
|
onRemove: () => v(r)
|
|
804
|
-
}, `filter-${a.join("-")}`) :
|
|
807
|
+
}, `filter-${a.join("-")}`) : P(n) ? /* @__PURE__ */ q(qe, {
|
|
805
808
|
group: n,
|
|
806
809
|
schema: t,
|
|
807
810
|
onUpdate: (e) => _(r, e),
|
|
@@ -815,7 +818,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
815
818
|
onClick: b,
|
|
816
819
|
className: "dc:flex dc:items-center dc:justify-between dc:mb-3 dc:w-full dc:py-1 dc:px-2 dc:-ml-2 dc:rounded-lg hover:bg-dc-primary/10 dc:transition-colors dc:group",
|
|
817
820
|
title: "Add filter",
|
|
818
|
-
children: [/* @__PURE__ */ J(
|
|
821
|
+
children: [/* @__PURE__ */ J(ve, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
|
|
819
822
|
className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
|
|
820
823
|
children: [
|
|
821
824
|
"(",
|
|
@@ -851,7 +854,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
851
854
|
children: e.map((e, t) => S(e, t))
|
|
852
855
|
})
|
|
853
856
|
}),
|
|
854
|
-
/* @__PURE__ */ q(
|
|
857
|
+
/* @__PURE__ */ q(E, {
|
|
855
858
|
isOpen: o,
|
|
856
859
|
onClose: () => {
|
|
857
860
|
s(!1), u.current = [];
|
|
@@ -923,8 +926,8 @@ function tt({ issue: e }) {
|
|
|
923
926
|
});
|
|
924
927
|
}
|
|
925
928
|
function nt({ text: e }) {
|
|
926
|
-
let { t } = z(), [n, r] =
|
|
927
|
-
return
|
|
929
|
+
let { t } = z(), [n, r] = V.useState(!1), i = V.useRef(null);
|
|
930
|
+
return V.useEffect(() => () => {
|
|
928
931
|
i.current && clearTimeout(i.current);
|
|
929
932
|
}, []), /* @__PURE__ */ q("button", {
|
|
930
933
|
onClick: async () => {
|
|
@@ -965,7 +968,7 @@ function rt({ rec: e }) {
|
|
|
965
968
|
}),
|
|
966
969
|
e.sql && /* @__PURE__ */ q("div", {
|
|
967
970
|
className: "dc:mt-2",
|
|
968
|
-
children: /* @__PURE__ */ q(
|
|
971
|
+
children: /* @__PURE__ */ q(m, {
|
|
969
972
|
code: e.sql,
|
|
970
973
|
language: "sql",
|
|
971
974
|
headerRight: /* @__PURE__ */ q(nt, { text: e.sql })
|
|
@@ -1000,12 +1003,12 @@ function rt({ rec: e }) {
|
|
|
1000
1003
|
}
|
|
1001
1004
|
function it({ analysis: e, onClose: t, onClear: n }) {
|
|
1002
1005
|
let { t: r } = z(), i = t || n;
|
|
1003
|
-
return
|
|
1006
|
+
return V.useEffect(() => {
|
|
1004
1007
|
let e = (e) => {
|
|
1005
1008
|
e.key === "Escape" && i && i();
|
|
1006
1009
|
};
|
|
1007
1010
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
1008
|
-
}, [i]),
|
|
1011
|
+
}, [i]), V.useEffect(() => (document.body.style.overflow = "hidden", () => {
|
|
1009
1012
|
document.body.style.overflow = "";
|
|
1010
1013
|
}), []), /* @__PURE__ */ J("div", {
|
|
1011
1014
|
className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4 bg-black/50",
|
|
@@ -1272,7 +1275,7 @@ function Mt(e, t, n, r) {
|
|
|
1272
1275
|
//#endregion
|
|
1273
1276
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
|
|
1274
1277
|
function Nt({ title: e, height: t, className: n, children: r }) {
|
|
1275
|
-
return /* @__PURE__ */ J(
|
|
1278
|
+
return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("h4", {
|
|
1276
1279
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1277
1280
|
children: e
|
|
1278
1281
|
}), /* @__PURE__ */ q("div", {
|
|
@@ -1293,7 +1296,7 @@ function Pt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSq
|
|
|
1293
1296
|
height: o,
|
|
1294
1297
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1295
1298
|
children: n.message
|
|
1296
|
-
}) : e ? /* @__PURE__ */ q(
|
|
1299
|
+
}) : e ? /* @__PURE__ */ q(m, {
|
|
1297
1300
|
code: i,
|
|
1298
1301
|
language: "sql",
|
|
1299
1302
|
title: a,
|
|
@@ -1362,7 +1365,7 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1362
1365
|
n.summary.usedIndexes.join(", ")
|
|
1363
1366
|
]
|
|
1364
1367
|
}),
|
|
1365
|
-
/* @__PURE__ */ q(
|
|
1368
|
+
/* @__PURE__ */ q(m, {
|
|
1366
1369
|
code: n.raw,
|
|
1367
1370
|
language: "sql",
|
|
1368
1371
|
title: a("debug.executionPlanTitle", { database: n.summary.database }),
|
|
@@ -1374,8 +1377,8 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1374
1377
|
}
|
|
1375
1378
|
//#endregion
|
|
1376
1379
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
|
|
1377
|
-
var Lt =
|
|
1378
|
-
let { t: v } = z(), [y, b] =
|
|
1380
|
+
var Lt = be(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder: r = "Add metrics to generate SQL", explainResult: i, explainLoading: a = !1, explainHasRun: o = !1, explainError: s, runExplain: c, aiAnalysis: l, aiAnalysisLoading: u = !1, aiAnalysisError: d, runAIAnalysis: f, clearAIAnalysis: p, enableAI: m = !1, query: h, title: g = "Generated SQL", height: _ = "16rem" }) {
|
|
1381
|
+
let { t: v } = z(), [y, b] = K(!1), [x, S] = K(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
|
|
1379
1382
|
f && i && h && (f(i, h), S(!0));
|
|
1380
1383
|
}, T = () => {
|
|
1381
1384
|
S(!1);
|
|
@@ -1383,10 +1386,10 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1383
1386
|
onClick: w,
|
|
1384
1387
|
disabled: u,
|
|
1385
1388
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded-sm bg-dc-accent text-white hover:bg-dc-accent-hover dc:disabled:opacity-50 dc:disabled:cursor-not-allowed dc:flex dc:items-center dc:gap-1",
|
|
1386
|
-
children: u ? /* @__PURE__ */ J(
|
|
1389
|
+
children: u ? /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("span", {
|
|
1387
1390
|
className: "dc:animate-spin",
|
|
1388
1391
|
children: "⟳"
|
|
1389
|
-
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(
|
|
1392
|
+
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(Se, { children: `✨ ${v("debug.aiAnalysis")}` })
|
|
1390
1393
|
}) : null;
|
|
1391
1394
|
return /* @__PURE__ */ J("div", {
|
|
1392
1395
|
className: "dc:space-y-3",
|
|
@@ -1399,7 +1402,7 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1399
1402
|
formattedSql: C,
|
|
1400
1403
|
title: g,
|
|
1401
1404
|
height: _,
|
|
1402
|
-
headerRight: /* @__PURE__ */ J(
|
|
1405
|
+
headerRight: /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("label", {
|
|
1403
1406
|
className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
|
|
1404
1407
|
children: [/* @__PURE__ */ q("input", {
|
|
1405
1408
|
type: "checkbox",
|
|
@@ -1452,53 +1455,55 @@ function Rt() {
|
|
|
1452
1455
|
function zt(e) {
|
|
1453
1456
|
return e.map((e) => e.field);
|
|
1454
1457
|
}
|
|
1455
|
-
function Bt(e, t) {
|
|
1456
|
-
let
|
|
1457
|
-
for (let
|
|
1458
|
+
function Bt(e, t, n) {
|
|
1459
|
+
let r = [], i = [];
|
|
1460
|
+
for (let a of e) if (a.isTimeDimension) {
|
|
1458
1461
|
let e = {
|
|
1459
|
-
dimension:
|
|
1460
|
-
granularity:
|
|
1462
|
+
dimension: a.field,
|
|
1463
|
+
granularity: a.granularity || "day",
|
|
1464
|
+
...a.fillMissingDates !== void 0 && !(n && a.fillMissingDates) && { fillMissingDates: a.fillMissingDates }
|
|
1461
1465
|
};
|
|
1462
|
-
if (
|
|
1463
|
-
let n = Ce(
|
|
1466
|
+
if (a.enableComparison && !n) {
|
|
1467
|
+
let n = Ce(a.field, t);
|
|
1464
1468
|
n && (e.compareDateRange = n);
|
|
1465
1469
|
}
|
|
1466
|
-
|
|
1467
|
-
} else
|
|
1470
|
+
i.push(e);
|
|
1471
|
+
} else r.push(a.field);
|
|
1468
1472
|
return {
|
|
1469
|
-
dimensions:
|
|
1470
|
-
timeDimensions:
|
|
1473
|
+
dimensions: r,
|
|
1474
|
+
timeDimensions: i
|
|
1471
1475
|
};
|
|
1472
1476
|
}
|
|
1473
|
-
function Vt(e) {
|
|
1474
|
-
let { dimensions:
|
|
1477
|
+
function Vt(e, t) {
|
|
1478
|
+
let { dimensions: n, timeDimensions: r } = Bt(e.breakdowns, e.filters, t), i = {
|
|
1475
1479
|
measures: zt(e.metrics),
|
|
1476
|
-
dimensions:
|
|
1480
|
+
dimensions: n
|
|
1477
1481
|
};
|
|
1478
|
-
return
|
|
1482
|
+
return r.length > 0 && (i.timeDimensions = r), e.filters.length > 0 && (i.filters = e.filters), e.order && Object.keys(e.order).length > 0 && (i.order = e.order), e.limit != null && (i.limit = e.limit), e.fillMissingDatesValue !== void 0 && (i.fillMissingDatesValue = e.fillMissingDatesValue), t && (i.ungrouped = !0), i;
|
|
1479
1483
|
}
|
|
1480
1484
|
function Ht(e) {
|
|
1481
1485
|
return e.map((e, t) => ({
|
|
1482
|
-
id:
|
|
1486
|
+
id: f(),
|
|
1483
1487
|
field: e,
|
|
1484
|
-
label:
|
|
1488
|
+
label: w(t)
|
|
1485
1489
|
}));
|
|
1486
1490
|
}
|
|
1487
1491
|
function Ut(e) {
|
|
1488
1492
|
let t = [];
|
|
1489
1493
|
if (e.dimensions) for (let n of e.dimensions) t.push({
|
|
1490
|
-
id:
|
|
1494
|
+
id: f(),
|
|
1491
1495
|
field: n,
|
|
1492
1496
|
isTimeDimension: !1
|
|
1493
1497
|
});
|
|
1494
1498
|
if (e.timeDimensions) for (let n of e.timeDimensions) {
|
|
1495
1499
|
let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
|
|
1496
1500
|
t.push({
|
|
1497
|
-
id:
|
|
1501
|
+
id: f(),
|
|
1498
1502
|
field: n.dimension,
|
|
1499
1503
|
granularity: n.granularity,
|
|
1500
1504
|
isTimeDimension: !0,
|
|
1501
|
-
enableComparison: e
|
|
1505
|
+
enableComparison: e,
|
|
1506
|
+
...n.fillMissingDates !== void 0 && { fillMissingDates: n.fillMissingDates }
|
|
1502
1507
|
});
|
|
1503
1508
|
}
|
|
1504
1509
|
return t;
|
|
@@ -1510,6 +1515,7 @@ function Wt(e) {
|
|
|
1510
1515
|
filters: e.filters || [],
|
|
1511
1516
|
order: e.order,
|
|
1512
1517
|
limit: e.limit,
|
|
1518
|
+
...e.fillMissingDatesValue !== void 0 && { fillMissingDatesValue: e.fillMissingDatesValue },
|
|
1513
1519
|
validationStatus: "idle",
|
|
1514
1520
|
validationError: null
|
|
1515
1521
|
};
|
|
@@ -1556,16 +1562,16 @@ var X = {
|
|
|
1556
1562
|
};
|
|
1557
1563
|
},
|
|
1558
1564
|
save(e, t, n) {
|
|
1559
|
-
let r =
|
|
1560
|
-
queries: r,
|
|
1561
|
-
mergeStrategy: e.mergeStrategy
|
|
1562
|
-
};
|
|
1565
|
+
let r = t.query || this.getDefaultChartConfig(), i = l(r.chartType), a = e.queryStates.map((e) => Vt(e, i));
|
|
1563
1566
|
return {
|
|
1564
1567
|
version: 1,
|
|
1565
1568
|
analysisType: "query",
|
|
1566
1569
|
activeView: n,
|
|
1567
|
-
charts: { query:
|
|
1568
|
-
query:
|
|
1570
|
+
charts: { query: r },
|
|
1571
|
+
query: a.length === 1 && e.mergeStrategy === "concat" ? a[0] : {
|
|
1572
|
+
queries: a,
|
|
1573
|
+
mergeStrategy: e.mergeStrategy
|
|
1574
|
+
}
|
|
1569
1575
|
};
|
|
1570
1576
|
},
|
|
1571
1577
|
validate(e) {
|
|
@@ -1599,7 +1605,7 @@ var X = {
|
|
|
1599
1605
|
}
|
|
1600
1606
|
}, Z = /* @__PURE__ */ new Map(), Kt = !1;
|
|
1601
1607
|
function qt() {
|
|
1602
|
-
Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel",
|
|
1608
|
+
Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", v), Z.has("flow") || Z.set("flow", _), Z.has("retention") || Z.set("retention", S), !0);
|
|
1603
1609
|
}
|
|
1604
1610
|
var Q = {
|
|
1605
1611
|
register(e) {
|
|
@@ -1624,9 +1630,9 @@ var Q = {
|
|
|
1624
1630
|
analysisType: "query",
|
|
1625
1631
|
charts: {
|
|
1626
1632
|
query: X.getDefaultChartConfig(),
|
|
1627
|
-
funnel:
|
|
1628
|
-
flow:
|
|
1629
|
-
retention:
|
|
1633
|
+
funnel: v.getDefaultChartConfig(),
|
|
1634
|
+
flow: _.getDefaultChartConfig(),
|
|
1635
|
+
retention: S.getDefaultChartConfig()
|
|
1630
1636
|
},
|
|
1631
1637
|
activeViews: {
|
|
1632
1638
|
query: "chart",
|
|
@@ -1868,7 +1874,8 @@ var Q = {
|
|
|
1868
1874
|
...Y(),
|
|
1869
1875
|
metrics: [...t.metrics],
|
|
1870
1876
|
breakdowns: [...t.breakdowns],
|
|
1871
|
-
filters: [...t.filters]
|
|
1877
|
+
filters: [...t.filters],
|
|
1878
|
+
...t.fillMissingDatesValue !== void 0 && { fillMissingDatesValue: t.fillMissingDatesValue }
|
|
1872
1879
|
};
|
|
1873
1880
|
return {
|
|
1874
1881
|
queryStates: [...e.queryStates, n],
|
|
@@ -1885,9 +1892,9 @@ var Q = {
|
|
|
1885
1892
|
}),
|
|
1886
1893
|
addMetric: (t, n) => e((e) => {
|
|
1887
1894
|
let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || Y(), o = {
|
|
1888
|
-
id:
|
|
1895
|
+
id: f(),
|
|
1889
1896
|
field: t,
|
|
1890
|
-
label: n ||
|
|
1897
|
+
label: n || w(a.metrics.length)
|
|
1891
1898
|
};
|
|
1892
1899
|
return i[r] = {
|
|
1893
1900
|
...a,
|
|
@@ -1910,9 +1917,9 @@ var Q = {
|
|
|
1910
1917
|
};
|
|
1911
1918
|
else {
|
|
1912
1919
|
let e = {
|
|
1913
|
-
id:
|
|
1920
|
+
id: f(),
|
|
1914
1921
|
field: t,
|
|
1915
|
-
label:
|
|
1922
|
+
label: w(i.metrics.length)
|
|
1916
1923
|
};
|
|
1917
1924
|
r[n] = {
|
|
1918
1925
|
...i,
|
|
@@ -1932,7 +1939,7 @@ var Q = {
|
|
|
1932
1939
|
let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || Y();
|
|
1933
1940
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
1934
1941
|
let s = {
|
|
1935
|
-
id:
|
|
1942
|
+
id: f(),
|
|
1936
1943
|
field: t,
|
|
1937
1944
|
isTimeDimension: n,
|
|
1938
1945
|
granularity: n ? r || "month" : void 0
|
|
@@ -1959,7 +1966,7 @@ var Q = {
|
|
|
1959
1966
|
else {
|
|
1960
1967
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
1961
1968
|
let s = {
|
|
1962
|
-
id:
|
|
1969
|
+
id: f(),
|
|
1963
1970
|
field: t,
|
|
1964
1971
|
isTimeDimension: n,
|
|
1965
1972
|
granularity: n ? r || "month" : void 0
|
|
@@ -2096,11 +2103,11 @@ var Q = {
|
|
|
2096
2103
|
},
|
|
2097
2104
|
buildCurrentQuery: () => {
|
|
2098
2105
|
let e = t(), n = e.queryStates[e.activeQueryIndex] || Y(), r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2099
|
-
return Te(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r);
|
|
2106
|
+
return Te(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r, n.fillMissingDatesValue);
|
|
2100
2107
|
},
|
|
2101
2108
|
buildAllQueries: () => {
|
|
2102
2109
|
let e = t(), n = e.queryStates[0]?.breakdowns || [], r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2103
|
-
return e.queryStates.map((t, i) => Te(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r));
|
|
2110
|
+
return e.queryStates.map((t, i) => Te(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r, t.fillMissingDatesValue));
|
|
2104
2111
|
},
|
|
2105
2112
|
buildMultiQueryConfig: () => {
|
|
2106
2113
|
let e = t();
|
|
@@ -2124,7 +2131,7 @@ var Q = {
|
|
|
2124
2131
|
...Qt(),
|
|
2125
2132
|
addFunnelStep: () => e((e) => {
|
|
2126
2133
|
let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
|
|
2127
|
-
id:
|
|
2134
|
+
id: f(),
|
|
2128
2135
|
name: `Step ${e.funnelSteps.length + 1}`,
|
|
2129
2136
|
cube: e.funnelCube || "",
|
|
2130
2137
|
filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
|
|
@@ -2272,7 +2279,7 @@ var Q = {
|
|
|
2272
2279
|
joinStrategy: e.joinStrategy
|
|
2273
2280
|
} };
|
|
2274
2281
|
}
|
|
2275
|
-
}), nn = () => ({ ...
|
|
2282
|
+
}), nn = () => ({ ...D }), rn = (e, t, n) => ({
|
|
2276
2283
|
...nn(),
|
|
2277
2284
|
setRetentionCube: (t) => e(() => ({
|
|
2278
2285
|
retentionCube: t,
|
|
@@ -2455,15 +2462,16 @@ var Q = {
|
|
|
2455
2462
|
//#region src/client/stores/optionsToAnalysisConfig.ts
|
|
2456
2463
|
function cn(e) {
|
|
2457
2464
|
let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
|
|
2458
|
-
id:
|
|
2465
|
+
id: f(),
|
|
2459
2466
|
field: e,
|
|
2460
2467
|
isTimeDimension: !1
|
|
2461
2468
|
})), ...n.map((e) => ({
|
|
2462
|
-
id:
|
|
2469
|
+
id: f(),
|
|
2463
2470
|
field: e.dimension,
|
|
2464
2471
|
granularity: e.granularity,
|
|
2465
2472
|
isTimeDimension: !0,
|
|
2466
|
-
enableComparison: !!(e.compareDateRange && e.compareDateRange.length > 0)
|
|
2473
|
+
enableComparison: !!(e.compareDateRange && e.compareDateRange.length > 0),
|
|
2474
|
+
...e.fillMissingDates !== void 0 && { fillMissingDates: e.fillMissingDates }
|
|
2467
2475
|
}))], i = t;
|
|
2468
2476
|
for (let e of n) {
|
|
2469
2477
|
if (!e.compareDateRange || e.compareDateRange.length === 0) continue;
|
|
@@ -2487,13 +2495,14 @@ function cn(e) {
|
|
|
2487
2495
|
return {
|
|
2488
2496
|
...Y(),
|
|
2489
2497
|
metrics: (e.measures || []).map((e, t) => ({
|
|
2490
|
-
id:
|
|
2498
|
+
id: f(),
|
|
2491
2499
|
field: e,
|
|
2492
|
-
label:
|
|
2500
|
+
label: w(t)
|
|
2493
2501
|
})),
|
|
2494
2502
|
breakdowns: r,
|
|
2495
2503
|
filters: i,
|
|
2496
|
-
order: e.order
|
|
2504
|
+
order: e.order,
|
|
2505
|
+
...e.fillMissingDatesValue !== void 0 && { fillMissingDatesValue: e.fillMissingDatesValue }
|
|
2497
2506
|
};
|
|
2498
2507
|
}
|
|
2499
2508
|
function ln(e) {
|
|
@@ -2511,8 +2520,8 @@ function dn(e) {
|
|
|
2511
2520
|
return e.initialActiveView || "chart";
|
|
2512
2521
|
}
|
|
2513
2522
|
function fn(e) {
|
|
2514
|
-
let t = un(
|
|
2515
|
-
return
|
|
2523
|
+
let t = un(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
|
|
2524
|
+
return v.save({
|
|
2516
2525
|
funnelCube: n.funnelCube ?? null,
|
|
2517
2526
|
funnelSteps: n.funnelSteps || [],
|
|
2518
2527
|
activeFunnelStepIndex: 0,
|
|
@@ -2521,8 +2530,8 @@ function fn(e) {
|
|
|
2521
2530
|
}, { funnel: t }, dn(e));
|
|
2522
2531
|
}
|
|
2523
2532
|
function pn(e) {
|
|
2524
|
-
let t = un(
|
|
2525
|
-
return
|
|
2533
|
+
let t = un(_, e.initialChartConfig), n = e.initialFlowState ?? {};
|
|
2534
|
+
return _.save({
|
|
2526
2535
|
flowCube: n.flowCube ?? null,
|
|
2527
2536
|
flowBindingKey: n.flowBindingKey ?? null,
|
|
2528
2537
|
flowTimeDimension: n.flowTimeDimension ?? null,
|
|
@@ -2537,8 +2546,8 @@ function pn(e) {
|
|
|
2537
2546
|
}, { flow: t }, dn(e));
|
|
2538
2547
|
}
|
|
2539
2548
|
function mn(e) {
|
|
2540
|
-
let t = un(
|
|
2541
|
-
return
|
|
2549
|
+
let t = un(S, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = O(k);
|
|
2550
|
+
return S.save({
|
|
2542
2551
|
retentionCube: n.retentionCube ?? null,
|
|
2543
2552
|
retentionBindingKey: n.retentionBindingKey ?? null,
|
|
2544
2553
|
retentionTimeDimension: n.retentionTimeDimension ?? null,
|
|
@@ -2592,9 +2601,9 @@ function yn(e, t) {
|
|
|
2592
2601
|
...nn(),
|
|
2593
2602
|
charts: {
|
|
2594
2603
|
query: X.getDefaultChartConfig(),
|
|
2595
|
-
funnel:
|
|
2596
|
-
flow:
|
|
2597
|
-
retention:
|
|
2604
|
+
funnel: v.getDefaultChartConfig(),
|
|
2605
|
+
flow: _.getDefaultChartConfig(),
|
|
2606
|
+
retention: S.getDefaultChartConfig()
|
|
2598
2607
|
},
|
|
2599
2608
|
activeViews: {
|
|
2600
2609
|
query: "chart",
|
|
@@ -2610,21 +2619,21 @@ function yn(e, t) {
|
|
|
2610
2619
|
...Qt(),
|
|
2611
2620
|
charts: {
|
|
2612
2621
|
...e.charts,
|
|
2613
|
-
funnel:
|
|
2622
|
+
funnel: v.getDefaultChartConfig()
|
|
2614
2623
|
}
|
|
2615
2624
|
};
|
|
2616
2625
|
case "flow": return {
|
|
2617
2626
|
...en(),
|
|
2618
2627
|
charts: {
|
|
2619
2628
|
...e.charts,
|
|
2620
|
-
flow:
|
|
2629
|
+
flow: _.getDefaultChartConfig()
|
|
2621
2630
|
}
|
|
2622
2631
|
};
|
|
2623
2632
|
case "retention": return {
|
|
2624
2633
|
...nn(),
|
|
2625
2634
|
charts: {
|
|
2626
2635
|
...e.charts,
|
|
2627
|
-
retention:
|
|
2636
|
+
retention: S.getDefaultChartConfig()
|
|
2628
2637
|
}
|
|
2629
2638
|
};
|
|
2630
2639
|
default: return {
|
|
@@ -2671,10 +2680,10 @@ function bn(n = {}) {
|
|
|
2671
2680
|
return a()(i(e(t(o, {
|
|
2672
2681
|
name: n.storageKey || "drizzle-cube-analysis-builder-v3",
|
|
2673
2682
|
partialize: (e) => e.saveWorkspace(),
|
|
2674
|
-
merge: (e, t) => e &&
|
|
2683
|
+
merge: (e, t) => e && j(e) ? {
|
|
2675
2684
|
...t,
|
|
2676
2685
|
_persistedWorkspace: e
|
|
2677
|
-
} : e &&
|
|
2686
|
+
} : e && A(e) ? {
|
|
2678
2687
|
...t,
|
|
2679
2688
|
_persistedConfig: e
|
|
2680
2689
|
} : r ? {
|
|
@@ -2697,9 +2706,9 @@ function bn(n = {}) {
|
|
|
2697
2706
|
}
|
|
2698
2707
|
})), { name: "AnalysisBuilderStore" }));
|
|
2699
2708
|
}
|
|
2700
|
-
var xn =
|
|
2709
|
+
var xn = ye(null);
|
|
2701
2710
|
function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
|
|
2702
|
-
let u =
|
|
2711
|
+
let u = G(null);
|
|
2703
2712
|
return u.current ||= bn({
|
|
2704
2713
|
initialQuery: t,
|
|
2705
2714
|
initialChartConfig: n,
|
|
@@ -2716,12 +2725,12 @@ function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
|
|
|
2716
2725
|
});
|
|
2717
2726
|
}
|
|
2718
2727
|
function $(e) {
|
|
2719
|
-
let t =
|
|
2728
|
+
let t = xe(xn);
|
|
2720
2729
|
if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
|
|
2721
2730
|
return r(t, e);
|
|
2722
2731
|
}
|
|
2723
2732
|
function Cn() {
|
|
2724
|
-
let e =
|
|
2733
|
+
let e = xe(xn);
|
|
2725
2734
|
if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
|
|
2726
2735
|
return e;
|
|
2727
2736
|
}
|
|
@@ -2869,22 +2878,22 @@ function Vn(e) {
|
|
|
2869
2878
|
//#endregion
|
|
2870
2879
|
//#region src/client/hooks/useAnalysisState.ts
|
|
2871
2880
|
function Hn(e = {}) {
|
|
2872
|
-
let { externalColorPalette: t } = e, r = Cn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), u = $((e) => e.addQuery), d = $((e) => e.removeQuery),
|
|
2881
|
+
let { externalColorPalette: t } = e, r = Cn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), u = $((e) => e.addQuery), d = $((e) => e.removeQuery), f = $((e) => e.getCurrentState), m = $((e) => e.getMergeKeys), h = $((e) => e.isMultiQueryMode), g = f(), _ = h(), v = m(), y = $((e) => l(e.charts[e.analysisType]?.chartType ?? "")), b = W(() => {
|
|
2873
2882
|
let e = i[a] || g;
|
|
2874
|
-
return Te(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
|
|
2883
|
+
return Te(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y, e.fillMissingDatesValue);
|
|
2875
2884
|
}, [
|
|
2876
2885
|
i,
|
|
2877
2886
|
a,
|
|
2878
2887
|
g,
|
|
2879
2888
|
y
|
|
2880
|
-
]), x =
|
|
2889
|
+
]), x = W(() => {
|
|
2881
2890
|
let e = i[0]?.breakdowns || [];
|
|
2882
|
-
return i.map((t, n) => Te(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
|
|
2891
|
+
return i.map((t, n) => Te(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y, t.fillMissingDatesValue));
|
|
2883
2892
|
}, [
|
|
2884
2893
|
i,
|
|
2885
2894
|
o,
|
|
2886
2895
|
y
|
|
2887
|
-
]), S =
|
|
2896
|
+
]), S = W(() => {
|
|
2888
2897
|
if (i.length <= 1) return null;
|
|
2889
2898
|
let e = x.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
|
|
2890
2899
|
return e.length < 2 ? null : {
|
|
@@ -2898,12 +2907,12 @@ function Hn(e = {}) {
|
|
|
2898
2907
|
i.length,
|
|
2899
2908
|
o,
|
|
2900
2909
|
v
|
|
2901
|
-
]), C =
|
|
2910
|
+
]), C = W(() => _ ? Ln(x, o, v || []) : null, [
|
|
2902
2911
|
_,
|
|
2903
2912
|
x,
|
|
2904
2913
|
o,
|
|
2905
2914
|
v
|
|
2906
|
-
]), w =
|
|
2915
|
+
]), w = W(() => b.measures && b.measures.length > 0 || b.dimensions && b.dimensions.length > 0 || b.timeDimensions && b.timeDimensions.length > 0, [b]), T = W(() => {
|
|
2907
2916
|
if (!_) return g.metrics;
|
|
2908
2917
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
2909
2918
|
for (let n = 0; n < i.length; n++) {
|
|
@@ -2921,7 +2930,7 @@ function Hn(e = {}) {
|
|
|
2921
2930
|
_,
|
|
2922
2931
|
i,
|
|
2923
2932
|
g.metrics
|
|
2924
|
-
]), E =
|
|
2933
|
+
]), E = W(() => {
|
|
2925
2934
|
if (!_) return g.breakdowns;
|
|
2926
2935
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
2927
2936
|
for (let n of i) for (let r of n.breakdowns) e.has(r.field) || (e.add(r.field), t.push(r));
|
|
@@ -2930,67 +2939,67 @@ function Hn(e = {}) {
|
|
|
2930
2939
|
_,
|
|
2931
2940
|
i,
|
|
2932
2941
|
g.breakdowns
|
|
2933
|
-
]), D =
|
|
2942
|
+
]), D = W(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : g.breakdowns, [
|
|
2934
2943
|
o,
|
|
2935
2944
|
a,
|
|
2936
2945
|
i,
|
|
2937
2946
|
g.breakdowns
|
|
2938
|
-
]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey),
|
|
2947
|
+
]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey), A = $((e) => e.funnelCube), j = $((e) => e.funnelSteps), ee = $((e) => e.activeFunnelStepIndex), M = $((e) => e.funnelTimeDimension), N = W(() => O !== "funnel" || !k?.dimension || !M || !j || j.length < 2 ? !1 : j.every((e) => e.filters.length > 0), [
|
|
2939
2948
|
O,
|
|
2940
2949
|
k,
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
]),
|
|
2950
|
+
M,
|
|
2951
|
+
j
|
|
2952
|
+
]), te = $((e) => e.charts.funnel?.chartType) || "funnel", P = $((e) => e.charts.funnel?.chartConfig), ne = W(() => P || {}, [P]), re = $((e) => e.charts.funnel?.displayConfig), ie = W(() => re || {
|
|
2944
2953
|
showLegend: !0,
|
|
2945
2954
|
showGrid: !0,
|
|
2946
2955
|
showTooltip: !0
|
|
2947
|
-
}, [
|
|
2956
|
+
}, [re]), F = $((e) => e.flowCube), I = $((e) => e.flowBindingKey), ae = $((e) => e.flowTimeDimension), oe = $((e) => e.eventDimension), L = $((e) => e.startingStep), R = $((e) => e.stepsBefore), se = $((e) => e.stepsAfter), ce = $((e) => e.joinStrategy), le = $((e) => e.charts.flow?.displayConfig), ue = W(() => le || {
|
|
2948
2957
|
showLegend: !0,
|
|
2949
2958
|
showGrid: !0,
|
|
2950
2959
|
showTooltip: !0
|
|
2951
|
-
}, [
|
|
2960
|
+
}, [le]), de = $((e) => e.charts.flow?.chartType) || "sankey", z = $((e) => e.buildFunnelQueryFromSteps), fe = W(() => O === "funnel" ? z() : null, [
|
|
2952
2961
|
O,
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
]),
|
|
2962
|
+
z,
|
|
2963
|
+
j
|
|
2964
|
+
]), B = $((e) => e.buildFlowQuery), pe = W(() => O === "flow" ? B() : null, [
|
|
2956
2965
|
O,
|
|
2957
|
-
|
|
2958
|
-
P,
|
|
2959
|
-
oe,
|
|
2960
|
-
se,
|
|
2966
|
+
B,
|
|
2961
2967
|
F,
|
|
2962
2968
|
I,
|
|
2969
|
+
ae,
|
|
2970
|
+
oe,
|
|
2963
2971
|
L,
|
|
2964
|
-
|
|
2972
|
+
R,
|
|
2973
|
+
se,
|
|
2965
2974
|
de,
|
|
2966
|
-
|
|
2967
|
-
]),
|
|
2975
|
+
ce
|
|
2976
|
+
]), me = $((e) => e.retentionCube), he = $((e) => e.retentionBindingKey), ge = $((e) => e.retentionTimeDimension), _e = $((e) => e.retentionDateRange), ve = $((e) => e.retentionCohortFilters), V = $((e) => e.retentionActivityFilters), ye = $((e) => e.retentionBreakdowns), be = $((e) => e.retentionViewGranularity), xe = $((e) => e.retentionPeriods), U = $((e) => e.retentionType), G = $((e) => e.buildRetentionQuery), Se = $((e) => e.getRetentionValidation), q = $((e) => e.charts.retention?.displayConfig), J = W(() => O === "retention" ? G() : null, [
|
|
2968
2977
|
O,
|
|
2969
|
-
|
|
2978
|
+
G,
|
|
2979
|
+
me,
|
|
2970
2980
|
he,
|
|
2971
2981
|
ge,
|
|
2972
2982
|
_e,
|
|
2973
|
-
|
|
2983
|
+
ye,
|
|
2974
2984
|
be,
|
|
2975
2985
|
xe,
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
]), Ce = U(() => O === "retention" ? K() : null, [
|
|
2986
|
+
U,
|
|
2987
|
+
ve,
|
|
2988
|
+
V
|
|
2989
|
+
]), Ce = W(() => O === "retention" ? Se() : null, [
|
|
2981
2990
|
O,
|
|
2982
|
-
|
|
2991
|
+
Se,
|
|
2992
|
+
me,
|
|
2983
2993
|
he,
|
|
2984
2994
|
ge,
|
|
2985
|
-
_e
|
|
2986
|
-
|
|
2987
|
-
]), we = U(() => O === "retention" ? J !== null : O === "flow" ? z !== null : O === "funnel" ? pe !== null : w ?? !1, [
|
|
2995
|
+
_e
|
|
2996
|
+
]), we = W(() => O === "retention" ? J !== null : O === "flow" ? pe !== null : O === "funnel" ? fe !== null : w ?? !1, [
|
|
2988
2997
|
O,
|
|
2989
2998
|
J,
|
|
2990
|
-
z,
|
|
2991
2999
|
pe,
|
|
3000
|
+
fe,
|
|
2992
3001
|
w
|
|
2993
|
-
]), { chartType: Y, chartConfig: Ee, displayConfig: De } = $(n(On)), Oe = $((e) => e.userManuallySelectedChart), ke = $((e) => e.localPaletteName), Ae = $((e) => e.setChartTypeManual), je = $((e) => e.setChartConfig), Me = $((e) => e.setDisplayConfig), Ne = $((e) => e.setFunnelChartType), Pe = $((e) => e.setFunnelChartConfig), Fe = $((e) => e.setFunnelDisplayConfig), Ie = $((e) => e.setLocalPaletteName), Le = $((e) => e.setUserManuallySelectedChart), Re =
|
|
3002
|
+
]), { chartType: Y, chartConfig: Ee, displayConfig: De } = $(n(On)), Oe = $((e) => e.userManuallySelectedChart), ke = $((e) => e.localPaletteName), Ae = $((e) => e.setChartTypeManual), je = $((e) => e.setChartConfig), Me = $((e) => e.setDisplayConfig), Ne = $((e) => e.setFunnelChartType), Pe = $((e) => e.setFunnelChartConfig), Fe = $((e) => e.setFunnelDisplayConfig), Ie = $((e) => e.setLocalPaletteName), Le = $((e) => e.setUserManuallySelectedChart), Re = H((e) => {
|
|
2994
3003
|
if (O === "funnel") Ne(e);
|
|
2995
3004
|
else {
|
|
2996
3005
|
Ae(e);
|
|
@@ -3004,24 +3013,24 @@ function Hn(e = {}) {
|
|
|
3004
3013
|
Ne,
|
|
3005
3014
|
Ae,
|
|
3006
3015
|
je
|
|
3007
|
-
]), ze =
|
|
3016
|
+
]), ze = H((e) => {
|
|
3008
3017
|
O === "funnel" ? Pe(e) : je(e);
|
|
3009
3018
|
}, [
|
|
3010
3019
|
O,
|
|
3011
3020
|
Pe,
|
|
3012
3021
|
je
|
|
3013
|
-
]), Be =
|
|
3022
|
+
]), Be = H((e) => {
|
|
3014
3023
|
O === "funnel" ? Fe(e) : Me(e);
|
|
3015
3024
|
}, [
|
|
3016
3025
|
O,
|
|
3017
3026
|
Fe,
|
|
3018
3027
|
Me
|
|
3019
|
-
]), Ve =
|
|
3028
|
+
]), Ve = W(() => Ot(T, E), [T, E]), He = W(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
|
|
3020
3029
|
name: "custom",
|
|
3021
3030
|
label: "Custom",
|
|
3022
3031
|
colors: t,
|
|
3023
3032
|
gradient: t
|
|
3024
|
-
} : t :
|
|
3033
|
+
} : t : p(ke), [t, ke]), Ue = H((e) => {
|
|
3025
3034
|
r.setState((t) => ({ charts: {
|
|
3026
3035
|
...t.charts,
|
|
3027
3036
|
flow: {
|
|
@@ -3033,7 +3042,7 @@ function Hn(e = {}) {
|
|
|
3033
3042
|
displayConfig: e
|
|
3034
3043
|
}
|
|
3035
3044
|
} }));
|
|
3036
|
-
}, [r]), We =
|
|
3045
|
+
}, [r]), We = H((e) => {
|
|
3037
3046
|
r.setState((t) => ({ charts: {
|
|
3038
3047
|
...t.charts,
|
|
3039
3048
|
retention: {
|
|
@@ -3045,28 +3054,28 @@ function Hn(e = {}) {
|
|
|
3045
3054
|
displayConfig: e
|
|
3046
3055
|
}
|
|
3047
3056
|
} }));
|
|
3048
|
-
}, [r]), Ge = $((e) => e.activeTab), Ke = $((e) => e.activeView), qe = $((e) => e.displayLimit), Je = $((e) => e.showFieldModal), Ye = $((e) => e.fieldModalMode), Xe = $((e) => e.setActiveTab), Ze = $((e) => e.setActiveView), Qe = $((e) => e.setDisplayLimit), $e = $((e) => e.closeFieldModal), [et, tt] =
|
|
3057
|
+
}, [r]), Ge = $((e) => e.activeTab), Ke = $((e) => e.activeView), qe = $((e) => e.displayLimit), Je = $((e) => e.showFieldModal), Ye = $((e) => e.fieldModalMode), Xe = $((e) => e.setActiveTab), Ze = $((e) => e.setActiveView), Qe = $((e) => e.setDisplayLimit), $e = $((e) => e.closeFieldModal), [et, tt] = K(0), nt = $((e) => e.openMetricsModal), rt = $((e) => e.addMetric), it = $((e) => e.removeMetric), at = $((e) => e.toggleMetric), ot = $((e) => e.reorderMetrics), st = $((e) => e.openBreakdownsModal), ct = $((e) => e.addBreakdown), lt = $((e) => e.removeBreakdown), ut = $((e) => e.toggleBreakdown), dt = $((e) => e.setBreakdownGranularity), ft = $((e) => e.toggleBreakdownComparison), pt = $((e) => e.reorderBreakdowns), mt = $((e) => e.setFilters), ht = $((e) => e.dropFieldToFilter), gt = $((e) => e.setOrder), _t = $((e) => e.setLimit), vt = $((e) => e.clearQuery), yt = $((e) => e.clearCurrentMode), bt = $((e) => e.setFunnelBindingKey), xt = $((e) => e.setAnalysisType), St = $((e) => e.setFunnelCube), Ct = $((e) => e.addFunnelStep), wt = $((e) => e.removeFunnelStep), Tt = $((e) => e.updateFunnelStep), Et = $((e) => e.setActiveFunnelStepIndex), Dt = $((e) => e.reorderFunnelSteps), kt = $((e) => e.setFunnelTimeDimension), jt = $((e) => e.setFlowCube), Mt = $((e) => e.setFlowBindingKey), Nt = $((e) => e.setFlowTimeDimension), Pt = $((e) => e.setEventDimension), Ft = $((e) => e.setStartingStepName), It = $((e) => e.setStartingStepFilters), Lt = $((e) => e.setStepsBefore), Rt = $((e) => e.setStepsAfter), zt = $((e) => e.setJoinStrategy), Bt = $((e) => e.setRetentionCube), Vt = $((e) => e.setRetentionBindingKey), Ht = $((e) => e.setRetentionTimeDimension), Ut = $((e) => e.setRetentionDateRange), Wt = $((e) => e.setRetentionCohortFilters), Gt = $((e) => e.setRetentionActivityFilters), X = $((e) => e.setRetentionBreakdowns), Z = $((e) => e.addRetentionBreakdown), Kt = $((e) => e.removeRetentionBreakdown), qt = $((e) => e.setRetentionViewGranularity), Q = $((e) => e.setRetentionPeriods), Jt = $((e) => e.setRetentionType), Yt = $((e) => e.getValidation), Xt = W(() => Yt(), [
|
|
3049
3058
|
Yt,
|
|
3050
3059
|
i,
|
|
3051
3060
|
O,
|
|
3052
|
-
A,
|
|
3053
|
-
k,
|
|
3054
3061
|
j,
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
se,
|
|
3062
|
+
k,
|
|
3063
|
+
M,
|
|
3058
3064
|
F,
|
|
3059
3065
|
I,
|
|
3066
|
+
ae,
|
|
3067
|
+
oe,
|
|
3060
3068
|
L,
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3069
|
+
R,
|
|
3070
|
+
se,
|
|
3071
|
+
ce
|
|
3072
|
+
]), Zt = H((e, t) => {
|
|
3064
3073
|
O === "retention" && t === "dimension" ? Z({ field: e.name }) : ut(e.name, t === "timeDimension");
|
|
3065
3074
|
}, [
|
|
3066
3075
|
O,
|
|
3067
3076
|
Z,
|
|
3068
3077
|
ut
|
|
3069
|
-
]), Qt =
|
|
3078
|
+
]), Qt = H((e, t, n, r) => {
|
|
3070
3079
|
Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
|
|
3071
3080
|
}, [
|
|
3072
3081
|
Ye,
|
|
@@ -3093,35 +3102,35 @@ function Hn(e = {}) {
|
|
|
3093
3102
|
effectiveBreakdowns: D,
|
|
3094
3103
|
analysisType: O,
|
|
3095
3104
|
funnelBindingKey: k,
|
|
3096
|
-
isFunnelModeEnabled:
|
|
3097
|
-
funnelCube:
|
|
3098
|
-
funnelSteps:
|
|
3099
|
-
activeFunnelStepIndex:
|
|
3100
|
-
funnelTimeDimension:
|
|
3101
|
-
funnelChartType:
|
|
3102
|
-
funnelChartConfig:
|
|
3103
|
-
funnelDisplayConfig:
|
|
3104
|
-
serverFunnelQuery:
|
|
3105
|
-
flowCube:
|
|
3106
|
-
flowBindingKey:
|
|
3107
|
-
flowTimeDimension:
|
|
3108
|
-
eventDimension:
|
|
3109
|
-
startingStep:
|
|
3110
|
-
stepsBefore:
|
|
3111
|
-
stepsAfter:
|
|
3112
|
-
joinStrategy:
|
|
3105
|
+
isFunnelModeEnabled: N,
|
|
3106
|
+
funnelCube: A,
|
|
3107
|
+
funnelSteps: j,
|
|
3108
|
+
activeFunnelStepIndex: ee,
|
|
3109
|
+
funnelTimeDimension: M,
|
|
3110
|
+
funnelChartType: te,
|
|
3111
|
+
funnelChartConfig: ne,
|
|
3112
|
+
funnelDisplayConfig: ie,
|
|
3113
|
+
serverFunnelQuery: fe,
|
|
3114
|
+
flowCube: F,
|
|
3115
|
+
flowBindingKey: I,
|
|
3116
|
+
flowTimeDimension: ae,
|
|
3117
|
+
eventDimension: oe,
|
|
3118
|
+
startingStep: L,
|
|
3119
|
+
stepsBefore: R,
|
|
3120
|
+
stepsAfter: se,
|
|
3121
|
+
joinStrategy: ce,
|
|
3113
3122
|
flowDisplayConfig: ue,
|
|
3114
|
-
serverFlowQuery:
|
|
3115
|
-
retentionCube:
|
|
3116
|
-
retentionBindingKey:
|
|
3117
|
-
retentionTimeDimension:
|
|
3118
|
-
retentionDateRange:
|
|
3119
|
-
retentionCohortFilters:
|
|
3120
|
-
retentionActivityFilters:
|
|
3121
|
-
retentionBreakdowns:
|
|
3122
|
-
retentionViewGranularity:
|
|
3123
|
-
retentionPeriods:
|
|
3124
|
-
retentionType:
|
|
3123
|
+
serverFlowQuery: pe,
|
|
3124
|
+
retentionCube: me,
|
|
3125
|
+
retentionBindingKey: he,
|
|
3126
|
+
retentionTimeDimension: ge,
|
|
3127
|
+
retentionDateRange: _e,
|
|
3128
|
+
retentionCohortFilters: ve,
|
|
3129
|
+
retentionActivityFilters: V,
|
|
3130
|
+
retentionBreakdowns: ye,
|
|
3131
|
+
retentionViewGranularity: be,
|
|
3132
|
+
retentionPeriods: xe,
|
|
3133
|
+
retentionType: U,
|
|
3125
3134
|
retentionDisplayConfig: q,
|
|
3126
3135
|
serverRetentionQuery: J,
|
|
3127
3136
|
retentionValidation: Ce,
|
|
@@ -3139,7 +3148,7 @@ function Hn(e = {}) {
|
|
|
3139
3148
|
fieldModalMode: Ye,
|
|
3140
3149
|
activeTableIndex: et,
|
|
3141
3150
|
adapterValidation: Xt,
|
|
3142
|
-
getQueryConfig:
|
|
3151
|
+
getQueryConfig: H(() => {
|
|
3143
3152
|
let e = r.getState();
|
|
3144
3153
|
return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
|
|
3145
3154
|
queries: e.buildAllQueries(),
|
|
@@ -3150,7 +3159,7 @@ function Hn(e = {}) {
|
|
|
3150
3159
|
stepTimeToConvert: e.stepTimeToConvert
|
|
3151
3160
|
} : e.buildCurrentQuery();
|
|
3152
3161
|
}, [r]),
|
|
3153
|
-
getChartConfig:
|
|
3162
|
+
getChartConfig: H(() => {
|
|
3154
3163
|
let e = r.getState(), t = e.charts[e.analysisType];
|
|
3155
3164
|
return t ? {
|
|
3156
3165
|
chartType: t.chartType,
|
|
@@ -3167,7 +3176,7 @@ function Hn(e = {}) {
|
|
|
3167
3176
|
Ee,
|
|
3168
3177
|
De
|
|
3169
3178
|
]),
|
|
3170
|
-
getAnalysisType:
|
|
3179
|
+
getAnalysisType: H(() => r.getState().analysisType, [r]),
|
|
3171
3180
|
actions: {
|
|
3172
3181
|
setActiveQueryIndex: s,
|
|
3173
3182
|
setMergeStrategy: c,
|
|
@@ -3285,192 +3294,194 @@ function Jn(e) {
|
|
|
3285
3294
|
//#endregion
|
|
3286
3295
|
//#region src/client/hooks/useAnalysisQuery.ts
|
|
3287
3296
|
function Yn(e) {
|
|
3288
|
-
let { currentQuery: t, allQueries: n, multiQueryConfig: r, isMultiQueryMode: i, isValidQuery: a, initialData: o, mergeStrategy: s, funnelBindingKey: c, isFunnelModeEnabled: l, analysisType: u, serverFunnelQuery: d, serverFlowQuery: f, serverRetentionQuery: p, retentionValidation: m } = e, {
|
|
3289
|
-
isRetentionMode:
|
|
3290
|
-
isFlowMode:
|
|
3291
|
-
isFunnelMode:
|
|
3292
|
-
isMultiMode:
|
|
3293
|
-
}),
|
|
3294
|
-
|
|
3295
|
-
|
|
3297
|
+
let { currentQuery: t, allQueries: n, multiQueryConfig: r, isMultiQueryMode: i, isValidQuery: a, initialData: o, mergeStrategy: s, funnelBindingKey: c, isFunnelModeEnabled: l, analysisType: u, serverFunnelQuery: d, serverFlowQuery: f, serverRetentionQuery: p, retentionValidation: m, fillMissingDates: h } = e, g = { fillMissingDates: h }, { getFieldLabel: _ } = de(), v = u === "funnel" || l, y = u === "flow", b = u === "retention", x = u === "query" && i, S = u === "query" && !i, C = u === "funnel" && !!d, w = Un({
|
|
3298
|
+
isRetentionMode: b,
|
|
3299
|
+
isFlowMode: y,
|
|
3300
|
+
isFunnelMode: v,
|
|
3301
|
+
isMultiMode: x
|
|
3302
|
+
}), T = W(() => C || !v || !c || n.length < 2 ? null : ge(n, c), [
|
|
3303
|
+
C,
|
|
3304
|
+
v,
|
|
3296
3305
|
c,
|
|
3297
3306
|
n
|
|
3298
|
-
]),
|
|
3307
|
+
]), E = Kn({
|
|
3299
3308
|
isValidQuery: a,
|
|
3300
|
-
isSingleMode:
|
|
3301
|
-
isMultiMode:
|
|
3302
|
-
isFunnelMode:
|
|
3303
|
-
isFlowMode:
|
|
3304
|
-
isRetentionMode:
|
|
3309
|
+
isSingleMode: S,
|
|
3310
|
+
isMultiMode: x,
|
|
3311
|
+
isFunnelMode: v,
|
|
3312
|
+
isFlowMode: y,
|
|
3313
|
+
isRetentionMode: b,
|
|
3305
3314
|
hasMultiQueryConfig: !!r,
|
|
3306
|
-
hasFunnelConfig: !!
|
|
3315
|
+
hasFunnelConfig: !!T,
|
|
3307
3316
|
hasServerFunnelQuery: !!d,
|
|
3308
3317
|
hasServerFlowQuery: !!f,
|
|
3309
3318
|
hasServerRetentionQuery: !!p
|
|
3310
|
-
}),
|
|
3311
|
-
skip:
|
|
3312
|
-
debounceMs: 300
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3319
|
+
}), D = F(t, {
|
|
3320
|
+
skip: E.single,
|
|
3321
|
+
debounceMs: 300,
|
|
3322
|
+
gapFill: g
|
|
3323
|
+
}), O = oe(r, {
|
|
3324
|
+
skip: E.multi,
|
|
3325
|
+
debounceMs: 300,
|
|
3326
|
+
gapFill: g
|
|
3327
|
+
}), k = se(T, {
|
|
3328
|
+
skip: E.funnel,
|
|
3318
3329
|
debounceMs: 300,
|
|
3319
|
-
prebuiltServerQuery:
|
|
3320
|
-
}),
|
|
3321
|
-
skip:
|
|
3330
|
+
prebuiltServerQuery: C ? d : void 0
|
|
3331
|
+
}), A = ue(f ?? null, {
|
|
3332
|
+
skip: E.flow,
|
|
3322
3333
|
debounceMs: 300
|
|
3323
|
-
}),
|
|
3324
|
-
skip:
|
|
3334
|
+
}), j = ae(p ?? null, {
|
|
3335
|
+
skip: E.retention,
|
|
3325
3336
|
debounceMs: 300,
|
|
3326
|
-
getFieldLabel:
|
|
3327
|
-
}), ee =
|
|
3337
|
+
getFieldLabel: _
|
|
3338
|
+
}), ee = he({
|
|
3328
3339
|
queries: i ? n : [t],
|
|
3329
3340
|
isMultiQueryMode: i,
|
|
3330
|
-
skip:
|
|
3331
|
-
}),
|
|
3332
|
-
retention:
|
|
3333
|
-
flow:
|
|
3334
|
-
funnel:
|
|
3335
|
-
multi:
|
|
3336
|
-
single:
|
|
3337
|
-
}),
|
|
3338
|
-
retention:
|
|
3339
|
-
flow:
|
|
3340
|
-
funnel:
|
|
3341
|
-
multi:
|
|
3342
|
-
single:
|
|
3343
|
-
}),
|
|
3344
|
-
retention:
|
|
3345
|
-
flow:
|
|
3346
|
-
funnel:
|
|
3347
|
-
multi:
|
|
3348
|
-
single:
|
|
3349
|
-
}),
|
|
3350
|
-
switch (
|
|
3341
|
+
skip: E.dryRun
|
|
3342
|
+
}), M = me(k.serverQuery, { skip: !v || !k.serverQuery }), N = me(A.serverQuery, { skip: !y || !A.serverQuery }), te = me(p, { skip: !b || !p }), P = Wn(w, {
|
|
3343
|
+
retention: j.isLoading || j.isDebouncing,
|
|
3344
|
+
flow: A.isLoading || A.isDebouncing,
|
|
3345
|
+
funnel: k.isExecuting || k.isDebouncing,
|
|
3346
|
+
multi: O.isLoading,
|
|
3347
|
+
single: D.isLoading
|
|
3348
|
+
}), ne = Wn(w, {
|
|
3349
|
+
retention: j.isFetching,
|
|
3350
|
+
flow: A.isFetching,
|
|
3351
|
+
funnel: k.isExecuting,
|
|
3352
|
+
multi: O.isFetching,
|
|
3353
|
+
single: D.isFetching
|
|
3354
|
+
}), re = Wn(w, {
|
|
3355
|
+
retention: j.error,
|
|
3356
|
+
flow: A.error,
|
|
3357
|
+
funnel: k.error,
|
|
3358
|
+
multi: O.error,
|
|
3359
|
+
single: D.error
|
|
3360
|
+
}), ie = !(!D.debouncedQuery && !O.debouncedConfig && k.isDebouncing && A.isDebouncing && j.isDebouncing), I = H((e) => {
|
|
3361
|
+
switch (w) {
|
|
3351
3362
|
case "retention":
|
|
3352
|
-
|
|
3363
|
+
j.execute(e);
|
|
3353
3364
|
break;
|
|
3354
3365
|
case "flow":
|
|
3355
|
-
|
|
3366
|
+
A.refetch(e);
|
|
3356
3367
|
break;
|
|
3357
3368
|
case "funnel":
|
|
3358
|
-
|
|
3369
|
+
k.execute(e);
|
|
3359
3370
|
break;
|
|
3360
3371
|
case "multi":
|
|
3361
|
-
|
|
3372
|
+
O.refetch(e);
|
|
3362
3373
|
break;
|
|
3363
|
-
default:
|
|
3374
|
+
default: D.refetch(e);
|
|
3364
3375
|
}
|
|
3365
3376
|
}, [
|
|
3366
|
-
|
|
3377
|
+
w,
|
|
3378
|
+
j,
|
|
3379
|
+
A,
|
|
3367
3380
|
k,
|
|
3368
3381
|
O,
|
|
3369
|
-
D
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
multi: E.data,
|
|
3378
|
-
single: T.rawData
|
|
3382
|
+
D
|
|
3383
|
+
]), L = W(() => qn({
|
|
3384
|
+
hasResults: Wn(w, {
|
|
3385
|
+
retention: j.chartData,
|
|
3386
|
+
flow: A.data,
|
|
3387
|
+
funnel: k.chartData,
|
|
3388
|
+
multi: O.data,
|
|
3389
|
+
single: D.rawData
|
|
3379
3390
|
}),
|
|
3380
3391
|
initialData: o,
|
|
3381
3392
|
isValidQuery: a,
|
|
3382
|
-
isLoading:
|
|
3383
|
-
isFetching:
|
|
3384
|
-
error:
|
|
3393
|
+
isLoading: P,
|
|
3394
|
+
isFetching: ne,
|
|
3395
|
+
error: re
|
|
3385
3396
|
}), [
|
|
3386
3397
|
a,
|
|
3387
|
-
|
|
3388
|
-
N,
|
|
3398
|
+
P,
|
|
3389
3399
|
ne,
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
D.chartData,
|
|
3400
|
+
re,
|
|
3401
|
+
D.rawData,
|
|
3393
3402
|
O.data,
|
|
3394
3403
|
k.chartData,
|
|
3404
|
+
A.data,
|
|
3405
|
+
j.chartData,
|
|
3395
3406
|
o,
|
|
3396
|
-
|
|
3397
|
-
]),
|
|
3398
|
-
isRetentionMode:
|
|
3399
|
-
isFlowMode:
|
|
3400
|
-
isFunnelMode:
|
|
3401
|
-
isMultiMode:
|
|
3402
|
-
retentionChartData:
|
|
3403
|
-
flowData:
|
|
3404
|
-
funnelChartData:
|
|
3405
|
-
multiData:
|
|
3406
|
-
singleRawData:
|
|
3407
|
+
w
|
|
3408
|
+
]), R = W(() => Jn({
|
|
3409
|
+
isRetentionMode: b,
|
|
3410
|
+
isFlowMode: y,
|
|
3411
|
+
isFunnelMode: v,
|
|
3412
|
+
isMultiMode: x,
|
|
3413
|
+
retentionChartData: j.chartData,
|
|
3414
|
+
flowData: A.data,
|
|
3415
|
+
funnelChartData: k.chartData,
|
|
3416
|
+
multiData: O.data,
|
|
3417
|
+
singleRawData: D.rawData,
|
|
3407
3418
|
initialData: o
|
|
3408
3419
|
}), [
|
|
3409
|
-
|
|
3410
|
-
E.data,
|
|
3411
|
-
D.chartData,
|
|
3420
|
+
D.rawData,
|
|
3412
3421
|
O.data,
|
|
3413
3422
|
k.chartData,
|
|
3423
|
+
A.data,
|
|
3424
|
+
j.chartData,
|
|
3414
3425
|
o,
|
|
3426
|
+
x,
|
|
3427
|
+
v,
|
|
3415
3428
|
y,
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
flowData: O.data,
|
|
3433
|
-
flowDebugData: te.debugData,
|
|
3429
|
+
b
|
|
3430
|
+
]), ce = W(() => v && k.stepResults ? k.stepResults.map((e) => e.data) : !x || !O.perQueryData ? null : O.perQueryData, [
|
|
3431
|
+
x,
|
|
3432
|
+
v,
|
|
3433
|
+
O.perQueryData,
|
|
3434
|
+
k.stepResults
|
|
3435
|
+
]), { funnelExecutedQueries: le, funnelServerQuery: z, funnelDebugData: fe, flowServerQuery: B, flowChartData: pe, flowDebugData: _e, retentionServerQuery: ve, retentionChartData: V, retentionDebugData: ye } = Gn({
|
|
3436
|
+
isFunnelMode: v,
|
|
3437
|
+
isFlowMode: y,
|
|
3438
|
+
isRetentionMode: b,
|
|
3439
|
+
funnelExecutedQueries: k.executedQueries,
|
|
3440
|
+
funnelServerQuery: k.serverQuery,
|
|
3441
|
+
funnelDebugData: M.debugData,
|
|
3442
|
+
flowServerQuery: A.serverQuery,
|
|
3443
|
+
flowData: A.data,
|
|
3444
|
+
flowDebugData: N.debugData,
|
|
3434
3445
|
retentionServerQuery: p ?? null,
|
|
3435
|
-
retentionChartData:
|
|
3436
|
-
retentionDebugData:
|
|
3437
|
-
}),
|
|
3438
|
-
retention:
|
|
3439
|
-
flow:
|
|
3440
|
-
funnel:
|
|
3446
|
+
retentionChartData: j.chartData,
|
|
3447
|
+
retentionDebugData: te.debugData
|
|
3448
|
+
}), be = W(() => Wn(w, {
|
|
3449
|
+
retention: j.needsRefresh,
|
|
3450
|
+
flow: A.needsRefresh,
|
|
3451
|
+
funnel: k.needsRefresh,
|
|
3441
3452
|
multi: !1,
|
|
3442
|
-
single:
|
|
3453
|
+
single: D.needsRefresh
|
|
3443
3454
|
}), [
|
|
3444
|
-
|
|
3455
|
+
w,
|
|
3456
|
+
j.needsRefresh,
|
|
3457
|
+
A.needsRefresh,
|
|
3445
3458
|
k.needsRefresh,
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
if (b && T.warnings) return T.warnings;
|
|
3451
|
-
}, [b, T.warnings]);
|
|
3459
|
+
D.needsRefresh
|
|
3460
|
+
]), xe = W(() => {
|
|
3461
|
+
if (S && D.warnings) return D.warnings;
|
|
3462
|
+
}, [S, D.warnings]);
|
|
3452
3463
|
return {
|
|
3453
|
-
executionStatus:
|
|
3454
|
-
executionResults:
|
|
3455
|
-
perQueryResults:
|
|
3456
|
-
isLoading:
|
|
3457
|
-
isFetching:
|
|
3458
|
-
error:
|
|
3464
|
+
executionStatus: L,
|
|
3465
|
+
executionResults: R,
|
|
3466
|
+
perQueryResults: ce,
|
|
3467
|
+
isLoading: P,
|
|
3468
|
+
isFetching: ne,
|
|
3469
|
+
error: re,
|
|
3459
3470
|
debugDataPerQuery: ee.debugDataPerQuery,
|
|
3460
|
-
hasDebounced:
|
|
3461
|
-
refetch:
|
|
3462
|
-
funnelExecutedQueries:
|
|
3463
|
-
funnelServerQuery:
|
|
3464
|
-
funnelDebugData:
|
|
3465
|
-
flowServerQuery:
|
|
3466
|
-
flowChartData:
|
|
3467
|
-
flowDebugData:
|
|
3468
|
-
retentionServerQuery:
|
|
3469
|
-
retentionChartData:
|
|
3471
|
+
hasDebounced: ie,
|
|
3472
|
+
refetch: I,
|
|
3473
|
+
funnelExecutedQueries: le,
|
|
3474
|
+
funnelServerQuery: z,
|
|
3475
|
+
funnelDebugData: fe,
|
|
3476
|
+
flowServerQuery: B,
|
|
3477
|
+
flowChartData: pe,
|
|
3478
|
+
flowDebugData: _e,
|
|
3479
|
+
retentionServerQuery: ve,
|
|
3480
|
+
retentionChartData: V,
|
|
3470
3481
|
retentionDebugData: ye,
|
|
3471
3482
|
retentionValidation: m ?? null,
|
|
3472
|
-
needsRefresh:
|
|
3473
|
-
warnings:
|
|
3483
|
+
needsRefresh: be,
|
|
3484
|
+
warnings: xe
|
|
3474
3485
|
};
|
|
3475
3486
|
}
|
|
3476
3487
|
//#endregion
|
|
@@ -3485,7 +3496,7 @@ function er(e) {
|
|
|
3485
3496
|
let t = (0, Xn.decompressFromEncodedURIComponent)(e);
|
|
3486
3497
|
if (!t) return null;
|
|
3487
3498
|
let n = JSON.parse(t);
|
|
3488
|
-
return
|
|
3499
|
+
return A(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
|
|
3489
3500
|
} catch {
|
|
3490
3501
|
return null;
|
|
3491
3502
|
}
|
|
@@ -3578,19 +3589,19 @@ function lr(e) {
|
|
|
3578
3589
|
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
3579
3590
|
}
|
|
3580
3591
|
function ur(e) {
|
|
3581
|
-
let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u =
|
|
3582
|
-
|
|
3592
|
+
let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u = G(!1);
|
|
3593
|
+
U(() => {
|
|
3583
3594
|
if (u.current) return;
|
|
3584
3595
|
u.current = !0;
|
|
3585
3596
|
let e = or();
|
|
3586
3597
|
e && (o.getState().load(e), ar());
|
|
3587
|
-
}, [o]),
|
|
3598
|
+
}, [o]), U(() => {
|
|
3588
3599
|
i && t.isValidQuery && i(t.currentQuery);
|
|
3589
3600
|
}, [
|
|
3590
3601
|
t.currentQuery,
|
|
3591
3602
|
t.isValidQuery,
|
|
3592
3603
|
i
|
|
3593
|
-
]),
|
|
3604
|
+
]), U(() => {
|
|
3594
3605
|
a && a({
|
|
3595
3606
|
chartType: t.chartType,
|
|
3596
3607
|
chartConfig: t.chartConfig,
|
|
@@ -3602,46 +3613,46 @@ function ur(e) {
|
|
|
3602
3613
|
t.displayConfig,
|
|
3603
3614
|
a
|
|
3604
3615
|
]);
|
|
3605
|
-
let { combinedMetrics: d, combinedBreakdowns:
|
|
3606
|
-
|
|
3607
|
-
if (!
|
|
3616
|
+
let { combinedMetrics: d, combinedBreakdowns: p, chartType: m, chartConfig: h, userManuallySelectedChart: g } = t, { hasDebounced: _ } = n, { setChartType: v, setChartConfig: y } = s, b = G("");
|
|
3617
|
+
U(() => {
|
|
3618
|
+
if (!_ || d.length === 0 && p.length === 0) return;
|
|
3608
3619
|
let e = JSON.stringify({
|
|
3609
3620
|
metrics: d.map((e) => e.field),
|
|
3610
|
-
breakdowns:
|
|
3621
|
+
breakdowns: p.map((e) => ({
|
|
3611
3622
|
field: e.field,
|
|
3612
3623
|
isTime: e.isTimeDimension
|
|
3613
3624
|
}))
|
|
3614
3625
|
});
|
|
3615
|
-
if (e ===
|
|
3616
|
-
|
|
3617
|
-
let t = Mt(d,
|
|
3626
|
+
if (e === b.current) return;
|
|
3627
|
+
b.current = e;
|
|
3628
|
+
let t = Mt(d, p, m, g);
|
|
3618
3629
|
if (t) {
|
|
3619
|
-
let { chartConfig: e } = At(d,
|
|
3620
|
-
|
|
3621
|
-
} else if (d.length > 0 ||
|
|
3622
|
-
if (
|
|
3623
|
-
let e =
|
|
3624
|
-
i.length > 0 &&
|
|
3625
|
-
...
|
|
3630
|
+
let { chartConfig: e } = At(d, p, t);
|
|
3631
|
+
v(t), y(e), s.setUserManuallySelectedChart(!1);
|
|
3632
|
+
} else if (d.length > 0 || p.length > 0) {
|
|
3633
|
+
if (m === "table" || m === "recordsTable") {
|
|
3634
|
+
let e = m === "recordsTable" ? "columns" : "xAxis", t = [...p.map((e) => e.field), ...d.map((e) => e.field)], n = Array.isArray(h[e]) ? h[e] : [], r = new Set(h.hiddenColumns ?? []), i = t.filter((e) => !n.includes(e) && !r.has(e));
|
|
3635
|
+
i.length > 0 && y({
|
|
3636
|
+
...h,
|
|
3626
3637
|
[e]: [...n, ...i]
|
|
3627
3638
|
});
|
|
3628
|
-
} else if (!
|
|
3629
|
-
let { chartConfig: e } = At(d,
|
|
3630
|
-
|
|
3639
|
+
} else if (!h.xAxis?.length && !h.yAxis?.length && !h.series?.length) {
|
|
3640
|
+
let { chartConfig: e } = At(d, p, m);
|
|
3641
|
+
y(e);
|
|
3631
3642
|
}
|
|
3632
3643
|
}
|
|
3633
3644
|
}, [
|
|
3634
|
-
|
|
3645
|
+
_,
|
|
3635
3646
|
d,
|
|
3636
|
-
f,
|
|
3637
3647
|
p,
|
|
3638
|
-
|
|
3648
|
+
m,
|
|
3639
3649
|
g,
|
|
3650
|
+
h,
|
|
3651
|
+
v,
|
|
3640
3652
|
y,
|
|
3641
|
-
b,
|
|
3642
3653
|
s
|
|
3643
3654
|
]);
|
|
3644
|
-
let [
|
|
3655
|
+
let [x, S] = K({
|
|
3645
3656
|
isOpen: !1,
|
|
3646
3657
|
userPrompt: "",
|
|
3647
3658
|
isGenerating: !1,
|
|
@@ -3649,7 +3660,7 @@ function ur(e) {
|
|
|
3649
3660
|
hasGeneratedQuery: !1,
|
|
3650
3661
|
previousState: null,
|
|
3651
3662
|
previousConfig: null
|
|
3652
|
-
}),
|
|
3663
|
+
}), C = H((e) => {
|
|
3653
3664
|
o.getState().updateQueryState(t.activeQueryIndex, (t) => {
|
|
3654
3665
|
let n = e(t);
|
|
3655
3666
|
return {
|
|
@@ -3658,10 +3669,11 @@ function ur(e) {
|
|
|
3658
3669
|
breakdowns: n.breakdowns,
|
|
3659
3670
|
filters: n.filters,
|
|
3660
3671
|
order: n.order,
|
|
3661
|
-
limit: n.limit
|
|
3672
|
+
limit: n.limit,
|
|
3673
|
+
fillMissingDatesValue: n.fillMissingDatesValue
|
|
3662
3674
|
};
|
|
3663
3675
|
});
|
|
3664
|
-
}, [o, t.activeQueryIndex]), T =
|
|
3676
|
+
}, [o, t.activeQueryIndex]), T = H((e) => {
|
|
3665
3677
|
let t = {
|
|
3666
3678
|
version: 1,
|
|
3667
3679
|
analysisType: "funnel",
|
|
@@ -3674,9 +3686,9 @@ function ur(e) {
|
|
|
3674
3686
|
query: e
|
|
3675
3687
|
};
|
|
3676
3688
|
o.getState().load(t);
|
|
3677
|
-
}, [o]), E =
|
|
3689
|
+
}, [o]), E = H(() => {
|
|
3678
3690
|
let e = o.getState().save();
|
|
3679
|
-
|
|
3691
|
+
S({
|
|
3680
3692
|
isOpen: !0,
|
|
3681
3693
|
userPrompt: "",
|
|
3682
3694
|
isGenerating: !1,
|
|
@@ -3702,30 +3714,30 @@ function ur(e) {
|
|
|
3702
3714
|
t.chartConfig,
|
|
3703
3715
|
t.displayConfig,
|
|
3704
3716
|
t.analysisType
|
|
3705
|
-
]), D =
|
|
3706
|
-
|
|
3717
|
+
]), D = H(() => {
|
|
3718
|
+
S((e) => ({
|
|
3707
3719
|
...e,
|
|
3708
3720
|
isOpen: !1,
|
|
3709
3721
|
userPrompt: "",
|
|
3710
3722
|
error: null,
|
|
3711
3723
|
hasGeneratedQuery: !1
|
|
3712
3724
|
}));
|
|
3713
|
-
}, []), O =
|
|
3714
|
-
|
|
3725
|
+
}, []), O = H((e) => {
|
|
3726
|
+
S((t) => ({
|
|
3715
3727
|
...t,
|
|
3716
3728
|
userPrompt: e
|
|
3717
3729
|
}));
|
|
3718
|
-
}, []), k =
|
|
3719
|
-
if (
|
|
3720
|
-
|
|
3730
|
+
}, []), k = H(async () => {
|
|
3731
|
+
if (x.userPrompt.trim()) {
|
|
3732
|
+
S((e) => ({
|
|
3721
3733
|
...e,
|
|
3722
3734
|
isGenerating: !0,
|
|
3723
3735
|
error: null
|
|
3724
3736
|
}));
|
|
3725
3737
|
try {
|
|
3726
|
-
let e = cr(await sr("",
|
|
3738
|
+
let e = cr(await sr("", x.userPrompt, r, l?.headers)), n = JSON.parse(e), i = "query" in n && n.query ? n.query : n, a = "chartType" in n ? n.chartType : void 0, o = "chartConfig" in n ? n.chartConfig : void 0;
|
|
3727
3739
|
if (lr(i)) {
|
|
3728
|
-
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"),
|
|
3740
|
+
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
|
|
3729
3741
|
...e,
|
|
3730
3742
|
isGenerating: !1,
|
|
3731
3743
|
hasGeneratedQuery: !0
|
|
@@ -3733,33 +3745,35 @@ function ur(e) {
|
|
|
3733
3745
|
return;
|
|
3734
3746
|
}
|
|
3735
3747
|
let c = i;
|
|
3736
|
-
|
|
3748
|
+
C((e) => ({
|
|
3737
3749
|
...e,
|
|
3738
3750
|
metrics: (c.measures || []).map((e, t) => ({
|
|
3739
|
-
id:
|
|
3751
|
+
id: f(),
|
|
3740
3752
|
field: e,
|
|
3741
|
-
label:
|
|
3753
|
+
label: w(t)
|
|
3742
3754
|
})),
|
|
3743
3755
|
breakdowns: [...(c.dimensions || []).map((e) => ({
|
|
3744
|
-
id:
|
|
3756
|
+
id: f(),
|
|
3745
3757
|
field: e,
|
|
3746
3758
|
isTimeDimension: !1
|
|
3747
3759
|
})), ...(c.timeDimensions || []).map((e) => ({
|
|
3748
|
-
id:
|
|
3760
|
+
id: f(),
|
|
3749
3761
|
field: e.dimension,
|
|
3750
3762
|
granularity: e.granularity,
|
|
3763
|
+
...e.fillMissingDates !== void 0 && { fillMissingDates: e.fillMissingDates },
|
|
3751
3764
|
isTimeDimension: !0
|
|
3752
3765
|
}))],
|
|
3753
3766
|
filters: c.filters || [],
|
|
3754
3767
|
order: c.order || void 0,
|
|
3755
|
-
limit: c.limit ?? void 0
|
|
3756
|
-
|
|
3768
|
+
limit: c.limit ?? void 0,
|
|
3769
|
+
fillMissingDatesValue: c.fillMissingDatesValue
|
|
3770
|
+
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
|
|
3757
3771
|
...e,
|
|
3758
3772
|
isGenerating: !1,
|
|
3759
3773
|
hasGeneratedQuery: !0
|
|
3760
3774
|
}));
|
|
3761
3775
|
} catch (e) {
|
|
3762
|
-
|
|
3776
|
+
S((t) => ({
|
|
3763
3777
|
...t,
|
|
3764
3778
|
isGenerating: !1,
|
|
3765
3779
|
error: e instanceof Error ? e.message : "Failed to generate query"
|
|
@@ -3767,15 +3781,15 @@ function ur(e) {
|
|
|
3767
3781
|
}
|
|
3768
3782
|
}
|
|
3769
3783
|
}, [
|
|
3770
|
-
|
|
3784
|
+
x.userPrompt,
|
|
3771
3785
|
r,
|
|
3772
3786
|
l?.headers,
|
|
3773
|
-
|
|
3787
|
+
C,
|
|
3774
3788
|
T,
|
|
3775
3789
|
t.analysisType,
|
|
3776
3790
|
s
|
|
3777
|
-
]),
|
|
3778
|
-
|
|
3791
|
+
]), A = H(() => {
|
|
3792
|
+
S({
|
|
3779
3793
|
isOpen: !1,
|
|
3780
3794
|
userPrompt: "",
|
|
3781
3795
|
isGenerating: !1,
|
|
@@ -3784,13 +3798,13 @@ function ur(e) {
|
|
|
3784
3798
|
previousState: null,
|
|
3785
3799
|
previousConfig: null
|
|
3786
3800
|
});
|
|
3787
|
-
}, []),
|
|
3788
|
-
|
|
3801
|
+
}, []), j = H(() => {
|
|
3802
|
+
x.previousConfig ? o.getState().load(x.previousConfig) : x.previousState && (C((e) => ({
|
|
3789
3803
|
...e,
|
|
3790
|
-
metrics:
|
|
3791
|
-
breakdowns:
|
|
3792
|
-
filters:
|
|
3793
|
-
})), s.setChartType(
|
|
3804
|
+
metrics: x.previousState.metrics,
|
|
3805
|
+
breakdowns: x.previousState.breakdowns,
|
|
3806
|
+
filters: x.previousState.filters
|
|
3807
|
+
})), s.setChartType(x.previousState.chartType), s.setChartConfig(x.previousState.chartConfig), s.setDisplayConfig(x.previousState.displayConfig), x.previousState.analysisType && s.setAnalysisType(x.previousState.analysisType)), S({
|
|
3794
3808
|
isOpen: !1,
|
|
3795
3809
|
userPrompt: "",
|
|
3796
3810
|
isGenerating: !1,
|
|
@@ -3800,23 +3814,23 @@ function ur(e) {
|
|
|
3800
3814
|
previousConfig: null
|
|
3801
3815
|
});
|
|
3802
3816
|
}, [
|
|
3803
|
-
|
|
3804
|
-
|
|
3817
|
+
x.previousState,
|
|
3818
|
+
x.previousConfig,
|
|
3805
3819
|
o,
|
|
3806
|
-
|
|
3820
|
+
C,
|
|
3807
3821
|
s
|
|
3808
|
-
]), [
|
|
3822
|
+
]), [ee, M] = K("idle"), N = t.effectiveIsValidQuery;
|
|
3809
3823
|
return {
|
|
3810
|
-
aiState:
|
|
3824
|
+
aiState: x,
|
|
3811
3825
|
openAI: E,
|
|
3812
3826
|
closeAI: D,
|
|
3813
3827
|
setAIPrompt: O,
|
|
3814
3828
|
generateAI: k,
|
|
3815
|
-
acceptAI:
|
|
3816
|
-
cancelAI:
|
|
3817
|
-
shareButtonState:
|
|
3818
|
-
share:
|
|
3819
|
-
if (!
|
|
3829
|
+
acceptAI: A,
|
|
3830
|
+
cancelAI: j,
|
|
3831
|
+
shareButtonState: ee,
|
|
3832
|
+
share: H(async () => {
|
|
3833
|
+
if (!N) return;
|
|
3820
3834
|
let { encoded: e, queryOnly: t } = nr(o.getState().save());
|
|
3821
3835
|
if (!e) return;
|
|
3822
3836
|
let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
|
|
@@ -3826,11 +3840,11 @@ function ur(e) {
|
|
|
3826
3840
|
let e = document.createElement("textarea");
|
|
3827
3841
|
e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
|
|
3828
3842
|
}
|
|
3829
|
-
|
|
3830
|
-
|
|
3843
|
+
M(t ? "copied-no-chart" : "copied"), setTimeout(() => {
|
|
3844
|
+
M("idle");
|
|
3831
3845
|
}, 2e3);
|
|
3832
|
-
}, [
|
|
3833
|
-
canShare:
|
|
3846
|
+
}, [N, o]),
|
|
3847
|
+
canShare: N
|
|
3834
3848
|
};
|
|
3835
3849
|
}
|
|
3836
3850
|
//#endregion
|
|
@@ -3850,7 +3864,8 @@ function dr(e = {}) {
|
|
|
3850
3864
|
serverFunnelQuery: o.serverFunnelQuery,
|
|
3851
3865
|
serverFlowQuery: o.serverFlowQuery,
|
|
3852
3866
|
serverRetentionQuery: o.serverRetentionQuery,
|
|
3853
|
-
retentionValidation: o.retentionValidation
|
|
3867
|
+
retentionValidation: o.retentionValidation,
|
|
3868
|
+
fillMissingDates: o.displayConfig.fillMissingDates
|
|
3854
3869
|
}), l = ur({
|
|
3855
3870
|
state: o,
|
|
3856
3871
|
query: c,
|
|
@@ -4064,7 +4079,7 @@ function pr(e) {
|
|
|
4064
4079
|
}
|
|
4065
4080
|
function mr(e, t) {
|
|
4066
4081
|
if (typeof e.dimension == "string") return !0;
|
|
4067
|
-
let n =
|
|
4082
|
+
let n = _e(t);
|
|
4068
4083
|
return n ? e.dimension.some((e) => e.cube === n) : !1;
|
|
4069
4084
|
}
|
|
4070
4085
|
function hr(e, t) {
|
|
@@ -4072,7 +4087,7 @@ function hr(e, t) {
|
|
|
4072
4087
|
for (let r = 0; r < t.length; r++) {
|
|
4073
4088
|
let i = t[r];
|
|
4074
4089
|
if (!mr(e, i.query)) {
|
|
4075
|
-
let e =
|
|
4090
|
+
let e = _e(i.query) || "unknown";
|
|
4076
4091
|
n.push({
|
|
4077
4092
|
type: "cross_cube",
|
|
4078
4093
|
message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
|
|
@@ -4142,4 +4157,4 @@ function br(e) {
|
|
|
4142
4157
|
//#endregion
|
|
4143
4158
|
export { kn as A, En as C, jn as D, Dn as E, Ye as F, Cn as M, Lt as N, Tn as O, it as P, Sn as S, wn as T, Vn as _, hr as a, Ln as b, dr as c, rr as d, tr as f, Fn as g, In as h, fr as i, $ as j, An as k, $n as l, or as m, br as n, _r as o, ir as p, vr as r, pr as s, yr as t, er as u, zn as v, On as w, Nn as x, Pn as y };
|
|
4144
4159
|
|
|
4145
|
-
//# sourceMappingURL=analysis-builder-shared-
|
|
4160
|
+
//# sourceMappingURL=analysis-builder-shared-CsIs4-Xf.js.map
|