drizzle-cube 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/ActivityGridChart.config-Bc7mPqcf.cjs +1 -0
- package/dist/adapters/ActivityGridChart.config-Dd2YDeaM.js +2 -0
- package/dist/adapters/AreaChart.config-BqNusnpg.js +2 -0
- package/dist/adapters/AreaChart.config-dI84V34B.cjs +1 -0
- package/dist/adapters/BarChart.config-B9MQjgLJ.cjs +1 -0
- package/dist/adapters/BarChart.config-Cq_qcxBA.js +2 -0
- package/dist/adapters/BoxPlotChart.config-XmtRN2xq.cjs +1 -0
- package/dist/adapters/BoxPlotChart.config-Zc-JGV-W.js +2 -0
- package/dist/adapters/BubbleChart.config-CU_18uxb.js +2 -0
- package/dist/adapters/BubbleChart.config-CbhOzA6-.cjs +1 -0
- package/dist/adapters/CandlestickChart.config-Bwo3uaa-.js +2 -0
- package/dist/adapters/CandlestickChart.config-CmRBlWFv.cjs +1 -0
- package/dist/adapters/DataTable.config-7JNSj6qQ.js +2 -0
- package/dist/adapters/DataTable.config-DNxm1sYk.cjs +1 -0
- package/dist/adapters/DotStripChart.config-B7Dl-T1h.js +2 -0
- package/dist/adapters/DotStripChart.config-Co4g1fpZ.cjs +1 -0
- package/dist/adapters/FunnelChart.config-D1TpuGtL.cjs +1 -0
- package/dist/adapters/FunnelChart.config-vuZScOHQ.js +2 -0
- package/dist/adapters/GaugeChart.config-BMgUHKhC.cjs +1 -0
- package/dist/adapters/GaugeChart.config-zdpFydo6.js +2 -0
- package/dist/adapters/HeatMapChart.config-4XMab1zq.js +2 -0
- package/dist/adapters/HeatMapChart.config-C-Ns6QBq.cjs +1 -0
- package/dist/adapters/KpiDelta.config-BGdqsHcc.js +2 -0
- package/dist/adapters/KpiDelta.config-DuNxrGIi.cjs +1 -0
- package/dist/adapters/KpiNumber.config-CkPWpcSz.js +2 -0
- package/dist/adapters/KpiNumber.config-DMGmuA3i.cjs +1 -0
- package/dist/adapters/KpiText.config-Bvtuv8vE.js +2 -0
- package/dist/adapters/KpiText.config-DOMLO16U.cjs +1 -0
- package/dist/adapters/LineChart.config-CJmTSmZ1.js +2 -0
- package/dist/adapters/LineChart.config-CrkGu0aa.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-BgY5Xc97.cjs +1 -0
- package/dist/adapters/MarkdownChart.config-Cm6G4Yuh.js +2 -0
- package/dist/adapters/MeasureProfileChart.config-BYwDo_ox.cjs +1 -0
- package/dist/adapters/MeasureProfileChart.config-Dt7npubZ.js +2 -0
- package/dist/adapters/PieChart.config-BRbPctBN.cjs +1 -0
- package/dist/adapters/PieChart.config-HZofeody.js +2 -0
- package/dist/adapters/ProportionBarChart.config-B_rTtGZr.cjs +1 -0
- package/dist/adapters/ProportionBarChart.config-ChCSoM0L.js +2 -0
- package/dist/adapters/RadarChart.config-B9OdMEib.js +2 -0
- package/dist/adapters/RadarChart.config-BOgPD2Kz.cjs +1 -0
- package/dist/adapters/RadialBarChart.config-CeP7jEbq.js +2 -0
- package/dist/adapters/RadialBarChart.config-sivA1Jmo.cjs +1 -0
- package/dist/adapters/RecordsTable.config-BInSgo-G.js +2 -0
- package/dist/adapters/RecordsTable.config-CVmxLdjz.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-8ry7gh6X.cjs +1 -0
- package/dist/adapters/RetentionCombinedChart.config-Bxtxnlcf.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-DCtOD8dO.js +2 -0
- package/dist/adapters/RetentionHeatmap.config-i-LgmmIT.cjs +1 -0
- package/dist/adapters/SankeyChart.config-DfpeHfNT.cjs +1 -0
- package/dist/adapters/SankeyChart.config-hfM0ACm1.js +2 -0
- package/dist/adapters/ScatterChart.config-BD2vfOZ6.js +2 -0
- package/dist/adapters/ScatterChart.config-CdpvRueF.cjs +1 -0
- package/dist/adapters/SunburstChart.config-Boyt88L_.cjs +1 -0
- package/dist/adapters/SunburstChart.config-BvrofzMv.js +2 -0
- package/dist/adapters/TreeMapChart.config-DBrqwtqT.js +2 -0
- package/dist/adapters/TreeMapChart.config-KcRLlZAG.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-CuCGaIl5.cjs +1 -0
- package/dist/adapters/WaterfallChart.config-DZ8H0V2L.js +2 -0
- package/dist/adapters/{compiler-CQJ5GOwF.js → compiler-BFLAXV7W.js} +1160 -1861
- package/dist/adapters/compiler-DG6dLFQU.cjs +166 -0
- package/dist/adapters/core/index.cjs +1 -1
- package/dist/adapters/core/index.js +1 -1
- package/dist/adapters/{core-DgTGXxDu.cjs → core-CrJu6vJY.cjs} +1 -1
- package/dist/adapters/{core-DXkuSUBg.js → core-l3KMTu9u.js} +3 -3
- 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/{server/google-eKAc20al.js → adapters/google-DRY7jnOh.js} +46 -28
- package/dist/adapters/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
- package/dist/adapters/handler-CRGZ8gd2.cjs +25 -0
- package/dist/adapters/{handler-CphYSZRh.js → handler-DESp4wPg.js} +454 -237
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +4 -4
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +2 -2
- package/dist/adapters/mcp-transport-BqdBHmXL.js +730 -0
- package/dist/adapters/mcp-transport-D8xZJLPD.cjs +42 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +5 -5
- package/dist/adapters/{openai-CBrN4nxl.js → openai-BJyU4kvE.js} +3 -3
- package/dist/adapters/{openai-CSzWluuv.cjs → openai-DH9MtcLA.cjs} +1 -1
- package/dist/adapters/{openai-D-VMcPao.js → openai-DK_KWiI7.js} +1 -1
- package/dist/adapters/{openai-CI9vGKSf.cjs → openai-GO3M7Hwi.cjs} +2 -2
- package/dist/adapters/{utils-DkmShl5f.js → utils-BhlkVCzZ.js} +1985 -1122
- package/dist/adapters/utils-C1JpSDOX.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +17 -3
- package/dist/adapters/utils.js +1 -1
- package/dist/cjs/adapters/utils.d.ts +17 -3
- package/dist/cjs/client/charts/chartConfigRegistry.d.ts +7 -0
- package/dist/cjs/client/charts/chartConfigs.d.ts +17 -1
- package/dist/cjs/client/client/CubeClient.d.ts +11 -1
- package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
- package/dist/cjs/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
- package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
- package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
- package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
- package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
- package/dist/cjs/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
- package/dist/cjs/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
- package/dist/cjs/client/components/charts/DotStripChart.config.d.ts +15 -0
- package/dist/cjs/client/components/charts/DotStripChart.d.ts +4 -0
- package/dist/cjs/client/components/charts/DotStripChart.helpers.d.ts +91 -0
- package/dist/cjs/client/components/charts/RecordsTable.config.d.ts +10 -0
- package/dist/cjs/client/components/charts/RecordsTable.d.ts +4 -0
- package/dist/cjs/client/components/charts/recordsTableHooks.d.ts +68 -0
- package/dist/cjs/client/icons/types.d.ts +2 -0
- package/dist/cjs/client/index.d.ts +2 -2
- package/dist/cjs/client/types.d.ts +97 -1
- package/dist/cjs/client/utils/recordsTableUtils.d.ts +71 -0
- package/dist/cjs/client/utils/rowLinkUtils.d.ts +35 -0
- package/dist/cjs/server/agent/chart-validation.d.ts +1 -1
- package/dist/cjs/server/ai/chart-schema.d.ts +117 -0
- package/dist/cjs/server/ai/discovery-helpers.d.ts +14 -0
- package/dist/cjs/server/ai/discovery.d.ts +6 -0
- package/dist/cjs/server/ai/query-schema.d.ts +1 -1
- package/dist/cjs/server/attribute-dimensions.d.ts +11 -8
- package/dist/cjs/server/builders/group-by-builder.d.ts +15 -0
- package/dist/cjs/server/compiler.d.ts +3 -4
- package/dist/cjs/server/executor.d.ts +15 -0
- package/dist/cjs/server/index.d.ts +2 -0
- package/dist/cjs/server/query-handlers.d.ts +1 -0
- package/dist/cjs/server/query-validator.d.ts +36 -4
- package/dist/cjs/server/types/core.d.ts +5 -0
- package/dist/cjs/server/types/cube.d.ts +12 -0
- package/dist/cjs/server/types/query.d.ts +8 -0
- package/dist/cli/index.cjs +134 -52
- package/dist/client/charts/chartConfigRegistry.d.ts +7 -0
- package/dist/client/charts/chartConfigs.d.ts +17 -1
- package/dist/client/charts.js +13 -13
- package/dist/client/chunks/{DashboardEditModal-9An5EDAz.js → DashboardEditModal-BliiIHcI.js} +1653 -1188
- package/dist/client/chunks/DashboardEditModal-BliiIHcI.js.map +1 -0
- package/dist/client/chunks/DotStripChart-ChwsVeRU.js +408 -0
- package/dist/client/chunks/DotStripChart-ChwsVeRU.js.map +1 -0
- package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js → ProportionBarChart-D-Qt9nkF.js} +3 -3
- package/dist/client/chunks/{ProportionBarChart-BVcbGY2C.js.map → ProportionBarChart-D-Qt9nkF.js.map} +1 -1
- package/dist/client/chunks/RecordsTable-aG-QYXOH.js +556 -0
- package/dist/client/chunks/RecordsTable-aG-QYXOH.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js → RetentionCombinedChart-BRZ9w7ah.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-D68Rvdi-.js.map → RetentionCombinedChart-BRZ9w7ah.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js → RetentionHeatmap-LkTt89pK.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-CE7BAjrB.js.map → RetentionHeatmap-LkTt89pK.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-D1pYvvwc.js → analysis-builder-C0gJ3kDD.js} +169 -168
- package/dist/client/chunks/{analysis-builder-D1pYvvwc.js.map → analysis-builder-C0gJ3kDD.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-BQvwUc6z.js → analysis-builder-shared-dqcpl_WL.js} +965 -954
- package/dist/client/chunks/analysis-builder-shared-dqcpl_WL.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-DvD_4wJz.js → chart-activity-grid-CJzxC18G.js} +175 -84
- package/dist/client/chunks/chart-activity-grid-CJzxC18G.js.map +1 -0
- package/dist/client/chunks/{chart-area-DPp3hSOK.js → chart-area-C66dgy84.js} +21 -21
- package/dist/client/chunks/{chart-area-DPp3hSOK.js.map → chart-area-C66dgy84.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-Od3pOyZ0.js → chart-bar-D9kiSOCT.js} +5 -5
- package/dist/client/chunks/{chart-bar-Od3pOyZ0.js.map → chart-bar-D9kiSOCT.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js → chart-box-plot-FsLIMisc.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-l0iFn2n2.js.map → chart-box-plot-FsLIMisc.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js → chart-bubble-BzyvrqKs.js} +2 -2
- package/dist/client/chunks/{chart-bubble-Dl0RcP8N.js.map → chart-bubble-BzyvrqKs.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-DZMqbscF.js → chart-candlestick-6lD35bLw.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-DZMqbscF.js.map → chart-candlestick-6lD35bLw.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-DgiNBOWf.js → chart-data-table-Cou9qOab.js} +1222 -1029
- package/dist/client/chunks/chart-data-table-Cou9qOab.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-YLZlyN1X.js → chart-funnel-B0775aaT.js} +2 -2
- package/dist/client/chunks/{chart-funnel-YLZlyN1X.js.map → chart-funnel-B0775aaT.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-BsqE2wwF.js → chart-gauge-pf-2E8w9.js} +3 -3
- package/dist/client/chunks/{chart-gauge-BsqE2wwF.js.map → chart-gauge-pf-2E8w9.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-BsND8RM_.js → chart-heat-map-EzVGe6fl.js} +3 -3
- package/dist/client/chunks/{chart-heat-map-BsND8RM_.js.map → chart-heat-map-EzVGe6fl.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js → chart-kpi-delta-lfskDdx4.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-m0azuva-.js.map → chart-kpi-delta-lfskDdx4.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js → chart-kpi-number-BnsofbTf.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-6JS15SqF.js.map → chart-kpi-number-BnsofbTf.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js → chart-kpi-text-U5EdmdkV.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-BqX8p8Jn.js.map → chart-kpi-text-U5EdmdkV.js.map} +1 -1
- package/dist/client/chunks/{chart-line-NCmpxBfE.js → chart-line-IwXqPY80.js} +3 -3
- package/dist/client/chunks/{chart-line-NCmpxBfE.js.map → chart-line-IwXqPY80.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-ZOobqiiX.js → chart-markdown-yxN_xBP9.js} +2 -2
- package/dist/client/chunks/{chart-markdown-ZOobqiiX.js.map → chart-markdown-yxN_xBP9.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js → chart-measure-profile-Bs4vhBJQ.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-CBAZaicJ.js.map → chart-measure-profile-Bs4vhBJQ.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-ChrasEI8.js → chart-pie-LDJfDXfX.js} +15 -15
- package/dist/client/chunks/{chart-pie-ChrasEI8.js.map → chart-pie-LDJfDXfX.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-CxSVF7yL.js → chart-radar-BZY6TP9m.js} +13 -13
- package/dist/client/chunks/{chart-radar-CxSVF7yL.js.map → chart-radar-BZY6TP9m.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js → chart-radial-bar-aga05X7h.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar--SN0Wph0.js.map → chart-radial-bar-aga05X7h.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-CDOSGg9r.js → chart-sankey-MRCoWFd4.js} +2 -2
- package/dist/client/chunks/{chart-sankey-CDOSGg9r.js.map → chart-sankey-MRCoWFd4.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-DgcEF-kI.js → chart-scatter-DP-nn9hH.js} +3 -3
- package/dist/client/chunks/{chart-scatter-DgcEF-kI.js.map → chart-scatter-DP-nn9hH.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js → chart-sunburst-DE4EX7zi.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-MB-jlGBm.js.map → chart-sunburst-DE4EX7zi.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-DeDXveVd.js → chart-tree-map-C3O6uQcP.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-DeDXveVd.js.map → chart-tree-map-C3O6uQcP.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js → chart-waterfall-DU2Fg_7P.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-ur4vkO1j.js.map → chart-waterfall-DU2Fg_7P.js.map} +1 -1
- package/dist/client/chunks/charts-core-DnirPG1F.js +190 -0
- package/dist/client/chunks/charts-core-DnirPG1F.js.map +1 -0
- package/dist/client/chunks/charts-loader-tCSbqT7H.js +87 -0
- package/dist/client/chunks/charts-loader-tCSbqT7H.js.map +1 -0
- package/dist/client/chunks/{en-US-BE6VoG0o.js → en-US-HP6FHuNy.js} +3 -1
- package/dist/client/chunks/{en-US-BE6VoG0o.js.map → en-US-HP6FHuNy.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-CMXHDBr0.js → nl-NL-B9VnaVAm.js} +89 -1
- package/dist/client/chunks/nl-NL-B9VnaVAm.js.map +1 -0
- package/dist/client/chunks/{schema-visualization-BEbFtUIL.js → schema-visualization-o1zzuMQy.js} +3 -3
- package/dist/client/chunks/{schema-visualization-BEbFtUIL.js.map → schema-visualization-o1zzuMQy.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js → useDirtyStateTracking-DTYbmRBn.js} +15 -15
- package/dist/client/chunks/{useDirtyStateTracking-CSDg96Rw.js.map → useDirtyStateTracking-DTYbmRBn.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js → useExplainAI-MuC9jBn-.js} +16 -16
- package/dist/client/chunks/{useExplainAI-BnkoZ-zS.js.map → useExplainAI-MuC9jBn-.js.map} +1 -1
- package/dist/client/chunks/{vendor-BmJDaduD.js → vendor-XQT9APIq.js} +49 -49
- package/dist/client/chunks/{vendor-BmJDaduD.js.map → vendor-XQT9APIq.js.map} +1 -1
- package/dist/client/client/CubeClient.d.ts +11 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +4 -2
- package/dist/client/components/AnalysisBuilder/ColumnFormatsEditor.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +3 -2
- package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +7 -1
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +2 -1
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +4 -1
- package/dist/client/components/analyticsPortlet/usePortletDeadMembers.d.ts +24 -0
- package/dist/client/components/analyticsPortlet/usePortletPagination.d.ts +21 -0
- package/dist/client/components/charts/DotStripChart.config.d.ts +15 -0
- package/dist/client/components/charts/DotStripChart.d.ts +4 -0
- package/dist/client/components/charts/DotStripChart.helpers.d.ts +91 -0
- package/dist/client/components/charts/RecordsTable.config.d.ts +10 -0
- package/dist/client/components/charts/RecordsTable.d.ts +4 -0
- package/dist/client/components/charts/recordsTableHooks.d.ts +68 -0
- package/dist/client/components.js +1 -1
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons/types.d.ts +2 -0
- package/dist/client/icons.js +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +213 -213
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +97 -1
- package/dist/client/utils/recordsTableUtils.d.ts +71 -0
- package/dist/client/utils/rowLinkUtils.d.ts +35 -0
- package/dist/client/utils.js +14 -14
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +101 -101
- package/dist/server/agent/chart-validation.d.ts +1 -1
- package/dist/server/ai/chart-schema.d.ts +117 -0
- package/dist/server/ai/discovery-helpers.d.ts +14 -0
- package/dist/server/ai/discovery.d.ts +6 -0
- package/dist/server/ai/query-schema.d.ts +1 -1
- package/dist/server/attribute-dimensions.d.ts +11 -8
- package/dist/server/builders/group-by-builder.d.ts +15 -0
- package/dist/server/compiler.d.ts +3 -4
- package/dist/server/executor.d.ts +15 -0
- package/dist/{adapters/google-eKAc20al.js → server/google-DRY7jnOh.js} +46 -28
- package/dist/server/{google-BhvizbFR.cjs → google-PsZzwedr.cjs} +2 -2
- package/dist/server/index.cjs +34 -34
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.js +1913 -1445
- package/dist/server/query-handlers.d.ts +1 -0
- package/dist/server/query-validator.d.ts +36 -4
- package/dist/server/types/core.d.ts +5 -0
- package/dist/server/types/cube.d.ts +12 -0
- package/dist/server/types/query.d.ts +8 -0
- package/package.json +1 -1
- package/dist/adapters/ActivityGridChart.config-BQhBE_Mr.js +0 -2
- package/dist/adapters/ActivityGridChart.config-C3tSuOGV.cjs +0 -1
- package/dist/adapters/AreaChart.config-3cme8HyQ.js +0 -2
- package/dist/adapters/AreaChart.config-BSxrT52Z.cjs +0 -1
- package/dist/adapters/BarChart.config-BKS8IecE.cjs +0 -1
- package/dist/adapters/BarChart.config-lt_7PdIi.js +0 -2
- package/dist/adapters/BoxPlotChart.config-B7qvRnrF.cjs +0 -1
- package/dist/adapters/BoxPlotChart.config-Dv6ECj2j.js +0 -2
- package/dist/adapters/BubbleChart.config-BrIH7OAy.cjs +0 -1
- package/dist/adapters/BubbleChart.config-Fhotb7Pg.js +0 -2
- package/dist/adapters/CandlestickChart.config-CWH41FmF.cjs +0 -1
- package/dist/adapters/CandlestickChart.config-RPtXuxsX.js +0 -2
- package/dist/adapters/DataTable.config-71L0GzlT.js +0 -2
- package/dist/adapters/DataTable.config-BsOMQq3J.cjs +0 -1
- package/dist/adapters/FunnelChart.config-Cqte9C04.cjs +0 -1
- package/dist/adapters/FunnelChart.config-DJtwWeNz.js +0 -2
- package/dist/adapters/GaugeChart.config-WkwZ9VdS.cjs +0 -1
- package/dist/adapters/GaugeChart.config-vpVQlP5B.js +0 -2
- package/dist/adapters/HeatMapChart.config-DcmkDl07.cjs +0 -1
- package/dist/adapters/HeatMapChart.config-DsmMgGxJ.js +0 -2
- package/dist/adapters/KpiDelta.config-DVy561BH.js +0 -2
- package/dist/adapters/KpiDelta.config-dpqwLHNE.cjs +0 -1
- package/dist/adapters/KpiNumber.config-927l8nq8.js +0 -2
- package/dist/adapters/KpiNumber.config-BqFBMfPf.cjs +0 -1
- package/dist/adapters/KpiText.config-C-fZXuHq.cjs +0 -1
- package/dist/adapters/KpiText.config-CWoXuhMA.js +0 -2
- package/dist/adapters/LineChart.config-DTp7pqOY.js +0 -2
- package/dist/adapters/LineChart.config-DUGvSjcH.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-23Dmv2Ty.cjs +0 -1
- package/dist/adapters/MarkdownChart.config-Cb2TnS0I.js +0 -2
- package/dist/adapters/MeasureProfileChart.config-B2qbWdhy.cjs +0 -1
- package/dist/adapters/MeasureProfileChart.config-CvBCeI5b.js +0 -2
- package/dist/adapters/PieChart.config-BzJb13QA.js +0 -2
- package/dist/adapters/PieChart.config-plCn5Ehr.cjs +0 -1
- package/dist/adapters/ProportionBarChart.config-1r-_moBH.cjs +0 -1
- package/dist/adapters/ProportionBarChart.config-CN6TtHTp.js +0 -2
- package/dist/adapters/RadarChart.config-BYhdj9M7.js +0 -2
- package/dist/adapters/RadarChart.config-CeUMP-1g.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-B88yXNsq.cjs +0 -1
- package/dist/adapters/RadialBarChart.config-ZMK9HMoh.js +0 -2
- package/dist/adapters/RetentionCombinedChart.config-B5yvgUHM.cjs +0 -1
- package/dist/adapters/RetentionCombinedChart.config-Dd-YMdK8.js +0 -2
- package/dist/adapters/RetentionHeatmap.config-BYzDleoV.cjs +0 -1
- package/dist/adapters/RetentionHeatmap.config-Dvj7yTB0.js +0 -2
- package/dist/adapters/SankeyChart.config-CPFRmgFb.cjs +0 -1
- package/dist/adapters/SankeyChart.config-ClgqXM1N.js +0 -2
- package/dist/adapters/ScatterChart.config-CvJiqPa5.cjs +0 -1
- package/dist/adapters/ScatterChart.config-DLZ3rYMq.js +0 -2
- package/dist/adapters/SunburstChart.config-C_1V5hoQ.cjs +0 -1
- package/dist/adapters/SunburstChart.config-FNU75NCg.js +0 -2
- package/dist/adapters/TreeMapChart.config-CprZk_YF.js +0 -2
- package/dist/adapters/TreeMapChart.config-DNwd0ge9.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-BBhcN_Fh.cjs +0 -1
- package/dist/adapters/WaterfallChart.config-H7s6SSV3.js +0 -2
- package/dist/adapters/compiler-BaLO10VN.cjs +0 -166
- package/dist/adapters/handler-DrRT6c14.cjs +0 -25
- package/dist/adapters/mcp-transport-BGkSz-ZT.cjs +0 -40
- package/dist/adapters/mcp-transport-fJud19xz.js +0 -606
- package/dist/adapters/utils-BY0-KFyI.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-9An5EDAz.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-BQvwUc6z.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-DvD_4wJz.js.map +0 -1
- package/dist/client/chunks/chart-data-table-DgiNBOWf.js.map +0 -1
- package/dist/client/chunks/charts-core-BAH5pkSB.js +0 -215
- package/dist/client/chunks/charts-core-BAH5pkSB.js.map +0 -1
- package/dist/client/chunks/charts-loader-eToV8je7.js +0 -85
- package/dist/client/chunks/charts-loader-eToV8je7.js.map +0 -1
- package/dist/client/chunks/nl-NL-CMXHDBr0.js.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
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 {
|
|
3
|
-
import { C as
|
|
4
|
-
import { a as
|
|
5
|
-
import { A, D as
|
|
6
|
-
import {
|
|
7
|
-
import { a as
|
|
8
|
-
import { r as
|
|
9
|
-
import { n as
|
|
10
|
-
import
|
|
11
|
-
import { Fragment as
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-XQT9APIq.js";
|
|
2
|
+
import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-Cou9qOab.js";
|
|
3
|
+
import { C as f, E as p, S as m, _ as h, b as g, bt as _, d as v, g as y, j as b, l as x, nt as S, rt as C, tt as w, u as T, v as E, y as D, yt as O } from "./DashboardEditModal-BliiIHcI.js";
|
|
4
|
+
import { a as k, s as ee, t as A } from "./retention-ChW9jYdy.js";
|
|
5
|
+
import { A as te, D as j, F as M, I as ne, M as N, N as re, O as ie, P as ae, S as P, T as F, a as oe, d as se, j as I, k as L, l as ce, n as le, r as ue, s as de } from "./useDirtyStateTracking-DTYbmRBn.js";
|
|
6
|
+
import { B as fe, F as R } from "./chart-activity-grid-CJzxC18G.js";
|
|
7
|
+
import { a as pe, i as me } from "./useExplainAI-MuC9jBn-.js";
|
|
8
|
+
import { r as he, s as ge } from "./chart-funnel-B0775aaT.js";
|
|
9
|
+
import { n as _e } from "./charts-core-DnirPG1F.js";
|
|
10
|
+
import z, { createContext as ve, memo as ye, useCallback as B, useContext as be, useEffect as V, useMemo as H, useRef as U, useState as W } from "react";
|
|
11
|
+
import { Fragment as G, jsx as K, jsxs as q } from "react/jsx-runtime";
|
|
12
12
|
//#region src/shared/date-utils.ts
|
|
13
|
-
function
|
|
13
|
+
function xe(e) {
|
|
14
14
|
let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
|
|
15
15
|
if (n === "today") {
|
|
16
16
|
let e = new Date(t);
|
|
@@ -123,7 +123,7 @@ function ye(e) {
|
|
|
123
123
|
}
|
|
124
124
|
return null;
|
|
125
125
|
}
|
|
126
|
-
function
|
|
126
|
+
function Se(e) {
|
|
127
127
|
if (Array.isArray(e)) {
|
|
128
128
|
if (e.length < 2) return null;
|
|
129
129
|
let t = new Date(e[0]), n = new Date(e[1]);
|
|
@@ -132,12 +132,12 @@ function be(e) {
|
|
|
132
132
|
end: n
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
|
-
return
|
|
135
|
+
return xe(e);
|
|
136
136
|
}
|
|
137
|
-
function
|
|
137
|
+
function J(e) {
|
|
138
138
|
return e.toISOString().split("T")[0];
|
|
139
139
|
}
|
|
140
|
-
function
|
|
140
|
+
function Ce(e, t) {
|
|
141
141
|
let n = t.getTime() - e.getTime(), r = Math.ceil(n / 864e5), i = new Date(e);
|
|
142
142
|
i.setUTCDate(i.getUTCDate() - 1), i.setUTCHours(23, 59, 59, 999);
|
|
143
143
|
let a = new Date(i);
|
|
@@ -148,24 +148,24 @@ function Se(e, t) {
|
|
|
148
148
|
}
|
|
149
149
|
//#endregion
|
|
150
150
|
//#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
|
|
151
|
-
function
|
|
152
|
-
let n =
|
|
151
|
+
function we(e, t) {
|
|
152
|
+
let n = I(t, e);
|
|
153
153
|
if (!n?.dateRange) return;
|
|
154
|
-
let r =
|
|
154
|
+
let r = Se(n.dateRange);
|
|
155
155
|
if (!r) return;
|
|
156
|
-
let i =
|
|
157
|
-
return [[
|
|
156
|
+
let i = Ce(r.start, r.end);
|
|
157
|
+
return [[J(r.start), J(r.end)], [J(i.start), J(i.end)]];
|
|
158
158
|
}
|
|
159
|
-
function
|
|
160
|
-
return
|
|
159
|
+
function Te(e, t) {
|
|
160
|
+
return M(e, t, "inDateRange");
|
|
161
161
|
}
|
|
162
162
|
//#endregion
|
|
163
163
|
//#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
|
|
164
|
-
function
|
|
165
|
-
let
|
|
166
|
-
if (!i) for (let e of
|
|
167
|
-
|
|
168
|
-
let
|
|
164
|
+
function Ee(e, t, n, r, i = !1, a, o = !1) {
|
|
165
|
+
let s = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), c = n;
|
|
166
|
+
if (!i) for (let e of s) c = Te(c, e);
|
|
167
|
+
c = c.filter((e) => w(e));
|
|
168
|
+
let l = {
|
|
169
169
|
measures: e.map((e) => e.field),
|
|
170
170
|
dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
|
|
171
171
|
timeDimensions: t.filter((e) => e.isTimeDimension).map((e) => {
|
|
@@ -174,16 +174,17 @@ function Te(e, t, n, r, i = !1, a) {
|
|
|
174
174
|
granularity: e.granularity || "day"
|
|
175
175
|
};
|
|
176
176
|
if (e.enableComparison) {
|
|
177
|
-
let r =
|
|
177
|
+
let r = we(e.field, n);
|
|
178
178
|
r && (t.compareDateRange = r);
|
|
179
179
|
}
|
|
180
180
|
return t;
|
|
181
181
|
}),
|
|
182
|
-
filters:
|
|
182
|
+
filters: c.length > 0 ? c : void 0,
|
|
183
183
|
order: r && Object.keys(r).length > 0 ? r : void 0,
|
|
184
|
-
limit: a ?? void 0
|
|
184
|
+
limit: a ?? void 0,
|
|
185
|
+
ungrouped: o || void 0
|
|
185
186
|
};
|
|
186
|
-
return
|
|
187
|
+
return l.measures?.length === 0 && delete l.measures, l.dimensions?.length === 0 && delete l.dimensions, l.timeDimensions?.length === 0 && delete l.timeDimensions, l;
|
|
187
188
|
}
|
|
188
189
|
function Y() {
|
|
189
190
|
return {
|
|
@@ -198,7 +199,7 @@ function Y() {
|
|
|
198
199
|
}
|
|
199
200
|
//#endregion
|
|
200
201
|
//#region src/client/components/AnalysisBuilder/filterConfigModalUtils.ts
|
|
201
|
-
function
|
|
202
|
+
function De(e, t, n, r) {
|
|
202
203
|
if (!t || n === 0) return { type: "none" };
|
|
203
204
|
switch (e) {
|
|
204
205
|
case "ArrowDown": return {
|
|
@@ -219,60 +220,60 @@ function Ee(e, t, n, r) {
|
|
|
219
220
|
}
|
|
220
221
|
//#endregion
|
|
221
222
|
//#region src/client/components/AnalysisBuilder/FilterValueInput.tsx
|
|
222
|
-
var
|
|
223
|
-
function
|
|
223
|
+
var Oe = d("close"), ke = d("chevronDown");
|
|
224
|
+
function Ae({ filter: e, dateRange: t }) {
|
|
224
225
|
let { t: n } = R(), { rangeType: r, numberValue: i, label: a, isOpen: o, onToggle: s, onRangeTypeChange: c, onNumberValueChange: l, onCustomStartDate: u, onCustomEndDate: d, onOpen: f } = t;
|
|
225
|
-
return /* @__PURE__ */
|
|
226
|
+
return /* @__PURE__ */ q("div", {
|
|
226
227
|
className: "dc:space-y-2",
|
|
227
228
|
children: [
|
|
228
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ q("div", {
|
|
229
230
|
className: "dc:relative",
|
|
230
|
-
children: [/* @__PURE__ */
|
|
231
|
+
children: [/* @__PURE__ */ q("button", {
|
|
231
232
|
onClick: () => {
|
|
232
233
|
f(), s(!o);
|
|
233
234
|
},
|
|
234
235
|
className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
|
|
235
|
-
children: [/* @__PURE__ */
|
|
236
|
+
children: [/* @__PURE__ */ K("span", {
|
|
236
237
|
className: "dc:truncate",
|
|
237
238
|
children: a
|
|
238
|
-
}), /* @__PURE__ */
|
|
239
|
-
}), o && /* @__PURE__ */
|
|
239
|
+
}), /* @__PURE__ */ K(ke, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
|
|
240
|
+
}), o && /* @__PURE__ */ K("div", {
|
|
240
241
|
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",
|
|
241
|
-
children:
|
|
242
|
+
children: h.map((e) => /* @__PURE__ */ K("button", {
|
|
242
243
|
onClick: () => c(e.value),
|
|
243
244
|
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"}`,
|
|
244
245
|
children: n(e.label)
|
|
245
246
|
}, e.value))
|
|
246
247
|
})]
|
|
247
248
|
}),
|
|
248
|
-
|
|
249
|
+
j(r) && /* @__PURE__ */ q("div", {
|
|
249
250
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
250
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ K("input", {
|
|
251
252
|
type: "number",
|
|
252
253
|
min: "1",
|
|
253
254
|
max: "1000",
|
|
254
255
|
value: i,
|
|
255
256
|
onChange: (e) => l(Math.max(1, parseInt(e.target.value) || 1)),
|
|
256
257
|
className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text dc:w-20"
|
|
257
|
-
}), /* @__PURE__ */
|
|
258
|
+
}), /* @__PURE__ */ K("span", {
|
|
258
259
|
className: "dc:text-sm text-dc-text-muted",
|
|
259
260
|
children: r.replace("last_n_", "")
|
|
260
261
|
})]
|
|
261
262
|
}),
|
|
262
|
-
r === "custom" && /* @__PURE__ */
|
|
263
|
+
r === "custom" && /* @__PURE__ */ q("div", {
|
|
263
264
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
264
265
|
children: [
|
|
265
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ K("input", {
|
|
266
267
|
type: "date",
|
|
267
268
|
value: Array.isArray(e.dateRange) ? e.dateRange[0] : "",
|
|
268
269
|
onChange: u,
|
|
269
270
|
className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-2 dc:py-2 bg-dc-surface text-dc-text"
|
|
270
271
|
}),
|
|
271
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ K("span", {
|
|
272
273
|
className: "dc:text-sm text-dc-text-muted",
|
|
273
274
|
children: n("filter.modal.dateTo")
|
|
274
275
|
}),
|
|
275
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ K("input", {
|
|
276
277
|
type: "date",
|
|
277
278
|
value: Array.isArray(e.dateRange) ? e.dateRange[1] : "",
|
|
278
279
|
onChange: d,
|
|
@@ -283,26 +284,26 @@ function ke({ filter: e, dateRange: t }) {
|
|
|
283
284
|
]
|
|
284
285
|
});
|
|
285
286
|
}
|
|
286
|
-
function
|
|
287
|
+
function je({ filter: e, combo: t }) {
|
|
287
288
|
let { t: n } = R(), { options: r, loading: i, error: a, highlightedIndex: o, listRef: s, onSelect: c } = t;
|
|
288
|
-
return i ? /* @__PURE__ */
|
|
289
|
+
return i ? /* @__PURE__ */ K("div", {
|
|
289
290
|
className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
|
|
290
291
|
children: n("filter.modal.loading")
|
|
291
|
-
}) : a ? /* @__PURE__ */
|
|
292
|
+
}) : a ? /* @__PURE__ */ q("div", {
|
|
292
293
|
className: "dc:px-3 dc:py-2 dc:text-sm text-dc-error",
|
|
293
294
|
children: [n("filter.modal.errorPrefix"), String(a)]
|
|
294
|
-
}) : r.length === 0 ? /* @__PURE__ */
|
|
295
|
+
}) : r.length === 0 ? /* @__PURE__ */ K("div", {
|
|
295
296
|
className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
|
|
296
297
|
children: n("filter.modal.noValues")
|
|
297
|
-
}) : /* @__PURE__ */
|
|
298
|
+
}) : /* @__PURE__ */ K("div", {
|
|
298
299
|
ref: s,
|
|
299
300
|
className: "dc:max-h-40 dc:overflow-y-auto",
|
|
300
301
|
children: r.map((t, n) => {
|
|
301
302
|
let r = e.values?.includes(t);
|
|
302
|
-
return /* @__PURE__ */
|
|
303
|
+
return /* @__PURE__ */ q("button", {
|
|
303
304
|
onClick: (e) => c(t, e),
|
|
304
305
|
className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm dc:transition-colors ${n === o ? "bg-dc-surface-hover" : ""} ${r ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text hover:bg-dc-surface-hover"}`,
|
|
305
|
-
children: [String(t), r && /* @__PURE__ */
|
|
306
|
+
children: [String(t), r && /* @__PURE__ */ K("span", {
|
|
306
307
|
className: "dc:float-right",
|
|
307
308
|
children: "✓"
|
|
308
309
|
})]
|
|
@@ -310,41 +311,41 @@ function Ae({ filter: e, combo: t }) {
|
|
|
310
311
|
})
|
|
311
312
|
});
|
|
312
313
|
}
|
|
313
|
-
function
|
|
314
|
+
function Me({ filter: e, operatorMeta: t, combo: n }) {
|
|
314
315
|
let { t: r } = R(), { isOpen: i, loading: a, searchText: o, onSearchTextChange: s, onHighlightedIndexChange: c, onRemove: l, onKeyDown: u, onOpen: d } = n;
|
|
315
|
-
return /* @__PURE__ */
|
|
316
|
+
return /* @__PURE__ */ q("div", {
|
|
316
317
|
className: "dc:space-y-2",
|
|
317
318
|
children: [
|
|
318
|
-
e.values && e.values.length > 0 && /* @__PURE__ */
|
|
319
|
+
e.values && e.values.length > 0 && /* @__PURE__ */ K("div", {
|
|
319
320
|
className: "dc:flex dc:flex-wrap dc:gap-1.5",
|
|
320
|
-
children: e.values.map((e, t) => /* @__PURE__ */
|
|
321
|
+
children: e.values.map((e, t) => /* @__PURE__ */ q("span", {
|
|
321
322
|
className: "dc:inline-flex dc:items-center dc:gap-1 bg-dc-primary/10 text-dc-primary dc:text-sm dc:px-2 dc:py-1 dc:rounded-sm",
|
|
322
|
-
children: [/* @__PURE__ */
|
|
323
|
+
children: [/* @__PURE__ */ K("span", {
|
|
323
324
|
className: "dc:max-w-[150px] dc:truncate",
|
|
324
325
|
children: String(e)
|
|
325
|
-
}), /* @__PURE__ */
|
|
326
|
+
}), /* @__PURE__ */ K("button", {
|
|
326
327
|
onClick: () => l(e),
|
|
327
328
|
className: "hover:text-dc-danger",
|
|
328
|
-
children: /* @__PURE__ */
|
|
329
|
+
children: /* @__PURE__ */ K(Oe, { className: "dc:w-3.5 dc:h-3.5" })
|
|
329
330
|
})]
|
|
330
331
|
}, t))
|
|
331
332
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
333
|
+
/* @__PURE__ */ q("div", {
|
|
333
334
|
className: "dc:relative",
|
|
334
|
-
children: [/* @__PURE__ */
|
|
335
|
+
children: [/* @__PURE__ */ q("button", {
|
|
335
336
|
onClick: () => {
|
|
336
337
|
d();
|
|
337
338
|
},
|
|
338
339
|
className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
|
|
339
|
-
children: [/* @__PURE__ */
|
|
340
|
+
children: [/* @__PURE__ */ K("span", {
|
|
340
341
|
className: "text-dc-text-muted dc:truncate",
|
|
341
342
|
children: r(a ? "filter.modal.loading" : "filter.modal.selectValue")
|
|
342
|
-
}), /* @__PURE__ */
|
|
343
|
-
}), i && /* @__PURE__ */
|
|
343
|
+
}), /* @__PURE__ */ K(ke, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
|
|
344
|
+
}), i && /* @__PURE__ */ q("div", {
|
|
344
345
|
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",
|
|
345
|
-
children: [/* @__PURE__ */
|
|
346
|
+
children: [/* @__PURE__ */ K("div", {
|
|
346
347
|
className: "dc:p-2 dc:border-b border-dc-border",
|
|
347
|
-
children: /* @__PURE__ */
|
|
348
|
+
children: /* @__PURE__ */ K("input", {
|
|
348
349
|
type: "text",
|
|
349
350
|
value: o,
|
|
350
351
|
onChange: (e) => {
|
|
@@ -355,39 +356,39 @@ function je({ filter: e, operatorMeta: t, combo: n }) {
|
|
|
355
356
|
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",
|
|
356
357
|
autoFocus: !0
|
|
357
358
|
})
|
|
358
|
-
}), /* @__PURE__ */
|
|
359
|
+
}), /* @__PURE__ */ K(je, {
|
|
359
360
|
filter: e,
|
|
360
361
|
combo: n
|
|
361
362
|
})]
|
|
362
363
|
})]
|
|
363
364
|
}),
|
|
364
|
-
t?.supportsMultipleValues && /* @__PURE__ */
|
|
365
|
+
t?.supportsMultipleValues && /* @__PURE__ */ K("p", {
|
|
365
366
|
className: "dc:text-xs text-dc-text-muted",
|
|
366
367
|
children: r("filter.modal.multiSelectHint")
|
|
367
368
|
})
|
|
368
369
|
]
|
|
369
370
|
});
|
|
370
371
|
}
|
|
371
|
-
function
|
|
372
|
+
function Ne({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
372
373
|
let { t: i } = R(), { filter: a, operatorMeta: o, shouldShowDateRange: s, shouldShowComboBox: c } = e, { onBetweenStart: l, onBetweenEnd: u, onDate: d, onDirect: f } = r;
|
|
373
|
-
return o?.requiresValues ? s ? /* @__PURE__ */
|
|
374
|
+
return o?.requiresValues ? s ? /* @__PURE__ */ K(Ae, {
|
|
374
375
|
filter: a,
|
|
375
376
|
dateRange: t
|
|
376
|
-
}) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */
|
|
377
|
+
}) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ q("div", {
|
|
377
378
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
378
379
|
children: [
|
|
379
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ K("input", {
|
|
380
381
|
type: "number",
|
|
381
382
|
value: a.values?.[0] ?? "",
|
|
382
383
|
onChange: l,
|
|
383
384
|
placeholder: i("filter.modal.min"),
|
|
384
385
|
className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
385
386
|
}),
|
|
386
|
-
/* @__PURE__ */
|
|
387
|
+
/* @__PURE__ */ K("span", {
|
|
387
388
|
className: "dc:text-sm text-dc-text-muted",
|
|
388
389
|
children: i("filter.modal.to")
|
|
389
390
|
}),
|
|
390
|
-
/* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ K("input", {
|
|
391
392
|
type: "number",
|
|
392
393
|
value: a.values?.[1] ?? "",
|
|
393
394
|
onChange: u,
|
|
@@ -395,94 +396,94 @@ function Me({ field: e, dateRange: t, combo: n, inputs: r }) {
|
|
|
395
396
|
className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
396
397
|
})
|
|
397
398
|
]
|
|
398
|
-
}) : o?.valueType === "date" ? /* @__PURE__ */
|
|
399
|
+
}) : o?.valueType === "date" ? /* @__PURE__ */ K("input", {
|
|
399
400
|
type: "date",
|
|
400
401
|
value: a.values?.[0] || "",
|
|
401
402
|
onChange: d,
|
|
402
403
|
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"
|
|
403
|
-
}) : o?.valueType === "number" ? /* @__PURE__ */
|
|
404
|
+
}) : o?.valueType === "number" ? /* @__PURE__ */ K("input", {
|
|
404
405
|
type: "number",
|
|
405
406
|
value: a.values?.[0] ?? "",
|
|
406
407
|
onChange: f,
|
|
407
408
|
placeholder: i("filter.modal.enterNumber"),
|
|
408
409
|
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"
|
|
409
|
-
}) : c ? /* @__PURE__ */
|
|
410
|
+
}) : c ? /* @__PURE__ */ K(Me, {
|
|
410
411
|
filter: a,
|
|
411
412
|
operatorMeta: o,
|
|
412
413
|
combo: n
|
|
413
|
-
}) : /* @__PURE__ */
|
|
414
|
+
}) : /* @__PURE__ */ K("input", {
|
|
414
415
|
type: "text",
|
|
415
416
|
value: a.values?.[0] ?? "",
|
|
416
417
|
onChange: f,
|
|
417
418
|
placeholder: i("filter.modal.enterValue"),
|
|
418
419
|
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 placeholder-dc-text-muted"
|
|
419
|
-
}) : /* @__PURE__ */
|
|
420
|
+
}) : /* @__PURE__ */ K("div", {
|
|
420
421
|
className: "dc:text-sm text-dc-text-muted dc:italic dc:py-2",
|
|
421
422
|
children: i("filter.modal.noValueRequired")
|
|
422
423
|
});
|
|
423
424
|
}
|
|
424
425
|
//#endregion
|
|
425
426
|
//#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
|
|
426
|
-
var
|
|
427
|
-
function
|
|
428
|
-
let { t: a } = R(), [o, s] =
|
|
427
|
+
var Pe = d("close"), Fe = d("chevronDown"), Ie = d("dimension"), Le = d("timeDimension"), Re = d("measure");
|
|
428
|
+
function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
|
|
429
|
+
let { t: a } = R(), [o, s] = W(e), [c, l] = W(!1), [u, d] = W(!1), [f, p] = W(!1), [m, _] = W("this_month"), [v, b] = W(1), [x, w] = W(""), [T, E] = W(null), [O, k] = W(-1), ee = U(null), A = U(null), te = le(x, 300), M = D(o.member, t), ne = M?.field.type || "string", N = ne === "time", re = M?.fieldType === "measure", ie = M?.fieldType === "dimension", ae = g(o.member, t), P = S[o.operator], oe = C(ne), se = N && o.operator === "inDateRange", I = B(() => [
|
|
429
430
|
"equals",
|
|
430
431
|
"notEquals",
|
|
431
432
|
"in",
|
|
432
433
|
"notIn"
|
|
433
|
-
].includes(o.operator) &&
|
|
434
|
+
].includes(o.operator) && ie && !N, [
|
|
434
435
|
o.operator,
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
])(), { values: L, loading:
|
|
438
|
-
|
|
436
|
+
ie,
|
|
437
|
+
N
|
|
438
|
+
])(), { values: L, loading: ce, error: de, searchValues: fe } = ue(o.member, I);
|
|
439
|
+
V(() => {
|
|
439
440
|
if (!i) {
|
|
440
|
-
|
|
441
|
+
E(null);
|
|
441
442
|
return;
|
|
442
443
|
}
|
|
443
444
|
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));
|
|
444
|
-
|
|
445
|
+
E(r ? {
|
|
445
446
|
bottom: window.innerHeight - e.top + 8,
|
|
446
447
|
left: a
|
|
447
448
|
} : {
|
|
448
449
|
top: e.bottom + 8,
|
|
449
450
|
left: a
|
|
450
451
|
});
|
|
451
|
-
}, [i]),
|
|
452
|
+
}, [i]), V(() => {
|
|
452
453
|
let e = (e) => {
|
|
453
454
|
ee.current && !ee.current.contains(e.target) && (l(!1), d(!1), p(!1));
|
|
454
455
|
};
|
|
455
456
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
456
|
-
}, []),
|
|
457
|
-
u && I &&
|
|
457
|
+
}, []), V(() => {
|
|
458
|
+
u && I && fe && fe("", !0), u || k(-1);
|
|
458
459
|
}, [
|
|
459
460
|
u,
|
|
460
461
|
I,
|
|
461
|
-
|
|
462
|
-
]),
|
|
462
|
+
fe
|
|
463
|
+
]), V(() => {
|
|
463
464
|
if (O >= 0 && A.current) {
|
|
464
465
|
let e = A.current.children[O];
|
|
465
466
|
e && e.scrollIntoView({ block: "nearest" });
|
|
466
467
|
}
|
|
467
|
-
}, [O]),
|
|
468
|
-
u && I &&
|
|
468
|
+
}, [O]), V(() => {
|
|
469
|
+
u && I && fe && te !== void 0 && fe(te);
|
|
469
470
|
}, [
|
|
470
|
-
|
|
471
|
+
te,
|
|
471
472
|
u,
|
|
472
473
|
I,
|
|
473
|
-
|
|
474
|
-
]),
|
|
475
|
-
if (!
|
|
476
|
-
let e =
|
|
474
|
+
fe
|
|
475
|
+
]), V(() => {
|
|
476
|
+
if (!se) return;
|
|
477
|
+
let e = y(o.dateRange);
|
|
477
478
|
e && (_(e.rangeType), e.numberValue !== void 0 && b(e.numberValue));
|
|
478
|
-
}, [o.dateRange,
|
|
479
|
-
let
|
|
479
|
+
}, [o.dateRange, se]);
|
|
480
|
+
let pe = B((e) => {
|
|
480
481
|
s({
|
|
481
482
|
member: o.member,
|
|
482
483
|
operator: e,
|
|
483
484
|
values: []
|
|
484
485
|
}), l(!1);
|
|
485
|
-
}, [o.member]),
|
|
486
|
+
}, [o.member]), me = B((e, t) => {
|
|
486
487
|
let n = t?.shiftKey ?? !1, r = o.values || [];
|
|
487
488
|
P?.supportsMultipleValues ? (r.includes(e) ? s({
|
|
488
489
|
...o,
|
|
@@ -494,25 +495,25 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
494
495
|
...o,
|
|
495
496
|
values: [e]
|
|
496
497
|
}), d(!1)), w(""), k(-1);
|
|
497
|
-
}, [o, P?.supportsMultipleValues]),
|
|
498
|
+
}, [o, P?.supportsMultipleValues]), he = B((e) => {
|
|
498
499
|
let t = (o.values || []).filter((t) => t !== e);
|
|
499
500
|
s({
|
|
500
501
|
...o,
|
|
501
502
|
values: t
|
|
502
503
|
});
|
|
503
|
-
}, [o]),
|
|
504
|
-
let t =
|
|
504
|
+
}, [o]), ge = B((e) => {
|
|
505
|
+
let t = De(e.key, u, L.length, O);
|
|
505
506
|
if (t.type !== "none") {
|
|
506
507
|
if (e.preventDefault(), t.type === "highlight") return k(t.index);
|
|
507
|
-
if (t.type === "select") return
|
|
508
|
+
if (t.type === "select") return me(L[t.index], { shiftKey: e.shiftKey });
|
|
508
509
|
d(!1), k(-1);
|
|
509
510
|
}
|
|
510
511
|
}, [
|
|
511
512
|
u,
|
|
512
513
|
L,
|
|
513
514
|
O,
|
|
514
|
-
|
|
515
|
-
]),
|
|
515
|
+
me
|
|
516
|
+
]), _e = B((e) => {
|
|
516
517
|
let t = e.target.value;
|
|
517
518
|
if (P?.valueType === "number") {
|
|
518
519
|
let e = parseFloat(t);
|
|
@@ -527,104 +528,104 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
527
528
|
...o,
|
|
528
529
|
values: t ? [t] : []
|
|
529
530
|
});
|
|
530
|
-
}, [o, P?.valueType]),
|
|
531
|
+
}, [o, P?.valueType]), z = B((e) => {
|
|
531
532
|
let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
|
|
532
533
|
s({
|
|
533
534
|
...o,
|
|
534
535
|
values: n
|
|
535
536
|
});
|
|
536
|
-
}, [o]),
|
|
537
|
+
}, [o]), ve = B((e) => {
|
|
537
538
|
let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
|
|
538
539
|
s({
|
|
539
540
|
...o,
|
|
540
541
|
values: n
|
|
541
542
|
});
|
|
542
|
-
}, [o]),
|
|
543
|
+
}, [o]), ye = B((e) => {
|
|
543
544
|
let t = e.target.value;
|
|
544
545
|
s({
|
|
545
546
|
...o,
|
|
546
547
|
values: t ? [t] : []
|
|
547
548
|
});
|
|
548
|
-
}, [o]),
|
|
549
|
+
}, [o]), be = B((e) => {
|
|
549
550
|
_(e), p(!1);
|
|
550
551
|
let t;
|
|
551
552
|
if (e === "custom") {
|
|
552
553
|
let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
553
554
|
t = [e, e];
|
|
554
|
-
} else t =
|
|
555
|
+
} else t = j(e) ? F(e, v) : F(e);
|
|
555
556
|
s({
|
|
556
557
|
...o,
|
|
557
558
|
dateRange: t
|
|
558
559
|
});
|
|
559
|
-
}, [o,
|
|
560
|
-
if (b(e),
|
|
561
|
-
let t =
|
|
560
|
+
}, [o, v]), xe = B((e) => {
|
|
561
|
+
if (b(e), j(m)) {
|
|
562
|
+
let t = F(m, e);
|
|
562
563
|
s({
|
|
563
564
|
...o,
|
|
564
565
|
dateRange: t
|
|
565
566
|
});
|
|
566
567
|
}
|
|
567
|
-
}, [o,
|
|
568
|
+
}, [o, m]), Se = B((e) => {
|
|
568
569
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
|
|
569
570
|
s({
|
|
570
571
|
...o,
|
|
571
572
|
dateRange: [t, n]
|
|
572
573
|
});
|
|
573
|
-
}, [o]),
|
|
574
|
+
}, [o]), J = B((e) => {
|
|
574
575
|
let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : ["", o.dateRange || ""])[0] || t;
|
|
575
576
|
s({
|
|
576
577
|
...o,
|
|
577
578
|
dateRange: [n, t]
|
|
578
579
|
});
|
|
579
|
-
}, [o]), Ce = a(
|
|
580
|
+
}, [o]), Ce = a(oe.find((e) => e.operator === o.operator)?.label || o.operator), we = a(h.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
|
|
580
581
|
filter: o,
|
|
581
582
|
operatorMeta: P,
|
|
582
|
-
shouldShowDateRange:
|
|
583
|
+
shouldShowDateRange: se,
|
|
583
584
|
shouldShowComboBox: I
|
|
584
|
-
},
|
|
585
|
-
rangeType:
|
|
586
|
-
numberValue:
|
|
585
|
+
}, Ee = {
|
|
586
|
+
rangeType: m,
|
|
587
|
+
numberValue: v,
|
|
587
588
|
label: we,
|
|
588
589
|
isOpen: f,
|
|
589
590
|
onToggle: p,
|
|
590
|
-
onRangeTypeChange:
|
|
591
|
-
onNumberValueChange:
|
|
592
|
-
onCustomStartDate:
|
|
593
|
-
onCustomEndDate:
|
|
594
|
-
onOpen:
|
|
591
|
+
onRangeTypeChange: be,
|
|
592
|
+
onNumberValueChange: xe,
|
|
593
|
+
onCustomStartDate: Se,
|
|
594
|
+
onCustomEndDate: J,
|
|
595
|
+
onOpen: B(() => {
|
|
595
596
|
l(!1), d(!1);
|
|
596
597
|
}, [])
|
|
597
|
-
},
|
|
598
|
+
}, Y = {
|
|
598
599
|
isOpen: u,
|
|
599
600
|
options: L,
|
|
600
|
-
loading:
|
|
601
|
+
loading: ce,
|
|
601
602
|
error: de,
|
|
602
|
-
searchText:
|
|
603
|
+
searchText: x,
|
|
603
604
|
highlightedIndex: O,
|
|
604
605
|
listRef: A,
|
|
605
606
|
onSearchTextChange: w,
|
|
606
607
|
onHighlightedIndexChange: k,
|
|
607
|
-
onSelect:
|
|
608
|
-
onRemove:
|
|
609
|
-
onKeyDown:
|
|
610
|
-
onOpen:
|
|
608
|
+
onSelect: me,
|
|
609
|
+
onRemove: he,
|
|
610
|
+
onKeyDown: ge,
|
|
611
|
+
onOpen: B(() => {
|
|
611
612
|
l(!1), p(!1), d((e) => !e);
|
|
612
613
|
}, [])
|
|
613
|
-
}, Oe =
|
|
614
|
-
onBetweenStart:
|
|
615
|
-
onBetweenEnd:
|
|
616
|
-
onDate:
|
|
617
|
-
onDirect:
|
|
614
|
+
}, Oe = H(() => ({
|
|
615
|
+
onBetweenStart: z,
|
|
616
|
+
onBetweenEnd: ve,
|
|
617
|
+
onDate: ye,
|
|
618
|
+
onDirect: _e
|
|
618
619
|
}), [
|
|
619
|
-
|
|
620
|
-
_e,
|
|
620
|
+
z,
|
|
621
621
|
ve,
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
622
|
+
ye,
|
|
623
|
+
_e
|
|
624
|
+
]), ke = N ? Le : re ? Re : Ie;
|
|
625
|
+
return /* @__PURE__ */ K(G, { children: /* @__PURE__ */ K("div", {
|
|
625
626
|
className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${T ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
|
|
626
627
|
onClick: r,
|
|
627
|
-
children: /* @__PURE__ */
|
|
628
|
+
children: /* @__PURE__ */ q("div", {
|
|
628
629
|
ref: ee,
|
|
629
630
|
className: T ? "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",
|
|
630
631
|
style: {
|
|
@@ -638,71 +639,71 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
638
639
|
},
|
|
639
640
|
onClick: (e) => e.stopPropagation(),
|
|
640
641
|
children: [
|
|
641
|
-
/* @__PURE__ */
|
|
642
|
+
/* @__PURE__ */ q("div", {
|
|
642
643
|
className: "dc:flex dc:items-center dc:justify-between dc:p-4 dc:border-b border-dc-border",
|
|
643
|
-
children: [/* @__PURE__ */
|
|
644
|
+
children: [/* @__PURE__ */ K("h2", {
|
|
644
645
|
className: "dc:text-lg dc:font-semibold text-dc-text",
|
|
645
646
|
children: a("filter.modal.title")
|
|
646
|
-
}), /* @__PURE__ */
|
|
647
|
+
}), /* @__PURE__ */ K("button", {
|
|
647
648
|
onClick: r,
|
|
648
649
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
|
|
649
|
-
children: /* @__PURE__ */
|
|
650
|
+
children: /* @__PURE__ */ K(Pe, { className: "dc:w-5 dc:h-5" })
|
|
650
651
|
})]
|
|
651
652
|
}),
|
|
652
|
-
/* @__PURE__ */
|
|
653
|
+
/* @__PURE__ */ q("div", {
|
|
653
654
|
className: "dc:p-4 dc:space-y-4",
|
|
654
655
|
children: [
|
|
655
|
-
/* @__PURE__ */
|
|
656
|
+
/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
|
|
656
657
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
657
658
|
children: a("filter.modal.fieldLabel")
|
|
658
|
-
}), /* @__PURE__ */
|
|
659
|
+
}), /* @__PURE__ */ q("div", {
|
|
659
660
|
className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
|
|
660
|
-
children: [/* @__PURE__ */
|
|
661
|
+
children: [/* @__PURE__ */ K(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ K("span", {
|
|
661
662
|
className: "dc:text-sm dc:font-medium text-dc-text",
|
|
662
|
-
children:
|
|
663
|
+
children: ae
|
|
663
664
|
})]
|
|
664
665
|
})] }),
|
|
665
|
-
/* @__PURE__ */
|
|
666
|
+
/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
|
|
666
667
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
667
668
|
children: a("filter.modal.operatorLabel")
|
|
668
|
-
}), /* @__PURE__ */
|
|
669
|
+
}), /* @__PURE__ */ q("div", {
|
|
669
670
|
className: "dc:relative",
|
|
670
|
-
children: [/* @__PURE__ */
|
|
671
|
+
children: [/* @__PURE__ */ q("button", {
|
|
671
672
|
onClick: () => {
|
|
672
673
|
d(!1), p(!1), l(!c);
|
|
673
674
|
},
|
|
674
675
|
className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
|
|
675
|
-
children: [/* @__PURE__ */
|
|
676
|
+
children: [/* @__PURE__ */ K("span", {
|
|
676
677
|
className: "dc:truncate",
|
|
677
678
|
children: Ce
|
|
678
|
-
}), /* @__PURE__ */
|
|
679
|
-
}), c && /* @__PURE__ */
|
|
679
|
+
}), /* @__PURE__ */ K(Fe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
|
|
680
|
+
}), c && /* @__PURE__ */ K("div", {
|
|
680
681
|
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",
|
|
681
|
-
children:
|
|
682
|
-
onClick: () =>
|
|
682
|
+
children: oe.map((e) => /* @__PURE__ */ K("button", {
|
|
683
|
+
onClick: () => pe(e.operator),
|
|
683
684
|
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"}`,
|
|
684
685
|
children: a(e.label)
|
|
685
686
|
}, e.operator))
|
|
686
687
|
})]
|
|
687
688
|
})] }),
|
|
688
|
-
/* @__PURE__ */
|
|
689
|
+
/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
|
|
689
690
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
690
691
|
children: a("filter.modal.valueLabel")
|
|
691
|
-
}), /* @__PURE__ */
|
|
692
|
+
}), /* @__PURE__ */ K(Ne, {
|
|
692
693
|
field: Te,
|
|
693
|
-
dateRange:
|
|
694
|
-
combo:
|
|
694
|
+
dateRange: Ee,
|
|
695
|
+
combo: Y,
|
|
695
696
|
inputs: Oe
|
|
696
697
|
})] })
|
|
697
698
|
]
|
|
698
699
|
}),
|
|
699
|
-
/* @__PURE__ */
|
|
700
|
+
/* @__PURE__ */ q("div", {
|
|
700
701
|
className: "dc:flex dc:items-center dc:justify-end dc:gap-2 dc:p-4 dc:border-t border-dc-border",
|
|
701
|
-
children: [/* @__PURE__ */
|
|
702
|
+
children: [/* @__PURE__ */ K("button", {
|
|
702
703
|
onClick: r,
|
|
703
704
|
className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-text-secondary hover:text-dc-text dc:transition-colors",
|
|
704
705
|
children: a("common.actions.cancel")
|
|
705
|
-
}), /* @__PURE__ */
|
|
706
|
+
}), /* @__PURE__ */ K("button", {
|
|
706
707
|
onClick: () => n(o),
|
|
707
708
|
className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-primary-content bg-dc-primary hover:bg-dc-primary-hover dc:rounded-sm dc:transition-colors",
|
|
708
709
|
children: a("common.actions.save")
|
|
@@ -714,47 +715,47 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
|
|
|
714
715
|
}
|
|
715
716
|
//#endregion
|
|
716
717
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
|
|
717
|
-
var
|
|
718
|
-
function
|
|
719
|
-
let { t: i } = R(), [a, o] =
|
|
720
|
-
return /* @__PURE__ */
|
|
718
|
+
var Be = d("close"), Ve = d("dimension"), He = d("timeDimension"), Ue = d("measure");
|
|
719
|
+
function We({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
720
|
+
let { t: i } = R(), [a, o] = W(!1), s = U(null), c = D(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = g(e.member, t), f = S[e.operator], p = f?.label ? i(f.label) : e.operator, m = Ge(e, f, i), h = l ? He : u ? Ue : Ve;
|
|
721
|
+
return /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ q("div", {
|
|
721
722
|
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",
|
|
722
723
|
children: [
|
|
723
|
-
/* @__PURE__ */
|
|
724
|
+
/* @__PURE__ */ K("span", {
|
|
724
725
|
className: `dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded-sm ${l ? "bg-dc-time-dimension" : u ? "bg-dc-measure" : "bg-dc-dimension"} ${l ? "text-dc-time-dimension-text" : u ? "text-dc-measure-text" : "text-dc-dimension-text"} dc:flex-shrink-0 dc:mt-0.5`,
|
|
725
|
-
children:
|
|
726
|
+
children: h && /* @__PURE__ */ K(h, { className: "dc:w-4 dc:h-4" })
|
|
726
727
|
}),
|
|
727
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ K("button", {
|
|
728
729
|
ref: s,
|
|
729
730
|
onClick: () => o(!0),
|
|
730
731
|
className: "dc:flex-1 dc:min-w-0 dc:text-left",
|
|
731
732
|
title: `${d} ${p} ${m}`,
|
|
732
|
-
children: /* @__PURE__ */
|
|
733
|
+
children: /* @__PURE__ */ q("div", {
|
|
733
734
|
className: "dc:text-sm text-dc-text dc:break-words",
|
|
734
735
|
children: [
|
|
735
|
-
/* @__PURE__ */
|
|
736
|
+
/* @__PURE__ */ K("span", {
|
|
736
737
|
className: "dc:font-medium",
|
|
737
738
|
children: d
|
|
738
739
|
}),
|
|
739
|
-
/* @__PURE__ */
|
|
740
|
+
/* @__PURE__ */ K("span", {
|
|
740
741
|
className: "text-dc-text-muted dc:mx-1",
|
|
741
742
|
children: p
|
|
742
743
|
}),
|
|
743
|
-
/* @__PURE__ */
|
|
744
|
+
/* @__PURE__ */ K("span", {
|
|
744
745
|
className: "text-dc-primary",
|
|
745
746
|
children: m
|
|
746
747
|
})
|
|
747
748
|
]
|
|
748
749
|
})
|
|
749
750
|
}),
|
|
750
|
-
/* @__PURE__ */
|
|
751
|
+
/* @__PURE__ */ K("button", {
|
|
751
752
|
onClick: n,
|
|
752
753
|
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",
|
|
753
754
|
title: i("filter.removeButton.title"),
|
|
754
|
-
children:
|
|
755
|
+
children: Be && /* @__PURE__ */ K(Be, { className: "dc:w-4 dc:h-4" })
|
|
755
756
|
})
|
|
756
757
|
]
|
|
757
|
-
}), a && /* @__PURE__ */
|
|
758
|
+
}), a && /* @__PURE__ */ K(ze, {
|
|
758
759
|
filter: e,
|
|
759
760
|
schema: t,
|
|
760
761
|
onSave: (e) => {
|
|
@@ -764,7 +765,7 @@ function Ue({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
|
|
|
764
765
|
anchorElement: s.current
|
|
765
766
|
})] });
|
|
766
767
|
}
|
|
767
|
-
function
|
|
768
|
+
function Ge(e, t, n) {
|
|
768
769
|
if (!t?.requiresValues) return "";
|
|
769
770
|
if (e.dateRange) return Array.isArray(e.dateRange) ? `${e.dateRange[0]} to ${e.dateRange[1]}` : e.dateRange;
|
|
770
771
|
let r = e.values || [];
|
|
@@ -772,24 +773,24 @@ function We(e, t, n) {
|
|
|
772
773
|
}
|
|
773
774
|
//#endregion
|
|
774
775
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
|
|
775
|
-
var
|
|
776
|
-
function
|
|
777
|
-
let { t: s } = R(), [c, l] =
|
|
778
|
-
|
|
776
|
+
var Ke = d("add"), qe = d("close");
|
|
777
|
+
function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
|
|
778
|
+
let { t: s } = R(), [c, l] = W(!1), u = U(null);
|
|
779
|
+
V(() => {
|
|
779
780
|
let e = (e) => {
|
|
780
781
|
u.current && !u.current.contains(e.target) && l(!1);
|
|
781
782
|
};
|
|
782
783
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
783
784
|
}, []);
|
|
784
|
-
let d =
|
|
785
|
-
n(
|
|
786
|
-
}, [e, n]), f =
|
|
785
|
+
let d = B(() => {
|
|
786
|
+
n(ne(e));
|
|
787
|
+
}, [e, n]), f = B((t, r) => {
|
|
787
788
|
let i = [...e.filters];
|
|
788
789
|
i[t] = r, n({
|
|
789
790
|
...e,
|
|
790
791
|
filters: i
|
|
791
792
|
});
|
|
792
|
-
}, [e, n]), p =
|
|
793
|
+
}, [e, n]), p = B((t) => {
|
|
793
794
|
let i = e.filters.filter((e, n) => n !== t);
|
|
794
795
|
i.length === 0 ? r() : n({
|
|
795
796
|
...e,
|
|
@@ -800,7 +801,7 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
800
801
|
n,
|
|
801
802
|
r,
|
|
802
803
|
a
|
|
803
|
-
]), m =
|
|
804
|
+
]), m = B((t) => {
|
|
804
805
|
let r = {
|
|
805
806
|
type: t,
|
|
806
807
|
filters: []
|
|
@@ -809,23 +810,23 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
809
810
|
...e,
|
|
810
811
|
filters: [...e.filters, r]
|
|
811
812
|
}), l(!1);
|
|
812
|
-
}, [e, n]), h =
|
|
813
|
+
}, [e, n]), h = B(() => {
|
|
813
814
|
i([]), l(!1);
|
|
814
|
-
}, [i]), g =
|
|
815
|
+
}, [i]), g = B((e) => (t = []) => {
|
|
815
816
|
i([e, ...t]);
|
|
816
817
|
}, [i]), _ = () => a % 2 == 0 ? "border-dc-border" : "border-dc-border dark:border-dc-border", v = () => e.type === "and" ? "bg-dc-info-bg/50" : "bg-dc-warning-bg/50", y = e.filters.length, b = s(y === 1 ? "filter.group.condition" : "filter.group.conditions");
|
|
817
|
-
return /* @__PURE__ */
|
|
818
|
+
return /* @__PURE__ */ q("div", {
|
|
818
819
|
className: `dc:border ${_()} dc:rounded-lg bg-dc-surface dc:w-full`,
|
|
819
|
-
children: [/* @__PURE__ */
|
|
820
|
+
children: [/* @__PURE__ */ q("div", {
|
|
820
821
|
className: `dc:flex dc:items-center dc:justify-between dc:px-2 dc:py-1.5 dc:border-b border-dc-border/50 dc:rounded-t-lg ${v()}`,
|
|
821
|
-
children: [/* @__PURE__ */
|
|
822
|
+
children: [/* @__PURE__ */ q("div", {
|
|
822
823
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
823
|
-
children: [/* @__PURE__ */
|
|
824
|
+
children: [/* @__PURE__ */ K("button", {
|
|
824
825
|
onClick: d,
|
|
825
826
|
className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-semibold dc:rounded-sm dc:transition-colors ${e.type === "and" ? "bg-dc-info-bg text-dc-info dc:hover:opacity-80" : "bg-dc-warning-bg text-dc-warning dc:hover:opacity-80"}`,
|
|
826
827
|
title: `Click to switch to ${e.type === "and" ? "OR" : "AND"}`,
|
|
827
828
|
children: e.type.toUpperCase()
|
|
828
|
-
}), /* @__PURE__ */
|
|
829
|
+
}), /* @__PURE__ */ q("span", {
|
|
829
830
|
className: "dc:text-xs text-dc-text-muted",
|
|
830
831
|
children: [
|
|
831
832
|
y,
|
|
@@ -833,61 +834,61 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
833
834
|
b
|
|
834
835
|
]
|
|
835
836
|
})]
|
|
836
|
-
}), /* @__PURE__ */
|
|
837
|
+
}), /* @__PURE__ */ q("div", {
|
|
837
838
|
className: "dc:flex dc:items-center dc:gap-1",
|
|
838
|
-
children: [/* @__PURE__ */
|
|
839
|
+
children: [/* @__PURE__ */ q("div", {
|
|
839
840
|
className: "dc:relative",
|
|
840
841
|
ref: u,
|
|
841
|
-
children: [/* @__PURE__ */
|
|
842
|
+
children: [/* @__PURE__ */ K("button", {
|
|
842
843
|
onClick: () => l(!c),
|
|
843
844
|
className: "dc:p-1 text-dc-text-secondary hover:text-dc-primary hover:bg-dc-surface-hover dc:rounded-sm dc:transition-colors",
|
|
844
845
|
title: "Add condition",
|
|
845
|
-
children: /* @__PURE__ */
|
|
846
|
-
}), c && /* @__PURE__ */
|
|
846
|
+
children: /* @__PURE__ */ K(Ke, { className: "dc:w-4 dc:h-4" })
|
|
847
|
+
}), c && /* @__PURE__ */ q("div", {
|
|
847
848
|
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]",
|
|
848
849
|
children: [
|
|
849
|
-
/* @__PURE__ */
|
|
850
|
+
/* @__PURE__ */ K("button", {
|
|
850
851
|
onClick: h,
|
|
851
852
|
className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
|
|
852
853
|
children: s("filter.group.addFilter")
|
|
853
854
|
}),
|
|
854
|
-
/* @__PURE__ */
|
|
855
|
+
/* @__PURE__ */ K("button", {
|
|
855
856
|
onClick: () => m("and"),
|
|
856
857
|
className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
|
|
857
858
|
children: s("filter.group.addAndGroup")
|
|
858
859
|
}),
|
|
859
|
-
/* @__PURE__ */
|
|
860
|
+
/* @__PURE__ */ K("button", {
|
|
860
861
|
onClick: () => m("or"),
|
|
861
862
|
className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
|
|
862
863
|
children: s("filter.group.addOrGroup")
|
|
863
864
|
})
|
|
864
865
|
]
|
|
865
866
|
})]
|
|
866
|
-
}), !o && /* @__PURE__ */
|
|
867
|
+
}), !o && /* @__PURE__ */ K("button", {
|
|
867
868
|
onClick: r,
|
|
868
869
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:transition-colors",
|
|
869
870
|
title: s("filter.group.removeGroup"),
|
|
870
|
-
children: /* @__PURE__ */
|
|
871
|
+
children: /* @__PURE__ */ K(qe, { className: "dc:w-4 dc:h-4" })
|
|
871
872
|
})]
|
|
872
873
|
})]
|
|
873
|
-
}), /* @__PURE__ */
|
|
874
|
+
}), /* @__PURE__ */ K("div", {
|
|
874
875
|
className: "dc:p-1.5 dc:flex dc:flex-wrap dc:gap-2",
|
|
875
|
-
children: e.filters.length === 0 ? /* @__PURE__ */
|
|
876
|
+
children: e.filters.length === 0 ? /* @__PURE__ */ q("div", {
|
|
876
877
|
className: "dc:text-center dc:py-3",
|
|
877
|
-
children: [/* @__PURE__ */
|
|
878
|
+
children: [/* @__PURE__ */ K("p", {
|
|
878
879
|
className: "dc:text-xs text-dc-text-muted dc:mb-1",
|
|
879
880
|
children: s("filter.group.empty")
|
|
880
|
-
}), /* @__PURE__ */
|
|
881
|
+
}), /* @__PURE__ */ K("button", {
|
|
881
882
|
onClick: () => i([]),
|
|
882
883
|
className: "dc:text-xs text-dc-primary dc:hover:underline",
|
|
883
884
|
children: s("filter.group.addFilterLink")
|
|
884
885
|
})]
|
|
885
|
-
}) : e.filters.map((e, n) =>
|
|
886
|
+
}) : e.filters.map((e, n) => re(e) ? /* @__PURE__ */ K(We, {
|
|
886
887
|
filter: e,
|
|
887
888
|
schema: t,
|
|
888
889
|
onUpdate: (e) => f(n, e),
|
|
889
890
|
onRemove: () => p(n)
|
|
890
|
-
}, `filter-${n}`) :
|
|
891
|
+
}, `filter-${n}`) : N(e) ? /* @__PURE__ */ K(Je, {
|
|
891
892
|
group: e,
|
|
892
893
|
schema: t,
|
|
893
894
|
onUpdate: (e) => f(n, e),
|
|
@@ -900,44 +901,44 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
|
|
|
900
901
|
}
|
|
901
902
|
//#endregion
|
|
902
903
|
//#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
|
|
903
|
-
var
|
|
904
|
-
function
|
|
905
|
-
let { t: a } = R(), [o, s] =
|
|
904
|
+
var Ye = d("add");
|
|
905
|
+
function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
|
|
906
|
+
let { t: a } = R(), [o, s] = W(!1), [c, l] = W(!1), u = U([]), d = L(e), f = B((e) => {
|
|
906
907
|
e.preventDefault(), e.stopPropagation(), l(!0);
|
|
907
|
-
}, []), p =
|
|
908
|
+
}, []), p = B((e) => {
|
|
908
909
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
909
|
-
}, []), m =
|
|
910
|
+
}, []), m = B((e) => {
|
|
910
911
|
e.preventDefault(), e.stopPropagation(), l(!1);
|
|
911
912
|
try {
|
|
912
913
|
let t = JSON.parse(e.dataTransfer.getData("text/plain"));
|
|
913
914
|
t.field && r && r(t.field);
|
|
914
915
|
} catch {}
|
|
915
|
-
}, [r]), h =
|
|
916
|
+
}, [r]), h = te(e), g = B((t, r, i) => {
|
|
916
917
|
let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
|
|
917
918
|
member: t.name,
|
|
918
919
|
operator: o,
|
|
919
920
|
values: []
|
|
920
921
|
};
|
|
921
|
-
a && o === "inDateRange" && (c.dateRange =
|
|
922
|
-
}, [e, n]), _ =
|
|
922
|
+
a && o === "inDateRange" && (c.dateRange = F("this_month")), n(ie(e, u.current, c)), s(!1), u.current = [];
|
|
923
|
+
}, [e, n]), _ = B((t, r) => {
|
|
923
924
|
let i = [...e];
|
|
924
925
|
i[t] = r, n(i);
|
|
925
|
-
}, [e, n]), v =
|
|
926
|
+
}, [e, n]), v = B((t) => {
|
|
926
927
|
n(ae(e, t));
|
|
927
|
-
}, [e, n]), y =
|
|
928
|
+
}, [e, n]), y = B(() => {
|
|
928
929
|
n([]);
|
|
929
|
-
}, [n]), b =
|
|
930
|
+
}, [n]), b = B(() => {
|
|
930
931
|
u.current = [], s(!0);
|
|
931
|
-
}, []), x =
|
|
932
|
+
}, []), x = B((e) => (t = []) => {
|
|
932
933
|
u.current = [...e, ...t], s(!0);
|
|
933
934
|
}, []), S = (n, r, i = []) => {
|
|
934
935
|
let a = [...i, r];
|
|
935
|
-
return
|
|
936
|
+
return re(n) ? /* @__PURE__ */ K(We, {
|
|
936
937
|
filter: n,
|
|
937
938
|
schema: t,
|
|
938
939
|
onUpdate: (e) => _(r, e),
|
|
939
940
|
onRemove: () => v(r)
|
|
940
|
-
}, `filter-${a.join("-")}`) :
|
|
941
|
+
}, `filter-${a.join("-")}`) : N(n) ? /* @__PURE__ */ K(Je, {
|
|
941
942
|
group: n,
|
|
942
943
|
schema: t,
|
|
943
944
|
onUpdate: (e) => _(r, e),
|
|
@@ -946,21 +947,21 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
946
947
|
hideRemoveButton: e.length === 1
|
|
947
948
|
}, `group-${a.join("-")}`) : null;
|
|
948
949
|
};
|
|
949
|
-
return /* @__PURE__ */
|
|
950
|
-
/* @__PURE__ */
|
|
950
|
+
return /* @__PURE__ */ q("div", { children: [
|
|
951
|
+
/* @__PURE__ */ q("button", {
|
|
951
952
|
onClick: b,
|
|
952
953
|
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",
|
|
953
954
|
title: "Add filter",
|
|
954
|
-
children: [/* @__PURE__ */
|
|
955
|
+
children: [/* @__PURE__ */ q(_e, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ q("span", {
|
|
955
956
|
className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
|
|
956
957
|
children: [
|
|
957
958
|
"(",
|
|
958
959
|
d,
|
|
959
960
|
")"
|
|
960
961
|
]
|
|
961
|
-
})] }), /* @__PURE__ */
|
|
962
|
+
})] }), /* @__PURE__ */ q("div", {
|
|
962
963
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
963
|
-
children: [d > 0 && /* @__PURE__ */
|
|
964
|
+
children: [d > 0 && /* @__PURE__ */ K("span", {
|
|
964
965
|
role: "button",
|
|
965
966
|
tabIndex: 0,
|
|
966
967
|
onClick: (e) => {
|
|
@@ -971,23 +972,23 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
971
972
|
},
|
|
972
973
|
className: "dc:text-xs text-dc-text-muted hover:text-dc-error dc:underline dc:cursor-pointer",
|
|
973
974
|
children: a("filter.section.clearAll")
|
|
974
|
-
}), /* @__PURE__ */
|
|
975
|
+
}), /* @__PURE__ */ K(Ye, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
|
|
975
976
|
})]
|
|
976
977
|
}),
|
|
977
|
-
/* @__PURE__ */
|
|
978
|
+
/* @__PURE__ */ K("div", {
|
|
978
979
|
onDragOver: r ? f : void 0,
|
|
979
980
|
onDragLeave: r ? p : void 0,
|
|
980
981
|
onDrop: r ? m : void 0,
|
|
981
982
|
className: `dc:p-2 dc:-mx-2 dc:rounded-lg dc:border-2 dc:border-dashed dc:transition-all ${c ? "border-dc-primary bg-dc-primary/5" : "border-transparent"}`,
|
|
982
|
-
children: e.length === 0 ? /* @__PURE__ */
|
|
983
|
+
children: e.length === 0 ? /* @__PURE__ */ K("p", {
|
|
983
984
|
className: `dc:text-sm ${c ? "text-dc-primary dc:font-medium" : "text-dc-text-muted"}`,
|
|
984
985
|
children: a(c ? "filter.section.dropHint" : "filter.section.empty")
|
|
985
|
-
}) : /* @__PURE__ */
|
|
986
|
+
}) : /* @__PURE__ */ K("div", {
|
|
986
987
|
className: "dc:flex dc:flex-wrap dc:gap-2",
|
|
987
988
|
children: e.map((e, t) => S(e, t))
|
|
988
989
|
})
|
|
989
990
|
}),
|
|
990
|
-
/* @__PURE__ */
|
|
991
|
+
/* @__PURE__ */ K(E, {
|
|
991
992
|
isOpen: o,
|
|
992
993
|
onClose: () => {
|
|
993
994
|
s(!1), u.current = [];
|
|
@@ -1001,33 +1002,33 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
|
|
|
1001
1002
|
}
|
|
1002
1003
|
//#endregion
|
|
1003
1004
|
//#region src/client/components/AnalysisBuilder/ExplainAIPanel.tsx
|
|
1004
|
-
function
|
|
1005
|
+
function Ze(e) {
|
|
1005
1006
|
return typeof e == "string" ? e : typeof e == "object" && e ? JSON.stringify(e) : String(e ?? "");
|
|
1006
1007
|
}
|
|
1007
|
-
var
|
|
1008
|
+
var Qe = {
|
|
1008
1009
|
good: "bg-dc-success-bg text-dc-success border-dc-success",
|
|
1009
1010
|
warning: "bg-dc-warning-bg text-dc-warning border-dc-warning",
|
|
1010
1011
|
critical: "bg-dc-danger-bg text-dc-error border-dc-error"
|
|
1011
|
-
},
|
|
1012
|
+
}, $e = {
|
|
1012
1013
|
critical: "bg-dc-danger-bg text-dc-error",
|
|
1013
1014
|
warning: "bg-dc-warning-bg text-dc-warning",
|
|
1014
1015
|
suggestion: "bg-dc-accent-bg text-dc-accent"
|
|
1015
|
-
},
|
|
1016
|
+
}, et = {
|
|
1016
1017
|
high: "text-dc-error",
|
|
1017
1018
|
medium: "text-dc-warning",
|
|
1018
1019
|
low: "text-dc-text-muted"
|
|
1019
1020
|
};
|
|
1020
|
-
function
|
|
1021
|
+
function tt({ assessment: e, reason: t }) {
|
|
1021
1022
|
let { t: n } = R(), r = {
|
|
1022
1023
|
good: n("explainAI.assessment.good"),
|
|
1023
1024
|
warning: n("explainAI.assessment.warning"),
|
|
1024
1025
|
critical: n("explainAI.assessment.critical")
|
|
1025
1026
|
};
|
|
1026
|
-
return /* @__PURE__ */
|
|
1027
|
-
className: `dc:p-4 dc:rounded-lg dc:border ${
|
|
1028
|
-
children: [/* @__PURE__ */
|
|
1027
|
+
return /* @__PURE__ */ q("div", {
|
|
1028
|
+
className: `dc:p-4 dc:rounded-lg dc:border ${Qe[e]}`,
|
|
1029
|
+
children: [/* @__PURE__ */ K("div", {
|
|
1029
1030
|
className: "dc:flex dc:items-center dc:gap-2 dc:mb-1",
|
|
1030
|
-
children: /* @__PURE__ */
|
|
1031
|
+
children: /* @__PURE__ */ q("span", {
|
|
1031
1032
|
className: "dc:font-semibold dc:uppercase dc:text-base",
|
|
1032
1033
|
children: [
|
|
1033
1034
|
e === "good" && "✓ ",
|
|
@@ -1036,33 +1037,33 @@ function et({ assessment: e, reason: t }) {
|
|
|
1036
1037
|
r[e]
|
|
1037
1038
|
]
|
|
1038
1039
|
})
|
|
1039
|
-
}), /* @__PURE__ */
|
|
1040
|
+
}), /* @__PURE__ */ K("p", {
|
|
1040
1041
|
className: "dc:text-sm",
|
|
1041
|
-
children:
|
|
1042
|
+
children: Ze(t)
|
|
1042
1043
|
})]
|
|
1043
1044
|
});
|
|
1044
1045
|
}
|
|
1045
|
-
function
|
|
1046
|
-
return /* @__PURE__ */
|
|
1046
|
+
function nt({ issue: e }) {
|
|
1047
|
+
return /* @__PURE__ */ q("div", {
|
|
1047
1048
|
className: "dc:flex dc:items-start dc:gap-2 dc:py-2",
|
|
1048
|
-
children: [/* @__PURE__ */
|
|
1049
|
-
className: `dc:text-sm ${
|
|
1049
|
+
children: [/* @__PURE__ */ q("span", {
|
|
1050
|
+
className: `dc:text-sm ${et[e.severity]}`,
|
|
1050
1051
|
children: [
|
|
1051
1052
|
e.severity === "high" && "●",
|
|
1052
1053
|
e.severity === "medium" && "○",
|
|
1053
1054
|
e.severity === "low" && "○"
|
|
1054
1055
|
]
|
|
1055
|
-
}), /* @__PURE__ */
|
|
1056
|
+
}), /* @__PURE__ */ K("span", {
|
|
1056
1057
|
className: "dc:text-sm text-dc-text-secondary",
|
|
1057
|
-
children:
|
|
1058
|
+
children: Ze(e.description)
|
|
1058
1059
|
})]
|
|
1059
1060
|
});
|
|
1060
1061
|
}
|
|
1061
|
-
function
|
|
1062
|
-
let { t } = R(), [n, r] =
|
|
1063
|
-
return
|
|
1062
|
+
function rt({ text: e }) {
|
|
1063
|
+
let { t } = R(), [n, r] = z.useState(!1), i = z.useRef(null);
|
|
1064
|
+
return z.useEffect(() => () => {
|
|
1064
1065
|
i.current && clearTimeout(i.current);
|
|
1065
|
-
}, []), /* @__PURE__ */
|
|
1066
|
+
}, []), /* @__PURE__ */ K("button", {
|
|
1066
1067
|
onClick: async () => {
|
|
1067
1068
|
try {
|
|
1068
1069
|
await navigator.clipboard.writeText(e), r(!0), i.current && clearTimeout(i.current), i.current = setTimeout(() => r(!1), 2e3);
|
|
@@ -1075,104 +1076,104 @@ function nt({ text: e }) {
|
|
|
1075
1076
|
children: t(n ? "explainAI.copied" : "explainAI.copy")
|
|
1076
1077
|
});
|
|
1077
1078
|
}
|
|
1078
|
-
function
|
|
1079
|
+
function it({ rec: e }) {
|
|
1079
1080
|
let { t } = R(), n = {
|
|
1080
1081
|
index: t("explainAI.type.index"),
|
|
1081
1082
|
table: t("explainAI.type.table"),
|
|
1082
1083
|
cube: t("explainAI.type.cube"),
|
|
1083
1084
|
general: t("explainAI.type.general")
|
|
1084
1085
|
};
|
|
1085
|
-
return /* @__PURE__ */
|
|
1086
|
+
return /* @__PURE__ */ q("div", {
|
|
1086
1087
|
className: "dc:p-4 dc:border border-dc-border dc:rounded-lg bg-dc-surface",
|
|
1087
1088
|
children: [
|
|
1088
|
-
/* @__PURE__ */
|
|
1089
|
+
/* @__PURE__ */ q("div", {
|
|
1089
1090
|
className: "dc:flex dc:items-center dc:gap-2 dc:mb-2",
|
|
1090
|
-
children: [/* @__PURE__ */
|
|
1091
|
-
className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${
|
|
1091
|
+
children: [/* @__PURE__ */ K("span", {
|
|
1092
|
+
className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${$e[e.severity]}`,
|
|
1092
1093
|
children: n[e.type]
|
|
1093
|
-
}), /* @__PURE__ */
|
|
1094
|
+
}), /* @__PURE__ */ K("h5", {
|
|
1094
1095
|
className: "dc:font-medium text-dc-text",
|
|
1095
|
-
children:
|
|
1096
|
+
children: Ze(e.title)
|
|
1096
1097
|
})]
|
|
1097
1098
|
}),
|
|
1098
|
-
/* @__PURE__ */
|
|
1099
|
+
/* @__PURE__ */ K("p", {
|
|
1099
1100
|
className: "dc:text-sm text-dc-text-secondary dc:mb-3",
|
|
1100
|
-
children:
|
|
1101
|
+
children: Ze(e.description)
|
|
1101
1102
|
}),
|
|
1102
|
-
e.sql && /* @__PURE__ */
|
|
1103
|
+
e.sql && /* @__PURE__ */ K("div", {
|
|
1103
1104
|
className: "dc:mt-2",
|
|
1104
|
-
children: /* @__PURE__ */
|
|
1105
|
+
children: /* @__PURE__ */ K(b, {
|
|
1105
1106
|
code: e.sql,
|
|
1106
1107
|
language: "sql",
|
|
1107
|
-
headerRight: /* @__PURE__ */
|
|
1108
|
+
headerRight: /* @__PURE__ */ K(rt, { text: e.sql })
|
|
1108
1109
|
})
|
|
1109
1110
|
}),
|
|
1110
|
-
e.cubeCode && /* @__PURE__ */
|
|
1111
|
+
e.cubeCode && /* @__PURE__ */ q("div", {
|
|
1111
1112
|
className: "dc:mt-2",
|
|
1112
|
-
children: [e.cubeName && /* @__PURE__ */
|
|
1113
|
+
children: [e.cubeName && /* @__PURE__ */ K("p", {
|
|
1113
1114
|
className: "dc:text-xs text-dc-text-muted dc:mb-1",
|
|
1114
1115
|
children: t("explainAI.addToCube", { cubeName: e.cubeName })
|
|
1115
|
-
}), /* @__PURE__ */
|
|
1116
|
+
}), /* @__PURE__ */ q("div", {
|
|
1116
1117
|
className: "dc:relative",
|
|
1117
|
-
children: [/* @__PURE__ */
|
|
1118
|
+
children: [/* @__PURE__ */ K("pre", {
|
|
1118
1119
|
className: "dc:p-3 dc:text-xs bg-dc-surface-secondary dc:rounded-sm dc:overflow-x-auto dc:font-mono text-dc-text",
|
|
1119
1120
|
children: e.cubeCode
|
|
1120
|
-
}), /* @__PURE__ */
|
|
1121
|
+
}), /* @__PURE__ */ K("div", {
|
|
1121
1122
|
className: "dc:absolute dc:top-1 dc:right-1",
|
|
1122
|
-
children: /* @__PURE__ */
|
|
1123
|
+
children: /* @__PURE__ */ K(rt, { text: e.cubeCode })
|
|
1123
1124
|
})]
|
|
1124
1125
|
})]
|
|
1125
1126
|
}),
|
|
1126
|
-
e.estimatedImpact && /* @__PURE__ */
|
|
1127
|
+
e.estimatedImpact && /* @__PURE__ */ q("p", {
|
|
1127
1128
|
className: "dc:text-xs text-dc-text-muted dc:mt-2",
|
|
1128
1129
|
children: [
|
|
1129
|
-
/* @__PURE__ */
|
|
1130
|
+
/* @__PURE__ */ K("strong", { children: t("explainAI.expectedImpact") }),
|
|
1130
1131
|
" ",
|
|
1131
|
-
|
|
1132
|
+
Ze(e.estimatedImpact)
|
|
1132
1133
|
]
|
|
1133
1134
|
})
|
|
1134
1135
|
]
|
|
1135
1136
|
});
|
|
1136
1137
|
}
|
|
1137
|
-
function
|
|
1138
|
+
function at({ analysis: e, onClose: t, onClear: n }) {
|
|
1138
1139
|
let { t: r } = R(), i = t || n;
|
|
1139
|
-
return
|
|
1140
|
+
return z.useEffect(() => {
|
|
1140
1141
|
let e = (e) => {
|
|
1141
1142
|
e.key === "Escape" && i && i();
|
|
1142
1143
|
};
|
|
1143
1144
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
1144
|
-
}, [i]),
|
|
1145
|
+
}, [i]), z.useEffect(() => (document.body.style.overflow = "hidden", () => {
|
|
1145
1146
|
document.body.style.overflow = "";
|
|
1146
|
-
}), []), /* @__PURE__ */
|
|
1147
|
+
}), []), /* @__PURE__ */ q("div", {
|
|
1147
1148
|
className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4 bg-black/50",
|
|
1148
|
-
children: [/* @__PURE__ */
|
|
1149
|
+
children: [/* @__PURE__ */ K("div", {
|
|
1149
1150
|
className: "dc:absolute dc:inset-0",
|
|
1150
1151
|
onClick: i,
|
|
1151
1152
|
"aria-hidden": "true"
|
|
1152
|
-
}), /* @__PURE__ */
|
|
1153
|
+
}), /* @__PURE__ */ q("div", {
|
|
1153
1154
|
className: "dc:relative dc:w-full dc:max-w-4xl dc:max-h-[90vh] bg-dc-surface dc:rounded-lg dc:shadow-xl dc:flex dc:flex-col",
|
|
1154
1155
|
children: [
|
|
1155
|
-
/* @__PURE__ */
|
|
1156
|
+
/* @__PURE__ */ q("div", {
|
|
1156
1157
|
className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-4 dc:border-b border-dc-border dc:flex-shrink-0",
|
|
1157
|
-
children: [/* @__PURE__ */
|
|
1158
|
+
children: [/* @__PURE__ */ q("div", {
|
|
1158
1159
|
className: "dc:flex dc:items-center dc:gap-3",
|
|
1159
|
-
children: [/* @__PURE__ */
|
|
1160
|
+
children: [/* @__PURE__ */ K("span", {
|
|
1160
1161
|
className: "dc:text-lg",
|
|
1161
1162
|
children: "✨"
|
|
1162
|
-
}), /* @__PURE__ */
|
|
1163
|
+
}), /* @__PURE__ */ K("h3", {
|
|
1163
1164
|
className: "dc:text-lg dc:font-semibold text-dc-text",
|
|
1164
1165
|
children: r("explainAI.title")
|
|
1165
1166
|
})]
|
|
1166
|
-
}), /* @__PURE__ */
|
|
1167
|
+
}), /* @__PURE__ */ K("button", {
|
|
1167
1168
|
onClick: i,
|
|
1168
1169
|
className: "dc:p-2 dc:rounded-lg hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors",
|
|
1169
1170
|
"aria-label": "Close",
|
|
1170
|
-
children: /* @__PURE__ */
|
|
1171
|
+
children: /* @__PURE__ */ K("svg", {
|
|
1171
1172
|
className: "dc:w-5 dc:h-5",
|
|
1172
1173
|
fill: "none",
|
|
1173
1174
|
stroke: "currentColor",
|
|
1174
1175
|
viewBox: "0 0 24 24",
|
|
1175
|
-
children: /* @__PURE__ */
|
|
1176
|
+
children: /* @__PURE__ */ K("path", {
|
|
1176
1177
|
strokeLinecap: "round",
|
|
1177
1178
|
strokeLinejoin: "round",
|
|
1178
1179
|
strokeWidth: 2,
|
|
@@ -1181,50 +1182,50 @@ function it({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1181
1182
|
})
|
|
1182
1183
|
})]
|
|
1183
1184
|
}),
|
|
1184
|
-
/* @__PURE__ */
|
|
1185
|
+
/* @__PURE__ */ q("div", {
|
|
1185
1186
|
className: "dc:flex-1 dc:overflow-y-auto dc:px-6 dc:py-4 dc:space-y-6",
|
|
1186
1187
|
children: [
|
|
1187
|
-
/* @__PURE__ */
|
|
1188
|
+
/* @__PURE__ */ K(tt, {
|
|
1188
1189
|
assessment: e.assessment,
|
|
1189
1190
|
reason: e.assessmentReason
|
|
1190
1191
|
}),
|
|
1191
|
-
/* @__PURE__ */
|
|
1192
|
+
/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
|
|
1192
1193
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
|
|
1193
1194
|
children: r("explainAI.summary")
|
|
1194
|
-
}), /* @__PURE__ */
|
|
1195
|
+
}), /* @__PURE__ */ K("p", {
|
|
1195
1196
|
className: "text-dc-text",
|
|
1196
|
-
children:
|
|
1197
|
+
children: Ze(e.summary)
|
|
1197
1198
|
})] }),
|
|
1198
|
-
e.queryUnderstanding && /* @__PURE__ */
|
|
1199
|
+
e.queryUnderstanding && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
|
|
1199
1200
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
|
|
1200
1201
|
children: r("explainAI.queryAnalysis")
|
|
1201
|
-
}), /* @__PURE__ */
|
|
1202
|
+
}), /* @__PURE__ */ K("p", {
|
|
1202
1203
|
className: "text-dc-text-secondary",
|
|
1203
|
-
children:
|
|
1204
|
+
children: Ze(e.queryUnderstanding)
|
|
1204
1205
|
})] }),
|
|
1205
|
-
e.issues && e.issues.length > 0 && /* @__PURE__ */
|
|
1206
|
+
e.issues && e.issues.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
|
|
1206
1207
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
|
|
1207
1208
|
children: r("explainAI.issuesFound", { count: e.issues.length })
|
|
1208
|
-
}), /* @__PURE__ */
|
|
1209
|
+
}), /* @__PURE__ */ K("div", {
|
|
1209
1210
|
className: "dc:space-y-1 bg-dc-surface-secondary dc:rounded-lg dc:p-3",
|
|
1210
|
-
children: e.issues.map((e, t) => /* @__PURE__ */
|
|
1211
|
+
children: e.issues.map((e, t) => /* @__PURE__ */ K(nt, { issue: e }, t))
|
|
1211
1212
|
})] }),
|
|
1212
|
-
e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */
|
|
1213
|
+
e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
|
|
1213
1214
|
className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-3",
|
|
1214
1215
|
children: r("explainAI.recommendations", { count: e.recommendations.length })
|
|
1215
|
-
}), /* @__PURE__ */
|
|
1216
|
+
}), /* @__PURE__ */ K("div", {
|
|
1216
1217
|
className: "dc:space-y-4",
|
|
1217
|
-
children: e.recommendations.map((e, t) => /* @__PURE__ */
|
|
1218
|
+
children: e.recommendations.map((e, t) => /* @__PURE__ */ K(it, { rec: e }, t))
|
|
1218
1219
|
})] }),
|
|
1219
|
-
(!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */
|
|
1220
|
+
(!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ K("div", {
|
|
1220
1221
|
className: "text-dc-text-muted dc:italic dc:p-4 bg-dc-surface-secondary dc:rounded-lg",
|
|
1221
1222
|
children: r("explainAI.noRecommendations")
|
|
1222
1223
|
})
|
|
1223
1224
|
]
|
|
1224
1225
|
}),
|
|
1225
|
-
/* @__PURE__ */
|
|
1226
|
+
/* @__PURE__ */ q("div", {
|
|
1226
1227
|
className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-3 dc:border-t border-dc-border dc:flex-shrink-0 bg-dc-surface-secondary",
|
|
1227
|
-
children: [e._meta && /* @__PURE__ */
|
|
1228
|
+
children: [e._meta && /* @__PURE__ */ q("div", {
|
|
1228
1229
|
className: "dc:text-xs text-dc-text-muted",
|
|
1229
1230
|
children: [
|
|
1230
1231
|
r("explainAI.modelLabel"),
|
|
@@ -1232,7 +1233,7 @@ function it({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1232
1233
|
e._meta.model,
|
|
1233
1234
|
e._meta.usingUserKey && ` ${r("explainAI.usingUserKey")}`
|
|
1234
1235
|
]
|
|
1235
|
-
}), /* @__PURE__ */
|
|
1236
|
+
}), /* @__PURE__ */ K("button", {
|
|
1236
1237
|
onClick: i,
|
|
1237
1238
|
className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-lg bg-dc-primary text-white hover:bg-dc-primary-hover dc:transition-colors",
|
|
1238
1239
|
children: r("common.actions.close")
|
|
@@ -1244,31 +1245,31 @@ function it({ analysis: e, onClose: t, onClear: n }) {
|
|
|
1244
1245
|
}
|
|
1245
1246
|
//#endregion
|
|
1246
1247
|
//#region src/client/shared/chartConfigBuilders.ts
|
|
1247
|
-
var
|
|
1248
|
-
function
|
|
1248
|
+
var ot = (e) => e.map((e) => e.field), st = (e) => e.length > 0 ? [e[0].field] : [];
|
|
1249
|
+
function ct(e) {
|
|
1249
1250
|
let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
|
|
1250
1251
|
return {
|
|
1251
1252
|
xAxis: n ? [n.field] : r ? [r.field] : [],
|
|
1252
|
-
yAxis:
|
|
1253
|
+
yAxis: ot(t),
|
|
1253
1254
|
series: i.length > 1 ? [i[1].field] : r && n ? [r.field] : []
|
|
1254
1255
|
};
|
|
1255
1256
|
}
|
|
1256
|
-
function
|
|
1257
|
+
function lt(e) {
|
|
1257
1258
|
let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
|
|
1258
1259
|
return {
|
|
1259
1260
|
xAxis: r ? [r.field] : n ? [n.field] : [],
|
|
1260
|
-
yAxis:
|
|
1261
|
+
yAxis: ot(t),
|
|
1261
1262
|
series: i.length > 1 ? [i[1].field] : n && r ? [n.field] : []
|
|
1262
1263
|
};
|
|
1263
1264
|
}
|
|
1264
|
-
function
|
|
1265
|
+
function ut(e) {
|
|
1265
1266
|
let { metrics: t, dimension: n } = e;
|
|
1266
1267
|
return {
|
|
1267
1268
|
xAxis: n ? [n.field] : [],
|
|
1268
|
-
yAxis:
|
|
1269
|
+
yAxis: st(t)
|
|
1269
1270
|
};
|
|
1270
1271
|
}
|
|
1271
|
-
function
|
|
1272
|
+
function dt(e) {
|
|
1272
1273
|
let { metrics: t, breakdowns: n, dimension: r, dimensions: i } = e;
|
|
1273
1274
|
return t.length >= 2 ? {
|
|
1274
1275
|
xAxis: [t[0].field],
|
|
@@ -1276,11 +1277,11 @@ function ut(e) {
|
|
|
1276
1277
|
series: r ? [r.field] : []
|
|
1277
1278
|
} : {
|
|
1278
1279
|
xAxis: n.length > 0 ? [n[0].field] : [],
|
|
1279
|
-
yAxis:
|
|
1280
|
+
yAxis: st(t),
|
|
1280
1281
|
series: i.length > 1 ? [i[1].field] : []
|
|
1281
1282
|
};
|
|
1282
1283
|
}
|
|
1283
|
-
function
|
|
1284
|
+
function ft(e) {
|
|
1284
1285
|
let { metrics: t, timeDimension: n, dimension: r } = e;
|
|
1285
1286
|
return {
|
|
1286
1287
|
xAxis: t.length > 0 ? [t[0].field] : [],
|
|
@@ -1289,211 +1290,216 @@ function dt(e) {
|
|
|
1289
1290
|
series: r ? [r.field] : n ? [n.field] : []
|
|
1290
1291
|
};
|
|
1291
1292
|
}
|
|
1292
|
-
function
|
|
1293
|
+
function pt(e) {
|
|
1293
1294
|
let { metrics: t, dimension: n } = e;
|
|
1294
1295
|
return {
|
|
1295
1296
|
xAxis: n ? [n.field] : [],
|
|
1296
|
-
yAxis:
|
|
1297
|
+
yAxis: st(t)
|
|
1297
1298
|
};
|
|
1298
1299
|
}
|
|
1299
|
-
function
|
|
1300
|
+
function mt(e) {
|
|
1300
1301
|
let { metrics: t, timeDimension: n } = e;
|
|
1301
1302
|
return {
|
|
1302
1303
|
dateField: n ? [n.field] : [],
|
|
1303
|
-
valueField:
|
|
1304
|
+
valueField: st(t)
|
|
1304
1305
|
};
|
|
1305
1306
|
}
|
|
1306
|
-
function mt(e) {
|
|
1307
|
-
return { yAxis: ot(e.metrics) };
|
|
1308
|
-
}
|
|
1309
1307
|
function ht(e) {
|
|
1308
|
+
return { yAxis: st(e.metrics) };
|
|
1309
|
+
}
|
|
1310
|
+
function gt(e) {
|
|
1310
1311
|
let { metrics: t, breakdowns: n } = e;
|
|
1311
1312
|
return { xAxis: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
|
|
1312
1313
|
}
|
|
1313
|
-
function
|
|
1314
|
+
function _t(e) {
|
|
1315
|
+
let { metrics: t, breakdowns: n } = e;
|
|
1316
|
+
return { columns: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
|
|
1317
|
+
}
|
|
1318
|
+
function vt() {
|
|
1314
1319
|
return {};
|
|
1315
1320
|
}
|
|
1316
|
-
function
|
|
1321
|
+
function yt(e) {
|
|
1317
1322
|
let { metrics: t, breakdowns: n } = e;
|
|
1318
1323
|
return {
|
|
1319
1324
|
xAxis: n.length > 0 ? [n[0].field] : [],
|
|
1320
|
-
yAxis:
|
|
1325
|
+
yAxis: ot(t)
|
|
1321
1326
|
};
|
|
1322
1327
|
}
|
|
1323
|
-
var
|
|
1324
|
-
line:
|
|
1325
|
-
area:
|
|
1326
|
-
bar:
|
|
1327
|
-
pie:
|
|
1328
|
-
scatter:
|
|
1329
|
-
bubble:
|
|
1330
|
-
radar:
|
|
1331
|
-
radialBar:
|
|
1332
|
-
treemap:
|
|
1333
|
-
proportionBar:
|
|
1334
|
-
activityGrid:
|
|
1335
|
-
kpiNumber:
|
|
1336
|
-
kpiDelta:
|
|
1337
|
-
kpiText:
|
|
1338
|
-
table:
|
|
1339
|
-
|
|
1328
|
+
var bt = {
|
|
1329
|
+
line: ct,
|
|
1330
|
+
area: ct,
|
|
1331
|
+
bar: lt,
|
|
1332
|
+
pie: ut,
|
|
1333
|
+
scatter: dt,
|
|
1334
|
+
bubble: ft,
|
|
1335
|
+
radar: pt,
|
|
1336
|
+
radialBar: pt,
|
|
1337
|
+
treemap: pt,
|
|
1338
|
+
proportionBar: ut,
|
|
1339
|
+
activityGrid: mt,
|
|
1340
|
+
kpiNumber: ht,
|
|
1341
|
+
kpiDelta: ht,
|
|
1342
|
+
kpiText: ht,
|
|
1343
|
+
table: gt,
|
|
1344
|
+
recordsTable: _t,
|
|
1345
|
+
markdown: vt
|
|
1340
1346
|
};
|
|
1341
|
-
function
|
|
1342
|
-
return
|
|
1347
|
+
function xt(e) {
|
|
1348
|
+
return bt[e] || yt;
|
|
1343
1349
|
}
|
|
1344
1350
|
//#endregion
|
|
1345
1351
|
//#region src/client/shared/chartDefaults.ts
|
|
1346
|
-
function
|
|
1352
|
+
function St(e) {
|
|
1347
1353
|
return e.isTimeDimension;
|
|
1348
1354
|
}
|
|
1349
|
-
function
|
|
1350
|
-
return e.find(
|
|
1355
|
+
function Ct(e) {
|
|
1356
|
+
return e.find(St);
|
|
1351
1357
|
}
|
|
1352
|
-
function
|
|
1358
|
+
function wt(e) {
|
|
1353
1359
|
return e.find((e) => !e.isTimeDimension);
|
|
1354
1360
|
}
|
|
1355
|
-
function
|
|
1361
|
+
function Tt(e) {
|
|
1356
1362
|
return e.filter((e) => !e.isTimeDimension);
|
|
1357
1363
|
}
|
|
1358
|
-
function
|
|
1359
|
-
return e.filter(
|
|
1364
|
+
function Et(e) {
|
|
1365
|
+
return e.filter(St);
|
|
1360
1366
|
}
|
|
1361
|
-
function
|
|
1367
|
+
function Dt(e, t) {
|
|
1362
1368
|
return {
|
|
1363
1369
|
measureCount: e.length,
|
|
1364
1370
|
dimensionCount: t.length,
|
|
1365
|
-
timeDimensionCount:
|
|
1371
|
+
timeDimensionCount: Et(t).length
|
|
1366
1372
|
};
|
|
1367
1373
|
}
|
|
1368
|
-
function
|
|
1369
|
-
let r =
|
|
1370
|
-
return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(
|
|
1374
|
+
function Ot(e, t, n) {
|
|
1375
|
+
let r = u[e];
|
|
1376
|
+
return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(Dt(t, n));
|
|
1371
1377
|
}
|
|
1372
|
-
function
|
|
1373
|
-
let n = Object.keys(
|
|
1374
|
-
for (let i of n) r[i] =
|
|
1378
|
+
function kt(e, t) {
|
|
1379
|
+
let n = Object.keys(u), r = {};
|
|
1380
|
+
for (let i of n) r[i] = Ot(i, e, t);
|
|
1375
1381
|
return r;
|
|
1376
1382
|
}
|
|
1377
|
-
function
|
|
1378
|
-
if (
|
|
1379
|
-
let r =
|
|
1383
|
+
function At(e, t, n) {
|
|
1384
|
+
if (Ot(n, e, t).available || e.length === 0 && t.length === 0) return n;
|
|
1385
|
+
let r = Et(t).length > 0, i = Tt(t).length > 0, a = e.length > 0;
|
|
1380
1386
|
return r && a ? "line" : i && a ? "bar" : a && !i && !r ? "kpiNumber" : "table";
|
|
1381
1387
|
}
|
|
1382
|
-
function
|
|
1383
|
-
let r =
|
|
1388
|
+
function jt(e, t, n) {
|
|
1389
|
+
let r = At(e, t, n);
|
|
1384
1390
|
return {
|
|
1385
1391
|
chartType: r,
|
|
1386
|
-
chartConfig:
|
|
1392
|
+
chartConfig: Mt(r, e, t)
|
|
1387
1393
|
};
|
|
1388
1394
|
}
|
|
1389
|
-
function
|
|
1390
|
-
return
|
|
1395
|
+
function Mt(e, t, n) {
|
|
1396
|
+
return xt(e)({
|
|
1391
1397
|
metrics: t,
|
|
1392
1398
|
breakdowns: n,
|
|
1393
|
-
timeDimension:
|
|
1394
|
-
dimension:
|
|
1395
|
-
dimensions:
|
|
1399
|
+
timeDimension: Ct(n),
|
|
1400
|
+
dimension: wt(n),
|
|
1401
|
+
dimensions: Tt(n)
|
|
1396
1402
|
});
|
|
1397
1403
|
}
|
|
1398
|
-
function
|
|
1399
|
-
if (r &&
|
|
1400
|
-
let i =
|
|
1404
|
+
function Nt(e, t, n, r) {
|
|
1405
|
+
if (r && Ot(n, e, t).available) return null;
|
|
1406
|
+
let i = At(e, t, n);
|
|
1401
1407
|
return i === n ? null : i;
|
|
1402
1408
|
}
|
|
1403
1409
|
//#endregion
|
|
1404
1410
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
|
|
1405
|
-
function
|
|
1406
|
-
return /* @__PURE__ */
|
|
1411
|
+
function Pt({ title: e, height: t, className: n, children: r }) {
|
|
1412
|
+
return /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K("h4", {
|
|
1407
1413
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1408
1414
|
children: e
|
|
1409
|
-
}), /* @__PURE__ */
|
|
1415
|
+
}), /* @__PURE__ */ K("div", {
|
|
1410
1416
|
className: n,
|
|
1411
1417
|
style: { height: t },
|
|
1412
1418
|
children: r
|
|
1413
1419
|
})] });
|
|
1414
1420
|
}
|
|
1415
|
-
function
|
|
1421
|
+
function Ft({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
|
|
1416
1422
|
let { t: c } = R();
|
|
1417
|
-
return t ? /* @__PURE__ */
|
|
1423
|
+
return t ? /* @__PURE__ */ K(Pt, {
|
|
1418
1424
|
title: a,
|
|
1419
1425
|
height: o,
|
|
1420
1426
|
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",
|
|
1421
1427
|
children: c("results.debug.loadingSql")
|
|
1422
|
-
}) : n ? /* @__PURE__ */
|
|
1428
|
+
}) : n ? /* @__PURE__ */ K(Pt, {
|
|
1423
1429
|
title: a,
|
|
1424
1430
|
height: o,
|
|
1425
1431
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1426
1432
|
children: n.message
|
|
1427
|
-
}) : e ? /* @__PURE__ */
|
|
1433
|
+
}) : e ? /* @__PURE__ */ K(b, {
|
|
1428
1434
|
code: i,
|
|
1429
1435
|
language: "sql",
|
|
1430
1436
|
title: a,
|
|
1431
1437
|
height: o,
|
|
1432
1438
|
headerRight: s
|
|
1433
|
-
}) : /* @__PURE__ */
|
|
1439
|
+
}) : /* @__PURE__ */ K(Pt, {
|
|
1434
1440
|
title: a,
|
|
1435
1441
|
height: o,
|
|
1436
1442
|
className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm",
|
|
1437
1443
|
children: r
|
|
1438
1444
|
});
|
|
1439
1445
|
}
|
|
1440
|
-
function
|
|
1446
|
+
function It({ summary: e }) {
|
|
1441
1447
|
let { t } = R();
|
|
1442
|
-
return /* @__PURE__ */
|
|
1448
|
+
return /* @__PURE__ */ q("div", {
|
|
1443
1449
|
className: "dc:flex dc:flex-wrap dc:items-center dc:gap-2",
|
|
1444
1450
|
children: [
|
|
1445
|
-
/* @__PURE__ */
|
|
1451
|
+
/* @__PURE__ */ K("span", {
|
|
1446
1452
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-accent text-white dc:rounded-sm",
|
|
1447
1453
|
children: e.database.toUpperCase()
|
|
1448
1454
|
}),
|
|
1449
|
-
e.hasSequentialScans && /* @__PURE__ */
|
|
1455
|
+
e.hasSequentialScans && /* @__PURE__ */ K("span", {
|
|
1450
1456
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-warning-bg text-dc-warning dc:border border-dc-warning dc:rounded-sm",
|
|
1451
1457
|
children: t("debug.sequentialScans")
|
|
1452
1458
|
}),
|
|
1453
|
-
e.usedIndexes.length > 0 && /* @__PURE__ */
|
|
1459
|
+
e.usedIndexes.length > 0 && /* @__PURE__ */ K("span", {
|
|
1454
1460
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-success-bg text-dc-success dc:border border-dc-success dc:rounded-sm",
|
|
1455
1461
|
children: t(e.usedIndexes.length === 1 ? "debug.indexesUsed" : "debug.indexesUsedPlural", { count: e.usedIndexes.length })
|
|
1456
1462
|
}),
|
|
1457
|
-
e.executionTime !== void 0 && /* @__PURE__ */
|
|
1463
|
+
e.executionTime !== void 0 && /* @__PURE__ */ K("span", {
|
|
1458
1464
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
|
|
1459
1465
|
children: t("debug.executionTime", { time: e.executionTime.toFixed(2) })
|
|
1460
1466
|
}),
|
|
1461
|
-
e.planningTime !== void 0 && /* @__PURE__ */
|
|
1467
|
+
e.planningTime !== void 0 && /* @__PURE__ */ K("span", {
|
|
1462
1468
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
|
|
1463
1469
|
children: t("debug.planningTime", { time: e.planningTime.toFixed(2) })
|
|
1464
1470
|
}),
|
|
1465
|
-
e.totalCost !== void 0 && /* @__PURE__ */
|
|
1471
|
+
e.totalCost !== void 0 && /* @__PURE__ */ K("span", {
|
|
1466
1472
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
|
|
1467
1473
|
children: t("debug.cost", { cost: e.totalCost.toFixed(2) })
|
|
1468
1474
|
})
|
|
1469
1475
|
]
|
|
1470
1476
|
});
|
|
1471
1477
|
}
|
|
1472
|
-
function
|
|
1478
|
+
function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
|
|
1473
1479
|
let { t: a } = R();
|
|
1474
|
-
return e ? /* @__PURE__ */
|
|
1480
|
+
return e ? /* @__PURE__ */ K("div", {
|
|
1475
1481
|
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",
|
|
1476
1482
|
children: a(r ? "debug.explainRunningAnalyze" : "debug.explainRunningBasic")
|
|
1477
|
-
}) : t ? /* @__PURE__ */
|
|
1483
|
+
}) : t ? /* @__PURE__ */ q("div", {
|
|
1478
1484
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1479
1485
|
children: [
|
|
1480
|
-
/* @__PURE__ */
|
|
1486
|
+
/* @__PURE__ */ K("strong", { children: a("debug.explainError") }),
|
|
1481
1487
|
" ",
|
|
1482
1488
|
t.message
|
|
1483
1489
|
]
|
|
1484
|
-
}) : n ? /* @__PURE__ */
|
|
1490
|
+
}) : n ? /* @__PURE__ */ q("div", {
|
|
1485
1491
|
className: "dc:space-y-3",
|
|
1486
1492
|
children: [
|
|
1487
|
-
/* @__PURE__ */
|
|
1488
|
-
n.summary.usedIndexes.length > 0 && /* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ K(It, { summary: n.summary }),
|
|
1494
|
+
n.summary.usedIndexes.length > 0 && /* @__PURE__ */ q("div", {
|
|
1489
1495
|
className: "dc:text-xs text-dc-text-muted",
|
|
1490
1496
|
children: [
|
|
1491
|
-
/* @__PURE__ */
|
|
1497
|
+
/* @__PURE__ */ K("strong", { children: a("debug.indexes") }),
|
|
1492
1498
|
" ",
|
|
1493
1499
|
n.summary.usedIndexes.join(", ")
|
|
1494
1500
|
]
|
|
1495
1501
|
}),
|
|
1496
|
-
/* @__PURE__ */
|
|
1502
|
+
/* @__PURE__ */ K(b, {
|
|
1497
1503
|
code: n.raw,
|
|
1498
1504
|
language: "sql",
|
|
1499
1505
|
title: a("debug.executionPlanTitle", { database: n.summary.database }),
|
|
@@ -1505,24 +1511,24 @@ function Ft({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
|
|
|
1505
1511
|
}
|
|
1506
1512
|
//#endregion
|
|
1507
1513
|
//#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
|
|
1508
|
-
var
|
|
1509
|
-
let { t: v } = R(), [y, b] =
|
|
1514
|
+
var Rt = ye(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" }) {
|
|
1515
|
+
let { t: v } = R(), [y, b] = W(!1), [x, S] = W(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
|
|
1510
1516
|
f && i && h && (f(i, h), S(!0));
|
|
1511
1517
|
}, T = () => {
|
|
1512
1518
|
S(!1);
|
|
1513
|
-
}, E = m && i ? /* @__PURE__ */
|
|
1519
|
+
}, E = m && i ? /* @__PURE__ */ K("button", {
|
|
1514
1520
|
onClick: w,
|
|
1515
1521
|
disabled: u,
|
|
1516
1522
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded-sm bg-dc-accent text-white hover:bg-dc-accent-hover dc:disabled:opacity-50 dc:disabled:cursor-not-allowed dc:flex dc:items-center dc:gap-1",
|
|
1517
|
-
children: u ? /* @__PURE__ */
|
|
1523
|
+
children: u ? /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K("span", {
|
|
1518
1524
|
className: "dc:animate-spin",
|
|
1519
1525
|
children: "⟳"
|
|
1520
|
-
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */
|
|
1526
|
+
}), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ K(G, { children: `✨ ${v("debug.aiAnalysis")}` })
|
|
1521
1527
|
}) : null;
|
|
1522
|
-
return /* @__PURE__ */
|
|
1528
|
+
return /* @__PURE__ */ q("div", {
|
|
1523
1529
|
className: "dc:space-y-3",
|
|
1524
1530
|
children: [
|
|
1525
|
-
/* @__PURE__ */
|
|
1531
|
+
/* @__PURE__ */ K(Ft, {
|
|
1526
1532
|
sql: e,
|
|
1527
1533
|
sqlLoading: t,
|
|
1528
1534
|
sqlError: n,
|
|
@@ -1530,37 +1536,37 @@ var It = _e(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1530
1536
|
formattedSql: C,
|
|
1531
1537
|
title: g,
|
|
1532
1538
|
height: _,
|
|
1533
|
-
headerRight: /* @__PURE__ */
|
|
1539
|
+
headerRight: /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ q("label", {
|
|
1534
1540
|
className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
|
|
1535
|
-
children: [/* @__PURE__ */
|
|
1541
|
+
children: [/* @__PURE__ */ K("input", {
|
|
1536
1542
|
type: "checkbox",
|
|
1537
1543
|
checked: y,
|
|
1538
1544
|
onChange: (e) => b(e.target.checked),
|
|
1539
1545
|
className: "dc:w-3 dc:h-3 dc:rounded-sm border-dc-border text-dc-accent focus:ring-dc-accent"
|
|
1540
1546
|
}), v("debug.explainIncludeTiming")]
|
|
1541
|
-
}), /* @__PURE__ */
|
|
1547
|
+
}), /* @__PURE__ */ K("button", {
|
|
1542
1548
|
onClick: () => c({ analyze: y }),
|
|
1543
1549
|
disabled: a,
|
|
1544
1550
|
className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded-sm dc:border border-dc-border bg-dc-surface hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors dc:disabled:opacity-50 dc:disabled:cursor-not-allowed",
|
|
1545
1551
|
children: v(a ? "debug.explainRunning" : "debug.explainPlan")
|
|
1546
1552
|
})] })
|
|
1547
1553
|
}),
|
|
1548
|
-
o && /* @__PURE__ */
|
|
1554
|
+
o && /* @__PURE__ */ K("div", { children: /* @__PURE__ */ K(Lt, {
|
|
1549
1555
|
explainLoading: a,
|
|
1550
1556
|
explainError: s,
|
|
1551
1557
|
explainResult: i,
|
|
1552
1558
|
useAnalyze: y,
|
|
1553
1559
|
aiButton: E
|
|
1554
1560
|
}) }),
|
|
1555
|
-
d && /* @__PURE__ */
|
|
1561
|
+
d && /* @__PURE__ */ q("div", {
|
|
1556
1562
|
className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
|
|
1557
1563
|
children: [
|
|
1558
|
-
/* @__PURE__ */
|
|
1564
|
+
/* @__PURE__ */ K("strong", { children: v("debug.aiAnalysisError") }),
|
|
1559
1565
|
" ",
|
|
1560
1566
|
d.message
|
|
1561
1567
|
]
|
|
1562
1568
|
}),
|
|
1563
|
-
x && l && /* @__PURE__ */
|
|
1569
|
+
x && l && /* @__PURE__ */ K(at, {
|
|
1564
1570
|
analysis: l,
|
|
1565
1571
|
onClose: T
|
|
1566
1572
|
})
|
|
@@ -1569,7 +1575,7 @@ var It = _e(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
|
|
|
1569
1575
|
});
|
|
1570
1576
|
//#endregion
|
|
1571
1577
|
//#region src/client/adapters/queryModeAdapter.ts
|
|
1572
|
-
function
|
|
1578
|
+
function zt() {
|
|
1573
1579
|
return {
|
|
1574
1580
|
metrics: [],
|
|
1575
1581
|
breakdowns: [],
|
|
@@ -1580,10 +1586,10 @@ function Lt() {
|
|
|
1580
1586
|
validationError: null
|
|
1581
1587
|
};
|
|
1582
1588
|
}
|
|
1583
|
-
function
|
|
1589
|
+
function Bt(e) {
|
|
1584
1590
|
return e.map((e) => e.field);
|
|
1585
1591
|
}
|
|
1586
|
-
function
|
|
1592
|
+
function Vt(e, t) {
|
|
1587
1593
|
let n = [], r = [];
|
|
1588
1594
|
for (let i of e) if (i.isTimeDimension) {
|
|
1589
1595
|
let e = {
|
|
@@ -1591,7 +1597,7 @@ function zt(e, t) {
|
|
|
1591
1597
|
granularity: i.granularity || "day"
|
|
1592
1598
|
};
|
|
1593
1599
|
if (i.enableComparison) {
|
|
1594
|
-
let n =
|
|
1600
|
+
let n = we(i.field, t);
|
|
1595
1601
|
n && (e.compareDateRange = n);
|
|
1596
1602
|
}
|
|
1597
1603
|
r.push(e);
|
|
@@ -1601,31 +1607,31 @@ function zt(e, t) {
|
|
|
1601
1607
|
timeDimensions: r
|
|
1602
1608
|
};
|
|
1603
1609
|
}
|
|
1604
|
-
function
|
|
1605
|
-
let { dimensions: t, timeDimensions: n } =
|
|
1606
|
-
measures:
|
|
1610
|
+
function Ht(e) {
|
|
1611
|
+
let { dimensions: t, timeDimensions: n } = Vt(e.breakdowns, e.filters), r = {
|
|
1612
|
+
measures: Bt(e.metrics),
|
|
1607
1613
|
dimensions: t
|
|
1608
1614
|
};
|
|
1609
1615
|
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;
|
|
1610
1616
|
}
|
|
1611
|
-
function
|
|
1617
|
+
function Ut(e) {
|
|
1612
1618
|
return e.map((e, t) => ({
|
|
1613
|
-
id:
|
|
1619
|
+
id: m(),
|
|
1614
1620
|
field: e,
|
|
1615
|
-
label:
|
|
1621
|
+
label: f(t)
|
|
1616
1622
|
}));
|
|
1617
1623
|
}
|
|
1618
|
-
function
|
|
1624
|
+
function Wt(e) {
|
|
1619
1625
|
let t = [];
|
|
1620
1626
|
if (e.dimensions) for (let n of e.dimensions) t.push({
|
|
1621
|
-
id:
|
|
1627
|
+
id: m(),
|
|
1622
1628
|
field: n,
|
|
1623
1629
|
isTimeDimension: !1
|
|
1624
1630
|
});
|
|
1625
1631
|
if (e.timeDimensions) for (let n of e.timeDimensions) {
|
|
1626
1632
|
let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
|
|
1627
1633
|
t.push({
|
|
1628
|
-
id:
|
|
1634
|
+
id: m(),
|
|
1629
1635
|
field: n.dimension,
|
|
1630
1636
|
granularity: n.granularity,
|
|
1631
1637
|
isTimeDimension: !0,
|
|
@@ -1634,10 +1640,10 @@ function Ht(e) {
|
|
|
1634
1640
|
}
|
|
1635
1641
|
return t;
|
|
1636
1642
|
}
|
|
1637
|
-
function
|
|
1643
|
+
function Gt(e) {
|
|
1638
1644
|
return {
|
|
1639
|
-
metrics:
|
|
1640
|
-
breakdowns:
|
|
1645
|
+
metrics: Ut(e.measures || []),
|
|
1646
|
+
breakdowns: Wt(e),
|
|
1641
1647
|
filters: e.filters || [],
|
|
1642
1648
|
order: e.order,
|
|
1643
1649
|
limit: e.limit,
|
|
@@ -1645,14 +1651,14 @@ function Ut(e) {
|
|
|
1645
1651
|
validationError: null
|
|
1646
1652
|
};
|
|
1647
1653
|
}
|
|
1648
|
-
function
|
|
1654
|
+
function Kt(e) {
|
|
1649
1655
|
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
|
|
1650
1656
|
}
|
|
1651
1657
|
var X = {
|
|
1652
1658
|
type: "query",
|
|
1653
1659
|
createInitial() {
|
|
1654
1660
|
return {
|
|
1655
|
-
queryStates: [
|
|
1661
|
+
queryStates: [zt()],
|
|
1656
1662
|
activeQueryIndex: 0,
|
|
1657
1663
|
mergeStrategy: "concat"
|
|
1658
1664
|
};
|
|
@@ -1672,22 +1678,22 @@ var X = {
|
|
|
1672
1678
|
load(e) {
|
|
1673
1679
|
if (e.analysisType !== "query") throw Error(`Cannot load ${e.analysisType} config with query adapter`);
|
|
1674
1680
|
let t = e;
|
|
1675
|
-
if (
|
|
1676
|
-
let e = t.query, n = e.queries.map(
|
|
1677
|
-
return n.length === 0 && n.push(
|
|
1681
|
+
if (Kt(t.query)) {
|
|
1682
|
+
let e = t.query, n = e.queries.map(Gt);
|
|
1683
|
+
return n.length === 0 && n.push(zt()), {
|
|
1678
1684
|
queryStates: n,
|
|
1679
1685
|
activeQueryIndex: 0,
|
|
1680
1686
|
mergeStrategy: e.mergeStrategy || "concat"
|
|
1681
1687
|
};
|
|
1682
1688
|
}
|
|
1683
1689
|
return {
|
|
1684
|
-
queryStates: [
|
|
1690
|
+
queryStates: [Gt(t.query)],
|
|
1685
1691
|
activeQueryIndex: 0,
|
|
1686
1692
|
mergeStrategy: "concat"
|
|
1687
1693
|
};
|
|
1688
1694
|
},
|
|
1689
1695
|
save(e, t, n) {
|
|
1690
|
-
let r = e.queryStates.map(
|
|
1696
|
+
let r = e.queryStates.map(Ht), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
|
|
1691
1697
|
queries: r,
|
|
1692
1698
|
mergeStrategy: e.mergeStrategy
|
|
1693
1699
|
};
|
|
@@ -1728,36 +1734,36 @@ var X = {
|
|
|
1728
1734
|
}
|
|
1729
1735
|
};
|
|
1730
1736
|
}
|
|
1731
|
-
}, Z = /* @__PURE__ */ new Map(),
|
|
1732
|
-
function
|
|
1733
|
-
|
|
1737
|
+
}, Z = /* @__PURE__ */ new Map(), qt = !1;
|
|
1738
|
+
function Jt() {
|
|
1739
|
+
qt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", v), Z.has("flow") || Z.set("flow", T), Z.has("retention") || Z.set("retention", x), !0);
|
|
1734
1740
|
}
|
|
1735
1741
|
var Q = {
|
|
1736
1742
|
register(e) {
|
|
1737
1743
|
Z.has(e.type) && console.warn(`[adapterRegistry] Overwriting existing adapter for type: ${e.type}`), Z.set(e.type, e);
|
|
1738
1744
|
},
|
|
1739
1745
|
get(e) {
|
|
1740
|
-
|
|
1746
|
+
Jt();
|
|
1741
1747
|
let t = Z.get(e);
|
|
1742
1748
|
if (!t) throw Error(`[adapterRegistry] No adapter registered for type: ${e}. Available types: ${Array.from(Z.keys()).join(", ") || "none"}`);
|
|
1743
1749
|
return t;
|
|
1744
1750
|
},
|
|
1745
1751
|
has(e) {
|
|
1746
|
-
return
|
|
1752
|
+
return Jt(), Z.has(e);
|
|
1747
1753
|
},
|
|
1748
1754
|
getRegisteredTypes() {
|
|
1749
|
-
return
|
|
1755
|
+
return Jt(), Array.from(Z.keys());
|
|
1750
1756
|
},
|
|
1751
1757
|
clear() {
|
|
1752
|
-
Z.clear(),
|
|
1758
|
+
Z.clear(), qt = !1;
|
|
1753
1759
|
}
|
|
1754
|
-
},
|
|
1760
|
+
}, Yt = () => ({
|
|
1755
1761
|
analysisType: "query",
|
|
1756
1762
|
charts: {
|
|
1757
1763
|
query: X.getDefaultChartConfig(),
|
|
1758
|
-
funnel:
|
|
1759
|
-
flow:
|
|
1760
|
-
retention:
|
|
1764
|
+
funnel: v.getDefaultChartConfig(),
|
|
1765
|
+
flow: T.getDefaultChartConfig(),
|
|
1766
|
+
retention: x.getDefaultChartConfig()
|
|
1761
1767
|
},
|
|
1762
1768
|
activeViews: {
|
|
1763
1769
|
query: "chart",
|
|
@@ -1767,8 +1773,8 @@ var Q = {
|
|
|
1767
1773
|
},
|
|
1768
1774
|
userManuallySelectedChart: !1,
|
|
1769
1775
|
localPaletteName: "default"
|
|
1770
|
-
}),
|
|
1771
|
-
...
|
|
1776
|
+
}), Xt = (e, t, n) => ({
|
|
1777
|
+
...Yt(),
|
|
1772
1778
|
setAnalysisType: (t) => {
|
|
1773
1779
|
e((e) => {
|
|
1774
1780
|
let n = { ...e.charts };
|
|
@@ -1981,12 +1987,12 @@ var Q = {
|
|
|
1981
1987
|
...u
|
|
1982
1988
|
});
|
|
1983
1989
|
}
|
|
1984
|
-
}),
|
|
1990
|
+
}), Zt = () => ({
|
|
1985
1991
|
queryStates: [Y()],
|
|
1986
1992
|
activeQueryIndex: 0,
|
|
1987
1993
|
mergeStrategy: "concat"
|
|
1988
|
-
}),
|
|
1989
|
-
...
|
|
1994
|
+
}), Qt = (e, t, n) => ({
|
|
1995
|
+
...Zt(),
|
|
1990
1996
|
setQueryStates: (t) => e({ queryStates: t }),
|
|
1991
1997
|
updateQueryState: (t, n) => e((e) => {
|
|
1992
1998
|
let r = [...e.queryStates];
|
|
@@ -2016,9 +2022,9 @@ var Q = {
|
|
|
2016
2022
|
}),
|
|
2017
2023
|
addMetric: (t, n) => e((e) => {
|
|
2018
2024
|
let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || Y(), o = {
|
|
2019
|
-
id:
|
|
2025
|
+
id: m(),
|
|
2020
2026
|
field: t,
|
|
2021
|
-
label: n ||
|
|
2027
|
+
label: n || f(a.metrics.length)
|
|
2022
2028
|
};
|
|
2023
2029
|
return i[r] = {
|
|
2024
2030
|
...a,
|
|
@@ -2041,9 +2047,9 @@ var Q = {
|
|
|
2041
2047
|
};
|
|
2042
2048
|
else {
|
|
2043
2049
|
let e = {
|
|
2044
|
-
id:
|
|
2050
|
+
id: m(),
|
|
2045
2051
|
field: t,
|
|
2046
|
-
label:
|
|
2052
|
+
label: f(i.metrics.length)
|
|
2047
2053
|
};
|
|
2048
2054
|
r[n] = {
|
|
2049
2055
|
...i,
|
|
@@ -2063,7 +2069,7 @@ var Q = {
|
|
|
2063
2069
|
let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || Y();
|
|
2064
2070
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
2065
2071
|
let s = {
|
|
2066
|
-
id:
|
|
2072
|
+
id: m(),
|
|
2067
2073
|
field: t,
|
|
2068
2074
|
isTimeDimension: n,
|
|
2069
2075
|
granularity: n ? r || "month" : void 0
|
|
@@ -2090,7 +2096,7 @@ var Q = {
|
|
|
2090
2096
|
else {
|
|
2091
2097
|
if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
|
|
2092
2098
|
let s = {
|
|
2093
|
-
id:
|
|
2099
|
+
id: m(),
|
|
2094
2100
|
field: t,
|
|
2095
2101
|
isTimeDimension: n,
|
|
2096
2102
|
granularity: n ? r || "month" : void 0
|
|
@@ -2138,7 +2144,7 @@ var Q = {
|
|
|
2138
2144
|
member: l.field,
|
|
2139
2145
|
operator: "inDateRange",
|
|
2140
2146
|
values: [],
|
|
2141
|
-
dateRange:
|
|
2147
|
+
dateRange: F("last_n_months", 3)
|
|
2142
2148
|
};
|
|
2143
2149
|
s[c] = {
|
|
2144
2150
|
...s[c],
|
|
@@ -2226,12 +2232,12 @@ var Q = {
|
|
|
2226
2232
|
return e.queryStates.length <= 1 ? !1 : e.queryStates.filter((e) => e.metrics.length > 0 || e.breakdowns.length > 0).length > 1;
|
|
2227
2233
|
},
|
|
2228
2234
|
buildCurrentQuery: () => {
|
|
2229
|
-
let e = t(), n = e.queryStates[e.activeQueryIndex] || Y();
|
|
2230
|
-
return
|
|
2235
|
+
let e = t(), n = e.queryStates[e.activeQueryIndex] || Y(), r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2236
|
+
return Ee(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r);
|
|
2231
2237
|
},
|
|
2232
2238
|
buildAllQueries: () => {
|
|
2233
|
-
let e = t(), n = e.queryStates[0]?.breakdowns || [];
|
|
2234
|
-
return e.queryStates.map((t,
|
|
2239
|
+
let e = t(), n = e.queryStates[0]?.breakdowns || [], r = l(e.charts[e.analysisType]?.chartType ?? "");
|
|
2240
|
+
return e.queryStates.map((t, i) => Ee(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r));
|
|
2235
2241
|
},
|
|
2236
2242
|
buildMultiQueryConfig: () => {
|
|
2237
2243
|
let e = t();
|
|
@@ -2244,18 +2250,18 @@ var Q = {
|
|
|
2244
2250
|
queryLabels: n.map((e, t) => `Q${t + 1}`)
|
|
2245
2251
|
};
|
|
2246
2252
|
}
|
|
2247
|
-
}),
|
|
2253
|
+
}), $t = () => ({
|
|
2248
2254
|
funnelCube: null,
|
|
2249
2255
|
funnelSteps: [],
|
|
2250
2256
|
activeFunnelStepIndex: 0,
|
|
2251
2257
|
funnelTimeDimension: null,
|
|
2252
2258
|
funnelBindingKey: null,
|
|
2253
2259
|
stepTimeToConvert: []
|
|
2254
|
-
}),
|
|
2255
|
-
|
|
2260
|
+
}), en = (e, t, n) => ({
|
|
2261
|
+
...$t(),
|
|
2256
2262
|
addFunnelStep: () => e((e) => {
|
|
2257
2263
|
let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
|
|
2258
|
-
id:
|
|
2264
|
+
id: m(),
|
|
2259
2265
|
name: `Step ${e.funnelSteps.length + 1}`,
|
|
2260
2266
|
cube: e.funnelCube || "",
|
|
2261
2267
|
filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
|
|
@@ -2320,7 +2326,7 @@ var Q = {
|
|
|
2320
2326
|
let e = t();
|
|
2321
2327
|
return e.analysisType !== "funnel" || !e.funnelBindingKey || !e.funnelTimeDimension || e.funnelSteps.length < 2 ? !1 : e.funnelSteps.filter((e) => e.cube && e.name).length >= 2;
|
|
2322
2328
|
}
|
|
2323
|
-
}),
|
|
2329
|
+
}), tn = () => ({
|
|
2324
2330
|
flowCube: null,
|
|
2325
2331
|
flowBindingKey: null,
|
|
2326
2332
|
flowTimeDimension: null,
|
|
@@ -2332,8 +2338,8 @@ var Q = {
|
|
|
2332
2338
|
stepsAfter: 3,
|
|
2333
2339
|
eventDimension: null,
|
|
2334
2340
|
joinStrategy: "auto"
|
|
2335
|
-
}),
|
|
2336
|
-
|
|
2341
|
+
}), nn = (e, t, n) => ({
|
|
2342
|
+
...tn(),
|
|
2337
2343
|
setFlowCube: (t) => e(() => ({
|
|
2338
2344
|
flowCube: t,
|
|
2339
2345
|
flowBindingKey: null,
|
|
@@ -2403,8 +2409,8 @@ var Q = {
|
|
|
2403
2409
|
joinStrategy: e.joinStrategy
|
|
2404
2410
|
} };
|
|
2405
2411
|
}
|
|
2406
|
-
}),
|
|
2407
|
-
...
|
|
2412
|
+
}), rn = () => ({ ...k }), an = (e, t, n) => ({
|
|
2413
|
+
...rn(),
|
|
2408
2414
|
setRetentionCube: (t) => e(() => ({
|
|
2409
2415
|
retentionCube: t,
|
|
2410
2416
|
retentionTimeDimension: null,
|
|
@@ -2479,22 +2485,22 @@ var Q = {
|
|
|
2479
2485
|
warnings: r
|
|
2480
2486
|
};
|
|
2481
2487
|
}
|
|
2482
|
-
}),
|
|
2488
|
+
}), on = {
|
|
2483
2489
|
isOpen: !1,
|
|
2484
2490
|
userPrompt: "",
|
|
2485
2491
|
isGenerating: !1,
|
|
2486
2492
|
error: null,
|
|
2487
2493
|
hasGeneratedQuery: !1,
|
|
2488
2494
|
previousState: null
|
|
2489
|
-
},
|
|
2495
|
+
}, sn = () => ({
|
|
2490
2496
|
activeTab: "query",
|
|
2491
2497
|
activeView: "chart",
|
|
2492
2498
|
displayLimit: 100,
|
|
2493
2499
|
showFieldModal: !1,
|
|
2494
2500
|
fieldModalMode: "metrics",
|
|
2495
|
-
aiState:
|
|
2496
|
-
}),
|
|
2497
|
-
...
|
|
2501
|
+
aiState: on
|
|
2502
|
+
}), cn = (e, t, n) => ({
|
|
2503
|
+
...sn(),
|
|
2498
2504
|
setActiveTab: (t) => e({ activeTab: t }),
|
|
2499
2505
|
setActiveView: (t) => e((e) => ({
|
|
2500
2506
|
activeView: t,
|
|
@@ -2578,19 +2584,19 @@ var Q = {
|
|
|
2578
2584
|
displayConfig: t.displayConfig
|
|
2579
2585
|
}
|
|
2580
2586
|
},
|
|
2581
|
-
aiState: { ...
|
|
2587
|
+
aiState: { ...on }
|
|
2582
2588
|
};
|
|
2583
2589
|
})
|
|
2584
2590
|
});
|
|
2585
2591
|
//#endregion
|
|
2586
2592
|
//#region src/client/stores/optionsToAnalysisConfig.ts
|
|
2587
|
-
function
|
|
2593
|
+
function ln(e) {
|
|
2588
2594
|
let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
|
|
2589
|
-
id:
|
|
2595
|
+
id: m(),
|
|
2590
2596
|
field: e,
|
|
2591
2597
|
isTimeDimension: !1
|
|
2592
2598
|
})), ...n.map((e) => ({
|
|
2593
|
-
id:
|
|
2599
|
+
id: m(),
|
|
2594
2600
|
field: e.dimension,
|
|
2595
2601
|
granularity: e.granularity,
|
|
2596
2602
|
isTimeDimension: !0,
|
|
@@ -2618,19 +2624,19 @@ function sn(e) {
|
|
|
2618
2624
|
return {
|
|
2619
2625
|
...Y(),
|
|
2620
2626
|
metrics: (e.measures || []).map((e, t) => ({
|
|
2621
|
-
id:
|
|
2627
|
+
id: m(),
|
|
2622
2628
|
field: e,
|
|
2623
|
-
label:
|
|
2629
|
+
label: f(t)
|
|
2624
2630
|
})),
|
|
2625
2631
|
breakdowns: r,
|
|
2626
2632
|
filters: i,
|
|
2627
2633
|
order: e.order
|
|
2628
2634
|
};
|
|
2629
2635
|
}
|
|
2630
|
-
function
|
|
2636
|
+
function un(e) {
|
|
2631
2637
|
return "queries" in e && Array.isArray(e.queries);
|
|
2632
2638
|
}
|
|
2633
|
-
function
|
|
2639
|
+
function dn(e, t) {
|
|
2634
2640
|
let n = e.getDefaultChartConfig();
|
|
2635
2641
|
return {
|
|
2636
2642
|
chartType: t?.chartType || n.chartType,
|
|
@@ -2638,22 +2644,22 @@ function ln(e, t) {
|
|
|
2638
2644
|
displayConfig: t?.displayConfig || n.displayConfig
|
|
2639
2645
|
};
|
|
2640
2646
|
}
|
|
2641
|
-
function
|
|
2647
|
+
function fn(e) {
|
|
2642
2648
|
return e.initialActiveView || "chart";
|
|
2643
2649
|
}
|
|
2644
|
-
function
|
|
2645
|
-
let t =
|
|
2646
|
-
return
|
|
2650
|
+
function pn(e) {
|
|
2651
|
+
let t = dn(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
|
|
2652
|
+
return v.save({
|
|
2647
2653
|
funnelCube: n.funnelCube ?? null,
|
|
2648
2654
|
funnelSteps: n.funnelSteps || [],
|
|
2649
2655
|
activeFunnelStepIndex: 0,
|
|
2650
2656
|
funnelTimeDimension: n.funnelTimeDimension ?? null,
|
|
2651
2657
|
funnelBindingKey: n.funnelBindingKey ?? null
|
|
2652
|
-
}, { funnel: t },
|
|
2658
|
+
}, { funnel: t }, fn(e));
|
|
2653
2659
|
}
|
|
2654
|
-
function
|
|
2655
|
-
let t =
|
|
2656
|
-
return
|
|
2660
|
+
function mn(e) {
|
|
2661
|
+
let t = dn(T, e.initialChartConfig), n = e.initialFlowState ?? {};
|
|
2662
|
+
return T.save({
|
|
2657
2663
|
flowCube: n.flowCube ?? null,
|
|
2658
2664
|
flowBindingKey: n.flowBindingKey ?? null,
|
|
2659
2665
|
flowTimeDimension: n.flowTimeDimension ?? null,
|
|
@@ -2665,11 +2671,11 @@ function fn(e) {
|
|
|
2665
2671
|
stepsAfter: n.stepsAfter ?? 3,
|
|
2666
2672
|
eventDimension: n.eventDimension ?? null,
|
|
2667
2673
|
joinStrategy: n.joinStrategy ?? "auto"
|
|
2668
|
-
}, { flow: t },
|
|
2674
|
+
}, { flow: t }, fn(e));
|
|
2669
2675
|
}
|
|
2670
|
-
function
|
|
2671
|
-
let t =
|
|
2672
|
-
return
|
|
2676
|
+
function hn(e) {
|
|
2677
|
+
let t = dn(x, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = ee(A);
|
|
2678
|
+
return x.save({
|
|
2673
2679
|
retentionCube: n.retentionCube ?? null,
|
|
2674
2680
|
retentionBindingKey: n.retentionBindingKey ?? null,
|
|
2675
2681
|
retentionTimeDimension: n.retentionTimeDimension ?? null,
|
|
@@ -2680,52 +2686,52 @@ function pn(e) {
|
|
|
2680
2686
|
retentionViewGranularity: n.retentionViewGranularity ?? "week",
|
|
2681
2687
|
retentionPeriods: n.retentionPeriods ?? 12,
|
|
2682
2688
|
retentionType: n.retentionType ?? "classic"
|
|
2683
|
-
}, { retention: t },
|
|
2689
|
+
}, { retention: t }, fn(e));
|
|
2684
2690
|
}
|
|
2685
|
-
function
|
|
2691
|
+
function gn(e, t) {
|
|
2686
2692
|
let n, r = "concat";
|
|
2687
|
-
|
|
2688
|
-
let i =
|
|
2693
|
+
un(t) ? (n = t.queries.map(ln), t.mergeStrategy && (r = t.mergeStrategy)) : n = [ln(t)];
|
|
2694
|
+
let i = dn(X, e.initialChartConfig);
|
|
2689
2695
|
return X.save({
|
|
2690
2696
|
queryStates: n,
|
|
2691
2697
|
activeQueryIndex: 0,
|
|
2692
2698
|
mergeStrategy: r
|
|
2693
|
-
}, { query: i },
|
|
2699
|
+
}, { query: i }, fn(e));
|
|
2694
2700
|
}
|
|
2695
|
-
function
|
|
2696
|
-
let t =
|
|
2701
|
+
function _n(e) {
|
|
2702
|
+
let t = dn(X, e.initialChartConfig);
|
|
2697
2703
|
return X.save({
|
|
2698
2704
|
queryStates: [Y()],
|
|
2699
2705
|
activeQueryIndex: 0,
|
|
2700
2706
|
mergeStrategy: "concat"
|
|
2701
|
-
}, { query: t },
|
|
2707
|
+
}, { query: t }, fn(e));
|
|
2702
2708
|
}
|
|
2703
|
-
function
|
|
2709
|
+
function vn(e) {
|
|
2704
2710
|
return X.save({
|
|
2705
2711
|
queryStates: [Y()],
|
|
2706
2712
|
activeQueryIndex: 0,
|
|
2707
2713
|
mergeStrategy: "concat"
|
|
2708
2714
|
}, { query: X.getDefaultChartConfig() }, e.initialActiveView);
|
|
2709
2715
|
}
|
|
2710
|
-
function
|
|
2711
|
-
return e.initialAnalysisType === "funnel" && e.initialFunnelState ?
|
|
2716
|
+
function yn(e) {
|
|
2717
|
+
return e.initialAnalysisType === "funnel" && e.initialFunnelState ? pn(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? mn(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? hn(e) : e.initialQuery ? gn(e, e.initialQuery) : e.initialChartConfig ? _n(e) : e.initialActiveView ? vn(e) : null;
|
|
2712
2718
|
}
|
|
2713
2719
|
//#endregion
|
|
2714
2720
|
//#region src/client/stores/analysisBuilderStore.tsx
|
|
2715
|
-
function
|
|
2721
|
+
function bn(e, t) {
|
|
2716
2722
|
return {
|
|
2717
2723
|
reset: () => {
|
|
2718
2724
|
e({
|
|
2719
|
-
...qt(),
|
|
2720
2725
|
...Yt(),
|
|
2721
2726
|
...Zt(),
|
|
2722
2727
|
...$t(),
|
|
2723
2728
|
...tn(),
|
|
2729
|
+
...rn(),
|
|
2724
2730
|
charts: {
|
|
2725
2731
|
query: X.getDefaultChartConfig(),
|
|
2726
|
-
funnel:
|
|
2727
|
-
flow:
|
|
2728
|
-
retention:
|
|
2732
|
+
funnel: v.getDefaultChartConfig(),
|
|
2733
|
+
flow: T.getDefaultChartConfig(),
|
|
2734
|
+
retention: x.getDefaultChartConfig()
|
|
2729
2735
|
},
|
|
2730
2736
|
activeViews: {
|
|
2731
2737
|
query: "chart",
|
|
@@ -2738,28 +2744,28 @@ function vn(e, t) {
|
|
|
2738
2744
|
clearCurrentMode: () => e((e) => {
|
|
2739
2745
|
switch (e.analysisType) {
|
|
2740
2746
|
case "funnel": return {
|
|
2741
|
-
|
|
2747
|
+
...$t(),
|
|
2742
2748
|
charts: {
|
|
2743
2749
|
...e.charts,
|
|
2744
|
-
funnel:
|
|
2750
|
+
funnel: v.getDefaultChartConfig()
|
|
2745
2751
|
}
|
|
2746
2752
|
};
|
|
2747
2753
|
case "flow": return {
|
|
2748
|
-
|
|
2754
|
+
...tn(),
|
|
2749
2755
|
charts: {
|
|
2750
2756
|
...e.charts,
|
|
2751
|
-
flow:
|
|
2757
|
+
flow: T.getDefaultChartConfig()
|
|
2752
2758
|
}
|
|
2753
2759
|
};
|
|
2754
2760
|
case "retention": return {
|
|
2755
|
-
...
|
|
2761
|
+
...rn(),
|
|
2756
2762
|
charts: {
|
|
2757
2763
|
...e.charts,
|
|
2758
|
-
retention:
|
|
2764
|
+
retention: x.getDefaultChartConfig()
|
|
2759
2765
|
}
|
|
2760
2766
|
};
|
|
2761
2767
|
default: return {
|
|
2762
|
-
...
|
|
2768
|
+
...Zt(),
|
|
2763
2769
|
userManuallySelectedChart: !1,
|
|
2764
2770
|
charts: {
|
|
2765
2771
|
...e.charts,
|
|
@@ -2785,15 +2791,15 @@ function vn(e, t) {
|
|
|
2785
2791
|
}
|
|
2786
2792
|
};
|
|
2787
2793
|
}
|
|
2788
|
-
function
|
|
2789
|
-
let r =
|
|
2790
|
-
...Jt(e, t, n),
|
|
2794
|
+
function xn(n = {}) {
|
|
2795
|
+
let r = yn(n), o = (e, t, n) => ({
|
|
2791
2796
|
...Xt(e, t, n),
|
|
2792
2797
|
...Qt(e, t, n),
|
|
2793
2798
|
...en(e, t, n),
|
|
2794
2799
|
...nn(e, t, n),
|
|
2795
|
-
...
|
|
2796
|
-
...
|
|
2800
|
+
...an(e, t, n),
|
|
2801
|
+
...cn(e, t, n),
|
|
2802
|
+
...bn(e, t)
|
|
2797
2803
|
});
|
|
2798
2804
|
if (n.disableLocalStorage) {
|
|
2799
2805
|
let t = a()(i(e(o), { name: "AnalysisBuilderStore (no-persist)" }));
|
|
@@ -2802,10 +2808,10 @@ function yn(n = {}) {
|
|
|
2802
2808
|
return a()(i(e(t(o, {
|
|
2803
2809
|
name: n.storageKey || "drizzle-cube-analysis-builder-v3",
|
|
2804
2810
|
partialize: (e) => e.saveWorkspace(),
|
|
2805
|
-
merge: (e, t) => e &&
|
|
2811
|
+
merge: (e, t) => e && _(e) ? {
|
|
2806
2812
|
...t,
|
|
2807
2813
|
_persistedWorkspace: e
|
|
2808
|
-
} : e &&
|
|
2814
|
+
} : e && O(e) ? {
|
|
2809
2815
|
...t,
|
|
2810
2816
|
_persistedConfig: e
|
|
2811
2817
|
} : r ? {
|
|
@@ -2828,10 +2834,10 @@ function yn(n = {}) {
|
|
|
2828
2834
|
}
|
|
2829
2835
|
})), { name: "AnalysisBuilderStore" }));
|
|
2830
2836
|
}
|
|
2831
|
-
var
|
|
2832
|
-
function
|
|
2833
|
-
let u =
|
|
2834
|
-
return u.current ||=
|
|
2837
|
+
var Sn = ve(null);
|
|
2838
|
+
function Cn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
|
|
2839
|
+
let u = U(null);
|
|
2840
|
+
return u.current ||= xn({
|
|
2835
2841
|
initialQuery: t,
|
|
2836
2842
|
initialChartConfig: n,
|
|
2837
2843
|
disableLocalStorage: r,
|
|
@@ -2841,22 +2847,22 @@ function xn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
|
|
|
2841
2847
|
initialFlowState: s,
|
|
2842
2848
|
initialRetentionState: c,
|
|
2843
2849
|
initialActiveView: l
|
|
2844
|
-
}), /* @__PURE__ */
|
|
2850
|
+
}), /* @__PURE__ */ K(Sn.Provider, {
|
|
2845
2851
|
value: u.current,
|
|
2846
2852
|
children: e
|
|
2847
2853
|
});
|
|
2848
2854
|
}
|
|
2849
2855
|
function $(e) {
|
|
2850
|
-
let t =
|
|
2856
|
+
let t = be(Sn);
|
|
2851
2857
|
if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
|
|
2852
2858
|
return r(t, e);
|
|
2853
2859
|
}
|
|
2854
|
-
function
|
|
2855
|
-
let e =
|
|
2860
|
+
function wn() {
|
|
2861
|
+
let e = be(Sn);
|
|
2856
2862
|
if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
|
|
2857
2863
|
return e;
|
|
2858
2864
|
}
|
|
2859
|
-
var
|
|
2865
|
+
var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metrics, Dn = (e) => Tn(e).breakdowns, On = (e) => Tn(e).filters, kn = (e) => {
|
|
2860
2866
|
let t = e.charts[e.analysisType];
|
|
2861
2867
|
return t ? {
|
|
2862
2868
|
chartType: t.chartType,
|
|
@@ -2871,18 +2877,18 @@ var Cn = (e) => e.queryStates[e.activeQueryIndex] || Y(), wn = (e) => Cn(e).metr
|
|
|
2871
2877
|
showTooltip: !0
|
|
2872
2878
|
}
|
|
2873
2879
|
};
|
|
2874
|
-
},
|
|
2880
|
+
}, An = (e) => ({
|
|
2875
2881
|
activeTab: e.activeTab,
|
|
2876
2882
|
activeView: e.activeView,
|
|
2877
2883
|
displayLimit: e.displayLimit,
|
|
2878
2884
|
showFieldModal: e.showFieldModal,
|
|
2879
2885
|
fieldModalMode: e.fieldModalMode
|
|
2880
|
-
}),
|
|
2886
|
+
}), jn = (e) => ({
|
|
2881
2887
|
queryStates: e.queryStates,
|
|
2882
2888
|
activeQueryIndex: e.activeQueryIndex,
|
|
2883
2889
|
mergeStrategy: e.mergeStrategy,
|
|
2884
2890
|
isMultiQueryMode: e.analysisType === "query" && e.queryStates.length > 1
|
|
2885
|
-
}),
|
|
2891
|
+
}), Mn = (e) => ({
|
|
2886
2892
|
funnelCube: e.funnelCube,
|
|
2887
2893
|
funnelSteps: e.funnelSteps,
|
|
2888
2894
|
activeFunnelStepIndex: e.activeFunnelStepIndex,
|
|
@@ -2893,16 +2899,16 @@ var Cn = (e) => e.queryStates[e.activeQueryIndex] || Y(), wn = (e) => Cn(e).metr
|
|
|
2893
2899
|
});
|
|
2894
2900
|
//#endregion
|
|
2895
2901
|
//#region src/client/utils/multiQueryValidation.ts
|
|
2896
|
-
function
|
|
2902
|
+
function Nn(e) {
|
|
2897
2903
|
return e.timeDimensions || [];
|
|
2898
2904
|
}
|
|
2899
|
-
function
|
|
2905
|
+
function Pn(e) {
|
|
2900
2906
|
let t = [];
|
|
2901
2907
|
if (e.length < 2) return t;
|
|
2902
|
-
let n =
|
|
2908
|
+
let n = Nn(e[0]);
|
|
2903
2909
|
if (n.length === 0) return t;
|
|
2904
2910
|
for (let r = 1; r < e.length; r++) {
|
|
2905
|
-
let i =
|
|
2911
|
+
let i = Nn(e[r]);
|
|
2906
2912
|
if (i.length === 0 && n.length > 0) {
|
|
2907
2913
|
t.push({
|
|
2908
2914
|
type: "missing_time_dimension",
|
|
@@ -2928,7 +2934,7 @@ function Mn(e) {
|
|
|
2928
2934
|
}
|
|
2929
2935
|
return t;
|
|
2930
2936
|
}
|
|
2931
|
-
function
|
|
2937
|
+
function Fn(e, t) {
|
|
2932
2938
|
let n = [];
|
|
2933
2939
|
if (e.length < 2 || t.length === 0) return n;
|
|
2934
2940
|
for (let r = 0; r < e.length; r++) {
|
|
@@ -2942,7 +2948,7 @@ function Nn(e, t) {
|
|
|
2942
2948
|
}
|
|
2943
2949
|
return n;
|
|
2944
2950
|
}
|
|
2945
|
-
function
|
|
2951
|
+
function In(e) {
|
|
2946
2952
|
let t = [];
|
|
2947
2953
|
if (e.length < 2) return t;
|
|
2948
2954
|
let n = /* @__PURE__ */ new Map();
|
|
@@ -2961,7 +2967,7 @@ function Pn(e) {
|
|
|
2961
2967
|
affectedMeasures: r
|
|
2962
2968
|
}), t;
|
|
2963
2969
|
}
|
|
2964
|
-
function
|
|
2970
|
+
function Ln(e) {
|
|
2965
2971
|
let t = [];
|
|
2966
2972
|
if (e.length < 2) return t;
|
|
2967
2973
|
let n = e.map((e) => e.timeDimensions?.[0]?.dateRange);
|
|
@@ -2971,66 +2977,71 @@ function Fn(e) {
|
|
|
2971
2977
|
message: "Queries have different date ranges - some data points may be missing in merged results"
|
|
2972
2978
|
}), t;
|
|
2973
2979
|
}
|
|
2974
|
-
function
|
|
2980
|
+
function Rn(e, t, n = []) {
|
|
2975
2981
|
let r = [], i = [];
|
|
2976
2982
|
return e.length < 2 ? {
|
|
2977
2983
|
isValid: !0,
|
|
2978
2984
|
errors: r,
|
|
2979
2985
|
warnings: i
|
|
2980
|
-
} : (i.push(...
|
|
2986
|
+
} : (i.push(...In(e)), i.push(...Ln(e)), t === "merge" && (r.push(...Pn(e)), n.length > 0 && r.push(...Fn(e, n))), {
|
|
2981
2987
|
isValid: r.length === 0,
|
|
2982
2988
|
errors: r,
|
|
2983
2989
|
warnings: i
|
|
2984
2990
|
});
|
|
2985
2991
|
}
|
|
2986
|
-
function
|
|
2992
|
+
function zn(e) {
|
|
2987
2993
|
return (e.measures?.length || 0) + (e.dimensions?.length || 0) + (e.timeDimensions?.length || 0);
|
|
2988
2994
|
}
|
|
2989
|
-
function
|
|
2990
|
-
return e.filter((e) =>
|
|
2995
|
+
function Bn(e) {
|
|
2996
|
+
return e.filter((e) => zn(e) > 0).length >= 2;
|
|
2991
2997
|
}
|
|
2992
|
-
function
|
|
2998
|
+
function Vn(e, t) {
|
|
2993
2999
|
return `${e} ${t}${e === 1 ? "" : "s"}`;
|
|
2994
3000
|
}
|
|
2995
|
-
function
|
|
3001
|
+
function Hn(e) {
|
|
2996
3002
|
if (e.isValid && e.warnings.length === 0) return "Configuration is valid";
|
|
2997
3003
|
let t = [];
|
|
2998
|
-
return e.errors.length > 0 && t.push(
|
|
3004
|
+
return e.errors.length > 0 && t.push(Vn(e.errors.length, "error")), e.warnings.length > 0 && t.push(Vn(e.warnings.length, "warning")), t.join(", ");
|
|
2999
3005
|
}
|
|
3000
3006
|
//#endregion
|
|
3001
3007
|
//#region src/client/hooks/useAnalysisState.ts
|
|
3002
|
-
function
|
|
3003
|
-
let { externalColorPalette: t } = e, r =
|
|
3004
|
-
let e = i[a] ||
|
|
3005
|
-
return
|
|
3008
|
+
function Un(e = {}) {
|
|
3009
|
+
let { externalColorPalette: t } = e, r = wn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), u = $((e) => e.addQuery), d = $((e) => e.removeQuery), f = $((e) => e.getCurrentState), m = $((e) => e.getMergeKeys), h = $((e) => e.isMultiQueryMode), g = f(), _ = h(), v = m(), y = $((e) => l(e.charts[e.analysisType]?.chartType ?? "")), b = H(() => {
|
|
3010
|
+
let e = i[a] || g;
|
|
3011
|
+
return Ee(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
|
|
3006
3012
|
}, [
|
|
3007
3013
|
i,
|
|
3008
3014
|
a,
|
|
3009
|
-
|
|
3010
|
-
|
|
3015
|
+
g,
|
|
3016
|
+
y
|
|
3017
|
+
]), x = H(() => {
|
|
3011
3018
|
let e = i[0]?.breakdowns || [];
|
|
3012
|
-
return i.map((t, n) =>
|
|
3013
|
-
}, [
|
|
3019
|
+
return i.map((t, n) => Ee(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
|
|
3020
|
+
}, [
|
|
3021
|
+
i,
|
|
3022
|
+
o,
|
|
3023
|
+
y
|
|
3024
|
+
]), S = H(() => {
|
|
3014
3025
|
if (i.length <= 1) return null;
|
|
3015
|
-
let e =
|
|
3026
|
+
let e = x.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
|
|
3016
3027
|
return e.length < 2 ? null : {
|
|
3017
3028
|
queries: e,
|
|
3018
3029
|
mergeStrategy: o,
|
|
3019
|
-
mergeKeys:
|
|
3030
|
+
mergeKeys: v,
|
|
3020
3031
|
queryLabels: e.map((e, t) => `Q${t + 1}`)
|
|
3021
3032
|
};
|
|
3022
3033
|
}, [
|
|
3023
|
-
|
|
3034
|
+
x,
|
|
3024
3035
|
i.length,
|
|
3025
3036
|
o,
|
|
3026
|
-
|
|
3027
|
-
]),
|
|
3028
|
-
|
|
3029
|
-
|
|
3037
|
+
v
|
|
3038
|
+
]), C = H(() => _ ? Rn(x, o, v || []) : null, [
|
|
3039
|
+
_,
|
|
3040
|
+
x,
|
|
3030
3041
|
o,
|
|
3031
|
-
|
|
3032
|
-
]),
|
|
3033
|
-
if (!
|
|
3042
|
+
v
|
|
3043
|
+
]), w = H(() => b.measures && b.measures.length > 0 || b.dimensions && b.dimensions.length > 0 || b.timeDimensions && b.timeDimensions.length > 0, [b]), T = H(() => {
|
|
3044
|
+
if (!_) return g.metrics;
|
|
3034
3045
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
3035
3046
|
for (let n = 0; n < i.length; n++) {
|
|
3036
3047
|
let r = i[n];
|
|
@@ -3044,110 +3055,110 @@ function Vn(e = {}) {
|
|
|
3044
3055
|
}
|
|
3045
3056
|
return t;
|
|
3046
3057
|
}, [
|
|
3047
|
-
|
|
3058
|
+
_,
|
|
3048
3059
|
i,
|
|
3049
|
-
|
|
3050
|
-
]),
|
|
3051
|
-
if (!
|
|
3060
|
+
g.metrics
|
|
3061
|
+
]), E = H(() => {
|
|
3062
|
+
if (!_) return g.breakdowns;
|
|
3052
3063
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
3053
3064
|
for (let n of i) for (let r of n.breakdowns) e.has(r.field) || (e.add(r.field), t.push(r));
|
|
3054
3065
|
return t;
|
|
3055
3066
|
}, [
|
|
3056
|
-
|
|
3067
|
+
_,
|
|
3057
3068
|
i,
|
|
3058
|
-
|
|
3059
|
-
]),
|
|
3069
|
+
g.breakdowns
|
|
3070
|
+
]), D = H(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : g.breakdowns, [
|
|
3060
3071
|
o,
|
|
3061
3072
|
a,
|
|
3062
3073
|
i,
|
|
3063
|
-
|
|
3064
|
-
]),
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
]), ne = $((e) => e.charts.funnel?.chartType) || "funnel",
|
|
3074
|
+
g.breakdowns
|
|
3075
|
+
]), 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 = H(() => O !== "funnel" || !k?.dimension || !j || !A || A.length < 2 ? !1 : A.every((e) => e.filters.length > 0), [
|
|
3076
|
+
O,
|
|
3077
|
+
k,
|
|
3078
|
+
j,
|
|
3079
|
+
A
|
|
3080
|
+
]), ne = $((e) => e.charts.funnel?.chartType) || "funnel", N = $((e) => e.charts.funnel?.chartConfig), re = H(() => N || {}, [N]), ie = $((e) => e.charts.funnel?.displayConfig), ae = H(() => ie || {
|
|
3070
3081
|
showLegend: !0,
|
|
3071
3082
|
showGrid: !0,
|
|
3072
3083
|
showTooltip: !0
|
|
3073
|
-
}, [
|
|
3084
|
+
}, [ie]), P = $((e) => e.flowCube), F = $((e) => e.flowBindingKey), oe = $((e) => e.flowTimeDimension), se = $((e) => e.eventDimension), I = $((e) => e.startingStep), L = $((e) => e.stepsBefore), ce = $((e) => e.stepsAfter), le = $((e) => e.joinStrategy), ue = $((e) => e.charts.flow?.displayConfig), de = H(() => ue || {
|
|
3074
3085
|
showLegend: !0,
|
|
3075
3086
|
showGrid: !0,
|
|
3076
3087
|
showTooltip: !0
|
|
3077
|
-
}, [
|
|
3078
|
-
|
|
3088
|
+
}, [ue]), fe = $((e) => e.charts.flow?.chartType) || "sankey", R = $((e) => e.buildFunnelQueryFromSteps), pe = H(() => O === "funnel" ? R() : null, [
|
|
3089
|
+
O,
|
|
3079
3090
|
R,
|
|
3080
|
-
|
|
3081
|
-
]),
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
ae,
|
|
3085
|
-
oe,
|
|
3086
|
-
N,
|
|
3091
|
+
A
|
|
3092
|
+
]), me = $((e) => e.buildFlowQuery), he = H(() => O === "flow" ? me() : null, [
|
|
3093
|
+
O,
|
|
3094
|
+
me,
|
|
3087
3095
|
P,
|
|
3088
|
-
se,
|
|
3089
3096
|
F,
|
|
3097
|
+
oe,
|
|
3098
|
+
se,
|
|
3090
3099
|
I,
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3100
|
+
L,
|
|
3101
|
+
ce,
|
|
3102
|
+
fe,
|
|
3103
|
+
le
|
|
3104
|
+
]), ge = $((e) => e.retentionCube), _e = $((e) => e.retentionBindingKey), z = $((e) => e.retentionTimeDimension), ve = $((e) => e.retentionDateRange), ye = $((e) => e.retentionCohortFilters), be = $((e) => e.retentionActivityFilters), V = $((e) => e.retentionBreakdowns), U = $((e) => e.retentionViewGranularity), G = $((e) => e.retentionPeriods), K = $((e) => e.retentionType), q = $((e) => e.buildRetentionQuery), xe = $((e) => e.getRetentionValidation), Se = $((e) => e.charts.retention?.displayConfig), J = H(() => O === "retention" ? q() : null, [
|
|
3105
|
+
O,
|
|
3095
3106
|
q,
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
B,
|
|
3107
|
+
ge,
|
|
3108
|
+
_e,
|
|
3109
|
+
z,
|
|
3100
3110
|
ve,
|
|
3101
|
-
|
|
3102
|
-
|
|
3111
|
+
V,
|
|
3112
|
+
U,
|
|
3113
|
+
G,
|
|
3103
3114
|
K,
|
|
3115
|
+
ye,
|
|
3116
|
+
be
|
|
3117
|
+
]), Ce = H(() => O === "retention" ? xe() : null, [
|
|
3118
|
+
O,
|
|
3119
|
+
xe,
|
|
3104
3120
|
ge,
|
|
3105
|
-
_e
|
|
3106
|
-
|
|
3107
|
-
|
|
3121
|
+
_e,
|
|
3122
|
+
z,
|
|
3123
|
+
ve
|
|
3124
|
+
]), we = H(() => O === "retention" ? J !== null : O === "flow" ? he !== null : O === "funnel" ? pe !== null : w ?? !1, [
|
|
3125
|
+
O,
|
|
3108
3126
|
J,
|
|
3109
|
-
pe,
|
|
3110
|
-
me,
|
|
3111
3127
|
he,
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
fe,
|
|
3117
|
-
de,
|
|
3118
|
-
S
|
|
3119
|
-
]), { chartType: Ce, chartConfig: we, displayConfig: Y } = $(n(Dn)), Ee = $((e) => e.userManuallySelectedChart), De = $((e) => e.localPaletteName), Oe = $((e) => e.setChartTypeManual), ke = $((e) => e.setChartConfig), Ae = $((e) => e.setDisplayConfig), je = $((e) => e.setFunnelChartType), Me = $((e) => e.setFunnelChartConfig), Ne = $((e) => e.setFunnelDisplayConfig), Pe = $((e) => e.setLocalPaletteName), Fe = $((e) => e.setUserManuallySelectedChart), Ie = V((e) => {
|
|
3120
|
-
if (E === "funnel") je(e);
|
|
3128
|
+
pe,
|
|
3129
|
+
w
|
|
3130
|
+
]), { chartType: Te, chartConfig: Y, displayConfig: De } = $(n(kn)), 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 = B((e) => {
|
|
3131
|
+
if (O === "funnel") Ne(e);
|
|
3121
3132
|
else {
|
|
3122
|
-
|
|
3123
|
-
let { chartConfig: t } =
|
|
3124
|
-
|
|
3133
|
+
Ae(e);
|
|
3134
|
+
let { chartConfig: t } = jt(T, E, e);
|
|
3135
|
+
je(t);
|
|
3125
3136
|
}
|
|
3126
3137
|
}, [
|
|
3138
|
+
O,
|
|
3139
|
+
T,
|
|
3127
3140
|
E,
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
je
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
]), Le = V((e) => {
|
|
3134
|
-
E === "funnel" ? Me(e) : ke(e);
|
|
3141
|
+
Ne,
|
|
3142
|
+
Ae,
|
|
3143
|
+
je
|
|
3144
|
+
]), ze = B((e) => {
|
|
3145
|
+
O === "funnel" ? Pe(e) : je(e);
|
|
3135
3146
|
}, [
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
]),
|
|
3140
|
-
|
|
3147
|
+
O,
|
|
3148
|
+
Pe,
|
|
3149
|
+
je
|
|
3150
|
+
]), Be = B((e) => {
|
|
3151
|
+
O === "funnel" ? Fe(e) : Me(e);
|
|
3141
3152
|
}, [
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
]),
|
|
3153
|
+
O,
|
|
3154
|
+
Fe,
|
|
3155
|
+
Me
|
|
3156
|
+
]), Ve = H(() => kt(T, E), [T, E]), He = H(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
|
|
3146
3157
|
name: "custom",
|
|
3147
3158
|
label: "Custom",
|
|
3148
3159
|
colors: t,
|
|
3149
3160
|
gradient: t
|
|
3150
|
-
} : t :
|
|
3161
|
+
} : t : p(ke), [t, ke]), Ue = B((e) => {
|
|
3151
3162
|
r.setState((t) => ({ charts: {
|
|
3152
3163
|
...t.charts,
|
|
3153
3164
|
flow: {
|
|
@@ -3159,7 +3170,7 @@ function Vn(e = {}) {
|
|
|
3159
3170
|
displayConfig: e
|
|
3160
3171
|
}
|
|
3161
3172
|
} }));
|
|
3162
|
-
}, [r]),
|
|
3173
|
+
}, [r]), We = B((e) => {
|
|
3163
3174
|
r.setState((t) => ({ charts: {
|
|
3164
3175
|
...t.charts,
|
|
3165
3176
|
retention: {
|
|
@@ -3171,101 +3182,101 @@ function Vn(e = {}) {
|
|
|
3171
3182
|
displayConfig: e
|
|
3172
3183
|
}
|
|
3173
3184
|
} }));
|
|
3174
|
-
}, [r]),
|
|
3175
|
-
|
|
3185
|
+
}, [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] = W(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), Ot = $((e) => e.setFunnelTimeDimension), At = $((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), Kt = $((e) => e.setRetentionBreakdowns), X = $((e) => e.addRetentionBreakdown), Z = $((e) => e.removeRetentionBreakdown), qt = $((e) => e.setRetentionViewGranularity), Jt = $((e) => e.setRetentionPeriods), Q = $((e) => e.setRetentionType), Yt = $((e) => e.getValidation), Xt = H(() => Yt(), [
|
|
3186
|
+
Yt,
|
|
3176
3187
|
i,
|
|
3177
|
-
|
|
3178
|
-
k,
|
|
3179
|
-
D,
|
|
3188
|
+
O,
|
|
3180
3189
|
A,
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
N,
|
|
3190
|
+
k,
|
|
3191
|
+
j,
|
|
3184
3192
|
P,
|
|
3185
|
-
se,
|
|
3186
3193
|
F,
|
|
3194
|
+
oe,
|
|
3195
|
+
se,
|
|
3187
3196
|
I,
|
|
3188
|
-
L
|
|
3189
|
-
|
|
3190
|
-
|
|
3197
|
+
L,
|
|
3198
|
+
ce,
|
|
3199
|
+
le
|
|
3200
|
+
]), Zt = B((e, t) => {
|
|
3201
|
+
O === "retention" && t === "dimension" ? X({ field: e.name }) : ut(e.name, t === "timeDimension");
|
|
3191
3202
|
}, [
|
|
3192
|
-
|
|
3203
|
+
O,
|
|
3193
3204
|
X,
|
|
3194
|
-
|
|
3195
|
-
]),
|
|
3196
|
-
|
|
3205
|
+
ut
|
|
3206
|
+
]), Qt = B((e, t, n, r) => {
|
|
3207
|
+
Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
|
|
3197
3208
|
}, [
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3209
|
+
Ye,
|
|
3210
|
+
at,
|
|
3211
|
+
Zt,
|
|
3212
|
+
$e
|
|
3202
3213
|
]);
|
|
3203
3214
|
return {
|
|
3204
3215
|
storeApi: r,
|
|
3205
|
-
queryState:
|
|
3216
|
+
queryState: g,
|
|
3206
3217
|
queryStates: i,
|
|
3207
3218
|
activeQueryIndex: a,
|
|
3208
3219
|
mergeStrategy: o,
|
|
3209
|
-
isMultiQueryMode:
|
|
3210
|
-
mergeKeys:
|
|
3211
|
-
currentQuery:
|
|
3212
|
-
allQueries:
|
|
3213
|
-
multiQueryConfig:
|
|
3214
|
-
multiQueryValidation:
|
|
3215
|
-
isValidQuery:
|
|
3216
|
-
effectiveIsValidQuery:
|
|
3217
|
-
combinedMetrics:
|
|
3218
|
-
combinedBreakdowns:
|
|
3219
|
-
effectiveBreakdowns:
|
|
3220
|
-
analysisType:
|
|
3221
|
-
funnelBindingKey:
|
|
3222
|
-
isFunnelModeEnabled:
|
|
3223
|
-
funnelCube:
|
|
3224
|
-
funnelSteps:
|
|
3225
|
-
activeFunnelStepIndex:
|
|
3226
|
-
funnelTimeDimension:
|
|
3220
|
+
isMultiQueryMode: _,
|
|
3221
|
+
mergeKeys: v,
|
|
3222
|
+
currentQuery: b,
|
|
3223
|
+
allQueries: x,
|
|
3224
|
+
multiQueryConfig: S,
|
|
3225
|
+
multiQueryValidation: C,
|
|
3226
|
+
isValidQuery: w,
|
|
3227
|
+
effectiveIsValidQuery: we,
|
|
3228
|
+
combinedMetrics: T,
|
|
3229
|
+
combinedBreakdowns: E,
|
|
3230
|
+
effectiveBreakdowns: D,
|
|
3231
|
+
analysisType: O,
|
|
3232
|
+
funnelBindingKey: k,
|
|
3233
|
+
isFunnelModeEnabled: M,
|
|
3234
|
+
funnelCube: ee,
|
|
3235
|
+
funnelSteps: A,
|
|
3236
|
+
activeFunnelStepIndex: te,
|
|
3237
|
+
funnelTimeDimension: j,
|
|
3227
3238
|
funnelChartType: ne,
|
|
3228
3239
|
funnelChartConfig: re,
|
|
3229
|
-
funnelDisplayConfig:
|
|
3230
|
-
serverFunnelQuery:
|
|
3231
|
-
flowCube:
|
|
3232
|
-
flowBindingKey:
|
|
3233
|
-
flowTimeDimension:
|
|
3234
|
-
eventDimension:
|
|
3235
|
-
startingStep:
|
|
3236
|
-
stepsBefore:
|
|
3237
|
-
stepsAfter:
|
|
3238
|
-
joinStrategy:
|
|
3239
|
-
flowDisplayConfig:
|
|
3240
|
-
serverFlowQuery:
|
|
3241
|
-
retentionCube:
|
|
3242
|
-
retentionBindingKey:
|
|
3243
|
-
retentionTimeDimension:
|
|
3244
|
-
retentionDateRange:
|
|
3245
|
-
retentionCohortFilters:
|
|
3246
|
-
retentionActivityFilters:
|
|
3247
|
-
retentionBreakdowns:
|
|
3248
|
-
retentionViewGranularity:
|
|
3249
|
-
retentionPeriods:
|
|
3240
|
+
funnelDisplayConfig: ae,
|
|
3241
|
+
serverFunnelQuery: pe,
|
|
3242
|
+
flowCube: P,
|
|
3243
|
+
flowBindingKey: F,
|
|
3244
|
+
flowTimeDimension: oe,
|
|
3245
|
+
eventDimension: se,
|
|
3246
|
+
startingStep: I,
|
|
3247
|
+
stepsBefore: L,
|
|
3248
|
+
stepsAfter: ce,
|
|
3249
|
+
joinStrategy: le,
|
|
3250
|
+
flowDisplayConfig: de,
|
|
3251
|
+
serverFlowQuery: he,
|
|
3252
|
+
retentionCube: ge,
|
|
3253
|
+
retentionBindingKey: _e,
|
|
3254
|
+
retentionTimeDimension: z,
|
|
3255
|
+
retentionDateRange: ve,
|
|
3256
|
+
retentionCohortFilters: ye,
|
|
3257
|
+
retentionActivityFilters: be,
|
|
3258
|
+
retentionBreakdowns: V,
|
|
3259
|
+
retentionViewGranularity: U,
|
|
3260
|
+
retentionPeriods: G,
|
|
3250
3261
|
retentionType: K,
|
|
3251
|
-
retentionDisplayConfig:
|
|
3252
|
-
serverRetentionQuery:
|
|
3253
|
-
retentionValidation:
|
|
3254
|
-
chartType:
|
|
3255
|
-
chartConfig:
|
|
3256
|
-
displayConfig:
|
|
3257
|
-
colorPalette:
|
|
3258
|
-
localPaletteName:
|
|
3259
|
-
chartAvailability:
|
|
3260
|
-
userManuallySelectedChart:
|
|
3261
|
-
activeTab:
|
|
3262
|
-
activeView:
|
|
3263
|
-
displayLimit:
|
|
3264
|
-
showFieldModal:
|
|
3265
|
-
fieldModalMode:
|
|
3266
|
-
activeTableIndex:
|
|
3267
|
-
adapterValidation:
|
|
3268
|
-
getQueryConfig:
|
|
3262
|
+
retentionDisplayConfig: Se,
|
|
3263
|
+
serverRetentionQuery: J,
|
|
3264
|
+
retentionValidation: Ce,
|
|
3265
|
+
chartType: Te,
|
|
3266
|
+
chartConfig: Y,
|
|
3267
|
+
displayConfig: De,
|
|
3268
|
+
colorPalette: He,
|
|
3269
|
+
localPaletteName: ke,
|
|
3270
|
+
chartAvailability: Ve,
|
|
3271
|
+
userManuallySelectedChart: Oe,
|
|
3272
|
+
activeTab: Ge,
|
|
3273
|
+
activeView: Ke,
|
|
3274
|
+
displayLimit: qe,
|
|
3275
|
+
showFieldModal: Je,
|
|
3276
|
+
fieldModalMode: Ye,
|
|
3277
|
+
activeTableIndex: et,
|
|
3278
|
+
adapterValidation: Xt,
|
|
3279
|
+
getQueryConfig: B(() => {
|
|
3269
3280
|
let e = r.getState();
|
|
3270
3281
|
return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
|
|
3271
3282
|
queries: e.buildAllQueries(),
|
|
@@ -3276,103 +3287,103 @@ function Vn(e = {}) {
|
|
|
3276
3287
|
stepTimeToConvert: e.stepTimeToConvert
|
|
3277
3288
|
} : e.buildCurrentQuery();
|
|
3278
3289
|
}, [r]),
|
|
3279
|
-
getChartConfig:
|
|
3290
|
+
getChartConfig: B(() => {
|
|
3280
3291
|
let e = r.getState(), t = e.charts[e.analysisType];
|
|
3281
3292
|
return t ? {
|
|
3282
3293
|
chartType: t.chartType,
|
|
3283
3294
|
chartConfig: t.chartConfig,
|
|
3284
3295
|
displayConfig: t.displayConfig
|
|
3285
3296
|
} : {
|
|
3286
|
-
chartType:
|
|
3287
|
-
chartConfig:
|
|
3288
|
-
displayConfig:
|
|
3297
|
+
chartType: Te,
|
|
3298
|
+
chartConfig: Y,
|
|
3299
|
+
displayConfig: De
|
|
3289
3300
|
};
|
|
3290
3301
|
}, [
|
|
3291
3302
|
r,
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3303
|
+
Te,
|
|
3304
|
+
Y,
|
|
3305
|
+
De
|
|
3295
3306
|
]),
|
|
3296
|
-
getAnalysisType:
|
|
3307
|
+
getAnalysisType: B(() => r.getState().analysisType, [r]),
|
|
3297
3308
|
actions: {
|
|
3298
3309
|
setActiveQueryIndex: s,
|
|
3299
3310
|
setMergeStrategy: c,
|
|
3300
|
-
addQuery:
|
|
3301
|
-
removeQuery:
|
|
3302
|
-
openMetricsModal:
|
|
3303
|
-
addMetric:
|
|
3304
|
-
removeMetric:
|
|
3305
|
-
toggleMetric:
|
|
3306
|
-
reorderMetrics:
|
|
3307
|
-
openBreakdownsModal:
|
|
3308
|
-
addBreakdown:
|
|
3309
|
-
removeBreakdown:
|
|
3310
|
-
toggleBreakdown:
|
|
3311
|
-
setBreakdownGranularity:
|
|
3312
|
-
toggleBreakdownComparison:
|
|
3313
|
-
reorderBreakdowns:
|
|
3314
|
-
setFilters:
|
|
3315
|
-
dropFieldToFilter:
|
|
3316
|
-
setOrder:
|
|
3317
|
-
setLimit:
|
|
3318
|
-
setFunnelBindingKey:
|
|
3319
|
-
setAnalysisType:
|
|
3320
|
-
setFunnelCube:
|
|
3321
|
-
addFunnelStep:
|
|
3322
|
-
removeFunnelStep:
|
|
3323
|
-
updateFunnelStep:
|
|
3324
|
-
setActiveFunnelStepIndex:
|
|
3325
|
-
reorderFunnelSteps:
|
|
3326
|
-
setFunnelTimeDimension:
|
|
3327
|
-
setFunnelDisplayConfig:
|
|
3328
|
-
setFlowCube:
|
|
3329
|
-
setFlowBindingKey:
|
|
3330
|
-
setFlowTimeDimension:
|
|
3331
|
-
setEventDimension:
|
|
3332
|
-
setStartingStepName:
|
|
3333
|
-
setStartingStepFilters:
|
|
3334
|
-
setStepsBefore:
|
|
3335
|
-
setStepsAfter:
|
|
3336
|
-
setJoinStrategy:
|
|
3337
|
-
setFlowDisplayConfig:
|
|
3338
|
-
setRetentionCube:
|
|
3339
|
-
setRetentionBindingKey:
|
|
3340
|
-
setRetentionTimeDimension:
|
|
3341
|
-
setRetentionDateRange:
|
|
3342
|
-
setRetentionCohortFilters:
|
|
3343
|
-
setRetentionActivityFilters:
|
|
3344
|
-
setRetentionBreakdowns:
|
|
3311
|
+
addQuery: u,
|
|
3312
|
+
removeQuery: d,
|
|
3313
|
+
openMetricsModal: nt,
|
|
3314
|
+
addMetric: rt,
|
|
3315
|
+
removeMetric: it,
|
|
3316
|
+
toggleMetric: at,
|
|
3317
|
+
reorderMetrics: ot,
|
|
3318
|
+
openBreakdownsModal: st,
|
|
3319
|
+
addBreakdown: ct,
|
|
3320
|
+
removeBreakdown: lt,
|
|
3321
|
+
toggleBreakdown: ut,
|
|
3322
|
+
setBreakdownGranularity: dt,
|
|
3323
|
+
toggleBreakdownComparison: ft,
|
|
3324
|
+
reorderBreakdowns: pt,
|
|
3325
|
+
setFilters: mt,
|
|
3326
|
+
dropFieldToFilter: ht,
|
|
3327
|
+
setOrder: gt,
|
|
3328
|
+
setLimit: _t,
|
|
3329
|
+
setFunnelBindingKey: bt,
|
|
3330
|
+
setAnalysisType: xt,
|
|
3331
|
+
setFunnelCube: St,
|
|
3332
|
+
addFunnelStep: Ct,
|
|
3333
|
+
removeFunnelStep: wt,
|
|
3334
|
+
updateFunnelStep: Tt,
|
|
3335
|
+
setActiveFunnelStepIndex: Et,
|
|
3336
|
+
reorderFunnelSteps: Dt,
|
|
3337
|
+
setFunnelTimeDimension: Ot,
|
|
3338
|
+
setFunnelDisplayConfig: Fe,
|
|
3339
|
+
setFlowCube: At,
|
|
3340
|
+
setFlowBindingKey: Mt,
|
|
3341
|
+
setFlowTimeDimension: Nt,
|
|
3342
|
+
setEventDimension: Pt,
|
|
3343
|
+
setStartingStepName: Ft,
|
|
3344
|
+
setStartingStepFilters: It,
|
|
3345
|
+
setStepsBefore: Lt,
|
|
3346
|
+
setStepsAfter: Rt,
|
|
3347
|
+
setJoinStrategy: zt,
|
|
3348
|
+
setFlowDisplayConfig: Ue,
|
|
3349
|
+
setRetentionCube: Bt,
|
|
3350
|
+
setRetentionBindingKey: Vt,
|
|
3351
|
+
setRetentionTimeDimension: Ht,
|
|
3352
|
+
setRetentionDateRange: Ut,
|
|
3353
|
+
setRetentionCohortFilters: Wt,
|
|
3354
|
+
setRetentionActivityFilters: Gt,
|
|
3355
|
+
setRetentionBreakdowns: Kt,
|
|
3345
3356
|
addRetentionBreakdown: X,
|
|
3346
3357
|
removeRetentionBreakdown: Z,
|
|
3347
|
-
setRetentionViewGranularity:
|
|
3348
|
-
setRetentionPeriods:
|
|
3358
|
+
setRetentionViewGranularity: qt,
|
|
3359
|
+
setRetentionPeriods: Jt,
|
|
3349
3360
|
setRetentionType: Q,
|
|
3350
|
-
setRetentionDisplayConfig:
|
|
3351
|
-
setChartType:
|
|
3352
|
-
setChartConfig:
|
|
3353
|
-
setDisplayConfig:
|
|
3354
|
-
setLocalPaletteName:
|
|
3355
|
-
setUserManuallySelectedChart:
|
|
3356
|
-
setActiveTab:
|
|
3357
|
-
setActiveView:
|
|
3358
|
-
setDisplayLimit:
|
|
3359
|
-
closeFieldModal:
|
|
3360
|
-
setActiveTableIndex:
|
|
3361
|
-
clearQuery:
|
|
3362
|
-
clearCurrentMode:
|
|
3363
|
-
handleFieldSelected:
|
|
3361
|
+
setRetentionDisplayConfig: We,
|
|
3362
|
+
setChartType: Re,
|
|
3363
|
+
setChartConfig: ze,
|
|
3364
|
+
setDisplayConfig: Be,
|
|
3365
|
+
setLocalPaletteName: Ie,
|
|
3366
|
+
setUserManuallySelectedChart: Le,
|
|
3367
|
+
setActiveTab: Xe,
|
|
3368
|
+
setActiveView: Ze,
|
|
3369
|
+
setDisplayLimit: Qe,
|
|
3370
|
+
closeFieldModal: $e,
|
|
3371
|
+
setActiveTableIndex: tt,
|
|
3372
|
+
clearQuery: vt,
|
|
3373
|
+
clearCurrentMode: yt,
|
|
3374
|
+
handleFieldSelected: Qt
|
|
3364
3375
|
}
|
|
3365
3376
|
};
|
|
3366
3377
|
}
|
|
3367
3378
|
//#endregion
|
|
3368
3379
|
//#region src/client/hooks/analysisQueryExecutionModes.ts
|
|
3369
|
-
function
|
|
3380
|
+
function Wn(e) {
|
|
3370
3381
|
return e.isRetentionMode ? "retention" : e.isFlowMode ? "flow" : e.isFunnelMode ? "funnel" : e.isMultiMode ? "multi" : "single";
|
|
3371
3382
|
}
|
|
3372
|
-
function
|
|
3383
|
+
function Gn(e, t) {
|
|
3373
3384
|
return t[e];
|
|
3374
3385
|
}
|
|
3375
|
-
function
|
|
3386
|
+
function Kn(e) {
|
|
3376
3387
|
return {
|
|
3377
3388
|
funnelExecutedQueries: e.isFunnelMode && e.funnelExecutedQueries && e.funnelExecutedQueries.length > 0 ? e.funnelExecutedQueries : null,
|
|
3378
3389
|
funnelServerQuery: e.isFunnelMode ? e.funnelServerQuery : null,
|
|
@@ -3385,7 +3396,7 @@ function Wn(e) {
|
|
|
3385
3396
|
retentionDebugData: e.isRetentionMode ? e.retentionDebugData : null
|
|
3386
3397
|
};
|
|
3387
3398
|
}
|
|
3388
|
-
function
|
|
3399
|
+
function qn(e) {
|
|
3389
3400
|
return {
|
|
3390
3401
|
single: !e.isValidQuery || !e.isSingleMode,
|
|
3391
3402
|
multi: !e.hasMultiQueryConfig || !e.isMultiMode,
|
|
@@ -3395,11 +3406,11 @@ function Gn(e) {
|
|
|
3395
3406
|
dryRun: !!(!e.isValidQuery || e.isFunnelMode || e.isFlowMode || e.isRetentionMode)
|
|
3396
3407
|
};
|
|
3397
3408
|
}
|
|
3398
|
-
function
|
|
3409
|
+
function Jn(e) {
|
|
3399
3410
|
let { hasResults: t, initialData: n, isValidQuery: r, isLoading: i, isFetching: a, error: o } = e;
|
|
3400
3411
|
return n && n.length > 0 && !t ? "success" : r ? i && !t ? "loading" : a && t ? "refreshing" : o ? "error" : t ? "success" : "idle" : "idle";
|
|
3401
3412
|
}
|
|
3402
|
-
function
|
|
3413
|
+
function Yn(e) {
|
|
3403
3414
|
return e.isRetentionMode && e.retentionChartData ? e.retentionChartData.rows.map((e) => ({
|
|
3404
3415
|
"Retention.period": `P${e.period}`,
|
|
3405
3416
|
"Retention.rate": e.retentionRate,
|
|
@@ -3410,18 +3421,18 @@ function qn(e) {
|
|
|
3410
3421
|
}
|
|
3411
3422
|
//#endregion
|
|
3412
3423
|
//#region src/client/hooks/useAnalysisQuery.ts
|
|
3413
|
-
function
|
|
3414
|
-
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 } =
|
|
3424
|
+
function Xn(e) {
|
|
3425
|
+
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 } = fe(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Wn({
|
|
3415
3426
|
isRetentionMode: v,
|
|
3416
3427
|
isFlowMode: _,
|
|
3417
3428
|
isFunnelMode: g,
|
|
3418
3429
|
isMultiMode: y
|
|
3419
|
-
}), C =
|
|
3430
|
+
}), C = H(() => x || !g || !c || n.length < 2 ? null : he(n, c), [
|
|
3420
3431
|
x,
|
|
3421
3432
|
g,
|
|
3422
3433
|
c,
|
|
3423
3434
|
n
|
|
3424
|
-
]), w =
|
|
3435
|
+
]), w = qn({
|
|
3425
3436
|
isValidQuery: a,
|
|
3426
3437
|
isSingleMode: b,
|
|
3427
3438
|
isMultiMode: y,
|
|
@@ -3433,46 +3444,46 @@ function Jn(e) {
|
|
|
3433
3444
|
hasServerFunnelQuery: !!d,
|
|
3434
3445
|
hasServerFlowQuery: !!f,
|
|
3435
3446
|
hasServerRetentionQuery: !!p
|
|
3436
|
-
}), T =
|
|
3447
|
+
}), T = P(t, {
|
|
3437
3448
|
skip: w.single,
|
|
3438
3449
|
debounceMs: 300
|
|
3439
3450
|
}), E = se(r, {
|
|
3440
3451
|
skip: w.multi,
|
|
3441
3452
|
debounceMs: 300
|
|
3442
|
-
}), D =
|
|
3453
|
+
}), D = ce(C, {
|
|
3443
3454
|
skip: w.funnel,
|
|
3444
3455
|
debounceMs: 300,
|
|
3445
3456
|
prebuiltServerQuery: x ? d : void 0
|
|
3446
|
-
}), O =
|
|
3457
|
+
}), O = de(f ?? null, {
|
|
3447
3458
|
skip: w.flow,
|
|
3448
3459
|
debounceMs: 300
|
|
3449
|
-
}), k =
|
|
3460
|
+
}), k = oe(p ?? null, {
|
|
3450
3461
|
skip: w.retention,
|
|
3451
3462
|
debounceMs: 300,
|
|
3452
3463
|
getFieldLabel: h
|
|
3453
|
-
}), ee =
|
|
3464
|
+
}), ee = me({
|
|
3454
3465
|
queries: i ? n : [t],
|
|
3455
3466
|
isMultiQueryMode: i,
|
|
3456
3467
|
skip: w.dryRun
|
|
3457
|
-
}), A =
|
|
3468
|
+
}), A = pe(D.serverQuery, { skip: !g || !D.serverQuery }), te = pe(O.serverQuery, { skip: !_ || !O.serverQuery }), j = pe(p, { skip: !v || !p }), M = Gn(S, {
|
|
3458
3469
|
retention: k.isLoading || k.isDebouncing,
|
|
3459
3470
|
flow: O.isLoading || O.isDebouncing,
|
|
3460
3471
|
funnel: D.isExecuting || D.isDebouncing,
|
|
3461
3472
|
multi: E.isLoading,
|
|
3462
3473
|
single: T.isLoading
|
|
3463
|
-
}),
|
|
3474
|
+
}), ne = Gn(S, {
|
|
3464
3475
|
retention: k.isFetching,
|
|
3465
3476
|
flow: O.isFetching,
|
|
3466
3477
|
funnel: D.isExecuting,
|
|
3467
3478
|
multi: E.isFetching,
|
|
3468
3479
|
single: T.isFetching
|
|
3469
|
-
}),
|
|
3480
|
+
}), N = Gn(S, {
|
|
3470
3481
|
retention: k.error,
|
|
3471
3482
|
flow: O.error,
|
|
3472
3483
|
funnel: D.error,
|
|
3473
3484
|
multi: E.error,
|
|
3474
3485
|
single: T.error
|
|
3475
|
-
}),
|
|
3486
|
+
}), re = !!(T.debouncedQuery || E.debouncedConfig || !D.isDebouncing || !O.isDebouncing || !k.isDebouncing), ie = B((e) => {
|
|
3476
3487
|
switch (S) {
|
|
3477
3488
|
case "retention":
|
|
3478
3489
|
k.execute(e);
|
|
@@ -3495,8 +3506,8 @@ function Jn(e) {
|
|
|
3495
3506
|
D,
|
|
3496
3507
|
E,
|
|
3497
3508
|
T
|
|
3498
|
-
]),
|
|
3499
|
-
hasResults:
|
|
3509
|
+
]), ae = H(() => Jn({
|
|
3510
|
+
hasResults: Gn(S, {
|
|
3500
3511
|
retention: k.chartData,
|
|
3501
3512
|
flow: O.data,
|
|
3502
3513
|
funnel: D.chartData,
|
|
@@ -3505,14 +3516,14 @@ function Jn(e) {
|
|
|
3505
3516
|
}),
|
|
3506
3517
|
initialData: o,
|
|
3507
3518
|
isValidQuery: a,
|
|
3508
|
-
isLoading:
|
|
3509
|
-
isFetching:
|
|
3510
|
-
error:
|
|
3519
|
+
isLoading: M,
|
|
3520
|
+
isFetching: ne,
|
|
3521
|
+
error: N
|
|
3511
3522
|
}), [
|
|
3512
3523
|
a,
|
|
3513
|
-
j,
|
|
3514
|
-
re,
|
|
3515
3524
|
M,
|
|
3525
|
+
ne,
|
|
3526
|
+
N,
|
|
3516
3527
|
T.rawData,
|
|
3517
3528
|
E.data,
|
|
3518
3529
|
D.chartData,
|
|
@@ -3520,7 +3531,7 @@ function Jn(e) {
|
|
|
3520
3531
|
k.chartData,
|
|
3521
3532
|
o,
|
|
3522
3533
|
S
|
|
3523
|
-
]), F =
|
|
3534
|
+
]), F = H(() => Yn({
|
|
3524
3535
|
isRetentionMode: v,
|
|
3525
3536
|
isFlowMode: _,
|
|
3526
3537
|
isFunnelMode: g,
|
|
@@ -3542,12 +3553,12 @@ function Jn(e) {
|
|
|
3542
3553
|
g,
|
|
3543
3554
|
_,
|
|
3544
3555
|
v
|
|
3545
|
-
]), I =
|
|
3556
|
+
]), I = H(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
|
|
3546
3557
|
y,
|
|
3547
3558
|
g,
|
|
3548
3559
|
E.perQueryData,
|
|
3549
3560
|
D.stepResults
|
|
3550
|
-
]), { funnelExecutedQueries:
|
|
3561
|
+
]), { funnelExecutedQueries: L, funnelServerQuery: le, funnelDebugData: ue, flowServerQuery: R, flowChartData: ge, flowDebugData: _e, retentionServerQuery: z, retentionChartData: ve, retentionDebugData: ye } = Kn({
|
|
3551
3562
|
isFunnelMode: g,
|
|
3552
3563
|
isFlowMode: _,
|
|
3553
3564
|
isRetentionMode: v,
|
|
@@ -3559,8 +3570,8 @@ function Jn(e) {
|
|
|
3559
3570
|
flowDebugData: te.debugData,
|
|
3560
3571
|
retentionServerQuery: p ?? null,
|
|
3561
3572
|
retentionChartData: k.chartData,
|
|
3562
|
-
retentionDebugData:
|
|
3563
|
-
}),
|
|
3573
|
+
retentionDebugData: j.debugData
|
|
3574
|
+
}), be = H(() => Gn(S, {
|
|
3564
3575
|
retention: k.needsRefresh,
|
|
3565
3576
|
flow: O.needsRefresh,
|
|
3566
3577
|
funnel: D.needsRefresh,
|
|
@@ -3572,72 +3583,72 @@ function Jn(e) {
|
|
|
3572
3583
|
O.needsRefresh,
|
|
3573
3584
|
D.needsRefresh,
|
|
3574
3585
|
T.needsRefresh
|
|
3575
|
-
]),
|
|
3586
|
+
]), V = H(() => {
|
|
3576
3587
|
if (b && T.warnings) return T.warnings;
|
|
3577
3588
|
}, [b, T.warnings]);
|
|
3578
3589
|
return {
|
|
3579
|
-
executionStatus:
|
|
3590
|
+
executionStatus: ae,
|
|
3580
3591
|
executionResults: F,
|
|
3581
3592
|
perQueryResults: I,
|
|
3582
|
-
isLoading:
|
|
3583
|
-
isFetching:
|
|
3584
|
-
error:
|
|
3593
|
+
isLoading: M,
|
|
3594
|
+
isFetching: ne,
|
|
3595
|
+
error: N,
|
|
3585
3596
|
debugDataPerQuery: ee.debugDataPerQuery,
|
|
3586
|
-
hasDebounced:
|
|
3587
|
-
refetch:
|
|
3588
|
-
funnelExecutedQueries:
|
|
3597
|
+
hasDebounced: re,
|
|
3598
|
+
refetch: ie,
|
|
3599
|
+
funnelExecutedQueries: L,
|
|
3589
3600
|
funnelServerQuery: le,
|
|
3590
|
-
funnelDebugData:
|
|
3591
|
-
flowServerQuery:
|
|
3592
|
-
flowChartData:
|
|
3593
|
-
flowDebugData:
|
|
3594
|
-
retentionServerQuery:
|
|
3595
|
-
retentionChartData:
|
|
3596
|
-
retentionDebugData:
|
|
3601
|
+
funnelDebugData: ue,
|
|
3602
|
+
flowServerQuery: R,
|
|
3603
|
+
flowChartData: ge,
|
|
3604
|
+
flowDebugData: _e,
|
|
3605
|
+
retentionServerQuery: z,
|
|
3606
|
+
retentionChartData: ve,
|
|
3607
|
+
retentionDebugData: ye,
|
|
3597
3608
|
retentionValidation: m ?? null,
|
|
3598
|
-
needsRefresh:
|
|
3599
|
-
warnings:
|
|
3609
|
+
needsRefresh: be,
|
|
3610
|
+
warnings: V
|
|
3600
3611
|
};
|
|
3601
3612
|
}
|
|
3602
3613
|
//#endregion
|
|
3603
3614
|
//#region src/client/utils/shareUtils.ts
|
|
3604
|
-
var
|
|
3605
|
-
function
|
|
3615
|
+
var Zn = o(), Qn = 1800, $n = "share=";
|
|
3616
|
+
function er(e) {
|
|
3606
3617
|
let t = JSON.stringify(e);
|
|
3607
|
-
return (0,
|
|
3618
|
+
return (0, Zn.compressToEncodedURIComponent)(t);
|
|
3608
3619
|
}
|
|
3609
|
-
function
|
|
3620
|
+
function tr(e) {
|
|
3610
3621
|
try {
|
|
3611
|
-
let t = (0,
|
|
3622
|
+
let t = (0, Zn.decompressFromEncodedURIComponent)(e);
|
|
3612
3623
|
if (!t) return null;
|
|
3613
3624
|
let n = JSON.parse(t);
|
|
3614
|
-
return
|
|
3625
|
+
return O(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
|
|
3615
3626
|
} catch {
|
|
3616
3627
|
return null;
|
|
3617
3628
|
}
|
|
3618
3629
|
}
|
|
3619
|
-
function
|
|
3620
|
-
let t =
|
|
3630
|
+
function nr(e) {
|
|
3631
|
+
let t = er(e);
|
|
3621
3632
|
return {
|
|
3622
|
-
ok: t.length <=
|
|
3633
|
+
ok: t.length <= Qn,
|
|
3623
3634
|
size: t.length,
|
|
3624
|
-
maxSize:
|
|
3635
|
+
maxSize: Qn
|
|
3625
3636
|
};
|
|
3626
3637
|
}
|
|
3627
|
-
function
|
|
3628
|
-
let t =
|
|
3629
|
-
if (t.length <=
|
|
3638
|
+
function rr(e) {
|
|
3639
|
+
let t = er(e);
|
|
3640
|
+
if (t.length <= Qn) return {
|
|
3630
3641
|
encoded: t,
|
|
3631
3642
|
queryOnly: !1
|
|
3632
3643
|
};
|
|
3633
|
-
let n =
|
|
3644
|
+
let n = er({
|
|
3634
3645
|
version: e.version,
|
|
3635
3646
|
analysisType: e.analysisType,
|
|
3636
3647
|
activeView: e.activeView,
|
|
3637
3648
|
charts: {},
|
|
3638
3649
|
query: e.query
|
|
3639
3650
|
});
|
|
3640
|
-
return n.length <=
|
|
3651
|
+
return n.length <= Qn ? {
|
|
3641
3652
|
encoded: n,
|
|
3642
3653
|
queryOnly: !0
|
|
3643
3654
|
} : {
|
|
@@ -3645,27 +3656,27 @@ function tr(e) {
|
|
|
3645
3656
|
queryOnly: !0
|
|
3646
3657
|
};
|
|
3647
3658
|
}
|
|
3648
|
-
function
|
|
3649
|
-
let { encoded: t } =
|
|
3650
|
-
return t ? `${window.location.origin}${window.location.pathname}#${
|
|
3659
|
+
function ir(e) {
|
|
3660
|
+
let { encoded: t } = rr(e);
|
|
3661
|
+
return t ? `${window.location.origin}${window.location.pathname}#${$n}${t}` : null;
|
|
3651
3662
|
}
|
|
3652
|
-
function
|
|
3663
|
+
function ar() {
|
|
3653
3664
|
if (typeof window > "u") return null;
|
|
3654
3665
|
let e = window.location.hash;
|
|
3655
|
-
return !e || !e.startsWith(`#${
|
|
3666
|
+
return !e || !e.startsWith(`#${$n}`) ? null : e.slice(7);
|
|
3656
3667
|
}
|
|
3657
|
-
function
|
|
3668
|
+
function or() {
|
|
3658
3669
|
if (typeof window > "u") return;
|
|
3659
3670
|
let e = new URL(window.location.href);
|
|
3660
3671
|
e.hash = "", window.history.replaceState(null, "", e.toString());
|
|
3661
3672
|
}
|
|
3662
|
-
function
|
|
3663
|
-
let e =
|
|
3664
|
-
return e ?
|
|
3673
|
+
function sr() {
|
|
3674
|
+
let e = ar();
|
|
3675
|
+
return e ? tr(e) : null;
|
|
3665
3676
|
}
|
|
3666
3677
|
//#endregion
|
|
3667
3678
|
//#region src/client/components/AIAssistant/utils.ts
|
|
3668
|
-
async function
|
|
3679
|
+
async function cr(e, t, n = "/api/ai/generate", r) {
|
|
3669
3680
|
let i = { text: t }, a = {
|
|
3670
3681
|
"Content-Type": "application/json",
|
|
3671
3682
|
...r
|
|
@@ -3695,28 +3706,28 @@ async function or(e, t, n = "/api/ai/generate", r) {
|
|
|
3695
3706
|
let s = await o.json();
|
|
3696
3707
|
return console.log("✅ Client: Successfully generated content"), s;
|
|
3697
3708
|
}
|
|
3698
|
-
function
|
|
3709
|
+
function lr(e) {
|
|
3699
3710
|
return (e.query || "").replace(/```json\s*/g, "").replace(/```\s*/g, "").replace(/^\s*```.*\n/gm, "").trim();
|
|
3700
3711
|
}
|
|
3701
3712
|
//#endregion
|
|
3702
3713
|
//#region src/client/hooks/useAnalysisEffects.ts
|
|
3703
|
-
function
|
|
3714
|
+
function ur(e) {
|
|
3704
3715
|
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
3705
3716
|
}
|
|
3706
|
-
function
|
|
3707
|
-
let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions:
|
|
3708
|
-
|
|
3709
|
-
if (
|
|
3710
|
-
|
|
3711
|
-
let e =
|
|
3712
|
-
e && (o.getState().load(e),
|
|
3713
|
-
}, [o]),
|
|
3717
|
+
function dr(e) {
|
|
3718
|
+
let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u = U(!1);
|
|
3719
|
+
V(() => {
|
|
3720
|
+
if (u.current) return;
|
|
3721
|
+
u.current = !0;
|
|
3722
|
+
let e = sr();
|
|
3723
|
+
e && (o.getState().load(e), or());
|
|
3724
|
+
}, [o]), V(() => {
|
|
3714
3725
|
i && t.isValidQuery && i(t.currentQuery);
|
|
3715
3726
|
}, [
|
|
3716
3727
|
t.currentQuery,
|
|
3717
3728
|
t.isValidQuery,
|
|
3718
3729
|
i
|
|
3719
|
-
]),
|
|
3730
|
+
]), V(() => {
|
|
3720
3731
|
a && a({
|
|
3721
3732
|
chartType: t.chartType,
|
|
3722
3733
|
chartConfig: t.chartConfig,
|
|
@@ -3728,38 +3739,38 @@ function lr(e) {
|
|
|
3728
3739
|
t.displayConfig,
|
|
3729
3740
|
a
|
|
3730
3741
|
]);
|
|
3731
|
-
let { combinedMetrics:
|
|
3732
|
-
|
|
3733
|
-
if (!v ||
|
|
3742
|
+
let { combinedMetrics: d, combinedBreakdowns: p, chartType: h, chartConfig: g, userManuallySelectedChart: _ } = t, { hasDebounced: v } = n, { setChartType: y, setChartConfig: b } = s, x = U("");
|
|
3743
|
+
V(() => {
|
|
3744
|
+
if (!v || d.length === 0 && p.length === 0) return;
|
|
3734
3745
|
let e = JSON.stringify({
|
|
3735
|
-
metrics:
|
|
3736
|
-
breakdowns:
|
|
3746
|
+
metrics: d.map((e) => e.field),
|
|
3747
|
+
breakdowns: p.map((e) => ({
|
|
3737
3748
|
field: e.field,
|
|
3738
3749
|
isTime: e.isTimeDimension
|
|
3739
3750
|
}))
|
|
3740
3751
|
});
|
|
3741
3752
|
if (e === x.current) return;
|
|
3742
3753
|
x.current = e;
|
|
3743
|
-
let t =
|
|
3754
|
+
let t = Nt(d, p, h, _);
|
|
3744
3755
|
if (t) {
|
|
3745
|
-
let { chartConfig: e } =
|
|
3756
|
+
let { chartConfig: e } = jt(d, p, t);
|
|
3746
3757
|
y(t), b(e), s.setUserManuallySelectedChart(!1);
|
|
3747
|
-
} else if (
|
|
3748
|
-
if (h === "table") {
|
|
3749
|
-
let e = [...
|
|
3750
|
-
|
|
3758
|
+
} else if (d.length > 0 || p.length > 0) {
|
|
3759
|
+
if (h === "table" || h === "recordsTable") {
|
|
3760
|
+
let e = h === "recordsTable" ? "columns" : "xAxis", t = [...p.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));
|
|
3761
|
+
i.length > 0 && b({
|
|
3751
3762
|
...g,
|
|
3752
|
-
|
|
3763
|
+
[e]: [...n, ...i]
|
|
3753
3764
|
});
|
|
3754
3765
|
} else if (!g.xAxis?.length && !g.yAxis?.length && !g.series?.length) {
|
|
3755
|
-
let { chartConfig: e } =
|
|
3766
|
+
let { chartConfig: e } = jt(d, p, h);
|
|
3756
3767
|
b(e);
|
|
3757
3768
|
}
|
|
3758
3769
|
}
|
|
3759
3770
|
}, [
|
|
3760
3771
|
v,
|
|
3761
|
-
|
|
3762
|
-
|
|
3772
|
+
d,
|
|
3773
|
+
p,
|
|
3763
3774
|
h,
|
|
3764
3775
|
_,
|
|
3765
3776
|
g,
|
|
@@ -3767,7 +3778,7 @@ function lr(e) {
|
|
|
3767
3778
|
b,
|
|
3768
3779
|
s
|
|
3769
3780
|
]);
|
|
3770
|
-
let [S, C] =
|
|
3781
|
+
let [S, C] = W({
|
|
3771
3782
|
isOpen: !1,
|
|
3772
3783
|
userPrompt: "",
|
|
3773
3784
|
isGenerating: !1,
|
|
@@ -3775,7 +3786,7 @@ function lr(e) {
|
|
|
3775
3786
|
hasGeneratedQuery: !1,
|
|
3776
3787
|
previousState: null,
|
|
3777
3788
|
previousConfig: null
|
|
3778
|
-
}), w =
|
|
3789
|
+
}), w = B((e) => {
|
|
3779
3790
|
o.getState().updateQueryState(t.activeQueryIndex, (t) => {
|
|
3780
3791
|
let n = e(t);
|
|
3781
3792
|
return {
|
|
@@ -3787,7 +3798,7 @@ function lr(e) {
|
|
|
3787
3798
|
limit: n.limit
|
|
3788
3799
|
};
|
|
3789
3800
|
});
|
|
3790
|
-
}, [o, t.activeQueryIndex]), T =
|
|
3801
|
+
}, [o, t.activeQueryIndex]), T = B((e) => {
|
|
3791
3802
|
let t = {
|
|
3792
3803
|
version: 1,
|
|
3793
3804
|
analysisType: "funnel",
|
|
@@ -3800,7 +3811,7 @@ function lr(e) {
|
|
|
3800
3811
|
query: e
|
|
3801
3812
|
};
|
|
3802
3813
|
o.getState().load(t);
|
|
3803
|
-
}, [o]), E =
|
|
3814
|
+
}, [o]), E = B(() => {
|
|
3804
3815
|
let e = o.getState().save();
|
|
3805
3816
|
C({
|
|
3806
3817
|
isOpen: !0,
|
|
@@ -3828,7 +3839,7 @@ function lr(e) {
|
|
|
3828
3839
|
t.chartConfig,
|
|
3829
3840
|
t.displayConfig,
|
|
3830
3841
|
t.analysisType
|
|
3831
|
-
]), D =
|
|
3842
|
+
]), D = B(() => {
|
|
3832
3843
|
C((e) => ({
|
|
3833
3844
|
...e,
|
|
3834
3845
|
isOpen: !1,
|
|
@@ -3836,12 +3847,12 @@ function lr(e) {
|
|
|
3836
3847
|
error: null,
|
|
3837
3848
|
hasGeneratedQuery: !1
|
|
3838
3849
|
}));
|
|
3839
|
-
}, []), O =
|
|
3850
|
+
}, []), O = B((e) => {
|
|
3840
3851
|
C((t) => ({
|
|
3841
3852
|
...t,
|
|
3842
3853
|
userPrompt: e
|
|
3843
3854
|
}));
|
|
3844
|
-
}, []), k =
|
|
3855
|
+
}, []), k = B(async () => {
|
|
3845
3856
|
if (S.userPrompt.trim()) {
|
|
3846
3857
|
C((e) => ({
|
|
3847
3858
|
...e,
|
|
@@ -3849,8 +3860,8 @@ function lr(e) {
|
|
|
3849
3860
|
error: null
|
|
3850
3861
|
}));
|
|
3851
3862
|
try {
|
|
3852
|
-
let e =
|
|
3853
|
-
if (
|
|
3863
|
+
let e = lr(await cr("", 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;
|
|
3864
|
+
if (ur(i)) {
|
|
3854
3865
|
s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
|
|
3855
3866
|
...e,
|
|
3856
3867
|
isGenerating: !1,
|
|
@@ -3858,27 +3869,27 @@ function lr(e) {
|
|
|
3858
3869
|
}));
|
|
3859
3870
|
return;
|
|
3860
3871
|
}
|
|
3861
|
-
let
|
|
3872
|
+
let c = i;
|
|
3862
3873
|
w((e) => ({
|
|
3863
3874
|
...e,
|
|
3864
|
-
metrics: (
|
|
3865
|
-
id:
|
|
3875
|
+
metrics: (c.measures || []).map((e, t) => ({
|
|
3876
|
+
id: m(),
|
|
3866
3877
|
field: e,
|
|
3867
|
-
label:
|
|
3878
|
+
label: f(t)
|
|
3868
3879
|
})),
|
|
3869
|
-
breakdowns: [...(
|
|
3870
|
-
id:
|
|
3880
|
+
breakdowns: [...(c.dimensions || []).map((e) => ({
|
|
3881
|
+
id: m(),
|
|
3871
3882
|
field: e,
|
|
3872
3883
|
isTimeDimension: !1
|
|
3873
|
-
})), ...(
|
|
3874
|
-
id:
|
|
3884
|
+
})), ...(c.timeDimensions || []).map((e) => ({
|
|
3885
|
+
id: m(),
|
|
3875
3886
|
field: e.dimension,
|
|
3876
3887
|
granularity: e.granularity,
|
|
3877
3888
|
isTimeDimension: !0
|
|
3878
3889
|
}))],
|
|
3879
|
-
filters:
|
|
3880
|
-
order:
|
|
3881
|
-
limit:
|
|
3890
|
+
filters: c.filters || [],
|
|
3891
|
+
order: c.order || void 0,
|
|
3892
|
+
limit: c.limit ?? void 0
|
|
3882
3893
|
})), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
|
|
3883
3894
|
...e,
|
|
3884
3895
|
isGenerating: !1,
|
|
@@ -3895,12 +3906,12 @@ function lr(e) {
|
|
|
3895
3906
|
}, [
|
|
3896
3907
|
S.userPrompt,
|
|
3897
3908
|
r,
|
|
3898
|
-
|
|
3909
|
+
l?.headers,
|
|
3899
3910
|
w,
|
|
3900
3911
|
T,
|
|
3901
3912
|
t.analysisType,
|
|
3902
3913
|
s
|
|
3903
|
-
]), ee =
|
|
3914
|
+
]), ee = B(() => {
|
|
3904
3915
|
C({
|
|
3905
3916
|
isOpen: !1,
|
|
3906
3917
|
userPrompt: "",
|
|
@@ -3910,7 +3921,7 @@ function lr(e) {
|
|
|
3910
3921
|
previousState: null,
|
|
3911
3922
|
previousConfig: null
|
|
3912
3923
|
});
|
|
3913
|
-
}, []), A =
|
|
3924
|
+
}, []), A = B(() => {
|
|
3914
3925
|
S.previousConfig ? o.getState().load(S.previousConfig) : S.previousState && (w((e) => ({
|
|
3915
3926
|
...e,
|
|
3916
3927
|
metrics: S.previousState.metrics,
|
|
@@ -3931,7 +3942,7 @@ function lr(e) {
|
|
|
3931
3942
|
o,
|
|
3932
3943
|
w,
|
|
3933
3944
|
s
|
|
3934
|
-
]), [te,
|
|
3945
|
+
]), [te, j] = W("idle"), M = t.effectiveIsValidQuery;
|
|
3935
3946
|
return {
|
|
3936
3947
|
aiState: S,
|
|
3937
3948
|
openAI: E,
|
|
@@ -3941,9 +3952,9 @@ function lr(e) {
|
|
|
3941
3952
|
acceptAI: ee,
|
|
3942
3953
|
cancelAI: A,
|
|
3943
3954
|
shareButtonState: te,
|
|
3944
|
-
share:
|
|
3945
|
-
if (!
|
|
3946
|
-
let { encoded: e, queryOnly: t } =
|
|
3955
|
+
share: B(async () => {
|
|
3956
|
+
if (!M) return;
|
|
3957
|
+
let { encoded: e, queryOnly: t } = rr(o.getState().save());
|
|
3947
3958
|
if (!e) return;
|
|
3948
3959
|
let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
|
|
3949
3960
|
try {
|
|
@@ -3952,17 +3963,17 @@ function lr(e) {
|
|
|
3952
3963
|
let e = document.createElement("textarea");
|
|
3953
3964
|
e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
|
|
3954
3965
|
}
|
|
3955
|
-
|
|
3956
|
-
|
|
3966
|
+
j(t ? "copied-no-chart" : "copied"), setTimeout(() => {
|
|
3967
|
+
j("idle");
|
|
3957
3968
|
}, 2e3);
|
|
3958
|
-
}, [
|
|
3959
|
-
canShare:
|
|
3969
|
+
}, [M, o]),
|
|
3970
|
+
canShare: M
|
|
3960
3971
|
};
|
|
3961
3972
|
}
|
|
3962
3973
|
//#endregion
|
|
3963
3974
|
//#region src/client/hooks/useAnalysisBuilderHook.ts
|
|
3964
|
-
function
|
|
3965
|
-
let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o =
|
|
3975
|
+
function fr(e = {}) {
|
|
3976
|
+
let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = Un({ externalColorPalette: n }), c = Xn({
|
|
3966
3977
|
currentQuery: o.currentQuery,
|
|
3967
3978
|
allQueries: o.allQueries,
|
|
3968
3979
|
multiQueryConfig: o.multiQueryConfig,
|
|
@@ -3977,7 +3988,7 @@ function ur(e = {}) {
|
|
|
3977
3988
|
serverFlowQuery: o.serverFlowQuery,
|
|
3978
3989
|
serverRetentionQuery: o.serverRetentionQuery,
|
|
3979
3990
|
retentionValidation: o.retentionValidation
|
|
3980
|
-
}), l =
|
|
3991
|
+
}), l = dr({
|
|
3981
3992
|
state: o,
|
|
3982
3993
|
query: c,
|
|
3983
3994
|
aiEndpoint: a?.aiEndpoint,
|
|
@@ -4152,7 +4163,7 @@ function ur(e = {}) {
|
|
|
4152
4163
|
}
|
|
4153
4164
|
//#endregion
|
|
4154
4165
|
//#region src/client/utils/funnelValidation.ts
|
|
4155
|
-
function
|
|
4166
|
+
function pr(e, t) {
|
|
4156
4167
|
let n = [];
|
|
4157
4168
|
if (!t?.cubes) return n;
|
|
4158
4169
|
if (typeof e.dimension == "string") {
|
|
@@ -4176,7 +4187,7 @@ function dr(e, t) {
|
|
|
4176
4187
|
}
|
|
4177
4188
|
return n;
|
|
4178
4189
|
}
|
|
4179
|
-
function
|
|
4190
|
+
function mr(e) {
|
|
4180
4191
|
let t = [];
|
|
4181
4192
|
for (let n = 0; n < e.length; n++) {
|
|
4182
4193
|
let r = e[n], i = r.query;
|
|
@@ -4188,17 +4199,17 @@ function fr(e) {
|
|
|
4188
4199
|
}
|
|
4189
4200
|
return t;
|
|
4190
4201
|
}
|
|
4191
|
-
function
|
|
4202
|
+
function hr(e, t) {
|
|
4192
4203
|
if (typeof e.dimension == "string") return !0;
|
|
4193
|
-
let n =
|
|
4204
|
+
let n = ge(t);
|
|
4194
4205
|
return n ? e.dimension.some((e) => e.cube === n) : !1;
|
|
4195
4206
|
}
|
|
4196
|
-
function
|
|
4207
|
+
function gr(e, t) {
|
|
4197
4208
|
let n = [];
|
|
4198
4209
|
for (let r = 0; r < t.length; r++) {
|
|
4199
4210
|
let i = t[r];
|
|
4200
|
-
if (!
|
|
4201
|
-
let e =
|
|
4211
|
+
if (!hr(e, i.query)) {
|
|
4212
|
+
let e = ge(i.query) || "unknown";
|
|
4202
4213
|
n.push({
|
|
4203
4214
|
type: "cross_cube",
|
|
4204
4215
|
message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
|
|
@@ -4208,26 +4219,26 @@ function mr(e, t) {
|
|
|
4208
4219
|
}
|
|
4209
4220
|
return n;
|
|
4210
4221
|
}
|
|
4211
|
-
function
|
|
4222
|
+
function _r(e) {
|
|
4212
4223
|
return e ? /^P(?:\d+Y)?(?:\d+M)?(?:\d+W)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$/.test(e) ? null : {
|
|
4213
4224
|
type: "time_window",
|
|
4214
4225
|
message: `Invalid time window format "${e}". Expected ISO 8601 duration (e.g., P7D, PT1H)`
|
|
4215
4226
|
} : null;
|
|
4216
4227
|
}
|
|
4217
|
-
function
|
|
4228
|
+
function vr(e, t) {
|
|
4218
4229
|
let n = [], r = [];
|
|
4219
4230
|
e.steps.length < 2 && n.push({
|
|
4220
4231
|
type: "general",
|
|
4221
4232
|
message: "Funnel requires at least 2 steps"
|
|
4222
|
-
}), e.bindingKey?.dimension ? (n.push(...
|
|
4233
|
+
}), e.bindingKey?.dimension ? (n.push(...pr(e.bindingKey, t)), n.push(...gr(e.bindingKey, e.steps))) : n.push({
|
|
4223
4234
|
type: "binding_key",
|
|
4224
4235
|
message: "Binding key dimension is required"
|
|
4225
|
-
}), n.push(...
|
|
4236
|
+
}), n.push(...mr(e.steps));
|
|
4226
4237
|
for (let t = 0; t < e.steps.length; t++) {
|
|
4227
|
-
let r = e.steps[t], i =
|
|
4238
|
+
let r = e.steps[t], i = _r(r.timeToConvert);
|
|
4228
4239
|
i && (i.stepIndex = t, n.push(i));
|
|
4229
4240
|
}
|
|
4230
|
-
let i =
|
|
4241
|
+
let i = _r(e.globalTimeWindow);
|
|
4231
4242
|
return i && n.push(i), e.steps.length > 5 && r.push({
|
|
4232
4243
|
type: "general",
|
|
4233
4244
|
message: "Funnels with more than 5 steps may have reduced performance"
|
|
@@ -4237,7 +4248,7 @@ function gr(e, t) {
|
|
|
4237
4248
|
warnings: r
|
|
4238
4249
|
};
|
|
4239
4250
|
}
|
|
4240
|
-
function
|
|
4251
|
+
function yr(e, t) {
|
|
4241
4252
|
return t < 2 ? {
|
|
4242
4253
|
isValid: !1,
|
|
4243
4254
|
message: "Add at least 2 steps for funnel"
|
|
@@ -4246,7 +4257,7 @@ function _r(e, t) {
|
|
|
4246
4257
|
message: "Select a binding key dimension"
|
|
4247
4258
|
} : { isValid: !0 };
|
|
4248
4259
|
}
|
|
4249
|
-
function
|
|
4260
|
+
function br(e) {
|
|
4250
4261
|
if (!e?.cubes) return [];
|
|
4251
4262
|
let t = [];
|
|
4252
4263
|
for (let n of e.cubes) if (n.dimensions) for (let e of n.dimensions) (e.type === "string" || e.type === "number") && t.push({
|
|
@@ -4256,7 +4267,7 @@ function vr(e) {
|
|
|
4256
4267
|
});
|
|
4257
4268
|
return t;
|
|
4258
4269
|
}
|
|
4259
|
-
function
|
|
4270
|
+
function xr(e) {
|
|
4260
4271
|
if (!e?.dimension) return "Select binding key...";
|
|
4261
4272
|
if (typeof e.dimension == "string") return e.dimension.split(".")[1] || e.dimension;
|
|
4262
4273
|
if (e.dimension.length > 0) {
|
|
@@ -4266,6 +4277,6 @@ function yr(e) {
|
|
|
4266
4277
|
return "Select binding key...";
|
|
4267
4278
|
}
|
|
4268
4279
|
//#endregion
|
|
4269
|
-
export {
|
|
4280
|
+
export { An as A, Dn as C, Mn as D, On as E, Xe as F, wn as M, Rt as N, En as O, at as P, Cn as S, Tn as T, Hn as _, gr as a, Rn as b, fr as c, ir as d, nr as f, In as g, Ln as h, pr as i, $ as j, jn as k, er as l, sr as m, xr as n, vr as o, ar as p, yr as r, mr as s, br as t, tr as u, Bn as v, kn as w, Pn as x, Fn as y };
|
|
4270
4281
|
|
|
4271
|
-
//# sourceMappingURL=analysis-builder-shared-
|
|
4282
|
+
//# sourceMappingURL=analysis-builder-shared-dqcpl_WL.js.map
|