drizzle-cube 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/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 +3 -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-CIR4aqr7.js} +2360 -2548
- package/dist/client/chunks/DashboardEditModal-CIR4aqr7.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-DJNYt7CF.js} +41 -41
- package/dist/client/chunks/{analysis-builder-Db4umQtd.js.map → analysis-builder-DJNYt7CF.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-BEvvX6ln.js → analysis-builder-shared-DPLR8upd.js} +487 -483
- package/dist/client/chunks/analysis-builder-shared-DPLR8upd.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-DSkxAJ29.js} +317 -292
- package/dist/client/chunks/useDirtyStateTracking-DSkxAJ29.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-CdPWtj7E.js → useExplainAI-DRCIVcbu.js} +4 -4
- package/dist/client/chunks/{useExplainAI-CdPWtj7E.js.map → useExplainAI-DRCIVcbu.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/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 +3 -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-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,33 +1,34 @@
|
|
|
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-CIR4aqr7.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-DSkxAJ29.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-DRCIVcbu.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
28
|
function Te(e, t, n, r, i = !1, a, o = !1) {
|
|
28
29
|
let s = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), c = n;
|
|
29
30
|
if (!i) for (let e of s) c = we(c, e);
|
|
30
|
-
c = c.filter((e) =>
|
|
31
|
+
c = c.filter((e) => b(e));
|
|
31
32
|
let l = {
|
|
32
33
|
measures: e.map((e) => e.field),
|
|
33
34
|
dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
|
|
@@ -102,14 +103,14 @@ function ke({ filter: e, dateRange: t }) {
|
|
|
102
103
|
}), /* @__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
104
|
}), o && /* @__PURE__ */ q("div", {
|
|
104
105
|
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:
|
|
106
|
+
children: C.map((e) => /* @__PURE__ */ q("button", {
|
|
106
107
|
onClick: () => c(e.value),
|
|
107
108
|
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
109
|
children: n(e.label)
|
|
109
110
|
}, e.value))
|
|
110
111
|
})]
|
|
111
112
|
}),
|
|
112
|
-
|
|
113
|
+
M(r) && /* @__PURE__ */ J("div", {
|
|
113
114
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
114
115
|
children: [/* @__PURE__ */ q("input", {
|
|
115
116
|
type: "number",
|
|
@@ -289,66 +290,66 @@ function Me({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
|
289
290
|
//#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
|
|
290
291
|
var Ne = d("close"), Pe = d("chevronDown"), Fe = d("dimension"), Ie = d("timeDimension"), Le = d("measure");
|
|
291
292
|
function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
|
|
292
|
-
let { t: a } = z(), [o, s] =
|
|
293
|
+
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
294
|
"equals",
|
|
294
295
|
"notEquals",
|
|
295
296
|
"in",
|
|
296
297
|
"notIn"
|
|
297
|
-
].includes(o.operator) &&
|
|
298
|
+
].includes(o.operator) && re && !P, [
|
|
298
299
|
o.operator,
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
])(), { values:
|
|
302
|
-
|
|
300
|
+
re,
|
|
301
|
+
P
|
|
302
|
+
])(), { values: R, loading: se, error: ue, searchValues: de } = le(o.member, L);
|
|
303
|
+
U(() => {
|
|
303
304
|
if (!i) {
|
|
304
|
-
|
|
305
|
+
D(null);
|
|
305
306
|
return;
|
|
306
307
|
}
|
|
307
308
|
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
|
-
|
|
309
|
+
D(r ? {
|
|
309
310
|
bottom: window.innerHeight - e.top + 8,
|
|
310
311
|
left: a
|
|
311
312
|
} : {
|
|
312
313
|
top: e.bottom + 8,
|
|
313
314
|
left: a
|
|
314
315
|
});
|
|
315
|
-
}, [i]),
|
|
316
|
+
}, [i]), U(() => {
|
|
316
317
|
let e = (e) => {
|
|
317
|
-
|
|
318
|
+
A.current && !A.current.contains(e.target) && (l(!1), d(!1), p(!1));
|
|
318
319
|
};
|
|
319
320
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
320
|
-
}, []),
|
|
321
|
-
u &&
|
|
321
|
+
}, []), U(() => {
|
|
322
|
+
u && L && de && de("", !0), u || k(-1);
|
|
322
323
|
}, [
|
|
323
324
|
u,
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
]),
|
|
327
|
-
if (
|
|
328
|
-
let e =
|
|
325
|
+
L,
|
|
326
|
+
de
|
|
327
|
+
]), U(() => {
|
|
328
|
+
if (O >= 0 && j.current) {
|
|
329
|
+
let e = j.current.children[O];
|
|
329
330
|
e && e.scrollIntoView({ block: "nearest" });
|
|
330
331
|
}
|
|
331
|
-
}, [
|
|
332
|
-
u &&
|
|
332
|
+
}, [O]), U(() => {
|
|
333
|
+
u && L && de && ee !== void 0 && de(ee);
|
|
333
334
|
}, [
|
|
334
|
-
|
|
335
|
+
ee,
|
|
335
336
|
u,
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
]),
|
|
339
|
-
if (!
|
|
340
|
-
let e =
|
|
341
|
-
e && (
|
|
342
|
-
}, [o.dateRange,
|
|
343
|
-
let
|
|
337
|
+
L,
|
|
338
|
+
de
|
|
339
|
+
]), U(() => {
|
|
340
|
+
if (!oe) return;
|
|
341
|
+
let e = h(o.dateRange);
|
|
342
|
+
e && (_(e.rangeType), e.numberValue !== void 0 && b(e.numberValue));
|
|
343
|
+
}, [o.dateRange, oe]);
|
|
344
|
+
let fe = H((e) => {
|
|
344
345
|
s({
|
|
345
346
|
member: o.member,
|
|
346
347
|
operator: e,
|
|
347
348
|
values: []
|
|
348
349
|
}), l(!1);
|
|
349
|
-
}, [o.member]),
|
|
350
|
+
}, [o.member]), B = H((e, t) => {
|
|
350
351
|
let n = t?.shiftKey ?? !1, r = o.values || [];
|
|
351
|
-
|
|
352
|
+
F?.supportsMultipleValues ? (r.includes(e) ? s({
|
|
352
353
|
...o,
|
|
353
354
|
values: r.filter((t) => t !== e)
|
|
354
355
|
}) : s({
|
|
@@ -357,28 +358,28 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
357
358
|
}), n || d(!1)) : (s({
|
|
358
359
|
...o,
|
|
359
360
|
values: [e]
|
|
360
|
-
}), d(!1)),
|
|
361
|
-
}, [o,
|
|
361
|
+
}), d(!1)), w(""), k(-1);
|
|
362
|
+
}, [o, F?.supportsMultipleValues]), pe = H((e) => {
|
|
362
363
|
let t = (o.values || []).filter((t) => t !== e);
|
|
363
364
|
s({
|
|
364
365
|
...o,
|
|
365
366
|
values: t
|
|
366
367
|
});
|
|
367
|
-
}, [o]),
|
|
368
|
-
let t = Ee(e.key, u,
|
|
368
|
+
}, [o]), me = H((e) => {
|
|
369
|
+
let t = Ee(e.key, u, R.length, O);
|
|
369
370
|
if (t.type !== "none") {
|
|
370
371
|
if (e.preventDefault(), t.type === "highlight") return k(t.index);
|
|
371
|
-
if (t.type === "select") return
|
|
372
|
+
if (t.type === "select") return B(R[t.index], { shiftKey: e.shiftKey });
|
|
372
373
|
d(!1), k(-1);
|
|
373
374
|
}
|
|
374
375
|
}, [
|
|
375
376
|
u,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
]),
|
|
377
|
+
R,
|
|
378
|
+
O,
|
|
379
|
+
B
|
|
380
|
+
]), he = H((e) => {
|
|
380
381
|
let t = e.target.value;
|
|
381
|
-
if (
|
|
382
|
+
if (F?.valueType === "number") {
|
|
382
383
|
let e = parseFloat(t);
|
|
383
384
|
isNaN(e) ? (t === "" || t === "-") && s({
|
|
384
385
|
...o,
|
|
@@ -391,110 +392,110 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
391
392
|
...o,
|
|
392
393
|
values: t ? [t] : []
|
|
393
394
|
});
|
|
394
|
-
}, [o,
|
|
395
|
+
}, [o, F?.valueType]), ge = H((e) => {
|
|
395
396
|
let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
|
|
396
397
|
s({
|
|
397
398
|
...o,
|
|
398
399
|
values: n
|
|
399
400
|
});
|
|
400
|
-
}, [o]),
|
|
401
|
+
}, [o]), _e = H((e) => {
|
|
401
402
|
let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
|
|
402
403
|
s({
|
|
403
404
|
...o,
|
|
404
405
|
values: n
|
|
405
406
|
});
|
|
406
|
-
}, [o]),
|
|
407
|
+
}, [o]), ve = H((e) => {
|
|
407
408
|
let t = e.target.value;
|
|
408
409
|
s({
|
|
409
410
|
...o,
|
|
410
411
|
values: t ? [t] : []
|
|
411
412
|
});
|
|
412
|
-
}, [o]),
|
|
413
|
-
|
|
413
|
+
}, [o]), V = H((e) => {
|
|
414
|
+
_(e), p(!1);
|
|
414
415
|
let t;
|
|
415
416
|
if (e === "custom") {
|
|
416
417
|
let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
417
418
|
t = [e, e];
|
|
418
|
-
} else t =
|
|
419
|
+
} else t = M(e) ? I(e, v) : I(e);
|
|
419
420
|
s({
|
|
420
421
|
...o,
|
|
421
422
|
dateRange: t
|
|
422
423
|
});
|
|
423
|
-
}, [o,
|
|
424
|
-
if (
|
|
424
|
+
}, [o, v]), ye = H((e) => {
|
|
425
|
+
if (b(e), M(m)) {
|
|
425
426
|
let t = I(m, e);
|
|
426
427
|
s({
|
|
427
428
|
...o,
|
|
428
429
|
dateRange: t
|
|
429
430
|
});
|
|
430
431
|
}
|
|
431
|
-
}, [o, m]),
|
|
432
|
+
}, [o, m]), be = H((e) => {
|
|
432
433
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
|
|
433
434
|
s({
|
|
434
435
|
...o,
|
|
435
436
|
dateRange: [t, n]
|
|
436
437
|
});
|
|
437
|
-
}, [o]),
|
|
438
|
+
}, [o]), xe = H((e) => {
|
|
438
439
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : ["", o.dateRange || ""])[0] || t;
|
|
439
440
|
s({
|
|
440
441
|
...o,
|
|
441
442
|
dateRange: [n, t]
|
|
442
443
|
});
|
|
443
|
-
}, [o]), Ce = a(
|
|
444
|
+
}, [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
445
|
filter: o,
|
|
445
|
-
operatorMeta:
|
|
446
|
-
shouldShowDateRange:
|
|
447
|
-
shouldShowComboBox:
|
|
446
|
+
operatorMeta: F,
|
|
447
|
+
shouldShowDateRange: oe,
|
|
448
|
+
shouldShowComboBox: L
|
|
448
449
|
}, Y = {
|
|
449
450
|
rangeType: m,
|
|
450
|
-
numberValue:
|
|
451
|
+
numberValue: v,
|
|
451
452
|
label: we,
|
|
452
453
|
isOpen: f,
|
|
453
454
|
onToggle: p,
|
|
454
|
-
onRangeTypeChange:
|
|
455
|
-
onNumberValueChange:
|
|
456
|
-
onCustomStartDate:
|
|
457
|
-
onCustomEndDate:
|
|
458
|
-
onOpen:
|
|
455
|
+
onRangeTypeChange: V,
|
|
456
|
+
onNumberValueChange: ye,
|
|
457
|
+
onCustomStartDate: be,
|
|
458
|
+
onCustomEndDate: xe,
|
|
459
|
+
onOpen: H(() => {
|
|
459
460
|
l(!1), d(!1);
|
|
460
461
|
}, [])
|
|
461
462
|
}, De = {
|
|
462
463
|
isOpen: u,
|
|
463
|
-
options:
|
|
464
|
-
loading:
|
|
465
|
-
error:
|
|
466
|
-
searchText:
|
|
467
|
-
highlightedIndex:
|
|
468
|
-
listRef:
|
|
469
|
-
onSearchTextChange:
|
|
464
|
+
options: R,
|
|
465
|
+
loading: se,
|
|
466
|
+
error: ue,
|
|
467
|
+
searchText: S,
|
|
468
|
+
highlightedIndex: O,
|
|
469
|
+
listRef: j,
|
|
470
|
+
onSearchTextChange: w,
|
|
470
471
|
onHighlightedIndexChange: k,
|
|
471
|
-
onSelect:
|
|
472
|
-
onRemove:
|
|
473
|
-
onKeyDown:
|
|
474
|
-
onOpen:
|
|
472
|
+
onSelect: B,
|
|
473
|
+
onRemove: pe,
|
|
474
|
+
onKeyDown: me,
|
|
475
|
+
onOpen: H(() => {
|
|
475
476
|
l(!1), p(!1), d((e) => !e);
|
|
476
477
|
}, [])
|
|
477
|
-
}, Oe =
|
|
478
|
-
onBetweenStart:
|
|
479
|
-
onBetweenEnd:
|
|
480
|
-
onDate:
|
|
481
|
-
onDirect:
|
|
478
|
+
}, Oe = W(() => ({
|
|
479
|
+
onBetweenStart: ge,
|
|
480
|
+
onBetweenEnd: _e,
|
|
481
|
+
onDate: ve,
|
|
482
|
+
onDirect: he
|
|
482
483
|
}), [
|
|
484
|
+
ge,
|
|
483
485
|
_e,
|
|
484
486
|
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"}`,
|
|
487
|
+
he
|
|
488
|
+
]), ke = P ? Ie : ne ? Le : Fe;
|
|
489
|
+
return /* @__PURE__ */ q(Se, { children: /* @__PURE__ */ q("div", {
|
|
490
|
+
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
491
|
onClick: r,
|
|
491
492
|
children: /* @__PURE__ */ J("div", {
|
|
492
|
-
ref:
|
|
493
|
-
className:
|
|
493
|
+
ref: A,
|
|
494
|
+
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
495
|
style: {
|
|
495
|
-
...
|
|
496
|
+
...E ? {
|
|
496
497
|
position: "fixed",
|
|
497
|
-
...
|
|
498
|
+
...E,
|
|
498
499
|
maxWidth: "400px",
|
|
499
500
|
width: "100%"
|
|
500
501
|
} : {},
|
|
@@ -523,7 +524,7 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
523
524
|
className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
|
|
524
525
|
children: [/* @__PURE__ */ q(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ q("span", {
|
|
525
526
|
className: "dc:text-sm dc:font-medium text-dc-text",
|
|
526
|
-
children:
|
|
527
|
+
children: ie
|
|
527
528
|
})]
|
|
528
529
|
})] }),
|
|
529
530
|
/* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
|
|
@@ -542,8 +543,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
542
543
|
}), /* @__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
544
|
}), c && /* @__PURE__ */ q("div", {
|
|
544
545
|
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: () =>
|
|
546
|
+
children: ae.map((e) => /* @__PURE__ */ q("button", {
|
|
547
|
+
onClick: () => fe(e.operator),
|
|
547
548
|
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
549
|
children: a(e.label)
|
|
549
550
|
}, e.operator))
|
|
@@ -580,8 +581,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
580
581
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
|
|
581
582
|
var ze = d("close"), Be = d("dimension"), Ve = d("timeDimension"), He = d("measure");
|
|
582
583
|
function Ue({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
583
|
-
let { t: i } = z(), [a, o] =
|
|
584
|
-
return /* @__PURE__ */ J(
|
|
584
|
+
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;
|
|
585
|
+
return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("div", {
|
|
585
586
|
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
587
|
children: [
|
|
587
588
|
/* @__PURE__ */ q("span", {
|
|
@@ -638,22 +639,22 @@ function We(e, t, n) {
|
|
|
638
639
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
|
|
639
640
|
var Ge = d("add"), Ke = d("close");
|
|
640
641
|
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
|
-
|
|
642
|
+
let { t: s } = z(), [c, l] = K(!1), u = G(null);
|
|
643
|
+
U(() => {
|
|
643
644
|
let e = (e) => {
|
|
644
645
|
u.current && !u.current.contains(e.target) && l(!1);
|
|
645
646
|
};
|
|
646
647
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
647
648
|
}, []);
|
|
648
|
-
let d =
|
|
649
|
-
n(
|
|
650
|
-
}, [e, n]), f =
|
|
649
|
+
let d = H(() => {
|
|
650
|
+
n(te(e));
|
|
651
|
+
}, [e, n]), f = H((t, r) => {
|
|
651
652
|
let i = [...e.filters];
|
|
652
653
|
i[t] = r, n({
|
|
653
654
|
...e,
|
|
654
655
|
filters: i
|
|
655
656
|
});
|
|
656
|
-
}, [e, n]), p =
|
|
657
|
+
}, [e, n]), p = H((t) => {
|
|
657
658
|
let i = e.filters.filter((e, n) => n !== t);
|
|
658
659
|
i.length === 0 ? r() : n({
|
|
659
660
|
...e,
|
|
@@ -664,7 +665,7 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
664
665
|
n,
|
|
665
666
|
r,
|
|
666
667
|
a
|
|
667
|
-
]), m =
|
|
668
|
+
]), m = H((t) => {
|
|
668
669
|
let r = {
|
|
669
670
|
type: t,
|
|
670
671
|
filters: []
|
|
@@ -673,9 +674,9 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
673
674
|
...e,
|
|
674
675
|
filters: [...e.filters, r]
|
|
675
676
|
}), l(!1);
|
|
676
|
-
}, [e, n]), h =
|
|
677
|
+
}, [e, n]), h = H(() => {
|
|
677
678
|
i([]), l(!1);
|
|
678
|
-
}, [i]), g =
|
|
679
|
+
}, [i]), g = H((e) => (t = []) => {
|
|
679
680
|
i([e, ...t]);
|
|
680
681
|
}, [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
682
|
return /* @__PURE__ */ J("div", {
|
|
@@ -746,12 +747,12 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
746
747
|
className: "dc:text-xs text-dc-primary dc:hover:underline",
|
|
747
748
|
children: s("filter.group.addFilterLink")
|
|
748
749
|
})]
|
|
749
|
-
}) : e.filters.map((e, n) =>
|
|
750
|
+
}) : e.filters.map((e, n) => ne(e) ? /* @__PURE__ */ q(Ue, {
|
|
750
751
|
filter: e,
|
|
751
752
|
schema: t,
|
|
752
753
|
onUpdate: (e) => f(n, e),
|
|
753
754
|
onRemove: () => p(n)
|
|
754
|
-
}, `filter-${n}`) :
|
|
755
|
+
}, `filter-${n}`) : P(e) ? /* @__PURE__ */ q(qe, {
|
|
755
756
|
group: e,
|
|
756
757
|
schema: t,
|
|
757
758
|
onUpdate: (e) => f(n, e),
|
|
@@ -766,42 +767,42 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
766
767
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
|
|
767
768
|
var Je = d("add");
|
|
768
769
|
function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
|
|
769
|
-
let { t: a } = z(), [o, s] =
|
|
770
|
+
let { t: a } = z(), [o, s] = K(!1), [c, l] = K(!1), u = G([]), d = R(e), f = H((e) => {
|
|
770
771
|
e.preventDefault(), e.stopPropagation(), l(!0);
|
|
771
|
-
}, []), p =
|
|
772
|
+
}, []), p = H((e) => {
|
|
772
773
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
773
|
-
}, []), m =
|
|
774
|
+
}, []), m = H((e) => {
|
|
774
775
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
775
776
|
try {
|
|
776
777
|
let t = JSON.parse(e.dataTransfer.getData("text/plain"));
|
|
777
778
|
t.field && r && r(t.field);
|
|
778
779
|
} catch {}
|
|
779
|
-
}, [r]), h =
|
|
780
|
+
}, [r]), h = ee(e), g = H((t, r, i) => {
|
|
780
781
|
let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
|
|
781
782
|
member: t.name,
|
|
782
783
|
operator: o,
|
|
783
784
|
values: []
|
|
784
785
|
};
|
|
785
|
-
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(
|
|
786
|
-
}, [e, n]), _ =
|
|
786
|
+
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(re(e, u.current, c)), s(!1), u.current = [];
|
|
787
|
+
}, [e, n]), _ = H((t, r) => {
|
|
787
788
|
let i = [...e];
|
|
788
789
|
i[t] = r, n(i);
|
|
789
|
-
}, [e, n]), v =
|
|
790
|
-
n(
|
|
791
|
-
}, [e, n]), y =
|
|
790
|
+
}, [e, n]), v = H((t) => {
|
|
791
|
+
n(ie(e, t));
|
|
792
|
+
}, [e, n]), y = H(() => {
|
|
792
793
|
n([]);
|
|
793
|
-
}, [n]), b =
|
|
794
|
+
}, [n]), b = H(() => {
|
|
794
795
|
u.current = [], s(!0);
|
|
795
|
-
}, []), x =
|
|
796
|
+
}, []), x = H((e) => (t = []) => {
|
|
796
797
|
u.current = [...e, ...t], s(!0);
|
|
797
798
|
}, []), S = (n, r, i = []) => {
|
|
798
799
|
let a = [...i, r];
|
|
799
|
-
return
|
|
800
|
+
return ne(n) ? /* @__PURE__ */ q(Ue, {
|
|
800
801
|
filter: n,
|
|
801
802
|
schema: t,
|
|
802
803
|
onUpdate: (e) => _(r, e),
|
|
803
804
|
onRemove: () => v(r)
|
|
804
|
-
}, `filter-${a.join("-")}`) :
|
|
805
|
+
}, `filter-${a.join("-")}`) : P(n) ? /* @__PURE__ */ q(qe, {
|
|
805
806
|
group: n,
|
|
806
807
|
schema: t,
|
|
807
808
|
onUpdate: (e) => _(r, e),
|
|
@@ -815,7 +816,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
815
816
|
onClick: b,
|
|
816
817
|
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
818
|
title: "Add filter",
|
|
818
|
-
children: [/* @__PURE__ */ J(
|
|
819
|
+
children: [/* @__PURE__ */ J(ve, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
|
|
819
820
|
className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
|
|
820
821
|
children: [
|
|
821
822
|
"(",
|
|
@@ -851,7 +852,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
851
852
|
children: e.map((e, t) => S(e, t))
|
|
852
853
|
})
|
|
853
854
|
}),
|
|
854
|
-
/* @__PURE__ */ q(
|
|
855
|
+
/* @__PURE__ */ q(E, {
|
|
855
856
|
isOpen: o,
|
|
856
857
|
onClose: () => {
|
|
857
858
|
s(!1), u.current = [];
|
|
@@ -923,8 +924,8 @@ function tt({ issue: e }) {
|
|
|
923
924
|
});
|
|
924
925
|
}
|
|
925
926
|
function nt({ text: e }) {
|
|
926
|
-
let { t } = z(), [n, r] =
|
|
927
|
-
return
|
|
927
|
+
let { t } = z(), [n, r] = V.useState(!1), i = V.useRef(null);
|
|
928
|
+
return V.useEffect(() => () => {
|
|
928
929
|
i.current && clearTimeout(i.current);
|
|
929
930
|
}, []), /* @__PURE__ */ q("button", {
|
|
930
931
|
onClick: async () => {
|
|
@@ -965,7 +966,7 @@ function rt({ rec: e }) {
|
|
|
965
966
|
}),
|
|
966
967
|
e.sql && /* @__PURE__ */ q("div", {
|
|
967
968
|
className: "dc:mt-2",
|
|
968
|
-
children: /* @__PURE__ */ q(
|
|
969
|
+
children: /* @__PURE__ */ q(m, {
|
|
969
970
|
code: e.sql,
|
|
970
971
|
language: "sql",
|
|
971
972
|
headerRight: /* @__PURE__ */ q(nt, { text: e.sql })
|
|
@@ -1000,12 +1001,12 @@ function rt({ rec: e }) {
|
|
|
1000
1001
|
}
|
|
1001
1002
|
function it({ analysis: e, onClose: t, onClear: n }) {
|
|
1002
1003
|
let { t: r } = z(), i = t || n;
|
|
1003
|
-
return
|
|
1004
|
+
return V.useEffect(() => {
|
|
1004
1005
|
let e = (e) => {
|
|
1005
1006
|
e.key === "Escape" && i && i();
|
|
1006
1007
|
};
|
|
1007
1008
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
1008
|
-
}, [i]),
|
|
1009
|
+
}, [i]), V.useEffect(() => (document.body.style.overflow = "hidden", () => {
|
|
1009
1010
|
document.body.style.overflow = "";
|
|
1010
1011
|
}), []), /* @__PURE__ */ J("div", {
|
|
1011
1012
|
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 +1273,7 @@ function Mt(e, t, n, r) {
|
|
|
1272
1273
|
//#endregion
|
|
1273
1274
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
|
|
1274
1275
|
function Nt({ title: e, height: t, className: n, children: r }) {
|
|
1275
|
-
return /* @__PURE__ */ J(
|
|
1276
|
+
return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("h4", {
|
|
1276
1277
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1277
1278
|
children: e
|
|
1278
1279
|
}), /* @__PURE__ */ q("div", {
|
|
@@ -1293,7 +1294,7 @@ function Pt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSq
|
|
|
1293
1294
|
height: o,
|
|
1294
1295
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1295
1296
|
children: n.message
|
|
1296
|
-
}) : e ? /* @__PURE__ */ q(
|
|
1297
|
+
}) : e ? /* @__PURE__ */ q(m, {
|
|
1297
1298
|
code: i,
|
|
1298
1299
|
language: "sql",
|
|
1299
1300
|
title: a,
|
|
@@ -1362,7 +1363,7 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1362
1363
|
n.summary.usedIndexes.join(", ")
|
|
1363
1364
|
]
|
|
1364
1365
|
}),
|
|
1365
|
-
/* @__PURE__ */ q(
|
|
1366
|
+
/* @__PURE__ */ q(m, {
|
|
1366
1367
|
code: n.raw,
|
|
1367
1368
|
language: "sql",
|
|
1368
1369
|
title: a("debug.executionPlanTitle", { database: n.summary.database }),
|
|
@@ -1374,8 +1375,8 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1374
1375
|
}
|
|
1375
1376
|
//#endregion
|
|
1376
1377
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
|
|
1377
|
-
var Lt =
|
|
1378
|
-
let { t: v } = z(), [y, b] =
|
|
1378
|
+
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" }) {
|
|
1379
|
+
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
1380
|
f && i && h && (f(i, h), S(!0));
|
|
1380
1381
|
}, T = () => {
|
|
1381
1382
|
S(!1);
|
|
@@ -1383,10 +1384,10 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1383
1384
|
onClick: w,
|
|
1384
1385
|
disabled: u,
|
|
1385
1386
|
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(
|
|
1387
|
+
children: u ? /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("span", {
|
|
1387
1388
|
className: "dc:animate-spin",
|
|
1388
1389
|
children: "⟳"
|
|
1389
|
-
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(
|
|
1390
|
+
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(Se, { children: `✨ ${v("debug.aiAnalysis")}` })
|
|
1390
1391
|
}) : null;
|
|
1391
1392
|
return /* @__PURE__ */ J("div", {
|
|
1392
1393
|
className: "dc:space-y-3",
|
|
@@ -1399,7 +1400,7 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1399
1400
|
formattedSql: C,
|
|
1400
1401
|
title: g,
|
|
1401
1402
|
height: _,
|
|
1402
|
-
headerRight: /* @__PURE__ */ J(
|
|
1403
|
+
headerRight: /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("label", {
|
|
1403
1404
|
className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
|
|
1404
1405
|
children: [/* @__PURE__ */ q("input", {
|
|
1405
1406
|
type: "checkbox",
|
|
@@ -1479,22 +1480,22 @@ function Vt(e) {
|
|
|
1479
1480
|
}
|
|
1480
1481
|
function Ht(e) {
|
|
1481
1482
|
return e.map((e, t) => ({
|
|
1482
|
-
id:
|
|
1483
|
+
id: f(),
|
|
1483
1484
|
field: e,
|
|
1484
|
-
label:
|
|
1485
|
+
label: w(t)
|
|
1485
1486
|
}));
|
|
1486
1487
|
}
|
|
1487
1488
|
function Ut(e) {
|
|
1488
1489
|
let t = [];
|
|
1489
1490
|
if (e.dimensions) for (let n of e.dimensions) t.push({
|
|
1490
|
-
id:
|
|
1491
|
+
id: f(),
|
|
1491
1492
|
field: n,
|
|
1492
1493
|
isTimeDimension: !1
|
|
1493
1494
|
});
|
|
1494
1495
|
if (e.timeDimensions) for (let n of e.timeDimensions) {
|
|
1495
1496
|
let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
|
|
1496
1497
|
t.push({
|
|
1497
|
-
id:
|
|
1498
|
+
id: f(),
|
|
1498
1499
|
field: n.dimension,
|
|
1499
1500
|
granularity: n.granularity,
|
|
1500
1501
|
isTimeDimension: !0,
|
|
@@ -1599,7 +1600,7 @@ var X = {
|
|
|
1599
1600
|
}
|
|
1600
1601
|
}, Z = /* @__PURE__ */ new Map(), Kt = !1;
|
|
1601
1602
|
function qt() {
|
|
1602
|
-
Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel",
|
|
1603
|
+
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
1604
|
}
|
|
1604
1605
|
var Q = {
|
|
1605
1606
|
register(e) {
|
|
@@ -1624,9 +1625,9 @@ var Q = {
|
|
|
1624
1625
|
analysisType: "query",
|
|
1625
1626
|
charts: {
|
|
1626
1627
|
query: X.getDefaultChartConfig(),
|
|
1627
|
-
funnel:
|
|
1628
|
-
flow:
|
|
1629
|
-
retention:
|
|
1628
|
+
funnel: v.getDefaultChartConfig(),
|
|
1629
|
+
flow: _.getDefaultChartConfig(),
|
|
1630
|
+
retention: S.getDefaultChartConfig()
|
|
1630
1631
|
},
|
|
1631
1632
|
activeViews: {
|
|
1632
1633
|
query: "chart",
|
|
@@ -1885,9 +1886,9 @@ var Q = {
|
|
|
1885
1886
|
}),
|
|
1886
1887
|
addMetric: (t, n) => e((e) => {
|
|
1887
1888
|
let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || Y(), o = {
|
|
1888
|
-
id:
|
|
1889
|
+
id: f(),
|
|
1889
1890
|
field: t,
|
|
1890
|
-
label: n ||
|
|
1891
|
+
label: n || w(a.metrics.length)
|
|
1891
1892
|
};
|
|
1892
1893
|
return i[r] = {
|
|
1893
1894
|
...a,
|
|
@@ -1910,9 +1911,9 @@ var Q = {
|
|
|
1910
1911
|
};
|
|
1911
1912
|
else {
|
|
1912
1913
|
let e = {
|
|
1913
|
-
id:
|
|
1914
|
+
id: f(),
|
|
1914
1915
|
field: t,
|
|
1915
|
-
label:
|
|
1916
|
+
label: w(i.metrics.length)
|
|
1916
1917
|
};
|
|
1917
1918
|
r[n] = {
|
|
1918
1919
|
...i,
|
|
@@ -1932,7 +1933,7 @@ var Q = {
|
|
|
1932
1933
|
let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || Y();
|
|
1933
1934
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
1934
1935
|
let s = {
|
|
1935
|
-
id:
|
|
1936
|
+
id: f(),
|
|
1936
1937
|
field: t,
|
|
1937
1938
|
isTimeDimension: n,
|
|
1938
1939
|
granularity: n ? r || "month" : void 0
|
|
@@ -1959,7 +1960,7 @@ var Q = {
|
|
|
1959
1960
|
else {
|
|
1960
1961
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
1961
1962
|
let s = {
|
|
1962
|
-
id:
|
|
1963
|
+
id: f(),
|
|
1963
1964
|
field: t,
|
|
1964
1965
|
isTimeDimension: n,
|
|
1965
1966
|
granularity: n ? r || "month" : void 0
|
|
@@ -2124,7 +2125,7 @@ var Q = {
|
|
|
2124
2125
|
...Qt(),
|
|
2125
2126
|
addFunnelStep: () => e((e) => {
|
|
2126
2127
|
let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
|
|
2127
|
-
id:
|
|
2128
|
+
id: f(),
|
|
2128
2129
|
name: `Step ${e.funnelSteps.length + 1}`,
|
|
2129
2130
|
cube: e.funnelCube || "",
|
|
2130
2131
|
filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
|
|
@@ -2272,7 +2273,7 @@ var Q = {
|
|
|
2272
2273
|
joinStrategy: e.joinStrategy
|
|
2273
2274
|
} };
|
|
2274
2275
|
}
|
|
2275
|
-
}), nn = () => ({ ...
|
|
2276
|
+
}), nn = () => ({ ...D }), rn = (e, t, n) => ({
|
|
2276
2277
|
...nn(),
|
|
2277
2278
|
setRetentionCube: (t) => e(() => ({
|
|
2278
2279
|
retentionCube: t,
|
|
@@ -2455,11 +2456,11 @@ var Q = {
|
|
|
2455
2456
|
//#region src/client/stores/optionsToAnalysisConfig.ts
|
|
2456
2457
|
function cn(e) {
|
|
2457
2458
|
let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
|
|
2458
|
-
id:
|
|
2459
|
+
id: f(),
|
|
2459
2460
|
field: e,
|
|
2460
2461
|
isTimeDimension: !1
|
|
2461
2462
|
})), ...n.map((e) => ({
|
|
2462
|
-
id:
|
|
2463
|
+
id: f(),
|
|
2463
2464
|
field: e.dimension,
|
|
2464
2465
|
granularity: e.granularity,
|
|
2465
2466
|
isTimeDimension: !0,
|
|
@@ -2487,9 +2488,9 @@ function cn(e) {
|
|
|
2487
2488
|
return {
|
|
2488
2489
|
...Y(),
|
|
2489
2490
|
metrics: (e.measures || []).map((e, t) => ({
|
|
2490
|
-
id:
|
|
2491
|
+
id: f(),
|
|
2491
2492
|
field: e,
|
|
2492
|
-
label:
|
|
2493
|
+
label: w(t)
|
|
2493
2494
|
})),
|
|
2494
2495
|
breakdowns: r,
|
|
2495
2496
|
filters: i,
|
|
@@ -2511,8 +2512,8 @@ function dn(e) {
|
|
|
2511
2512
|
return e.initialActiveView || "chart";
|
|
2512
2513
|
}
|
|
2513
2514
|
function fn(e) {
|
|
2514
|
-
let t = un(
|
|
2515
|
-
return
|
|
2515
|
+
let t = un(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
|
|
2516
|
+
return v.save({
|
|
2516
2517
|
funnelCube: n.funnelCube ?? null,
|
|
2517
2518
|
funnelSteps: n.funnelSteps || [],
|
|
2518
2519
|
activeFunnelStepIndex: 0,
|
|
@@ -2521,8 +2522,8 @@ function fn(e) {
|
|
|
2521
2522
|
}, { funnel: t }, dn(e));
|
|
2522
2523
|
}
|
|
2523
2524
|
function pn(e) {
|
|
2524
|
-
let t = un(
|
|
2525
|
-
return
|
|
2525
|
+
let t = un(_, e.initialChartConfig), n = e.initialFlowState ?? {};
|
|
2526
|
+
return _.save({
|
|
2526
2527
|
flowCube: n.flowCube ?? null,
|
|
2527
2528
|
flowBindingKey: n.flowBindingKey ?? null,
|
|
2528
2529
|
flowTimeDimension: n.flowTimeDimension ?? null,
|
|
@@ -2537,8 +2538,8 @@ function pn(e) {
|
|
|
2537
2538
|
}, { flow: t }, dn(e));
|
|
2538
2539
|
}
|
|
2539
2540
|
function mn(e) {
|
|
2540
|
-
let t = un(
|
|
2541
|
-
return
|
|
2541
|
+
let t = un(S, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = O(k);
|
|
2542
|
+
return S.save({
|
|
2542
2543
|
retentionCube: n.retentionCube ?? null,
|
|
2543
2544
|
retentionBindingKey: n.retentionBindingKey ?? null,
|
|
2544
2545
|
retentionTimeDimension: n.retentionTimeDimension ?? null,
|
|
@@ -2592,9 +2593,9 @@ function yn(e, t) {
|
|
|
2592
2593
|
...nn(),
|
|
2593
2594
|
charts: {
|
|
2594
2595
|
query: X.getDefaultChartConfig(),
|
|
2595
|
-
funnel:
|
|
2596
|
-
flow:
|
|
2597
|
-
retention:
|
|
2596
|
+
funnel: v.getDefaultChartConfig(),
|
|
2597
|
+
flow: _.getDefaultChartConfig(),
|
|
2598
|
+
retention: S.getDefaultChartConfig()
|
|
2598
2599
|
},
|
|
2599
2600
|
activeViews: {
|
|
2600
2601
|
query: "chart",
|
|
@@ -2610,21 +2611,21 @@ function yn(e, t) {
|
|
|
2610
2611
|
...Qt(),
|
|
2611
2612
|
charts: {
|
|
2612
2613
|
...e.charts,
|
|
2613
|
-
funnel:
|
|
2614
|
+
funnel: v.getDefaultChartConfig()
|
|
2614
2615
|
}
|
|
2615
2616
|
};
|
|
2616
2617
|
case "flow": return {
|
|
2617
2618
|
...en(),
|
|
2618
2619
|
charts: {
|
|
2619
2620
|
...e.charts,
|
|
2620
|
-
flow:
|
|
2621
|
+
flow: _.getDefaultChartConfig()
|
|
2621
2622
|
}
|
|
2622
2623
|
};
|
|
2623
2624
|
case "retention": return {
|
|
2624
2625
|
...nn(),
|
|
2625
2626
|
charts: {
|
|
2626
2627
|
...e.charts,
|
|
2627
|
-
retention:
|
|
2628
|
+
retention: S.getDefaultChartConfig()
|
|
2628
2629
|
}
|
|
2629
2630
|
};
|
|
2630
2631
|
default: return {
|
|
@@ -2671,10 +2672,10 @@ function bn(n = {}) {
|
|
|
2671
2672
|
return a()(i(e(t(o, {
|
|
2672
2673
|
name: n.storageKey || "drizzle-cube-analysis-builder-v3",
|
|
2673
2674
|
partialize: (e) => e.saveWorkspace(),
|
|
2674
|
-
merge: (e, t) => e &&
|
|
2675
|
+
merge: (e, t) => e && j(e) ? {
|
|
2675
2676
|
...t,
|
|
2676
2677
|
_persistedWorkspace: e
|
|
2677
|
-
} : e &&
|
|
2678
|
+
} : e && A(e) ? {
|
|
2678
2679
|
...t,
|
|
2679
2680
|
_persistedConfig: e
|
|
2680
2681
|
} : r ? {
|
|
@@ -2697,9 +2698,9 @@ function bn(n = {}) {
|
|
|
2697
2698
|
}
|
|
2698
2699
|
})), { name: "AnalysisBuilderStore" }));
|
|
2699
2700
|
}
|
|
2700
|
-
var xn =
|
|
2701
|
+
var xn = ye(null);
|
|
2701
2702
|
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 =
|
|
2703
|
+
let u = G(null);
|
|
2703
2704
|
return u.current ||= bn({
|
|
2704
2705
|
initialQuery: t,
|
|
2705
2706
|
initialChartConfig: n,
|
|
@@ -2716,12 +2717,12 @@ function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
|
|
|
2716
2717
|
});
|
|
2717
2718
|
}
|
|
2718
2719
|
function $(e) {
|
|
2719
|
-
let t =
|
|
2720
|
+
let t = xe(xn);
|
|
2720
2721
|
if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
|
|
2721
2722
|
return r(t, e);
|
|
2722
2723
|
}
|
|
2723
2724
|
function Cn() {
|
|
2724
|
-
let e =
|
|
2725
|
+
let e = xe(xn);
|
|
2725
2726
|
if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
|
|
2726
2727
|
return e;
|
|
2727
2728
|
}
|
|
@@ -2869,7 +2870,7 @@ function Vn(e) {
|
|
|
2869
2870
|
//#endregion
|
|
2870
2871
|
//#region src/client/hooks/useAnalysisState.ts
|
|
2871
2872
|
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),
|
|
2873
|
+
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
2874
|
let e = i[a] || g;
|
|
2874
2875
|
return Te(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
|
|
2875
2876
|
}, [
|
|
@@ -2877,14 +2878,14 @@ function Hn(e = {}) {
|
|
|
2877
2878
|
a,
|
|
2878
2879
|
g,
|
|
2879
2880
|
y
|
|
2880
|
-
]), x =
|
|
2881
|
+
]), x = W(() => {
|
|
2881
2882
|
let e = i[0]?.breakdowns || [];
|
|
2882
2883
|
return i.map((t, n) => Te(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
|
|
2883
2884
|
}, [
|
|
2884
2885
|
i,
|
|
2885
2886
|
o,
|
|
2886
2887
|
y
|
|
2887
|
-
]), S =
|
|
2888
|
+
]), S = W(() => {
|
|
2888
2889
|
if (i.length <= 1) return null;
|
|
2889
2890
|
let e = x.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
|
|
2890
2891
|
return e.length < 2 ? null : {
|
|
@@ -2898,12 +2899,12 @@ function Hn(e = {}) {
|
|
|
2898
2899
|
i.length,
|
|
2899
2900
|
o,
|
|
2900
2901
|
v
|
|
2901
|
-
]), C =
|
|
2902
|
+
]), C = W(() => _ ? Ln(x, o, v || []) : null, [
|
|
2902
2903
|
_,
|
|
2903
2904
|
x,
|
|
2904
2905
|
o,
|
|
2905
2906
|
v
|
|
2906
|
-
]), w =
|
|
2907
|
+
]), w = W(() => b.measures && b.measures.length > 0 || b.dimensions && b.dimensions.length > 0 || b.timeDimensions && b.timeDimensions.length > 0, [b]), T = W(() => {
|
|
2907
2908
|
if (!_) return g.metrics;
|
|
2908
2909
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
2909
2910
|
for (let n = 0; n < i.length; n++) {
|
|
@@ -2921,7 +2922,7 @@ function Hn(e = {}) {
|
|
|
2921
2922
|
_,
|
|
2922
2923
|
i,
|
|
2923
2924
|
g.metrics
|
|
2924
|
-
]), E =
|
|
2925
|
+
]), E = W(() => {
|
|
2925
2926
|
if (!_) return g.breakdowns;
|
|
2926
2927
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
2927
2928
|
for (let n of i) for (let r of n.breakdowns) e.has(r.field) || (e.add(r.field), t.push(r));
|
|
@@ -2930,67 +2931,67 @@ function Hn(e = {}) {
|
|
|
2930
2931
|
_,
|
|
2931
2932
|
i,
|
|
2932
2933
|
g.breakdowns
|
|
2933
|
-
]), D =
|
|
2934
|
+
]), D = W(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : g.breakdowns, [
|
|
2934
2935
|
o,
|
|
2935
2936
|
a,
|
|
2936
2937
|
i,
|
|
2937
2938
|
g.breakdowns
|
|
2938
|
-
]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey),
|
|
2939
|
+
]), 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
2940
|
O,
|
|
2940
2941
|
k,
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
]),
|
|
2942
|
+
M,
|
|
2943
|
+
j
|
|
2944
|
+
]), 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
2945
|
showLegend: !0,
|
|
2945
2946
|
showGrid: !0,
|
|
2946
2947
|
showTooltip: !0
|
|
2947
|
-
}, [
|
|
2948
|
+
}, [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
2949
|
showLegend: !0,
|
|
2949
2950
|
showGrid: !0,
|
|
2950
2951
|
showTooltip: !0
|
|
2951
|
-
}, [
|
|
2952
|
+
}, [le]), de = $((e) => e.charts.flow?.chartType) || "sankey", z = $((e) => e.buildFunnelQueryFromSteps), fe = W(() => O === "funnel" ? z() : null, [
|
|
2952
2953
|
O,
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
]),
|
|
2954
|
+
z,
|
|
2955
|
+
j
|
|
2956
|
+
]), B = $((e) => e.buildFlowQuery), pe = W(() => O === "flow" ? B() : null, [
|
|
2956
2957
|
O,
|
|
2957
|
-
|
|
2958
|
-
P,
|
|
2959
|
-
oe,
|
|
2960
|
-
se,
|
|
2958
|
+
B,
|
|
2961
2959
|
F,
|
|
2962
2960
|
I,
|
|
2961
|
+
ae,
|
|
2962
|
+
oe,
|
|
2963
2963
|
L,
|
|
2964
|
-
|
|
2964
|
+
R,
|
|
2965
|
+
se,
|
|
2965
2966
|
de,
|
|
2966
|
-
|
|
2967
|
-
]),
|
|
2967
|
+
ce
|
|
2968
|
+
]), 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
2969
|
O,
|
|
2969
|
-
|
|
2970
|
+
G,
|
|
2971
|
+
me,
|
|
2970
2972
|
he,
|
|
2971
2973
|
ge,
|
|
2972
2974
|
_e,
|
|
2973
|
-
|
|
2975
|
+
ye,
|
|
2974
2976
|
be,
|
|
2975
2977
|
xe,
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
]), Ce = U(() => O === "retention" ? K() : null, [
|
|
2978
|
+
U,
|
|
2979
|
+
ve,
|
|
2980
|
+
V
|
|
2981
|
+
]), Ce = W(() => O === "retention" ? Se() : null, [
|
|
2981
2982
|
O,
|
|
2982
|
-
|
|
2983
|
+
Se,
|
|
2984
|
+
me,
|
|
2983
2985
|
he,
|
|
2984
2986
|
ge,
|
|
2985
|
-
_e
|
|
2986
|
-
|
|
2987
|
-
]), we = U(() => O === "retention" ? J !== null : O === "flow" ? z !== null : O === "funnel" ? pe !== null : w ?? !1, [
|
|
2987
|
+
_e
|
|
2988
|
+
]), we = W(() => O === "retention" ? J !== null : O === "flow" ? pe !== null : O === "funnel" ? fe !== null : w ?? !1, [
|
|
2988
2989
|
O,
|
|
2989
2990
|
J,
|
|
2990
|
-
z,
|
|
2991
2991
|
pe,
|
|
2992
|
+
fe,
|
|
2992
2993
|
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 =
|
|
2994
|
+
]), { 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
2995
|
if (O === "funnel") Ne(e);
|
|
2995
2996
|
else {
|
|
2996
2997
|
Ae(e);
|
|
@@ -3004,24 +3005,24 @@ function Hn(e = {}) {
|
|
|
3004
3005
|
Ne,
|
|
3005
3006
|
Ae,
|
|
3006
3007
|
je
|
|
3007
|
-
]), ze =
|
|
3008
|
+
]), ze = H((e) => {
|
|
3008
3009
|
O === "funnel" ? Pe(e) : je(e);
|
|
3009
3010
|
}, [
|
|
3010
3011
|
O,
|
|
3011
3012
|
Pe,
|
|
3012
3013
|
je
|
|
3013
|
-
]), Be =
|
|
3014
|
+
]), Be = H((e) => {
|
|
3014
3015
|
O === "funnel" ? Fe(e) : Me(e);
|
|
3015
3016
|
}, [
|
|
3016
3017
|
O,
|
|
3017
3018
|
Fe,
|
|
3018
3019
|
Me
|
|
3019
|
-
]), Ve =
|
|
3020
|
+
]), Ve = W(() => Ot(T, E), [T, E]), He = W(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
|
|
3020
3021
|
name: "custom",
|
|
3021
3022
|
label: "Custom",
|
|
3022
3023
|
colors: t,
|
|
3023
3024
|
gradient: t
|
|
3024
|
-
} : t :
|
|
3025
|
+
} : t : p(ke), [t, ke]), Ue = H((e) => {
|
|
3025
3026
|
r.setState((t) => ({ charts: {
|
|
3026
3027
|
...t.charts,
|
|
3027
3028
|
flow: {
|
|
@@ -3033,7 +3034,7 @@ function Hn(e = {}) {
|
|
|
3033
3034
|
displayConfig: e
|
|
3034
3035
|
}
|
|
3035
3036
|
} }));
|
|
3036
|
-
}, [r]), We =
|
|
3037
|
+
}, [r]), We = H((e) => {
|
|
3037
3038
|
r.setState((t) => ({ charts: {
|
|
3038
3039
|
...t.charts,
|
|
3039
3040
|
retention: {
|
|
@@ -3045,28 +3046,28 @@ function Hn(e = {}) {
|
|
|
3045
3046
|
displayConfig: e
|
|
3046
3047
|
}
|
|
3047
3048
|
} }));
|
|
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] =
|
|
3049
|
+
}, [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
3050
|
Yt,
|
|
3050
3051
|
i,
|
|
3051
3052
|
O,
|
|
3052
|
-
A,
|
|
3053
|
-
k,
|
|
3054
3053
|
j,
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
se,
|
|
3054
|
+
k,
|
|
3055
|
+
M,
|
|
3058
3056
|
F,
|
|
3059
3057
|
I,
|
|
3058
|
+
ae,
|
|
3059
|
+
oe,
|
|
3060
3060
|
L,
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3061
|
+
R,
|
|
3062
|
+
se,
|
|
3063
|
+
ce
|
|
3064
|
+
]), Zt = H((e, t) => {
|
|
3064
3065
|
O === "retention" && t === "dimension" ? Z({ field: e.name }) : ut(e.name, t === "timeDimension");
|
|
3065
3066
|
}, [
|
|
3066
3067
|
O,
|
|
3067
3068
|
Z,
|
|
3068
3069
|
ut
|
|
3069
|
-
]), Qt =
|
|
3070
|
+
]), Qt = H((e, t, n, r) => {
|
|
3070
3071
|
Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
|
|
3071
3072
|
}, [
|
|
3072
3073
|
Ye,
|
|
@@ -3093,35 +3094,35 @@ function Hn(e = {}) {
|
|
|
3093
3094
|
effectiveBreakdowns: D,
|
|
3094
3095
|
analysisType: O,
|
|
3095
3096
|
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:
|
|
3097
|
+
isFunnelModeEnabled: N,
|
|
3098
|
+
funnelCube: A,
|
|
3099
|
+
funnelSteps: j,
|
|
3100
|
+
activeFunnelStepIndex: ee,
|
|
3101
|
+
funnelTimeDimension: M,
|
|
3102
|
+
funnelChartType: te,
|
|
3103
|
+
funnelChartConfig: ne,
|
|
3104
|
+
funnelDisplayConfig: ie,
|
|
3105
|
+
serverFunnelQuery: fe,
|
|
3106
|
+
flowCube: F,
|
|
3107
|
+
flowBindingKey: I,
|
|
3108
|
+
flowTimeDimension: ae,
|
|
3109
|
+
eventDimension: oe,
|
|
3110
|
+
startingStep: L,
|
|
3111
|
+
stepsBefore: R,
|
|
3112
|
+
stepsAfter: se,
|
|
3113
|
+
joinStrategy: ce,
|
|
3113
3114
|
flowDisplayConfig: ue,
|
|
3114
|
-
serverFlowQuery:
|
|
3115
|
-
retentionCube:
|
|
3116
|
-
retentionBindingKey:
|
|
3117
|
-
retentionTimeDimension:
|
|
3118
|
-
retentionDateRange:
|
|
3119
|
-
retentionCohortFilters:
|
|
3120
|
-
retentionActivityFilters:
|
|
3121
|
-
retentionBreakdowns:
|
|
3122
|
-
retentionViewGranularity:
|
|
3123
|
-
retentionPeriods:
|
|
3124
|
-
retentionType:
|
|
3115
|
+
serverFlowQuery: pe,
|
|
3116
|
+
retentionCube: me,
|
|
3117
|
+
retentionBindingKey: he,
|
|
3118
|
+
retentionTimeDimension: ge,
|
|
3119
|
+
retentionDateRange: _e,
|
|
3120
|
+
retentionCohortFilters: ve,
|
|
3121
|
+
retentionActivityFilters: V,
|
|
3122
|
+
retentionBreakdowns: ye,
|
|
3123
|
+
retentionViewGranularity: be,
|
|
3124
|
+
retentionPeriods: xe,
|
|
3125
|
+
retentionType: U,
|
|
3125
3126
|
retentionDisplayConfig: q,
|
|
3126
3127
|
serverRetentionQuery: J,
|
|
3127
3128
|
retentionValidation: Ce,
|
|
@@ -3139,7 +3140,7 @@ function Hn(e = {}) {
|
|
|
3139
3140
|
fieldModalMode: Ye,
|
|
3140
3141
|
activeTableIndex: et,
|
|
3141
3142
|
adapterValidation: Xt,
|
|
3142
|
-
getQueryConfig:
|
|
3143
|
+
getQueryConfig: H(() => {
|
|
3143
3144
|
let e = r.getState();
|
|
3144
3145
|
return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
|
|
3145
3146
|
queries: e.buildAllQueries(),
|
|
@@ -3150,7 +3151,7 @@ function Hn(e = {}) {
|
|
|
3150
3151
|
stepTimeToConvert: e.stepTimeToConvert
|
|
3151
3152
|
} : e.buildCurrentQuery();
|
|
3152
3153
|
}, [r]),
|
|
3153
|
-
getChartConfig:
|
|
3154
|
+
getChartConfig: H(() => {
|
|
3154
3155
|
let e = r.getState(), t = e.charts[e.analysisType];
|
|
3155
3156
|
return t ? {
|
|
3156
3157
|
chartType: t.chartType,
|
|
@@ -3167,7 +3168,7 @@ function Hn(e = {}) {
|
|
|
3167
3168
|
Ee,
|
|
3168
3169
|
De
|
|
3169
3170
|
]),
|
|
3170
|
-
getAnalysisType:
|
|
3171
|
+
getAnalysisType: H(() => r.getState().analysisType, [r]),
|
|
3171
3172
|
actions: {
|
|
3172
3173
|
setActiveQueryIndex: s,
|
|
3173
3174
|
setMergeStrategy: c,
|
|
@@ -3285,192 +3286,194 @@ function Jn(e) {
|
|
|
3285
3286
|
//#endregion
|
|
3286
3287
|
//#region src/client/hooks/useAnalysisQuery.ts
|
|
3287
3288
|
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
|
-
|
|
3289
|
+
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({
|
|
3290
|
+
isRetentionMode: b,
|
|
3291
|
+
isFlowMode: y,
|
|
3292
|
+
isFunnelMode: v,
|
|
3293
|
+
isMultiMode: x
|
|
3294
|
+
}), T = W(() => C || !v || !c || n.length < 2 ? null : ge(n, c), [
|
|
3295
|
+
C,
|
|
3296
|
+
v,
|
|
3296
3297
|
c,
|
|
3297
3298
|
n
|
|
3298
|
-
]),
|
|
3299
|
+
]), E = Kn({
|
|
3299
3300
|
isValidQuery: a,
|
|
3300
|
-
isSingleMode:
|
|
3301
|
-
isMultiMode:
|
|
3302
|
-
isFunnelMode:
|
|
3303
|
-
isFlowMode:
|
|
3304
|
-
isRetentionMode:
|
|
3301
|
+
isSingleMode: S,
|
|
3302
|
+
isMultiMode: x,
|
|
3303
|
+
isFunnelMode: v,
|
|
3304
|
+
isFlowMode: y,
|
|
3305
|
+
isRetentionMode: b,
|
|
3305
3306
|
hasMultiQueryConfig: !!r,
|
|
3306
|
-
hasFunnelConfig: !!
|
|
3307
|
+
hasFunnelConfig: !!T,
|
|
3307
3308
|
hasServerFunnelQuery: !!d,
|
|
3308
3309
|
hasServerFlowQuery: !!f,
|
|
3309
3310
|
hasServerRetentionQuery: !!p
|
|
3310
|
-
}),
|
|
3311
|
-
skip:
|
|
3312
|
-
debounceMs: 300
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
}), D = ue(C, {
|
|
3317
|
-
skip: w.funnel,
|
|
3311
|
+
}), D = F(t, {
|
|
3312
|
+
skip: E.single,
|
|
3313
|
+
debounceMs: 300,
|
|
3314
|
+
gapFill: g
|
|
3315
|
+
}), O = oe(r, {
|
|
3316
|
+
skip: E.multi,
|
|
3318
3317
|
debounceMs: 300,
|
|
3319
|
-
|
|
3320
|
-
}),
|
|
3321
|
-
skip:
|
|
3318
|
+
gapFill: g
|
|
3319
|
+
}), k = se(T, {
|
|
3320
|
+
skip: E.funnel,
|
|
3321
|
+
debounceMs: 300,
|
|
3322
|
+
prebuiltServerQuery: C ? d : void 0
|
|
3323
|
+
}), A = ue(f ?? null, {
|
|
3324
|
+
skip: E.flow,
|
|
3322
3325
|
debounceMs: 300
|
|
3323
|
-
}),
|
|
3324
|
-
skip:
|
|
3326
|
+
}), j = ae(p ?? null, {
|
|
3327
|
+
skip: E.retention,
|
|
3325
3328
|
debounceMs: 300,
|
|
3326
|
-
getFieldLabel:
|
|
3327
|
-
}), ee =
|
|
3329
|
+
getFieldLabel: _
|
|
3330
|
+
}), ee = he({
|
|
3328
3331
|
queries: i ? n : [t],
|
|
3329
3332
|
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 (
|
|
3333
|
+
skip: E.dryRun
|
|
3334
|
+
}), 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, {
|
|
3335
|
+
retention: j.isLoading || j.isDebouncing,
|
|
3336
|
+
flow: A.isLoading || A.isDebouncing,
|
|
3337
|
+
funnel: k.isExecuting || k.isDebouncing,
|
|
3338
|
+
multi: O.isLoading,
|
|
3339
|
+
single: D.isLoading
|
|
3340
|
+
}), ne = Wn(w, {
|
|
3341
|
+
retention: j.isFetching,
|
|
3342
|
+
flow: A.isFetching,
|
|
3343
|
+
funnel: k.isExecuting,
|
|
3344
|
+
multi: O.isFetching,
|
|
3345
|
+
single: D.isFetching
|
|
3346
|
+
}), re = Wn(w, {
|
|
3347
|
+
retention: j.error,
|
|
3348
|
+
flow: A.error,
|
|
3349
|
+
funnel: k.error,
|
|
3350
|
+
multi: O.error,
|
|
3351
|
+
single: D.error
|
|
3352
|
+
}), ie = !(!D.debouncedQuery && !O.debouncedConfig && k.isDebouncing && A.isDebouncing && j.isDebouncing), I = H((e) => {
|
|
3353
|
+
switch (w) {
|
|
3351
3354
|
case "retention":
|
|
3352
|
-
|
|
3355
|
+
j.execute(e);
|
|
3353
3356
|
break;
|
|
3354
3357
|
case "flow":
|
|
3355
|
-
|
|
3358
|
+
A.refetch(e);
|
|
3356
3359
|
break;
|
|
3357
3360
|
case "funnel":
|
|
3358
|
-
|
|
3361
|
+
k.execute(e);
|
|
3359
3362
|
break;
|
|
3360
3363
|
case "multi":
|
|
3361
|
-
|
|
3364
|
+
O.refetch(e);
|
|
3362
3365
|
break;
|
|
3363
|
-
default:
|
|
3366
|
+
default: D.refetch(e);
|
|
3364
3367
|
}
|
|
3365
3368
|
}, [
|
|
3366
|
-
|
|
3369
|
+
w,
|
|
3370
|
+
j,
|
|
3371
|
+
A,
|
|
3367
3372
|
k,
|
|
3368
3373
|
O,
|
|
3369
|
-
D
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
multi: E.data,
|
|
3378
|
-
single: T.rawData
|
|
3374
|
+
D
|
|
3375
|
+
]), L = W(() => qn({
|
|
3376
|
+
hasResults: Wn(w, {
|
|
3377
|
+
retention: j.chartData,
|
|
3378
|
+
flow: A.data,
|
|
3379
|
+
funnel: k.chartData,
|
|
3380
|
+
multi: O.data,
|
|
3381
|
+
single: D.rawData
|
|
3379
3382
|
}),
|
|
3380
3383
|
initialData: o,
|
|
3381
3384
|
isValidQuery: a,
|
|
3382
|
-
isLoading:
|
|
3383
|
-
isFetching:
|
|
3384
|
-
error:
|
|
3385
|
+
isLoading: P,
|
|
3386
|
+
isFetching: ne,
|
|
3387
|
+
error: re
|
|
3385
3388
|
}), [
|
|
3386
3389
|
a,
|
|
3387
|
-
|
|
3388
|
-
N,
|
|
3390
|
+
P,
|
|
3389
3391
|
ne,
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
D.chartData,
|
|
3392
|
+
re,
|
|
3393
|
+
D.rawData,
|
|
3393
3394
|
O.data,
|
|
3394
3395
|
k.chartData,
|
|
3396
|
+
A.data,
|
|
3397
|
+
j.chartData,
|
|
3395
3398
|
o,
|
|
3396
|
-
|
|
3397
|
-
]),
|
|
3398
|
-
isRetentionMode:
|
|
3399
|
-
isFlowMode:
|
|
3400
|
-
isFunnelMode:
|
|
3401
|
-
isMultiMode:
|
|
3402
|
-
retentionChartData:
|
|
3403
|
-
flowData:
|
|
3404
|
-
funnelChartData:
|
|
3405
|
-
multiData:
|
|
3406
|
-
singleRawData:
|
|
3399
|
+
w
|
|
3400
|
+
]), R = W(() => Jn({
|
|
3401
|
+
isRetentionMode: b,
|
|
3402
|
+
isFlowMode: y,
|
|
3403
|
+
isFunnelMode: v,
|
|
3404
|
+
isMultiMode: x,
|
|
3405
|
+
retentionChartData: j.chartData,
|
|
3406
|
+
flowData: A.data,
|
|
3407
|
+
funnelChartData: k.chartData,
|
|
3408
|
+
multiData: O.data,
|
|
3409
|
+
singleRawData: D.rawData,
|
|
3407
3410
|
initialData: o
|
|
3408
3411
|
}), [
|
|
3409
|
-
|
|
3410
|
-
E.data,
|
|
3411
|
-
D.chartData,
|
|
3412
|
+
D.rawData,
|
|
3412
3413
|
O.data,
|
|
3413
3414
|
k.chartData,
|
|
3415
|
+
A.data,
|
|
3416
|
+
j.chartData,
|
|
3414
3417
|
o,
|
|
3418
|
+
x,
|
|
3419
|
+
v,
|
|
3415
3420
|
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,
|
|
3421
|
+
b
|
|
3422
|
+
]), ce = W(() => v && k.stepResults ? k.stepResults.map((e) => e.data) : !x || !O.perQueryData ? null : O.perQueryData, [
|
|
3423
|
+
x,
|
|
3424
|
+
v,
|
|
3425
|
+
O.perQueryData,
|
|
3426
|
+
k.stepResults
|
|
3427
|
+
]), { funnelExecutedQueries: le, funnelServerQuery: z, funnelDebugData: fe, flowServerQuery: B, flowChartData: pe, flowDebugData: _e, retentionServerQuery: ve, retentionChartData: V, retentionDebugData: ye } = Gn({
|
|
3428
|
+
isFunnelMode: v,
|
|
3429
|
+
isFlowMode: y,
|
|
3430
|
+
isRetentionMode: b,
|
|
3431
|
+
funnelExecutedQueries: k.executedQueries,
|
|
3432
|
+
funnelServerQuery: k.serverQuery,
|
|
3433
|
+
funnelDebugData: M.debugData,
|
|
3434
|
+
flowServerQuery: A.serverQuery,
|
|
3435
|
+
flowData: A.data,
|
|
3436
|
+
flowDebugData: N.debugData,
|
|
3434
3437
|
retentionServerQuery: p ?? null,
|
|
3435
|
-
retentionChartData:
|
|
3436
|
-
retentionDebugData:
|
|
3437
|
-
}),
|
|
3438
|
-
retention:
|
|
3439
|
-
flow:
|
|
3440
|
-
funnel:
|
|
3438
|
+
retentionChartData: j.chartData,
|
|
3439
|
+
retentionDebugData: te.debugData
|
|
3440
|
+
}), be = W(() => Wn(w, {
|
|
3441
|
+
retention: j.needsRefresh,
|
|
3442
|
+
flow: A.needsRefresh,
|
|
3443
|
+
funnel: k.needsRefresh,
|
|
3441
3444
|
multi: !1,
|
|
3442
|
-
single:
|
|
3445
|
+
single: D.needsRefresh
|
|
3443
3446
|
}), [
|
|
3444
|
-
|
|
3447
|
+
w,
|
|
3448
|
+
j.needsRefresh,
|
|
3449
|
+
A.needsRefresh,
|
|
3445
3450
|
k.needsRefresh,
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
if (b && T.warnings) return T.warnings;
|
|
3451
|
-
}, [b, T.warnings]);
|
|
3451
|
+
D.needsRefresh
|
|
3452
|
+
]), xe = W(() => {
|
|
3453
|
+
if (S && D.warnings) return D.warnings;
|
|
3454
|
+
}, [S, D.warnings]);
|
|
3452
3455
|
return {
|
|
3453
|
-
executionStatus:
|
|
3454
|
-
executionResults:
|
|
3455
|
-
perQueryResults:
|
|
3456
|
-
isLoading:
|
|
3457
|
-
isFetching:
|
|
3458
|
-
error:
|
|
3456
|
+
executionStatus: L,
|
|
3457
|
+
executionResults: R,
|
|
3458
|
+
perQueryResults: ce,
|
|
3459
|
+
isLoading: P,
|
|
3460
|
+
isFetching: ne,
|
|
3461
|
+
error: re,
|
|
3459
3462
|
debugDataPerQuery: ee.debugDataPerQuery,
|
|
3460
|
-
hasDebounced:
|
|
3461
|
-
refetch:
|
|
3462
|
-
funnelExecutedQueries:
|
|
3463
|
-
funnelServerQuery:
|
|
3464
|
-
funnelDebugData:
|
|
3465
|
-
flowServerQuery:
|
|
3466
|
-
flowChartData:
|
|
3467
|
-
flowDebugData:
|
|
3468
|
-
retentionServerQuery:
|
|
3469
|
-
retentionChartData:
|
|
3463
|
+
hasDebounced: ie,
|
|
3464
|
+
refetch: I,
|
|
3465
|
+
funnelExecutedQueries: le,
|
|
3466
|
+
funnelServerQuery: z,
|
|
3467
|
+
funnelDebugData: fe,
|
|
3468
|
+
flowServerQuery: B,
|
|
3469
|
+
flowChartData: pe,
|
|
3470
|
+
flowDebugData: _e,
|
|
3471
|
+
retentionServerQuery: ve,
|
|
3472
|
+
retentionChartData: V,
|
|
3470
3473
|
retentionDebugData: ye,
|
|
3471
3474
|
retentionValidation: m ?? null,
|
|
3472
|
-
needsRefresh:
|
|
3473
|
-
warnings:
|
|
3475
|
+
needsRefresh: be,
|
|
3476
|
+
warnings: xe
|
|
3474
3477
|
};
|
|
3475
3478
|
}
|
|
3476
3479
|
//#endregion
|
|
@@ -3485,7 +3488,7 @@ function er(e) {
|
|
|
3485
3488
|
let t = (0, Xn.decompressFromEncodedURIComponent)(e);
|
|
3486
3489
|
if (!t) return null;
|
|
3487
3490
|
let n = JSON.parse(t);
|
|
3488
|
-
return
|
|
3491
|
+
return A(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
|
|
3489
3492
|
} catch {
|
|
3490
3493
|
return null;
|
|
3491
3494
|
}
|
|
@@ -3578,19 +3581,19 @@ function lr(e) {
|
|
|
3578
3581
|
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
3579
3582
|
}
|
|
3580
3583
|
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
|
-
|
|
3584
|
+
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);
|
|
3585
|
+
U(() => {
|
|
3583
3586
|
if (u.current) return;
|
|
3584
3587
|
u.current = !0;
|
|
3585
3588
|
let e = or();
|
|
3586
3589
|
e && (o.getState().load(e), ar());
|
|
3587
|
-
}, [o]),
|
|
3590
|
+
}, [o]), U(() => {
|
|
3588
3591
|
i && t.isValidQuery && i(t.currentQuery);
|
|
3589
3592
|
}, [
|
|
3590
3593
|
t.currentQuery,
|
|
3591
3594
|
t.isValidQuery,
|
|
3592
3595
|
i
|
|
3593
|
-
]),
|
|
3596
|
+
]), U(() => {
|
|
3594
3597
|
a && a({
|
|
3595
3598
|
chartType: t.chartType,
|
|
3596
3599
|
chartConfig: t.chartConfig,
|
|
@@ -3602,46 +3605,46 @@ function ur(e) {
|
|
|
3602
3605
|
t.displayConfig,
|
|
3603
3606
|
a
|
|
3604
3607
|
]);
|
|
3605
|
-
let { combinedMetrics: d, combinedBreakdowns:
|
|
3606
|
-
|
|
3607
|
-
if (!
|
|
3608
|
+
let { combinedMetrics: d, combinedBreakdowns: p, chartType: m, chartConfig: h, userManuallySelectedChart: g } = t, { hasDebounced: _ } = n, { setChartType: v, setChartConfig: y } = s, b = G("");
|
|
3609
|
+
U(() => {
|
|
3610
|
+
if (!_ || d.length === 0 && p.length === 0) return;
|
|
3608
3611
|
let e = JSON.stringify({
|
|
3609
3612
|
metrics: d.map((e) => e.field),
|
|
3610
|
-
breakdowns:
|
|
3613
|
+
breakdowns: p.map((e) => ({
|
|
3611
3614
|
field: e.field,
|
|
3612
3615
|
isTime: e.isTimeDimension
|
|
3613
3616
|
}))
|
|
3614
3617
|
});
|
|
3615
|
-
if (e ===
|
|
3616
|
-
|
|
3617
|
-
let t = Mt(d,
|
|
3618
|
+
if (e === b.current) return;
|
|
3619
|
+
b.current = e;
|
|
3620
|
+
let t = Mt(d, p, m, g);
|
|
3618
3621
|
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
|
-
...
|
|
3622
|
+
let { chartConfig: e } = At(d, p, t);
|
|
3623
|
+
v(t), y(e), s.setUserManuallySelectedChart(!1);
|
|
3624
|
+
} else if (d.length > 0 || p.length > 0) {
|
|
3625
|
+
if (m === "table" || m === "recordsTable") {
|
|
3626
|
+
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));
|
|
3627
|
+
i.length > 0 && y({
|
|
3628
|
+
...h,
|
|
3626
3629
|
[e]: [...n, ...i]
|
|
3627
3630
|
});
|
|
3628
|
-
} else if (!
|
|
3629
|
-
let { chartConfig: e } = At(d,
|
|
3630
|
-
|
|
3631
|
+
} else if (!h.xAxis?.length && !h.yAxis?.length && !h.series?.length) {
|
|
3632
|
+
let { chartConfig: e } = At(d, p, m);
|
|
3633
|
+
y(e);
|
|
3631
3634
|
}
|
|
3632
3635
|
}
|
|
3633
3636
|
}, [
|
|
3634
|
-
|
|
3637
|
+
_,
|
|
3635
3638
|
d,
|
|
3636
|
-
f,
|
|
3637
3639
|
p,
|
|
3638
|
-
|
|
3640
|
+
m,
|
|
3639
3641
|
g,
|
|
3642
|
+
h,
|
|
3643
|
+
v,
|
|
3640
3644
|
y,
|
|
3641
|
-
b,
|
|
3642
3645
|
s
|
|
3643
3646
|
]);
|
|
3644
|
-
let [
|
|
3647
|
+
let [x, S] = K({
|
|
3645
3648
|
isOpen: !1,
|
|
3646
3649
|
userPrompt: "",
|
|
3647
3650
|
isGenerating: !1,
|
|
@@ -3649,7 +3652,7 @@ function ur(e) {
|
|
|
3649
3652
|
hasGeneratedQuery: !1,
|
|
3650
3653
|
previousState: null,
|
|
3651
3654
|
previousConfig: null
|
|
3652
|
-
}),
|
|
3655
|
+
}), C = H((e) => {
|
|
3653
3656
|
o.getState().updateQueryState(t.activeQueryIndex, (t) => {
|
|
3654
3657
|
let n = e(t);
|
|
3655
3658
|
return {
|
|
@@ -3661,7 +3664,7 @@ function ur(e) {
|
|
|
3661
3664
|
limit: n.limit
|
|
3662
3665
|
};
|
|
3663
3666
|
});
|
|
3664
|
-
}, [o, t.activeQueryIndex]), T =
|
|
3667
|
+
}, [o, t.activeQueryIndex]), T = H((e) => {
|
|
3665
3668
|
let t = {
|
|
3666
3669
|
version: 1,
|
|
3667
3670
|
analysisType: "funnel",
|
|
@@ -3674,9 +3677,9 @@ function ur(e) {
|
|
|
3674
3677
|
query: e
|
|
3675
3678
|
};
|
|
3676
3679
|
o.getState().load(t);
|
|
3677
|
-
}, [o]), E =
|
|
3680
|
+
}, [o]), E = H(() => {
|
|
3678
3681
|
let e = o.getState().save();
|
|
3679
|
-
|
|
3682
|
+
S({
|
|
3680
3683
|
isOpen: !0,
|
|
3681
3684
|
userPrompt: "",
|
|
3682
3685
|
isGenerating: !1,
|
|
@@ -3702,30 +3705,30 @@ function ur(e) {
|
|
|
3702
3705
|
t.chartConfig,
|
|
3703
3706
|
t.displayConfig,
|
|
3704
3707
|
t.analysisType
|
|
3705
|
-
]), D =
|
|
3706
|
-
|
|
3708
|
+
]), D = H(() => {
|
|
3709
|
+
S((e) => ({
|
|
3707
3710
|
...e,
|
|
3708
3711
|
isOpen: !1,
|
|
3709
3712
|
userPrompt: "",
|
|
3710
3713
|
error: null,
|
|
3711
3714
|
hasGeneratedQuery: !1
|
|
3712
3715
|
}));
|
|
3713
|
-
}, []), O =
|
|
3714
|
-
|
|
3716
|
+
}, []), O = H((e) => {
|
|
3717
|
+
S((t) => ({
|
|
3715
3718
|
...t,
|
|
3716
3719
|
userPrompt: e
|
|
3717
3720
|
}));
|
|
3718
|
-
}, []), k =
|
|
3719
|
-
if (
|
|
3720
|
-
|
|
3721
|
+
}, []), k = H(async () => {
|
|
3722
|
+
if (x.userPrompt.trim()) {
|
|
3723
|
+
S((e) => ({
|
|
3721
3724
|
...e,
|
|
3722
3725
|
isGenerating: !0,
|
|
3723
3726
|
error: null
|
|
3724
3727
|
}));
|
|
3725
3728
|
try {
|
|
3726
|
-
let e = cr(await sr("",
|
|
3729
|
+
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
3730
|
if (lr(i)) {
|
|
3728
|
-
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"),
|
|
3731
|
+
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
|
|
3729
3732
|
...e,
|
|
3730
3733
|
isGenerating: !1,
|
|
3731
3734
|
hasGeneratedQuery: !0
|
|
@@ -3733,19 +3736,19 @@ function ur(e) {
|
|
|
3733
3736
|
return;
|
|
3734
3737
|
}
|
|
3735
3738
|
let c = i;
|
|
3736
|
-
|
|
3739
|
+
C((e) => ({
|
|
3737
3740
|
...e,
|
|
3738
3741
|
metrics: (c.measures || []).map((e, t) => ({
|
|
3739
|
-
id:
|
|
3742
|
+
id: f(),
|
|
3740
3743
|
field: e,
|
|
3741
|
-
label:
|
|
3744
|
+
label: w(t)
|
|
3742
3745
|
})),
|
|
3743
3746
|
breakdowns: [...(c.dimensions || []).map((e) => ({
|
|
3744
|
-
id:
|
|
3747
|
+
id: f(),
|
|
3745
3748
|
field: e,
|
|
3746
3749
|
isTimeDimension: !1
|
|
3747
3750
|
})), ...(c.timeDimensions || []).map((e) => ({
|
|
3748
|
-
id:
|
|
3751
|
+
id: f(),
|
|
3749
3752
|
field: e.dimension,
|
|
3750
3753
|
granularity: e.granularity,
|
|
3751
3754
|
isTimeDimension: !0
|
|
@@ -3753,13 +3756,13 @@ function ur(e) {
|
|
|
3753
3756
|
filters: c.filters || [],
|
|
3754
3757
|
order: c.order || void 0,
|
|
3755
3758
|
limit: c.limit ?? void 0
|
|
3756
|
-
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"),
|
|
3759
|
+
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
|
|
3757
3760
|
...e,
|
|
3758
3761
|
isGenerating: !1,
|
|
3759
3762
|
hasGeneratedQuery: !0
|
|
3760
3763
|
}));
|
|
3761
3764
|
} catch (e) {
|
|
3762
|
-
|
|
3765
|
+
S((t) => ({
|
|
3763
3766
|
...t,
|
|
3764
3767
|
isGenerating: !1,
|
|
3765
3768
|
error: e instanceof Error ? e.message : "Failed to generate query"
|
|
@@ -3767,15 +3770,15 @@ function ur(e) {
|
|
|
3767
3770
|
}
|
|
3768
3771
|
}
|
|
3769
3772
|
}, [
|
|
3770
|
-
|
|
3773
|
+
x.userPrompt,
|
|
3771
3774
|
r,
|
|
3772
3775
|
l?.headers,
|
|
3773
|
-
|
|
3776
|
+
C,
|
|
3774
3777
|
T,
|
|
3775
3778
|
t.analysisType,
|
|
3776
3779
|
s
|
|
3777
|
-
]),
|
|
3778
|
-
|
|
3780
|
+
]), A = H(() => {
|
|
3781
|
+
S({
|
|
3779
3782
|
isOpen: !1,
|
|
3780
3783
|
userPrompt: "",
|
|
3781
3784
|
isGenerating: !1,
|
|
@@ -3784,13 +3787,13 @@ function ur(e) {
|
|
|
3784
3787
|
previousState: null,
|
|
3785
3788
|
previousConfig: null
|
|
3786
3789
|
});
|
|
3787
|
-
}, []),
|
|
3788
|
-
|
|
3790
|
+
}, []), j = H(() => {
|
|
3791
|
+
x.previousConfig ? o.getState().load(x.previousConfig) : x.previousState && (C((e) => ({
|
|
3789
3792
|
...e,
|
|
3790
|
-
metrics:
|
|
3791
|
-
breakdowns:
|
|
3792
|
-
filters:
|
|
3793
|
-
})), s.setChartType(
|
|
3793
|
+
metrics: x.previousState.metrics,
|
|
3794
|
+
breakdowns: x.previousState.breakdowns,
|
|
3795
|
+
filters: x.previousState.filters
|
|
3796
|
+
})), 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
3797
|
isOpen: !1,
|
|
3795
3798
|
userPrompt: "",
|
|
3796
3799
|
isGenerating: !1,
|
|
@@ -3800,23 +3803,23 @@ function ur(e) {
|
|
|
3800
3803
|
previousConfig: null
|
|
3801
3804
|
});
|
|
3802
3805
|
}, [
|
|
3803
|
-
|
|
3804
|
-
|
|
3806
|
+
x.previousState,
|
|
3807
|
+
x.previousConfig,
|
|
3805
3808
|
o,
|
|
3806
|
-
|
|
3809
|
+
C,
|
|
3807
3810
|
s
|
|
3808
|
-
]), [
|
|
3811
|
+
]), [ee, M] = K("idle"), N = t.effectiveIsValidQuery;
|
|
3809
3812
|
return {
|
|
3810
|
-
aiState:
|
|
3813
|
+
aiState: x,
|
|
3811
3814
|
openAI: E,
|
|
3812
3815
|
closeAI: D,
|
|
3813
3816
|
setAIPrompt: O,
|
|
3814
3817
|
generateAI: k,
|
|
3815
|
-
acceptAI:
|
|
3816
|
-
cancelAI:
|
|
3817
|
-
shareButtonState:
|
|
3818
|
-
share:
|
|
3819
|
-
if (!
|
|
3818
|
+
acceptAI: A,
|
|
3819
|
+
cancelAI: j,
|
|
3820
|
+
shareButtonState: ee,
|
|
3821
|
+
share: H(async () => {
|
|
3822
|
+
if (!N) return;
|
|
3820
3823
|
let { encoded: e, queryOnly: t } = nr(o.getState().save());
|
|
3821
3824
|
if (!e) return;
|
|
3822
3825
|
let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
|
|
@@ -3826,11 +3829,11 @@ function ur(e) {
|
|
|
3826
3829
|
let e = document.createElement("textarea");
|
|
3827
3830
|
e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
|
|
3828
3831
|
}
|
|
3829
|
-
|
|
3830
|
-
|
|
3832
|
+
M(t ? "copied-no-chart" : "copied"), setTimeout(() => {
|
|
3833
|
+
M("idle");
|
|
3831
3834
|
}, 2e3);
|
|
3832
|
-
}, [
|
|
3833
|
-
canShare:
|
|
3835
|
+
}, [N, o]),
|
|
3836
|
+
canShare: N
|
|
3834
3837
|
};
|
|
3835
3838
|
}
|
|
3836
3839
|
//#endregion
|
|
@@ -3850,7 +3853,8 @@ function dr(e = {}) {
|
|
|
3850
3853
|
serverFunnelQuery: o.serverFunnelQuery,
|
|
3851
3854
|
serverFlowQuery: o.serverFlowQuery,
|
|
3852
3855
|
serverRetentionQuery: o.serverRetentionQuery,
|
|
3853
|
-
retentionValidation: o.retentionValidation
|
|
3856
|
+
retentionValidation: o.retentionValidation,
|
|
3857
|
+
fillMissingDates: o.displayConfig.fillMissingDates
|
|
3854
3858
|
}), l = ur({
|
|
3855
3859
|
state: o,
|
|
3856
3860
|
query: c,
|
|
@@ -4064,7 +4068,7 @@ function pr(e) {
|
|
|
4064
4068
|
}
|
|
4065
4069
|
function mr(e, t) {
|
|
4066
4070
|
if (typeof e.dimension == "string") return !0;
|
|
4067
|
-
let n =
|
|
4071
|
+
let n = _e(t);
|
|
4068
4072
|
return n ? e.dimension.some((e) => e.cube === n) : !1;
|
|
4069
4073
|
}
|
|
4070
4074
|
function hr(e, t) {
|
|
@@ -4072,7 +4076,7 @@ function hr(e, t) {
|
|
|
4072
4076
|
for (let r = 0; r < t.length; r++) {
|
|
4073
4077
|
let i = t[r];
|
|
4074
4078
|
if (!mr(e, i.query)) {
|
|
4075
|
-
let e =
|
|
4079
|
+
let e = _e(i.query) || "unknown";
|
|
4076
4080
|
n.push({
|
|
4077
4081
|
type: "cross_cube",
|
|
4078
4082
|
message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
|
|
@@ -4142,4 +4146,4 @@ function br(e) {
|
|
|
4142
4146
|
//#endregion
|
|
4143
4147
|
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
4148
|
|
|
4145
|
-
//# sourceMappingURL=analysis-builder-shared-
|
|
4149
|
+
//# sourceMappingURL=analysis-builder-shared-DPLR8upd.js.map
|