drizzle-cube 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/adapters/ActivityGridChart.config-BGndyZtr.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-ZdvHJAHq.js +2 -0
- package/dist/adapters/AreaChart.config-Cybigwcb.js +2 -0
- package/dist/adapters/AreaChart.config-DWGesxUg.cjs +1 -0
- package/dist/adapters/BarChart.config-Cc04tVQF.js +2 -0
- package/dist/adapters/BarChart.config-DBCu0t_-.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-C0WK_ipa.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-DapOUN_R.js +2 -0
- package/dist/adapters/BubbleChart.config-DPmf7sI5.cjs +1 -0
- package/dist/adapters/BubbleChart.config-DROSTwxW.js +2 -0
- package/dist/adapters/CandlestickChart.config-BHoEJ2nY.js +2 -0
- package/dist/adapters/CandlestickChart.config-Cm0PKObO.cjs +1 -0
- package/dist/adapters/DataTable.config-DLvfXXSH.cjs +1 -0
- package/dist/adapters/DataTable.config-DbVrWZIw.js +2 -0
- package/dist/adapters/DotStripChart.config-CKPw82HE.js +2 -0
- package/dist/adapters/DotStripChart.config-DPIrTLb6.cjs +1 -0
- package/dist/adapters/FunnelChart.config-DpiDbOTn.cjs +1 -0
- package/dist/adapters/FunnelChart.config-DtBHVpLB.js +2 -0
- package/dist/adapters/GaugeChart.config-CmuXGRNV.js +2 -0
- package/dist/adapters/GaugeChart.config-DLj1YNsp.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-BvFK2bny.cjs +1 -0
- package/dist/adapters/HeatMapChart.config-DK18zZV8.js +2 -0
- package/dist/adapters/KpiDelta.config-BsaVN5-T.js +2 -0
- package/dist/adapters/KpiDelta.config-DHsMgIdk.cjs +1 -0
- package/dist/adapters/KpiNumber.config-D82-j-8T.js +2 -0
- package/dist/adapters/KpiNumber.config-pFRomJRE.cjs +1 -0
- package/dist/adapters/KpiText.config-CCqeKuFB.js +2 -0
- package/dist/adapters/KpiText.config-CSeCoBuO.cjs +1 -0
- package/dist/adapters/LineChart.config-C2acjFv4.js +2 -0
- package/dist/adapters/LineChart.config-Dr9wmiK0.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-C-tYLLan.js +2 -0
- package/dist/adapters/MarkdownChart.config-Dvyfo0CB.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-C5CjPw48.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-Dj-7HqkS.cjs +1 -0
- package/dist/adapters/PieChart.config-CY7nFFQn.cjs +1 -0
- package/dist/adapters/PieChart.config-DQLQMHc_.js +2 -0
- package/dist/adapters/ProportionBarChart.config-BVqtS7wi.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-BaSgs976.js +2 -0
- package/dist/adapters/RadarChart.config-DxJ5k8L9.cjs +1 -0
- package/dist/adapters/RadarChart.config-DzL7zQUc.js +2 -0
- package/dist/adapters/RadialBarChart.config-Dzl1HiGz.js +2 -0
- package/dist/adapters/RadialBarChart.config-XlGTd9gV.cjs +1 -0
- package/dist/adapters/RecordsTable.config-CS5oIMvv.js +2 -0
- package/dist/adapters/RecordsTable.config-DRQdHghk.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-C0iiKOdf.js +2 -0
- package/dist/adapters/RetentionCombinedChart.config-Dl20GZnb.cjs +1 -0
- package/dist/adapters/RetentionHeatmap.config-Bt42ip_c.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-DyggEvyy.cjs +1 -0
- package/dist/adapters/SankeyChart.config-DYz1nUx9.js +2 -0
- package/dist/adapters/SankeyChart.config-dlNLJMf9.cjs +1 -0
- package/dist/adapters/ScatterChart.config-D72zRviD.js +2 -0
- package/dist/adapters/ScatterChart.config-DRtyuQvV.cjs +1 -0
- package/dist/adapters/SunburstChart.config-C5nHXLcu.cjs +1 -0
- package/dist/adapters/SunburstChart.config-j5ioABeT.js +2 -0
- package/dist/adapters/TreeMapChart.config-CXKcX5CH.js +2 -0
- package/dist/adapters/TreeMapChart.config-DuYbme03.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BCn4tsBV.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-BPqhdzTP.js +2 -0
- package/dist/adapters/{compiler-CpvetSCm.js → compiler-BKg3j2mm.js} +1260 -2446
- package/dist/adapters/compiler-BX6Ug_Uq.cjs +166 -0
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.js +1 -1
- package/dist/adapters/{core-BH_56XtM.js → core-Bmb7XMBz.js} +2 -2
- package/dist/adapters/{core-CydD6oFu.cjs → core-JgUTMhxl.cjs} +1 -1
- 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 +23 -23
- package/dist/adapters/{handler-CtcALGcY.js → handler-CknKLUQW.js} +213 -209
- package/dist/adapters/{handler-Dp8fpSpk.cjs → handler-DLWgxPOk.cjs} +8 -8
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +4 -4
- package/dist/adapters/mcp-app-html-Bu4j3yZM.cjs +1 -0
- package/dist/adapters/{mcp-app-html-C8vG9epH.js → mcp-app-html-D3GsxPcx.js} +1 -1
- 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-DDxjqyuK.js → mcp-transport-BTmAXLo8.js} +8 -3
- package/dist/adapters/{mcp-transport-QGYYYSgR.cjs → mcp-transport-DzxluRyH.cjs} +2 -2
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +5 -5
- package/dist/adapters/openai-CDH_AU_Z.cjs +19 -0
- package/dist/adapters/{openai-pCkHdDh4.js → openai-CYTlIdxS.js} +1 -1
- package/dist/adapters/{openai-Cm4JcLuF.cjs → openai-KbobaAQj.cjs} +1 -1
- package/dist/adapters/{openai-DH5InEPj.js → openai-enh3Hkzr.js} +510 -439
- package/dist/adapters/utils-Du_UZbn5.cjs +139 -0
- package/dist/adapters/{utils-C_Mc0qsk.js → utils-i2h5cwI3.js} +2587 -1254
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/client/components/shared/dateRangeUtils.d.ts +7 -3
- package/dist/cjs/server/adapters/base-adapter.d.ts +3 -3
- package/dist/cjs/server/ai/query-schema.d.ts +3 -3
- package/dist/cjs/server/builders/date-time-builder.d.ts +1 -2
- package/dist/cjs/server/builders/date-time-helpers.d.ts +19 -6
- package/dist/cjs/server/builders/filter-operators.d.ts +10 -1
- package/dist/cjs/server/execution/query-normalizer.d.ts +9 -0
- package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
- package/dist/cjs/server/physical-plan/semi-join.d.ts +21 -0
- package/dist/cjs/server/prompts/single-step-prompt.d.ts +1 -1
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-USQFytJw.js → DashboardEditModal-CiN77tQN.js} +662 -540
- package/dist/client/chunks/DashboardEditModal-CiN77tQN.js.map +1 -0
- package/dist/client/chunks/{DotStripChart-CjSsunHE.js → DotStripChart-in6QHc0b.js} +3 -3
- package/dist/client/chunks/{DotStripChart-CjSsunHE.js.map → DotStripChart-in6QHc0b.js.map} +1 -1
- package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js → ProportionBarChart-CjuOm7NT.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js.map → ProportionBarChart-CjuOm7NT.js.map} +1 -1
- package/dist/client/chunks/{RecordsTable-BSmkwdgd.js → RecordsTable-CXXsiaV1.js} +4 -4
- package/dist/client/chunks/{RecordsTable-BSmkwdgd.js.map → RecordsTable-CXXsiaV1.js.map} +1 -1
- package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js → RetentionCombinedChart-DFCeEFkx.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js.map → RetentionCombinedChart-DFCeEFkx.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js → RetentionHeatmap-jpshJ2Af.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js.map → RetentionHeatmap-jpshJ2Af.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-D_tw9BvU.js → analysis-builder-DIOnKxJu.js} +41 -41
- package/dist/client/chunks/{analysis-builder-D_tw9BvU.js.map → analysis-builder-DIOnKxJu.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-BSINKFr2.js → analysis-builder-shared-CoX_nmo0.js} +640 -778
- package/dist/client/chunks/analysis-builder-shared-CoX_nmo0.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-CSIsJ12e.js → chart-activity-grid-DGazwi4C.js} +9 -2
- package/dist/client/chunks/chart-activity-grid-DGazwi4C.js.map +1 -0
- package/dist/client/chunks/{chart-area-BpvSKH5I.js → chart-area-zyLGD-ym.js} +2 -2
- package/dist/client/chunks/{chart-area-BpvSKH5I.js.map → chart-area-zyLGD-ym.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-Cjzv-LvG.js → chart-bar-DMCBq8qJ.js} +3 -3
- package/dist/client/chunks/{chart-bar-Cjzv-LvG.js.map → chart-bar-DMCBq8qJ.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js → chart-box-plot-5Z55A-it.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js.map → chart-box-plot-5Z55A-it.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-BtWm6x7L.js → chart-bubble-YD28dX8w.js} +2 -2
- package/dist/client/chunks/{chart-bubble-BtWm6x7L.js.map → chart-bubble-YD28dX8w.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js → chart-candlestick-BUMpBI08.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js.map → chart-candlestick-BUMpBI08.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-BH1A-1RN.js → chart-data-table-BdMo3zVh.js} +2 -2
- package/dist/client/chunks/chart-data-table-BdMo3zVh.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-C_-K4RLj.js → chart-funnel-BRyZS6ie.js} +2 -2
- package/dist/client/chunks/{chart-funnel-C_-K4RLj.js.map → chart-funnel-BRyZS6ie.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-F-vdq2BX.js → chart-gauge-DxgHlZKp.js} +3 -3
- package/dist/client/chunks/{chart-gauge-F-vdq2BX.js.map → chart-gauge-DxgHlZKp.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-D_8TluGo.js → chart-heat-map-5jHm3f-V.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-D_8TluGo.js.map → chart-heat-map-5jHm3f-V.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js → chart-kpi-delta-C84P-mwu.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js.map → chart-kpi-delta-C84P-mwu.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js → chart-kpi-number-D9GqtBWw.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js.map → chart-kpi-number-D9GqtBWw.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js → chart-kpi-text-D3HqxXzU.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js.map → chart-kpi-text-D3HqxXzU.js.map} +1 -1
- package/dist/client/chunks/{chart-line-DlhmQQ-X.js → chart-line-IEgiF8Nv.js} +3 -3
- package/dist/client/chunks/{chart-line-DlhmQQ-X.js.map → chart-line-IEgiF8Nv.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-C5ldCjSN.js → chart-markdown-B_2Ed7FJ.js} +2 -2
- package/dist/client/chunks/{chart-markdown-C5ldCjSN.js.map → chart-markdown-B_2Ed7FJ.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js → chart-measure-profile-CWsPrQhH.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js.map → chart-measure-profile-CWsPrQhH.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-CmKhmUR-.js → chart-pie-BEB2sCXF.js} +3 -3
- package/dist/client/chunks/{chart-pie-CmKhmUR-.js.map → chart-pie-BEB2sCXF.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-B2bYTyb0.js → chart-radar-BbSbXKbP.js} +3 -3
- package/dist/client/chunks/{chart-radar-B2bYTyb0.js.map → chart-radar-BbSbXKbP.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js → chart-radial-bar-CNYD7tkM.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js.map → chart-radial-bar-CNYD7tkM.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-DHIrjmhj.js → chart-sankey-DKnTIvSr.js} +2 -2
- package/dist/client/chunks/{chart-sankey-DHIrjmhj.js.map → chart-sankey-DKnTIvSr.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-JnoA3CD5.js → chart-scatter-CSWF6-lx.js} +3 -3
- package/dist/client/chunks/{chart-scatter-JnoA3CD5.js.map → chart-scatter-CSWF6-lx.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js → chart-sunburst-CdGzCq7q.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js.map → chart-sunburst-CdGzCq7q.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-HQitd39D.js → chart-tree-map-BiXB7EiM.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-HQitd39D.js.map → chart-tree-map-BiXB7EiM.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js → chart-waterfall-5rSDeLEZ.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js.map → chart-waterfall-5rSDeLEZ.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CQFOTTPb.js → charts-core-CKpkoMCa.js} +2 -2
- package/dist/client/chunks/{charts-core-CQFOTTPb.js.map → charts-core-CKpkoMCa.js.map} +1 -1
- package/dist/client/chunks/charts-loader-BTI0UPK4.js +87 -0
- package/dist/client/chunks/{charts-loader-BlxEsp39.js.map → charts-loader-BTI0UPK4.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-gaWTnOGQ.js → nl-NL-kRjxedTf.js} +8 -1
- package/dist/client/chunks/{nl-NL-gaWTnOGQ.js.map → nl-NL-kRjxedTf.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-BspQ-XB8.js → schema-visualization-BbvL74Sf.js} +3 -3
- package/dist/client/chunks/{schema-visualization-BspQ-XB8.js.map → schema-visualization-BbvL74Sf.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js → useDirtyStateTracking-BfG1lX_3.js} +4 -4
- package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js.map → useDirtyStateTracking-BfG1lX_3.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js → useExplainAI-CDFhgmpE.js} +4 -4
- package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js.map → useExplainAI-CDFhgmpE.js.map} +1 -1
- package/dist/client/chunks/{vendor-C4pD7rZf.js → vendor-DeckzF1j.js} +2 -2
- package/dist/client/chunks/{vendor-C4pD7rZf.js.map → vendor-DeckzF1j.js.map} +1 -1
- package/dist/client/components/shared/dateRangeUtils.d.ts +7 -3
- package/dist/client/components.js +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +18 -18
- 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/utils.js +4 -4
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +2 -2
- package/dist/server/adapters/base-adapter.d.ts +3 -3
- package/dist/server/ai/query-schema.d.ts +3 -3
- package/dist/server/builders/date-time-builder.d.ts +1 -2
- package/dist/server/builders/date-time-helpers.d.ts +19 -6
- package/dist/server/builders/filter-operators.d.ts +10 -1
- package/dist/server/execution/query-normalizer.d.ts +9 -0
- package/dist/server/index.cjs +54 -47
- package/dist/server/index.js +2562 -2409
- package/dist/server/{openai-D346-vmt.cjs → openai-BIHkBS7X.cjs} +1 -1
- package/dist/server/{openai-SILGL2q_.js → openai-CPW5x6kl.js} +1 -1
- package/dist/server/{openai-D0vh48Oi.js → openai-DCC49vC6.js} +507 -436
- package/dist/server/openai-xQRpdAPa.cjs +19 -0
- package/dist/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
- package/dist/server/physical-plan/semi-join.d.ts +21 -0
- package/dist/server/prompts/single-step-prompt.d.ts +1 -1
- package/package.json +3 -3
- package/dist/adapters/ActivityGridChart.config-BgAUfqKS.js +0 -2
- package/dist/adapters/ActivityGridChart.config-CGsjbfYL.cjs +0 -1
- package/dist/adapters/AreaChart.config-Bmj24k3G.cjs +0 -1
- package/dist/adapters/AreaChart.config-DqJvquc-.js +0 -2
- package/dist/adapters/BarChart.config-CzGxsUq-.js +0 -2
- package/dist/adapters/BarChart.config-D1uQGV6T.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-I0S4-aNF.js +0 -2
- package/dist/adapters/BoxPlotChart.config-wfS4FxGI.cjs +0 -1
- package/dist/adapters/BubbleChart.config-BDSknEkc.js +0 -2
- package/dist/adapters/BubbleChart.config-CByvW3Rq.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-08gqS1xj.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-Bkr9bdwM.js +0 -2
- package/dist/adapters/DataTable.config-BFP6xnMc.cjs +0 -1
- package/dist/adapters/DataTable.config-DHYD7PA8.js +0 -2
- package/dist/adapters/DotStripChart.config-DRQybZZu.cjs +0 -1
- package/dist/adapters/DotStripChart.config-Sp0fOxfM.js +0 -2
- package/dist/adapters/FunnelChart.config-ByARozX6.cjs +0 -1
- package/dist/adapters/FunnelChart.config-DhCqap3P.js +0 -2
- package/dist/adapters/GaugeChart.config-CfRicB1o.cjs +0 -1
- package/dist/adapters/GaugeChart.config-PTQ85WM5.js +0 -2
- package/dist/adapters/HeatMapChart.config-0tmGHwm2.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-Devz5A5U.js +0 -2
- package/dist/adapters/KpiDelta.config-CGTdddOM.js +0 -2
- package/dist/adapters/KpiDelta.config-CjWmwXjk.cjs +0 -1
- package/dist/adapters/KpiNumber.config-Cd4jw22d.cjs +0 -1
- package/dist/adapters/KpiNumber.config-D3Et71Zn.js +0 -2
- package/dist/adapters/KpiText.config-B9VATPy2.js +0 -2
- package/dist/adapters/KpiText.config-B_dkrdHj.cjs +0 -1
- package/dist/adapters/LineChart.config-C3p-mc15.cjs +0 -1
- package/dist/adapters/LineChart.config-DXWLMWjn.js +0 -2
- package/dist/adapters/MarkdownChart.config-BQGmd6Iz.js +0 -2
- package/dist/adapters/MarkdownChart.config-CQFu4297.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-CXLeprVS.js +0 -2
- package/dist/adapters/MeasureProfileChart.config-KpfD016N.cjs +0 -1
- package/dist/adapters/PieChart.config-j-syrhBx.js +0 -2
- package/dist/adapters/PieChart.config-zzBPh0tx.cjs +0 -1
- package/dist/adapters/ProportionBarChart.config-BD9bf-LZ.js +0 -2
- package/dist/adapters/ProportionBarChart.config-CBLcLV4Z.cjs +0 -1
- package/dist/adapters/RadarChart.config-CW9f_VxU.cjs +0 -1
- package/dist/adapters/RadarChart.config-yKvcZ49V.js +0 -2
- package/dist/adapters/RadialBarChart.config-DwQYejI6.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-xK4AyoOF.js +0 -2
- package/dist/adapters/RecordsTable.config-CquV7Wi0.js +0 -2
- package/dist/adapters/RecordsTable.config-DzrQXBvh.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-BYAFkFb-.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-Ddmb-WwM.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-CSHXD736.cjs +0 -1
- package/dist/adapters/RetentionHeatmap.config-DODcy3gK.js +0 -2
- package/dist/adapters/SankeyChart.config-B56o6GFu.js +0 -2
- package/dist/adapters/SankeyChart.config-DLnhr2k_.cjs +0 -1
- package/dist/adapters/ScatterChart.config-CrIFaC-s.js +0 -2
- package/dist/adapters/ScatterChart.config-Dfj1_af-.cjs +0 -1
- package/dist/adapters/SunburstChart.config-CuLsLj6v.cjs +0 -1
- package/dist/adapters/SunburstChart.config-CvuVUfkp.js +0 -2
- package/dist/adapters/TreeMapChart.config-CvbDr1Ic.js +0 -2
- package/dist/adapters/TreeMapChart.config-Dqjhe8Xk.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-DXFeGg7P.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-MLHPNE5q.js +0 -2
- package/dist/adapters/compiler-C5OSdfwn.cjs +0 -166
- package/dist/adapters/mcp-app-html-DRWnkcx4.cjs +0 -1
- package/dist/adapters/openai-CwKv0DD-.cjs +0 -19
- package/dist/adapters/utils-BFGzuSlF.cjs +0 -132
- package/dist/client/chunks/DashboardEditModal-USQFytJw.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-BSINKFr2.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-CSIsJ12e.js.map +0 -1
- package/dist/client/chunks/chart-data-table-BH1A-1RN.js.map +0 -1
- package/dist/client/chunks/charts-loader-BlxEsp39.js +0 -87
- package/dist/server/openai-C6tdx3yN.cjs +0 -19
|
@@ -1,171 +1,33 @@
|
|
|
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 { r as
|
|
10
|
-
import { n as
|
|
11
|
-
import B, { createContext as
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-DeckzF1j.js";
|
|
2
|
+
import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-BdMo3zVh.js";
|
|
3
|
+
import { A as f, C as p, D as m, E as h, F as g, T as _, _ as v, at as y, b, d as x, f as S, ot as C, st as w, u as T, v as E, w as D, x as O, y as k } from "./DashboardEditModal-CiN77tQN.js";
|
|
4
|
+
import { a as ee, s as A, t as te } from "./retention-ChW9jYdy.js";
|
|
5
|
+
import { O as j, k as M } from "./dashboardExport-Db3rmUP1.js";
|
|
6
|
+
import { A as N, D as ne, F as re, I as ie, M as ae, N as P, O as oe, P as se, S as F, T as I, a as L, d as ce, j as le, k as R, l as ue, n as de, r as fe, s as pe } from "./useDirtyStateTracking-BfG1lX_3.js";
|
|
7
|
+
import { B as me, F as z } from "./chart-activity-grid-DGazwi4C.js";
|
|
8
|
+
import { a as he, i as ge } from "./useExplainAI-CDFhgmpE.js";
|
|
9
|
+
import { r as _e, s as ve } from "./chart-funnel-BRyZS6ie.js";
|
|
10
|
+
import { n as ye } from "./charts-core-CKpkoMCa.js";
|
|
11
|
+
import B, { createContext as be, memo as xe, useCallback as V, useContext as Se, useEffect as H, useMemo as U, useRef as W, useState as G } from "react";
|
|
12
12
|
import { Fragment as K, jsx as q, jsxs as J } from "react/jsx-runtime";
|
|
13
|
-
//#region src/shared/date-utils.ts
|
|
14
|
-
function be(e) {
|
|
15
|
-
let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
|
|
16
|
-
if (n === "today") {
|
|
17
|
-
let e = new Date(t);
|
|
18
|
-
e.setUTCHours(0, 0, 0, 0);
|
|
19
|
-
let n = new Date(t);
|
|
20
|
-
return n.setUTCHours(23, 59, 59, 999), {
|
|
21
|
-
start: e,
|
|
22
|
-
end: n
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
if (n === "yesterday") {
|
|
26
|
-
let e = new Date(t);
|
|
27
|
-
e.setUTCDate(a - 1), e.setUTCHours(0, 0, 0, 0);
|
|
28
|
-
let n = new Date(t);
|
|
29
|
-
return n.setUTCDate(a - 1), n.setUTCHours(23, 59, 59, 999), {
|
|
30
|
-
start: e,
|
|
31
|
-
end: n
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
if (n === "this week") {
|
|
35
|
-
let e = o === 0 ? -6 : 1 - o, n = new Date(t);
|
|
36
|
-
n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
|
|
37
|
-
let r = new Date(n);
|
|
38
|
-
return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
|
|
39
|
-
start: n,
|
|
40
|
-
end: r
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (n === "this month") return {
|
|
44
|
-
start: new Date(Date.UTC(r, i, 1, 0, 0, 0, 0)),
|
|
45
|
-
end: new Date(Date.UTC(r, i + 1, 0, 23, 59, 59, 999))
|
|
46
|
-
};
|
|
47
|
-
if (n === "this quarter") {
|
|
48
|
-
let e = Math.floor(i / 3);
|
|
49
|
-
return {
|
|
50
|
-
start: new Date(Date.UTC(r, e * 3, 1, 0, 0, 0, 0)),
|
|
51
|
-
end: new Date(Date.UTC(r, e * 3 + 3, 0, 23, 59, 59, 999))
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
if (n === "this year") return {
|
|
55
|
-
start: new Date(Date.UTC(r, 0, 1, 0, 0, 0, 0)),
|
|
56
|
-
end: new Date(Date.UTC(r, 11, 31, 23, 59, 59, 999))
|
|
57
|
-
};
|
|
58
|
-
let s = n.match(/^last\s+(\d+)\s+days?$/);
|
|
59
|
-
if (s) {
|
|
60
|
-
let e = parseInt(s[1], 10), n = new Date(t);
|
|
61
|
-
n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
|
|
62
|
-
let r = new Date(t);
|
|
63
|
-
return r.setUTCHours(23, 59, 59, 999), {
|
|
64
|
-
start: n,
|
|
65
|
-
end: r
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
let c = n.match(/^last\s+(\d+)\s+weeks?$/);
|
|
69
|
-
if (c) {
|
|
70
|
-
let e = parseInt(c[1], 10) * 7, n = new Date(t);
|
|
71
|
-
n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
|
|
72
|
-
let r = new Date(t);
|
|
73
|
-
return r.setUTCHours(23, 59, 59, 999), {
|
|
74
|
-
start: n,
|
|
75
|
-
end: r
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
if (n === "last week") {
|
|
79
|
-
let e = o === 0 ? -13 : -6 - o, n = new Date(t);
|
|
80
|
-
n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
|
|
81
|
-
let r = new Date(n);
|
|
82
|
-
return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
|
|
83
|
-
start: n,
|
|
84
|
-
end: r
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
if (n === "last month") return {
|
|
88
|
-
start: new Date(Date.UTC(r, i - 1, 1, 0, 0, 0, 0)),
|
|
89
|
-
end: new Date(Date.UTC(r, i, 0, 23, 59, 59, 999))
|
|
90
|
-
};
|
|
91
|
-
if (n === "last quarter") {
|
|
92
|
-
let e = Math.floor(i / 3), t = e === 0 ? 3 : e - 1, n = e === 0 ? r - 1 : r;
|
|
93
|
-
return {
|
|
94
|
-
start: new Date(Date.UTC(n, t * 3, 1, 0, 0, 0, 0)),
|
|
95
|
-
end: new Date(Date.UTC(n, t * 3 + 3, 0, 23, 59, 59, 999))
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
if (n === "last year") return {
|
|
99
|
-
start: new Date(Date.UTC(r - 1, 0, 1, 0, 0, 0, 0)),
|
|
100
|
-
end: new Date(Date.UTC(r - 1, 11, 31, 23, 59, 59, 999))
|
|
101
|
-
};
|
|
102
|
-
if (n === "last 12 months") {
|
|
103
|
-
let e = new Date(Date.UTC(r, i - 11, 1, 0, 0, 0, 0)), n = new Date(t);
|
|
104
|
-
return n.setUTCHours(23, 59, 59, 999), {
|
|
105
|
-
start: e,
|
|
106
|
-
end: n
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
let l = n.match(/^last\s+(\d+)\s+months?$/);
|
|
110
|
-
if (l) {
|
|
111
|
-
let e = new Date(Date.UTC(r, i - parseInt(l[1], 10) + 1, 1, 0, 0, 0, 0)), n = new Date(t);
|
|
112
|
-
return n.setUTCHours(23, 59, 59, 999), {
|
|
113
|
-
start: e,
|
|
114
|
-
end: n
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
let u = n.match(/^last\s+(\d+)\s+years?$/);
|
|
118
|
-
if (u) {
|
|
119
|
-
let e = new Date(Date.UTC(r - parseInt(u[1], 10), 0, 1, 0, 0, 0, 0)), n = new Date(t);
|
|
120
|
-
return n.setUTCHours(23, 59, 59, 999), {
|
|
121
|
-
start: e,
|
|
122
|
-
end: n
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
function xe(e) {
|
|
128
|
-
if (Array.isArray(e)) {
|
|
129
|
-
if (e.length < 2) return null;
|
|
130
|
-
let t = new Date(e[0]), n = new Date(e[1]);
|
|
131
|
-
return isNaN(t.getTime()) || isNaN(n.getTime()) ? null : (n.setUTCHours(23, 59, 59, 999), {
|
|
132
|
-
start: t,
|
|
133
|
-
end: n
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
return be(e);
|
|
137
|
-
}
|
|
138
|
-
function Se(e) {
|
|
139
|
-
return e.toISOString().split("T")[0];
|
|
140
|
-
}
|
|
141
|
-
function Ce(e, t) {
|
|
142
|
-
let n = t.getTime() - e.getTime(), r = Math.ceil(n / 864e5), i = new Date(e);
|
|
143
|
-
i.setUTCDate(i.getUTCDate() - 1), i.setUTCHours(23, 59, 59, 999);
|
|
144
|
-
let a = new Date(i);
|
|
145
|
-
return a.setUTCDate(a.getUTCDate() - r + 1), a.setUTCHours(0, 0, 0, 0), {
|
|
146
|
-
start: a,
|
|
147
|
-
end: i
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
//#endregion
|
|
151
13
|
//#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
|
|
152
|
-
function
|
|
153
|
-
let n =
|
|
14
|
+
function Ce(e, t) {
|
|
15
|
+
let n = le(t, e);
|
|
154
16
|
if (!n?.dateRange) return;
|
|
155
|
-
let r =
|
|
17
|
+
let r = _(n.dateRange);
|
|
156
18
|
if (!r) return;
|
|
157
|
-
let i =
|
|
158
|
-
return [[
|
|
19
|
+
let i = p(r.start, r.end);
|
|
20
|
+
return [[D(r.start), D(r.end)], [D(i.start), D(i.end)]];
|
|
159
21
|
}
|
|
160
|
-
function
|
|
161
|
-
return
|
|
22
|
+
function we(e, t) {
|
|
23
|
+
return re(e, t, "inDateRange");
|
|
162
24
|
}
|
|
163
25
|
//#endregion
|
|
164
26
|
//#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
|
|
165
|
-
function
|
|
27
|
+
function Te(e, t, n, r, i = !1, a, o = !1) {
|
|
166
28
|
let s = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), c = n;
|
|
167
|
-
if (!i) for (let e of s) c =
|
|
168
|
-
c = c.filter((e) =>
|
|
29
|
+
if (!i) for (let e of s) c = we(c, e);
|
|
30
|
+
c = c.filter((e) => y(e));
|
|
169
31
|
let l = {
|
|
170
32
|
measures: e.map((e) => e.field),
|
|
171
33
|
dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
|
|
@@ -175,7 +37,7 @@ function Ee(e, t, n, r, i = !1, a, o = !1) {
|
|
|
175
37
|
granularity: e.granularity || "day"
|
|
176
38
|
};
|
|
177
39
|
if (e.enableComparison) {
|
|
178
|
-
let r =
|
|
40
|
+
let r = Ce(e.field, n);
|
|
179
41
|
r && (t.compareDateRange = r);
|
|
180
42
|
}
|
|
181
43
|
return t;
|
|
@@ -200,7 +62,7 @@ function Y() {
|
|
|
200
62
|
}
|
|
201
63
|
//#endregion
|
|
202
64
|
//#region src/client/components/AnalysisBuilder/filterConfigModalUtils.ts
|
|
203
|
-
function
|
|
65
|
+
function Ee(e, t, n, r) {
|
|
204
66
|
if (!t || n === 0) return { type: "none" };
|
|
205
67
|
switch (e) {
|
|
206
68
|
case "ArrowDown": return {
|
|
@@ -221,8 +83,8 @@ function De(e, t, n, r) {
|
|
|
221
83
|
}
|
|
222
84
|
//#endregion
|
|
223
85
|
//#region src/client/components/AnalysisBuilder/FilterValueInput.tsx
|
|
224
|
-
var
|
|
225
|
-
function
|
|
86
|
+
var De = d("close"), Oe = d("chevronDown");
|
|
87
|
+
function ke({ filter: e, dateRange: t }) {
|
|
226
88
|
let { t: n } = z(), { rangeType: r, numberValue: i, label: a, isOpen: o, onToggle: s, onRangeTypeChange: c, onNumberValueChange: l, onCustomStartDate: u, onCustomEndDate: d, onOpen: f } = t;
|
|
227
89
|
return /* @__PURE__ */ J("div", {
|
|
228
90
|
className: "dc:space-y-2",
|
|
@@ -237,17 +99,17 @@ function Ae({ filter: e, dateRange: t }) {
|
|
|
237
99
|
children: [/* @__PURE__ */ q("span", {
|
|
238
100
|
className: "dc:truncate",
|
|
239
101
|
children: a
|
|
240
|
-
}), /* @__PURE__ */ q(
|
|
102
|
+
}), /* @__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" : ""}` })]
|
|
241
103
|
}), o && /* @__PURE__ */ q("div", {
|
|
242
104
|
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",
|
|
243
|
-
children:
|
|
105
|
+
children: E.map((e) => /* @__PURE__ */ q("button", {
|
|
244
106
|
onClick: () => c(e.value),
|
|
245
107
|
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"}`,
|
|
246
108
|
children: n(e.label)
|
|
247
109
|
}, e.value))
|
|
248
110
|
})]
|
|
249
111
|
}),
|
|
250
|
-
|
|
112
|
+
ne(r) && /* @__PURE__ */ J("div", {
|
|
251
113
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
252
114
|
children: [/* @__PURE__ */ q("input", {
|
|
253
115
|
type: "number",
|
|
@@ -285,7 +147,7 @@ function Ae({ filter: e, dateRange: t }) {
|
|
|
285
147
|
]
|
|
286
148
|
});
|
|
287
149
|
}
|
|
288
|
-
function
|
|
150
|
+
function Ae({ filter: e, combo: t }) {
|
|
289
151
|
let { t: n } = z(), { options: r, loading: i, error: a, highlightedIndex: o, listRef: s, onSelect: c } = t;
|
|
290
152
|
return i ? /* @__PURE__ */ q("div", {
|
|
291
153
|
className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
|
|
@@ -312,7 +174,7 @@ function je({ filter: e, combo: t }) {
|
|
|
312
174
|
})
|
|
313
175
|
});
|
|
314
176
|
}
|
|
315
|
-
function
|
|
177
|
+
function je({ filter: e, operatorMeta: t, combo: n }) {
|
|
316
178
|
let { t: r } = z(), { isOpen: i, loading: a, searchText: o, onSearchTextChange: s, onHighlightedIndexChange: c, onRemove: l, onKeyDown: u, onOpen: d } = n;
|
|
317
179
|
return /* @__PURE__ */ J("div", {
|
|
318
180
|
className: "dc:space-y-2",
|
|
@@ -327,7 +189,7 @@ function Me({ filter: e, operatorMeta: t, combo: n }) {
|
|
|
327
189
|
}), /* @__PURE__ */ q("button", {
|
|
328
190
|
onClick: () => l(e),
|
|
329
191
|
className: "hover:text-dc-danger",
|
|
330
|
-
children: /* @__PURE__ */ q(
|
|
192
|
+
children: /* @__PURE__ */ q(De, { className: "dc:w-3.5 dc:h-3.5" })
|
|
331
193
|
})]
|
|
332
194
|
}, t))
|
|
333
195
|
}),
|
|
@@ -341,7 +203,7 @@ function Me({ filter: e, operatorMeta: t, combo: n }) {
|
|
|
341
203
|
children: [/* @__PURE__ */ q("span", {
|
|
342
204
|
className: "text-dc-text-muted dc:truncate",
|
|
343
205
|
children: r(a ? "filter.modal.loading" : "filter.modal.selectValue")
|
|
344
|
-
}), /* @__PURE__ */ q(
|
|
206
|
+
}), /* @__PURE__ */ q(Oe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
|
|
345
207
|
}), i && /* @__PURE__ */ J("div", {
|
|
346
208
|
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-56 dc:overflow-hidden",
|
|
347
209
|
children: [/* @__PURE__ */ q("div", {
|
|
@@ -357,7 +219,7 @@ function Me({ filter: e, operatorMeta: t, combo: n }) {
|
|
|
357
219
|
className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text",
|
|
358
220
|
autoFocus: !0
|
|
359
221
|
})
|
|
360
|
-
}), /* @__PURE__ */ q(
|
|
222
|
+
}), /* @__PURE__ */ q(Ae, {
|
|
361
223
|
filter: e,
|
|
362
224
|
combo: n
|
|
363
225
|
})]
|
|
@@ -370,9 +232,9 @@ function Me({ filter: e, operatorMeta: t, combo: n }) {
|
|
|
370
232
|
]
|
|
371
233
|
});
|
|
372
234
|
}
|
|
373
|
-
function
|
|
235
|
+
function Me({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
374
236
|
let { t: i } = z(), { filter: a, operatorMeta: o, shouldShowDateRange: s, shouldShowComboBox: c } = e, { onBetweenStart: l, onBetweenEnd: u, onDate: d, onDirect: f } = r;
|
|
375
|
-
return o?.requiresValues ? s ? /* @__PURE__ */ q(
|
|
237
|
+
return o?.requiresValues ? s ? /* @__PURE__ */ q(ke, {
|
|
376
238
|
filter: a,
|
|
377
239
|
dateRange: t
|
|
378
240
|
}) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ J("div", {
|
|
@@ -408,7 +270,7 @@ function Ne({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
|
408
270
|
onChange: f,
|
|
409
271
|
placeholder: i("filter.modal.enterNumber"),
|
|
410
272
|
className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
411
|
-
}) : c ? /* @__PURE__ */ q(
|
|
273
|
+
}) : c ? /* @__PURE__ */ q(je, {
|
|
412
274
|
filter: a,
|
|
413
275
|
operatorMeta: o,
|
|
414
276
|
combo: n
|
|
@@ -425,25 +287,25 @@ function Ne({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
|
425
287
|
}
|
|
426
288
|
//#endregion
|
|
427
289
|
//#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
|
|
428
|
-
var
|
|
429
|
-
function
|
|
430
|
-
let { t: a } = z(), [o, s] = G(e), [c, l] = G(!1), [u, d] = G(!1), [f, p] = G(!1), [m,
|
|
290
|
+
var Ne = d("close"), Pe = d("chevronDown"), Fe = d("dimension"), Ie = d("timeDimension"), Le = d("measure");
|
|
291
|
+
function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
|
|
292
|
+
let { t: a } = z(), [o, s] = G(e), [c, l] = G(!1), [u, d] = G(!1), [f, p] = G(!1), [m, h] = G("this_month"), [g, _] = G(1), [y, x] = G(""), [S, T] = G(null), [D, k] = G(-1), ee = W(null), A = W(null), te = de(y, 300), j = b(o.member, t), M = j?.field.type || "string", N = M === "time", re = j?.fieldType === "measure", ie = j?.fieldType === "dimension", ae = O(o.member, t), P = C[o.operator], oe = w(M), se = N && o.operator === "inDateRange", F = V(() => [
|
|
431
293
|
"equals",
|
|
432
294
|
"notEquals",
|
|
433
295
|
"in",
|
|
434
296
|
"notIn"
|
|
435
|
-
].includes(o.operator) &&
|
|
297
|
+
].includes(o.operator) && ie && !N, [
|
|
436
298
|
o.operator,
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
])(), { values:
|
|
299
|
+
ie,
|
|
300
|
+
N
|
|
301
|
+
])(), { values: L, loading: ce, error: le, searchValues: R } = fe(o.member, F);
|
|
440
302
|
H(() => {
|
|
441
303
|
if (!i) {
|
|
442
|
-
|
|
304
|
+
T(null);
|
|
443
305
|
return;
|
|
444
306
|
}
|
|
445
307
|
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));
|
|
446
|
-
|
|
308
|
+
T(r ? {
|
|
447
309
|
bottom: window.innerHeight - e.top + 8,
|
|
448
310
|
left: a
|
|
449
311
|
} : {
|
|
@@ -452,33 +314,33 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
452
314
|
});
|
|
453
315
|
}, [i]), H(() => {
|
|
454
316
|
let e = (e) => {
|
|
455
|
-
|
|
317
|
+
ee.current && !ee.current.contains(e.target) && (l(!1), d(!1), p(!1));
|
|
456
318
|
};
|
|
457
319
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
458
320
|
}, []), H(() => {
|
|
459
|
-
u &&
|
|
321
|
+
u && F && R && R("", !0), u || k(-1);
|
|
460
322
|
}, [
|
|
461
323
|
u,
|
|
462
|
-
|
|
463
|
-
|
|
324
|
+
F,
|
|
325
|
+
R
|
|
464
326
|
]), H(() => {
|
|
465
|
-
if (
|
|
466
|
-
let e =
|
|
327
|
+
if (D >= 0 && A.current) {
|
|
328
|
+
let e = A.current.children[D];
|
|
467
329
|
e && e.scrollIntoView({ block: "nearest" });
|
|
468
330
|
}
|
|
469
|
-
}, [
|
|
470
|
-
u &&
|
|
331
|
+
}, [D]), H(() => {
|
|
332
|
+
u && F && R && te !== void 0 && R(te);
|
|
471
333
|
}, [
|
|
472
|
-
|
|
334
|
+
te,
|
|
473
335
|
u,
|
|
474
|
-
|
|
475
|
-
|
|
336
|
+
F,
|
|
337
|
+
R
|
|
476
338
|
]), H(() => {
|
|
477
|
-
if (!
|
|
478
|
-
let e =
|
|
479
|
-
e && (
|
|
480
|
-
}, [o.dateRange,
|
|
481
|
-
let
|
|
339
|
+
if (!se) return;
|
|
340
|
+
let e = v(o.dateRange);
|
|
341
|
+
e && (h(e.rangeType), e.numberValue !== void 0 && _(e.numberValue));
|
|
342
|
+
}, [o.dateRange, se]);
|
|
343
|
+
let ue = V((e) => {
|
|
482
344
|
s({
|
|
483
345
|
member: o.member,
|
|
484
346
|
operator: e,
|
|
@@ -486,7 +348,7 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
486
348
|
}), l(!1);
|
|
487
349
|
}, [o.member]), pe = V((e, t) => {
|
|
488
350
|
let n = t?.shiftKey ?? !1, r = o.values || [];
|
|
489
|
-
|
|
351
|
+
P?.supportsMultipleValues ? (r.includes(e) ? s({
|
|
490
352
|
...o,
|
|
491
353
|
values: r.filter((t) => t !== e)
|
|
492
354
|
}) : s({
|
|
@@ -495,28 +357,28 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
495
357
|
}), n || d(!1)) : (s({
|
|
496
358
|
...o,
|
|
497
359
|
values: [e]
|
|
498
|
-
}), d(!1)),
|
|
499
|
-
}, [o,
|
|
360
|
+
}), d(!1)), x(""), k(-1);
|
|
361
|
+
}, [o, P?.supportsMultipleValues]), me = V((e) => {
|
|
500
362
|
let t = (o.values || []).filter((t) => t !== e);
|
|
501
363
|
s({
|
|
502
364
|
...o,
|
|
503
365
|
values: t
|
|
504
366
|
});
|
|
505
367
|
}, [o]), he = V((e) => {
|
|
506
|
-
let t =
|
|
368
|
+
let t = Ee(e.key, u, L.length, D);
|
|
507
369
|
if (t.type !== "none") {
|
|
508
370
|
if (e.preventDefault(), t.type === "highlight") return k(t.index);
|
|
509
|
-
if (t.type === "select") return pe(
|
|
371
|
+
if (t.type === "select") return pe(L[t.index], { shiftKey: e.shiftKey });
|
|
510
372
|
d(!1), k(-1);
|
|
511
373
|
}
|
|
512
374
|
}, [
|
|
513
375
|
u,
|
|
514
|
-
|
|
515
|
-
|
|
376
|
+
L,
|
|
377
|
+
D,
|
|
516
378
|
pe
|
|
517
379
|
]), ge = V((e) => {
|
|
518
380
|
let t = e.target.value;
|
|
519
|
-
if (
|
|
381
|
+
if (P?.valueType === "number") {
|
|
520
382
|
let e = parseFloat(t);
|
|
521
383
|
isNaN(e) ? (t === "" || t === "-") && s({
|
|
522
384
|
...o,
|
|
@@ -529,37 +391,37 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
529
391
|
...o,
|
|
530
392
|
values: t ? [t] : []
|
|
531
393
|
});
|
|
532
|
-
}, [o,
|
|
394
|
+
}, [o, P?.valueType]), _e = V((e) => {
|
|
533
395
|
let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
|
|
534
396
|
s({
|
|
535
397
|
...o,
|
|
536
398
|
values: n
|
|
537
399
|
});
|
|
538
|
-
}, [o]),
|
|
400
|
+
}, [o]), ve = V((e) => {
|
|
539
401
|
let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
|
|
540
402
|
s({
|
|
541
403
|
...o,
|
|
542
404
|
values: n
|
|
543
405
|
});
|
|
544
|
-
}, [o]),
|
|
406
|
+
}, [o]), ye = V((e) => {
|
|
545
407
|
let t = e.target.value;
|
|
546
408
|
s({
|
|
547
409
|
...o,
|
|
548
410
|
values: t ? [t] : []
|
|
549
411
|
});
|
|
550
|
-
}, [o]),
|
|
551
|
-
|
|
412
|
+
}, [o]), B = V((e) => {
|
|
413
|
+
h(e), p(!1);
|
|
552
414
|
let t;
|
|
553
415
|
if (e === "custom") {
|
|
554
416
|
let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
555
417
|
t = [e, e];
|
|
556
|
-
} else t =
|
|
418
|
+
} else t = ne(e) ? I(e, g) : I(e);
|
|
557
419
|
s({
|
|
558
420
|
...o,
|
|
559
421
|
dateRange: t
|
|
560
422
|
});
|
|
561
|
-
}, [o,
|
|
562
|
-
if (
|
|
423
|
+
}, [o, g]), be = V((e) => {
|
|
424
|
+
if (_(e), ne(m)) {
|
|
563
425
|
let t = I(m, e);
|
|
564
426
|
s({
|
|
565
427
|
...o,
|
|
@@ -578,33 +440,33 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
578
440
|
...o,
|
|
579
441
|
dateRange: [n, t]
|
|
580
442
|
});
|
|
581
|
-
}, [o]), Ce = a(
|
|
443
|
+
}, [o]), Ce = a(oe.find((e) => e.operator === o.operator)?.label || o.operator), we = a(E.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
|
|
582
444
|
filter: o,
|
|
583
|
-
operatorMeta:
|
|
584
|
-
shouldShowDateRange:
|
|
585
|
-
shouldShowComboBox:
|
|
586
|
-
},
|
|
445
|
+
operatorMeta: P,
|
|
446
|
+
shouldShowDateRange: se,
|
|
447
|
+
shouldShowComboBox: F
|
|
448
|
+
}, Y = {
|
|
587
449
|
rangeType: m,
|
|
588
|
-
numberValue:
|
|
450
|
+
numberValue: g,
|
|
589
451
|
label: we,
|
|
590
452
|
isOpen: f,
|
|
591
453
|
onToggle: p,
|
|
592
|
-
onRangeTypeChange:
|
|
454
|
+
onRangeTypeChange: B,
|
|
593
455
|
onNumberValueChange: be,
|
|
594
456
|
onCustomStartDate: xe,
|
|
595
457
|
onCustomEndDate: Se,
|
|
596
458
|
onOpen: V(() => {
|
|
597
459
|
l(!1), d(!1);
|
|
598
460
|
}, [])
|
|
599
|
-
},
|
|
461
|
+
}, De = {
|
|
600
462
|
isOpen: u,
|
|
601
|
-
options:
|
|
602
|
-
loading:
|
|
603
|
-
error:
|
|
604
|
-
searchText:
|
|
605
|
-
highlightedIndex:
|
|
606
|
-
listRef:
|
|
607
|
-
onSearchTextChange:
|
|
463
|
+
options: L,
|
|
464
|
+
loading: ce,
|
|
465
|
+
error: le,
|
|
466
|
+
searchText: y,
|
|
467
|
+
highlightedIndex: D,
|
|
468
|
+
listRef: A,
|
|
469
|
+
onSearchTextChange: x,
|
|
608
470
|
onHighlightedIndexChange: k,
|
|
609
471
|
onSelect: pe,
|
|
610
472
|
onRemove: me,
|
|
@@ -613,26 +475,26 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
613
475
|
l(!1), p(!1), d((e) => !e);
|
|
614
476
|
}, [])
|
|
615
477
|
}, Oe = U(() => ({
|
|
616
|
-
onBetweenStart:
|
|
617
|
-
onBetweenEnd:
|
|
618
|
-
onDate:
|
|
478
|
+
onBetweenStart: _e,
|
|
479
|
+
onBetweenEnd: ve,
|
|
480
|
+
onDate: ye,
|
|
619
481
|
onDirect: ge
|
|
620
482
|
}), [
|
|
621
|
-
B,
|
|
622
483
|
_e,
|
|
623
484
|
ve,
|
|
485
|
+
ye,
|
|
624
486
|
ge
|
|
625
|
-
]), ke =
|
|
487
|
+
]), ke = N ? Ie : re ? Le : Fe;
|
|
626
488
|
return /* @__PURE__ */ q(K, { children: /* @__PURE__ */ q("div", {
|
|
627
|
-
className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${
|
|
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"}`,
|
|
628
490
|
onClick: r,
|
|
629
491
|
children: /* @__PURE__ */ J("div", {
|
|
630
|
-
ref:
|
|
631
|
-
className:
|
|
492
|
+
ref: ee,
|
|
493
|
+
className: S ? "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",
|
|
632
494
|
style: {
|
|
633
|
-
...
|
|
495
|
+
...S ? {
|
|
634
496
|
position: "fixed",
|
|
635
|
-
...
|
|
497
|
+
...S,
|
|
636
498
|
maxWidth: "400px",
|
|
637
499
|
width: "100%"
|
|
638
500
|
} : {},
|
|
@@ -648,7 +510,7 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
648
510
|
}), /* @__PURE__ */ q("button", {
|
|
649
511
|
onClick: r,
|
|
650
512
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
|
|
651
|
-
children: /* @__PURE__ */ q(
|
|
513
|
+
children: /* @__PURE__ */ q(Ne, { className: "dc:w-5 dc:h-5" })
|
|
652
514
|
})]
|
|
653
515
|
}),
|
|
654
516
|
/* @__PURE__ */ J("div", {
|
|
@@ -661,7 +523,7 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
661
523
|
className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
|
|
662
524
|
children: [/* @__PURE__ */ q(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ q("span", {
|
|
663
525
|
className: "dc:text-sm dc:font-medium text-dc-text",
|
|
664
|
-
children:
|
|
526
|
+
children: ae
|
|
665
527
|
})]
|
|
666
528
|
})] }),
|
|
667
529
|
/* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
|
|
@@ -677,11 +539,11 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
677
539
|
children: [/* @__PURE__ */ q("span", {
|
|
678
540
|
className: "dc:truncate",
|
|
679
541
|
children: Ce
|
|
680
|
-
}), /* @__PURE__ */ q(
|
|
542
|
+
}), /* @__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" : ""}` })]
|
|
681
543
|
}), c && /* @__PURE__ */ q("div", {
|
|
682
544
|
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",
|
|
683
|
-
children:
|
|
684
|
-
onClick: () =>
|
|
545
|
+
children: oe.map((e) => /* @__PURE__ */ q("button", {
|
|
546
|
+
onClick: () => ue(e.operator),
|
|
685
547
|
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"}`,
|
|
686
548
|
children: a(e.label)
|
|
687
549
|
}, e.operator))
|
|
@@ -690,10 +552,10 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
690
552
|
/* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
|
|
691
553
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
692
554
|
children: a("filter.modal.valueLabel")
|
|
693
|
-
}), /* @__PURE__ */ q(
|
|
555
|
+
}), /* @__PURE__ */ q(Me, {
|
|
694
556
|
field: Te,
|
|
695
|
-
dateRange:
|
|
696
|
-
combo:
|
|
557
|
+
dateRange: Y,
|
|
558
|
+
combo: De,
|
|
697
559
|
inputs: Oe
|
|
698
560
|
})] })
|
|
699
561
|
]
|
|
@@ -716,9 +578,9 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
716
578
|
}
|
|
717
579
|
//#endregion
|
|
718
580
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
|
|
719
|
-
var
|
|
720
|
-
function
|
|
721
|
-
let { t: i } = z(), [a, o] = G(!1), s = W(null), c =
|
|
581
|
+
var ze = d("close"), Be = d("dimension"), Ve = d("timeDimension"), He = d("measure");
|
|
582
|
+
function Ue({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
583
|
+
let { t: i } = z(), [a, o] = G(!1), s = W(null), c = b(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = O(e.member, t), f = C[e.operator], p = f?.label ? i(f.label) : e.operator, m = We(e, f, i), h = l ? Ve : u ? He : Be;
|
|
722
584
|
return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ J("div", {
|
|
723
585
|
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",
|
|
724
586
|
children: [
|
|
@@ -753,10 +615,10 @@ function We({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
|
753
615
|
onClick: n,
|
|
754
616
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:opacity-100 dc:sm:opacity-0 dc:sm:group-hover:opacity-100 dc:transition-opacity dc:flex-shrink-0 dc:mt-0.5",
|
|
755
617
|
title: i("filter.removeButton.title"),
|
|
756
|
-
children:
|
|
618
|
+
children: ze && /* @__PURE__ */ q(ze, { className: "dc:w-4 dc:h-4" })
|
|
757
619
|
})
|
|
758
620
|
]
|
|
759
|
-
}), a && /* @__PURE__ */ q(
|
|
621
|
+
}), a && /* @__PURE__ */ q(Re, {
|
|
760
622
|
filter: e,
|
|
761
623
|
schema: t,
|
|
762
624
|
onSave: (e) => {
|
|
@@ -766,7 +628,7 @@ function We({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
|
766
628
|
anchorElement: s.current
|
|
767
629
|
})] });
|
|
768
630
|
}
|
|
769
|
-
function
|
|
631
|
+
function We(e, t, n) {
|
|
770
632
|
if (!t?.requiresValues) return "";
|
|
771
633
|
if (e.dateRange) return Array.isArray(e.dateRange) ? `${e.dateRange[0]} to ${e.dateRange[1]}` : e.dateRange;
|
|
772
634
|
let r = e.values || [];
|
|
@@ -774,8 +636,8 @@ function Ge(e, t, n) {
|
|
|
774
636
|
}
|
|
775
637
|
//#endregion
|
|
776
638
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
|
|
777
|
-
var
|
|
778
|
-
function
|
|
639
|
+
var Ge = d("add"), Ke = d("close");
|
|
640
|
+
function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
|
|
779
641
|
let { t: s } = z(), [c, l] = G(!1), u = W(null);
|
|
780
642
|
H(() => {
|
|
781
643
|
let e = (e) => {
|
|
@@ -784,7 +646,7 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
784
646
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
785
647
|
}, []);
|
|
786
648
|
let d = V(() => {
|
|
787
|
-
n(
|
|
649
|
+
n(ie(e));
|
|
788
650
|
}, [e, n]), f = V((t, r) => {
|
|
789
651
|
let i = [...e.filters];
|
|
790
652
|
i[t] = r, n({
|
|
@@ -844,7 +706,7 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
844
706
|
onClick: () => l(!c),
|
|
845
707
|
className: "dc:p-1 text-dc-text-secondary hover:text-dc-primary hover:bg-dc-surface-hover dc:rounded-sm dc:transition-colors",
|
|
846
708
|
title: "Add condition",
|
|
847
|
-
children: /* @__PURE__ */ q(
|
|
709
|
+
children: /* @__PURE__ */ q(Ge, { className: "dc:w-4 dc:h-4" })
|
|
848
710
|
}), c && /* @__PURE__ */ J("div", {
|
|
849
711
|
className: "dc:absolute dc:right-0 dc:mt-1 dc:z-40 bg-dc-surface dc:border border-dc-border dc:rounded-sm dc:shadow-lg dc:py-1 dc:min-w-[120px]",
|
|
850
712
|
children: [
|
|
@@ -869,7 +731,7 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
869
731
|
onClick: r,
|
|
870
732
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:transition-colors",
|
|
871
733
|
title: s("filter.group.removeGroup"),
|
|
872
|
-
children: /* @__PURE__ */ q(
|
|
734
|
+
children: /* @__PURE__ */ q(Ke, { className: "dc:w-4 dc:h-4" })
|
|
873
735
|
})]
|
|
874
736
|
})]
|
|
875
737
|
}), /* @__PURE__ */ q("div", {
|
|
@@ -884,12 +746,12 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
884
746
|
className: "dc:text-xs text-dc-primary dc:hover:underline",
|
|
885
747
|
children: s("filter.group.addFilterLink")
|
|
886
748
|
})]
|
|
887
|
-
}) : e.filters.map((e, n) =>
|
|
749
|
+
}) : e.filters.map((e, n) => P(e) ? /* @__PURE__ */ q(Ue, {
|
|
888
750
|
filter: e,
|
|
889
751
|
schema: t,
|
|
890
752
|
onUpdate: (e) => f(n, e),
|
|
891
753
|
onRemove: () => p(n)
|
|
892
|
-
}, `filter-${n}`) :
|
|
754
|
+
}, `filter-${n}`) : ae(e) ? /* @__PURE__ */ q(qe, {
|
|
893
755
|
group: e,
|
|
894
756
|
schema: t,
|
|
895
757
|
onUpdate: (e) => f(n, e),
|
|
@@ -902,8 +764,8 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
902
764
|
}
|
|
903
765
|
//#endregion
|
|
904
766
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
|
|
905
|
-
var
|
|
906
|
-
function
|
|
767
|
+
var Je = d("add");
|
|
768
|
+
function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
|
|
907
769
|
let { t: a } = z(), [o, s] = G(!1), [c, l] = G(!1), u = W([]), d = R(e), f = V((e) => {
|
|
908
770
|
e.preventDefault(), e.stopPropagation(), l(!0);
|
|
909
771
|
}, []), p = V((e) => {
|
|
@@ -914,18 +776,18 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
914
776
|
let t = JSON.parse(e.dataTransfer.getData("text/plain"));
|
|
915
777
|
t.field && r && r(t.field);
|
|
916
778
|
} catch {}
|
|
917
|
-
}, [r]), h =
|
|
779
|
+
}, [r]), h = N(e), g = V((t, r, i) => {
|
|
918
780
|
let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
|
|
919
781
|
member: t.name,
|
|
920
782
|
operator: o,
|
|
921
783
|
values: []
|
|
922
784
|
};
|
|
923
|
-
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(
|
|
785
|
+
a && o === "inDateRange" && (c.dateRange = I("this_month")), n(oe(e, u.current, c)), s(!1), u.current = [];
|
|
924
786
|
}, [e, n]), _ = V((t, r) => {
|
|
925
787
|
let i = [...e];
|
|
926
788
|
i[t] = r, n(i);
|
|
927
789
|
}, [e, n]), v = V((t) => {
|
|
928
|
-
n(
|
|
790
|
+
n(se(e, t));
|
|
929
791
|
}, [e, n]), y = V(() => {
|
|
930
792
|
n([]);
|
|
931
793
|
}, [n]), b = V(() => {
|
|
@@ -934,12 +796,12 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
934
796
|
u.current = [...e, ...t], s(!0);
|
|
935
797
|
}, []), S = (n, r, i = []) => {
|
|
936
798
|
let a = [...i, r];
|
|
937
|
-
return
|
|
799
|
+
return P(n) ? /* @__PURE__ */ q(Ue, {
|
|
938
800
|
filter: n,
|
|
939
801
|
schema: t,
|
|
940
802
|
onUpdate: (e) => _(r, e),
|
|
941
803
|
onRemove: () => v(r)
|
|
942
|
-
}, `filter-${a.join("-")}`) :
|
|
804
|
+
}, `filter-${a.join("-")}`) : ae(n) ? /* @__PURE__ */ q(qe, {
|
|
943
805
|
group: n,
|
|
944
806
|
schema: t,
|
|
945
807
|
onUpdate: (e) => _(r, e),
|
|
@@ -953,7 +815,7 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
953
815
|
onClick: b,
|
|
954
816
|
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",
|
|
955
817
|
title: "Add filter",
|
|
956
|
-
children: [/* @__PURE__ */ J(
|
|
818
|
+
children: [/* @__PURE__ */ J(ye, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
|
|
957
819
|
className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
|
|
958
820
|
children: [
|
|
959
821
|
"(",
|
|
@@ -973,7 +835,7 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
973
835
|
},
|
|
974
836
|
className: "dc:text-xs text-dc-text-muted hover:text-dc-error dc:underline dc:cursor-pointer",
|
|
975
837
|
children: a("filter.section.clearAll")
|
|
976
|
-
}), /* @__PURE__ */ q(
|
|
838
|
+
}), /* @__PURE__ */ q(Je, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
|
|
977
839
|
})]
|
|
978
840
|
}),
|
|
979
841
|
/* @__PURE__ */ q("div", {
|
|
@@ -989,7 +851,7 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
989
851
|
children: e.map((e, t) => S(e, t))
|
|
990
852
|
})
|
|
991
853
|
}),
|
|
992
|
-
/* @__PURE__ */ q(
|
|
854
|
+
/* @__PURE__ */ q(k, {
|
|
993
855
|
isOpen: o,
|
|
994
856
|
onClose: () => {
|
|
995
857
|
s(!1), u.current = [];
|
|
@@ -1003,30 +865,30 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
1003
865
|
}
|
|
1004
866
|
//#endregion
|
|
1005
867
|
//#region src/client/components/AnalysisBuilder/ExplainAIPanel.tsx
|
|
1006
|
-
function
|
|
868
|
+
function Xe(e) {
|
|
1007
869
|
return typeof e == "string" ? e : typeof e == "object" && e ? JSON.stringify(e) : String(e ?? "");
|
|
1008
870
|
}
|
|
1009
|
-
var
|
|
871
|
+
var Ze = {
|
|
1010
872
|
good: "bg-dc-success-bg text-dc-success border-dc-success",
|
|
1011
873
|
warning: "bg-dc-warning-bg text-dc-warning border-dc-warning",
|
|
1012
874
|
critical: "bg-dc-danger-bg text-dc-error border-dc-error"
|
|
1013
|
-
},
|
|
875
|
+
}, Qe = {
|
|
1014
876
|
critical: "bg-dc-danger-bg text-dc-error",
|
|
1015
877
|
warning: "bg-dc-warning-bg text-dc-warning",
|
|
1016
878
|
suggestion: "bg-dc-accent-bg text-dc-accent"
|
|
1017
|
-
},
|
|
879
|
+
}, $e = {
|
|
1018
880
|
high: "text-dc-error",
|
|
1019
881
|
medium: "text-dc-warning",
|
|
1020
882
|
low: "text-dc-text-muted"
|
|
1021
883
|
};
|
|
1022
|
-
function
|
|
884
|
+
function et({ assessment: e, reason: t }) {
|
|
1023
885
|
let { t: n } = z(), r = {
|
|
1024
886
|
good: n("explainAI.assessment.good"),
|
|
1025
887
|
warning: n("explainAI.assessment.warning"),
|
|
1026
888
|
critical: n("explainAI.assessment.critical")
|
|
1027
889
|
};
|
|
1028
890
|
return /* @__PURE__ */ J("div", {
|
|
1029
|
-
className: `dc:p-4 dc:rounded-lg dc:border ${
|
|
891
|
+
className: `dc:p-4 dc:rounded-lg dc:border ${Ze[e]}`,
|
|
1030
892
|
children: [/* @__PURE__ */ q("div", {
|
|
1031
893
|
className: "dc:flex dc:items-center dc:gap-2 dc:mb-1",
|
|
1032
894
|
children: /* @__PURE__ */ J("span", {
|
|
@@ -1040,15 +902,15 @@ function tt({ assessment: e, reason: t }) {
|
|
|
1040
902
|
})
|
|
1041
903
|
}), /* @__PURE__ */ q("p", {
|
|
1042
904
|
className: "dc:text-sm",
|
|
1043
|
-
children:
|
|
905
|
+
children: Xe(t)
|
|
1044
906
|
})]
|
|
1045
907
|
});
|
|
1046
908
|
}
|
|
1047
|
-
function
|
|
909
|
+
function tt({ issue: e }) {
|
|
1048
910
|
return /* @__PURE__ */ J("div", {
|
|
1049
911
|
className: "dc:flex dc:items-start dc:gap-2 dc:py-2",
|
|
1050
912
|
children: [/* @__PURE__ */ J("span", {
|
|
1051
|
-
className: `dc:text-sm ${
|
|
913
|
+
className: `dc:text-sm ${$e[e.severity]}`,
|
|
1052
914
|
children: [
|
|
1053
915
|
e.severity === "high" && "●",
|
|
1054
916
|
e.severity === "medium" && "○",
|
|
@@ -1056,11 +918,11 @@ function nt({ issue: e }) {
|
|
|
1056
918
|
]
|
|
1057
919
|
}), /* @__PURE__ */ q("span", {
|
|
1058
920
|
className: "dc:text-sm text-dc-text-secondary",
|
|
1059
|
-
children:
|
|
921
|
+
children: Xe(e.description)
|
|
1060
922
|
})]
|
|
1061
923
|
});
|
|
1062
924
|
}
|
|
1063
|
-
function
|
|
925
|
+
function nt({ text: e }) {
|
|
1064
926
|
let { t } = z(), [n, r] = B.useState(!1), i = B.useRef(null);
|
|
1065
927
|
return B.useEffect(() => () => {
|
|
1066
928
|
i.current && clearTimeout(i.current);
|
|
@@ -1077,7 +939,7 @@ function rt({ text: e }) {
|
|
|
1077
939
|
children: t(n ? "explainAI.copied" : "explainAI.copy")
|
|
1078
940
|
});
|
|
1079
941
|
}
|
|
1080
|
-
function
|
|
942
|
+
function rt({ rec: e }) {
|
|
1081
943
|
let { t } = z(), n = {
|
|
1082
944
|
index: t("explainAI.type.index"),
|
|
1083
945
|
table: t("explainAI.type.table"),
|
|
@@ -1090,23 +952,23 @@ function it({ rec: e }) {
|
|
|
1090
952
|
/* @__PURE__ */ J("div", {
|
|
1091
953
|
className: "dc:flex dc:items-center dc:gap-2 dc:mb-2",
|
|
1092
954
|
children: [/* @__PURE__ */ q("span", {
|
|
1093
|
-
className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${
|
|
955
|
+
className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${Qe[e.severity]}`,
|
|
1094
956
|
children: n[e.type]
|
|
1095
957
|
}), /* @__PURE__ */ q("h5", {
|
|
1096
958
|
className: "dc:font-medium text-dc-text",
|
|
1097
|
-
children:
|
|
959
|
+
children: Xe(e.title)
|
|
1098
960
|
})]
|
|
1099
961
|
}),
|
|
1100
962
|
/* @__PURE__ */ q("p", {
|
|
1101
963
|
className: "dc:text-sm text-dc-text-secondary dc:mb-3",
|
|
1102
|
-
children:
|
|
964
|
+
children: Xe(e.description)
|
|
1103
965
|
}),
|
|
1104
966
|
e.sql && /* @__PURE__ */ q("div", {
|
|
1105
967
|
className: "dc:mt-2",
|
|
1106
|
-
children: /* @__PURE__ */ q(
|
|
968
|
+
children: /* @__PURE__ */ q(g, {
|
|
1107
969
|
code: e.sql,
|
|
1108
970
|
language: "sql",
|
|
1109
|
-
headerRight: /* @__PURE__ */ q(
|
|
971
|
+
headerRight: /* @__PURE__ */ q(nt, { text: e.sql })
|
|
1110
972
|
})
|
|
1111
973
|
}),
|
|
1112
974
|
e.cubeCode && /* @__PURE__ */ J("div", {
|
|
@@ -1121,7 +983,7 @@ function it({ rec: e }) {
|
|
|
1121
983
|
children: e.cubeCode
|
|
1122
984
|
}), /* @__PURE__ */ q("div", {
|
|
1123
985
|
className: "dc:absolute dc:top-1 dc:right-1",
|
|
1124
|
-
children: /* @__PURE__ */ q(
|
|
986
|
+
children: /* @__PURE__ */ q(nt, { text: e.cubeCode })
|
|
1125
987
|
})]
|
|
1126
988
|
})]
|
|
1127
989
|
}),
|
|
@@ -1130,13 +992,13 @@ function it({ rec: e }) {
|
|
|
1130
992
|
children: [
|
|
1131
993
|
/* @__PURE__ */ q("strong", { children: t("explainAI.expectedImpact") }),
|
|
1132
994
|
" ",
|
|
1133
|
-
|
|
995
|
+
Xe(e.estimatedImpact)
|
|
1134
996
|
]
|
|
1135
997
|
})
|
|
1136
998
|
]
|
|
1137
999
|
});
|
|
1138
1000
|
}
|
|
1139
|
-
function
|
|
1001
|
+
function it({ analysis: e, onClose: t, onClear: n }) {
|
|
1140
1002
|
let { t: r } = z(), i = t || n;
|
|
1141
1003
|
return B.useEffect(() => {
|
|
1142
1004
|
let e = (e) => {
|
|
@@ -1186,7 +1048,7 @@ function at({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1186
1048
|
/* @__PURE__ */ J("div", {
|
|
1187
1049
|
className: "dc:flex-1 dc:overflow-y-auto dc:px-6 dc:py-4 dc:space-y-6",
|
|
1188
1050
|
children: [
|
|
1189
|
-
/* @__PURE__ */ q(
|
|
1051
|
+
/* @__PURE__ */ q(et, {
|
|
1190
1052
|
assessment: e.assessment,
|
|
1191
1053
|
reason: e.assessmentReason
|
|
1192
1054
|
}),
|
|
@@ -1195,28 +1057,28 @@ function at({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1195
1057
|
children: r("explainAI.summary")
|
|
1196
1058
|
}), /* @__PURE__ */ q("p", {
|
|
1197
1059
|
className: "text-dc-text",
|
|
1198
|
-
children:
|
|
1060
|
+
children: Xe(e.summary)
|
|
1199
1061
|
})] }),
|
|
1200
1062
|
e.queryUnderstanding && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
|
|
1201
1063
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
|
|
1202
1064
|
children: r("explainAI.queryAnalysis")
|
|
1203
1065
|
}), /* @__PURE__ */ q("p", {
|
|
1204
1066
|
className: "text-dc-text-secondary",
|
|
1205
|
-
children:
|
|
1067
|
+
children: Xe(e.queryUnderstanding)
|
|
1206
1068
|
})] }),
|
|
1207
1069
|
e.issues && e.issues.length > 0 && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
|
|
1208
1070
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
|
|
1209
1071
|
children: r("explainAI.issuesFound", { count: e.issues.length })
|
|
1210
1072
|
}), /* @__PURE__ */ q("div", {
|
|
1211
1073
|
className: "dc:space-y-1 bg-dc-surface-secondary dc:rounded-lg dc:p-3",
|
|
1212
|
-
children: e.issues.map((e, t) => /* @__PURE__ */ q(
|
|
1074
|
+
children: e.issues.map((e, t) => /* @__PURE__ */ q(tt, { issue: e }, t))
|
|
1213
1075
|
})] }),
|
|
1214
1076
|
e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
|
|
1215
1077
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-3",
|
|
1216
1078
|
children: r("explainAI.recommendations", { count: e.recommendations.length })
|
|
1217
1079
|
}), /* @__PURE__ */ q("div", {
|
|
1218
1080
|
className: "dc:space-y-4",
|
|
1219
|
-
children: e.recommendations.map((e, t) => /* @__PURE__ */ q(
|
|
1081
|
+
children: e.recommendations.map((e, t) => /* @__PURE__ */ q(rt, { rec: e }, t))
|
|
1220
1082
|
})] }),
|
|
1221
1083
|
(!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ q("div", {
|
|
1222
1084
|
className: "text-dc-text-muted dc:italic dc:p-4 bg-dc-surface-secondary dc:rounded-lg",
|
|
@@ -1246,31 +1108,31 @@ function at({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1246
1108
|
}
|
|
1247
1109
|
//#endregion
|
|
1248
1110
|
//#region src/client/shared/chartConfigBuilders.ts
|
|
1249
|
-
var
|
|
1250
|
-
function
|
|
1111
|
+
var at = (e) => e.map((e) => e.field), ot = (e) => e.length > 0 ? [e[0].field] : [];
|
|
1112
|
+
function st(e) {
|
|
1251
1113
|
let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
|
|
1252
1114
|
return {
|
|
1253
1115
|
xAxis: n ? [n.field] : r ? [r.field] : [],
|
|
1254
|
-
yAxis:
|
|
1116
|
+
yAxis: at(t),
|
|
1255
1117
|
series: i.length > 1 ? [i[1].field] : r && n ? [r.field] : []
|
|
1256
1118
|
};
|
|
1257
1119
|
}
|
|
1258
|
-
function
|
|
1120
|
+
function ct(e) {
|
|
1259
1121
|
let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
|
|
1260
1122
|
return {
|
|
1261
1123
|
xAxis: r ? [r.field] : n ? [n.field] : [],
|
|
1262
|
-
yAxis:
|
|
1124
|
+
yAxis: at(t),
|
|
1263
1125
|
series: i.length > 1 ? [i[1].field] : n && r ? [n.field] : []
|
|
1264
1126
|
};
|
|
1265
1127
|
}
|
|
1266
|
-
function
|
|
1128
|
+
function lt(e) {
|
|
1267
1129
|
let { metrics: t, dimension: n } = e;
|
|
1268
1130
|
return {
|
|
1269
1131
|
xAxis: n ? [n.field] : [],
|
|
1270
|
-
yAxis:
|
|
1132
|
+
yAxis: ot(t)
|
|
1271
1133
|
};
|
|
1272
1134
|
}
|
|
1273
|
-
function
|
|
1135
|
+
function ut(e) {
|
|
1274
1136
|
let { metrics: t, breakdowns: n, dimension: r, dimensions: i } = e;
|
|
1275
1137
|
return t.length >= 2 ? {
|
|
1276
1138
|
xAxis: [t[0].field],
|
|
@@ -1278,11 +1140,11 @@ function dt(e) {
|
|
|
1278
1140
|
series: r ? [r.field] : []
|
|
1279
1141
|
} : {
|
|
1280
1142
|
xAxis: n.length > 0 ? [n[0].field] : [],
|
|
1281
|
-
yAxis:
|
|
1143
|
+
yAxis: ot(t),
|
|
1282
1144
|
series: i.length > 1 ? [i[1].field] : []
|
|
1283
1145
|
};
|
|
1284
1146
|
}
|
|
1285
|
-
function
|
|
1147
|
+
function dt(e) {
|
|
1286
1148
|
let { metrics: t, timeDimension: n, dimension: r } = e;
|
|
1287
1149
|
return {
|
|
1288
1150
|
xAxis: t.length > 0 ? [t[0].field] : [],
|
|
@@ -1291,125 +1153,125 @@ function ft(e) {
|
|
|
1291
1153
|
series: r ? [r.field] : n ? [n.field] : []
|
|
1292
1154
|
};
|
|
1293
1155
|
}
|
|
1294
|
-
function
|
|
1156
|
+
function ft(e) {
|
|
1295
1157
|
let { metrics: t, dimension: n } = e;
|
|
1296
1158
|
return {
|
|
1297
1159
|
xAxis: n ? [n.field] : [],
|
|
1298
|
-
yAxis:
|
|
1160
|
+
yAxis: ot(t)
|
|
1299
1161
|
};
|
|
1300
1162
|
}
|
|
1301
|
-
function
|
|
1163
|
+
function pt(e) {
|
|
1302
1164
|
let { metrics: t, timeDimension: n } = e;
|
|
1303
1165
|
return {
|
|
1304
1166
|
dateField: n ? [n.field] : [],
|
|
1305
|
-
valueField:
|
|
1167
|
+
valueField: ot(t)
|
|
1306
1168
|
};
|
|
1307
1169
|
}
|
|
1308
|
-
function
|
|
1309
|
-
return { yAxis:
|
|
1170
|
+
function mt(e) {
|
|
1171
|
+
return { yAxis: ot(e.metrics) };
|
|
1310
1172
|
}
|
|
1311
|
-
function
|
|
1173
|
+
function ht(e) {
|
|
1312
1174
|
let { metrics: t, breakdowns: n } = e;
|
|
1313
1175
|
return { xAxis: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
|
|
1314
1176
|
}
|
|
1315
|
-
function
|
|
1177
|
+
function gt(e) {
|
|
1316
1178
|
let { metrics: t, breakdowns: n } = e;
|
|
1317
1179
|
return { columns: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
|
|
1318
1180
|
}
|
|
1319
|
-
function
|
|
1181
|
+
function _t() {
|
|
1320
1182
|
return {};
|
|
1321
1183
|
}
|
|
1322
|
-
function
|
|
1184
|
+
function vt(e) {
|
|
1323
1185
|
let { metrics: t, breakdowns: n } = e;
|
|
1324
1186
|
return {
|
|
1325
1187
|
xAxis: n.length > 0 ? [n[0].field] : [],
|
|
1326
|
-
yAxis:
|
|
1188
|
+
yAxis: at(t)
|
|
1327
1189
|
};
|
|
1328
1190
|
}
|
|
1329
|
-
var
|
|
1330
|
-
line:
|
|
1331
|
-
area:
|
|
1332
|
-
bar:
|
|
1333
|
-
pie:
|
|
1334
|
-
scatter:
|
|
1335
|
-
bubble:
|
|
1336
|
-
radar:
|
|
1337
|
-
radialBar:
|
|
1338
|
-
treemap:
|
|
1339
|
-
proportionBar:
|
|
1340
|
-
activityGrid:
|
|
1341
|
-
kpiNumber:
|
|
1342
|
-
kpiDelta:
|
|
1343
|
-
kpiText:
|
|
1344
|
-
table:
|
|
1345
|
-
recordsTable:
|
|
1346
|
-
markdown:
|
|
1191
|
+
var yt = {
|
|
1192
|
+
line: st,
|
|
1193
|
+
area: st,
|
|
1194
|
+
bar: ct,
|
|
1195
|
+
pie: lt,
|
|
1196
|
+
scatter: ut,
|
|
1197
|
+
bubble: dt,
|
|
1198
|
+
radar: ft,
|
|
1199
|
+
radialBar: ft,
|
|
1200
|
+
treemap: ft,
|
|
1201
|
+
proportionBar: lt,
|
|
1202
|
+
activityGrid: pt,
|
|
1203
|
+
kpiNumber: mt,
|
|
1204
|
+
kpiDelta: mt,
|
|
1205
|
+
kpiText: mt,
|
|
1206
|
+
table: ht,
|
|
1207
|
+
recordsTable: gt,
|
|
1208
|
+
markdown: _t
|
|
1347
1209
|
};
|
|
1348
|
-
function
|
|
1349
|
-
return
|
|
1210
|
+
function bt(e) {
|
|
1211
|
+
return yt[e] || vt;
|
|
1350
1212
|
}
|
|
1351
1213
|
//#endregion
|
|
1352
1214
|
//#region src/client/shared/chartDefaults.ts
|
|
1353
|
-
function
|
|
1215
|
+
function xt(e) {
|
|
1354
1216
|
return e.isTimeDimension;
|
|
1355
1217
|
}
|
|
1356
|
-
function
|
|
1357
|
-
return e.find(
|
|
1218
|
+
function St(e) {
|
|
1219
|
+
return e.find(xt);
|
|
1358
1220
|
}
|
|
1359
|
-
function
|
|
1221
|
+
function Ct(e) {
|
|
1360
1222
|
return e.find((e) => !e.isTimeDimension);
|
|
1361
1223
|
}
|
|
1362
|
-
function
|
|
1224
|
+
function wt(e) {
|
|
1363
1225
|
return e.filter((e) => !e.isTimeDimension);
|
|
1364
1226
|
}
|
|
1365
|
-
function
|
|
1366
|
-
return e.filter(
|
|
1227
|
+
function Tt(e) {
|
|
1228
|
+
return e.filter(xt);
|
|
1367
1229
|
}
|
|
1368
|
-
function
|
|
1230
|
+
function Et(e, t) {
|
|
1369
1231
|
return {
|
|
1370
1232
|
measureCount: e.length,
|
|
1371
1233
|
dimensionCount: t.length,
|
|
1372
|
-
timeDimensionCount:
|
|
1234
|
+
timeDimensionCount: Tt(t).length
|
|
1373
1235
|
};
|
|
1374
1236
|
}
|
|
1375
|
-
function
|
|
1237
|
+
function Dt(e, t, n) {
|
|
1376
1238
|
let r = u[e];
|
|
1377
|
-
return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(
|
|
1239
|
+
return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(Et(t, n));
|
|
1378
1240
|
}
|
|
1379
|
-
function
|
|
1241
|
+
function Ot(e, t) {
|
|
1380
1242
|
let n = Object.keys(u), r = {};
|
|
1381
|
-
for (let i of n) r[i] =
|
|
1243
|
+
for (let i of n) r[i] = Dt(i, e, t);
|
|
1382
1244
|
return r;
|
|
1383
1245
|
}
|
|
1384
|
-
function
|
|
1385
|
-
if (
|
|
1386
|
-
let r =
|
|
1246
|
+
function kt(e, t, n) {
|
|
1247
|
+
if (Dt(n, e, t).available || e.length === 0 && t.length === 0) return n;
|
|
1248
|
+
let r = Tt(t).length > 0, i = wt(t).length > 0, a = e.length > 0;
|
|
1387
1249
|
return r && a ? "line" : i && a ? "bar" : a && !i && !r ? "kpiNumber" : "table";
|
|
1388
1250
|
}
|
|
1389
|
-
function
|
|
1390
|
-
let r =
|
|
1251
|
+
function At(e, t, n) {
|
|
1252
|
+
let r = kt(e, t, n);
|
|
1391
1253
|
return {
|
|
1392
1254
|
chartType: r,
|
|
1393
|
-
chartConfig:
|
|
1255
|
+
chartConfig: jt(r, e, t)
|
|
1394
1256
|
};
|
|
1395
1257
|
}
|
|
1396
|
-
function
|
|
1397
|
-
return
|
|
1258
|
+
function jt(e, t, n) {
|
|
1259
|
+
return bt(e)({
|
|
1398
1260
|
metrics: t,
|
|
1399
1261
|
breakdowns: n,
|
|
1400
|
-
timeDimension:
|
|
1401
|
-
dimension:
|
|
1402
|
-
dimensions:
|
|
1262
|
+
timeDimension: St(n),
|
|
1263
|
+
dimension: Ct(n),
|
|
1264
|
+
dimensions: wt(n)
|
|
1403
1265
|
});
|
|
1404
1266
|
}
|
|
1405
|
-
function
|
|
1406
|
-
if (r &&
|
|
1407
|
-
let i =
|
|
1267
|
+
function Mt(e, t, n, r) {
|
|
1268
|
+
if (r && Dt(n, e, t).available) return null;
|
|
1269
|
+
let i = kt(e, t, n);
|
|
1408
1270
|
return i === n ? null : i;
|
|
1409
1271
|
}
|
|
1410
1272
|
//#endregion
|
|
1411
1273
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
|
|
1412
|
-
function
|
|
1274
|
+
function Nt({ title: e, height: t, className: n, children: r }) {
|
|
1413
1275
|
return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q("h4", {
|
|
1414
1276
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1415
1277
|
children: e
|
|
@@ -1419,32 +1281,32 @@ function Pt({ title: e, height: t, className: n, children: r }) {
|
|
|
1419
1281
|
children: r
|
|
1420
1282
|
})] });
|
|
1421
1283
|
}
|
|
1422
|
-
function
|
|
1284
|
+
function Pt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
|
|
1423
1285
|
let { t: c } = z();
|
|
1424
|
-
return t ? /* @__PURE__ */ q(
|
|
1286
|
+
return t ? /* @__PURE__ */ q(Nt, {
|
|
1425
1287
|
title: a,
|
|
1426
1288
|
height: o,
|
|
1427
1289
|
className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
|
|
1428
1290
|
children: c("results.debug.loadingSql")
|
|
1429
|
-
}) : n ? /* @__PURE__ */ q(
|
|
1291
|
+
}) : n ? /* @__PURE__ */ q(Nt, {
|
|
1430
1292
|
title: a,
|
|
1431
1293
|
height: o,
|
|
1432
1294
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1433
1295
|
children: n.message
|
|
1434
|
-
}) : e ? /* @__PURE__ */ q(
|
|
1296
|
+
}) : e ? /* @__PURE__ */ q(g, {
|
|
1435
1297
|
code: i,
|
|
1436
1298
|
language: "sql",
|
|
1437
1299
|
title: a,
|
|
1438
1300
|
height: o,
|
|
1439
1301
|
headerRight: s
|
|
1440
|
-
}) : /* @__PURE__ */ q(
|
|
1302
|
+
}) : /* @__PURE__ */ q(Nt, {
|
|
1441
1303
|
title: a,
|
|
1442
1304
|
height: o,
|
|
1443
1305
|
className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm",
|
|
1444
1306
|
children: r
|
|
1445
1307
|
});
|
|
1446
1308
|
}
|
|
1447
|
-
function
|
|
1309
|
+
function Ft({ summary: e }) {
|
|
1448
1310
|
let { t } = z();
|
|
1449
1311
|
return /* @__PURE__ */ J("div", {
|
|
1450
1312
|
className: "dc:flex dc:flex-wrap dc:items-center dc:gap-2",
|
|
@@ -1476,7 +1338,7 @@ function It({ summary: e }) {
|
|
|
1476
1338
|
]
|
|
1477
1339
|
});
|
|
1478
1340
|
}
|
|
1479
|
-
function
|
|
1341
|
+
function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
|
|
1480
1342
|
let { t: a } = z();
|
|
1481
1343
|
return e ? /* @__PURE__ */ q("div", {
|
|
1482
1344
|
className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
|
|
@@ -1491,7 +1353,7 @@ function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1491
1353
|
}) : n ? /* @__PURE__ */ J("div", {
|
|
1492
1354
|
className: "dc:space-y-3",
|
|
1493
1355
|
children: [
|
|
1494
|
-
/* @__PURE__ */ q(
|
|
1356
|
+
/* @__PURE__ */ q(Ft, { summary: n.summary }),
|
|
1495
1357
|
n.summary.usedIndexes.length > 0 && /* @__PURE__ */ J("div", {
|
|
1496
1358
|
className: "dc:text-xs text-dc-text-muted",
|
|
1497
1359
|
children: [
|
|
@@ -1500,7 +1362,7 @@ function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1500
1362
|
n.summary.usedIndexes.join(", ")
|
|
1501
1363
|
]
|
|
1502
1364
|
}),
|
|
1503
|
-
/* @__PURE__ */ q(
|
|
1365
|
+
/* @__PURE__ */ q(g, {
|
|
1504
1366
|
code: n.raw,
|
|
1505
1367
|
language: "sql",
|
|
1506
1368
|
title: a("debug.executionPlanTitle", { database: n.summary.database }),
|
|
@@ -1512,7 +1374,7 @@ function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1512
1374
|
}
|
|
1513
1375
|
//#endregion
|
|
1514
1376
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
|
|
1515
|
-
var
|
|
1377
|
+
var Lt = xe(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" }) {
|
|
1516
1378
|
let { t: v } = z(), [y, b] = G(!1), [x, S] = G(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
|
|
1517
1379
|
f && i && h && (f(i, h), S(!0));
|
|
1518
1380
|
}, T = () => {
|
|
@@ -1529,7 +1391,7 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1529
1391
|
return /* @__PURE__ */ J("div", {
|
|
1530
1392
|
className: "dc:space-y-3",
|
|
1531
1393
|
children: [
|
|
1532
|
-
/* @__PURE__ */ q(
|
|
1394
|
+
/* @__PURE__ */ q(Pt, {
|
|
1533
1395
|
sql: e,
|
|
1534
1396
|
sqlLoading: t,
|
|
1535
1397
|
sqlError: n,
|
|
@@ -1552,7 +1414,7 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1552
1414
|
children: v(a ? "debug.explainRunning" : "debug.explainPlan")
|
|
1553
1415
|
})] })
|
|
1554
1416
|
}),
|
|
1555
|
-
o && /* @__PURE__ */ q("div", { children: /* @__PURE__ */ q(
|
|
1417
|
+
o && /* @__PURE__ */ q("div", { children: /* @__PURE__ */ q(It, {
|
|
1556
1418
|
explainLoading: a,
|
|
1557
1419
|
explainError: s,
|
|
1558
1420
|
explainResult: i,
|
|
@@ -1567,7 +1429,7 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1567
1429
|
d.message
|
|
1568
1430
|
]
|
|
1569
1431
|
}),
|
|
1570
|
-
x && l && /* @__PURE__ */ q(
|
|
1432
|
+
x && l && /* @__PURE__ */ q(it, {
|
|
1571
1433
|
analysis: l,
|
|
1572
1434
|
onClose: T
|
|
1573
1435
|
})
|
|
@@ -1576,7 +1438,7 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1576
1438
|
});
|
|
1577
1439
|
//#endregion
|
|
1578
1440
|
//#region src/client/adapters/queryModeAdapter.ts
|
|
1579
|
-
function
|
|
1441
|
+
function Rt() {
|
|
1580
1442
|
return {
|
|
1581
1443
|
metrics: [],
|
|
1582
1444
|
breakdowns: [],
|
|
@@ -1587,10 +1449,10 @@ function zt() {
|
|
|
1587
1449
|
validationError: null
|
|
1588
1450
|
};
|
|
1589
1451
|
}
|
|
1590
|
-
function
|
|
1452
|
+
function zt(e) {
|
|
1591
1453
|
return e.map((e) => e.field);
|
|
1592
1454
|
}
|
|
1593
|
-
function
|
|
1455
|
+
function Bt(e, t) {
|
|
1594
1456
|
let n = [], r = [];
|
|
1595
1457
|
for (let i of e) if (i.isTimeDimension) {
|
|
1596
1458
|
let e = {
|
|
@@ -1598,7 +1460,7 @@ function Vt(e, t) {
|
|
|
1598
1460
|
granularity: i.granularity || "day"
|
|
1599
1461
|
};
|
|
1600
1462
|
if (i.enableComparison) {
|
|
1601
|
-
let n =
|
|
1463
|
+
let n = Ce(i.field, t);
|
|
1602
1464
|
n && (e.compareDateRange = n);
|
|
1603
1465
|
}
|
|
1604
1466
|
r.push(e);
|
|
@@ -1608,31 +1470,31 @@ function Vt(e, t) {
|
|
|
1608
1470
|
timeDimensions: r
|
|
1609
1471
|
};
|
|
1610
1472
|
}
|
|
1611
|
-
function
|
|
1612
|
-
let { dimensions: t, timeDimensions: n } =
|
|
1613
|
-
measures:
|
|
1473
|
+
function Vt(e) {
|
|
1474
|
+
let { dimensions: t, timeDimensions: n } = Bt(e.breakdowns, e.filters), r = {
|
|
1475
|
+
measures: zt(e.metrics),
|
|
1614
1476
|
dimensions: t
|
|
1615
1477
|
};
|
|
1616
1478
|
return n.length > 0 && (r.timeDimensions = n), e.filters.length > 0 && (r.filters = e.filters), e.order && Object.keys(e.order).length > 0 && (r.order = e.order), e.limit != null && (r.limit = e.limit), r;
|
|
1617
1479
|
}
|
|
1618
|
-
function
|
|
1480
|
+
function Ht(e) {
|
|
1619
1481
|
return e.map((e, t) => ({
|
|
1620
|
-
id:
|
|
1482
|
+
id: h(),
|
|
1621
1483
|
field: e,
|
|
1622
|
-
label:
|
|
1484
|
+
label: m(t)
|
|
1623
1485
|
}));
|
|
1624
1486
|
}
|
|
1625
|
-
function
|
|
1487
|
+
function Ut(e) {
|
|
1626
1488
|
let t = [];
|
|
1627
1489
|
if (e.dimensions) for (let n of e.dimensions) t.push({
|
|
1628
|
-
id:
|
|
1490
|
+
id: h(),
|
|
1629
1491
|
field: n,
|
|
1630
1492
|
isTimeDimension: !1
|
|
1631
1493
|
});
|
|
1632
1494
|
if (e.timeDimensions) for (let n of e.timeDimensions) {
|
|
1633
1495
|
let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
|
|
1634
1496
|
t.push({
|
|
1635
|
-
id:
|
|
1497
|
+
id: h(),
|
|
1636
1498
|
field: n.dimension,
|
|
1637
1499
|
granularity: n.granularity,
|
|
1638
1500
|
isTimeDimension: !0,
|
|
@@ -1641,10 +1503,10 @@ function Wt(e) {
|
|
|
1641
1503
|
}
|
|
1642
1504
|
return t;
|
|
1643
1505
|
}
|
|
1644
|
-
function
|
|
1506
|
+
function Wt(e) {
|
|
1645
1507
|
return {
|
|
1646
|
-
metrics:
|
|
1647
|
-
breakdowns:
|
|
1508
|
+
metrics: Ht(e.measures || []),
|
|
1509
|
+
breakdowns: Ut(e),
|
|
1648
1510
|
filters: e.filters || [],
|
|
1649
1511
|
order: e.order,
|
|
1650
1512
|
limit: e.limit,
|
|
@@ -1652,14 +1514,14 @@ function Gt(e) {
|
|
|
1652
1514
|
validationError: null
|
|
1653
1515
|
};
|
|
1654
1516
|
}
|
|
1655
|
-
function
|
|
1517
|
+
function Gt(e) {
|
|
1656
1518
|
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
|
|
1657
1519
|
}
|
|
1658
1520
|
var X = {
|
|
1659
1521
|
type: "query",
|
|
1660
1522
|
createInitial() {
|
|
1661
1523
|
return {
|
|
1662
|
-
queryStates: [
|
|
1524
|
+
queryStates: [Rt()],
|
|
1663
1525
|
activeQueryIndex: 0,
|
|
1664
1526
|
mergeStrategy: "concat"
|
|
1665
1527
|
};
|
|
@@ -1679,22 +1541,22 @@ var X = {
|
|
|
1679
1541
|
load(e) {
|
|
1680
1542
|
if (e.analysisType !== "query") throw Error(`Cannot load ${e.analysisType} config with query adapter`);
|
|
1681
1543
|
let t = e;
|
|
1682
|
-
if (
|
|
1683
|
-
let e = t.query, n = e.queries.map(
|
|
1684
|
-
return n.length === 0 && n.push(
|
|
1544
|
+
if (Gt(t.query)) {
|
|
1545
|
+
let e = t.query, n = e.queries.map(Wt);
|
|
1546
|
+
return n.length === 0 && n.push(Rt()), {
|
|
1685
1547
|
queryStates: n,
|
|
1686
1548
|
activeQueryIndex: 0,
|
|
1687
1549
|
mergeStrategy: e.mergeStrategy || "concat"
|
|
1688
1550
|
};
|
|
1689
1551
|
}
|
|
1690
1552
|
return {
|
|
1691
|
-
queryStates: [
|
|
1553
|
+
queryStates: [Wt(t.query)],
|
|
1692
1554
|
activeQueryIndex: 0,
|
|
1693
1555
|
mergeStrategy: "concat"
|
|
1694
1556
|
};
|
|
1695
1557
|
},
|
|
1696
1558
|
save(e, t, n) {
|
|
1697
|
-
let r = e.queryStates.map(
|
|
1559
|
+
let r = e.queryStates.map(Vt), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
|
|
1698
1560
|
queries: r,
|
|
1699
1561
|
mergeStrategy: e.mergeStrategy
|
|
1700
1562
|
};
|
|
@@ -1735,36 +1597,36 @@ var X = {
|
|
|
1735
1597
|
}
|
|
1736
1598
|
};
|
|
1737
1599
|
}
|
|
1738
|
-
}, Z = /* @__PURE__ */ new Map(),
|
|
1739
|
-
function
|
|
1740
|
-
|
|
1600
|
+
}, Z = /* @__PURE__ */ new Map(), Kt = !1;
|
|
1601
|
+
function qt() {
|
|
1602
|
+
Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", S), Z.has("flow") || Z.set("flow", x), Z.has("retention") || Z.set("retention", T), !0);
|
|
1741
1603
|
}
|
|
1742
1604
|
var Q = {
|
|
1743
1605
|
register(e) {
|
|
1744
1606
|
Z.has(e.type) && console.warn(`[adapterRegistry] Overwriting existing adapter for type: ${e.type}`), Z.set(e.type, e);
|
|
1745
1607
|
},
|
|
1746
1608
|
get(e) {
|
|
1747
|
-
|
|
1609
|
+
qt();
|
|
1748
1610
|
let t = Z.get(e);
|
|
1749
1611
|
if (!t) throw Error(`[adapterRegistry] No adapter registered for type: ${e}. Available types: ${Array.from(Z.keys()).join(", ") || "none"}`);
|
|
1750
1612
|
return t;
|
|
1751
1613
|
},
|
|
1752
1614
|
has(e) {
|
|
1753
|
-
return
|
|
1615
|
+
return qt(), Z.has(e);
|
|
1754
1616
|
},
|
|
1755
1617
|
getRegisteredTypes() {
|
|
1756
|
-
return
|
|
1618
|
+
return qt(), Array.from(Z.keys());
|
|
1757
1619
|
},
|
|
1758
1620
|
clear() {
|
|
1759
|
-
Z.clear(),
|
|
1621
|
+
Z.clear(), Kt = !1;
|
|
1760
1622
|
}
|
|
1761
|
-
},
|
|
1623
|
+
}, Jt = () => ({
|
|
1762
1624
|
analysisType: "query",
|
|
1763
1625
|
charts: {
|
|
1764
1626
|
query: X.getDefaultChartConfig(),
|
|
1765
|
-
funnel:
|
|
1766
|
-
flow:
|
|
1767
|
-
retention:
|
|
1627
|
+
funnel: S.getDefaultChartConfig(),
|
|
1628
|
+
flow: x.getDefaultChartConfig(),
|
|
1629
|
+
retention: T.getDefaultChartConfig()
|
|
1768
1630
|
},
|
|
1769
1631
|
activeViews: {
|
|
1770
1632
|
query: "chart",
|
|
@@ -1774,8 +1636,8 @@ var Q = {
|
|
|
1774
1636
|
},
|
|
1775
1637
|
userManuallySelectedChart: !1,
|
|
1776
1638
|
localPaletteName: "default"
|
|
1777
|
-
}),
|
|
1778
|
-
...
|
|
1639
|
+
}), Yt = (e, t, n) => ({
|
|
1640
|
+
...Jt(),
|
|
1779
1641
|
setAnalysisType: (t) => {
|
|
1780
1642
|
e((e) => {
|
|
1781
1643
|
let n = { ...e.charts };
|
|
@@ -1988,12 +1850,12 @@ var Q = {
|
|
|
1988
1850
|
...u
|
|
1989
1851
|
});
|
|
1990
1852
|
}
|
|
1991
|
-
}),
|
|
1853
|
+
}), Xt = () => ({
|
|
1992
1854
|
queryStates: [Y()],
|
|
1993
1855
|
activeQueryIndex: 0,
|
|
1994
1856
|
mergeStrategy: "concat"
|
|
1995
|
-
}),
|
|
1996
|
-
...
|
|
1857
|
+
}), Zt = (e, t, n) => ({
|
|
1858
|
+
...Xt(),
|
|
1997
1859
|
setQueryStates: (t) => e({ queryStates: t }),
|
|
1998
1860
|
updateQueryState: (t, n) => e((e) => {
|
|
1999
1861
|
let r = [...e.queryStates];
|
|
@@ -2023,9 +1885,9 @@ var Q = {
|
|
|
2023
1885
|
}),
|
|
2024
1886
|
addMetric: (t, n) => e((e) => {
|
|
2025
1887
|
let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || Y(), o = {
|
|
2026
|
-
id:
|
|
1888
|
+
id: h(),
|
|
2027
1889
|
field: t,
|
|
2028
|
-
label: n ||
|
|
1890
|
+
label: n || m(a.metrics.length)
|
|
2029
1891
|
};
|
|
2030
1892
|
return i[r] = {
|
|
2031
1893
|
...a,
|
|
@@ -2048,9 +1910,9 @@ var Q = {
|
|
|
2048
1910
|
};
|
|
2049
1911
|
else {
|
|
2050
1912
|
let e = {
|
|
2051
|
-
id:
|
|
1913
|
+
id: h(),
|
|
2052
1914
|
field: t,
|
|
2053
|
-
label:
|
|
1915
|
+
label: m(i.metrics.length)
|
|
2054
1916
|
};
|
|
2055
1917
|
r[n] = {
|
|
2056
1918
|
...i,
|
|
@@ -2070,7 +1932,7 @@ var Q = {
|
|
|
2070
1932
|
let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || Y();
|
|
2071
1933
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
2072
1934
|
let s = {
|
|
2073
|
-
id:
|
|
1935
|
+
id: h(),
|
|
2074
1936
|
field: t,
|
|
2075
1937
|
isTimeDimension: n,
|
|
2076
1938
|
granularity: n ? r || "month" : void 0
|
|
@@ -2097,7 +1959,7 @@ var Q = {
|
|
|
2097
1959
|
else {
|
|
2098
1960
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
2099
1961
|
let s = {
|
|
2100
|
-
id:
|
|
1962
|
+
id: h(),
|
|
2101
1963
|
field: t,
|
|
2102
1964
|
isTimeDimension: n,
|
|
2103
1965
|
granularity: n ? r || "month" : void 0
|
|
@@ -2234,11 +2096,11 @@ var Q = {
|
|
|
2234
2096
|
},
|
|
2235
2097
|
buildCurrentQuery: () => {
|
|
2236
2098
|
let e = t(), n = e.queryStates[e.activeQueryIndex] || Y(), r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2237
|
-
return
|
|
2099
|
+
return Te(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r);
|
|
2238
2100
|
},
|
|
2239
2101
|
buildAllQueries: () => {
|
|
2240
2102
|
let e = t(), n = e.queryStates[0]?.breakdowns || [], r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2241
|
-
return e.queryStates.map((t, i) =>
|
|
2103
|
+
return e.queryStates.map((t, i) => Te(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r));
|
|
2242
2104
|
},
|
|
2243
2105
|
buildMultiQueryConfig: () => {
|
|
2244
2106
|
let e = t();
|
|
@@ -2251,18 +2113,18 @@ var Q = {
|
|
|
2251
2113
|
queryLabels: n.map((e, t) => `Q${t + 1}`)
|
|
2252
2114
|
};
|
|
2253
2115
|
}
|
|
2254
|
-
}),
|
|
2116
|
+
}), Qt = () => ({
|
|
2255
2117
|
funnelCube: null,
|
|
2256
2118
|
funnelSteps: [],
|
|
2257
2119
|
activeFunnelStepIndex: 0,
|
|
2258
2120
|
funnelTimeDimension: null,
|
|
2259
2121
|
funnelBindingKey: null,
|
|
2260
2122
|
stepTimeToConvert: []
|
|
2261
|
-
}),
|
|
2262
|
-
|
|
2123
|
+
}), $t = (e, t, n) => ({
|
|
2124
|
+
...Qt(),
|
|
2263
2125
|
addFunnelStep: () => e((e) => {
|
|
2264
2126
|
let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
|
|
2265
|
-
id:
|
|
2127
|
+
id: h(),
|
|
2266
2128
|
name: `Step ${e.funnelSteps.length + 1}`,
|
|
2267
2129
|
cube: e.funnelCube || "",
|
|
2268
2130
|
filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
|
|
@@ -2327,7 +2189,7 @@ var Q = {
|
|
|
2327
2189
|
let e = t();
|
|
2328
2190
|
return e.analysisType !== "funnel" || !e.funnelBindingKey || !e.funnelTimeDimension || e.funnelSteps.length < 2 ? !1 : e.funnelSteps.filter((e) => e.cube && e.name).length >= 2;
|
|
2329
2191
|
}
|
|
2330
|
-
}),
|
|
2192
|
+
}), en = () => ({
|
|
2331
2193
|
flowCube: null,
|
|
2332
2194
|
flowBindingKey: null,
|
|
2333
2195
|
flowTimeDimension: null,
|
|
@@ -2339,8 +2201,8 @@ var Q = {
|
|
|
2339
2201
|
stepsAfter: 3,
|
|
2340
2202
|
eventDimension: null,
|
|
2341
2203
|
joinStrategy: "auto"
|
|
2342
|
-
}),
|
|
2343
|
-
...
|
|
2204
|
+
}), tn = (e, t, n) => ({
|
|
2205
|
+
...en(),
|
|
2344
2206
|
setFlowCube: (t) => e(() => ({
|
|
2345
2207
|
flowCube: t,
|
|
2346
2208
|
flowBindingKey: null,
|
|
@@ -2410,8 +2272,8 @@ var Q = {
|
|
|
2410
2272
|
joinStrategy: e.joinStrategy
|
|
2411
2273
|
} };
|
|
2412
2274
|
}
|
|
2413
|
-
}),
|
|
2414
|
-
...
|
|
2275
|
+
}), nn = () => ({ ...ee }), rn = (e, t, n) => ({
|
|
2276
|
+
...nn(),
|
|
2415
2277
|
setRetentionCube: (t) => e(() => ({
|
|
2416
2278
|
retentionCube: t,
|
|
2417
2279
|
retentionTimeDimension: null,
|
|
@@ -2486,22 +2348,22 @@ var Q = {
|
|
|
2486
2348
|
warnings: r
|
|
2487
2349
|
};
|
|
2488
2350
|
}
|
|
2489
|
-
}),
|
|
2351
|
+
}), an = {
|
|
2490
2352
|
isOpen: !1,
|
|
2491
2353
|
userPrompt: "",
|
|
2492
2354
|
isGenerating: !1,
|
|
2493
2355
|
error: null,
|
|
2494
2356
|
hasGeneratedQuery: !1,
|
|
2495
2357
|
previousState: null
|
|
2496
|
-
},
|
|
2358
|
+
}, on = () => ({
|
|
2497
2359
|
activeTab: "query",
|
|
2498
2360
|
activeView: "chart",
|
|
2499
2361
|
displayLimit: 100,
|
|
2500
2362
|
showFieldModal: !1,
|
|
2501
2363
|
fieldModalMode: "metrics",
|
|
2502
|
-
aiState:
|
|
2503
|
-
}),
|
|
2504
|
-
...
|
|
2364
|
+
aiState: an
|
|
2365
|
+
}), sn = (e, t, n) => ({
|
|
2366
|
+
...on(),
|
|
2505
2367
|
setActiveTab: (t) => e({ activeTab: t }),
|
|
2506
2368
|
setActiveView: (t) => e((e) => ({
|
|
2507
2369
|
activeView: t,
|
|
@@ -2585,19 +2447,19 @@ var Q = {
|
|
|
2585
2447
|
displayConfig: t.displayConfig
|
|
2586
2448
|
}
|
|
2587
2449
|
},
|
|
2588
|
-
aiState: { ...
|
|
2450
|
+
aiState: { ...an }
|
|
2589
2451
|
};
|
|
2590
2452
|
})
|
|
2591
2453
|
});
|
|
2592
2454
|
//#endregion
|
|
2593
2455
|
//#region src/client/stores/optionsToAnalysisConfig.ts
|
|
2594
|
-
function
|
|
2456
|
+
function cn(e) {
|
|
2595
2457
|
let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
|
|
2596
|
-
id:
|
|
2458
|
+
id: h(),
|
|
2597
2459
|
field: e,
|
|
2598
2460
|
isTimeDimension: !1
|
|
2599
2461
|
})), ...n.map((e) => ({
|
|
2600
|
-
id:
|
|
2462
|
+
id: h(),
|
|
2601
2463
|
field: e.dimension,
|
|
2602
2464
|
granularity: e.granularity,
|
|
2603
2465
|
isTimeDimension: !0,
|
|
@@ -2625,19 +2487,19 @@ function ln(e) {
|
|
|
2625
2487
|
return {
|
|
2626
2488
|
...Y(),
|
|
2627
2489
|
metrics: (e.measures || []).map((e, t) => ({
|
|
2628
|
-
id:
|
|
2490
|
+
id: h(),
|
|
2629
2491
|
field: e,
|
|
2630
|
-
label:
|
|
2492
|
+
label: m(t)
|
|
2631
2493
|
})),
|
|
2632
2494
|
breakdowns: r,
|
|
2633
2495
|
filters: i,
|
|
2634
2496
|
order: e.order
|
|
2635
2497
|
};
|
|
2636
2498
|
}
|
|
2637
|
-
function
|
|
2499
|
+
function ln(e) {
|
|
2638
2500
|
return "queries" in e && Array.isArray(e.queries);
|
|
2639
2501
|
}
|
|
2640
|
-
function
|
|
2502
|
+
function un(e, t) {
|
|
2641
2503
|
let n = e.getDefaultChartConfig();
|
|
2642
2504
|
return {
|
|
2643
2505
|
chartType: t?.chartType || n.chartType,
|
|
@@ -2645,22 +2507,22 @@ function dn(e, t) {
|
|
|
2645
2507
|
displayConfig: t?.displayConfig || n.displayConfig
|
|
2646
2508
|
};
|
|
2647
2509
|
}
|
|
2648
|
-
function
|
|
2510
|
+
function dn(e) {
|
|
2649
2511
|
return e.initialActiveView || "chart";
|
|
2650
2512
|
}
|
|
2651
|
-
function
|
|
2652
|
-
let t =
|
|
2653
|
-
return
|
|
2513
|
+
function fn(e) {
|
|
2514
|
+
let t = un(S, e.initialChartConfig), n = e.initialFunnelState ?? {};
|
|
2515
|
+
return S.save({
|
|
2654
2516
|
funnelCube: n.funnelCube ?? null,
|
|
2655
2517
|
funnelSteps: n.funnelSteps || [],
|
|
2656
2518
|
activeFunnelStepIndex: 0,
|
|
2657
2519
|
funnelTimeDimension: n.funnelTimeDimension ?? null,
|
|
2658
2520
|
funnelBindingKey: n.funnelBindingKey ?? null
|
|
2659
|
-
}, { funnel: t },
|
|
2521
|
+
}, { funnel: t }, dn(e));
|
|
2660
2522
|
}
|
|
2661
|
-
function
|
|
2662
|
-
let t =
|
|
2663
|
-
return
|
|
2523
|
+
function pn(e) {
|
|
2524
|
+
let t = un(x, e.initialChartConfig), n = e.initialFlowState ?? {};
|
|
2525
|
+
return x.save({
|
|
2664
2526
|
flowCube: n.flowCube ?? null,
|
|
2665
2527
|
flowBindingKey: n.flowBindingKey ?? null,
|
|
2666
2528
|
flowTimeDimension: n.flowTimeDimension ?? null,
|
|
@@ -2672,11 +2534,11 @@ function mn(e) {
|
|
|
2672
2534
|
stepsAfter: n.stepsAfter ?? 3,
|
|
2673
2535
|
eventDimension: n.eventDimension ?? null,
|
|
2674
2536
|
joinStrategy: n.joinStrategy ?? "auto"
|
|
2675
|
-
}, { flow: t },
|
|
2537
|
+
}, { flow: t }, dn(e));
|
|
2676
2538
|
}
|
|
2677
|
-
function
|
|
2678
|
-
let t =
|
|
2679
|
-
return
|
|
2539
|
+
function mn(e) {
|
|
2540
|
+
let t = un(T, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = A(te);
|
|
2541
|
+
return T.save({
|
|
2680
2542
|
retentionCube: n.retentionCube ?? null,
|
|
2681
2543
|
retentionBindingKey: n.retentionBindingKey ?? null,
|
|
2682
2544
|
retentionTimeDimension: n.retentionTimeDimension ?? null,
|
|
@@ -2687,52 +2549,52 @@ function hn(e) {
|
|
|
2687
2549
|
retentionViewGranularity: n.retentionViewGranularity ?? "week",
|
|
2688
2550
|
retentionPeriods: n.retentionPeriods ?? 12,
|
|
2689
2551
|
retentionType: n.retentionType ?? "classic"
|
|
2690
|
-
}, { retention: t },
|
|
2552
|
+
}, { retention: t }, dn(e));
|
|
2691
2553
|
}
|
|
2692
|
-
function
|
|
2554
|
+
function hn(e, t) {
|
|
2693
2555
|
let n, r = "concat";
|
|
2694
|
-
|
|
2695
|
-
let i =
|
|
2556
|
+
ln(t) ? (n = t.queries.map(cn), t.mergeStrategy && (r = t.mergeStrategy)) : n = [cn(t)];
|
|
2557
|
+
let i = un(X, e.initialChartConfig);
|
|
2696
2558
|
return X.save({
|
|
2697
2559
|
queryStates: n,
|
|
2698
2560
|
activeQueryIndex: 0,
|
|
2699
2561
|
mergeStrategy: r
|
|
2700
|
-
}, { query: i },
|
|
2562
|
+
}, { query: i }, dn(e));
|
|
2701
2563
|
}
|
|
2702
|
-
function
|
|
2703
|
-
let t =
|
|
2564
|
+
function gn(e) {
|
|
2565
|
+
let t = un(X, e.initialChartConfig);
|
|
2704
2566
|
return X.save({
|
|
2705
2567
|
queryStates: [Y()],
|
|
2706
2568
|
activeQueryIndex: 0,
|
|
2707
2569
|
mergeStrategy: "concat"
|
|
2708
|
-
}, { query: t },
|
|
2570
|
+
}, { query: t }, dn(e));
|
|
2709
2571
|
}
|
|
2710
|
-
function
|
|
2572
|
+
function _n(e) {
|
|
2711
2573
|
return X.save({
|
|
2712
2574
|
queryStates: [Y()],
|
|
2713
2575
|
activeQueryIndex: 0,
|
|
2714
2576
|
mergeStrategy: "concat"
|
|
2715
2577
|
}, { query: X.getDefaultChartConfig() }, e.initialActiveView);
|
|
2716
2578
|
}
|
|
2717
|
-
function
|
|
2718
|
-
return e.initialAnalysisType === "funnel" && e.initialFunnelState ?
|
|
2579
|
+
function vn(e) {
|
|
2580
|
+
return e.initialAnalysisType === "funnel" && e.initialFunnelState ? fn(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? pn(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? mn(e) : e.initialQuery ? hn(e, e.initialQuery) : e.initialChartConfig ? gn(e) : e.initialActiveView ? _n(e) : null;
|
|
2719
2581
|
}
|
|
2720
2582
|
//#endregion
|
|
2721
2583
|
//#region src/client/stores/analysisBuilderStore.tsx
|
|
2722
|
-
function
|
|
2584
|
+
function yn(e, t) {
|
|
2723
2585
|
return {
|
|
2724
2586
|
reset: () => {
|
|
2725
2587
|
e({
|
|
2726
|
-
...
|
|
2727
|
-
...
|
|
2728
|
-
|
|
2729
|
-
...
|
|
2730
|
-
...
|
|
2588
|
+
...Jt(),
|
|
2589
|
+
...Xt(),
|
|
2590
|
+
...Qt(),
|
|
2591
|
+
...en(),
|
|
2592
|
+
...nn(),
|
|
2731
2593
|
charts: {
|
|
2732
2594
|
query: X.getDefaultChartConfig(),
|
|
2733
|
-
funnel:
|
|
2734
|
-
flow:
|
|
2735
|
-
retention:
|
|
2595
|
+
funnel: S.getDefaultChartConfig(),
|
|
2596
|
+
flow: x.getDefaultChartConfig(),
|
|
2597
|
+
retention: T.getDefaultChartConfig()
|
|
2736
2598
|
},
|
|
2737
2599
|
activeViews: {
|
|
2738
2600
|
query: "chart",
|
|
@@ -2745,28 +2607,28 @@ function bn(e, t) {
|
|
|
2745
2607
|
clearCurrentMode: () => e((e) => {
|
|
2746
2608
|
switch (e.analysisType) {
|
|
2747
2609
|
case "funnel": return {
|
|
2748
|
-
|
|
2610
|
+
...Qt(),
|
|
2749
2611
|
charts: {
|
|
2750
2612
|
...e.charts,
|
|
2751
|
-
funnel:
|
|
2613
|
+
funnel: S.getDefaultChartConfig()
|
|
2752
2614
|
}
|
|
2753
2615
|
};
|
|
2754
2616
|
case "flow": return {
|
|
2755
|
-
...
|
|
2617
|
+
...en(),
|
|
2756
2618
|
charts: {
|
|
2757
2619
|
...e.charts,
|
|
2758
|
-
flow:
|
|
2620
|
+
flow: x.getDefaultChartConfig()
|
|
2759
2621
|
}
|
|
2760
2622
|
};
|
|
2761
2623
|
case "retention": return {
|
|
2762
|
-
...
|
|
2624
|
+
...nn(),
|
|
2763
2625
|
charts: {
|
|
2764
2626
|
...e.charts,
|
|
2765
|
-
retention:
|
|
2627
|
+
retention: T.getDefaultChartConfig()
|
|
2766
2628
|
}
|
|
2767
2629
|
};
|
|
2768
2630
|
default: return {
|
|
2769
|
-
...
|
|
2631
|
+
...Xt(),
|
|
2770
2632
|
userManuallySelectedChart: !1,
|
|
2771
2633
|
charts: {
|
|
2772
2634
|
...e.charts,
|
|
@@ -2792,15 +2654,15 @@ function bn(e, t) {
|
|
|
2792
2654
|
}
|
|
2793
2655
|
};
|
|
2794
2656
|
}
|
|
2795
|
-
function
|
|
2796
|
-
let r =
|
|
2797
|
-
...
|
|
2798
|
-
...
|
|
2799
|
-
|
|
2800
|
-
...
|
|
2801
|
-
...
|
|
2802
|
-
...
|
|
2803
|
-
...
|
|
2657
|
+
function bn(n = {}) {
|
|
2658
|
+
let r = vn(n), o = (e, t, n) => ({
|
|
2659
|
+
...Yt(e, t, n),
|
|
2660
|
+
...Zt(e, t, n),
|
|
2661
|
+
...$t(e, t, n),
|
|
2662
|
+
...tn(e, t, n),
|
|
2663
|
+
...rn(e, t, n),
|
|
2664
|
+
...sn(e, t, n),
|
|
2665
|
+
...yn(e, t)
|
|
2804
2666
|
});
|
|
2805
2667
|
if (n.disableLocalStorage) {
|
|
2806
2668
|
let t = a()(i(e(o), { name: "AnalysisBuilderStore (no-persist)" }));
|
|
@@ -2809,10 +2671,10 @@ function xn(n = {}) {
|
|
|
2809
2671
|
return a()(i(e(t(o, {
|
|
2810
2672
|
name: n.storageKey || "drizzle-cube-analysis-builder-v3",
|
|
2811
2673
|
partialize: (e) => e.saveWorkspace(),
|
|
2812
|
-
merge: (e, t) => e &&
|
|
2674
|
+
merge: (e, t) => e && M(e) ? {
|
|
2813
2675
|
...t,
|
|
2814
2676
|
_persistedWorkspace: e
|
|
2815
|
-
} : e &&
|
|
2677
|
+
} : e && j(e) ? {
|
|
2816
2678
|
...t,
|
|
2817
2679
|
_persistedConfig: e
|
|
2818
2680
|
} : r ? {
|
|
@@ -2835,10 +2697,10 @@ function xn(n = {}) {
|
|
|
2835
2697
|
}
|
|
2836
2698
|
})), { name: "AnalysisBuilderStore" }));
|
|
2837
2699
|
}
|
|
2838
|
-
var
|
|
2839
|
-
function
|
|
2700
|
+
var xn = be(null);
|
|
2701
|
+
function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
|
|
2840
2702
|
let u = W(null);
|
|
2841
|
-
return u.current ||=
|
|
2703
|
+
return u.current ||= bn({
|
|
2842
2704
|
initialQuery: t,
|
|
2843
2705
|
initialChartConfig: n,
|
|
2844
2706
|
disableLocalStorage: r,
|
|
@@ -2848,22 +2710,22 @@ function Cn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
|
|
|
2848
2710
|
initialFlowState: s,
|
|
2849
2711
|
initialRetentionState: c,
|
|
2850
2712
|
initialActiveView: l
|
|
2851
|
-
}), /* @__PURE__ */ q(
|
|
2713
|
+
}), /* @__PURE__ */ q(xn.Provider, {
|
|
2852
2714
|
value: u.current,
|
|
2853
2715
|
children: e
|
|
2854
2716
|
});
|
|
2855
2717
|
}
|
|
2856
2718
|
function $(e) {
|
|
2857
|
-
let t =
|
|
2719
|
+
let t = Se(xn);
|
|
2858
2720
|
if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
|
|
2859
2721
|
return r(t, e);
|
|
2860
2722
|
}
|
|
2861
|
-
function
|
|
2862
|
-
let e =
|
|
2723
|
+
function Cn() {
|
|
2724
|
+
let e = Se(xn);
|
|
2863
2725
|
if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
|
|
2864
2726
|
return e;
|
|
2865
2727
|
}
|
|
2866
|
-
var
|
|
2728
|
+
var wn = (e) => e.queryStates[e.activeQueryIndex] || Y(), Tn = (e) => wn(e).metrics, En = (e) => wn(e).breakdowns, Dn = (e) => wn(e).filters, On = (e) => {
|
|
2867
2729
|
let t = e.charts[e.analysisType];
|
|
2868
2730
|
return t ? {
|
|
2869
2731
|
chartType: t.chartType,
|
|
@@ -2878,18 +2740,18 @@ var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metr
|
|
|
2878
2740
|
showTooltip: !0
|
|
2879
2741
|
}
|
|
2880
2742
|
};
|
|
2881
|
-
},
|
|
2743
|
+
}, kn = (e) => ({
|
|
2882
2744
|
activeTab: e.activeTab,
|
|
2883
2745
|
activeView: e.activeView,
|
|
2884
2746
|
displayLimit: e.displayLimit,
|
|
2885
2747
|
showFieldModal: e.showFieldModal,
|
|
2886
2748
|
fieldModalMode: e.fieldModalMode
|
|
2887
|
-
}),
|
|
2749
|
+
}), An = (e) => ({
|
|
2888
2750
|
queryStates: e.queryStates,
|
|
2889
2751
|
activeQueryIndex: e.activeQueryIndex,
|
|
2890
2752
|
mergeStrategy: e.mergeStrategy,
|
|
2891
2753
|
isMultiQueryMode: e.analysisType === "query" && e.queryStates.length > 1
|
|
2892
|
-
}),
|
|
2754
|
+
}), jn = (e) => ({
|
|
2893
2755
|
funnelCube: e.funnelCube,
|
|
2894
2756
|
funnelSteps: e.funnelSteps,
|
|
2895
2757
|
activeFunnelStepIndex: e.activeFunnelStepIndex,
|
|
@@ -2900,16 +2762,16 @@ var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metr
|
|
|
2900
2762
|
});
|
|
2901
2763
|
//#endregion
|
|
2902
2764
|
//#region src/client/utils/multiQueryValidation.ts
|
|
2903
|
-
function
|
|
2765
|
+
function Mn(e) {
|
|
2904
2766
|
return e.timeDimensions || [];
|
|
2905
2767
|
}
|
|
2906
|
-
function
|
|
2768
|
+
function Nn(e) {
|
|
2907
2769
|
let t = [];
|
|
2908
2770
|
if (e.length < 2) return t;
|
|
2909
|
-
let n =
|
|
2771
|
+
let n = Mn(e[0]);
|
|
2910
2772
|
if (n.length === 0) return t;
|
|
2911
2773
|
for (let r = 1; r < e.length; r++) {
|
|
2912
|
-
let i =
|
|
2774
|
+
let i = Mn(e[r]);
|
|
2913
2775
|
if (i.length === 0 && n.length > 0) {
|
|
2914
2776
|
t.push({
|
|
2915
2777
|
type: "missing_time_dimension",
|
|
@@ -2935,7 +2797,7 @@ function Pn(e) {
|
|
|
2935
2797
|
}
|
|
2936
2798
|
return t;
|
|
2937
2799
|
}
|
|
2938
|
-
function
|
|
2800
|
+
function Pn(e, t) {
|
|
2939
2801
|
let n = [];
|
|
2940
2802
|
if (e.length < 2 || t.length === 0) return n;
|
|
2941
2803
|
for (let r = 0; r < e.length; r++) {
|
|
@@ -2949,7 +2811,7 @@ function Fn(e, t) {
|
|
|
2949
2811
|
}
|
|
2950
2812
|
return n;
|
|
2951
2813
|
}
|
|
2952
|
-
function
|
|
2814
|
+
function Fn(e) {
|
|
2953
2815
|
let t = [];
|
|
2954
2816
|
if (e.length < 2) return t;
|
|
2955
2817
|
let n = /* @__PURE__ */ new Map();
|
|
@@ -2968,7 +2830,7 @@ function In(e) {
|
|
|
2968
2830
|
affectedMeasures: r
|
|
2969
2831
|
}), t;
|
|
2970
2832
|
}
|
|
2971
|
-
function
|
|
2833
|
+
function In(e) {
|
|
2972
2834
|
let t = [];
|
|
2973
2835
|
if (e.length < 2) return t;
|
|
2974
2836
|
let n = e.map((e) => e.timeDimensions?.[0]?.dateRange);
|
|
@@ -2978,38 +2840,38 @@ function Ln(e) {
|
|
|
2978
2840
|
message: "Queries have different date ranges - some data points may be missing in merged results"
|
|
2979
2841
|
}), t;
|
|
2980
2842
|
}
|
|
2981
|
-
function
|
|
2843
|
+
function Ln(e, t, n = []) {
|
|
2982
2844
|
let r = [], i = [];
|
|
2983
2845
|
return e.length < 2 ? {
|
|
2984
2846
|
isValid: !0,
|
|
2985
2847
|
errors: r,
|
|
2986
2848
|
warnings: i
|
|
2987
|
-
} : (i.push(...
|
|
2849
|
+
} : (i.push(...Fn(e)), i.push(...In(e)), t === "merge" && (r.push(...Nn(e)), n.length > 0 && r.push(...Pn(e, n))), {
|
|
2988
2850
|
isValid: r.length === 0,
|
|
2989
2851
|
errors: r,
|
|
2990
2852
|
warnings: i
|
|
2991
2853
|
});
|
|
2992
2854
|
}
|
|
2993
|
-
function
|
|
2855
|
+
function Rn(e) {
|
|
2994
2856
|
return (e.measures?.length || 0) + (e.dimensions?.length || 0) + (e.timeDimensions?.length || 0);
|
|
2995
2857
|
}
|
|
2996
|
-
function
|
|
2997
|
-
return e.filter((e) =>
|
|
2858
|
+
function zn(e) {
|
|
2859
|
+
return e.filter((e) => Rn(e) > 0).length >= 2;
|
|
2998
2860
|
}
|
|
2999
|
-
function
|
|
2861
|
+
function Bn(e, t) {
|
|
3000
2862
|
return `${e} ${t}${e === 1 ? "" : "s"}`;
|
|
3001
2863
|
}
|
|
3002
|
-
function
|
|
2864
|
+
function Vn(e) {
|
|
3003
2865
|
if (e.isValid && e.warnings.length === 0) return "Configuration is valid";
|
|
3004
2866
|
let t = [];
|
|
3005
|
-
return e.errors.length > 0 && t.push(
|
|
2867
|
+
return e.errors.length > 0 && t.push(Bn(e.errors.length, "error")), e.warnings.length > 0 && t.push(Bn(e.warnings.length, "warning")), t.join(", ");
|
|
3006
2868
|
}
|
|
3007
2869
|
//#endregion
|
|
3008
2870
|
//#region src/client/hooks/useAnalysisState.ts
|
|
3009
|
-
function
|
|
3010
|
-
let { externalColorPalette: t } = e, r =
|
|
2871
|
+
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), p = $((e) => e.getCurrentState), m = $((e) => e.getMergeKeys), h = $((e) => e.isMultiQueryMode), g = p(), _ = h(), v = m(), y = $((e) => l(e.charts[e.analysisType]?.chartType ?? "")), b = U(() => {
|
|
3011
2873
|
let e = i[a] || g;
|
|
3012
|
-
return
|
|
2874
|
+
return Te(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
|
|
3013
2875
|
}, [
|
|
3014
2876
|
i,
|
|
3015
2877
|
a,
|
|
@@ -3017,7 +2879,7 @@ function Un(e = {}) {
|
|
|
3017
2879
|
y
|
|
3018
2880
|
]), x = U(() => {
|
|
3019
2881
|
let e = i[0]?.breakdowns || [];
|
|
3020
|
-
return i.map((t, n) =>
|
|
2882
|
+
return i.map((t, n) => Te(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
|
|
3021
2883
|
}, [
|
|
3022
2884
|
i,
|
|
3023
2885
|
o,
|
|
@@ -3036,7 +2898,7 @@ function Un(e = {}) {
|
|
|
3036
2898
|
i.length,
|
|
3037
2899
|
o,
|
|
3038
2900
|
v
|
|
3039
|
-
]), C = U(() => _ ?
|
|
2901
|
+
]), C = U(() => _ ? Ln(x, o, v || []) : null, [
|
|
3040
2902
|
_,
|
|
3041
2903
|
x,
|
|
3042
2904
|
o,
|
|
@@ -3073,66 +2935,66 @@ function Un(e = {}) {
|
|
|
3073
2935
|
a,
|
|
3074
2936
|
i,
|
|
3075
2937
|
g.breakdowns
|
|
3076
|
-
]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey),
|
|
2938
|
+
]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey), ee = $((e) => e.funnelCube), A = $((e) => e.funnelSteps), te = $((e) => e.activeFunnelStepIndex), j = $((e) => e.funnelTimeDimension), M = U(() => O !== "funnel" || !k?.dimension || !j || !A || A.length < 2 ? !1 : A.every((e) => e.filters.length > 0), [
|
|
3077
2939
|
O,
|
|
3078
2940
|
k,
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
]),
|
|
2941
|
+
j,
|
|
2942
|
+
A
|
|
2943
|
+
]), N = $((e) => e.charts.funnel?.chartType) || "funnel", ne = $((e) => e.charts.funnel?.chartConfig), re = U(() => ne || {}, [ne]), ie = $((e) => e.charts.funnel?.displayConfig), ae = U(() => ie || {
|
|
3082
2944
|
showLegend: !0,
|
|
3083
2945
|
showGrid: !0,
|
|
3084
2946
|
showTooltip: !0
|
|
3085
|
-
}, [
|
|
2947
|
+
}, [ie]), P = $((e) => e.flowCube), oe = $((e) => e.flowBindingKey), se = $((e) => e.flowTimeDimension), F = $((e) => e.eventDimension), I = $((e) => e.startingStep), L = $((e) => e.stepsBefore), ce = $((e) => e.stepsAfter), le = $((e) => e.joinStrategy), R = $((e) => e.charts.flow?.displayConfig), ue = U(() => R || {
|
|
3086
2948
|
showLegend: !0,
|
|
3087
2949
|
showGrid: !0,
|
|
3088
2950
|
showTooltip: !0
|
|
3089
|
-
}, [
|
|
2951
|
+
}, [R]), de = $((e) => e.charts.flow?.chartType) || "sankey", fe = $((e) => e.buildFunnelQueryFromSteps), pe = U(() => O === "funnel" ? fe() : null, [
|
|
3090
2952
|
O,
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
]),
|
|
2953
|
+
fe,
|
|
2954
|
+
A
|
|
2955
|
+
]), me = $((e) => e.buildFlowQuery), z = U(() => O === "flow" ? me() : null, [
|
|
3094
2956
|
O,
|
|
3095
|
-
|
|
2957
|
+
me,
|
|
2958
|
+
P,
|
|
2959
|
+
oe,
|
|
2960
|
+
se,
|
|
3096
2961
|
F,
|
|
3097
2962
|
I,
|
|
3098
|
-
ae,
|
|
3099
|
-
oe,
|
|
3100
2963
|
L,
|
|
3101
|
-
|
|
3102
|
-
se,
|
|
2964
|
+
ce,
|
|
3103
2965
|
de,
|
|
3104
|
-
|
|
3105
|
-
]), he = $((e) => e.retentionCube), ge = $((e) => e.retentionBindingKey),
|
|
2966
|
+
le
|
|
2967
|
+
]), he = $((e) => e.retentionCube), ge = $((e) => e.retentionBindingKey), _e = $((e) => e.retentionTimeDimension), ve = $((e) => e.retentionDateRange), ye = $((e) => e.retentionCohortFilters), B = $((e) => e.retentionActivityFilters), be = $((e) => e.retentionBreakdowns), xe = $((e) => e.retentionViewGranularity), Se = $((e) => e.retentionPeriods), H = $((e) => e.retentionType), W = $((e) => e.buildRetentionQuery), K = $((e) => e.getRetentionValidation), q = $((e) => e.charts.retention?.displayConfig), J = U(() => O === "retention" ? W() : null, [
|
|
3106
2968
|
O,
|
|
3107
|
-
|
|
2969
|
+
W,
|
|
3108
2970
|
he,
|
|
3109
2971
|
ge,
|
|
3110
|
-
B,
|
|
3111
2972
|
_e,
|
|
3112
|
-
H,
|
|
3113
|
-
W,
|
|
3114
|
-
K,
|
|
3115
|
-
q,
|
|
3116
2973
|
ve,
|
|
3117
|
-
ye
|
|
3118
|
-
]), Ce = U(() => O === "retention" ? be() : null, [
|
|
3119
|
-
O,
|
|
3120
2974
|
be,
|
|
2975
|
+
xe,
|
|
2976
|
+
Se,
|
|
2977
|
+
H,
|
|
2978
|
+
ye,
|
|
2979
|
+
B
|
|
2980
|
+
]), Ce = U(() => O === "retention" ? K() : null, [
|
|
2981
|
+
O,
|
|
2982
|
+
K,
|
|
3121
2983
|
he,
|
|
3122
2984
|
ge,
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
]), we = U(() => O === "retention" ?
|
|
2985
|
+
_e,
|
|
2986
|
+
ve
|
|
2987
|
+
]), we = U(() => O === "retention" ? J !== null : O === "flow" ? z !== null : O === "funnel" ? pe !== null : w ?? !1, [
|
|
3126
2988
|
O,
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
2989
|
+
J,
|
|
2990
|
+
z,
|
|
2991
|
+
pe,
|
|
3130
2992
|
w
|
|
3131
|
-
]), { chartType:
|
|
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 = V((e) => {
|
|
3132
2994
|
if (O === "funnel") Ne(e);
|
|
3133
2995
|
else {
|
|
3134
2996
|
Ae(e);
|
|
3135
|
-
let { chartConfig: t } =
|
|
2997
|
+
let { chartConfig: t } = At(T, E, e);
|
|
3136
2998
|
je(t);
|
|
3137
2999
|
}
|
|
3138
3000
|
}, [
|
|
@@ -3154,12 +3016,12 @@ function Un(e = {}) {
|
|
|
3154
3016
|
O,
|
|
3155
3017
|
Fe,
|
|
3156
3018
|
Me
|
|
3157
|
-
]), Ve = U(() =>
|
|
3019
|
+
]), Ve = U(() => Ot(T, E), [T, E]), He = U(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
|
|
3158
3020
|
name: "custom",
|
|
3159
3021
|
label: "Custom",
|
|
3160
3022
|
colors: t,
|
|
3161
3023
|
gradient: t
|
|
3162
|
-
} : t :
|
|
3024
|
+
} : t : f(ke), [t, ke]), Ue = V((e) => {
|
|
3163
3025
|
r.setState((t) => ({ charts: {
|
|
3164
3026
|
...t.charts,
|
|
3165
3027
|
flow: {
|
|
@@ -3183,26 +3045,26 @@ function Un(e = {}) {
|
|
|
3183
3045
|
displayConfig: e
|
|
3184
3046
|
}
|
|
3185
3047
|
} }));
|
|
3186
|
-
}, [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] = G(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),
|
|
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] = G(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 = U(() => Yt(), [
|
|
3187
3049
|
Yt,
|
|
3188
3050
|
i,
|
|
3189
3051
|
O,
|
|
3190
|
-
|
|
3052
|
+
A,
|
|
3191
3053
|
k,
|
|
3192
|
-
|
|
3054
|
+
j,
|
|
3055
|
+
P,
|
|
3056
|
+
oe,
|
|
3057
|
+
se,
|
|
3193
3058
|
F,
|
|
3194
3059
|
I,
|
|
3195
|
-
ae,
|
|
3196
|
-
oe,
|
|
3197
3060
|
L,
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
ce
|
|
3061
|
+
ce,
|
|
3062
|
+
le
|
|
3201
3063
|
]), Zt = V((e, t) => {
|
|
3202
|
-
O === "retention" && t === "dimension" ?
|
|
3064
|
+
O === "retention" && t === "dimension" ? Z({ field: e.name }) : ut(e.name, t === "timeDimension");
|
|
3203
3065
|
}, [
|
|
3204
3066
|
O,
|
|
3205
|
-
|
|
3067
|
+
Z,
|
|
3206
3068
|
ut
|
|
3207
3069
|
]), Qt = V((e, t, n, r) => {
|
|
3208
3070
|
Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
|
|
@@ -3231,40 +3093,40 @@ function Un(e = {}) {
|
|
|
3231
3093
|
effectiveBreakdowns: D,
|
|
3232
3094
|
analysisType: O,
|
|
3233
3095
|
funnelBindingKey: k,
|
|
3234
|
-
isFunnelModeEnabled:
|
|
3235
|
-
funnelCube:
|
|
3236
|
-
funnelSteps:
|
|
3237
|
-
activeFunnelStepIndex:
|
|
3238
|
-
funnelTimeDimension:
|
|
3239
|
-
funnelChartType:
|
|
3240
|
-
funnelChartConfig:
|
|
3241
|
-
funnelDisplayConfig:
|
|
3242
|
-
serverFunnelQuery:
|
|
3243
|
-
flowCube:
|
|
3244
|
-
flowBindingKey:
|
|
3245
|
-
flowTimeDimension:
|
|
3246
|
-
eventDimension:
|
|
3247
|
-
startingStep:
|
|
3248
|
-
stepsBefore:
|
|
3249
|
-
stepsAfter:
|
|
3250
|
-
joinStrategy:
|
|
3096
|
+
isFunnelModeEnabled: M,
|
|
3097
|
+
funnelCube: ee,
|
|
3098
|
+
funnelSteps: A,
|
|
3099
|
+
activeFunnelStepIndex: te,
|
|
3100
|
+
funnelTimeDimension: j,
|
|
3101
|
+
funnelChartType: N,
|
|
3102
|
+
funnelChartConfig: re,
|
|
3103
|
+
funnelDisplayConfig: ae,
|
|
3104
|
+
serverFunnelQuery: pe,
|
|
3105
|
+
flowCube: P,
|
|
3106
|
+
flowBindingKey: oe,
|
|
3107
|
+
flowTimeDimension: se,
|
|
3108
|
+
eventDimension: F,
|
|
3109
|
+
startingStep: I,
|
|
3110
|
+
stepsBefore: L,
|
|
3111
|
+
stepsAfter: ce,
|
|
3112
|
+
joinStrategy: le,
|
|
3251
3113
|
flowDisplayConfig: ue,
|
|
3252
|
-
serverFlowQuery:
|
|
3114
|
+
serverFlowQuery: z,
|
|
3253
3115
|
retentionCube: he,
|
|
3254
3116
|
retentionBindingKey: ge,
|
|
3255
|
-
retentionTimeDimension:
|
|
3256
|
-
retentionDateRange:
|
|
3257
|
-
retentionCohortFilters:
|
|
3258
|
-
retentionActivityFilters:
|
|
3259
|
-
retentionBreakdowns:
|
|
3260
|
-
retentionViewGranularity:
|
|
3261
|
-
retentionPeriods:
|
|
3262
|
-
retentionType:
|
|
3263
|
-
retentionDisplayConfig:
|
|
3264
|
-
serverRetentionQuery:
|
|
3117
|
+
retentionTimeDimension: _e,
|
|
3118
|
+
retentionDateRange: ve,
|
|
3119
|
+
retentionCohortFilters: ye,
|
|
3120
|
+
retentionActivityFilters: B,
|
|
3121
|
+
retentionBreakdowns: be,
|
|
3122
|
+
retentionViewGranularity: xe,
|
|
3123
|
+
retentionPeriods: Se,
|
|
3124
|
+
retentionType: H,
|
|
3125
|
+
retentionDisplayConfig: q,
|
|
3126
|
+
serverRetentionQuery: J,
|
|
3265
3127
|
retentionValidation: Ce,
|
|
3266
|
-
chartType:
|
|
3267
|
-
chartConfig:
|
|
3128
|
+
chartType: Y,
|
|
3129
|
+
chartConfig: Ee,
|
|
3268
3130
|
displayConfig: De,
|
|
3269
3131
|
colorPalette: He,
|
|
3270
3132
|
localPaletteName: ke,
|
|
@@ -3295,14 +3157,14 @@ function Un(e = {}) {
|
|
|
3295
3157
|
chartConfig: t.chartConfig,
|
|
3296
3158
|
displayConfig: t.displayConfig
|
|
3297
3159
|
} : {
|
|
3298
|
-
chartType:
|
|
3299
|
-
chartConfig:
|
|
3160
|
+
chartType: Y,
|
|
3161
|
+
chartConfig: Ee,
|
|
3300
3162
|
displayConfig: De
|
|
3301
3163
|
};
|
|
3302
3164
|
}, [
|
|
3303
3165
|
r,
|
|
3304
|
-
Te,
|
|
3305
3166
|
Y,
|
|
3167
|
+
Ee,
|
|
3306
3168
|
De
|
|
3307
3169
|
]),
|
|
3308
3170
|
getAnalysisType: V(() => r.getState().analysisType, [r]),
|
|
@@ -3335,9 +3197,9 @@ function Un(e = {}) {
|
|
|
3335
3197
|
updateFunnelStep: Tt,
|
|
3336
3198
|
setActiveFunnelStepIndex: Et,
|
|
3337
3199
|
reorderFunnelSteps: Dt,
|
|
3338
|
-
setFunnelTimeDimension:
|
|
3200
|
+
setFunnelTimeDimension: kt,
|
|
3339
3201
|
setFunnelDisplayConfig: Fe,
|
|
3340
|
-
setFlowCube:
|
|
3202
|
+
setFlowCube: jt,
|
|
3341
3203
|
setFlowBindingKey: Mt,
|
|
3342
3204
|
setFlowTimeDimension: Nt,
|
|
3343
3205
|
setEventDimension: Pt,
|
|
@@ -3353,12 +3215,12 @@ function Un(e = {}) {
|
|
|
3353
3215
|
setRetentionDateRange: Ut,
|
|
3354
3216
|
setRetentionCohortFilters: Wt,
|
|
3355
3217
|
setRetentionActivityFilters: Gt,
|
|
3356
|
-
setRetentionBreakdowns:
|
|
3357
|
-
addRetentionBreakdown:
|
|
3358
|
-
removeRetentionBreakdown:
|
|
3218
|
+
setRetentionBreakdowns: X,
|
|
3219
|
+
addRetentionBreakdown: Z,
|
|
3220
|
+
removeRetentionBreakdown: Kt,
|
|
3359
3221
|
setRetentionViewGranularity: qt,
|
|
3360
|
-
setRetentionPeriods:
|
|
3361
|
-
setRetentionType:
|
|
3222
|
+
setRetentionPeriods: Q,
|
|
3223
|
+
setRetentionType: Jt,
|
|
3362
3224
|
setRetentionDisplayConfig: We,
|
|
3363
3225
|
setChartType: Re,
|
|
3364
3226
|
setChartConfig: ze,
|
|
@@ -3378,13 +3240,13 @@ function Un(e = {}) {
|
|
|
3378
3240
|
}
|
|
3379
3241
|
//#endregion
|
|
3380
3242
|
//#region src/client/hooks/analysisQueryExecutionModes.ts
|
|
3381
|
-
function
|
|
3243
|
+
function Un(e) {
|
|
3382
3244
|
return e.isRetentionMode ? "retention" : e.isFlowMode ? "flow" : e.isFunnelMode ? "funnel" : e.isMultiMode ? "multi" : "single";
|
|
3383
3245
|
}
|
|
3384
|
-
function
|
|
3246
|
+
function Wn(e, t) {
|
|
3385
3247
|
return t[e];
|
|
3386
3248
|
}
|
|
3387
|
-
function
|
|
3249
|
+
function Gn(e) {
|
|
3388
3250
|
return {
|
|
3389
3251
|
funnelExecutedQueries: e.isFunnelMode && e.funnelExecutedQueries && e.funnelExecutedQueries.length > 0 ? e.funnelExecutedQueries : null,
|
|
3390
3252
|
funnelServerQuery: e.isFunnelMode ? e.funnelServerQuery : null,
|
|
@@ -3397,7 +3259,7 @@ function Kn(e) {
|
|
|
3397
3259
|
retentionDebugData: e.isRetentionMode ? e.retentionDebugData : null
|
|
3398
3260
|
};
|
|
3399
3261
|
}
|
|
3400
|
-
function
|
|
3262
|
+
function Kn(e) {
|
|
3401
3263
|
return {
|
|
3402
3264
|
single: !e.isValidQuery || !e.isSingleMode,
|
|
3403
3265
|
multi: !e.hasMultiQueryConfig || !e.isMultiMode,
|
|
@@ -3407,11 +3269,11 @@ function qn(e) {
|
|
|
3407
3269
|
dryRun: !!(!e.isValidQuery || e.isFunnelMode || e.isFlowMode || e.isRetentionMode)
|
|
3408
3270
|
};
|
|
3409
3271
|
}
|
|
3410
|
-
function
|
|
3272
|
+
function qn(e) {
|
|
3411
3273
|
let { hasResults: t, initialData: n, isValidQuery: r, isLoading: i, isFetching: a, error: o } = e;
|
|
3412
3274
|
return n && n.length > 0 && !t ? "success" : r ? i && !t ? "loading" : a && t ? "refreshing" : o ? "error" : t ? "success" : "idle" : "idle";
|
|
3413
3275
|
}
|
|
3414
|
-
function
|
|
3276
|
+
function Jn(e) {
|
|
3415
3277
|
return e.isRetentionMode && e.retentionChartData ? e.retentionChartData.rows.map((e) => ({
|
|
3416
3278
|
"Retention.period": `P${e.period}`,
|
|
3417
3279
|
"Retention.rate": e.retentionRate,
|
|
@@ -3422,18 +3284,18 @@ function Yn(e) {
|
|
|
3422
3284
|
}
|
|
3423
3285
|
//#endregion
|
|
3424
3286
|
//#region src/client/hooks/useAnalysisQuery.ts
|
|
3425
|
-
function
|
|
3426
|
-
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, { getFieldLabel: h } =
|
|
3287
|
+
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, { getFieldLabel: h } = me(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Un({
|
|
3427
3289
|
isRetentionMode: v,
|
|
3428
3290
|
isFlowMode: _,
|
|
3429
3291
|
isFunnelMode: g,
|
|
3430
3292
|
isMultiMode: y
|
|
3431
|
-
}), C = U(() => x || !g || !c || n.length < 2 ? null :
|
|
3293
|
+
}), C = U(() => x || !g || !c || n.length < 2 ? null : _e(n, c), [
|
|
3432
3294
|
x,
|
|
3433
3295
|
g,
|
|
3434
3296
|
c,
|
|
3435
3297
|
n
|
|
3436
|
-
]), w =
|
|
3298
|
+
]), w = Kn({
|
|
3437
3299
|
isValidQuery: a,
|
|
3438
3300
|
isSingleMode: b,
|
|
3439
3301
|
isMultiMode: y,
|
|
@@ -3448,43 +3310,43 @@ function Xn(e) {
|
|
|
3448
3310
|
}), T = F(t, {
|
|
3449
3311
|
skip: w.single,
|
|
3450
3312
|
debounceMs: 300
|
|
3451
|
-
}), E =
|
|
3313
|
+
}), E = ce(r, {
|
|
3452
3314
|
skip: w.multi,
|
|
3453
3315
|
debounceMs: 300
|
|
3454
|
-
}), D =
|
|
3316
|
+
}), D = ue(C, {
|
|
3455
3317
|
skip: w.funnel,
|
|
3456
3318
|
debounceMs: 300,
|
|
3457
3319
|
prebuiltServerQuery: x ? d : void 0
|
|
3458
|
-
}), O =
|
|
3320
|
+
}), O = pe(f ?? null, {
|
|
3459
3321
|
skip: w.flow,
|
|
3460
3322
|
debounceMs: 300
|
|
3461
|
-
}), k =
|
|
3323
|
+
}), k = L(p ?? null, {
|
|
3462
3324
|
skip: w.retention,
|
|
3463
3325
|
debounceMs: 300,
|
|
3464
3326
|
getFieldLabel: h
|
|
3465
|
-
}),
|
|
3327
|
+
}), ee = ge({
|
|
3466
3328
|
queries: i ? n : [t],
|
|
3467
3329
|
isMultiQueryMode: i,
|
|
3468
3330
|
skip: w.dryRun
|
|
3469
|
-
}),
|
|
3331
|
+
}), A = he(D.serverQuery, { skip: !g || !D.serverQuery }), te = he(O.serverQuery, { skip: !_ || !O.serverQuery }), j = he(p, { skip: !v || !p }), M = Wn(S, {
|
|
3470
3332
|
retention: k.isLoading || k.isDebouncing,
|
|
3471
3333
|
flow: O.isLoading || O.isDebouncing,
|
|
3472
3334
|
funnel: D.isExecuting || D.isDebouncing,
|
|
3473
3335
|
multi: E.isLoading,
|
|
3474
3336
|
single: T.isLoading
|
|
3475
|
-
}),
|
|
3337
|
+
}), N = Wn(S, {
|
|
3476
3338
|
retention: k.isFetching,
|
|
3477
3339
|
flow: O.isFetching,
|
|
3478
3340
|
funnel: D.isExecuting,
|
|
3479
3341
|
multi: E.isFetching,
|
|
3480
3342
|
single: T.isFetching
|
|
3481
|
-
}),
|
|
3343
|
+
}), ne = Wn(S, {
|
|
3482
3344
|
retention: k.error,
|
|
3483
3345
|
flow: O.error,
|
|
3484
3346
|
funnel: D.error,
|
|
3485
3347
|
multi: E.error,
|
|
3486
3348
|
single: T.error
|
|
3487
|
-
}),
|
|
3349
|
+
}), re = !(!T.debouncedQuery && !E.debouncedConfig && D.isDebouncing && O.isDebouncing && k.isDebouncing), ie = V((e) => {
|
|
3488
3350
|
switch (S) {
|
|
3489
3351
|
case "retention":
|
|
3490
3352
|
k.execute(e);
|
|
@@ -3507,8 +3369,8 @@ function Xn(e) {
|
|
|
3507
3369
|
D,
|
|
3508
3370
|
E,
|
|
3509
3371
|
T
|
|
3510
|
-
]),
|
|
3511
|
-
hasResults:
|
|
3372
|
+
]), ae = U(() => qn({
|
|
3373
|
+
hasResults: Wn(S, {
|
|
3512
3374
|
retention: k.chartData,
|
|
3513
3375
|
flow: O.data,
|
|
3514
3376
|
funnel: D.chartData,
|
|
@@ -3517,14 +3379,14 @@ function Xn(e) {
|
|
|
3517
3379
|
}),
|
|
3518
3380
|
initialData: o,
|
|
3519
3381
|
isValidQuery: a,
|
|
3520
|
-
isLoading:
|
|
3521
|
-
isFetching:
|
|
3522
|
-
error:
|
|
3382
|
+
isLoading: M,
|
|
3383
|
+
isFetching: N,
|
|
3384
|
+
error: ne
|
|
3523
3385
|
}), [
|
|
3524
3386
|
a,
|
|
3387
|
+
M,
|
|
3525
3388
|
N,
|
|
3526
|
-
|
|
3527
|
-
P,
|
|
3389
|
+
ne,
|
|
3528
3390
|
T.rawData,
|
|
3529
3391
|
E.data,
|
|
3530
3392
|
D.chartData,
|
|
@@ -3532,7 +3394,7 @@ function Xn(e) {
|
|
|
3532
3394
|
k.chartData,
|
|
3533
3395
|
o,
|
|
3534
3396
|
S
|
|
3535
|
-
]),
|
|
3397
|
+
]), P = U(() => Jn({
|
|
3536
3398
|
isRetentionMode: v,
|
|
3537
3399
|
isFlowMode: _,
|
|
3538
3400
|
isFunnelMode: g,
|
|
@@ -3554,25 +3416,25 @@ function Xn(e) {
|
|
|
3554
3416
|
g,
|
|
3555
3417
|
_,
|
|
3556
3418
|
v
|
|
3557
|
-
]),
|
|
3419
|
+
]), oe = U(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
|
|
3558
3420
|
y,
|
|
3559
3421
|
g,
|
|
3560
3422
|
E.perQueryData,
|
|
3561
3423
|
D.stepResults
|
|
3562
|
-
]), { funnelExecutedQueries:
|
|
3424
|
+
]), { funnelExecutedQueries: se, funnelServerQuery: I, funnelDebugData: le, flowServerQuery: R, flowChartData: de, flowDebugData: fe, retentionServerQuery: z, retentionChartData: ve, retentionDebugData: ye } = Gn({
|
|
3563
3425
|
isFunnelMode: g,
|
|
3564
3426
|
isFlowMode: _,
|
|
3565
3427
|
isRetentionMode: v,
|
|
3566
3428
|
funnelExecutedQueries: D.executedQueries,
|
|
3567
3429
|
funnelServerQuery: D.serverQuery,
|
|
3568
|
-
funnelDebugData:
|
|
3430
|
+
funnelDebugData: A.debugData,
|
|
3569
3431
|
flowServerQuery: O.serverQuery,
|
|
3570
3432
|
flowData: O.data,
|
|
3571
|
-
flowDebugData:
|
|
3433
|
+
flowDebugData: te.debugData,
|
|
3572
3434
|
retentionServerQuery: p ?? null,
|
|
3573
3435
|
retentionChartData: k.chartData,
|
|
3574
|
-
retentionDebugData:
|
|
3575
|
-
}),
|
|
3436
|
+
retentionDebugData: j.debugData
|
|
3437
|
+
}), B = U(() => Wn(S, {
|
|
3576
3438
|
retention: k.needsRefresh,
|
|
3577
3439
|
flow: O.needsRefresh,
|
|
3578
3440
|
funnel: D.needsRefresh,
|
|
@@ -3584,72 +3446,72 @@ function Xn(e) {
|
|
|
3584
3446
|
O.needsRefresh,
|
|
3585
3447
|
D.needsRefresh,
|
|
3586
3448
|
T.needsRefresh
|
|
3587
|
-
]),
|
|
3449
|
+
]), be = U(() => {
|
|
3588
3450
|
if (b && T.warnings) return T.warnings;
|
|
3589
3451
|
}, [b, T.warnings]);
|
|
3590
3452
|
return {
|
|
3591
|
-
executionStatus:
|
|
3592
|
-
executionResults:
|
|
3593
|
-
perQueryResults:
|
|
3594
|
-
isLoading:
|
|
3595
|
-
isFetching:
|
|
3596
|
-
error:
|
|
3597
|
-
debugDataPerQuery:
|
|
3598
|
-
hasDebounced:
|
|
3599
|
-
refetch:
|
|
3600
|
-
funnelExecutedQueries:
|
|
3601
|
-
funnelServerQuery:
|
|
3453
|
+
executionStatus: ae,
|
|
3454
|
+
executionResults: P,
|
|
3455
|
+
perQueryResults: oe,
|
|
3456
|
+
isLoading: M,
|
|
3457
|
+
isFetching: N,
|
|
3458
|
+
error: ne,
|
|
3459
|
+
debugDataPerQuery: ee.debugDataPerQuery,
|
|
3460
|
+
hasDebounced: re,
|
|
3461
|
+
refetch: ie,
|
|
3462
|
+
funnelExecutedQueries: se,
|
|
3463
|
+
funnelServerQuery: I,
|
|
3602
3464
|
funnelDebugData: le,
|
|
3603
|
-
flowServerQuery:
|
|
3604
|
-
flowChartData:
|
|
3605
|
-
flowDebugData:
|
|
3606
|
-
retentionServerQuery:
|
|
3607
|
-
retentionChartData:
|
|
3608
|
-
retentionDebugData:
|
|
3465
|
+
flowServerQuery: R,
|
|
3466
|
+
flowChartData: de,
|
|
3467
|
+
flowDebugData: fe,
|
|
3468
|
+
retentionServerQuery: z,
|
|
3469
|
+
retentionChartData: ve,
|
|
3470
|
+
retentionDebugData: ye,
|
|
3609
3471
|
retentionValidation: m ?? null,
|
|
3610
|
-
needsRefresh:
|
|
3611
|
-
warnings:
|
|
3472
|
+
needsRefresh: B,
|
|
3473
|
+
warnings: be
|
|
3612
3474
|
};
|
|
3613
3475
|
}
|
|
3614
3476
|
//#endregion
|
|
3615
3477
|
//#region src/client/utils/shareUtils.ts
|
|
3616
|
-
var
|
|
3617
|
-
function
|
|
3478
|
+
var Xn = o(), Zn = 1800, Qn = "share=";
|
|
3479
|
+
function $n(e) {
|
|
3618
3480
|
let t = JSON.stringify(e);
|
|
3619
|
-
return (0,
|
|
3481
|
+
return (0, Xn.compressToEncodedURIComponent)(t);
|
|
3620
3482
|
}
|
|
3621
|
-
function
|
|
3483
|
+
function er(e) {
|
|
3622
3484
|
try {
|
|
3623
|
-
let t = (0,
|
|
3485
|
+
let t = (0, Xn.decompressFromEncodedURIComponent)(e);
|
|
3624
3486
|
if (!t) return null;
|
|
3625
3487
|
let n = JSON.parse(t);
|
|
3626
|
-
return
|
|
3488
|
+
return j(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
|
|
3627
3489
|
} catch {
|
|
3628
3490
|
return null;
|
|
3629
3491
|
}
|
|
3630
3492
|
}
|
|
3631
|
-
function
|
|
3632
|
-
let t =
|
|
3493
|
+
function tr(e) {
|
|
3494
|
+
let t = $n(e);
|
|
3633
3495
|
return {
|
|
3634
|
-
ok: t.length <=
|
|
3496
|
+
ok: t.length <= Zn,
|
|
3635
3497
|
size: t.length,
|
|
3636
|
-
maxSize:
|
|
3498
|
+
maxSize: Zn
|
|
3637
3499
|
};
|
|
3638
3500
|
}
|
|
3639
|
-
function
|
|
3640
|
-
let t =
|
|
3641
|
-
if (t.length <=
|
|
3501
|
+
function nr(e) {
|
|
3502
|
+
let t = $n(e);
|
|
3503
|
+
if (t.length <= Zn) return {
|
|
3642
3504
|
encoded: t,
|
|
3643
3505
|
queryOnly: !1
|
|
3644
3506
|
};
|
|
3645
|
-
let n =
|
|
3507
|
+
let n = $n({
|
|
3646
3508
|
version: e.version,
|
|
3647
3509
|
analysisType: e.analysisType,
|
|
3648
3510
|
activeView: e.activeView,
|
|
3649
3511
|
charts: {},
|
|
3650
3512
|
query: e.query
|
|
3651
3513
|
});
|
|
3652
|
-
return n.length <=
|
|
3514
|
+
return n.length <= Zn ? {
|
|
3653
3515
|
encoded: n,
|
|
3654
3516
|
queryOnly: !0
|
|
3655
3517
|
} : {
|
|
@@ -3657,27 +3519,27 @@ function rr(e) {
|
|
|
3657
3519
|
queryOnly: !0
|
|
3658
3520
|
};
|
|
3659
3521
|
}
|
|
3660
|
-
function
|
|
3661
|
-
let { encoded: t } =
|
|
3662
|
-
return t ? `${window.location.origin}${window.location.pathname}#${
|
|
3522
|
+
function rr(e) {
|
|
3523
|
+
let { encoded: t } = nr(e);
|
|
3524
|
+
return t ? `${window.location.origin}${window.location.pathname}#${Qn}${t}` : null;
|
|
3663
3525
|
}
|
|
3664
|
-
function
|
|
3526
|
+
function ir() {
|
|
3665
3527
|
if (typeof window > "u") return null;
|
|
3666
3528
|
let e = window.location.hash;
|
|
3667
|
-
return !e || !e.startsWith(`#${
|
|
3529
|
+
return !e || !e.startsWith(`#${Qn}`) ? null : e.slice(7);
|
|
3668
3530
|
}
|
|
3669
|
-
function
|
|
3531
|
+
function ar() {
|
|
3670
3532
|
if (typeof window > "u") return;
|
|
3671
3533
|
let e = new URL(window.location.href);
|
|
3672
3534
|
e.hash = "", window.history.replaceState(null, "", e.toString());
|
|
3673
3535
|
}
|
|
3674
|
-
function
|
|
3675
|
-
let e =
|
|
3676
|
-
return e ?
|
|
3536
|
+
function or() {
|
|
3537
|
+
let e = ir();
|
|
3538
|
+
return e ? er(e) : null;
|
|
3677
3539
|
}
|
|
3678
3540
|
//#endregion
|
|
3679
3541
|
//#region src/client/components/AIAssistant/utils.ts
|
|
3680
|
-
async function
|
|
3542
|
+
async function sr(e, t, n = "/api/ai/generate", r) {
|
|
3681
3543
|
let i = { text: t }, a = {
|
|
3682
3544
|
"Content-Type": "application/json",
|
|
3683
3545
|
...r
|
|
@@ -3707,21 +3569,21 @@ async function cr(e, t, n = "/api/ai/generate", r) {
|
|
|
3707
3569
|
let s = await o.json();
|
|
3708
3570
|
return console.log("✅ Client: Successfully generated content"), s;
|
|
3709
3571
|
}
|
|
3710
|
-
function
|
|
3572
|
+
function cr(e) {
|
|
3711
3573
|
return (e.query || "").replace(/```json\s*/g, "").replace(/```\s*/g, "").replace(/^\s*```.*\n/gm, "").trim();
|
|
3712
3574
|
}
|
|
3713
3575
|
//#endregion
|
|
3714
3576
|
//#region src/client/hooks/useAnalysisEffects.ts
|
|
3715
|
-
function
|
|
3577
|
+
function lr(e) {
|
|
3716
3578
|
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
3717
3579
|
}
|
|
3718
|
-
function
|
|
3580
|
+
function ur(e) {
|
|
3719
3581
|
let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u = W(!1);
|
|
3720
3582
|
H(() => {
|
|
3721
3583
|
if (u.current) return;
|
|
3722
3584
|
u.current = !0;
|
|
3723
|
-
let e =
|
|
3724
|
-
e && (o.getState().load(e),
|
|
3585
|
+
let e = or();
|
|
3586
|
+
e && (o.getState().load(e), ar());
|
|
3725
3587
|
}, [o]), H(() => {
|
|
3726
3588
|
i && t.isValidQuery && i(t.currentQuery);
|
|
3727
3589
|
}, [
|
|
@@ -3740,46 +3602,46 @@ function dr(e) {
|
|
|
3740
3602
|
t.displayConfig,
|
|
3741
3603
|
a
|
|
3742
3604
|
]);
|
|
3743
|
-
let { combinedMetrics: d, combinedBreakdowns:
|
|
3605
|
+
let { combinedMetrics: d, combinedBreakdowns: f, chartType: p, chartConfig: g, userManuallySelectedChart: _ } = t, { hasDebounced: v } = n, { setChartType: y, setChartConfig: b } = s, x = W("");
|
|
3744
3606
|
H(() => {
|
|
3745
|
-
if (!
|
|
3607
|
+
if (!v || d.length === 0 && f.length === 0) return;
|
|
3746
3608
|
let e = JSON.stringify({
|
|
3747
3609
|
metrics: d.map((e) => e.field),
|
|
3748
|
-
breakdowns:
|
|
3610
|
+
breakdowns: f.map((e) => ({
|
|
3749
3611
|
field: e.field,
|
|
3750
3612
|
isTime: e.isTimeDimension
|
|
3751
3613
|
}))
|
|
3752
3614
|
});
|
|
3753
|
-
if (e ===
|
|
3754
|
-
|
|
3755
|
-
let t =
|
|
3615
|
+
if (e === x.current) return;
|
|
3616
|
+
x.current = e;
|
|
3617
|
+
let t = Mt(d, f, p, _);
|
|
3756
3618
|
if (t) {
|
|
3757
|
-
let { chartConfig: e } =
|
|
3758
|
-
|
|
3759
|
-
} else if (d.length > 0 ||
|
|
3760
|
-
if (
|
|
3761
|
-
let e =
|
|
3762
|
-
i.length > 0 &&
|
|
3763
|
-
...
|
|
3619
|
+
let { chartConfig: e } = At(d, f, t);
|
|
3620
|
+
y(t), b(e), s.setUserManuallySelectedChart(!1);
|
|
3621
|
+
} else if (d.length > 0 || f.length > 0) {
|
|
3622
|
+
if (p === "table" || p === "recordsTable") {
|
|
3623
|
+
let e = p === "recordsTable" ? "columns" : "xAxis", t = [...f.map((e) => e.field), ...d.map((e) => e.field)], n = Array.isArray(g[e]) ? g[e] : [], r = new Set(g.hiddenColumns ?? []), i = t.filter((e) => !n.includes(e) && !r.has(e));
|
|
3624
|
+
i.length > 0 && b({
|
|
3625
|
+
...g,
|
|
3764
3626
|
[e]: [...n, ...i]
|
|
3765
3627
|
});
|
|
3766
|
-
} else if (!
|
|
3767
|
-
let { chartConfig: e } =
|
|
3768
|
-
|
|
3628
|
+
} else if (!g.xAxis?.length && !g.yAxis?.length && !g.series?.length) {
|
|
3629
|
+
let { chartConfig: e } = At(d, f, p);
|
|
3630
|
+
b(e);
|
|
3769
3631
|
}
|
|
3770
3632
|
}
|
|
3771
3633
|
}, [
|
|
3772
|
-
|
|
3634
|
+
v,
|
|
3773
3635
|
d,
|
|
3636
|
+
f,
|
|
3774
3637
|
p,
|
|
3775
|
-
|
|
3638
|
+
_,
|
|
3776
3639
|
g,
|
|
3777
|
-
h,
|
|
3778
|
-
v,
|
|
3779
3640
|
y,
|
|
3641
|
+
b,
|
|
3780
3642
|
s
|
|
3781
3643
|
]);
|
|
3782
|
-
let [
|
|
3644
|
+
let [S, C] = G({
|
|
3783
3645
|
isOpen: !1,
|
|
3784
3646
|
userPrompt: "",
|
|
3785
3647
|
isGenerating: !1,
|
|
@@ -3787,7 +3649,7 @@ function dr(e) {
|
|
|
3787
3649
|
hasGeneratedQuery: !1,
|
|
3788
3650
|
previousState: null,
|
|
3789
3651
|
previousConfig: null
|
|
3790
|
-
}),
|
|
3652
|
+
}), w = V((e) => {
|
|
3791
3653
|
o.getState().updateQueryState(t.activeQueryIndex, (t) => {
|
|
3792
3654
|
let n = e(t);
|
|
3793
3655
|
return {
|
|
@@ -3814,7 +3676,7 @@ function dr(e) {
|
|
|
3814
3676
|
o.getState().load(t);
|
|
3815
3677
|
}, [o]), E = V(() => {
|
|
3816
3678
|
let e = o.getState().save();
|
|
3817
|
-
|
|
3679
|
+
C({
|
|
3818
3680
|
isOpen: !0,
|
|
3819
3681
|
userPrompt: "",
|
|
3820
3682
|
isGenerating: !1,
|
|
@@ -3841,7 +3703,7 @@ function dr(e) {
|
|
|
3841
3703
|
t.displayConfig,
|
|
3842
3704
|
t.analysisType
|
|
3843
3705
|
]), D = V(() => {
|
|
3844
|
-
|
|
3706
|
+
C((e) => ({
|
|
3845
3707
|
...e,
|
|
3846
3708
|
isOpen: !1,
|
|
3847
3709
|
userPrompt: "",
|
|
@@ -3849,21 +3711,21 @@ function dr(e) {
|
|
|
3849
3711
|
hasGeneratedQuery: !1
|
|
3850
3712
|
}));
|
|
3851
3713
|
}, []), O = V((e) => {
|
|
3852
|
-
|
|
3714
|
+
C((t) => ({
|
|
3853
3715
|
...t,
|
|
3854
3716
|
userPrompt: e
|
|
3855
3717
|
}));
|
|
3856
3718
|
}, []), k = V(async () => {
|
|
3857
|
-
if (
|
|
3858
|
-
|
|
3719
|
+
if (S.userPrompt.trim()) {
|
|
3720
|
+
C((e) => ({
|
|
3859
3721
|
...e,
|
|
3860
3722
|
isGenerating: !0,
|
|
3861
3723
|
error: null
|
|
3862
3724
|
}));
|
|
3863
3725
|
try {
|
|
3864
|
-
let e =
|
|
3865
|
-
if (
|
|
3866
|
-
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"),
|
|
3726
|
+
let e = cr(await sr("", S.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
|
+
if (lr(i)) {
|
|
3728
|
+
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
|
|
3867
3729
|
...e,
|
|
3868
3730
|
isGenerating: !1,
|
|
3869
3731
|
hasGeneratedQuery: !0
|
|
@@ -3871,19 +3733,19 @@ function dr(e) {
|
|
|
3871
3733
|
return;
|
|
3872
3734
|
}
|
|
3873
3735
|
let c = i;
|
|
3874
|
-
|
|
3736
|
+
w((e) => ({
|
|
3875
3737
|
...e,
|
|
3876
3738
|
metrics: (c.measures || []).map((e, t) => ({
|
|
3877
|
-
id:
|
|
3739
|
+
id: h(),
|
|
3878
3740
|
field: e,
|
|
3879
|
-
label:
|
|
3741
|
+
label: m(t)
|
|
3880
3742
|
})),
|
|
3881
3743
|
breakdowns: [...(c.dimensions || []).map((e) => ({
|
|
3882
|
-
id:
|
|
3744
|
+
id: h(),
|
|
3883
3745
|
field: e,
|
|
3884
3746
|
isTimeDimension: !1
|
|
3885
3747
|
})), ...(c.timeDimensions || []).map((e) => ({
|
|
3886
|
-
id:
|
|
3748
|
+
id: h(),
|
|
3887
3749
|
field: e.dimension,
|
|
3888
3750
|
granularity: e.granularity,
|
|
3889
3751
|
isTimeDimension: !0
|
|
@@ -3891,13 +3753,13 @@ function dr(e) {
|
|
|
3891
3753
|
filters: c.filters || [],
|
|
3892
3754
|
order: c.order || void 0,
|
|
3893
3755
|
limit: c.limit ?? void 0
|
|
3894
|
-
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"),
|
|
3756
|
+
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
|
|
3895
3757
|
...e,
|
|
3896
3758
|
isGenerating: !1,
|
|
3897
3759
|
hasGeneratedQuery: !0
|
|
3898
3760
|
}));
|
|
3899
3761
|
} catch (e) {
|
|
3900
|
-
|
|
3762
|
+
C((t) => ({
|
|
3901
3763
|
...t,
|
|
3902
3764
|
isGenerating: !1,
|
|
3903
3765
|
error: e instanceof Error ? e.message : "Failed to generate query"
|
|
@@ -3905,15 +3767,15 @@ function dr(e) {
|
|
|
3905
3767
|
}
|
|
3906
3768
|
}
|
|
3907
3769
|
}, [
|
|
3908
|
-
|
|
3770
|
+
S.userPrompt,
|
|
3909
3771
|
r,
|
|
3910
3772
|
l?.headers,
|
|
3911
|
-
|
|
3773
|
+
w,
|
|
3912
3774
|
T,
|
|
3913
3775
|
t.analysisType,
|
|
3914
3776
|
s
|
|
3915
|
-
]),
|
|
3916
|
-
|
|
3777
|
+
]), ee = V(() => {
|
|
3778
|
+
C({
|
|
3917
3779
|
isOpen: !1,
|
|
3918
3780
|
userPrompt: "",
|
|
3919
3781
|
isGenerating: !1,
|
|
@@ -3922,13 +3784,13 @@ function dr(e) {
|
|
|
3922
3784
|
previousState: null,
|
|
3923
3785
|
previousConfig: null
|
|
3924
3786
|
});
|
|
3925
|
-
}, []),
|
|
3926
|
-
|
|
3787
|
+
}, []), A = V(() => {
|
|
3788
|
+
S.previousConfig ? o.getState().load(S.previousConfig) : S.previousState && (w((e) => ({
|
|
3927
3789
|
...e,
|
|
3928
|
-
metrics:
|
|
3929
|
-
breakdowns:
|
|
3930
|
-
filters:
|
|
3931
|
-
})), s.setChartType(
|
|
3790
|
+
metrics: S.previousState.metrics,
|
|
3791
|
+
breakdowns: S.previousState.breakdowns,
|
|
3792
|
+
filters: S.previousState.filters
|
|
3793
|
+
})), s.setChartType(S.previousState.chartType), s.setChartConfig(S.previousState.chartConfig), s.setDisplayConfig(S.previousState.displayConfig), S.previousState.analysisType && s.setAnalysisType(S.previousState.analysisType)), C({
|
|
3932
3794
|
isOpen: !1,
|
|
3933
3795
|
userPrompt: "",
|
|
3934
3796
|
isGenerating: !1,
|
|
@@ -3938,24 +3800,24 @@ function dr(e) {
|
|
|
3938
3800
|
previousConfig: null
|
|
3939
3801
|
});
|
|
3940
3802
|
}, [
|
|
3941
|
-
|
|
3942
|
-
|
|
3803
|
+
S.previousState,
|
|
3804
|
+
S.previousConfig,
|
|
3943
3805
|
o,
|
|
3944
|
-
|
|
3806
|
+
w,
|
|
3945
3807
|
s
|
|
3946
|
-
]), [
|
|
3808
|
+
]), [te, j] = G("idle"), M = t.effectiveIsValidQuery;
|
|
3947
3809
|
return {
|
|
3948
|
-
aiState:
|
|
3810
|
+
aiState: S,
|
|
3949
3811
|
openAI: E,
|
|
3950
3812
|
closeAI: D,
|
|
3951
3813
|
setAIPrompt: O,
|
|
3952
3814
|
generateAI: k,
|
|
3953
|
-
acceptAI:
|
|
3954
|
-
cancelAI:
|
|
3955
|
-
shareButtonState:
|
|
3815
|
+
acceptAI: ee,
|
|
3816
|
+
cancelAI: A,
|
|
3817
|
+
shareButtonState: te,
|
|
3956
3818
|
share: V(async () => {
|
|
3957
|
-
if (!
|
|
3958
|
-
let { encoded: e, queryOnly: t } =
|
|
3819
|
+
if (!M) return;
|
|
3820
|
+
let { encoded: e, queryOnly: t } = nr(o.getState().save());
|
|
3959
3821
|
if (!e) return;
|
|
3960
3822
|
let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
|
|
3961
3823
|
try {
|
|
@@ -3964,17 +3826,17 @@ function dr(e) {
|
|
|
3964
3826
|
let e = document.createElement("textarea");
|
|
3965
3827
|
e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
|
|
3966
3828
|
}
|
|
3967
|
-
|
|
3968
|
-
|
|
3829
|
+
j(t ? "copied-no-chart" : "copied"), setTimeout(() => {
|
|
3830
|
+
j("idle");
|
|
3969
3831
|
}, 2e3);
|
|
3970
|
-
}, [
|
|
3971
|
-
canShare:
|
|
3832
|
+
}, [M, o]),
|
|
3833
|
+
canShare: M
|
|
3972
3834
|
};
|
|
3973
3835
|
}
|
|
3974
3836
|
//#endregion
|
|
3975
3837
|
//#region src/client/hooks/useAnalysisBuilderHook.ts
|
|
3976
|
-
function
|
|
3977
|
-
let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o =
|
|
3838
|
+
function dr(e = {}) {
|
|
3839
|
+
let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = Hn({ externalColorPalette: n }), c = Yn({
|
|
3978
3840
|
currentQuery: o.currentQuery,
|
|
3979
3841
|
allQueries: o.allQueries,
|
|
3980
3842
|
multiQueryConfig: o.multiQueryConfig,
|
|
@@ -3989,7 +3851,7 @@ function fr(e = {}) {
|
|
|
3989
3851
|
serverFlowQuery: o.serverFlowQuery,
|
|
3990
3852
|
serverRetentionQuery: o.serverRetentionQuery,
|
|
3991
3853
|
retentionValidation: o.retentionValidation
|
|
3992
|
-
}), l =
|
|
3854
|
+
}), l = ur({
|
|
3993
3855
|
state: o,
|
|
3994
3856
|
query: c,
|
|
3995
3857
|
aiEndpoint: a?.aiEndpoint,
|
|
@@ -4164,7 +4026,7 @@ function fr(e = {}) {
|
|
|
4164
4026
|
}
|
|
4165
4027
|
//#endregion
|
|
4166
4028
|
//#region src/client/utils/funnelValidation.ts
|
|
4167
|
-
function
|
|
4029
|
+
function fr(e, t) {
|
|
4168
4030
|
let n = [];
|
|
4169
4031
|
if (!t?.cubes) return n;
|
|
4170
4032
|
if (typeof e.dimension == "string") {
|
|
@@ -4188,7 +4050,7 @@ function pr(e, t) {
|
|
|
4188
4050
|
}
|
|
4189
4051
|
return n;
|
|
4190
4052
|
}
|
|
4191
|
-
function
|
|
4053
|
+
function pr(e) {
|
|
4192
4054
|
let t = [];
|
|
4193
4055
|
for (let n = 0; n < e.length; n++) {
|
|
4194
4056
|
let r = e[n], i = r.query;
|
|
@@ -4200,17 +4062,17 @@ function mr(e) {
|
|
|
4200
4062
|
}
|
|
4201
4063
|
return t;
|
|
4202
4064
|
}
|
|
4203
|
-
function
|
|
4065
|
+
function mr(e, t) {
|
|
4204
4066
|
if (typeof e.dimension == "string") return !0;
|
|
4205
|
-
let n =
|
|
4067
|
+
let n = ve(t);
|
|
4206
4068
|
return n ? e.dimension.some((e) => e.cube === n) : !1;
|
|
4207
4069
|
}
|
|
4208
|
-
function
|
|
4070
|
+
function hr(e, t) {
|
|
4209
4071
|
let n = [];
|
|
4210
4072
|
for (let r = 0; r < t.length; r++) {
|
|
4211
4073
|
let i = t[r];
|
|
4212
|
-
if (!
|
|
4213
|
-
let e =
|
|
4074
|
+
if (!mr(e, i.query)) {
|
|
4075
|
+
let e = ve(i.query) || "unknown";
|
|
4214
4076
|
n.push({
|
|
4215
4077
|
type: "cross_cube",
|
|
4216
4078
|
message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
|
|
@@ -4220,26 +4082,26 @@ function gr(e, t) {
|
|
|
4220
4082
|
}
|
|
4221
4083
|
return n;
|
|
4222
4084
|
}
|
|
4223
|
-
function
|
|
4085
|
+
function gr(e) {
|
|
4224
4086
|
return e ? /^P(?:\d+Y)?(?:\d+M)?(?:\d+W)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$/.test(e) ? null : {
|
|
4225
4087
|
type: "time_window",
|
|
4226
4088
|
message: `Invalid time window format "${e}". Expected ISO 8601 duration (e.g., P7D, PT1H)`
|
|
4227
4089
|
} : null;
|
|
4228
4090
|
}
|
|
4229
|
-
function
|
|
4091
|
+
function _r(e, t) {
|
|
4230
4092
|
let n = [], r = [];
|
|
4231
4093
|
e.steps.length < 2 && n.push({
|
|
4232
4094
|
type: "general",
|
|
4233
4095
|
message: "Funnel requires at least 2 steps"
|
|
4234
|
-
}), e.bindingKey?.dimension ? (n.push(...
|
|
4096
|
+
}), e.bindingKey?.dimension ? (n.push(...fr(e.bindingKey, t)), n.push(...hr(e.bindingKey, e.steps))) : n.push({
|
|
4235
4097
|
type: "binding_key",
|
|
4236
4098
|
message: "Binding key dimension is required"
|
|
4237
|
-
}), n.push(...
|
|
4099
|
+
}), n.push(...pr(e.steps));
|
|
4238
4100
|
for (let t = 0; t < e.steps.length; t++) {
|
|
4239
|
-
let r = e.steps[t], i =
|
|
4101
|
+
let r = e.steps[t], i = gr(r.timeToConvert);
|
|
4240
4102
|
i && (i.stepIndex = t, n.push(i));
|
|
4241
4103
|
}
|
|
4242
|
-
let i =
|
|
4104
|
+
let i = gr(e.globalTimeWindow);
|
|
4243
4105
|
return i && n.push(i), e.steps.length > 5 && r.push({
|
|
4244
4106
|
type: "general",
|
|
4245
4107
|
message: "Funnels with more than 5 steps may have reduced performance"
|
|
@@ -4249,7 +4111,7 @@ function vr(e, t) {
|
|
|
4249
4111
|
warnings: r
|
|
4250
4112
|
};
|
|
4251
4113
|
}
|
|
4252
|
-
function
|
|
4114
|
+
function vr(e, t) {
|
|
4253
4115
|
return t < 2 ? {
|
|
4254
4116
|
isValid: !1,
|
|
4255
4117
|
message: "Add at least 2 steps for funnel"
|
|
@@ -4258,7 +4120,7 @@ function yr(e, t) {
|
|
|
4258
4120
|
message: "Select a binding key dimension"
|
|
4259
4121
|
} : { isValid: !0 };
|
|
4260
4122
|
}
|
|
4261
|
-
function
|
|
4123
|
+
function yr(e) {
|
|
4262
4124
|
if (!e?.cubes) return [];
|
|
4263
4125
|
let t = [];
|
|
4264
4126
|
for (let n of e.cubes) if (n.dimensions) for (let e of n.dimensions) (e.type === "string" || e.type === "number") && t.push({
|
|
@@ -4268,7 +4130,7 @@ function br(e) {
|
|
|
4268
4130
|
});
|
|
4269
4131
|
return t;
|
|
4270
4132
|
}
|
|
4271
|
-
function
|
|
4133
|
+
function br(e) {
|
|
4272
4134
|
if (!e?.dimension) return "Select binding key...";
|
|
4273
4135
|
if (typeof e.dimension == "string") return e.dimension.split(".")[1] || e.dimension;
|
|
4274
4136
|
if (e.dimension.length > 0) {
|
|
@@ -4278,6 +4140,6 @@ function xr(e) {
|
|
|
4278
4140
|
return "Select binding key...";
|
|
4279
4141
|
}
|
|
4280
4142
|
//#endregion
|
|
4281
|
-
export {
|
|
4143
|
+
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 };
|
|
4282
4144
|
|
|
4283
|
-
//# sourceMappingURL=analysis-builder-shared-
|
|
4145
|
+
//# sourceMappingURL=analysis-builder-shared-CoX_nmo0.js.map
|