drizzle-cube 0.5.7 → 0.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +4 -4
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +4 -4
- package/dist/adapters/{handler-Dz1F4iwf.js → handler-Cx8QYLk6.js} +18 -4
- package/dist/adapters/{handler-C63rJUUK.cjs → handler-CzbCuS6_.cjs} +4 -4
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +7 -7
- package/dist/adapters/{locale-gU_d1Wja.js → locale-BPB7flIG.js} +1 -1
- package/dist/adapters/{locale-CTNwPVZI.cjs → locale-tIMrNcCr.cjs} +1 -1
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +2 -2
- package/dist/adapters/mcp-transport-C2QzXm6h.cjs +40 -0
- package/dist/adapters/mcp-transport-D0B3S1tB.js +579 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +4 -4
- package/dist/{server/openai-y7GhJNdn.js → adapters/openai-B5jEiqiB.js} +776 -719
- package/dist/{server/openai-DiVskd89.js → adapters/openai-BZdAA7Ji.js} +1 -1
- package/dist/adapters/openai-D0musiYP.cjs +17 -0
- package/dist/adapters/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/adapters/{utils-DosuoabY.js → utils-D9JPLmfl.js} +16 -4
- package/dist/adapters/utils-KV37IBIv.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/client/charts/ChartLoader.d.ts +1 -1
- package/dist/client/charts.js +12 -12
- package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-CjCIAT-J.js} +1258 -1050
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js → RetentionCombinedChart-BPkfcTa8.js} +3 -3
- package/dist/client/chunks/{RetentionCombinedChart-CCpu0C-s.js.map → RetentionCombinedChart-BPkfcTa8.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js → RetentionHeatmap-DGzLzr7h.js} +2 -2
- package/dist/client/chunks/{RetentionHeatmap-B24PiIfr.js.map → RetentionHeatmap-DGzLzr7h.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-zd48FVJO.js → analysis-builder-MuMIzoRq.js} +8 -8
- package/dist/client/chunks/{analysis-builder-zd48FVJO.js.map → analysis-builder-MuMIzoRq.js.map} +1 -1
- package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js → analysis-builder-shared-CYVwSPqt.js} +21 -21
- package/dist/client/chunks/{analysis-builder-shared-x576-O5p.js.map → analysis-builder-shared-CYVwSPqt.js.map} +1 -1
- package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js → chart-activity-grid-DmruKPab.js} +9 -4
- package/dist/client/chunks/{chart-activity-grid-CiHrLH6Y.js.map → chart-activity-grid-DmruKPab.js.map} +1 -1
- package/dist/client/chunks/{chart-area-CXFK-Grv.js → chart-area-DHCPM4Em.js} +2 -2
- package/dist/client/chunks/{chart-area-CXFK-Grv.js.map → chart-area-DHCPM4Em.js.map} +1 -1
- package/dist/client/chunks/{chart-bar-DKXfLoGG.js → chart-bar-KddciGDv.js} +3 -3
- package/dist/client/chunks/{chart-bar-DKXfLoGG.js.map → chart-bar-KddciGDv.js.map} +1 -1
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js → chart-box-plot-DYKfyOI8.js} +2 -2
- package/dist/client/chunks/{chart-box-plot-Bu9hy-17.js.map → chart-box-plot-DYKfyOI8.js.map} +1 -1
- package/dist/client/chunks/{chart-bubble-DGkTQlxM.js → chart-bubble-CfqiB538.js} +2 -2
- package/dist/client/chunks/{chart-bubble-DGkTQlxM.js.map → chart-bubble-CfqiB538.js.map} +1 -1
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js → chart-candlestick-Dwc92Mrj.js} +2 -2
- package/dist/client/chunks/{chart-candlestick-Dau5AF4E.js.map → chart-candlestick-Dwc92Mrj.js.map} +1 -1
- package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js → chart-data-table-BO4sXsim.js} +27 -27
- package/dist/client/chunks/{chart-data-table-Cm5jrpaw.js.map → chart-data-table-BO4sXsim.js.map} +1 -1
- package/dist/client/chunks/{chart-funnel-Eke8IPtG.js → chart-funnel-DnWRsmnS.js} +2 -2
- package/dist/client/chunks/{chart-funnel-Eke8IPtG.js.map → chart-funnel-DnWRsmnS.js.map} +1 -1
- package/dist/client/chunks/{chart-gauge-DeRZNsyl.js → chart-gauge-CgMeqeGb.js} +2 -2
- package/dist/client/chunks/{chart-gauge-DeRZNsyl.js.map → chart-gauge-CgMeqeGb.js.map} +1 -1
- package/dist/client/chunks/{chart-heat-map-C86thSJ4.js → chart-heat-map-DcGm9SWK.js} +2 -2
- package/dist/client/chunks/{chart-heat-map-C86thSJ4.js.map → chart-heat-map-DcGm9SWK.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js → chart-kpi-delta-C2wKPqCb.js} +3 -3
- package/dist/client/chunks/{chart-kpi-delta-CxOYD2f1.js.map → chart-kpi-delta-C2wKPqCb.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js → chart-kpi-number-gWYF44ol.js} +5 -5
- package/dist/client/chunks/{chart-kpi-number-C6gWz-x4.js.map → chart-kpi-number-gWYF44ol.js.map} +1 -1
- package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js → chart-kpi-text-DIYtJtk4.js} +3 -3
- package/dist/client/chunks/{chart-kpi-text-dDONrhS-.js.map → chart-kpi-text-DIYtJtk4.js.map} +1 -1
- package/dist/client/chunks/{chart-line-r4iWevKZ.js → chart-line-9BEGN5Ti.js} +3 -3
- package/dist/client/chunks/{chart-line-r4iWevKZ.js.map → chart-line-9BEGN5Ti.js.map} +1 -1
- package/dist/client/chunks/{chart-markdown-BPW-EAm9.js → chart-markdown-dgUetjyM.js} +1359 -1240
- package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js → chart-measure-profile-ClfpLs4q.js} +3 -3
- package/dist/client/chunks/{chart-measure-profile-BI3kADCp.js.map → chart-measure-profile-ClfpLs4q.js.map} +1 -1
- package/dist/client/chunks/{chart-pie-yqH2YVEI.js → chart-pie-BjAIhyOi.js} +3 -3
- package/dist/client/chunks/{chart-pie-yqH2YVEI.js.map → chart-pie-BjAIhyOi.js.map} +1 -1
- package/dist/client/chunks/{chart-radar-B-_3v-rE.js → chart-radar-Dgkcl2bN.js} +3 -3
- package/dist/client/chunks/{chart-radar-B-_3v-rE.js.map → chart-radar-Dgkcl2bN.js.map} +1 -1
- package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js → chart-radial-bar-DdWJjAhK.js} +3 -3
- package/dist/client/chunks/{chart-radial-bar-C0EgzfAF.js.map → chart-radial-bar-DdWJjAhK.js.map} +1 -1
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js → chart-sankey-M3XpO_ah.js} +2 -2
- package/dist/client/chunks/{chart-sankey-CFzjGvZX.js.map → chart-sankey-M3XpO_ah.js.map} +1 -1
- package/dist/client/chunks/{chart-scatter-DZPirzwX.js → chart-scatter-DaHYP_OL.js} +3 -3
- package/dist/client/chunks/{chart-scatter-DZPirzwX.js.map → chart-scatter-DaHYP_OL.js.map} +1 -1
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js → chart-sunburst-A_u6lqlS.js} +3 -3
- package/dist/client/chunks/{chart-sunburst-91Q2tzaB.js.map → chart-sunburst-A_u6lqlS.js.map} +1 -1
- package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js → chart-tree-map-uiwUU4nb.js} +3 -3
- package/dist/client/chunks/{chart-tree-map-Bi4axCvh.js.map → chart-tree-map-uiwUU4nb.js.map} +1 -1
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js → chart-waterfall-BuhMoagf.js} +3 -3
- package/dist/client/chunks/{chart-waterfall-DcHbbPaG.js.map → chart-waterfall-BuhMoagf.js.map} +1 -1
- package/dist/client/chunks/{charts-core-CrBDYN6N.js → charts-core-jRtb0S2M.js} +2 -2
- package/dist/client/chunks/{charts-core-CrBDYN6N.js.map → charts-core-jRtb0S2M.js.map} +1 -1
- package/dist/client/chunks/{core-DsAWNRRv.js → core-D7vPfUIe.js} +2 -2
- package/dist/client/chunks/{core-DsAWNRRv.js.map → core-D7vPfUIe.js.map} +1 -1
- package/dist/client/chunks/{nl-NL-oyr2wENY.js → nl-NL-CpVs7ox3.js} +7 -2
- package/dist/client/chunks/{nl-NL-oyr2wENY.js.map → nl-NL-CpVs7ox3.js.map} +1 -1
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js → schema-visualization-DE09kQE3.js} +3 -3
- package/dist/client/chunks/{schema-visualization-BszcrmZX.js.map → schema-visualization-DE09kQE3.js.map} +1 -1
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js → useDirtyStateTracking-CoeQbprt.js} +4 -4
- package/dist/client/chunks/{useDirtyStateTracking-B5wCDJSj.js.map → useDirtyStateTracking-CoeQbprt.js.map} +1 -1
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js → useExplainAI-DlnXWdmz.js} +4 -4
- package/dist/client/chunks/{useExplainAI-CCeCYzDm.js.map → useExplainAI-DlnXWdmz.js.map} +1 -1
- package/dist/client/chunks/{utils-kqa-JIMg.js → utils-CTKNaXS8.js} +3 -3
- package/dist/client/chunks/{utils-kqa-JIMg.js.map → utils-CTKNaXS8.js.map} +1 -1
- package/dist/client/chunks/{vendor-0hJNlZXQ.js → vendor-CPIYyeuD.js} +2 -2
- package/dist/client/chunks/{vendor-0hJNlZXQ.js.map → vendor-CPIYyeuD.js.map} +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -1
- package/dist/client/components/AnalysisBuilder/LimitSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +1 -1
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPage.d.ts +1 -1
- package/dist/client/components/ChartErrorBoundary.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +1 -1
- package/dist/client/components/ColorPaletteSelector.d.ts +1 -1
- package/dist/client/components/DashboardEditModal.d.ts +2 -1
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +1 -1
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +1 -1
- package/dist/client/components/DashboardGrid.d.ts +1 -1
- package/dist/client/components/DashboardThumbnailPlaceholder.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserSidebar.d.ts +1 -1
- package/dist/client/components/DataBrowser/DataBrowserToolbar.d.ts +1 -1
- package/dist/client/components/DataBrowser/index.d.ts +1 -1
- package/dist/client/components/DataHistogram.d.ts +1 -1
- package/dist/client/components/DebugModal.d.ts +1 -1
- package/dist/client/components/DrillBreadcrumb.d.ts +2 -1
- package/dist/client/components/LoadingIndicator.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +1 -1
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +6 -4
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/ScaledGridWrapper.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/index.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +1 -1
- package/dist/client/components/charts/AxisFormatControls.d.ts +2 -2
- package/dist/client/components/charts/ChartContainer.d.ts +1 -1
- package/dist/client/components/charts/ChartLegend.d.ts +1 -1
- package/dist/client/components/charts/ChartTooltip.d.ts +1 -1
- package/dist/client/components/charts/MissingDependencyFallback.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardContext.d.ts +2 -2
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardFilterBar.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardGridSurface.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardModals.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardToolbar.d.ts +1 -1
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- package/dist/client/components.js +2 -2
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.d.ts +1 -1
- package/dist/client/icons.js +1 -1
- package/dist/client/index.js +15 -15
- package/dist/client/providers/CubeApiProvider.d.ts +1 -1
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaProvider.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.js +1 -1
- package/dist/client/schema.js +1 -1
- package/dist/client/stores/analysisBuilderStore.d.ts +1 -1
- package/dist/client/stores/dashboardStore.d.ts +1 -1
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client/types/drill.d.ts +1 -1
- package/dist/client/types.d.ts +7 -2
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +33 -5
- package/dist/client/utils/joinReachability.d.ts +27 -0
- package/dist/client/utils.js +5 -5
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +4 -4
- package/dist/server/index.cjs +6 -6
- package/dist/server/index.d.ts +2 -5050
- package/dist/server/index.js +33 -7
- package/dist/{adapters/openai-y7GhJNdn.js → server/openai-B5jEiqiB.js} +776 -719
- package/dist/{adapters/openai-DiVskd89.js → server/openai-BZdAA7Ji.js} +1 -1
- package/dist/server/openai-D0musiYP.cjs +17 -0
- package/dist/server/{openai-6wrBvAnv.cjs → openai-D_U4V0kT.cjs} +1 -1
- package/dist/server/server/adapters/base-adapter.d.ts +287 -0
- package/dist/server/server/adapters/databend-adapter.d.ts +114 -0
- package/dist/server/server/adapters/duckdb-adapter.d.ts +122 -0
- package/dist/server/server/adapters/mysql-adapter.d.ts +122 -0
- package/dist/server/server/adapters/postgres-adapter.d.ts +119 -0
- package/dist/server/server/adapters/singlestore-adapter.d.ts +4 -0
- package/dist/server/server/adapters/snowflake-adapter.d.ts +116 -0
- package/dist/server/server/adapters/sqlite-adapter.d.ts +140 -0
- package/dist/server/server/agent/chart-validation.d.ts +27 -0
- package/dist/server/server/agent/handler.d.ts +25 -0
- package/dist/server/server/agent/index.d.ts +11 -0
- package/dist/server/server/agent/providers/anthropic.d.ts +24 -0
- package/dist/server/server/agent/providers/factory.d.ts +12 -0
- package/dist/server/server/agent/providers/google.d.ts +23 -0
- package/dist/server/server/agent/providers/index.d.ts +6 -0
- package/dist/server/server/agent/providers/openai.d.ts +26 -0
- package/dist/server/server/agent/providers/types.d.ts +95 -0
- package/dist/server/server/agent/system-prompt.d.ts +5 -0
- package/dist/server/server/agent/tools.d.ts +28 -0
- package/dist/server/server/agent/types.d.ts +192 -0
- package/dist/server/server/ai/discovery.d.ts +62 -0
- package/dist/server/server/ai/index.d.ts +10 -0
- package/dist/server/server/ai/mcp-prompts.d.ts +83 -0
- package/dist/server/server/ai/query-schema.d.ts +258 -0
- package/dist/server/server/ai/schemas.d.ts +63 -0
- package/dist/server/server/ai/suggestion.d.ts +19 -0
- package/dist/server/server/ai/validation.d.ts +34 -0
- package/dist/server/server/builders/comparison-query-builder.d.ts +70 -0
- package/dist/server/server/builders/cte-builder.d.ts +62 -0
- package/dist/server/server/builders/date-time-builder.d.ts +29 -0
- package/dist/server/server/builders/filter-builder.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +109 -0
- package/dist/server/server/builders/funnel-query-builder.d.ts +134 -0
- package/dist/server/server/builders/group-by-builder.d.ts +27 -0
- package/dist/server/server/builders/index.d.ts +13 -0
- package/dist/server/server/builders/measure-builder.d.ts +142 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +100 -0
- package/dist/server/server/cache-providers/index.d.ts +5 -0
- package/dist/server/server/cache-providers/memory.d.ts +105 -0
- package/dist/server/server/cache-utils.d.ts +65 -0
- package/dist/server/server/compiler.d.ts +218 -0
- package/dist/server/server/cube-utils.d.ts +133 -0
- package/dist/server/server/database-utils.d.ts +18 -0
- package/dist/server/server/executor.d.ts +183 -0
- package/dist/server/server/executors/base-executor.d.ts +16 -0
- package/dist/server/server/executors/databend-executor.d.ts +33 -0
- package/dist/server/server/executors/duckdb-executor.d.ts +33 -0
- package/dist/server/server/executors/index.d.ts +21 -0
- package/dist/server/server/executors/mysql-executor.d.ts +27 -0
- package/dist/server/server/executors/postgres-executor.d.ts +27 -0
- package/dist/server/server/executors/singlestore-executor.d.ts +9 -0
- package/dist/server/server/executors/snowflake-executor.d.ts +33 -0
- package/dist/server/server/executors/sqlite-executor.d.ts +28 -0
- package/dist/server/server/explain/databend-parser.d.ts +16 -0
- package/dist/server/server/explain/duckdb-parser.d.ts +28 -0
- package/dist/server/server/explain/index.d.ts +9 -0
- package/dist/server/server/explain/mysql-parser.d.ts +38 -0
- package/dist/server/server/explain/postgres-parser.d.ts +18 -0
- package/dist/server/server/explain/snowflake-parser.d.ts +17 -0
- package/dist/server/server/explain/sqlite-parser.d.ts +23 -0
- package/dist/server/server/filter-cache.d.ts +73 -0
- package/dist/server/server/gap-filler.d.ts +42 -0
- package/dist/server/server/index.d.ts +36 -0
- package/dist/server/server/logical-plan/index.d.ts +14 -0
- package/dist/server/server/logical-plan/logical-plan-builder.d.ts +58 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +232 -0
- package/dist/server/server/logical-plan/optimiser.d.ts +32 -0
- package/dist/server/server/logical-plan/types.d.ts +191 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +107 -0
- package/dist/server/server/physical-plan/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/cte-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/joins-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/predicates-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/selection-processor.d.ts +6 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +33 -0
- package/dist/server/server/physical-plan/processors/window-processor.d.ts +6 -0
- package/dist/server/server/prompts/explain-analysis-prompt.d.ts +47 -0
- package/dist/server/server/prompts/index.d.ts +27 -0
- package/dist/server/server/prompts/single-step-prompt.d.ts +31 -0
- package/dist/server/server/prompts/step0-validation-prompt.d.ts +39 -0
- package/dist/server/server/prompts/step1-shape-prompt.d.ts +29 -0
- package/dist/server/server/prompts/step2-complete-prompt.d.ts +19 -0
- package/dist/server/server/prompts/types.d.ts +37 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +93 -0
- package/dist/server/server/resolvers/index.d.ts +6 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +152 -0
- package/dist/server/server/template-substitution.d.ts +57 -0
- package/dist/server/server/types/analysis.d.ts +189 -0
- package/dist/server/server/types/cache.d.ts +132 -0
- package/dist/server/server/types/core.d.ts +164 -0
- package/dist/server/server/types/cube.d.ts +530 -0
- package/dist/server/server/types/executor.d.ts +156 -0
- package/dist/server/server/types/flow.d.ts +143 -0
- package/dist/server/server/types/funnel.d.ts +118 -0
- package/dist/server/server/types/index.d.ts +11 -0
- package/dist/server/server/types/metadata.d.ts +113 -0
- package/dist/server/server/types/query.d.ts +153 -0
- package/dist/server/server/types/retention.d.ts +141 -0
- package/dist/server/server/types/utils.d.ts +11 -0
- package/package.json +5 -5
- package/dist/adapters/mcp-transport-C4J4SAcn.cjs +0 -40
- package/dist/adapters/mcp-transport-CVUiifEc.js +0 -579
- package/dist/adapters/openai-BDwb2u7y.cjs +0 -17
- package/dist/adapters/utils-CkEkU8Bo.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-6KRE36mm.js.map +0 -1
- package/dist/client/chunks/chart-markdown-BPW-EAm9.js.map +0 -1
- package/dist/server/openai-BDwb2u7y.cjs +0 -17
- /package/dist/adapters/{express → adapters/express}/index.d.ts +0 -0
- /package/dist/adapters/{fastify → adapters/fastify}/index.d.ts +0 -0
- /package/dist/adapters/{hono → adapters/hono}/index.d.ts +0 -0
- /package/dist/adapters/{locale.d.ts → adapters/locale.d.ts} +0 -0
- /package/dist/adapters/{mcp-tools.d.ts → adapters/mcp-tools.d.ts} +0 -0
- /package/dist/adapters/{mcp-transport.d.ts → adapters/mcp-transport.d.ts} +0 -0
- /package/dist/adapters/{nextjs → adapters/nextjs}/index.d.ts +0 -0
- /package/dist/adapters/{types.d.ts → adapters/types.d.ts} +0 -0
- /package/dist/adapters/{utils.d.ts → adapters/utils.d.ts} +0 -0
package/dist/client/chunks/{DashboardEditModal-6KRE36mm.js → DashboardEditModal-CjCIAT-J.js}
RENAMED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-
|
|
2
|
-
import { B as o, D as s, E as c, H as l, R as u, S as d, U as f, W as p, _ as m, j as h, ot as g, v as _, z as v } from "./chart-data-table-
|
|
3
|
-
import { A as y, D as b, E as x, O as S, S as C, T as w, a as T, d as E, i as D, k as O, l as ee, n as te, r as k, s as A, t as j, u as ne, w as re, x as ie } from "./useDirtyStateTracking-
|
|
4
|
-
import { r as ae } from "./chart-sankey-
|
|
1
|
+
import { a as e, n as t, o as n, r, s as i, u as a } from "./vendor-CPIYyeuD.js";
|
|
2
|
+
import { B as o, D as s, E as c, H as l, R as u, S as d, U as f, W as p, _ as m, j as h, ot as g, v as _, z as v } from "./chart-data-table-BO4sXsim.js";
|
|
3
|
+
import { A as y, D as b, E as x, O as S, S as C, T as w, a as T, d as E, i as D, k as O, l as ee, n as te, r as k, s as A, t as j, u as ne, w as re, x as ie } from "./useDirtyStateTracking-CoeQbprt.js";
|
|
4
|
+
import { r as ae } from "./chart-sankey-M3XpO_ah.js";
|
|
5
5
|
import { n as oe, t as M } from "./providers-DwQCKdGW.js";
|
|
6
|
-
import { M as N, P as se, k as P } from "./chart-activity-grid-
|
|
7
|
-
import { u as ce } from "./chart-area-
|
|
8
|
-
import { a as
|
|
9
|
-
import { m as L, u as R } from "./utils-
|
|
10
|
-
import { n as z, t as ue } from "./charts-core-
|
|
11
|
-
import { t as B } from "./chart-markdown-
|
|
12
|
-
import V, { Component as de, Suspense as H, createContext as
|
|
6
|
+
import { M as N, P as se, k as P } from "./chart-activity-grid-DmruKPab.js";
|
|
7
|
+
import { u as ce } from "./chart-area-DHCPM4Em.js";
|
|
8
|
+
import { a as F, l as le, s as I } from "./retention-ChW9jYdy.js";
|
|
9
|
+
import { m as L, u as R } from "./utils-CTKNaXS8.js";
|
|
10
|
+
import { n as z, t as ue } from "./charts-core-jRtb0S2M.js";
|
|
11
|
+
import { t as B } from "./chart-markdown-dgUetjyM.js";
|
|
12
|
+
import V, { Component as de, Suspense as H, createContext as fe, forwardRef as U, lazy as W, memo as pe, startTransition as me, useCallback as G, useContext as he, useEffect as K, useImperativeHandle as ge, useMemo as q, useRef as J, useState as Y } from "react";
|
|
13
13
|
import { Fragment as X, jsx as Z, jsxs as Q } from "react/jsx-runtime";
|
|
14
14
|
import { createPortal as _e } from "react-dom";
|
|
15
15
|
import ve, { verticalCompactor as ye } from "react-grid-layout";
|
|
@@ -760,140 +760,12 @@ function Ye(e, t) {
|
|
|
760
760
|
}
|
|
761
761
|
}
|
|
762
762
|
//#endregion
|
|
763
|
-
//#region src/client/hooks/useDrillInteraction.ts
|
|
764
|
-
function Xe(e) {
|
|
765
|
-
let { query: t, metadata: n, onQueryChange: r, chartConfig: i, dashboardFilters: a, dashboardFilterMapping: o, enabled: s = !0 } = e, [c, l] = Y(!1), [u, d] = Y(null), [f, p] = Y([]), [m, h] = Y(null), [g, _] = Y([]), [v, y] = Y(null), [b, x] = Y(null), [S, C] = Y(null), [w, T] = Y(null), E = q(() => {
|
|
766
|
-
if (!s || !n) return !1;
|
|
767
|
-
let e = (t.timeDimensions?.length ?? 0) > 0, r = (t.dimensions?.length ?? 0) > 0, i = t.measures?.some((e) => Re(e, n) !== null) ?? !1;
|
|
768
|
-
return e || r || i;
|
|
769
|
-
}, [
|
|
770
|
-
s,
|
|
771
|
-
n,
|
|
772
|
-
t
|
|
773
|
-
]), D = q(() => !a || !o ? !1 : a.some((e) => e.isUniversalTime && o.includes(e.id)), [a, o]);
|
|
774
|
-
return {
|
|
775
|
-
handleDataPointClick: G((e) => {
|
|
776
|
-
if (!s || !n) return;
|
|
777
|
-
let r = Be(e, t, n, a, o);
|
|
778
|
-
r.length !== 0 && (h(e), p(r), d(e.position), l(!0));
|
|
779
|
-
}, [
|
|
780
|
-
s,
|
|
781
|
-
n,
|
|
782
|
-
t,
|
|
783
|
-
a,
|
|
784
|
-
o
|
|
785
|
-
]),
|
|
786
|
-
menuOpen: c,
|
|
787
|
-
menuPosition: u,
|
|
788
|
-
menuOptions: f,
|
|
789
|
-
handleOptionSelect: G((e) => {
|
|
790
|
-
if (!(!m || !n)) {
|
|
791
|
-
try {
|
|
792
|
-
if (e.targetGranularity && g.length > 0) {
|
|
793
|
-
let n = g.findIndex((t) => t.granularity === e.targetGranularity);
|
|
794
|
-
if (n !== -1) {
|
|
795
|
-
let e = n + 1;
|
|
796
|
-
if (e < g.length) {
|
|
797
|
-
let t = g.slice(0, e), n = t[t.length - 1];
|
|
798
|
-
_(t), r(n.query), C(n.chartConfig || null);
|
|
799
|
-
}
|
|
800
|
-
l(!1), h(null);
|
|
801
|
-
return;
|
|
802
|
-
}
|
|
803
|
-
if (v && e.targetGranularity === v) {
|
|
804
|
-
let e = w || t;
|
|
805
|
-
_([]), C(b), x(null), y(null), T(null), r(e), l(!1), h(null);
|
|
806
|
-
return;
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
if (e.targetDimension && g.length > 0) {
|
|
810
|
-
let t = g.findIndex((t) => t.dimension === e.targetDimension);
|
|
811
|
-
if (t !== -1) {
|
|
812
|
-
let e = t + 1;
|
|
813
|
-
if (e < g.length) {
|
|
814
|
-
let t = g.slice(0, e), n = t[t.length - 1];
|
|
815
|
-
_(t), r(n.query), C(n.chartConfig || null);
|
|
816
|
-
}
|
|
817
|
-
l(!1), h(null);
|
|
818
|
-
return;
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
let a = Ge(e, m, t, n);
|
|
822
|
-
if (g.length === 0 && (T(t), i && x(i), e.targetGranularity && t.timeDimensions?.[0])) {
|
|
823
|
-
let e = t.timeDimensions[0].granularity;
|
|
824
|
-
e && y(e);
|
|
825
|
-
}
|
|
826
|
-
_((e) => [...e, a.pathEntry]), r(a.query), a.chartConfig && C(a.chartConfig);
|
|
827
|
-
} catch (e) {
|
|
828
|
-
console.error("Error building drill query:", e);
|
|
829
|
-
}
|
|
830
|
-
l(!1), h(null);
|
|
831
|
-
}
|
|
832
|
-
}, [
|
|
833
|
-
m,
|
|
834
|
-
n,
|
|
835
|
-
t,
|
|
836
|
-
g,
|
|
837
|
-
v,
|
|
838
|
-
w,
|
|
839
|
-
r,
|
|
840
|
-
i,
|
|
841
|
-
b
|
|
842
|
-
]),
|
|
843
|
-
closeMenu: G(() => {
|
|
844
|
-
l(!1), d(null), p([]), h(null);
|
|
845
|
-
}, []),
|
|
846
|
-
drillPath: g,
|
|
847
|
-
navigateBack: G(() => {
|
|
848
|
-
if (g.length !== 0) if (g.length === 1) {
|
|
849
|
-
let e = w || t;
|
|
850
|
-
_([]), C(b), x(null), y(null), T(null), r(e);
|
|
851
|
-
} else {
|
|
852
|
-
let e = g.slice(0, -1), t = e[e.length - 1];
|
|
853
|
-
_(e), r(t.query), C(t.chartConfig || null);
|
|
854
|
-
}
|
|
855
|
-
}, [
|
|
856
|
-
g,
|
|
857
|
-
r,
|
|
858
|
-
b,
|
|
859
|
-
w,
|
|
860
|
-
t
|
|
861
|
-
]),
|
|
862
|
-
navigateToLevel: G((e) => {
|
|
863
|
-
if (e <= 0) {
|
|
864
|
-
let e = w || t;
|
|
865
|
-
_([]), C(b), x(null), y(null), T(null), r(e);
|
|
866
|
-
} else if (e < g.length) {
|
|
867
|
-
let t = g.slice(0, e), n = t[t.length - 1];
|
|
868
|
-
_(t), r(n.query), C(n.chartConfig || null);
|
|
869
|
-
}
|
|
870
|
-
}, [
|
|
871
|
-
g,
|
|
872
|
-
r,
|
|
873
|
-
b,
|
|
874
|
-
w,
|
|
875
|
-
t
|
|
876
|
-
]),
|
|
877
|
-
drillEnabled: E,
|
|
878
|
-
hasDashboardFilterMatch: D,
|
|
879
|
-
currentChartConfig: S
|
|
880
|
-
};
|
|
881
|
-
}
|
|
882
|
-
//#endregion
|
|
883
|
-
//#region src/client/types.ts
|
|
884
|
-
function Ze(e) {
|
|
885
|
-
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && e.queries.length > 0;
|
|
886
|
-
}
|
|
887
|
-
function Qe(e) {
|
|
888
|
-
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
889
|
-
}
|
|
890
|
-
//#endregion
|
|
891
763
|
//#region src/client/types/analysisConfig.ts
|
|
892
|
-
var
|
|
764
|
+
var Xe = (e) => e.analysisType === "query", Ze = (e) => e.analysisType === "funnel", Qe = (e) => e.analysisType === "flow", $e = (e) => e.analysisType === "retention", et = (e) => "queries" in e.query && Array.isArray(e.query.queries), tt = (e) => !et(e), nt = (e) => {
|
|
893
765
|
if (!e || typeof e != "object") return !1;
|
|
894
766
|
let t = e;
|
|
895
767
|
return !(t.version !== 1 || t.analysisType !== "query" && t.analysisType !== "funnel" && t.analysisType !== "flow" && t.analysisType !== "retention" || !t.query || typeof t.query != "object" || t.activeView !== "table" && t.activeView !== "chart");
|
|
896
|
-
},
|
|
768
|
+
}, rt = () => ({
|
|
897
769
|
version: 1,
|
|
898
770
|
analysisType: "query",
|
|
899
771
|
activeView: "chart",
|
|
@@ -906,7 +778,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
|
|
|
906
778
|
measures: [],
|
|
907
779
|
dimensions: []
|
|
908
780
|
}
|
|
909
|
-
}),
|
|
781
|
+
}), it = () => ({
|
|
910
782
|
version: 1,
|
|
911
783
|
analysisType: "funnel",
|
|
912
784
|
activeView: "chart",
|
|
@@ -920,7 +792,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
|
|
|
920
792
|
timeDimension: "",
|
|
921
793
|
steps: []
|
|
922
794
|
} }
|
|
923
|
-
}),
|
|
795
|
+
}), at = () => ({
|
|
924
796
|
version: 1,
|
|
925
797
|
analysisType: "flow",
|
|
926
798
|
activeView: "chart",
|
|
@@ -941,7 +813,7 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
|
|
|
941
813
|
stepsAfter: 3,
|
|
942
814
|
joinStrategy: "auto"
|
|
943
815
|
} }
|
|
944
|
-
}),
|
|
816
|
+
}), ot = () => ({
|
|
945
817
|
version: 1,
|
|
946
818
|
analysisType: "retention",
|
|
947
819
|
activeView: "chart",
|
|
@@ -961,42 +833,42 @@ var $e = (e) => e.analysisType === "query", et = (e) => e.analysisType === "funn
|
|
|
961
833
|
periods: 12,
|
|
962
834
|
retentionType: "classic"
|
|
963
835
|
} }
|
|
964
|
-
}),
|
|
836
|
+
}), st = (e = "query") => {
|
|
965
837
|
switch (e) {
|
|
966
|
-
case "funnel": return
|
|
967
|
-
case "flow": return
|
|
968
|
-
case "retention": return
|
|
969
|
-
default: return
|
|
838
|
+
case "funnel": return it();
|
|
839
|
+
case "flow": return at();
|
|
840
|
+
case "retention": return ot();
|
|
841
|
+
default: return rt();
|
|
970
842
|
}
|
|
971
|
-
},
|
|
843
|
+
}, ct = (e) => {
|
|
972
844
|
if (!e || typeof e != "object") return !1;
|
|
973
845
|
let t = e;
|
|
974
846
|
return !(t.version !== 1 || t.activeType !== "query" && t.activeType !== "funnel" && t.activeType !== "flow" && t.activeType !== "retention" || !t.modes || typeof t.modes != "object");
|
|
975
|
-
},
|
|
847
|
+
}, lt = () => ({
|
|
976
848
|
version: 1,
|
|
977
849
|
activeType: "query",
|
|
978
850
|
modes: {
|
|
979
|
-
query:
|
|
980
|
-
funnel:
|
|
981
|
-
flow:
|
|
982
|
-
retention:
|
|
851
|
+
query: rt(),
|
|
852
|
+
funnel: it(),
|
|
853
|
+
flow: at(),
|
|
854
|
+
retention: ot()
|
|
983
855
|
}
|
|
984
856
|
});
|
|
985
857
|
//#endregion
|
|
986
858
|
//#region src/client/utils/configMigration.ts
|
|
987
|
-
function
|
|
859
|
+
function ut(e) {
|
|
988
860
|
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
|
|
989
861
|
}
|
|
990
|
-
function
|
|
862
|
+
function dt(e) {
|
|
991
863
|
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && "mergeStrategy" in e && e.mergeStrategy === "funnel";
|
|
992
864
|
}
|
|
993
|
-
function
|
|
865
|
+
function ft(e) {
|
|
994
866
|
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
995
867
|
}
|
|
996
|
-
function
|
|
868
|
+
function pt(e) {
|
|
997
869
|
return typeof e == "object" && !!e && "flow" in e && typeof e.flow == "object";
|
|
998
870
|
}
|
|
999
|
-
function
|
|
871
|
+
function mt(e, t) {
|
|
1000
872
|
return t === "funnel" ? {
|
|
1001
873
|
chartType: e.funnelChartType || e.chartType || "funnel",
|
|
1002
874
|
chartConfig: e.funnelChartConfig || e.chartConfig || {},
|
|
@@ -1015,44 +887,44 @@ function _t(e, t) {
|
|
|
1015
887
|
displayConfig: e.displayConfig || {}
|
|
1016
888
|
};
|
|
1017
889
|
}
|
|
1018
|
-
function
|
|
890
|
+
function ht(e) {
|
|
1019
891
|
try {
|
|
1020
892
|
let t = JSON.parse(e.query);
|
|
1021
|
-
if (
|
|
893
|
+
if (le(t)) return {
|
|
1022
894
|
version: 1,
|
|
1023
895
|
analysisType: "retention",
|
|
1024
896
|
activeView: "chart",
|
|
1025
|
-
charts: { retention:
|
|
897
|
+
charts: { retention: mt(e, "retention") },
|
|
1026
898
|
query: t
|
|
1027
899
|
};
|
|
1028
|
-
if (
|
|
900
|
+
if (pt(t)) return {
|
|
1029
901
|
version: 1,
|
|
1030
902
|
analysisType: "flow",
|
|
1031
903
|
activeView: "chart",
|
|
1032
|
-
charts: { flow:
|
|
904
|
+
charts: { flow: mt(e, "flow") },
|
|
1033
905
|
query: t
|
|
1034
906
|
};
|
|
1035
|
-
if (
|
|
907
|
+
if (ft(t)) return {
|
|
1036
908
|
version: 1,
|
|
1037
909
|
analysisType: "funnel",
|
|
1038
910
|
activeView: "chart",
|
|
1039
|
-
charts: { funnel:
|
|
911
|
+
charts: { funnel: mt(e, "funnel") },
|
|
1040
912
|
query: t
|
|
1041
913
|
};
|
|
1042
|
-
if (
|
|
914
|
+
if (dt(t)) return gt(t, e);
|
|
1043
915
|
if (e.analysisType === "funnel") return {
|
|
1044
916
|
version: 1,
|
|
1045
917
|
analysisType: "funnel",
|
|
1046
918
|
activeView: "chart",
|
|
1047
|
-
charts: { funnel:
|
|
1048
|
-
query:
|
|
919
|
+
charts: { funnel: mt(e, "funnel") },
|
|
920
|
+
query: ft(t) ? t : { funnel: {
|
|
1049
921
|
bindingKey: "",
|
|
1050
922
|
timeDimension: "",
|
|
1051
923
|
steps: []
|
|
1052
924
|
} }
|
|
1053
925
|
};
|
|
1054
|
-
let n =
|
|
1055
|
-
return
|
|
926
|
+
let n = mt(e, "query");
|
|
927
|
+
return ut(t) ? {
|
|
1056
928
|
version: 1,
|
|
1057
929
|
analysisType: "query",
|
|
1058
930
|
activeView: "chart",
|
|
@@ -1071,10 +943,10 @@ function vt(e) {
|
|
|
1071
943
|
query: t
|
|
1072
944
|
};
|
|
1073
945
|
} catch (e) {
|
|
1074
|
-
return console.warn("[configMigration] Failed to parse legacy portlet:", e),
|
|
946
|
+
return console.warn("[configMigration] Failed to parse legacy portlet:", e), rt();
|
|
1075
947
|
}
|
|
1076
948
|
}
|
|
1077
|
-
function
|
|
949
|
+
function gt(e, t) {
|
|
1078
950
|
let n = "";
|
|
1079
951
|
e.funnelBindingKey?.dimension && (typeof e.funnelBindingKey.dimension == "string" ? n = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (n = e.funnelBindingKey.dimension.map((e) => ({
|
|
1080
952
|
cube: e.cube,
|
|
@@ -1090,7 +962,7 @@ function yt(e, t) {
|
|
|
1090
962
|
version: 1,
|
|
1091
963
|
analysisType: "funnel",
|
|
1092
964
|
activeView: "chart",
|
|
1093
|
-
charts: { funnel: t ?
|
|
965
|
+
charts: { funnel: t ? mt(t, "funnel") : {
|
|
1094
966
|
chartType: "funnel",
|
|
1095
967
|
chartConfig: {},
|
|
1096
968
|
displayConfig: {}
|
|
@@ -1103,20 +975,20 @@ function yt(e, t) {
|
|
|
1103
975
|
} }
|
|
1104
976
|
};
|
|
1105
977
|
}
|
|
1106
|
-
function
|
|
1107
|
-
if (
|
|
1108
|
-
if (e && typeof e == "object" && "query" in e && typeof e.query == "string") return
|
|
978
|
+
function _t(e) {
|
|
979
|
+
if (nt(e)) return e;
|
|
980
|
+
if (e && typeof e == "object" && "query" in e && typeof e.query == "string") return ht(e);
|
|
1109
981
|
if (e && typeof e == "object") try {
|
|
1110
|
-
return
|
|
982
|
+
return ht({ query: JSON.stringify(e) });
|
|
1111
983
|
} catch {}
|
|
1112
|
-
return console.warn("[configMigration] Unknown config format, using defaults"),
|
|
984
|
+
return console.warn("[configMigration] Unknown config format, using defaults"), rt();
|
|
1113
985
|
}
|
|
1114
|
-
function
|
|
1115
|
-
return typeof e == "object" && !!e && "analysisConfig" in e &&
|
|
986
|
+
function vt(e) {
|
|
987
|
+
return typeof e == "object" && !!e && "analysisConfig" in e && nt(e.analysisConfig);
|
|
1116
988
|
}
|
|
1117
|
-
function
|
|
1118
|
-
if (
|
|
1119
|
-
let t =
|
|
989
|
+
function yt(e) {
|
|
990
|
+
if (vt(e)) return e;
|
|
991
|
+
let t = ht({
|
|
1120
992
|
query: e.query ?? "{}",
|
|
1121
993
|
chartType: e.chartType,
|
|
1122
994
|
chartConfig: e.chartConfig,
|
|
@@ -1133,7 +1005,27 @@ function St(e) {
|
|
|
1133
1005
|
}
|
|
1134
1006
|
//#endregion
|
|
1135
1007
|
//#region src/client/utils/filterUtils.ts
|
|
1136
|
-
function
|
|
1008
|
+
function bt(e) {
|
|
1009
|
+
return e ? e.map((e) => typeof e == "string" ? { filterId: e } : e) : [];
|
|
1010
|
+
}
|
|
1011
|
+
function xt(e) {
|
|
1012
|
+
return e.map((e) => e.member ? e : e.filterId);
|
|
1013
|
+
}
|
|
1014
|
+
function St(e, t) {
|
|
1015
|
+
return e ? e.some((e) => typeof e == "string" ? e === t : e.filterId === t) : !1;
|
|
1016
|
+
}
|
|
1017
|
+
function Ct(e, t) {
|
|
1018
|
+
if (!e) return;
|
|
1019
|
+
let n = e.find((e) => typeof e == "string" ? e === t : e.filterId === t);
|
|
1020
|
+
return typeof n == "object" ? n.member : void 0;
|
|
1021
|
+
}
|
|
1022
|
+
function wt(e, t) {
|
|
1023
|
+
return t && "member" in e && "operator" in e ? {
|
|
1024
|
+
...e,
|
|
1025
|
+
member: t
|
|
1026
|
+
} : e;
|
|
1027
|
+
}
|
|
1028
|
+
function Tt(e) {
|
|
1137
1029
|
if ("member" in e && "operator" in e) {
|
|
1138
1030
|
let t = e;
|
|
1139
1031
|
return [
|
|
@@ -1143,32 +1035,32 @@ function Ct(e) {
|
|
|
1143
1035
|
"isNotEmpty"
|
|
1144
1036
|
].includes(t.operator) || t.operator === "inDateRange" && t.dateRange ? !0 : !!(t.values && t.values.length > 0);
|
|
1145
1037
|
}
|
|
1146
|
-
return "type" in e && "filters" in e ? e.filters.filter((e) =>
|
|
1038
|
+
return "type" in e && "filters" in e ? e.filters.filter((e) => Tt(e)).length > 0 : !1;
|
|
1147
1039
|
}
|
|
1148
|
-
function
|
|
1149
|
-
return !e || !e.length || !t || !t.length ? [] : e.filter((e) => t
|
|
1040
|
+
function Et(e, t) {
|
|
1041
|
+
return !e || !e.length || !t || !t.length ? [] : e.filter((e) => St(t, e.id)).filter((e) => Tt(e.filter)).map((e) => wt(e.filter, Ct(t, e.id)));
|
|
1150
1042
|
}
|
|
1151
|
-
function
|
|
1043
|
+
function Dt(e) {
|
|
1152
1044
|
if ("type" in e && "filters" in e) {
|
|
1153
|
-
let t = e, n = t.filters.map(
|
|
1045
|
+
let t = e, n = t.filters.map(Dt);
|
|
1154
1046
|
return t.type === "and" ? { and: n } : { or: n };
|
|
1155
1047
|
}
|
|
1156
1048
|
return e;
|
|
1157
1049
|
}
|
|
1158
|
-
function
|
|
1159
|
-
return !e || e.length === 0 ? t : !t || t.length === 0 ? [...e] : n === "server" ? [{ and: [...e, ...t].map(
|
|
1050
|
+
function Ot(e, t, n = "server") {
|
|
1051
|
+
return !e || e.length === 0 ? t : !t || t.length === 0 ? [...e] : n === "server" ? [{ and: [...e, ...t].map(Dt) }] : [{
|
|
1160
1052
|
type: "and",
|
|
1161
1053
|
filters: [...e, ...t]
|
|
1162
1054
|
}];
|
|
1163
1055
|
}
|
|
1164
|
-
function
|
|
1056
|
+
function kt(e) {
|
|
1165
1057
|
let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
1166
1058
|
return e.portlets.forEach((e) => {
|
|
1167
1059
|
try {
|
|
1168
|
-
let i =
|
|
1060
|
+
let i = yt(e).analysisConfig.query, a = (e) => {
|
|
1169
1061
|
e.measures && Array.isArray(e.measures) && e.measures.forEach((e) => t.add(e)), e.dimensions && Array.isArray(e.dimensions) && e.dimensions.forEach((e) => n.add(e)), e.timeDimensions && Array.isArray(e.timeDimensions) && e.timeDimensions.forEach((e) => {
|
|
1170
1062
|
e.dimension && r.add(e.dimension);
|
|
1171
|
-
}), e.filters &&
|
|
1063
|
+
}), e.filters && At(e.filters).forEach((e) => {
|
|
1172
1064
|
n.add(e);
|
|
1173
1065
|
});
|
|
1174
1066
|
};
|
|
@@ -1185,33 +1077,161 @@ function Dt(e) {
|
|
|
1185
1077
|
timeDimensions: r
|
|
1186
1078
|
};
|
|
1187
1079
|
}
|
|
1188
|
-
function
|
|
1080
|
+
function At(e) {
|
|
1189
1081
|
let t = [];
|
|
1190
1082
|
return e.forEach((e) => {
|
|
1191
|
-
"member" in e ? t.push(e.member) : "type" in e && "filters" in e && t.push(...
|
|
1083
|
+
"member" in e ? t.push(e.member) : "type" in e && "filters" in e && t.push(...At(e.filters));
|
|
1192
1084
|
}), [...new Set(t)];
|
|
1193
1085
|
}
|
|
1194
|
-
function
|
|
1086
|
+
function jt(e) {
|
|
1195
1087
|
if (e.dateRange) return e.dateRange;
|
|
1196
1088
|
if (e.values && e.values.length > 0) return e.values.length === 1 ? e.values[0] : e.values;
|
|
1197
1089
|
}
|
|
1198
|
-
function
|
|
1090
|
+
function Mt(e, t, n) {
|
|
1199
1091
|
if (!n || n.length === 0 || !t || t.length === 0) return n;
|
|
1200
|
-
let r = e?.filter((e) => e.isUniversalTime && t
|
|
1092
|
+
let r = e?.filter((e) => e.isUniversalTime && St(t, e.id))?.filter((e) => {
|
|
1201
1093
|
if (!("member" in e.filter)) return !1;
|
|
1202
1094
|
let t = e.filter;
|
|
1203
|
-
return
|
|
1095
|
+
return jt(t) !== void 0;
|
|
1204
1096
|
});
|
|
1205
1097
|
if (!r || r.length === 0) return n;
|
|
1206
|
-
let i = r[0].filter, a =
|
|
1098
|
+
let i = r[0].filter, a = jt(i);
|
|
1207
1099
|
return n.map((e) => ({
|
|
1208
1100
|
...e,
|
|
1209
1101
|
dateRange: a
|
|
1210
1102
|
}));
|
|
1211
1103
|
}
|
|
1212
1104
|
//#endregion
|
|
1105
|
+
//#region src/client/hooks/useDrillInteraction.ts
|
|
1106
|
+
function Nt(e) {
|
|
1107
|
+
let { query: t, metadata: n, onQueryChange: r, chartConfig: i, dashboardFilters: a, dashboardFilterMapping: o, enabled: s = !0 } = e, [c, l] = Y(!1), [u, d] = Y(null), [f, p] = Y([]), [m, h] = Y(null), [g, _] = Y([]), [v, y] = Y(null), [b, x] = Y(null), [S, C] = Y(null), [w, T] = Y(null), E = q(() => {
|
|
1108
|
+
if (!s || !n) return !1;
|
|
1109
|
+
let e = (t.timeDimensions?.length ?? 0) > 0, r = (t.dimensions?.length ?? 0) > 0, i = t.measures?.some((e) => Re(e, n) !== null) ?? !1;
|
|
1110
|
+
return e || r || i;
|
|
1111
|
+
}, [
|
|
1112
|
+
s,
|
|
1113
|
+
n,
|
|
1114
|
+
t
|
|
1115
|
+
]), D = q(() => !a || !o ? !1 : a.some((e) => e.isUniversalTime && St(o, e.id)), [a, o]);
|
|
1116
|
+
return {
|
|
1117
|
+
handleDataPointClick: G((e) => {
|
|
1118
|
+
if (!s || !n) return;
|
|
1119
|
+
let r = Be(e, t, n, a, o);
|
|
1120
|
+
r.length !== 0 && (h(e), p(r), d(e.position), l(!0));
|
|
1121
|
+
}, [
|
|
1122
|
+
s,
|
|
1123
|
+
n,
|
|
1124
|
+
t,
|
|
1125
|
+
a,
|
|
1126
|
+
o
|
|
1127
|
+
]),
|
|
1128
|
+
menuOpen: c,
|
|
1129
|
+
menuPosition: u,
|
|
1130
|
+
menuOptions: f,
|
|
1131
|
+
handleOptionSelect: G((e) => {
|
|
1132
|
+
if (!(!m || !n)) {
|
|
1133
|
+
try {
|
|
1134
|
+
if (e.targetGranularity && g.length > 0) {
|
|
1135
|
+
let n = g.findIndex((t) => t.granularity === e.targetGranularity);
|
|
1136
|
+
if (n !== -1) {
|
|
1137
|
+
let e = n + 1;
|
|
1138
|
+
if (e < g.length) {
|
|
1139
|
+
let t = g.slice(0, e), n = t[t.length - 1];
|
|
1140
|
+
_(t), r(n.query), C(n.chartConfig || null);
|
|
1141
|
+
}
|
|
1142
|
+
l(!1), h(null);
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
if (v && e.targetGranularity === v) {
|
|
1146
|
+
let e = w || t;
|
|
1147
|
+
_([]), C(b), x(null), y(null), T(null), r(e), l(!1), h(null);
|
|
1148
|
+
return;
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
if (e.targetDimension && g.length > 0) {
|
|
1152
|
+
let t = g.findIndex((t) => t.dimension === e.targetDimension);
|
|
1153
|
+
if (t !== -1) {
|
|
1154
|
+
let e = t + 1;
|
|
1155
|
+
if (e < g.length) {
|
|
1156
|
+
let t = g.slice(0, e), n = t[t.length - 1];
|
|
1157
|
+
_(t), r(n.query), C(n.chartConfig || null);
|
|
1158
|
+
}
|
|
1159
|
+
l(!1), h(null);
|
|
1160
|
+
return;
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
let a = Ge(e, m, t, n);
|
|
1164
|
+
if (g.length === 0 && (T(t), i && x(i), e.targetGranularity && t.timeDimensions?.[0])) {
|
|
1165
|
+
let e = t.timeDimensions[0].granularity;
|
|
1166
|
+
e && y(e);
|
|
1167
|
+
}
|
|
1168
|
+
_((e) => [...e, a.pathEntry]), r(a.query), a.chartConfig && C(a.chartConfig);
|
|
1169
|
+
} catch (e) {
|
|
1170
|
+
console.error("Error building drill query:", e);
|
|
1171
|
+
}
|
|
1172
|
+
l(!1), h(null);
|
|
1173
|
+
}
|
|
1174
|
+
}, [
|
|
1175
|
+
m,
|
|
1176
|
+
n,
|
|
1177
|
+
t,
|
|
1178
|
+
g,
|
|
1179
|
+
v,
|
|
1180
|
+
w,
|
|
1181
|
+
r,
|
|
1182
|
+
i,
|
|
1183
|
+
b
|
|
1184
|
+
]),
|
|
1185
|
+
closeMenu: G(() => {
|
|
1186
|
+
l(!1), d(null), p([]), h(null);
|
|
1187
|
+
}, []),
|
|
1188
|
+
drillPath: g,
|
|
1189
|
+
navigateBack: G(() => {
|
|
1190
|
+
if (g.length !== 0) if (g.length === 1) {
|
|
1191
|
+
let e = w || t;
|
|
1192
|
+
_([]), C(b), x(null), y(null), T(null), r(e);
|
|
1193
|
+
} else {
|
|
1194
|
+
let e = g.slice(0, -1), t = e[e.length - 1];
|
|
1195
|
+
_(e), r(t.query), C(t.chartConfig || null);
|
|
1196
|
+
}
|
|
1197
|
+
}, [
|
|
1198
|
+
g,
|
|
1199
|
+
r,
|
|
1200
|
+
b,
|
|
1201
|
+
w,
|
|
1202
|
+
t
|
|
1203
|
+
]),
|
|
1204
|
+
navigateToLevel: G((e) => {
|
|
1205
|
+
if (e <= 0) {
|
|
1206
|
+
let e = w || t;
|
|
1207
|
+
_([]), C(b), x(null), y(null), T(null), r(e);
|
|
1208
|
+
} else if (e < g.length) {
|
|
1209
|
+
let t = g.slice(0, e), n = t[t.length - 1];
|
|
1210
|
+
_(t), r(n.query), C(n.chartConfig || null);
|
|
1211
|
+
}
|
|
1212
|
+
}, [
|
|
1213
|
+
g,
|
|
1214
|
+
r,
|
|
1215
|
+
b,
|
|
1216
|
+
w,
|
|
1217
|
+
t
|
|
1218
|
+
]),
|
|
1219
|
+
drillEnabled: E,
|
|
1220
|
+
hasDashboardFilterMatch: D,
|
|
1221
|
+
currentChartConfig: S
|
|
1222
|
+
};
|
|
1223
|
+
}
|
|
1224
|
+
//#endregion
|
|
1225
|
+
//#region src/client/types.ts
|
|
1226
|
+
function Pt(e) {
|
|
1227
|
+
return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && e.queries.length > 0;
|
|
1228
|
+
}
|
|
1229
|
+
function Ft(e) {
|
|
1230
|
+
return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
|
|
1231
|
+
}
|
|
1232
|
+
//#endregion
|
|
1213
1233
|
//#region src/client/components/AnalyticsPortlet.tsx
|
|
1214
|
-
var
|
|
1234
|
+
var It = V.memo(U(({ query: e, chartType: t, chartConfig: n, displayConfig: r, dashboardFilters: i, dashboardFilterMapping: o, eagerLoad: s = !1, isVisible: c, height: l = 300, title: u, colorPalette: f, loadingComponent: p, onDebugDataReady: h }, v) => {
|
|
1215
1235
|
let { t: y } = P(), b = J(h), { ref: x, inView: S } = a({
|
|
1216
1236
|
root: oe(),
|
|
1217
1237
|
rootMargin: "500px",
|
|
@@ -1222,7 +1242,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1222
1242
|
K(() => {
|
|
1223
1243
|
b.current = h;
|
|
1224
1244
|
}, [h]);
|
|
1225
|
-
let { config: D } = m(t), O = D.skipQuery === !0, te = q(() => i?.filter((e) => !e.isUniversalTime), [i]), { queryObject: k, multiQueryConfig: j, serverFunnelQuery: M, serverFlowQuery: N, serverRetentionQuery:
|
|
1245
|
+
let { config: D } = m(t), O = D.skipQuery === !0, te = q(() => i?.filter((e) => !e.isUniversalTime), [i]), { queryObject: k, multiQueryConfig: j, serverFunnelQuery: M, serverFlowQuery: N, serverRetentionQuery: F } = q(() => {
|
|
1226
1246
|
if (O) return {
|
|
1227
1247
|
queryObject: null,
|
|
1228
1248
|
multiQueryConfig: null,
|
|
@@ -1231,8 +1251,8 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1231
1251
|
serverRetentionQuery: null
|
|
1232
1252
|
};
|
|
1233
1253
|
try {
|
|
1234
|
-
let t = JSON.parse(e), n =
|
|
1235
|
-
if (
|
|
1254
|
+
let t = JSON.parse(e), n = Et(te, o);
|
|
1255
|
+
if (le(t)) return {
|
|
1236
1256
|
queryObject: null,
|
|
1237
1257
|
multiQueryConfig: null,
|
|
1238
1258
|
serverFunnelQuery: null,
|
|
@@ -1246,7 +1266,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1246
1266
|
serverFlowQuery: t,
|
|
1247
1267
|
serverRetentionQuery: null
|
|
1248
1268
|
};
|
|
1249
|
-
if (
|
|
1269
|
+
if (Ft(t)) {
|
|
1250
1270
|
let e = t, r = {
|
|
1251
1271
|
...e,
|
|
1252
1272
|
funnel: {
|
|
@@ -1256,9 +1276,9 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1256
1276
|
};
|
|
1257
1277
|
if (n.length > 0 && r.funnel.steps.length > 0) {
|
|
1258
1278
|
let e = { ...r.funnel.steps[0] };
|
|
1259
|
-
e.filter =
|
|
1279
|
+
e.filter = Ot(n, e.filter ? Array.isArray(e.filter) ? e.filter : [e.filter] : []), r.funnel.steps[0] = e;
|
|
1260
1280
|
}
|
|
1261
|
-
let a = i?.filter((e) => e.isUniversalTime && o
|
|
1281
|
+
let a = i?.filter((e) => e.isUniversalTime && St(o, e.id));
|
|
1262
1282
|
if (a && a.length > 0 && r.funnel.steps.length > 0) {
|
|
1263
1283
|
let e = a[0];
|
|
1264
1284
|
if ("member" in e.filter) {
|
|
@@ -1290,21 +1310,21 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1290
1310
|
serverRetentionQuery: null
|
|
1291
1311
|
};
|
|
1292
1312
|
}
|
|
1293
|
-
if (
|
|
1313
|
+
if (Pt(t)) return {
|
|
1294
1314
|
queryObject: null,
|
|
1295
1315
|
multiQueryConfig: {
|
|
1296
1316
|
...t,
|
|
1297
1317
|
queries: t.queries.map((e) => ({
|
|
1298
1318
|
...e,
|
|
1299
|
-
filters:
|
|
1300
|
-
timeDimensions:
|
|
1319
|
+
filters: Ot(n, e.filters),
|
|
1320
|
+
timeDimensions: Mt(i, o, e.timeDimensions)
|
|
1301
1321
|
}))
|
|
1302
1322
|
},
|
|
1303
1323
|
serverFunnelQuery: null,
|
|
1304
1324
|
serverFlowQuery: null,
|
|
1305
1325
|
serverRetentionQuery: null
|
|
1306
1326
|
};
|
|
1307
|
-
let r =
|
|
1327
|
+
let r = Ot(n, t.filters), a = Mt(i, o, t.timeDimensions);
|
|
1308
1328
|
return {
|
|
1309
1329
|
queryObject: {
|
|
1310
1330
|
...t,
|
|
@@ -1331,16 +1351,16 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1331
1351
|
te,
|
|
1332
1352
|
i,
|
|
1333
1353
|
o
|
|
1334
|
-
]), I = j !== null, L = M !== null, R = N !== null, z =
|
|
1354
|
+
]), I = j !== null, L = M !== null, R = N !== null, z = F !== null, [ue, B] = Y(null), V = k ? JSON.stringify(k) : null, de = J(null);
|
|
1335
1355
|
K(() => {
|
|
1336
1356
|
V !== de.current && (de.current = V, ue && B(null));
|
|
1337
1357
|
}, [V, ue]);
|
|
1338
|
-
let H = ue || k, { meta:
|
|
1358
|
+
let H = ue || k, { meta: fe } = se(), U = Nt({
|
|
1339
1359
|
query: H || {
|
|
1340
1360
|
measures: [],
|
|
1341
1361
|
dimensions: []
|
|
1342
1362
|
},
|
|
1343
|
-
metadata:
|
|
1363
|
+
metadata: fe,
|
|
1344
1364
|
onQueryChange: (e) => {
|
|
1345
1365
|
B(e);
|
|
1346
1366
|
},
|
|
@@ -1348,11 +1368,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1348
1368
|
dashboardFilters: i,
|
|
1349
1369
|
dashboardFilterMapping: o,
|
|
1350
1370
|
enabled: !I && !L && !R && !z && !!H
|
|
1351
|
-
}),
|
|
1352
|
-
|
|
1353
|
-
}, [
|
|
1354
|
-
e === 0 && B(null),
|
|
1355
|
-
}, [
|
|
1371
|
+
}), W = G(() => {
|
|
1372
|
+
U.drillPath.length === 1 && B(null), U.navigateBack();
|
|
1373
|
+
}, [U]), pe = G((e) => {
|
|
1374
|
+
e === 0 && B(null), U.navigateToLevel(e);
|
|
1375
|
+
}, [U]), me = !H || O || !s && !w || I || L || R || z, he = !j || O || !s && !w || L || R || z, X = !L || O || !s && !w, _e = !R || O || !s && !w, ve = !z || O || !s && !w, ye = g(), be = C(H, {
|
|
1356
1376
|
skip: me,
|
|
1357
1377
|
resetResultSetOnChange: !0,
|
|
1358
1378
|
debounceMs: 100
|
|
@@ -1367,17 +1387,17 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1367
1387
|
}), $ = A(N, {
|
|
1368
1388
|
skip: _e,
|
|
1369
1389
|
debounceMs: 100
|
|
1370
|
-
}), we = T(
|
|
1390
|
+
}), we = T(F, {
|
|
1371
1391
|
skip: ve,
|
|
1372
1392
|
debounceMs: 100
|
|
1373
1393
|
}), Te = I ? null : be.resultSet, Ee = z ? we.isLoading || we.isDebouncing : R ? $.isLoading || $.isDebouncing : L ? Ce.isExecuting || Ce.isDebouncing : I ? Se.isLoading : be.isLoading, De = z ? we.isFetching : R ? $.isFetching : L ? Ce.isExecuting : I ? Se.isFetching : be.isFetching, Oe = z ? we.error : R ? $.error : L ? Ce.error : I ? Se.error : be.error, Ae = z || R ? null : L ? Ce.chartData : I ? Se.data : null, je = R ? $.data : null, Me = z ? we.chartData : null;
|
|
1374
1394
|
ge(v, () => ({ refresh: (e) => {
|
|
1375
1395
|
let t = e?.bustCache ?? !1;
|
|
1376
|
-
if (z &&
|
|
1396
|
+
if (z && F) {
|
|
1377
1397
|
let e = [
|
|
1378
1398
|
"cube",
|
|
1379
1399
|
"retention",
|
|
1380
|
-
JSON.stringify(
|
|
1400
|
+
JSON.stringify(F)
|
|
1381
1401
|
];
|
|
1382
1402
|
t ? ye.removeQueries({ queryKey: e }) : ye.invalidateQueries({ queryKey: e }), we.refetch();
|
|
1383
1403
|
} else if (R && N) {
|
|
@@ -1413,7 +1433,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1413
1433
|
j,
|
|
1414
1434
|
H,
|
|
1415
1435
|
ye,
|
|
1416
|
-
|
|
1436
|
+
F,
|
|
1417
1437
|
N,
|
|
1418
1438
|
M,
|
|
1419
1439
|
we,
|
|
@@ -1459,11 +1479,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1459
1479
|
});
|
|
1460
1480
|
return;
|
|
1461
1481
|
}
|
|
1462
|
-
if (z &&
|
|
1482
|
+
if (z && F && Me) {
|
|
1463
1483
|
b.current({
|
|
1464
1484
|
chartConfig: n || {},
|
|
1465
1485
|
displayConfig: r || {},
|
|
1466
|
-
queryObject:
|
|
1486
|
+
queryObject: F,
|
|
1467
1487
|
data: Me,
|
|
1468
1488
|
chartType: t,
|
|
1469
1489
|
cacheInfo: we.cacheInfo ?? void 0
|
|
@@ -1479,9 +1499,9 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1479
1499
|
}
|
|
1480
1500
|
})();
|
|
1481
1501
|
if (e) {
|
|
1482
|
-
let i =
|
|
1502
|
+
let i = U.drillPath.length > 0 ? {
|
|
1483
1503
|
isDrilling: !0,
|
|
1484
|
-
drillPath:
|
|
1504
|
+
drillPath: U.drillPath.map((e) => ({
|
|
1485
1505
|
id: e.id,
|
|
1486
1506
|
label: e.label,
|
|
1487
1507
|
clickedValue: e.clickedValue,
|
|
@@ -1489,12 +1509,12 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1489
1509
|
granularity: e.granularity,
|
|
1490
1510
|
hierarchy: e.hierarchy
|
|
1491
1511
|
})),
|
|
1492
|
-
currentDrillDepth:
|
|
1512
|
+
currentDrillDepth: U.drillPath.length,
|
|
1493
1513
|
originalQuery: k,
|
|
1494
1514
|
activeQuery: H
|
|
1495
1515
|
} : void 0;
|
|
1496
1516
|
b.current({
|
|
1497
|
-
chartConfig:
|
|
1517
|
+
chartConfig: U.currentChartConfig || n || {},
|
|
1498
1518
|
displayConfig: r || {},
|
|
1499
1519
|
queryObject: H || k,
|
|
1500
1520
|
data: e,
|
|
@@ -1519,14 +1539,14 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1519
1539
|
Ae,
|
|
1520
1540
|
M,
|
|
1521
1541
|
N,
|
|
1522
|
-
|
|
1542
|
+
F,
|
|
1523
1543
|
je,
|
|
1524
1544
|
Me,
|
|
1525
1545
|
$.cacheInfo,
|
|
1526
1546
|
Ce.cacheInfo,
|
|
1527
1547
|
we.cacheInfo,
|
|
1528
|
-
|
|
1529
|
-
|
|
1548
|
+
U.drillPath,
|
|
1549
|
+
U.currentChartConfig
|
|
1530
1550
|
]);
|
|
1531
1551
|
let Fe = !O && D.dropZones.some((e) => e.mandatory === !0);
|
|
1532
1552
|
if (!n && Fe) return /* @__PURE__ */ Z("div", {
|
|
@@ -1616,15 +1636,15 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1616
1636
|
style: { backgroundColor: "rgba(var(--dc-primary-rgb), 0.05)" },
|
|
1617
1637
|
children: JSON.stringify({
|
|
1618
1638
|
chartType: t,
|
|
1619
|
-
chartConfig:
|
|
1639
|
+
chartConfig: U.currentChartConfig || n,
|
|
1620
1640
|
displayConfig: r
|
|
1621
1641
|
}, null, 2)
|
|
1622
1642
|
})] })]
|
|
1623
1643
|
})
|
|
1624
1644
|
]
|
|
1625
1645
|
});
|
|
1626
|
-
if (!(z ? Me !== null &&
|
|
1627
|
-
let e =
|
|
1646
|
+
if (!(z ? Me !== null && F !== null : R ? je !== null && N !== null : L ? Ae !== null && M !== null : I ? Ae !== null && j !== null : Te !== null && k !== null)) {
|
|
1647
|
+
let e = U.drillPath.length > 0;
|
|
1628
1648
|
return /* @__PURE__ */ Q("div", {
|
|
1629
1649
|
ref: x,
|
|
1630
1650
|
className: "dc:flex dc:flex-col dc:w-full",
|
|
@@ -1632,8 +1652,8 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1632
1652
|
children: [e && /* @__PURE__ */ Z("div", {
|
|
1633
1653
|
className: "dc:mb-2 dc:flex-shrink-0",
|
|
1634
1654
|
children: /* @__PURE__ */ Z(Pe, {
|
|
1635
|
-
path:
|
|
1636
|
-
onNavigate:
|
|
1655
|
+
path: U.drillPath,
|
|
1656
|
+
onNavigate: W,
|
|
1637
1657
|
onLevelClick: pe
|
|
1638
1658
|
})
|
|
1639
1659
|
}), /* @__PURE__ */ Z("div", {
|
|
@@ -1686,16 +1706,16 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1686
1706
|
})]
|
|
1687
1707
|
})
|
|
1688
1708
|
});
|
|
1689
|
-
let a = i === "markdown" ? [] : Ie, o = !I && !L && !R && !z &&
|
|
1709
|
+
let a = i === "markdown" ? [] : Ie, o = !I && !L && !R && !z && U.drillEnabled;
|
|
1690
1710
|
return /* @__PURE__ */ Z(_, {
|
|
1691
1711
|
chartType: i,
|
|
1692
1712
|
data: a,
|
|
1693
|
-
chartConfig: o &&
|
|
1713
|
+
chartConfig: o && U.currentChartConfig ? U.currentChartConfig : n,
|
|
1694
1714
|
displayConfig: r,
|
|
1695
1715
|
queryObject: H ?? void 0,
|
|
1696
1716
|
height: e,
|
|
1697
1717
|
colorPalette: f,
|
|
1698
|
-
onDataPointClick: o ?
|
|
1718
|
+
onDataPointClick: o ? U.handleDataPointClick : void 0,
|
|
1699
1719
|
drillEnabled: o,
|
|
1700
1720
|
fallback: /* @__PURE__ */ Z("div", {
|
|
1701
1721
|
className: "dc:flex dc:items-center dc:justify-center dc:w-full",
|
|
@@ -1719,7 +1739,7 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1719
1739
|
})
|
|
1720
1740
|
});
|
|
1721
1741
|
}
|
|
1722
|
-
}, Re = !I && !L && !R && !z &&
|
|
1742
|
+
}, Re = !I && !L && !R && !z && U.drillEnabled;
|
|
1723
1743
|
return /* @__PURE__ */ Q("div", {
|
|
1724
1744
|
ref: x,
|
|
1725
1745
|
className: "dc:w-full dc:h-full dc:relative",
|
|
@@ -1735,11 +1755,11 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1735
1755
|
children: /* @__PURE__ */ Q("div", {
|
|
1736
1756
|
className: "dc:w-full dc:h-full dc:flex dc:flex-col dc:flex-1",
|
|
1737
1757
|
style: { minHeight: t === "markdown" ? void 0 : "200px" },
|
|
1738
|
-
children: [Re &&
|
|
1758
|
+
children: [Re && U.drillPath.length > 0 && /* @__PURE__ */ Z("div", {
|
|
1739
1759
|
className: "dc:mb-2 dc:flex-shrink-0",
|
|
1740
1760
|
children: /* @__PURE__ */ Z(Pe, {
|
|
1741
|
-
path:
|
|
1742
|
-
onNavigate:
|
|
1761
|
+
path: U.drillPath,
|
|
1762
|
+
onNavigate: W,
|
|
1743
1763
|
onLevelClick: pe
|
|
1744
1764
|
})
|
|
1745
1765
|
}), /* @__PURE__ */ Z("div", {
|
|
@@ -1747,18 +1767,18 @@ var jt = V.memo(W(({ query: e, chartType: t, chartConfig: n, displayConfig: r, d
|
|
|
1747
1767
|
children: Le()
|
|
1748
1768
|
})]
|
|
1749
1769
|
})
|
|
1750
|
-
}), Re &&
|
|
1751
|
-
options:
|
|
1752
|
-
position:
|
|
1753
|
-
onSelect:
|
|
1754
|
-
onClose:
|
|
1770
|
+
}), Re && U.menuOpen && U.menuPosition && /* @__PURE__ */ Z(ke, {
|
|
1771
|
+
options: U.menuOptions,
|
|
1772
|
+
position: U.menuPosition,
|
|
1773
|
+
onSelect: U.handleOptionSelect,
|
|
1774
|
+
onClose: U.closeMenu
|
|
1755
1775
|
})]
|
|
1756
1776
|
});
|
|
1757
1777
|
}));
|
|
1758
|
-
|
|
1778
|
+
It.displayName = "AnalyticsPortlet";
|
|
1759
1779
|
//#endregion
|
|
1760
1780
|
//#region src/client/stores/dashboardStore.tsx
|
|
1761
|
-
var
|
|
1781
|
+
var Lt = () => ({
|
|
1762
1782
|
isEditMode: !1,
|
|
1763
1783
|
selectedFilterId: null,
|
|
1764
1784
|
isPortletModalOpen: !1,
|
|
@@ -1776,13 +1796,13 @@ var Mt = () => ({
|
|
|
1776
1796
|
debugData: {},
|
|
1777
1797
|
thumbnailDirty: !1
|
|
1778
1798
|
});
|
|
1779
|
-
function
|
|
1799
|
+
function Rt(e) {
|
|
1780
1800
|
return {
|
|
1781
|
-
...
|
|
1801
|
+
...Lt(),
|
|
1782
1802
|
isEditMode: e.initialEditMode ?? !1
|
|
1783
1803
|
};
|
|
1784
1804
|
}
|
|
1785
|
-
function
|
|
1805
|
+
function zt(e, t, n) {
|
|
1786
1806
|
return {
|
|
1787
1807
|
setEditMode: (t) => e({
|
|
1788
1808
|
isEditMode: t,
|
|
@@ -1844,61 +1864,61 @@ function Pt(e, t, n) {
|
|
|
1844
1864
|
reset: () => e(n)
|
|
1845
1865
|
};
|
|
1846
1866
|
}
|
|
1847
|
-
function
|
|
1848
|
-
let n =
|
|
1867
|
+
function Bt(t = {}) {
|
|
1868
|
+
let n = Rt(t);
|
|
1849
1869
|
return i()(r(e((e, t) => ({
|
|
1850
1870
|
...n,
|
|
1851
|
-
...
|
|
1871
|
+
...zt(e, t, n)
|
|
1852
1872
|
})), { name: "DashboardStore" }));
|
|
1853
1873
|
}
|
|
1854
|
-
var
|
|
1855
|
-
function
|
|
1856
|
-
return
|
|
1874
|
+
var Vt = null;
|
|
1875
|
+
function Ht() {
|
|
1876
|
+
return Vt ||= Bt(), Vt;
|
|
1857
1877
|
}
|
|
1858
|
-
var
|
|
1859
|
-
function
|
|
1878
|
+
var Ut = fe(null);
|
|
1879
|
+
function Wt({ children: e, initialEditMode: t }) {
|
|
1860
1880
|
let n = J(null);
|
|
1861
|
-
return n.current ||=
|
|
1881
|
+
return n.current ||= Bt({ initialEditMode: t }), /* @__PURE__ */ Z(Ut.Provider, {
|
|
1862
1882
|
value: n.current,
|
|
1863
1883
|
children: e
|
|
1864
1884
|
});
|
|
1865
1885
|
}
|
|
1866
|
-
function
|
|
1867
|
-
let t = he(
|
|
1886
|
+
function Gt(e) {
|
|
1887
|
+
let t = he(Ut);
|
|
1868
1888
|
if (!t) throw Error("useDashboardStore must be used within DashboardStoreProvider");
|
|
1869
1889
|
return n(t, e);
|
|
1870
1890
|
}
|
|
1871
|
-
function
|
|
1872
|
-
let e = he(
|
|
1891
|
+
function Kt() {
|
|
1892
|
+
let e = he(Ut);
|
|
1873
1893
|
if (!e) throw Error("useDashboardStoreApi must be used within DashboardStoreProvider");
|
|
1874
1894
|
return e;
|
|
1875
1895
|
}
|
|
1876
|
-
function
|
|
1877
|
-
let t = he(
|
|
1896
|
+
function qt(e) {
|
|
1897
|
+
let t = he(Ut), r = n(t ?? Ht(), e);
|
|
1878
1898
|
return t ? r : null;
|
|
1879
1899
|
}
|
|
1880
|
-
var
|
|
1900
|
+
var Jt = (e) => ({
|
|
1881
1901
|
isEditMode: e.isEditMode,
|
|
1882
1902
|
selectedFilterId: e.selectedFilterId
|
|
1883
|
-
}),
|
|
1903
|
+
}), Yt = (e) => ({
|
|
1884
1904
|
isPortletModalOpen: e.isPortletModalOpen,
|
|
1885
1905
|
editingPortlet: e.editingPortlet,
|
|
1886
1906
|
isFilterConfigModalOpen: e.isFilterConfigModalOpen,
|
|
1887
1907
|
filterConfigPortlet: e.filterConfigPortlet,
|
|
1888
1908
|
isTextModalOpen: e.isTextModalOpen,
|
|
1889
1909
|
editingTextPortlet: e.editingTextPortlet
|
|
1890
|
-
}),
|
|
1910
|
+
}), Xt = (e) => ({
|
|
1891
1911
|
draftRows: e.draftRows,
|
|
1892
1912
|
isDraggingPortlet: e.isDraggingPortlet,
|
|
1893
1913
|
lastKnownLayout: e.lastKnownLayout,
|
|
1894
1914
|
isInitialized: e.isInitialized,
|
|
1895
1915
|
dragState: e.dragState
|
|
1896
|
-
}),
|
|
1916
|
+
}), Zt = (e) => e.debugData, Qt = (e) => (t) => t.debugData[e], $t = (e) => ({
|
|
1897
1917
|
setEditMode: e.setEditMode,
|
|
1898
1918
|
toggleEditMode: e.toggleEditMode,
|
|
1899
1919
|
setSelectedFilterId: e.setSelectedFilterId,
|
|
1900
1920
|
exitFilterSelectionMode: e.exitFilterSelectionMode
|
|
1901
|
-
}),
|
|
1921
|
+
}), en = (e) => ({
|
|
1902
1922
|
openPortletModal: e.openPortletModal,
|
|
1903
1923
|
closePortletModal: e.closePortletModal,
|
|
1904
1924
|
openTextModal: e.openTextModal,
|
|
@@ -1907,17 +1927,17 @@ var Ut = (e) => ({
|
|
|
1907
1927
|
closeFilterConfigModal: e.closeFilterConfigModal,
|
|
1908
1928
|
openDeleteConfirm: e.openDeleteConfirm,
|
|
1909
1929
|
closeDeleteConfirm: e.closeDeleteConfirm
|
|
1910
|
-
}),
|
|
1930
|
+
}), tn = (e) => ({
|
|
1911
1931
|
setDraftRows: e.setDraftRows,
|
|
1912
1932
|
setIsDraggingPortlet: e.setIsDraggingPortlet,
|
|
1913
1933
|
setLastKnownLayout: e.setLastKnownLayout,
|
|
1914
1934
|
setIsInitialized: e.setIsInitialized,
|
|
1915
1935
|
setDragState: e.setDragState,
|
|
1916
1936
|
clearDragState: e.clearDragState
|
|
1917
|
-
}),
|
|
1937
|
+
}), nn = (e) => ({
|
|
1918
1938
|
setDebugData: e.setDebugData,
|
|
1919
1939
|
clearDebugData: e.clearDebugData
|
|
1920
|
-
}),
|
|
1940
|
+
}), rn = (e) => e.thumbnailDirty, an = (e) => ({
|
|
1921
1941
|
setEditMode: e.setEditMode,
|
|
1922
1942
|
toggleEditMode: e.toggleEditMode,
|
|
1923
1943
|
setSelectedFilterId: e.setSelectedFilterId,
|
|
@@ -1943,7 +1963,7 @@ var Ut = (e) => ({
|
|
|
1943
1963
|
});
|
|
1944
1964
|
//#endregion
|
|
1945
1965
|
//#region src/client/hooks/useScrollDetection.ts
|
|
1946
|
-
function
|
|
1966
|
+
function on(e, { threshold: t = 20, debounceMs: n = 150, container: r } = {}) {
|
|
1947
1967
|
let [i, a] = Y(!1), o = J();
|
|
1948
1968
|
return K(() => {
|
|
1949
1969
|
let r = e.current;
|
|
@@ -1965,7 +1985,7 @@ function en(e, { threshold: t = 20, debounceMs: n = 150, container: r } = {}) {
|
|
|
1965
1985
|
}
|
|
1966
1986
|
//#endregion
|
|
1967
1987
|
//#region src/client/hooks/useElementVisibility.ts
|
|
1968
|
-
function
|
|
1988
|
+
function sn(e, { threshold: t = 80, debounceMs: n = 100, containerRef: r, container: i } = {}) {
|
|
1969
1989
|
let [a, o] = Y(!0), s = J(), c = J(!1);
|
|
1970
1990
|
return K(() => {
|
|
1971
1991
|
let i = r?.current, a = () => {
|
|
@@ -1998,7 +2018,7 @@ function tn(e, { threshold: t = 80, debounceMs: n = 100, containerRef: r, contai
|
|
|
1998
2018
|
}
|
|
1999
2019
|
//#endregion
|
|
2000
2020
|
//#region src/client/hooks/useDragAutoScroll.ts
|
|
2001
|
-
function
|
|
2021
|
+
function cn(e, t = {}) {
|
|
2002
2022
|
let { edgeThreshold: n = 80, maxScrollSpeed: r = 15, enabled: i = !0 } = t, a = J(null), o = J(null), s = J(0), c = G((e) => {
|
|
2003
2023
|
let t = Math.max(0, Math.min(1, 1 - e / n));
|
|
2004
2024
|
return Math.round(t * t * r);
|
|
@@ -2056,7 +2076,7 @@ function nn(e, t = {}) {
|
|
|
2056
2076
|
}
|
|
2057
2077
|
//#endregion
|
|
2058
2078
|
//#region src/client/shared/components/CodeBlock.tsx
|
|
2059
|
-
var
|
|
2079
|
+
var ln = ({ code: e, language: t, title: n, maxHeight: r = "16rem", height: i, className: a = "", headerRight: o }) => {
|
|
2060
2080
|
let { t: c } = P(), [l, u] = Y(!1), d = J(null), f = s("copy"), p = s("check");
|
|
2061
2081
|
return K(() => {
|
|
2062
2082
|
if (!d.current) return;
|
|
@@ -2119,7 +2139,7 @@ var rn = ({ code: e, language: t, title: n, maxHeight: r = "16rem", height: i, c
|
|
|
2119
2139
|
};
|
|
2120
2140
|
//#endregion
|
|
2121
2141
|
//#region src/client/components/DebugModal.tsx
|
|
2122
|
-
function
|
|
2142
|
+
function un({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartType: i, cacheInfo: a }) {
|
|
2123
2143
|
let { t: o } = P(), [s, c] = Y(!1);
|
|
2124
2144
|
if (K(() => {
|
|
2125
2145
|
let e = (e) => {
|
|
@@ -2205,37 +2225,37 @@ function an({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartTy
|
|
|
2205
2225
|
/* @__PURE__ */ Q("div", {
|
|
2206
2226
|
className: "dc:grid dc:grid-cols-1 dc:lg:grid-cols-2 dc:gap-4 dc:flex-1 dc:overflow-auto",
|
|
2207
2227
|
children: [
|
|
2208
|
-
/* @__PURE__ */ Z(
|
|
2228
|
+
/* @__PURE__ */ Z(ln, {
|
|
2209
2229
|
code: i,
|
|
2210
2230
|
language: "json",
|
|
2211
2231
|
title: "Chart Type",
|
|
2212
2232
|
maxHeight: "3rem"
|
|
2213
2233
|
}),
|
|
2214
|
-
/* @__PURE__ */ Z(
|
|
2234
|
+
/* @__PURE__ */ Z(ln, {
|
|
2215
2235
|
code: l,
|
|
2216
2236
|
language: "json",
|
|
2217
2237
|
title: "Field Analysis",
|
|
2218
2238
|
maxHeight: "8rem"
|
|
2219
2239
|
}),
|
|
2220
|
-
/* @__PURE__ */ Z(
|
|
2240
|
+
/* @__PURE__ */ Z(ln, {
|
|
2221
2241
|
code: JSON.stringify(e, null, 2),
|
|
2222
2242
|
language: "json",
|
|
2223
2243
|
title: "Chart Config",
|
|
2224
2244
|
className: "dc:lg:col-span-2"
|
|
2225
2245
|
}),
|
|
2226
|
-
/* @__PURE__ */ Z(
|
|
2246
|
+
/* @__PURE__ */ Z(ln, {
|
|
2227
2247
|
code: JSON.stringify(t, null, 2),
|
|
2228
2248
|
language: "json",
|
|
2229
2249
|
title: "Display Config",
|
|
2230
2250
|
className: "dc:lg:col-span-2"
|
|
2231
2251
|
}),
|
|
2232
|
-
/* @__PURE__ */ Z(
|
|
2252
|
+
/* @__PURE__ */ Z(ln, {
|
|
2233
2253
|
code: JSON.stringify(n, null, 2),
|
|
2234
2254
|
language: "json",
|
|
2235
2255
|
title: "Query Object",
|
|
2236
2256
|
className: "dc:lg:col-span-2"
|
|
2237
2257
|
}),
|
|
2238
|
-
/* @__PURE__ */ Z(
|
|
2258
|
+
/* @__PURE__ */ Z(ln, {
|
|
2239
2259
|
code: JSON.stringify(Array.isArray(r) ? r.slice(0, 3) : r, null, 2),
|
|
2240
2260
|
language: "json",
|
|
2241
2261
|
title: "Data Sample (first 3 rows)",
|
|
@@ -2306,18 +2326,18 @@ function an({ chartConfig: e, displayConfig: t, queryObject: n, data: r, chartTy
|
|
|
2306
2326
|
}
|
|
2307
2327
|
//#endregion
|
|
2308
2328
|
//#region src/client/components/DashboardPortletCard.tsx
|
|
2309
|
-
var
|
|
2329
|
+
var dn = {
|
|
2310
2330
|
width: "16px",
|
|
2311
2331
|
height: "16px",
|
|
2312
2332
|
color: "currentColor"
|
|
2313
2333
|
};
|
|
2314
|
-
function
|
|
2334
|
+
function fn(e, t) {
|
|
2315
2335
|
if (e === t) return !0;
|
|
2316
2336
|
if (e.editable !== t.editable || e.layoutMode !== t.layoutMode || e.configEagerLoad !== t.configEagerLoad || e.portlet !== t.portlet || e.dashboardFilters !== t.dashboardFilters || e.colorPalette !== t.colorPalette || e.loadingComponent !== t.loadingComponent || e.callbacks !== t.callbacks || e.icons !== t.icons || e.setPortletRef !== t.setPortletRef || e.setPortletComponentRef !== t.setPortletComponentRef) return !1;
|
|
2317
|
-
let n =
|
|
2337
|
+
let n = pn(e.containerProps, t.containerProps), r = pn(e.headerProps, t.headerProps);
|
|
2318
2338
|
return n && r;
|
|
2319
2339
|
}
|
|
2320
|
-
function
|
|
2340
|
+
function pn(e, t) {
|
|
2321
2341
|
if (e === t) return !0;
|
|
2322
2342
|
if (!e || !t) return e === t;
|
|
2323
2343
|
let n = Object.keys(e);
|
|
@@ -2325,11 +2345,11 @@ function cn(e, t) {
|
|
|
2325
2345
|
for (let r of n) if (e[r] !== t[r]) return !1;
|
|
2326
2346
|
return !0;
|
|
2327
2347
|
}
|
|
2328
|
-
var
|
|
2348
|
+
var mn = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortletComponentRef: n, renderQuery: r, renderChartType: i, renderChartConfig: a, renderDisplayConfig: o, dashboardFilters: s, dashboardFilterMapping: c, eagerLoad: l, title: u, isMarkdownAutoHeight: d, colorPalette: f, loadingComponent: p, onDebugDataReady: m }) {
|
|
2329
2349
|
return /* @__PURE__ */ Z("div", {
|
|
2330
2350
|
ref: t,
|
|
2331
2351
|
className: `dc:flex-1 dc:min-h-0 dc:flex dc:flex-col${e ? "" : " dc:px-2 dc:py-3 dc:md:px-4 dc:md:py-4"}`,
|
|
2332
|
-
children: /* @__PURE__ */ Z(
|
|
2352
|
+
children: /* @__PURE__ */ Z(It, {
|
|
2333
2353
|
ref: n,
|
|
2334
2354
|
query: r,
|
|
2335
2355
|
chartType: i,
|
|
@@ -2345,86 +2365,147 @@ var ln = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortlet
|
|
|
2345
2365
|
onDebugDataReady: m
|
|
2346
2366
|
})
|
|
2347
2367
|
});
|
|
2348
|
-
}),
|
|
2349
|
-
let { analysisConfig: y } = q(() =>
|
|
2368
|
+
}), hn = V.memo(function({ portlet: e, editable: t, layoutMode: n = "grid", dashboardFilters: r, configEagerLoad: i, loadingComponent: a, colorPalette: c, containerProps: l, headerProps: d, setPortletRef: m, setPortletComponentRef: h, callbacks: g, icons: _ }) {
|
|
2369
|
+
let { analysisConfig: y } = q(() => yt(e), [e]), b = y.charts[y.analysisType], x = q(() => JSON.stringify(y.query), [y.query]), S = b?.chartType || "line", C = b?.chartConfig, w = b?.displayConfig, T = Gt((e) => e.isEditMode), E = Gt((e) => e.selectedFilterId), D = Gt((t) => t.debugData[e.id]), O = S === "markdown", ee = n !== "grid" && O && (w?.autoHeight ?? !0), te = O && !!w?.transparentBackground, k = te && !T, A = S === "markdown" ? (w?.hideHeader ?? !0) || !!w?.transparentBackground || !e.title : w?.hideHeader ?? !1, j = Gt((e) => e.setDebugData), { features: ne } = u(), { t: re } = P(), ie = s("camera"), ae = s("check"), oe = s("download"), [M, N] = Y(!1), [se, ce] = Y(!1), F = J(null), [le, I] = Y(!1), [L, R] = Y(!1), [z, ue] = Y(!1), [B, V] = Y(!1);
|
|
2350
2370
|
K(() => {
|
|
2351
2371
|
let e = (e) => {
|
|
2352
|
-
e.key === "Shift" &&
|
|
2372
|
+
e.key === "Shift" && ue(!0);
|
|
2353
2373
|
}, t = (e) => {
|
|
2354
|
-
e.key === "Shift" &&
|
|
2374
|
+
e.key === "Shift" && ue(!1);
|
|
2355
2375
|
};
|
|
2356
2376
|
return window.addEventListener("keydown", e), window.addEventListener("keyup", t), () => {
|
|
2357
2377
|
window.removeEventListener("keydown", e), window.removeEventListener("keyup", t);
|
|
2358
2378
|
};
|
|
2359
2379
|
}, []);
|
|
2360
|
-
let
|
|
2380
|
+
let de = z && B;
|
|
2361
2381
|
K(() => {
|
|
2362
|
-
ne.thumbnail?.enabled ? p().then(
|
|
2382
|
+
ne.thumbnail?.enabled ? p().then(ce) : ce(!1);
|
|
2363
2383
|
}, [ne.thumbnail?.enabled]), K(() => {
|
|
2364
|
-
ne.xlsExport?.enabled ? o().then(
|
|
2384
|
+
ne.xlsExport?.enabled ? o().then(I) : I(!1);
|
|
2365
2385
|
}, [ne.xlsExport?.enabled]);
|
|
2366
|
-
let
|
|
2367
|
-
if (t.stopPropagation(), !(!D ||
|
|
2368
|
-
|
|
2386
|
+
let H = G(async (t) => {
|
|
2387
|
+
if (t.stopPropagation(), !(!D || L)) {
|
|
2388
|
+
R(!0);
|
|
2369
2389
|
try {
|
|
2370
2390
|
await v(e.title || "export", D);
|
|
2371
2391
|
} finally {
|
|
2372
|
-
|
|
2392
|
+
R(!1);
|
|
2373
2393
|
}
|
|
2374
2394
|
}
|
|
2375
2395
|
}, [
|
|
2376
2396
|
D,
|
|
2377
|
-
|
|
2397
|
+
L,
|
|
2378
2398
|
e.title
|
|
2379
|
-
]),
|
|
2380
|
-
e.stopPropagation(),
|
|
2381
|
-
}, []),
|
|
2399
|
+
]), fe = G(async (e) => {
|
|
2400
|
+
e.stopPropagation(), F.current && await f(F.current) && (N(!0), setTimeout(() => N(!1), 2e3));
|
|
2401
|
+
}, []), U = E ? St(e.dashboardFilterMapping, E) : !1, W = !!E, pe = q(() => {
|
|
2402
|
+
if (!W || !U || !E) return null;
|
|
2403
|
+
let t = r?.find((e) => e.id === E);
|
|
2404
|
+
if (!t || t.isUniversalTime) return null;
|
|
2405
|
+
let n = Ct(e.dashboardFilterMapping, E);
|
|
2406
|
+
return n ? {
|
|
2407
|
+
field: n,
|
|
2408
|
+
isOverride: !0
|
|
2409
|
+
} : "member" in t.filter && t.filter.member ? {
|
|
2410
|
+
field: t.filter.member,
|
|
2411
|
+
isOverride: !1
|
|
2412
|
+
} : null;
|
|
2413
|
+
}, [
|
|
2414
|
+
W,
|
|
2415
|
+
U,
|
|
2416
|
+
E,
|
|
2417
|
+
r,
|
|
2418
|
+
e.dashboardFilterMapping
|
|
2419
|
+
]), me = [
|
|
2382
2420
|
k ? "dc:flex dc:flex-col dc:transition-all" : "bg-dc-surface dc:border dc:rounded-lg dc:flex dc:flex-col dc:transition-all",
|
|
2383
2421
|
ee ? "" : "dc:h-full",
|
|
2384
|
-
|
|
2422
|
+
W ? "dc:cursor-pointer dc:relative" : "",
|
|
2385
2423
|
l?.className
|
|
2386
|
-
].filter(Boolean).join(" "),
|
|
2424
|
+
].filter(Boolean).join(" "), he = [
|
|
2387
2425
|
"flex items-center justify-between px-3 py-1.5 md:px-4 md:py-1 border-b border-dc-border shrink-0 bg-dc-surface-secondary rounded-t-lg portlet-drag-handle",
|
|
2388
2426
|
T ? "cursor-move" : "cursor-default",
|
|
2389
2427
|
d?.className
|
|
2390
|
-
].filter(Boolean).join(" "), { onClick:
|
|
2428
|
+
].filter(Boolean).join(" "), { onClick: ge, className: _e, style: ve, ...ye } = l ?? {}, { onClick: be, className: xe, style: Se, ...Ce } = d ?? {}, $ = G((t) => {
|
|
2391
2429
|
j(e.id, t);
|
|
2392
|
-
}, [e.id, j]),
|
|
2430
|
+
}, [e.id, j]), we = G((t) => {
|
|
2393
2431
|
m(e.id, t);
|
|
2394
|
-
}, [e.id, m]),
|
|
2432
|
+
}, [e.id, m]), Te = G((t) => {
|
|
2395
2433
|
h(e.id, t);
|
|
2396
|
-
}, [e.id, h]),
|
|
2397
|
-
|
|
2434
|
+
}, [e.id, h]), Ee = G((e) => {
|
|
2435
|
+
F.current = e;
|
|
2398
2436
|
}, []);
|
|
2399
2437
|
return /* @__PURE__ */ Q("div", {
|
|
2400
2438
|
"data-portlet-id": e.id,
|
|
2401
|
-
ref:
|
|
2402
|
-
className:
|
|
2439
|
+
ref: we,
|
|
2440
|
+
className: me,
|
|
2403
2441
|
style: {
|
|
2404
2442
|
boxShadow: k ? "none" : "var(--dc-shadow-sm)",
|
|
2405
|
-
borderColor: k ? "transparent" :
|
|
2406
|
-
borderWidth: k ? "0" :
|
|
2407
|
-
backgroundColor: k ? "transparent" :
|
|
2408
|
-
opacity:
|
|
2409
|
-
...
|
|
2443
|
+
borderColor: k ? "transparent" : W && U ? "var(--dc-primary)" : "var(--dc-border)",
|
|
2444
|
+
borderWidth: k ? "0" : W && U ? "2px" : "1px",
|
|
2445
|
+
backgroundColor: k ? "transparent" : W && U ? "rgba(var(--dc-primary-rgb), 0.05)" : "var(--dc-surface)",
|
|
2446
|
+
opacity: W && !U ? "0.5" : "1",
|
|
2447
|
+
...ve
|
|
2410
2448
|
},
|
|
2411
2449
|
onClick: (t) => {
|
|
2412
|
-
|
|
2450
|
+
W && E && (t.stopPropagation(), g.onToggleFilter(e.id, E)), ge?.(t);
|
|
2413
2451
|
},
|
|
2414
|
-
...
|
|
2415
|
-
children: [
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2452
|
+
...ye,
|
|
2453
|
+
children: [
|
|
2454
|
+
pe && /* @__PURE__ */ Q("button", {
|
|
2455
|
+
onClick: (t) => {
|
|
2456
|
+
t.stopPropagation(), g.onOpenFilterConfig(e);
|
|
2457
|
+
},
|
|
2458
|
+
onTouchEnd: (t) => {
|
|
2459
|
+
t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
|
|
2460
|
+
},
|
|
2461
|
+
title: re("dashboard.filterFieldChipHint"),
|
|
2462
|
+
className: "dc:absolute dc:bottom-2 dc:left-1/2 dc:-translate-x-1/2 dc:z-10 dc:flex dc:items-center dc:gap-1 dc:px-2.5 dc:py-1 dc:text-xs dc:font-medium dc:rounded-full dc:border dc:cursor-pointer dc:transition-colors dc:max-w-[90%] dc:truncate",
|
|
2463
|
+
style: {
|
|
2464
|
+
backgroundColor: pe.isOverride ? "var(--dc-primary)" : "var(--dc-surface)",
|
|
2465
|
+
color: pe.isOverride ? "white" : "var(--dc-text-secondary)",
|
|
2466
|
+
borderColor: "var(--dc-primary)",
|
|
2467
|
+
boxShadow: "var(--dc-shadow-sm)"
|
|
2468
|
+
},
|
|
2469
|
+
children: [/* @__PURE__ */ Z(_.FilterIcon, { style: {
|
|
2470
|
+
width: "12px",
|
|
2471
|
+
height: "12px"
|
|
2472
|
+
} }), /* @__PURE__ */ Z("span", {
|
|
2473
|
+
className: "dc:truncate",
|
|
2474
|
+
children: pe.field
|
|
2475
|
+
})]
|
|
2476
|
+
}),
|
|
2477
|
+
(!A || T) && /* @__PURE__ */ Q("div", {
|
|
2478
|
+
className: he,
|
|
2479
|
+
style: Se,
|
|
2480
|
+
onClick: (e) => {
|
|
2481
|
+
be?.(e);
|
|
2482
|
+
},
|
|
2483
|
+
...Ce,
|
|
2484
|
+
children: [/* @__PURE__ */ Q("div", {
|
|
2485
|
+
className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
|
|
2486
|
+
children: [/* @__PURE__ */ Z("h3", {
|
|
2487
|
+
className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
|
|
2488
|
+
children: e.title
|
|
2489
|
+
}), t && T && D && /* @__PURE__ */ Z("div", {
|
|
2490
|
+
onMouseDown: (e) => {
|
|
2491
|
+
e.stopPropagation(), e.preventDefault();
|
|
2492
|
+
},
|
|
2493
|
+
onClick: (e) => e.stopPropagation(),
|
|
2494
|
+
onTouchStart: (e) => {
|
|
2495
|
+
e.stopPropagation(), e.preventDefault();
|
|
2496
|
+
},
|
|
2497
|
+
onTouchEnd: (e) => e.stopPropagation(),
|
|
2498
|
+
children: /* @__PURE__ */ Z(un, {
|
|
2499
|
+
chartConfig: D.chartConfig,
|
|
2500
|
+
displayConfig: D.displayConfig,
|
|
2501
|
+
queryObject: D.queryObject,
|
|
2502
|
+
data: D.data,
|
|
2503
|
+
chartType: D.chartType,
|
|
2504
|
+
cacheInfo: D.cacheInfo
|
|
2505
|
+
})
|
|
2506
|
+
})]
|
|
2507
|
+
}), /* @__PURE__ */ Q("div", {
|
|
2508
|
+
className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
|
|
2428
2509
|
onMouseDown: (e) => {
|
|
2429
2510
|
e.stopPropagation(), e.preventDefault();
|
|
2430
2511
|
},
|
|
@@ -2433,152 +2514,135 @@ var ln = V.memo(function({ isTransparent: e, setChartContainerRef: t, setPortlet
|
|
|
2433
2514
|
e.stopPropagation(), e.preventDefault();
|
|
2434
2515
|
},
|
|
2435
2516
|
onTouchEnd: (e) => e.stopPropagation(),
|
|
2436
|
-
children:
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
width: "12",
|
|
2461
|
-
height: "12",
|
|
2462
|
-
viewBox: "0 0 24 24",
|
|
2463
|
-
fill: "none",
|
|
2464
|
-
stroke: "currentColor",
|
|
2465
|
-
strokeWidth: "2",
|
|
2466
|
-
strokeLinecap: "round",
|
|
2467
|
-
strokeLinejoin: "round",
|
|
2468
|
-
children: [
|
|
2469
|
-
/* @__PURE__ */ Z("ellipse", {
|
|
2470
|
-
cx: "12",
|
|
2471
|
-
cy: "5",
|
|
2472
|
-
rx: "9",
|
|
2473
|
-
ry: "3"
|
|
2474
|
-
}),
|
|
2475
|
-
/* @__PURE__ */ Z("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" }),
|
|
2476
|
-
/* @__PURE__ */ Z("path", { d: "M3 12c0 1.66 4 3 9 3s9-1.34 9-3" })
|
|
2477
|
-
]
|
|
2478
|
-
})
|
|
2479
|
-
}),
|
|
2480
|
-
/* @__PURE__ */ Z("button", {
|
|
2481
|
-
onClick: (t) => {
|
|
2482
|
-
t.stopPropagation(), g.onRefresh(e.id, { bustCache: t.shiftKey });
|
|
2483
|
-
},
|
|
2484
|
-
onTouchEnd: (t) => {
|
|
2485
|
-
t.stopPropagation(), t.preventDefault(), g.onRefresh(e.id);
|
|
2486
|
-
},
|
|
2487
|
-
onMouseEnter: () => ue(!0),
|
|
2488
|
-
onMouseLeave: () => ue(!1),
|
|
2489
|
-
disabled: U,
|
|
2490
|
-
className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${U ? "dc:cursor-not-allowed dc:opacity-50 text-dc-text-secondary" : B ? "dc:cursor-pointer text-dc-warning bg-dc-warning-bg" : "dc:cursor-pointer text-dc-text-secondary hover:bg-dc-surface-hover"}`,
|
|
2491
|
-
title: B ? "Click to refresh and bypass cache" : "Refresh portlet data (Shift+click to bypass cache)",
|
|
2492
|
-
children: /* @__PURE__ */ Z(_.RefreshIcon, { style: on })
|
|
2493
|
-
}),
|
|
2494
|
-
N && !U && /* @__PURE__ */ Z("button", {
|
|
2495
|
-
onClick: de,
|
|
2496
|
-
onTouchEnd: (e) => {
|
|
2497
|
-
e.preventDefault(), de(e);
|
|
2498
|
-
},
|
|
2499
|
-
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
|
|
2500
|
-
title: oe ? "Copied!" : "Copy chart to clipboard",
|
|
2501
|
-
children: Z(oe ? ie : re, { style: on })
|
|
2502
|
-
}),
|
|
2503
|
-
ce && !U && D && /* @__PURE__ */ Z("button", {
|
|
2504
|
-
onClick: V,
|
|
2505
|
-
onTouchEnd: (e) => {
|
|
2506
|
-
e.preventDefault(), V(e);
|
|
2507
|
-
},
|
|
2508
|
-
disabled: F,
|
|
2509
|
-
className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${F ? "dc:opacity-50 dc:cursor-wait text-dc-text-secondary" : "text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover"}`,
|
|
2510
|
-
title: F ? "Exporting..." : "Download data as XLSX",
|
|
2511
|
-
children: /* @__PURE__ */ Z(ae, { style: on })
|
|
2512
|
-
}),
|
|
2513
|
-
t && T && !U && /* @__PURE__ */ Q(X, { children: [
|
|
2514
|
-
/* @__PURE__ */ Z("button", {
|
|
2515
|
-
onClick: (t) => {
|
|
2516
|
-
t.stopPropagation(), g.onOpenFilterConfig(e);
|
|
2517
|
-
},
|
|
2518
|
-
onTouchEnd: (t) => {
|
|
2519
|
-
t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
|
|
2520
|
-
},
|
|
2521
|
-
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors dc:relative",
|
|
2522
|
-
title: `Configure dashboard filters${e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? ` (${e.dashboardFilterMapping.length} active)` : ""}`,
|
|
2523
|
-
style: { color: e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? "var(--dc-primary)" : "var(--dc-text-secondary)" },
|
|
2524
|
-
children: /* @__PURE__ */ Z(_.FilterIcon, { style: on })
|
|
2517
|
+
children: [
|
|
2518
|
+
D?.cacheInfo && /* @__PURE__ */ Z("span", {
|
|
2519
|
+
className: "dc:p-1 text-dc-text-muted dc:opacity-40",
|
|
2520
|
+
title: `Cached ${Math.round((Date.now() - new Date(D.cacheInfo.cachedAt).getTime()) / 1e3)}s ago`,
|
|
2521
|
+
children: /* @__PURE__ */ Q("svg", {
|
|
2522
|
+
width: "12",
|
|
2523
|
+
height: "12",
|
|
2524
|
+
viewBox: "0 0 24 24",
|
|
2525
|
+
fill: "none",
|
|
2526
|
+
stroke: "currentColor",
|
|
2527
|
+
strokeWidth: "2",
|
|
2528
|
+
strokeLinecap: "round",
|
|
2529
|
+
strokeLinejoin: "round",
|
|
2530
|
+
children: [
|
|
2531
|
+
/* @__PURE__ */ Z("ellipse", {
|
|
2532
|
+
cx: "12",
|
|
2533
|
+
cy: "5",
|
|
2534
|
+
rx: "9",
|
|
2535
|
+
ry: "3"
|
|
2536
|
+
}),
|
|
2537
|
+
/* @__PURE__ */ Z("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" }),
|
|
2538
|
+
/* @__PURE__ */ Z("path", { d: "M3 12c0 1.66 4 3 9 3s9-1.34 9-3" })
|
|
2539
|
+
]
|
|
2540
|
+
})
|
|
2525
2541
|
}),
|
|
2526
2542
|
/* @__PURE__ */ Z("button", {
|
|
2527
2543
|
onClick: (t) => {
|
|
2528
|
-
t.stopPropagation(), g.
|
|
2544
|
+
t.stopPropagation(), g.onRefresh(e.id, { bustCache: t.shiftKey });
|
|
2529
2545
|
},
|
|
2530
2546
|
onTouchEnd: (t) => {
|
|
2531
|
-
t.stopPropagation(), t.preventDefault(), g.
|
|
2547
|
+
t.stopPropagation(), t.preventDefault(), g.onRefresh(e.id);
|
|
2532
2548
|
},
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2549
|
+
onMouseEnter: () => V(!0),
|
|
2550
|
+
onMouseLeave: () => V(!1),
|
|
2551
|
+
disabled: W,
|
|
2552
|
+
className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${W ? "dc:cursor-not-allowed dc:opacity-50 text-dc-text-secondary" : de ? "dc:cursor-pointer text-dc-warning bg-dc-warning-bg" : "dc:cursor-pointer text-dc-text-secondary hover:bg-dc-surface-hover"}`,
|
|
2553
|
+
title: de ? "Click to refresh and bypass cache" : "Refresh portlet data (Shift+click to bypass cache)",
|
|
2554
|
+
children: /* @__PURE__ */ Z(_.RefreshIcon, { style: dn })
|
|
2536
2555
|
}),
|
|
2537
|
-
/* @__PURE__ */ Z("button", {
|
|
2538
|
-
onClick:
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
onTouchEnd: (t) => {
|
|
2542
|
-
t.stopPropagation(), t.preventDefault(), g.onEdit(e);
|
|
2556
|
+
se && !W && /* @__PURE__ */ Z("button", {
|
|
2557
|
+
onClick: fe,
|
|
2558
|
+
onTouchEnd: (e) => {
|
|
2559
|
+
e.preventDefault(), fe(e);
|
|
2543
2560
|
},
|
|
2544
2561
|
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
|
|
2545
|
-
title: "
|
|
2546
|
-
children:
|
|
2562
|
+
title: M ? "Copied!" : "Copy chart to clipboard",
|
|
2563
|
+
children: Z(M ? ae : ie, { style: dn })
|
|
2547
2564
|
}),
|
|
2548
|
-
/* @__PURE__ */ Z("button", {
|
|
2549
|
-
onClick:
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
onTouchEnd: (t) => {
|
|
2553
|
-
t.stopPropagation(), t.preventDefault(), g.onDelete(e.id);
|
|
2565
|
+
le && !W && D && /* @__PURE__ */ Z("button", {
|
|
2566
|
+
onClick: H,
|
|
2567
|
+
onTouchEnd: (e) => {
|
|
2568
|
+
e.preventDefault(), H(e);
|
|
2554
2569
|
},
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2570
|
+
disabled: L,
|
|
2571
|
+
className: `dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:transition-colors ${L ? "dc:opacity-50 dc:cursor-wait text-dc-text-secondary" : "text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover"}`,
|
|
2572
|
+
title: L ? "Exporting..." : "Download data as XLSX",
|
|
2573
|
+
children: /* @__PURE__ */ Z(oe, { style: dn })
|
|
2574
|
+
}),
|
|
2575
|
+
t && T && !W && /* @__PURE__ */ Q(X, { children: [
|
|
2576
|
+
/* @__PURE__ */ Z("button", {
|
|
2577
|
+
onClick: (t) => {
|
|
2578
|
+
t.stopPropagation(), g.onOpenFilterConfig(e);
|
|
2579
|
+
},
|
|
2580
|
+
onTouchEnd: (t) => {
|
|
2581
|
+
t.stopPropagation(), t.preventDefault(), g.onOpenFilterConfig(e);
|
|
2582
|
+
},
|
|
2583
|
+
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors dc:relative",
|
|
2584
|
+
title: `Configure dashboard filters${e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? ` (${e.dashboardFilterMapping.length} active)` : ""}`,
|
|
2585
|
+
style: { color: e.dashboardFilterMapping && e.dashboardFilterMapping.length > 0 ? "var(--dc-primary)" : "var(--dc-text-secondary)" },
|
|
2586
|
+
children: /* @__PURE__ */ Z(_.FilterIcon, { style: dn })
|
|
2587
|
+
}),
|
|
2588
|
+
/* @__PURE__ */ Z("button", {
|
|
2589
|
+
onClick: (t) => {
|
|
2590
|
+
t.stopPropagation(), g.onDuplicate(e.id);
|
|
2591
|
+
},
|
|
2592
|
+
onTouchEnd: (t) => {
|
|
2593
|
+
t.stopPropagation(), t.preventDefault(), g.onDuplicate(e.id);
|
|
2594
|
+
},
|
|
2595
|
+
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
|
|
2596
|
+
title: "Duplicate portlet",
|
|
2597
|
+
children: /* @__PURE__ */ Z(_.CopyIcon, { style: dn })
|
|
2598
|
+
}),
|
|
2599
|
+
/* @__PURE__ */ Z("button", {
|
|
2600
|
+
onClick: (t) => {
|
|
2601
|
+
t.stopPropagation(), g.onEdit(e);
|
|
2602
|
+
},
|
|
2603
|
+
onTouchEnd: (t) => {
|
|
2604
|
+
t.stopPropagation(), t.preventDefault(), g.onEdit(e);
|
|
2605
|
+
},
|
|
2606
|
+
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
|
|
2607
|
+
title: "Edit portlet",
|
|
2608
|
+
children: /* @__PURE__ */ Z(_.EditIcon, { style: dn })
|
|
2609
|
+
}),
|
|
2610
|
+
/* @__PURE__ */ Z("button", {
|
|
2611
|
+
onClick: (t) => {
|
|
2612
|
+
t.stopPropagation(), g.onDelete(e.id);
|
|
2613
|
+
},
|
|
2614
|
+
onTouchEnd: (t) => {
|
|
2615
|
+
t.stopPropagation(), t.preventDefault(), g.onDelete(e.id);
|
|
2616
|
+
},
|
|
2617
|
+
className: "dc:p-1 dc:mr-0.5 bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
2618
|
+
title: "Delete portlet",
|
|
2619
|
+
children: /* @__PURE__ */ Z(_.DeleteIcon, { style: dn })
|
|
2620
|
+
})
|
|
2621
|
+
] })
|
|
2622
|
+
]
|
|
2623
|
+
})]
|
|
2624
|
+
}),
|
|
2625
|
+
/* @__PURE__ */ Z(mn, {
|
|
2626
|
+
isTransparent: te,
|
|
2627
|
+
setChartContainerRef: Ee,
|
|
2628
|
+
setPortletComponentRef: Te,
|
|
2629
|
+
renderQuery: x,
|
|
2630
|
+
renderChartType: S,
|
|
2631
|
+
renderChartConfig: C,
|
|
2632
|
+
renderDisplayConfig: w,
|
|
2633
|
+
dashboardFilters: r,
|
|
2634
|
+
dashboardFilterMapping: e.dashboardFilterMapping,
|
|
2635
|
+
eagerLoad: e.eagerLoad ?? i ?? !1,
|
|
2636
|
+
title: e.title,
|
|
2637
|
+
isMarkdownAutoHeight: ee,
|
|
2638
|
+
colorPalette: c,
|
|
2639
|
+
loadingComponent: a,
|
|
2640
|
+
onDebugDataReady: $
|
|
2641
|
+
})
|
|
2642
|
+
]
|
|
2579
2643
|
});
|
|
2580
|
-
},
|
|
2581
|
-
function
|
|
2644
|
+
}, fn), gn = 16;
|
|
2645
|
+
function _n({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, isDragging: a, onRowResize: o, onColumnResize: s, onPortletDragStart: c, onPortletDragEnd: l, onRowDrop: u, onNewRowDrop: d, renderPortlet: f }) {
|
|
2582
2646
|
let p = new Map(t.map((e) => [e.id, e])), [m, h] = Y(null), g = (e) => {
|
|
2583
2647
|
h(e);
|
|
2584
2648
|
}, _ = a || m !== null, v = G((e) => {
|
|
@@ -2590,7 +2654,7 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
|
|
|
2590
2654
|
className: `dc-row-layout${i ? " dc-row-layout-editable" : ""}${_ ? " dc-row-layout-dragging" : ""}`,
|
|
2591
2655
|
style: {
|
|
2592
2656
|
"--dc-row-gap": "24px",
|
|
2593
|
-
"--dc-column-gap": `${
|
|
2657
|
+
"--dc-column-gap": `${gn}px`,
|
|
2594
2658
|
"--dc-top-drop-space": b ? "24px" : "0px",
|
|
2595
2659
|
"--dc-bottom-drop-space": x ? "24px" : "0px"
|
|
2596
2660
|
},
|
|
@@ -2609,9 +2673,9 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
|
|
|
2609
2673
|
let a = e.columns.length > 0 && e.columns.every((e) => {
|
|
2610
2674
|
let t = p.get(e.portletId);
|
|
2611
2675
|
if (!t) return !1;
|
|
2612
|
-
let n =
|
|
2676
|
+
let n = yt(t), r = n.analysisConfig.charts[n.analysisConfig.analysisType];
|
|
2613
2677
|
return r?.chartType === "markdown" && (r.displayConfig?.autoHeight ?? !0);
|
|
2614
|
-
}), c = a ? void 0 : e.h * n.rowHeight, l = r || n.cols * n.rowHeight, h = m === `row-${t}-insert-0` ?
|
|
2678
|
+
}), c = a ? void 0 : e.h * n.rowHeight, l = r || n.cols * n.rowHeight, h = m === `row-${t}-insert-0` ? gn : 0, _ = m === `row-${t}-insert-${e.columns.length}` ? gn : 0, b = (l - (e.columns.length - 1) * gn - h - _) / n.cols;
|
|
2615
2679
|
return /* @__PURE__ */ Q("div", {
|
|
2616
2680
|
className: "dc-row-layout-row-wrapper",
|
|
2617
2681
|
children: [
|
|
@@ -2704,7 +2768,7 @@ function fn({ rows: e, portlets: t, gridSettings: n, gridWidth: r, canEdit: i, i
|
|
|
2704
2768
|
}
|
|
2705
2769
|
//#endregion
|
|
2706
2770
|
//#region src/client/hooks/dashboard/useGridLayoutEngine.ts
|
|
2707
|
-
function
|
|
2771
|
+
function vn({ storeApi: e }) {
|
|
2708
2772
|
return { hasLayoutActuallyChanged: G((t) => {
|
|
2709
2773
|
let { isInitialized: n, lastKnownLayout: r } = e.getState();
|
|
2710
2774
|
if (!n || r.length === 0) return !1;
|
|
@@ -2717,7 +2781,7 @@ function pn({ storeApi: e }) {
|
|
|
2717
2781
|
}
|
|
2718
2782
|
//#endregion
|
|
2719
2783
|
//#region src/client/hooks/dashboard/layoutUtils.ts
|
|
2720
|
-
var
|
|
2784
|
+
var yn = () => `row-${Date.now()}`, bn = (e, t) => {
|
|
2721
2785
|
let n = e.length;
|
|
2722
2786
|
if (n === 0) return [];
|
|
2723
2787
|
let { cols: r, minW: i } = t, a = i * n;
|
|
@@ -2733,7 +2797,7 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
|
|
|
2733
2797
|
portletId: e,
|
|
2734
2798
|
w: i + s + +(t < c)
|
|
2735
2799
|
}));
|
|
2736
|
-
},
|
|
2800
|
+
}, xn = (e, t) => {
|
|
2737
2801
|
if (e.length === 0) return [];
|
|
2738
2802
|
let { cols: n, minW: r } = t, i = e.map((e) => ({
|
|
2739
2803
|
...e,
|
|
@@ -2753,7 +2817,7 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
|
|
|
2753
2817
|
t.w -= a, o -= a;
|
|
2754
2818
|
}
|
|
2755
2819
|
return i;
|
|
2756
|
-
},
|
|
2820
|
+
}, Sn = (e, t) => {
|
|
2757
2821
|
if (e.length === 0) return [];
|
|
2758
2822
|
let n = [...e].sort((e, t) => e.y === t.y ? e.x - t.x : e.y - t.y), r = /* @__PURE__ */ new Map();
|
|
2759
2823
|
return n.forEach((e) => {
|
|
@@ -2764,17 +2828,17 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
|
|
|
2764
2828
|
return {
|
|
2765
2829
|
id: `row-${e}`,
|
|
2766
2830
|
h: r,
|
|
2767
|
-
columns:
|
|
2831
|
+
columns: bn(i, t)
|
|
2768
2832
|
};
|
|
2769
2833
|
});
|
|
2770
|
-
},
|
|
2834
|
+
}, Cn = (e, t, n) => {
|
|
2771
2835
|
let r = new Set(t.map((e) => e.id));
|
|
2772
2836
|
return e.map((e) => ({
|
|
2773
2837
|
...e,
|
|
2774
2838
|
h: Math.max(n.minH, e.h),
|
|
2775
|
-
columns:
|
|
2839
|
+
columns: xn(e.columns.filter((e) => r.has(e.portletId)), n)
|
|
2776
2840
|
})).filter((e) => e.columns.length > 0);
|
|
2777
|
-
},
|
|
2841
|
+
}, wn = (e, t) => {
|
|
2778
2842
|
let n = new Map(t.map((e) => [e.id, e])), r = 0, i = [];
|
|
2779
2843
|
e.forEach((e) => {
|
|
2780
2844
|
let t = 0;
|
|
@@ -2796,9 +2860,9 @@ var mn = () => `row-${Date.now()}`, hn = (e, t) => {
|
|
|
2796
2860
|
};
|
|
2797
2861
|
//#endregion
|
|
2798
2862
|
//#region src/client/hooks/dashboard/useRowLayoutEngine.ts
|
|
2799
|
-
function
|
|
2863
|
+
function Tn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef: i, onConfigChangeRef: a, onSaveRef: o, setDraftRows: s, setThumbnailDirty: c }) {
|
|
2800
2864
|
return {
|
|
2801
|
-
resolvedRows: q(() => e === "rows" ?
|
|
2865
|
+
resolvedRows: q(() => e === "rows" ? Cn(t ?? n.rows ?? Sn(n.portlets, r), n.portlets, r) : [], [
|
|
2802
2866
|
e,
|
|
2803
2867
|
t,
|
|
2804
2868
|
n.rows,
|
|
@@ -2807,7 +2871,7 @@ function bn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef
|
|
|
2807
2871
|
]),
|
|
2808
2872
|
updateRowLayout: G(async (e, t = !0, n) => {
|
|
2809
2873
|
if (!a.current) return;
|
|
2810
|
-
let l = n ?? i.current.portlets, u =
|
|
2874
|
+
let l = n ?? i.current.portlets, u = Cn(e, l, r), d = wn(u, l), f = {
|
|
2811
2875
|
...i.current,
|
|
2812
2876
|
layoutMode: "rows",
|
|
2813
2877
|
rows: u,
|
|
@@ -2830,7 +2894,7 @@ function bn({ layoutMode: e, draftRows: t, config: n, gridSettings: r, configRef
|
|
|
2830
2894
|
}
|
|
2831
2895
|
//#endregion
|
|
2832
2896
|
//#region src/client/hooks/dashboard/useDashboardController.ts
|
|
2833
|
-
function
|
|
2897
|
+
function En({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n, layoutMode: r, resolvedRows: i, gridSettings: a, thumbnailConfig: o, dashboardRef: s, storeApi: c, storeActions: u, configRef: d, onConfigChangeRef: f, onSaveRef: p, onSaveThumbnailRef: m, updateRowLayout: h, portletComponentRefs: g, onPortletRefresh: _ }) {
|
|
2834
2898
|
let v = J(r);
|
|
2835
2899
|
v.current = r;
|
|
2836
2900
|
let y = J(t);
|
|
@@ -2900,7 +2964,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
2900
2964
|
u.openFilterConfigModal(e);
|
|
2901
2965
|
}, [u]), k = G(async (t) => {
|
|
2902
2966
|
if (!f.current || t === v.current || !y.current || !e.includes(t)) return;
|
|
2903
|
-
let n = d.current, r =
|
|
2967
|
+
let n = d.current, r = Cn(n.rows && n.rows.length > 0 ? n.rows : Sn(n.portlets, a), n.portlets, a), i = wn(r, n.portlets);
|
|
2904
2968
|
await x({
|
|
2905
2969
|
...n,
|
|
2906
2970
|
layoutMode: t,
|
|
@@ -2937,11 +3001,11 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
2937
3001
|
let e = b.current, o = e.length > 0 ? e.map((e) => ({
|
|
2938
3002
|
...e,
|
|
2939
3003
|
columns: e.columns.map((e) => ({ ...e }))
|
|
2940
|
-
})) :
|
|
3004
|
+
})) : Cn(t.rows ?? Sn(t.portlets, a), n, a);
|
|
2941
3005
|
await h(r && i ? [...o, {
|
|
2942
|
-
id:
|
|
3006
|
+
id: yn(),
|
|
2943
3007
|
h: Math.max(a.minH, 3),
|
|
2944
|
-
columns:
|
|
3008
|
+
columns: bn([i], a)
|
|
2945
3009
|
}] : o, !0, n);
|
|
2946
3010
|
} else await x({
|
|
2947
3011
|
...t,
|
|
@@ -2965,7 +3029,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
2965
3029
|
columns: t.columns.filter((t) => t.portletId !== e)
|
|
2966
3030
|
})).filter((e) => e.columns.length > 0).map((e) => ({
|
|
2967
3031
|
...e,
|
|
2968
|
-
columns:
|
|
3032
|
+
columns: bn(e.columns.map((e) => e.portletId), a)
|
|
2969
3033
|
})), !0, n) : await x({
|
|
2970
3034
|
...t,
|
|
2971
3035
|
portlets: n
|
|
@@ -3020,9 +3084,9 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
3020
3084
|
...e,
|
|
3021
3085
|
columns: e.columns.map((e) => ({ ...e }))
|
|
3022
3086
|
})), {
|
|
3023
|
-
id:
|
|
3087
|
+
id: yn(),
|
|
3024
3088
|
h: Math.max(a.minH, 3),
|
|
3025
|
-
columns:
|
|
3089
|
+
columns: bn([r.id], a)
|
|
3026
3090
|
}], !0, o) : await x({
|
|
3027
3091
|
...t,
|
|
3028
3092
|
portlets: o
|
|
@@ -3043,10 +3107,10 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
3043
3107
|
if (!f.current) return;
|
|
3044
3108
|
let n = d.current, r = n.portlets.map((n) => {
|
|
3045
3109
|
if (n.id === e) {
|
|
3046
|
-
let e = n.dashboardFilterMapping || [], r = e
|
|
3110
|
+
let e = n.dashboardFilterMapping || [], r = St(e, t);
|
|
3047
3111
|
return {
|
|
3048
3112
|
...n,
|
|
3049
|
-
dashboardFilterMapping: r ? e.filter((e) => e !== t) : [...e, t]
|
|
3113
|
+
dashboardFilterMapping: r ? e.filter((e) => typeof e == "string" ? e !== t : e.filterId !== t) : [...e, t]
|
|
3050
3114
|
};
|
|
3051
3115
|
}
|
|
3052
3116
|
return n;
|
|
@@ -3064,7 +3128,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
3064
3128
|
if (!f.current) return;
|
|
3065
3129
|
let t = d.current, n = t.portlets.map((t) => {
|
|
3066
3130
|
let n = t.dashboardFilterMapping || [];
|
|
3067
|
-
return n
|
|
3131
|
+
return St(n, e) ? t : {
|
|
3068
3132
|
...t,
|
|
3069
3133
|
dashboardFilterMapping: [...n, e]
|
|
3070
3134
|
};
|
|
@@ -3109,7 +3173,7 @@ function xn({ allowedModes: e, canChangeLayoutMode: t, isResponsiveEditable: n,
|
|
|
3109
3173
|
}
|
|
3110
3174
|
//#endregion
|
|
3111
3175
|
//#region src/client/hooks/useDashboardHook.ts
|
|
3112
|
-
var
|
|
3176
|
+
var Dn = (e) => ({
|
|
3113
3177
|
isEditMode: e.isEditMode,
|
|
3114
3178
|
selectedFilterId: e.selectedFilterId,
|
|
3115
3179
|
isPortletModalOpen: e.isPortletModalOpen,
|
|
@@ -3123,7 +3187,7 @@ var Sn = (e) => ({
|
|
|
3123
3187
|
isDraggingPortlet: e.isDraggingPortlet,
|
|
3124
3188
|
lastKnownLayout: e.lastKnownLayout,
|
|
3125
3189
|
isInitialized: e.isInitialized
|
|
3126
|
-
}),
|
|
3190
|
+
}), On = (e) => ({
|
|
3127
3191
|
setEditMode: e.setEditMode,
|
|
3128
3192
|
toggleEditMode: e.toggleEditMode,
|
|
3129
3193
|
setSelectedFilterId: e.setSelectedFilterId,
|
|
@@ -3146,8 +3210,8 @@ var Sn = (e) => ({
|
|
|
3146
3210
|
clearDebugData: e.clearDebugData,
|
|
3147
3211
|
setThumbnailDirty: e.setThumbnailDirty
|
|
3148
3212
|
});
|
|
3149
|
-
function
|
|
3150
|
-
let { config: n, editable: r = !1, dashboardFilters: i, gridSettings: a, allowedModes: o, isResponsiveEditable: s = !0, onConfigChange: c, onSave: l, onSaveThumbnail: d, portletComponentRefs: f, onPortletRefresh: p, dashboardRef: m } = e, h =
|
|
3213
|
+
function kn(e) {
|
|
3214
|
+
let { config: n, editable: r = !1, dashboardFilters: i, gridSettings: a, allowedModes: o, isResponsiveEditable: s = !0, onConfigChange: c, onSave: l, onSaveThumbnail: d, portletComponentRefs: f, onPortletRefresh: p, dashboardRef: m } = e, h = Gt(t(Dn)), g = Gt(t(On)), _ = Kt(), { features: v } = u(), y = v.thumbnail, b = J(n);
|
|
3151
3215
|
b.current = n;
|
|
3152
3216
|
let x = J(c);
|
|
3153
3217
|
x.current = c;
|
|
@@ -3169,7 +3233,7 @@ function wn(e) {
|
|
|
3169
3233
|
s,
|
|
3170
3234
|
h.selectedFilterId,
|
|
3171
3235
|
w.length
|
|
3172
|
-
]), O = q(() => !h.selectedFilterId || !i ? null : i.find((e) => e.id === h.selectedFilterId) ?? null, [h.selectedFilterId, i]), { resolvedRows: ee, updateRowLayout: te } =
|
|
3236
|
+
]), O = q(() => !h.selectedFilterId || !i ? null : i.find((e) => e.id === h.selectedFilterId) ?? null, [h.selectedFilterId, i]), { resolvedRows: ee, updateRowLayout: te } = Tn({
|
|
3173
3237
|
layoutMode: T,
|
|
3174
3238
|
draftRows: h.draftRows,
|
|
3175
3239
|
config: n,
|
|
@@ -3179,7 +3243,7 @@ function wn(e) {
|
|
|
3179
3243
|
onSaveRef: S,
|
|
3180
3244
|
setDraftRows: g.setDraftRows,
|
|
3181
3245
|
setThumbnailDirty: g.setThumbnailDirty
|
|
3182
|
-
}), { hasLayoutActuallyChanged: k } =
|
|
3246
|
+
}), { hasLayoutActuallyChanged: k } = vn({ storeApi: _ }), { enterEditMode: A, exitEditMode: j, toggleEditMode: ne, selectFilter: re, openAddPortlet: ie, openEditPortlet: ae, openAddText: oe, openEditText: M, openFilterConfig: N, handleLayoutModeChange: se, savePortlet: P, deletePortlet: ce, confirmDelete: F, duplicatePortlet: le, refreshPortlet: I, toggleFilterForPortlet: L, selectAllForFilter: R, saveFilterConfig: z, handlePaletteChange: ue } = En({
|
|
3183
3247
|
allowedModes: w,
|
|
3184
3248
|
canChangeLayoutMode: D,
|
|
3185
3249
|
isResponsiveEditable: s,
|
|
@@ -3222,7 +3286,7 @@ function wn(e) {
|
|
|
3222
3286
|
handleLayoutModeChange: se,
|
|
3223
3287
|
savePortlet: P,
|
|
3224
3288
|
deletePortlet: ce,
|
|
3225
|
-
duplicatePortlet:
|
|
3289
|
+
duplicatePortlet: le,
|
|
3226
3290
|
refreshPortlet: I,
|
|
3227
3291
|
toggleFilterForPortlet: L,
|
|
3228
3292
|
selectAllForFilter: R,
|
|
@@ -3230,7 +3294,7 @@ function wn(e) {
|
|
|
3230
3294
|
handlePaletteChange: ue,
|
|
3231
3295
|
openDeleteConfirm: g.openDeleteConfirm,
|
|
3232
3296
|
closeDeleteConfirm: g.closeDeleteConfirm,
|
|
3233
|
-
confirmDelete:
|
|
3297
|
+
confirmDelete: F,
|
|
3234
3298
|
setDebugData: g.setDebugData,
|
|
3235
3299
|
clearDebugData: g.clearDebugData
|
|
3236
3300
|
}), [
|
|
@@ -3249,13 +3313,13 @@ function wn(e) {
|
|
|
3249
3313
|
se,
|
|
3250
3314
|
P,
|
|
3251
3315
|
ce,
|
|
3252
|
-
|
|
3316
|
+
le,
|
|
3253
3317
|
I,
|
|
3254
3318
|
L,
|
|
3255
3319
|
R,
|
|
3256
3320
|
z,
|
|
3257
3321
|
ue,
|
|
3258
|
-
|
|
3322
|
+
F
|
|
3259
3323
|
]);
|
|
3260
3324
|
return {
|
|
3261
3325
|
...h,
|
|
@@ -3270,17 +3334,17 @@ function wn(e) {
|
|
|
3270
3334
|
}
|
|
3271
3335
|
//#endregion
|
|
3272
3336
|
//#region src/client/components/dashboard/dashboardGridUtils.tsx
|
|
3273
|
-
var
|
|
3337
|
+
var An = {
|
|
3274
3338
|
cols: 12,
|
|
3275
3339
|
rowHeight: 80,
|
|
3276
3340
|
minW: 2,
|
|
3277
3341
|
minH: 1
|
|
3278
|
-
},
|
|
3279
|
-
cols: e.grid?.cols ??
|
|
3280
|
-
rowHeight: e.grid?.rowHeight ??
|
|
3281
|
-
minW: e.grid?.minW ??
|
|
3282
|
-
minH: e.grid?.minH ??
|
|
3283
|
-
}),
|
|
3342
|
+
}, jn = () => `row-${Date.now()}`, Mn = (e) => ({
|
|
3343
|
+
cols: e.grid?.cols ?? An.cols,
|
|
3344
|
+
rowHeight: e.grid?.rowHeight ?? An.rowHeight,
|
|
3345
|
+
minW: e.grid?.minW ?? An.minW,
|
|
3346
|
+
minH: e.grid?.minH ?? An.minH
|
|
3347
|
+
}), Nn = (e, t) => {
|
|
3284
3348
|
let n = e.length;
|
|
3285
3349
|
if (n === 0) return [];
|
|
3286
3350
|
let { cols: r, minW: i } = t, a = i * n;
|
|
@@ -3296,7 +3360,7 @@ var Tn = {
|
|
|
3296
3360
|
portletId: e,
|
|
3297
3361
|
w: i + s + +(t < c)
|
|
3298
3362
|
}));
|
|
3299
|
-
},
|
|
3363
|
+
}, Pn = (e, t) => {
|
|
3300
3364
|
if (e.length === 0) return [];
|
|
3301
3365
|
let { cols: n, minW: r } = t, i = e.map((e) => ({
|
|
3302
3366
|
...e,
|
|
@@ -3317,7 +3381,7 @@ var Tn = {
|
|
|
3317
3381
|
}
|
|
3318
3382
|
return i;
|
|
3319
3383
|
};
|
|
3320
|
-
function
|
|
3384
|
+
function Fn(e) {
|
|
3321
3385
|
if (!e) return null;
|
|
3322
3386
|
let t = e.parentElement;
|
|
3323
3387
|
for (; t;) {
|
|
@@ -3328,7 +3392,7 @@ function An(e) {
|
|
|
3328
3392
|
}
|
|
3329
3393
|
return null;
|
|
3330
3394
|
}
|
|
3331
|
-
function
|
|
3395
|
+
function In({ className: e, style: t }) {
|
|
3332
3396
|
return /* @__PURE__ */ Q("svg", {
|
|
3333
3397
|
className: e,
|
|
3334
3398
|
style: t,
|
|
@@ -3354,22 +3418,22 @@ function jn({ className: e, style: t }) {
|
|
|
3354
3418
|
}
|
|
3355
3419
|
//#endregion
|
|
3356
3420
|
//#region src/client/components/dashboard/DashboardContext.tsx
|
|
3357
|
-
var
|
|
3358
|
-
function
|
|
3359
|
-
let e = he(
|
|
3421
|
+
var Ln = fe(null);
|
|
3422
|
+
function Rn() {
|
|
3423
|
+
let e = he(Ln);
|
|
3360
3424
|
if (!e) throw Error("useDashboardContext must be used within a DashboardProvider");
|
|
3361
3425
|
return e;
|
|
3362
3426
|
}
|
|
3363
3427
|
//#endregion
|
|
3364
3428
|
//#region src/client/components/dashboard/DashboardCoordinator.tsx
|
|
3365
|
-
var
|
|
3366
|
-
function
|
|
3367
|
-
let { features: h } = u(), { containerRef: g, containerWidth: _, displayMode: v, scaleFactor: y, isEditable: b, designWidth: x } = D(), S = f && f.length > 0 ? f : ["rows", "grid"], C = q(() =>
|
|
3429
|
+
var zn = s("refresh"), Bn = s("edit"), Vn = s("delete"), Hn = s("copy"), Un = s("filter");
|
|
3430
|
+
function Wn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onPortletRefresh: a, onSave: o, onSaveThumbnail: s, colorPalette: c, schema: l, onDashboardFiltersChange: d, dashboardModes: f, hideToolbar: p, children: m }) {
|
|
3431
|
+
let { features: h } = u(), { containerRef: g, containerWidth: _, displayMode: v, scaleFactor: y, isEditable: b, designWidth: x } = D(), S = f && f.length > 0 ? f : ["rows", "grid"], C = q(() => Mn(e), [e]), [w, T] = Y(null), E = J(null), O = J(null), ee = J(null), te = J(null), k = G((e) => {
|
|
3368
3432
|
if (E.current = e, g(e), e) {
|
|
3369
|
-
let t =
|
|
3433
|
+
let t = Fn(e);
|
|
3370
3434
|
T(t), O.current = t;
|
|
3371
3435
|
}
|
|
3372
|
-
}, [g]), A = v === "desktop" ? _ : x, j = J({}), ne = J({}), re = J(null), ie = J(null), ae = J(null), { isEditMode: oe, selectedFilterId: N, isPortletModalOpen: se, editingPortlet: P, isTextModalOpen: ce, editingTextPortlet:
|
|
3436
|
+
}, [g]), A = v === "desktop" ? _ : x, j = J({}), ne = J({}), re = J(null), ie = J(null), ae = J(null), { isEditMode: oe, selectedFilterId: N, isPortletModalOpen: se, editingPortlet: P, isTextModalOpen: ce, editingTextPortlet: F, isFilterConfigModalOpen: le, filterConfigPortlet: I, deleteConfirmPortletId: L, draftRows: R, isDraggingPortlet: z, isInitialized: ue, canEdit: B, canChangeLayoutMode: V, selectedFilter: de, resolvedRows: H, layoutMode: fe, actions: U } = kn({
|
|
3373
3437
|
config: e,
|
|
3374
3438
|
editable: t,
|
|
3375
3439
|
dashboardFilters: n,
|
|
@@ -3383,43 +3447,43 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3383
3447
|
portletComponentRefs: ne,
|
|
3384
3448
|
onPortletRefresh: a,
|
|
3385
3449
|
dashboardRef: te
|
|
3386
|
-
}),
|
|
3387
|
-
|
|
3450
|
+
}), W = J(U);
|
|
3451
|
+
W.current = U;
|
|
3388
3452
|
let pe = J(B);
|
|
3389
3453
|
pe.current = B, K(() => {
|
|
3390
3454
|
re.current = R;
|
|
3391
3455
|
}, [R]), K(() => {
|
|
3392
|
-
(!oe || !b) && N &&
|
|
3456
|
+
(!oe || !b) && N && U.exitFilterSelectionMode();
|
|
3393
3457
|
}, [
|
|
3394
3458
|
oe,
|
|
3395
3459
|
b,
|
|
3396
3460
|
N,
|
|
3397
|
-
|
|
3461
|
+
U
|
|
3398
3462
|
]), K(() => {
|
|
3399
|
-
!b && oe &&
|
|
3463
|
+
!b && oe && U.exitEditMode();
|
|
3400
3464
|
}, [
|
|
3401
3465
|
b,
|
|
3402
3466
|
oe,
|
|
3403
|
-
|
|
3467
|
+
U
|
|
3404
3468
|
]);
|
|
3405
|
-
let me =
|
|
3469
|
+
let me = on(O, {
|
|
3406
3470
|
threshold: 20,
|
|
3407
3471
|
debounceMs: 150,
|
|
3408
3472
|
container: w
|
|
3409
|
-
}), he =
|
|
3473
|
+
}), he = sn(ee, {
|
|
3410
3474
|
threshold: 80,
|
|
3411
3475
|
debounceMs: 100,
|
|
3412
3476
|
containerRef: O,
|
|
3413
3477
|
container: w
|
|
3414
3478
|
});
|
|
3415
|
-
|
|
3416
|
-
enabled:
|
|
3479
|
+
cn(O, {
|
|
3480
|
+
enabled: fe === "rows" && z,
|
|
3417
3481
|
edgeThreshold: 80,
|
|
3418
3482
|
maxScrollSpeed: 15
|
|
3419
3483
|
}), K(() => {
|
|
3420
3484
|
if (ue) return;
|
|
3421
3485
|
let t = setTimeout(() => {
|
|
3422
|
-
|
|
3486
|
+
U.setIsInitialized(!0);
|
|
3423
3487
|
let t = e.portlets.map((e) => ({
|
|
3424
3488
|
i: e.id,
|
|
3425
3489
|
x: e.x,
|
|
@@ -3427,25 +3491,37 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3427
3491
|
w: e.w,
|
|
3428
3492
|
h: e.h
|
|
3429
3493
|
}));
|
|
3430
|
-
|
|
3494
|
+
U.setLastKnownLayout(t);
|
|
3431
3495
|
}, 200);
|
|
3432
3496
|
return () => clearTimeout(t);
|
|
3433
3497
|
}, [
|
|
3434
3498
|
ue,
|
|
3435
3499
|
e.portlets,
|
|
3436
|
-
|
|
3437
|
-
])
|
|
3500
|
+
U
|
|
3501
|
+
]);
|
|
3502
|
+
let ge = se || ce || le || !!L;
|
|
3503
|
+
K(() => {
|
|
3438
3504
|
let e = (e) => {
|
|
3439
|
-
|
|
3505
|
+
if (!(!N || ge)) {
|
|
3506
|
+
if (e.key === "Escape") U.exitFilterSelectionMode();
|
|
3507
|
+
else if (e.key === "Enter") {
|
|
3508
|
+
if (e.target?.closest("button, a, input, select, textarea, [contenteditable=\"true\"]")) return;
|
|
3509
|
+
U.exitFilterSelectionMode();
|
|
3510
|
+
}
|
|
3511
|
+
}
|
|
3440
3512
|
};
|
|
3441
3513
|
return window.addEventListener("keydown", e), () => {
|
|
3442
3514
|
window.removeEventListener("keydown", e);
|
|
3443
3515
|
};
|
|
3444
|
-
}, [
|
|
3445
|
-
|
|
3516
|
+
}, [
|
|
3517
|
+
N,
|
|
3518
|
+
ge,
|
|
3519
|
+
U
|
|
3520
|
+
]);
|
|
3521
|
+
let X = G((e) => {}, []), Q = G(async (n, r, a, s, c, l) => {
|
|
3446
3522
|
if (!t || !oe || !o || !ue) return;
|
|
3447
3523
|
let u = [...n];
|
|
3448
|
-
if (!
|
|
3524
|
+
if (!U.hasLayoutActuallyChanged(u)) return;
|
|
3449
3525
|
let d = e.portlets.map((e) => {
|
|
3450
3526
|
let t = u.find((t) => t.i === e.id);
|
|
3451
3527
|
return t ? {
|
|
@@ -3463,7 +3539,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3463
3539
|
lg: u
|
|
3464
3540
|
}
|
|
3465
3541
|
};
|
|
3466
|
-
|
|
3542
|
+
U.setLastKnownLayout(u), i?.(f);
|
|
3467
3543
|
try {
|
|
3468
3544
|
await o(f);
|
|
3469
3545
|
} catch (e) {
|
|
@@ -3476,11 +3552,11 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3476
3552
|
i,
|
|
3477
3553
|
o,
|
|
3478
3554
|
ue,
|
|
3479
|
-
|
|
3480
|
-
]),
|
|
3555
|
+
U
|
|
3556
|
+
]), _e = G(async (n, r, a, s, c, l) => {
|
|
3481
3557
|
if (!t || !oe || !i || !ue) return;
|
|
3482
3558
|
let u = [...n];
|
|
3483
|
-
if (!
|
|
3559
|
+
if (!U.hasLayoutActuallyChanged(u)) return;
|
|
3484
3560
|
let d = e.portlets.map((e) => {
|
|
3485
3561
|
let t = u.find((t) => t.i === e.id);
|
|
3486
3562
|
return t ? {
|
|
@@ -3498,7 +3574,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3498
3574
|
lg: u
|
|
3499
3575
|
}
|
|
3500
3576
|
};
|
|
3501
|
-
if (
|
|
3577
|
+
if (U.setLastKnownLayout(u), i(f), o) try {
|
|
3502
3578
|
await o(f);
|
|
3503
3579
|
} catch (e) {
|
|
3504
3580
|
console.error("Auto-save failed after resize:", e);
|
|
@@ -3510,8 +3586,8 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3510
3586
|
i,
|
|
3511
3587
|
o,
|
|
3512
3588
|
ue,
|
|
3513
|
-
|
|
3514
|
-
]),
|
|
3589
|
+
U
|
|
3590
|
+
]), be = G((e, t) => {
|
|
3515
3591
|
if (!B) return;
|
|
3516
3592
|
t.preventDefault();
|
|
3517
3593
|
let n = t.clientY, r = H.map((e) => ({
|
|
@@ -3524,19 +3600,19 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3524
3600
|
...t,
|
|
3525
3601
|
h: Math.max(C.minH, t.h + a)
|
|
3526
3602
|
} : t);
|
|
3527
|
-
ie.current = o,
|
|
3603
|
+
ie.current = o, U.setDraftRows(o);
|
|
3528
3604
|
}, a = () => {
|
|
3529
3605
|
document.removeEventListener("mousemove", i), document.removeEventListener("mouseup", a);
|
|
3530
3606
|
let e = ie.current ?? r;
|
|
3531
|
-
ie.current = null,
|
|
3607
|
+
ie.current = null, U.updateRowLayout(e);
|
|
3532
3608
|
};
|
|
3533
3609
|
document.addEventListener("mousemove", i), document.addEventListener("mouseup", a);
|
|
3534
3610
|
}, [
|
|
3535
3611
|
B,
|
|
3536
3612
|
C,
|
|
3537
3613
|
H,
|
|
3538
|
-
|
|
3539
|
-
]),
|
|
3614
|
+
U
|
|
3615
|
+
]), xe = G((e, t, n) => {
|
|
3540
3616
|
if (!B) return;
|
|
3541
3617
|
n.preventDefault();
|
|
3542
3618
|
let r = n.clientX, i = H.map((e) => ({
|
|
@@ -3549,7 +3625,7 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3549
3625
|
let l = (n) => {
|
|
3550
3626
|
let a = n.clientX - r, l = Math.round(a / c);
|
|
3551
3627
|
if (l === 0) {
|
|
3552
|
-
ie.current = i,
|
|
3628
|
+
ie.current = i, U.setDraftRows(i);
|
|
3553
3629
|
return;
|
|
3554
3630
|
}
|
|
3555
3631
|
let u = o.w + l, d = s.w - l;
|
|
@@ -3573,14 +3649,14 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3573
3649
|
} : e);
|
|
3574
3650
|
return {
|
|
3575
3651
|
...n,
|
|
3576
|
-
columns:
|
|
3652
|
+
columns: Pn(i, C)
|
|
3577
3653
|
};
|
|
3578
3654
|
});
|
|
3579
|
-
ie.current = f,
|
|
3655
|
+
ie.current = f, U.setDraftRows(f);
|
|
3580
3656
|
}, u = () => {
|
|
3581
3657
|
document.removeEventListener("mousemove", l), document.removeEventListener("mouseup", u);
|
|
3582
3658
|
let e = ie.current ?? i;
|
|
3583
|
-
ie.current = null,
|
|
3659
|
+
ie.current = null, U.updateRowLayout(e);
|
|
3584
3660
|
};
|
|
3585
3661
|
document.addEventListener("mousemove", l), document.addEventListener("mouseup", u);
|
|
3586
3662
|
}, [
|
|
@@ -3588,16 +3664,16 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3588
3664
|
C,
|
|
3589
3665
|
A,
|
|
3590
3666
|
H,
|
|
3591
|
-
|
|
3592
|
-
]),
|
|
3667
|
+
U
|
|
3668
|
+
]), Se = G((e, t, n, r) => {
|
|
3593
3669
|
pe.current && (ae.current = {
|
|
3594
3670
|
rowIndex: e,
|
|
3595
3671
|
colIndex: t,
|
|
3596
3672
|
portletId: n
|
|
3597
|
-
},
|
|
3598
|
-
}, []),
|
|
3599
|
-
ae.current = null,
|
|
3600
|
-
}, []),
|
|
3673
|
+
}, W.current.setIsDraggingPortlet(!0), r.dataTransfer.effectAllowed = "move", r.dataTransfer.setData("text/plain", n));
|
|
3674
|
+
}, []), Ce = G(() => {
|
|
3675
|
+
ae.current = null, W.current.setIsDraggingPortlet(!1);
|
|
3676
|
+
}, []), $ = G((e, t) => {
|
|
3601
3677
|
let n = ae.current;
|
|
3602
3678
|
if (!n) return;
|
|
3603
3679
|
let r = H.map((e) => ({
|
|
@@ -3614,16 +3690,16 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3614
3690
|
let u = t ?? l.columns.length;
|
|
3615
3691
|
!s && i === c && t !== null && t > n.colIndex && --u, l.columns.splice(u, 0, o), (i !== c || s) && (s || (r[i] = {
|
|
3616
3692
|
...r[i],
|
|
3617
|
-
columns:
|
|
3693
|
+
columns: Nn(r[i].columns.map((e) => e.portletId), C)
|
|
3618
3694
|
}), r[c] = {
|
|
3619
3695
|
...r[c],
|
|
3620
|
-
columns:
|
|
3621
|
-
}),
|
|
3696
|
+
columns: Nn(r[c].columns.map((e) => e.portletId), C)
|
|
3697
|
+
}), U.updateRowLayout(r);
|
|
3622
3698
|
}, [
|
|
3623
3699
|
C,
|
|
3624
3700
|
H,
|
|
3625
|
-
|
|
3626
|
-
]),
|
|
3701
|
+
U
|
|
3702
|
+
]), we = G((e) => {
|
|
3627
3703
|
let t = ae.current;
|
|
3628
3704
|
if (!t) return;
|
|
3629
3705
|
let n = H.map((e) => ({
|
|
@@ -3632,22 +3708,22 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3632
3708
|
})), r = n[t.rowIndex];
|
|
3633
3709
|
if (!r) return;
|
|
3634
3710
|
let [i] = r.columns.splice(t.colIndex, 1);
|
|
3635
|
-
r.columns.length === 0 ? n.splice(t.rowIndex, 1) : r.columns =
|
|
3711
|
+
r.columns.length === 0 ? n.splice(t.rowIndex, 1) : r.columns = Nn(r.columns.map((e) => e.portletId), C);
|
|
3636
3712
|
let a = {
|
|
3637
|
-
id:
|
|
3713
|
+
id: jn(),
|
|
3638
3714
|
h: Math.max(C.minH, 3),
|
|
3639
|
-
columns:
|
|
3715
|
+
columns: Nn([i.portletId], C)
|
|
3640
3716
|
};
|
|
3641
|
-
n.splice(e, 0, a),
|
|
3717
|
+
n.splice(e, 0, a), U.updateRowLayout(n);
|
|
3642
3718
|
}, [
|
|
3643
3719
|
C,
|
|
3644
3720
|
H,
|
|
3645
|
-
|
|
3646
|
-
]),
|
|
3647
|
-
|
|
3648
|
-
}, []),
|
|
3649
|
-
let t = await
|
|
3650
|
-
|
|
3721
|
+
U
|
|
3722
|
+
]), Te = G((e, t) => {
|
|
3723
|
+
W.current.refreshPortlet(e, t);
|
|
3724
|
+
}, []), Ee = G(async (e) => {
|
|
3725
|
+
let t = await U.savePortlet(e);
|
|
3726
|
+
U.closePortletModal(), t && setTimeout(() => {
|
|
3651
3727
|
let e = () => {
|
|
3652
3728
|
let e = j.current[t];
|
|
3653
3729
|
return e ||= document.querySelector(`[data-portlet-id="${t}"]`), e ? (e.scrollIntoView({
|
|
@@ -3662,10 +3738,10 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3662
3738
|
}, 300);
|
|
3663
3739
|
}, 200);
|
|
3664
3740
|
}, 200);
|
|
3665
|
-
}, [
|
|
3666
|
-
await
|
|
3667
|
-
}, []),
|
|
3668
|
-
let t = await
|
|
3741
|
+
}, [U]), De = G(async (e) => {
|
|
3742
|
+
await W.current.deletePortlet(e);
|
|
3743
|
+
}, []), Oe = G(async (e) => {
|
|
3744
|
+
let t = await W.current.duplicatePortlet(e);
|
|
3669
3745
|
t && setTimeout(() => {
|
|
3670
3746
|
let e = () => {
|
|
3671
3747
|
let e = j.current[t];
|
|
@@ -3681,75 +3757,75 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3681
3757
|
}, 300);
|
|
3682
3758
|
}, 200);
|
|
3683
3759
|
}, 200);
|
|
3684
|
-
}, []),
|
|
3685
|
-
|
|
3686
|
-
}, [
|
|
3687
|
-
|
|
3688
|
-
}, [
|
|
3689
|
-
let t =
|
|
3690
|
-
t.analysisConfig.charts[t.analysisConfig.analysisType]?.chartType === "markdown" ?
|
|
3691
|
-
}, []),
|
|
3692
|
-
await
|
|
3693
|
-
}, [
|
|
3694
|
-
|
|
3695
|
-
}, []),
|
|
3696
|
-
await
|
|
3697
|
-
}, [
|
|
3760
|
+
}, []), ke = G(() => {
|
|
3761
|
+
U.openAddPortlet();
|
|
3762
|
+
}, [U]), Ae = G(() => {
|
|
3763
|
+
U.openAddText();
|
|
3764
|
+
}, [U]), je = G((e) => {
|
|
3765
|
+
let t = yt(e);
|
|
3766
|
+
t.analysisConfig.charts[t.analysisConfig.analysisType]?.chartType === "markdown" ? W.current.openEditText(e) : W.current.openEditPortlet(e);
|
|
3767
|
+
}, []), Me = G(async (e) => {
|
|
3768
|
+
await U.handlePaletteChange(e);
|
|
3769
|
+
}, [U]), Ne = G((e) => {
|
|
3770
|
+
W.current.openFilterConfig(e);
|
|
3771
|
+
}, []), Pe = G(async (e) => {
|
|
3772
|
+
await U.saveFilterConfig(e);
|
|
3773
|
+
}, [U]), Fe = G((e, t) => {
|
|
3698
3774
|
j.current[e] = t;
|
|
3699
|
-
}, []),
|
|
3775
|
+
}, []), Ie = G((e, t) => {
|
|
3700
3776
|
ne.current[e] = t;
|
|
3701
|
-
}, []),
|
|
3702
|
-
RefreshIcon:
|
|
3703
|
-
EditIcon:
|
|
3704
|
-
DeleteIcon:
|
|
3705
|
-
CopyIcon:
|
|
3706
|
-
FilterIcon:
|
|
3707
|
-
}), []),
|
|
3708
|
-
await
|
|
3709
|
-
}, []),
|
|
3710
|
-
|
|
3711
|
-
}, [
|
|
3712
|
-
await
|
|
3713
|
-
}, [
|
|
3714
|
-
onToggleFilter:
|
|
3715
|
-
onRefresh:
|
|
3716
|
-
onDuplicate:
|
|
3717
|
-
onEdit:
|
|
3718
|
-
onDelete:
|
|
3719
|
-
onOpenFilterConfig:
|
|
3777
|
+
}, []), Le = q(() => ({
|
|
3778
|
+
RefreshIcon: zn,
|
|
3779
|
+
EditIcon: Bn,
|
|
3780
|
+
DeleteIcon: Vn,
|
|
3781
|
+
CopyIcon: Hn,
|
|
3782
|
+
FilterIcon: Un
|
|
3783
|
+
}), []), Re = G(async (e, t) => {
|
|
3784
|
+
await W.current.toggleFilterForPortlet(e, t);
|
|
3785
|
+
}, []), ze = G((e) => {
|
|
3786
|
+
U.selectFilter(e);
|
|
3787
|
+
}, [U]), Be = G(async (e) => {
|
|
3788
|
+
await U.selectAllForFilter(e);
|
|
3789
|
+
}, [U]), Ve = q(() => ({
|
|
3790
|
+
onToggleFilter: Re,
|
|
3791
|
+
onRefresh: Te,
|
|
3792
|
+
onDuplicate: Oe,
|
|
3793
|
+
onEdit: je,
|
|
3794
|
+
onDelete: De,
|
|
3795
|
+
onOpenFilterConfig: Ne
|
|
3720
3796
|
}), [
|
|
3721
|
-
|
|
3722
|
-
|
|
3797
|
+
Re,
|
|
3798
|
+
Te,
|
|
3799
|
+
Oe,
|
|
3800
|
+
je,
|
|
3723
3801
|
De,
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
Me
|
|
3727
|
-
]), Ve = G((i, a, o) => /* @__PURE__ */ Z(un, {
|
|
3802
|
+
Ne
|
|
3803
|
+
]), He = G((i, a, o) => /* @__PURE__ */ Z(hn, {
|
|
3728
3804
|
portlet: i,
|
|
3729
3805
|
editable: t,
|
|
3730
|
-
layoutMode:
|
|
3806
|
+
layoutMode: fe,
|
|
3731
3807
|
dashboardFilters: n,
|
|
3732
3808
|
configEagerLoad: e.eagerLoad,
|
|
3733
3809
|
loadingComponent: r,
|
|
3734
3810
|
colorPalette: c,
|
|
3735
3811
|
containerProps: a,
|
|
3736
3812
|
headerProps: o,
|
|
3737
|
-
callbacks:
|
|
3738
|
-
setPortletRef:
|
|
3739
|
-
setPortletComponentRef:
|
|
3740
|
-
icons:
|
|
3813
|
+
callbacks: Ve,
|
|
3814
|
+
setPortletRef: Fe,
|
|
3815
|
+
setPortletComponentRef: Ie,
|
|
3816
|
+
icons: Le
|
|
3741
3817
|
}), [
|
|
3742
3818
|
t,
|
|
3743
|
-
|
|
3819
|
+
fe,
|
|
3744
3820
|
n,
|
|
3745
3821
|
e.eagerLoad,
|
|
3746
3822
|
r,
|
|
3747
3823
|
c,
|
|
3748
|
-
|
|
3749
|
-
Pe,
|
|
3824
|
+
Ve,
|
|
3750
3825
|
Fe,
|
|
3751
|
-
Ie
|
|
3752
|
-
|
|
3826
|
+
Ie,
|
|
3827
|
+
Le
|
|
3828
|
+
]), Ue = e.portlets.map((e) => ({
|
|
3753
3829
|
i: e.id,
|
|
3754
3830
|
x: e.x,
|
|
3755
3831
|
y: e.y,
|
|
@@ -3769,12 +3845,12 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3769
3845
|
"ne",
|
|
3770
3846
|
"nw"
|
|
3771
3847
|
] } : {}
|
|
3772
|
-
})),
|
|
3848
|
+
})), We = G(() => /* @__PURE__ */ Z(ve, {
|
|
3773
3849
|
className: "layout",
|
|
3774
|
-
layout:
|
|
3775
|
-
onLayoutChange:
|
|
3776
|
-
onDragStop:
|
|
3777
|
-
onResizeStop:
|
|
3850
|
+
layout: Ue,
|
|
3851
|
+
onLayoutChange: X,
|
|
3852
|
+
onDragStop: Q,
|
|
3853
|
+
onResizeStop: _e,
|
|
3778
3854
|
width: A,
|
|
3779
3855
|
gridConfig: {
|
|
3780
3856
|
cols: C.cols,
|
|
@@ -3805,31 +3881,31 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3805
3881
|
})
|
|
3806
3882
|
},
|
|
3807
3883
|
compactor: ye,
|
|
3808
|
-
children: e.portlets.filter((e) => e && e.id).map((e) => /* @__PURE__ */ Z("div", { children:
|
|
3884
|
+
children: e.portlets.filter((e) => e && e.id).map((e) => /* @__PURE__ */ Z("div", { children: He(e) }, e.id))
|
|
3809
3885
|
}), [
|
|
3810
|
-
|
|
3811
|
-
ge,
|
|
3886
|
+
Ue,
|
|
3812
3887
|
X,
|
|
3813
3888
|
Q,
|
|
3889
|
+
_e,
|
|
3814
3890
|
A,
|
|
3815
3891
|
C,
|
|
3816
3892
|
B,
|
|
3817
3893
|
e.portlets,
|
|
3818
|
-
|
|
3819
|
-
]),
|
|
3894
|
+
He
|
|
3895
|
+
]), Ge = G(() => /* @__PURE__ */ Z(_n, {
|
|
3820
3896
|
rows: H,
|
|
3821
3897
|
portlets: e.portlets,
|
|
3822
3898
|
gridSettings: C,
|
|
3823
3899
|
gridWidth: A,
|
|
3824
3900
|
canEdit: B,
|
|
3825
3901
|
isDragging: z,
|
|
3826
|
-
onRowResize:
|
|
3827
|
-
onColumnResize:
|
|
3828
|
-
onPortletDragStart:
|
|
3829
|
-
onPortletDragEnd:
|
|
3830
|
-
onRowDrop:
|
|
3831
|
-
onNewRowDrop:
|
|
3832
|
-
renderPortlet:
|
|
3902
|
+
onRowResize: be,
|
|
3903
|
+
onColumnResize: xe,
|
|
3904
|
+
onPortletDragStart: Se,
|
|
3905
|
+
onPortletDragEnd: Ce,
|
|
3906
|
+
onRowDrop: $,
|
|
3907
|
+
onNewRowDrop: we,
|
|
3908
|
+
renderPortlet: He
|
|
3833
3909
|
}), [
|
|
3834
3910
|
H,
|
|
3835
3911
|
e.portlets,
|
|
@@ -3837,14 +3913,14 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3837
3913
|
A,
|
|
3838
3914
|
B,
|
|
3839
3915
|
z,
|
|
3840
|
-
_e,
|
|
3841
3916
|
be,
|
|
3842
3917
|
xe,
|
|
3843
3918
|
Se,
|
|
3844
3919
|
Ce,
|
|
3845
3920
|
$,
|
|
3846
|
-
|
|
3847
|
-
|
|
3921
|
+
we,
|
|
3922
|
+
He
|
|
3923
|
+
]), Ke = {
|
|
3848
3924
|
config: e,
|
|
3849
3925
|
editable: t,
|
|
3850
3926
|
dashboardFilters: n,
|
|
@@ -3860,8 +3936,8 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3860
3936
|
isPortletModalOpen: se,
|
|
3861
3937
|
editingPortlet: P,
|
|
3862
3938
|
isTextModalOpen: ce,
|
|
3863
|
-
editingTextPortlet:
|
|
3864
|
-
isFilterConfigModalOpen:
|
|
3939
|
+
editingTextPortlet: F,
|
|
3940
|
+
isFilterConfigModalOpen: le,
|
|
3865
3941
|
filterConfigPortlet: I,
|
|
3866
3942
|
deleteConfirmPortletId: L,
|
|
3867
3943
|
draftRows: R,
|
|
@@ -3871,9 +3947,9 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3871
3947
|
canChangeLayoutMode: V,
|
|
3872
3948
|
selectedFilter: de,
|
|
3873
3949
|
resolvedRows: H,
|
|
3874
|
-
layoutMode:
|
|
3950
|
+
layoutMode: fe,
|
|
3875
3951
|
allowedModes: S,
|
|
3876
|
-
actions:
|
|
3952
|
+
actions: U,
|
|
3877
3953
|
displayMode: v,
|
|
3878
3954
|
scaleFactor: y,
|
|
3879
3955
|
designWidth: x,
|
|
@@ -3886,33 +3962,33 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3886
3962
|
editBarRef: ee,
|
|
3887
3963
|
gridContentRef: te,
|
|
3888
3964
|
gridSettings: C,
|
|
3889
|
-
baseLayout:
|
|
3890
|
-
renderPortletCard:
|
|
3891
|
-
renderActiveLayout: G(() =>
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3965
|
+
baseLayout: Ue,
|
|
3966
|
+
renderPortletCard: He,
|
|
3967
|
+
renderActiveLayout: G(() => fe === "rows" ? Ge() : We(), [
|
|
3968
|
+
fe,
|
|
3969
|
+
Ge,
|
|
3970
|
+
We
|
|
3895
3971
|
]),
|
|
3896
|
-
handleAddPortlet:
|
|
3897
|
-
handleAddText:
|
|
3898
|
-
handlePaletteChange:
|
|
3899
|
-
handleFilterSelect:
|
|
3900
|
-
handleSelectAllForFilter:
|
|
3901
|
-
handleSaveFilterConfig:
|
|
3902
|
-
handlePortletSave:
|
|
3903
|
-
handlePortletRefresh:
|
|
3904
|
-
handleLayoutChange:
|
|
3905
|
-
handleDragStop:
|
|
3906
|
-
handleResizeStop:
|
|
3907
|
-
startRowResize:
|
|
3908
|
-
startColumnResize:
|
|
3909
|
-
handlePortletDragStart:
|
|
3910
|
-
handlePortletDragEnd:
|
|
3911
|
-
handleRowDrop:
|
|
3912
|
-
handleNewRowDrop:
|
|
3972
|
+
handleAddPortlet: ke,
|
|
3973
|
+
handleAddText: Ae,
|
|
3974
|
+
handlePaletteChange: Me,
|
|
3975
|
+
handleFilterSelect: ze,
|
|
3976
|
+
handleSelectAllForFilter: Be,
|
|
3977
|
+
handleSaveFilterConfig: Pe,
|
|
3978
|
+
handlePortletSave: Ee,
|
|
3979
|
+
handlePortletRefresh: Te,
|
|
3980
|
+
handleLayoutChange: X,
|
|
3981
|
+
handleDragStop: Q,
|
|
3982
|
+
handleResizeStop: _e,
|
|
3983
|
+
startRowResize: be,
|
|
3984
|
+
startColumnResize: xe,
|
|
3985
|
+
handlePortletDragStart: Se,
|
|
3986
|
+
handlePortletDragEnd: Ce,
|
|
3987
|
+
handleRowDrop: $,
|
|
3988
|
+
handleNewRowDrop: we
|
|
3913
3989
|
};
|
|
3914
|
-
return /* @__PURE__ */ Z(
|
|
3915
|
-
value:
|
|
3990
|
+
return /* @__PURE__ */ Z(Ln.Provider, {
|
|
3991
|
+
value: Ke,
|
|
3916
3992
|
children: /* @__PURE__ */ Z(M, {
|
|
3917
3993
|
value: w,
|
|
3918
3994
|
children: /* @__PURE__ */ Z("div", {
|
|
@@ -3929,15 +4005,15 @@ function zn({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
3929
4005
|
}
|
|
3930
4006
|
//#endregion
|
|
3931
4007
|
//#region src/client/components/dashboard/DashboardProvider.tsx
|
|
3932
|
-
function
|
|
3933
|
-
return /* @__PURE__ */ Z(
|
|
4008
|
+
function Gn({ children: e, ...t }) {
|
|
4009
|
+
return /* @__PURE__ */ Z(Wt, { children: /* @__PURE__ */ Z(Wn, {
|
|
3934
4010
|
...t,
|
|
3935
4011
|
children: e
|
|
3936
4012
|
}) });
|
|
3937
4013
|
}
|
|
3938
4014
|
//#endregion
|
|
3939
4015
|
//#region src/client/utils/colorPalettes.ts
|
|
3940
|
-
var
|
|
4016
|
+
var Kn = [
|
|
3941
4017
|
{
|
|
3942
4018
|
name: "default",
|
|
3943
4019
|
label: "Default",
|
|
@@ -4620,14 +4696,14 @@ var Vn = [
|
|
|
4620
4696
|
]
|
|
4621
4697
|
}
|
|
4622
4698
|
];
|
|
4623
|
-
function
|
|
4624
|
-
return e &&
|
|
4699
|
+
function qn(e) {
|
|
4700
|
+
return e && Kn.find((t) => t.name === e) || Kn[0];
|
|
4625
4701
|
}
|
|
4626
4702
|
//#endregion
|
|
4627
4703
|
//#region src/client/components/ColorPaletteSelector.tsx
|
|
4628
|
-
var
|
|
4629
|
-
function
|
|
4630
|
-
let [r, i] = Y(!1), a = J(null), o =
|
|
4704
|
+
var Jn = s("chevronDown");
|
|
4705
|
+
function Yn({ currentPalette: e = "default", onPaletteChange: t, className: n = "" }) {
|
|
4706
|
+
let [r, i] = Y(!1), a = J(null), o = qn(e);
|
|
4631
4707
|
K(() => {
|
|
4632
4708
|
function e(e) {
|
|
4633
4709
|
a.current && !a.current.contains(e.target) && i(!1);
|
|
@@ -4674,13 +4750,13 @@ function Wn({ currentPalette: e = "default", onPaletteChange: t, className: n =
|
|
|
4674
4750
|
]
|
|
4675
4751
|
}),
|
|
4676
4752
|
/* @__PURE__ */ Z("span", { children: o.label }),
|
|
4677
|
-
/* @__PURE__ */ Z(
|
|
4753
|
+
/* @__PURE__ */ Z(Jn, { className: `dc:w-4 dc:h-4 dc:transition-transform ${r ? "dc:rotate-180" : ""}` })
|
|
4678
4754
|
]
|
|
4679
4755
|
}), r && /* @__PURE__ */ Z("div", {
|
|
4680
4756
|
className: "dc:absolute dc:top-full dc:left-0 dc:mt-1 dc:w-72 dc:md:w-80 dc:lg:w-96 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:shadow-lg dc:z-50 dc:max-h-80 dc:overflow-y-auto",
|
|
4681
4757
|
children: /* @__PURE__ */ Z("div", {
|
|
4682
4758
|
className: "dc:py-1",
|
|
4683
|
-
children:
|
|
4759
|
+
children: Kn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((t) => /* @__PURE__ */ Z("button", {
|
|
4684
4760
|
type: "button",
|
|
4685
4761
|
onClick: () => s(t.name),
|
|
4686
4762
|
className: `dc:w-full dc:px-3 dc:py-2 dc:text-left dc:text-sm hover:bg-dc-surface-hover focus:outline-hidden focus:bg-dc-surface-hover ${t.name === e ? "bg-dc-surface-secondary" : "text-dc-text-secondary"}`,
|
|
@@ -4728,8 +4804,8 @@ function Wn({ currentPalette: e = "default", onPaletteChange: t, className: n =
|
|
|
4728
4804
|
}
|
|
4729
4805
|
//#endregion
|
|
4730
4806
|
//#region src/client/components/FloatingEditToolbar.tsx
|
|
4731
|
-
var
|
|
4732
|
-
function
|
|
4807
|
+
var Xn = s("edit"), Zn = s("check"), Qn = s("segment"), $n = s("table"), er = s("add");
|
|
4808
|
+
function tr({ className: e }) {
|
|
4733
4809
|
return /* @__PURE__ */ Q("svg", {
|
|
4734
4810
|
className: e,
|
|
4735
4811
|
viewBox: "0 0 24 24",
|
|
@@ -4752,8 +4828,8 @@ function Xn({ className: e }) {
|
|
|
4752
4828
|
})]
|
|
4753
4829
|
});
|
|
4754
4830
|
}
|
|
4755
|
-
var
|
|
4756
|
-
function
|
|
4831
|
+
var nr = s("swatch");
|
|
4832
|
+
function rr({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle: r, layoutMode: i, onLayoutModeChange: a, allowedModes: o, canChangeLayoutMode: s, currentPalette: c, onPaletteChange: l, onAddPortlet: u, onAddText: d }) {
|
|
4757
4833
|
let [f, p] = Y(!1), m = J(null);
|
|
4758
4834
|
K(() => {
|
|
4759
4835
|
if (!f) return;
|
|
@@ -4771,23 +4847,23 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
|
|
|
4771
4847
|
${h} ${t === "left" ? g ? "dc:-translate-x-16 dc:opacity-0 dc:pointer-events-none" : "dc:translate-x-0 dc:opacity-100" : g ? "dc:translate-x-16 dc:opacity-0 dc:pointer-events-none" : "dc:translate-x-0 dc:opacity-100"}`,
|
|
4772
4848
|
style: { boxShadow: "var(--dc-shadow-lg)" },
|
|
4773
4849
|
children: [
|
|
4774
|
-
/* @__PURE__ */ Z(
|
|
4775
|
-
icon: n ?
|
|
4850
|
+
/* @__PURE__ */ Z(ir, {
|
|
4851
|
+
icon: n ? Zn : Xn,
|
|
4776
4852
|
tooltip: n ? "Finish Editing" : "Edit Dashboard",
|
|
4777
4853
|
isActive: n,
|
|
4778
4854
|
onClick: r
|
|
4779
4855
|
}),
|
|
4780
4856
|
n && o.length > 1 && /* @__PURE__ */ Q(X, { children: [
|
|
4781
4857
|
/* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }),
|
|
4782
|
-
/* @__PURE__ */ Z(
|
|
4783
|
-
icon:
|
|
4858
|
+
/* @__PURE__ */ Z(ir, {
|
|
4859
|
+
icon: Qn,
|
|
4784
4860
|
tooltip: "Grid Layout",
|
|
4785
4861
|
isActive: i === "grid",
|
|
4786
4862
|
disabled: !s,
|
|
4787
4863
|
onClick: () => a("grid")
|
|
4788
4864
|
}),
|
|
4789
|
-
/* @__PURE__ */ Z(
|
|
4790
|
-
icon:
|
|
4865
|
+
/* @__PURE__ */ Z(ir, {
|
|
4866
|
+
icon: $n,
|
|
4791
4867
|
tooltip: "Rows Layout",
|
|
4792
4868
|
isActive: i === "rows",
|
|
4793
4869
|
disabled: !s,
|
|
@@ -4797,12 +4873,12 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
|
|
|
4797
4873
|
n && /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }), /* @__PURE__ */ Q("div", {
|
|
4798
4874
|
ref: m,
|
|
4799
4875
|
className: "dc:relative",
|
|
4800
|
-
children: [/* @__PURE__ */ Z(
|
|
4801
|
-
icon:
|
|
4876
|
+
children: [/* @__PURE__ */ Z(ir, {
|
|
4877
|
+
icon: nr,
|
|
4802
4878
|
tooltip: "Color Palette",
|
|
4803
4879
|
isActive: f,
|
|
4804
4880
|
onClick: () => p(!f)
|
|
4805
|
-
}), f && /* @__PURE__ */ Z(
|
|
4881
|
+
}), f && /* @__PURE__ */ Z(ar, {
|
|
4806
4882
|
position: t,
|
|
4807
4883
|
currentPalette: c,
|
|
4808
4884
|
onPaletteChange: (e) => {
|
|
@@ -4812,13 +4888,13 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
|
|
|
4812
4888
|
})] }),
|
|
4813
4889
|
n && /* @__PURE__ */ Q(X, { children: [
|
|
4814
4890
|
/* @__PURE__ */ Z("div", { className: "dc:w-full dc:h-px bg-dc-border dc:my-0.5" }),
|
|
4815
|
-
d && /* @__PURE__ */ Z(
|
|
4816
|
-
icon:
|
|
4891
|
+
d && /* @__PURE__ */ Z(ir, {
|
|
4892
|
+
icon: tr,
|
|
4817
4893
|
tooltip: "Add Text",
|
|
4818
4894
|
onClick: d
|
|
4819
4895
|
}),
|
|
4820
|
-
/* @__PURE__ */ Z(
|
|
4821
|
-
icon:
|
|
4896
|
+
/* @__PURE__ */ Z(ir, {
|
|
4897
|
+
icon: er,
|
|
4822
4898
|
tooltip: "Add Portlet",
|
|
4823
4899
|
onClick: u
|
|
4824
4900
|
})
|
|
@@ -4827,7 +4903,7 @@ function Qn({ isEditBarVisible: e, position: t, isEditMode: n, onEditModeToggle:
|
|
|
4827
4903
|
});
|
|
4828
4904
|
return typeof document > "u" ? null : _e(_, document.body);
|
|
4829
4905
|
}
|
|
4830
|
-
function
|
|
4906
|
+
function ir({ icon: e, tooltip: t, isActive: n, disabled: r, onClick: i }) {
|
|
4831
4907
|
return /* @__PURE__ */ Z("button", {
|
|
4832
4908
|
type: "button",
|
|
4833
4909
|
onClick: i,
|
|
@@ -4838,13 +4914,13 @@ function $n({ icon: e, tooltip: t, isActive: n, disabled: r, onClick: i }) {
|
|
|
4838
4914
|
children: /* @__PURE__ */ Z(e, { className: "dc:w-5 dc:h-5" })
|
|
4839
4915
|
});
|
|
4840
4916
|
}
|
|
4841
|
-
function
|
|
4917
|
+
function ar({ position: e, currentPalette: t, onPaletteChange: n }) {
|
|
4842
4918
|
return /* @__PURE__ */ Z("div", {
|
|
4843
4919
|
className: `dc:absolute dc:top-0 ${e === "left" ? "dc:left-full dc:ml-2" : "dc:right-full dc:mr-2"} dc:w-52 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:z-50 dc:max-h-72 dc:overflow-y-auto`,
|
|
4844
4920
|
style: { boxShadow: "var(--dc-shadow-lg)" },
|
|
4845
4921
|
children: /* @__PURE__ */ Z("div", {
|
|
4846
4922
|
className: "dc:py-1",
|
|
4847
|
-
children:
|
|
4923
|
+
children: Kn.slice().sort((e, t) => e.label.localeCompare(t.label)).map((e) => /* @__PURE__ */ Z("button", {
|
|
4848
4924
|
type: "button",
|
|
4849
4925
|
onClick: () => n(e.name),
|
|
4850
4926
|
className: `dc:w-full dc:px-3 dc:py-2 dc:text-left dc:text-sm hover:bg-dc-surface-hover dc:transition-colors ${e.name === t ? "bg-dc-surface-secondary text-dc-primary" : "text-dc-text-secondary"}`,
|
|
@@ -4871,9 +4947,9 @@ function er({ position: e, currentPalette: t, onPaletteChange: n }) {
|
|
|
4871
4947
|
}
|
|
4872
4948
|
//#endregion
|
|
4873
4949
|
//#region src/client/components/dashboard/DashboardToolbar.tsx
|
|
4874
|
-
var
|
|
4875
|
-
function
|
|
4876
|
-
let { t: e } = P(), { editable: t, hideToolbar: n, features: r, displayMode: i, isEditMode: a, isResponsiveEditable: o, layoutMode: s, allowedModes: c, canChangeLayoutMode: l, isScrolled: u, isEditBarVisible: d, editBarRef: f, config: p, actions: m, handleAddText: h, handleAddPortlet: g, handlePaletteChange: _ } =
|
|
4950
|
+
var or = s("edit"), sr = s("check"), cr = s("add"), lr = s("desktop"), ur = s("segment"), dr = s("table");
|
|
4951
|
+
function fr() {
|
|
4952
|
+
let { t: e } = P(), { editable: t, hideToolbar: n, features: r, displayMode: i, isEditMode: a, isResponsiveEditable: o, layoutMode: s, allowedModes: c, canChangeLayoutMode: l, isScrolled: u, isEditBarVisible: d, editBarRef: f, config: p, actions: m, handleAddText: h, handleAddPortlet: g, handlePaletteChange: _ } = Rn();
|
|
4877
4953
|
return !t || n ? null : /* @__PURE__ */ Q(X, { children: [r.editToolbar !== "floating" && /* @__PURE__ */ Q("div", {
|
|
4878
4954
|
ref: f,
|
|
4879
4955
|
className: `dc:mb-4 dc:flex dc:justify-between dc:items-center dc:sticky dc:top-0 dc:z-10 dc:px-4 dc:py-4 bg-dc-surface-tertiary dc:border border-dc-border dc:rounded-lg dc:transition-all dc:duration-200 ${u ? "dc:border-b" : ""}`,
|
|
@@ -4889,7 +4965,7 @@ function sr() {
|
|
|
4889
4965
|
color: o ? "var(--dc-primary)" : "var(--dc-text-muted)",
|
|
4890
4966
|
borderColor: o ? a ? "var(--dc-border)" : "var(--dc-primary)" : "var(--dc-border)"
|
|
4891
4967
|
},
|
|
4892
|
-
children: [Z(a ?
|
|
4968
|
+
children: [Z(a ? sr : or, { className: "dc:w-4 dc:h-4 dc:mr-1.5" }), e(a ? "dashboard.finishEditing" : "dashboard.edit")]
|
|
4893
4969
|
}),
|
|
4894
4970
|
a && c.length > 1 && /* @__PURE__ */ Q("div", {
|
|
4895
4971
|
className: "dc:inline-flex dc:rounded-md dc:border border-dc-border dc:overflow-hidden dc:whitespace-nowrap",
|
|
@@ -4897,17 +4973,17 @@ function sr() {
|
|
|
4897
4973
|
onClick: () => m.handleLayoutModeChange("grid"),
|
|
4898
4974
|
disabled: !l,
|
|
4899
4975
|
className: `dc:inline-flex dc:items-center dc:gap-2 dc:whitespace-nowrap dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors dc:border-b-2 ${s === "grid" ? "bg-dc-accent-bg text-dc-accent border-b-dc-accent" : "bg-dc-surface text-dc-text-secondary hover:bg-dc-surface-hover border-b-transparent"} ${l ? "" : "dc:cursor-not-allowed dc:opacity-50"}`,
|
|
4900
|
-
children: [/* @__PURE__ */ Z(
|
|
4976
|
+
children: [/* @__PURE__ */ Z(ur, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.grid")]
|
|
4901
4977
|
}), /* @__PURE__ */ Q("button", {
|
|
4902
4978
|
onClick: () => m.handleLayoutModeChange("rows"),
|
|
4903
4979
|
disabled: !l,
|
|
4904
4980
|
className: `dc:inline-flex dc:items-center dc:gap-2 dc:whitespace-nowrap dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors dc:border-b-2 ${s === "rows" ? "bg-dc-accent-bg text-dc-accent border-b-dc-accent" : "bg-dc-surface text-dc-text-secondary hover:bg-dc-surface-hover border-b-transparent"} ${l ? "" : "dc:cursor-not-allowed dc:opacity-50"}`,
|
|
4905
|
-
children: [/* @__PURE__ */ Z(
|
|
4981
|
+
children: [/* @__PURE__ */ Z(dr, { className: "dc:w-4 dc:h-4 dc:shrink-0" }), e("dashboard.rows")]
|
|
4906
4982
|
})]
|
|
4907
4983
|
}),
|
|
4908
4984
|
!o && /* @__PURE__ */ Q("div", {
|
|
4909
4985
|
className: "dc:flex dc:items-center dc:gap-2 dc:text-sm text-dc-text-secondary",
|
|
4910
|
-
children: [/* @__PURE__ */ Z(
|
|
4986
|
+
children: [/* @__PURE__ */ Z(lr, { className: "dc:w-4 dc:h-4" }), /* @__PURE__ */ Z("span", { children: e("dashboard.desktopRequired") })]
|
|
4911
4987
|
}),
|
|
4912
4988
|
a && o && /* @__PURE__ */ Z("p", {
|
|
4913
4989
|
className: "dc:hidden dc:md:block dc:text-sm text-dc-text-secondary",
|
|
@@ -4917,7 +4993,7 @@ function sr() {
|
|
|
4917
4993
|
}), a && /* @__PURE__ */ Q("div", {
|
|
4918
4994
|
className: "dc:flex dc:items-center dc:gap-3",
|
|
4919
4995
|
children: [
|
|
4920
|
-
/* @__PURE__ */ Z(
|
|
4996
|
+
/* @__PURE__ */ Z(Yn, {
|
|
4921
4997
|
currentPalette: p.colorPalette,
|
|
4922
4998
|
onPaletteChange: _,
|
|
4923
4999
|
className: "dc:shrink-0"
|
|
@@ -4929,7 +5005,7 @@ function sr() {
|
|
|
4929
5005
|
color: "var(--dc-text-secondary)",
|
|
4930
5006
|
borderColor: "var(--dc-border)"
|
|
4931
5007
|
},
|
|
4932
|
-
children: [/* @__PURE__ */ Z(
|
|
5008
|
+
children: [/* @__PURE__ */ Z(In, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
|
|
4933
5009
|
}),
|
|
4934
5010
|
/* @__PURE__ */ Q("button", {
|
|
4935
5011
|
onClick: g,
|
|
@@ -4938,11 +5014,11 @@ function sr() {
|
|
|
4938
5014
|
color: "var(--dc-primary)",
|
|
4939
5015
|
borderColor: "var(--dc-primary)"
|
|
4940
5016
|
},
|
|
4941
|
-
children: [/* @__PURE__ */ Z(
|
|
5017
|
+
children: [/* @__PURE__ */ Z(cr, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
|
|
4942
5018
|
})
|
|
4943
5019
|
]
|
|
4944
5020
|
})]
|
|
4945
|
-
}), r.editToolbar !== "top" && i === "desktop" && /* @__PURE__ */ Z(
|
|
5021
|
+
}), r.editToolbar !== "top" && i === "desktop" && /* @__PURE__ */ Z(rr, {
|
|
4946
5022
|
isEditBarVisible: r.editToolbar === "floating" ? !1 : d,
|
|
4947
5023
|
position: r.floatingToolbarPosition || "right",
|
|
4948
5024
|
isEditMode: a,
|
|
@@ -4959,10 +5035,10 @@ function sr() {
|
|
|
4959
5035
|
}
|
|
4960
5036
|
//#endregion
|
|
4961
5037
|
//#region src/client/components/AnalysisBuilder/utils/idUtils.ts
|
|
4962
|
-
function
|
|
5038
|
+
function pr() {
|
|
4963
5039
|
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
4964
5040
|
}
|
|
4965
|
-
function
|
|
5041
|
+
function mr(e) {
|
|
4966
5042
|
let t = "", n = e;
|
|
4967
5043
|
do
|
|
4968
5044
|
t = String.fromCharCode(65 + n % 26) + t, n = Math.floor(n / 26) - 1;
|
|
@@ -4971,7 +5047,7 @@ function lr(e) {
|
|
|
4971
5047
|
}
|
|
4972
5048
|
//#endregion
|
|
4973
5049
|
//#region src/client/components/AnalysisBuilder/utils/fieldUtils.ts
|
|
4974
|
-
function
|
|
5050
|
+
function hr(e, t) {
|
|
4975
5051
|
if (!t) return null;
|
|
4976
5052
|
for (let n of t.cubes) {
|
|
4977
5053
|
let t = n.measures.find((t) => t.name === e);
|
|
@@ -4989,11 +5065,11 @@ function ur(e, t) {
|
|
|
4989
5065
|
}
|
|
4990
5066
|
return null;
|
|
4991
5067
|
}
|
|
4992
|
-
function
|
|
4993
|
-
let n =
|
|
5068
|
+
function gr(e, t) {
|
|
5069
|
+
let n = hr(e, t);
|
|
4994
5070
|
return n && (n.field.title || n.field.shortTitle) || e;
|
|
4995
5071
|
}
|
|
4996
|
-
function
|
|
5072
|
+
function _r(e, t) {
|
|
4997
5073
|
if (!e) return [];
|
|
4998
5074
|
let n = [];
|
|
4999
5075
|
for (let r of e.cubes) if (t === "metrics") for (let e of r.measures) n.push({
|
|
@@ -5036,7 +5112,7 @@ function fr(e, t) {
|
|
|
5036
5112
|
}
|
|
5037
5113
|
return n;
|
|
5038
5114
|
}
|
|
5039
|
-
function
|
|
5115
|
+
function vr(e, t, n) {
|
|
5040
5116
|
let r = e;
|
|
5041
5117
|
if (n && n !== "all" && (r = r.filter((e) => e.cubeName === n)), t.trim()) {
|
|
5042
5118
|
let e = t.toLowerCase();
|
|
@@ -5044,7 +5120,7 @@ function pr(e, t, n) {
|
|
|
5044
5120
|
}
|
|
5045
5121
|
return r;
|
|
5046
5122
|
}
|
|
5047
|
-
function
|
|
5123
|
+
function yr(e) {
|
|
5048
5124
|
let t = /* @__PURE__ */ new Map();
|
|
5049
5125
|
for (let n of e) {
|
|
5050
5126
|
let e = t.get(n.cubeName) || [];
|
|
@@ -5052,13 +5128,13 @@ function mr(e) {
|
|
|
5052
5128
|
}
|
|
5053
5129
|
return t;
|
|
5054
5130
|
}
|
|
5055
|
-
function
|
|
5131
|
+
function br(e) {
|
|
5056
5132
|
return e ? e.cubes.map((e) => e.name) : [];
|
|
5057
5133
|
}
|
|
5058
|
-
function
|
|
5134
|
+
function xr(e, t) {
|
|
5059
5135
|
return t && t.cubes.find((t) => t.name === e)?.title || e;
|
|
5060
5136
|
}
|
|
5061
|
-
function
|
|
5137
|
+
function Sr(e, t) {
|
|
5062
5138
|
let n = /* @__PURE__ */ new Set();
|
|
5063
5139
|
if (!t) return n;
|
|
5064
5140
|
n.add(e);
|
|
@@ -5067,9 +5143,9 @@ function _r(e, t) {
|
|
|
5067
5143
|
for (let e of r.relationships) n.add(e.targetCube);
|
|
5068
5144
|
return n;
|
|
5069
5145
|
}
|
|
5070
|
-
function
|
|
5146
|
+
function Cr(e, t) {
|
|
5071
5147
|
if (!t) return null;
|
|
5072
|
-
let n =
|
|
5148
|
+
let n = Sr(e, t);
|
|
5073
5149
|
return { cubes: t.cubes.filter((e) => n.has(e.name)).map((e) => ({
|
|
5074
5150
|
...e,
|
|
5075
5151
|
description: e.description || ""
|
|
@@ -5077,10 +5153,10 @@ function vr(e, t) {
|
|
|
5077
5153
|
}
|
|
5078
5154
|
//#endregion
|
|
5079
5155
|
//#region src/client/components/AnalysisBuilder/utils/recentFieldsUtils.ts
|
|
5080
|
-
var
|
|
5081
|
-
function
|
|
5156
|
+
var wr = "drizzle-cube-recent-fields", Tr = 10;
|
|
5157
|
+
function Er() {
|
|
5082
5158
|
try {
|
|
5083
|
-
let e = localStorage.getItem(
|
|
5159
|
+
let e = localStorage.getItem(wr);
|
|
5084
5160
|
if (e) return JSON.parse(e);
|
|
5085
5161
|
} catch {}
|
|
5086
5162
|
return {
|
|
@@ -5088,15 +5164,15 @@ function xr() {
|
|
|
5088
5164
|
breakdowns: []
|
|
5089
5165
|
};
|
|
5090
5166
|
}
|
|
5091
|
-
function
|
|
5167
|
+
function Dr(e, t) {
|
|
5092
5168
|
try {
|
|
5093
|
-
let n =
|
|
5094
|
-
r.unshift(e), n[t] = r.slice(0,
|
|
5169
|
+
let n = Er(), r = n[t].filter((t) => t !== e);
|
|
5170
|
+
r.unshift(e), n[t] = r.slice(0, Tr), localStorage.setItem(wr, JSON.stringify(n));
|
|
5095
5171
|
} catch {}
|
|
5096
5172
|
}
|
|
5097
|
-
function
|
|
5173
|
+
function Or(e, t, n) {
|
|
5098
5174
|
if (!e || n.length === 0) return [];
|
|
5099
|
-
let r =
|
|
5175
|
+
let r = _r(e, t), i = [];
|
|
5100
5176
|
for (let e of n) {
|
|
5101
5177
|
let t = r.find((t) => t.name === e);
|
|
5102
5178
|
t && i.push(t);
|
|
@@ -5105,8 +5181,8 @@ function Cr(e, t, n) {
|
|
|
5105
5181
|
}
|
|
5106
5182
|
//#endregion
|
|
5107
5183
|
//#region src/client/components/AnalysisBuilder/FieldSearchItem.tsx
|
|
5108
|
-
var
|
|
5109
|
-
function
|
|
5184
|
+
var kr = s("check");
|
|
5185
|
+
function Ar({ field: e, isSelected: t, isFocused: n, onClick: r, onMouseEnter: i, ...a }) {
|
|
5110
5186
|
let o = () => {
|
|
5111
5187
|
if (e.fieldType === "measure") {
|
|
5112
5188
|
let t = h(e.type);
|
|
@@ -5145,15 +5221,15 @@ function Tr({ field: e, isSelected: t, isFocused: n, onClick: r, onMouseEnter: i
|
|
|
5145
5221
|
}),
|
|
5146
5222
|
t && /* @__PURE__ */ Z("span", {
|
|
5147
5223
|
className: "dc:shrink-0 dc:w-5 dc:h-5 dc:flex dc:items-center dc:justify-center dc:rounded-full bg-dc-success text-white",
|
|
5148
|
-
children: /* @__PURE__ */ Z(
|
|
5224
|
+
children: /* @__PURE__ */ Z(kr, { className: "dc:w-3 dc:h-3" })
|
|
5149
5225
|
})
|
|
5150
5226
|
]
|
|
5151
5227
|
});
|
|
5152
5228
|
}
|
|
5153
|
-
var
|
|
5229
|
+
var jr = pe(Ar);
|
|
5154
5230
|
//#endregion
|
|
5155
5231
|
//#region src/client/components/AnalysisBuilder/FieldDetailPanel.tsx
|
|
5156
|
-
function
|
|
5232
|
+
function Mr({ field: e }) {
|
|
5157
5233
|
let { t } = P();
|
|
5158
5234
|
return e ? /* @__PURE__ */ Q("div", {
|
|
5159
5235
|
className: "dc:p-4",
|
|
@@ -5258,17 +5334,17 @@ function Dr({ field: e }) {
|
|
|
5258
5334
|
})
|
|
5259
5335
|
});
|
|
5260
5336
|
}
|
|
5261
|
-
var
|
|
5262
|
-
function
|
|
5337
|
+
var Nr = pe(Mr), Pr = s("search"), Fr = s("close");
|
|
5338
|
+
function Ir({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFields: a, recentFields: o }) {
|
|
5263
5339
|
let { t: s } = P(), [c, l] = Y(""), [u, d] = Y(null), [f, p] = Y(null), [m, h] = Y(-1), [g, _] = Y(null), v = J(null), y = J(null), b = q(() => {
|
|
5264
5340
|
if (o) return o;
|
|
5265
|
-
let e =
|
|
5341
|
+
let e = Er();
|
|
5266
5342
|
return r === "metrics" ? e.metrics : e.breakdowns;
|
|
5267
|
-
}, [o, r]), x = r, S = q(() =>
|
|
5343
|
+
}, [o, r]), x = r, S = q(() => _r(i, x), [i, x]), C = q(() => br(i), [i]), w = q(() => vr(S, c, u), [
|
|
5268
5344
|
S,
|
|
5269
5345
|
c,
|
|
5270
5346
|
u
|
|
5271
|
-
]), T = q(() =>
|
|
5347
|
+
]), T = q(() => yr(w), [w]), E = q(() => c.trim() ? [] : Or(i, x, b).filter((e) => !u || e.cubeName === u), [
|
|
5272
5348
|
i,
|
|
5273
5349
|
x,
|
|
5274
5350
|
b,
|
|
@@ -5286,7 +5362,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5286
5362
|
e || (l(""), d(null), p(null), h(-1), _(null));
|
|
5287
5363
|
}, [e]);
|
|
5288
5364
|
let O = G((e, t = !1) => {
|
|
5289
|
-
|
|
5365
|
+
Dr(e.name, r === "metrics" ? "metrics" : "breakdowns"), n({
|
|
5290
5366
|
name: e.name,
|
|
5291
5367
|
title: e.title,
|
|
5292
5368
|
shortTitle: e.shortTitle,
|
|
@@ -5362,7 +5438,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5362
5438
|
children: [/* @__PURE__ */ Q("div", {
|
|
5363
5439
|
className: "dc:flex dc:items-center dc:px-4 dc:py-3 dc:gap-3",
|
|
5364
5440
|
children: [
|
|
5365
|
-
/* @__PURE__ */ Z(
|
|
5441
|
+
/* @__PURE__ */ Z(Pr, {
|
|
5366
5442
|
className: "dc:w-5 dc:h-5 text-dc-text-muted",
|
|
5367
5443
|
"aria-hidden": !0
|
|
5368
5444
|
}),
|
|
@@ -5386,7 +5462,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5386
5462
|
onClick: t,
|
|
5387
5463
|
className: "dc:p-1 text-dc-text-secondary hover:text-dc-text dc:rounded",
|
|
5388
5464
|
"aria-label": "Close dialog",
|
|
5389
|
-
children: /* @__PURE__ */ Z(
|
|
5465
|
+
children: /* @__PURE__ */ Z(Fr, {
|
|
5390
5466
|
className: "dc:w-5 dc:h-5",
|
|
5391
5467
|
"aria-hidden": !0
|
|
5392
5468
|
})
|
|
@@ -5404,7 +5480,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5404
5480
|
children: s("fieldSearch.filter.allCubes")
|
|
5405
5481
|
}), C.map((e) => /* @__PURE__ */ Z("option", {
|
|
5406
5482
|
value: e,
|
|
5407
|
-
children:
|
|
5483
|
+
children: xr(e, i)
|
|
5408
5484
|
}, e))]
|
|
5409
5485
|
})
|
|
5410
5486
|
})]
|
|
@@ -5427,9 +5503,9 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5427
5503
|
}), C.map((e) => /* @__PURE__ */ Z("button", {
|
|
5428
5504
|
onClick: () => d(e),
|
|
5429
5505
|
className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:rounded-md dc:text-sm dc:transition-colors dc:truncate ${u === e ? "bg-dc-primary/10 text-dc-primary dc:font-medium" : "text-dc-text hover:bg-dc-surface-hover"}`,
|
|
5430
|
-
title:
|
|
5506
|
+
title: xr(e, i),
|
|
5431
5507
|
"aria-pressed": u === e,
|
|
5432
|
-
children:
|
|
5508
|
+
children: xr(e, i)
|
|
5433
5509
|
}, e))]
|
|
5434
5510
|
})
|
|
5435
5511
|
}),
|
|
@@ -5455,7 +5531,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5455
5531
|
children: s("fieldSearch.section.recents")
|
|
5456
5532
|
}), /* @__PURE__ */ Z("div", {
|
|
5457
5533
|
className: "dc:space-y-1",
|
|
5458
|
-
children: E.map((e, t) => /* @__PURE__ */ Z(
|
|
5534
|
+
children: E.map((e, t) => /* @__PURE__ */ Z(jr, {
|
|
5459
5535
|
field: e,
|
|
5460
5536
|
isSelected: a.includes(e.name),
|
|
5461
5537
|
isFocused: m === t,
|
|
@@ -5467,12 +5543,12 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5467
5543
|
}, `recent-${e.name}`))
|
|
5468
5544
|
})] }), Array.from(T.entries()).map(([e, t]) => /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("h3", {
|
|
5469
5545
|
className: "dc:text-xs dc:font-semibold text-dc-text-muted dc:uppercase dc:tracking-wider dc:mb-2",
|
|
5470
|
-
children:
|
|
5546
|
+
children: xr(e, i)
|
|
5471
5547
|
}), /* @__PURE__ */ Z("div", {
|
|
5472
5548
|
className: "dc:space-y-1",
|
|
5473
5549
|
children: t.map((n) => {
|
|
5474
5550
|
let r = E.length + Array.from(T.entries()).slice(0, Array.from(T.keys()).indexOf(e)).reduce((e, [, t]) => e + t.length, 0) + t.indexOf(n);
|
|
5475
|
-
return /* @__PURE__ */ Z(
|
|
5551
|
+
return /* @__PURE__ */ Z(jr, {
|
|
5476
5552
|
field: n,
|
|
5477
5553
|
isSelected: a.includes(n.name),
|
|
5478
5554
|
isFocused: m === r,
|
|
@@ -5488,7 +5564,7 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5488
5564
|
}),
|
|
5489
5565
|
/* @__PURE__ */ Z("div", {
|
|
5490
5566
|
className: "dc:hidden dc:md:block dc:w-72 dc:shrink-0 dc:border-l border-dc-border bg-dc-surface-secondary dc:overflow-y-auto",
|
|
5491
|
-
children: /* @__PURE__ */ Z(
|
|
5567
|
+
children: /* @__PURE__ */ Z(Nr, { field: f })
|
|
5492
5568
|
})
|
|
5493
5569
|
]
|
|
5494
5570
|
}),
|
|
@@ -5546,13 +5622,13 @@ function jr({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFi
|
|
|
5546
5622
|
}
|
|
5547
5623
|
//#endregion
|
|
5548
5624
|
//#region src/client/components/DashboardFilters/DashboardFilterConfigModal.tsx
|
|
5549
|
-
var
|
|
5550
|
-
function
|
|
5625
|
+
var Lr = s("close"), Rr = s("chevronDown"), zr = s("dimension"), Br = s("timeDimension"), Vr = s("measure"), Hr = s("edit"), Ur = s("eye"), Wr = s("eyeOff");
|
|
5626
|
+
function Gr({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i, onDelete: a, onClose: o }) {
|
|
5551
5627
|
let { t: s } = P(), [c, l] = Y(e.label), [u, d] = Y(e.filter), [f, p] = Y(!1), [m, h] = Y(!1), [g, _] = Y(!1), [v, x] = Y(!1), [C, T] = Y(!1), [E, D] = Y("this_month"), [ee, A] = Y(1), [j, ne] = Y(""), re = J(null), ie = f ? t : n;
|
|
5552
5628
|
K(() => {
|
|
5553
5629
|
r && (l(e.label), d(e.filter));
|
|
5554
5630
|
}, [e, r]);
|
|
5555
|
-
let ae = te(j, 300), oe =
|
|
5631
|
+
let ae = te(j, 300), oe = hr(u.member, ie), M = oe?.field.type || "string", N = M === "time", se = oe?.fieldType === "measure", ce = oe?.fieldType === "dimension", F = gr(u.member, ie), le = y[u.operator], I = b(M), L = N && u.operator === "inDateRange", R = [
|
|
5556
5632
|
"equals",
|
|
5557
5633
|
"notEquals",
|
|
5558
5634
|
"in",
|
|
@@ -5609,24 +5685,24 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5609
5685
|
operator: e,
|
|
5610
5686
|
values: []
|
|
5611
5687
|
}), _(!1);
|
|
5612
|
-
}, [u.member]),
|
|
5688
|
+
}, [u.member]), fe = G((e) => {
|
|
5613
5689
|
let t = u.values || [];
|
|
5614
|
-
|
|
5690
|
+
le?.supportsMultipleValues ? t.includes(e) || d({
|
|
5615
5691
|
...u,
|
|
5616
5692
|
values: [...t, e]
|
|
5617
5693
|
}) : (d({
|
|
5618
5694
|
...u,
|
|
5619
5695
|
values: [e]
|
|
5620
5696
|
}), x(!1)), ne("");
|
|
5621
|
-
}, [u,
|
|
5697
|
+
}, [u, le?.supportsMultipleValues]), U = G((e) => {
|
|
5622
5698
|
let t = (u.values || []).filter((t) => t !== e);
|
|
5623
5699
|
d({
|
|
5624
5700
|
...u,
|
|
5625
5701
|
values: t
|
|
5626
5702
|
});
|
|
5627
|
-
}, [u]),
|
|
5703
|
+
}, [u]), W = G((e) => {
|
|
5628
5704
|
let t = e.target.value;
|
|
5629
|
-
if (
|
|
5705
|
+
if (le?.valueType === "number") {
|
|
5630
5706
|
let e = parseFloat(t);
|
|
5631
5707
|
isNaN(e) ? (t === "" || t === "-") && d({
|
|
5632
5708
|
...u,
|
|
@@ -5639,7 +5715,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5639
5715
|
...u,
|
|
5640
5716
|
values: t ? [t] : []
|
|
5641
5717
|
});
|
|
5642
|
-
}, [u,
|
|
5718
|
+
}, [u, le?.valueType]), pe = G((e) => {
|
|
5643
5719
|
let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (u.values?.length >= 2 ? u.values : ["", ""])[1]].filter((e) => e !== "");
|
|
5644
5720
|
d({
|
|
5645
5721
|
...u,
|
|
@@ -5710,7 +5786,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5710
5786
|
u,
|
|
5711
5787
|
i,
|
|
5712
5788
|
s
|
|
5713
|
-
]), be = s(I.find((e) => e.operator === u.operator)?.label || u.operator), xe = s(O.find((e) => e.value === E)?.label || "filter.modal.selectRange"), Se = N ?
|
|
5789
|
+
]), be = s(I.find((e) => e.operator === u.operator)?.label || u.operator), xe = s(O.find((e) => e.value === E)?.label || "filter.modal.selectRange"), Se = N ? Br : se ? Vr : zr, Ce = N ? "bg-dc-time-dimension" : se ? "bg-dc-measure" : "bg-dc-dimension", $ = N ? "text-dc-time-dimension-text" : se ? "text-dc-measure-text" : "text-dc-dimension-text";
|
|
5714
5790
|
return r ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("div", {
|
|
5715
5791
|
className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4",
|
|
5716
5792
|
style: { backgroundColor: "var(--dc-overlay)" },
|
|
@@ -5729,7 +5805,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5729
5805
|
}), /* @__PURE__ */ Z("button", {
|
|
5730
5806
|
onClick: o,
|
|
5731
5807
|
className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
|
|
5732
|
-
children: /* @__PURE__ */ Z(
|
|
5808
|
+
children: /* @__PURE__ */ Z(Lr, { className: "dc:w-5 dc:h-5" })
|
|
5733
5809
|
})]
|
|
5734
5810
|
}),
|
|
5735
5811
|
/* @__PURE__ */ Q("div", {
|
|
@@ -5764,7 +5840,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5764
5840
|
onClick: () => p(!f),
|
|
5765
5841
|
className: "dc:flex dc:items-center dc:gap-1 dc:text-xs dc:px-2 dc:py-1 dc:rounded hover:bg-dc-surface-hover text-dc-text-muted",
|
|
5766
5842
|
title: f ? "Show dashboard fields only" : "Show all fields",
|
|
5767
|
-
children: f ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(
|
|
5843
|
+
children: f ? /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(Wr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.dashboard") })] }) : /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(Ur, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.all") })] })
|
|
5768
5844
|
})]
|
|
5769
5845
|
}), /* @__PURE__ */ Q("button", {
|
|
5770
5846
|
onClick: () => h(!0),
|
|
@@ -5774,14 +5850,14 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5774
5850
|
children: Se && /* @__PURE__ */ Z(Se, { className: "dc:w-4 dc:h-4" })
|
|
5775
5851
|
}), /* @__PURE__ */ Z("span", {
|
|
5776
5852
|
className: "dc:flex-1 dc:text-sm dc:font-medium text-dc-text dc:text-left",
|
|
5777
|
-
children:
|
|
5853
|
+
children: F
|
|
5778
5854
|
})] }) : /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z("span", {
|
|
5779
5855
|
className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded bg-dc-surface-tertiary text-dc-text-muted",
|
|
5780
|
-
children: /* @__PURE__ */ Z(
|
|
5856
|
+
children: /* @__PURE__ */ Z(zr, { className: "dc:w-4 dc:h-4" })
|
|
5781
5857
|
}), /* @__PURE__ */ Z("span", {
|
|
5782
5858
|
className: "dc:flex-1 dc:text-sm text-dc-text-muted dc:text-left",
|
|
5783
5859
|
children: s("dashboardFilter.clickToSelectField")
|
|
5784
|
-
})] }), /* @__PURE__ */ Z(
|
|
5860
|
+
})] }), /* @__PURE__ */ Z(Hr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
|
|
5785
5861
|
})] }),
|
|
5786
5862
|
(u.member || e.isUniversalTime) && !e.isUniversalTime && /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("label", {
|
|
5787
5863
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
@@ -5796,7 +5872,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5796
5872
|
children: [/* @__PURE__ */ Z("span", {
|
|
5797
5873
|
className: "dc:truncate",
|
|
5798
5874
|
children: be
|
|
5799
|
-
}), /* @__PURE__ */ Z(
|
|
5875
|
+
}), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${g ? "dc:rotate-180" : ""}` })]
|
|
5800
5876
|
}), g && /* @__PURE__ */ Z("div", {
|
|
5801
5877
|
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 dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
|
|
5802
5878
|
children: I.map((e) => /* @__PURE__ */ Z("button", {
|
|
@@ -5809,7 +5885,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5809
5885
|
u.member && !e.isUniversalTime && /* @__PURE__ */ Q("div", { children: [/* @__PURE__ */ Z("label", {
|
|
5810
5886
|
className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
|
|
5811
5887
|
children: s("dashboardFilter.defaultValue")
|
|
5812
|
-
}),
|
|
5888
|
+
}), le?.requiresValues ? L ? /* @__PURE__ */ Q("div", {
|
|
5813
5889
|
className: "dc:space-y-2",
|
|
5814
5890
|
children: [
|
|
5815
5891
|
/* @__PURE__ */ Q("div", {
|
|
@@ -5822,7 +5898,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5822
5898
|
children: [/* @__PURE__ */ Z("span", {
|
|
5823
5899
|
className: "dc:truncate",
|
|
5824
5900
|
children: xe
|
|
5825
|
-
}), /* @__PURE__ */ Z(
|
|
5901
|
+
}), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${C ? "dc:rotate-180" : ""}` })]
|
|
5826
5902
|
}), C && /* @__PURE__ */ Z("div", {
|
|
5827
5903
|
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 dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
|
|
5828
5904
|
children: O.map((e) => /* @__PURE__ */ Z("button", {
|
|
@@ -5890,15 +5966,15 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5890
5966
|
className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
5891
5967
|
})
|
|
5892
5968
|
]
|
|
5893
|
-
}) :
|
|
5969
|
+
}) : le?.valueType === "date" ? /* @__PURE__ */ Z("input", {
|
|
5894
5970
|
type: "date",
|
|
5895
5971
|
value: u.values?.[0] || "",
|
|
5896
5972
|
onChange: he,
|
|
5897
5973
|
className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
5898
|
-
}) :
|
|
5974
|
+
}) : le?.valueType === "number" ? /* @__PURE__ */ Z("input", {
|
|
5899
5975
|
type: "number",
|
|
5900
5976
|
value: u.values?.[0] ?? "",
|
|
5901
|
-
onChange:
|
|
5977
|
+
onChange: W,
|
|
5902
5978
|
placeholder: "Enter number",
|
|
5903
5979
|
className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
|
|
5904
5980
|
}) : R ? /* @__PURE__ */ Q("div", {
|
|
@@ -5911,9 +5987,9 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5911
5987
|
className: "dc:max-w-[150px] dc:truncate",
|
|
5912
5988
|
children: String(e)
|
|
5913
5989
|
}), /* @__PURE__ */ Z("button", {
|
|
5914
|
-
onClick: () =>
|
|
5990
|
+
onClick: () => U(e),
|
|
5915
5991
|
className: "hover:text-dc-danger",
|
|
5916
|
-
children: /* @__PURE__ */ Z(
|
|
5992
|
+
children: /* @__PURE__ */ Z(Lr, { className: "dc:w-3.5 dc:h-3.5" })
|
|
5917
5993
|
})]
|
|
5918
5994
|
}, t))
|
|
5919
5995
|
}), /* @__PURE__ */ Q("div", {
|
|
@@ -5926,7 +6002,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5926
6002
|
children: [/* @__PURE__ */ Z("span", {
|
|
5927
6003
|
className: "text-dc-text-muted dc:truncate",
|
|
5928
6004
|
children: ue ? "Loading..." : "Select value..."
|
|
5929
|
-
}), /* @__PURE__ */ Z(
|
|
6005
|
+
}), /* @__PURE__ */ Z(Rr, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${v ? "dc:rotate-180" : ""}` })]
|
|
5930
6006
|
}), v && /* @__PURE__ */ Q("div", {
|
|
5931
6007
|
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 dc:shadow-lg dc:max-h-56 dc:overflow-hidden",
|
|
5932
6008
|
children: [/* @__PURE__ */ Z("div", {
|
|
@@ -5953,7 +6029,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5953
6029
|
}) : z.map((e, t) => {
|
|
5954
6030
|
let n = u.values?.includes(e);
|
|
5955
6031
|
return /* @__PURE__ */ Q("button", {
|
|
5956
|
-
onClick: () =>
|
|
6032
|
+
onClick: () => fe(e),
|
|
5957
6033
|
className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${n ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
|
|
5958
6034
|
children: [String(e), n && /* @__PURE__ */ Z("span", {
|
|
5959
6035
|
className: "dc:float-right",
|
|
@@ -5967,7 +6043,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5967
6043
|
}) : /* @__PURE__ */ Z("input", {
|
|
5968
6044
|
type: "text",
|
|
5969
6045
|
value: u.values?.[0] ?? "",
|
|
5970
|
-
onChange:
|
|
6046
|
+
onChange: W,
|
|
5971
6047
|
placeholder: "Enter value...",
|
|
5972
6048
|
className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text placeholder-dc-text-muted"
|
|
5973
6049
|
}) : /* @__PURE__ */ Z("div", {
|
|
@@ -5997,7 +6073,7 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
5997
6073
|
})
|
|
5998
6074
|
]
|
|
5999
6075
|
})
|
|
6000
|
-
}), m && /* @__PURE__ */ Z(
|
|
6076
|
+
}), m && /* @__PURE__ */ Z(Ir, {
|
|
6001
6077
|
isOpen: m,
|
|
6002
6078
|
onClose: () => h(!1),
|
|
6003
6079
|
onSelect: de,
|
|
@@ -6008,8 +6084,8 @@ function Br({ filter: e, fullSchema: t, filteredSchema: n, isOpen: r, onSave: i,
|
|
|
6008
6084
|
}
|
|
6009
6085
|
//#endregion
|
|
6010
6086
|
//#region src/client/components/DashboardFilters/FilterEditModal.tsx
|
|
6011
|
-
var
|
|
6012
|
-
let c = q(() => s(t), [t, s]), l = q(() =>
|
|
6087
|
+
var Kr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onClose: a, onDelete: o, convertToMetaResponse: s }) => {
|
|
6088
|
+
let c = q(() => s(t), [t, s]), l = q(() => kt(n), [n]), u = q(() => {
|
|
6013
6089
|
if (!t) return null;
|
|
6014
6090
|
let e = t.cubes.map((e) => {
|
|
6015
6091
|
let t = e.name, n = e.measures.filter((e) => {
|
|
@@ -6040,7 +6116,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6040
6116
|
console.error("Failed to save filter:", e), alert("Failed to save filter. Please try again.");
|
|
6041
6117
|
}
|
|
6042
6118
|
}, [i, a]);
|
|
6043
|
-
return r ? /* @__PURE__ */ Z(
|
|
6119
|
+
return r ? /* @__PURE__ */ Z(Gr, {
|
|
6044
6120
|
filter: e,
|
|
6045
6121
|
fullSchema: c,
|
|
6046
6122
|
filteredSchema: u,
|
|
@@ -6049,7 +6125,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6049
6125
|
onDelete: o,
|
|
6050
6126
|
onClose: a
|
|
6051
6127
|
}) : null;
|
|
6052
|
-
},
|
|
6128
|
+
}, qr = s("filter"), Jr = s("add"), Yr = s("close"), Xr = s("edit"), Zr = s("chevronDown"), Qr = s("timeDimension"), $r = ({ dashboardFilters: e, onAddFilter: t, onAddTimeFilter: n, onEditFilter: r, onRemoveFilter: i, selectedFilterId: a, onFilterSelect: o }) => {
|
|
6053
6129
|
let { t: s } = P(), [c, l] = V.useState(!1), u = (e) => {
|
|
6054
6130
|
let { id: t, label: n, isUniversalTime: s } = e, c = a === t;
|
|
6055
6131
|
return /* @__PURE__ */ Q("div", {
|
|
@@ -6065,7 +6141,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6065
6141
|
o && o(t);
|
|
6066
6142
|
},
|
|
6067
6143
|
children: [
|
|
6068
|
-
/* @__PURE__ */ Z(s ?
|
|
6144
|
+
/* @__PURE__ */ Z(s ? Qr : qr, {
|
|
6069
6145
|
className: "dc:w-3.5 dc:h-3.5 dc:shrink-0",
|
|
6070
6146
|
style: { color: c ? "white" : "var(--dc-primary)" }
|
|
6071
6147
|
}),
|
|
@@ -6080,12 +6156,12 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6080
6156
|
onClick: () => r(t),
|
|
6081
6157
|
className: "dc:p-0.5 hover:bg-dc-hover dc:rounded dc:transition-colors",
|
|
6082
6158
|
title: "Edit filter",
|
|
6083
|
-
children: /* @__PURE__ */ Z(
|
|
6159
|
+
children: /* @__PURE__ */ Z(Xr, { className: "dc:w-3 dc:h-3" })
|
|
6084
6160
|
}), /* @__PURE__ */ Z("button", {
|
|
6085
6161
|
onClick: () => i(t),
|
|
6086
6162
|
className: "dc:p-0.5 hover:bg-dc-danger-bg hover:text-dc-danger dc:rounded dc:transition-colors",
|
|
6087
6163
|
title: "Remove filter",
|
|
6088
|
-
children: /* @__PURE__ */ Z(
|
|
6164
|
+
children: /* @__PURE__ */ Z(Yr, { className: "dc:w-3 dc:h-3" })
|
|
6089
6165
|
})]
|
|
6090
6166
|
})
|
|
6091
6167
|
]
|
|
@@ -6100,7 +6176,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6100
6176
|
children: [/* @__PURE__ */ Q("div", {
|
|
6101
6177
|
className: "dc:flex dc:items-center dc:gap-2",
|
|
6102
6178
|
children: [
|
|
6103
|
-
/* @__PURE__ */ Z(
|
|
6179
|
+
/* @__PURE__ */ Z(qr, {
|
|
6104
6180
|
className: "dc:w-4 dc:h-4 dc:shrink-0",
|
|
6105
6181
|
style: { color: "var(--dc-primary)" }
|
|
6106
6182
|
}),
|
|
@@ -6117,7 +6193,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6117
6193
|
},
|
|
6118
6194
|
children: e.length
|
|
6119
6195
|
}),
|
|
6120
|
-
/* @__PURE__ */ Z(
|
|
6196
|
+
/* @__PURE__ */ Z(Zr, {
|
|
6121
6197
|
className: `dc:w-4 dc:h-4 dc:transition-transform ${c ? "" : "dc:rotate-180"}`,
|
|
6122
6198
|
style: { color: "var(--dc-text-secondary)" }
|
|
6123
6199
|
})
|
|
@@ -6135,7 +6211,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6135
6211
|
border: "1px solid var(--dc-border)"
|
|
6136
6212
|
},
|
|
6137
6213
|
title: "Add date range filter (applies to all time dimensions)",
|
|
6138
|
-
children: [/* @__PURE__ */ Z(
|
|
6214
|
+
children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z(Qr, { className: "dc:w-3.5 dc:h-3.5" })]
|
|
6139
6215
|
}), /* @__PURE__ */ Z("button", {
|
|
6140
6216
|
onClick: (e) => {
|
|
6141
6217
|
e.stopPropagation(), t();
|
|
@@ -6145,7 +6221,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6145
6221
|
backgroundColor: "var(--dc-primary)",
|
|
6146
6222
|
color: "white"
|
|
6147
6223
|
},
|
|
6148
|
-
children: /* @__PURE__ */ Z(
|
|
6224
|
+
children: /* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" })
|
|
6149
6225
|
})]
|
|
6150
6226
|
})]
|
|
6151
6227
|
}),
|
|
@@ -6171,7 +6247,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6171
6247
|
/* @__PURE__ */ Q("div", {
|
|
6172
6248
|
className: "dc:flex dc:items-center dc:gap-2 dc:shrink-0",
|
|
6173
6249
|
children: [
|
|
6174
|
-
/* @__PURE__ */ Z(
|
|
6250
|
+
/* @__PURE__ */ Z(qr, {
|
|
6175
6251
|
className: "dc:w-4 dc:h-4 dc:shrink-0",
|
|
6176
6252
|
style: { color: "var(--dc-primary)" }
|
|
6177
6253
|
}),
|
|
@@ -6215,7 +6291,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6215
6291
|
border: "1px solid var(--dc-border)"
|
|
6216
6292
|
},
|
|
6217
6293
|
title: "Add date range filter (applies to all time dimensions)",
|
|
6218
|
-
children: [/* @__PURE__ */ Z(
|
|
6294
|
+
children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.dateRange") })]
|
|
6219
6295
|
}), /* @__PURE__ */ Q("button", {
|
|
6220
6296
|
onClick: t,
|
|
6221
6297
|
className: "dc:inline-flex dc:items-center dc:gap-1 dc:px-2 dc:py-1 dc:rounded-md dc:text-xs dc:font-medium dc:transition-colors dc:hover:opacity-80",
|
|
@@ -6223,12 +6299,12 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6223
6299
|
backgroundColor: "var(--dc-primary)",
|
|
6224
6300
|
color: "white"
|
|
6225
6301
|
},
|
|
6226
|
-
children: [/* @__PURE__ */ Z(
|
|
6302
|
+
children: [/* @__PURE__ */ Z(Jr, { className: "dc:w-3.5 dc:h-3.5" }), /* @__PURE__ */ Z("span", { children: s("dashboardFilter.editMode.filter") })]
|
|
6227
6303
|
})]
|
|
6228
6304
|
})
|
|
6229
6305
|
]
|
|
6230
6306
|
})] });
|
|
6231
|
-
},
|
|
6307
|
+
}, ei = [
|
|
6232
6308
|
{
|
|
6233
6309
|
id: "today",
|
|
6234
6310
|
label: "Today",
|
|
@@ -6264,7 +6340,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6264
6340
|
label: "12M",
|
|
6265
6341
|
value: "last 12 months"
|
|
6266
6342
|
}
|
|
6267
|
-
],
|
|
6343
|
+
], ti = [
|
|
6268
6344
|
{
|
|
6269
6345
|
id: "wtd",
|
|
6270
6346
|
label: "Week to Date",
|
|
@@ -6286,7 +6362,7 @@ var Vr = ({ filter: e, schema: t, dashboardConfig: n, isOpen: r, onSave: i, onCl
|
|
|
6286
6362
|
value: "this year"
|
|
6287
6363
|
}
|
|
6288
6364
|
];
|
|
6289
|
-
function
|
|
6365
|
+
function ni(e) {
|
|
6290
6366
|
let t = /* @__PURE__ */ new Date();
|
|
6291
6367
|
t.setHours(0, 0, 0, 0);
|
|
6292
6368
|
let n = new Date(t);
|
|
@@ -6370,7 +6446,7 @@ function Zr(e) {
|
|
|
6370
6446
|
}
|
|
6371
6447
|
}
|
|
6372
6448
|
}
|
|
6373
|
-
function
|
|
6449
|
+
function ri(e, t) {
|
|
6374
6450
|
let n = {
|
|
6375
6451
|
month: "short",
|
|
6376
6452
|
day: "numeric",
|
|
@@ -6381,15 +6457,15 @@ function Qr(e, t) {
|
|
|
6381
6457
|
day: "numeric"
|
|
6382
6458
|
})} - ${i}` : `${r} - ${i}`;
|
|
6383
6459
|
}
|
|
6384
|
-
function
|
|
6460
|
+
function ii(e) {
|
|
6385
6461
|
if (!e) return null;
|
|
6386
6462
|
if (Array.isArray(e)) return "custom";
|
|
6387
6463
|
let t = e.toLowerCase().trim();
|
|
6388
|
-
for (let e of
|
|
6389
|
-
for (let e of
|
|
6464
|
+
for (let e of ei) if (e.value.toLowerCase() === t) return e.id;
|
|
6465
|
+
for (let e of ti) if (e.value.toLowerCase() === t) return e.id;
|
|
6390
6466
|
return t.match(/^last\s+(\d+)\s+(day|days|week|weeks|month|months|quarter|quarters|year|years)$/i), "custom";
|
|
6391
6467
|
}
|
|
6392
|
-
function
|
|
6468
|
+
function ai(e, t) {
|
|
6393
6469
|
if (!e || e.length === 0) return t === "set" ? "is set" : t === "notSet" ? "is not set" : t === "isEmpty" ? "is empty" : t === "isNotEmpty" ? "is not empty" : "";
|
|
6394
6470
|
let n = e.map((e) => e === !0 ? "true" : e === !1 ? "false" : e == null ? "null" : String(e));
|
|
6395
6471
|
switch (t) {
|
|
@@ -6413,18 +6489,18 @@ function ei(e, t) {
|
|
|
6413
6489
|
}
|
|
6414
6490
|
//#endregion
|
|
6415
6491
|
//#region src/client/components/DashboardFilters/DatePresetChips.tsx
|
|
6416
|
-
var
|
|
6492
|
+
var oi = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
6417
6493
|
let r = q(() => {
|
|
6418
6494
|
let e = {};
|
|
6419
|
-
for (let t of
|
|
6420
|
-
let n =
|
|
6421
|
-
n && (e[t.id] =
|
|
6495
|
+
for (let t of ei) {
|
|
6496
|
+
let n = ni(t.value);
|
|
6497
|
+
n && (e[t.id] = ri(n.start, n.end));
|
|
6422
6498
|
}
|
|
6423
6499
|
return e;
|
|
6424
6500
|
}, []);
|
|
6425
6501
|
return /* @__PURE__ */ Z("div", {
|
|
6426
6502
|
className: "dc:flex dc:items-center dc:gap-1",
|
|
6427
|
-
children:
|
|
6503
|
+
children: ei.map((i) => {
|
|
6428
6504
|
let a = e === i.id, o = r[i.id];
|
|
6429
6505
|
return /* @__PURE__ */ Z("button", {
|
|
6430
6506
|
type: "button",
|
|
@@ -6453,7 +6529,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6453
6529
|
}, i.id);
|
|
6454
6530
|
})
|
|
6455
6531
|
});
|
|
6456
|
-
},
|
|
6532
|
+
}, si = [
|
|
6457
6533
|
{
|
|
6458
6534
|
value: "days",
|
|
6459
6535
|
label: "Days"
|
|
@@ -6474,7 +6550,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6474
6550
|
value: "years",
|
|
6475
6551
|
label: "Years"
|
|
6476
6552
|
}
|
|
6477
|
-
],
|
|
6553
|
+
], ci = ({ isOpen: e, onClose: t, onDateRangeChange: n, currentDateRange: r }) => {
|
|
6478
6554
|
let { t: i } = P(), a = J(null), [o, s] = Y("fixed"), [c, l] = Y(""), [u, d] = Y(""), [f, p] = Y(""), [m, h] = Y(7), [g, _] = Y("days");
|
|
6479
6555
|
K(() => {
|
|
6480
6556
|
if (r) if (Array.isArray(r)) s("fixed"), l(r[0] || ""), d(r[1] || r[0] || "");
|
|
@@ -6672,7 +6748,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6672
6748
|
backgroundColor: "var(--dc-bg)",
|
|
6673
6749
|
color: "var(--dc-text)"
|
|
6674
6750
|
},
|
|
6675
|
-
children:
|
|
6751
|
+
children: si.map((e) => /* @__PURE__ */ Z("option", {
|
|
6676
6752
|
value: e.value,
|
|
6677
6753
|
children: e.label
|
|
6678
6754
|
}, e.value))
|
|
@@ -6718,7 +6794,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6718
6794
|
})
|
|
6719
6795
|
]
|
|
6720
6796
|
});
|
|
6721
|
-
},
|
|
6797
|
+
}, li = s("check"), ui = ({ isOpen: e, onClose: t, onSelect: n, currentXTD: r }) => {
|
|
6722
6798
|
let i = J(null);
|
|
6723
6799
|
if (K(() => {
|
|
6724
6800
|
if (!e) return;
|
|
@@ -6746,8 +6822,8 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6746
6822
|
},
|
|
6747
6823
|
onClick: a,
|
|
6748
6824
|
onMouseDown: a,
|
|
6749
|
-
children:
|
|
6750
|
-
let t = r === e.id, i =
|
|
6825
|
+
children: ti.map((e) => {
|
|
6826
|
+
let t = r === e.id, i = ni(e.value), a = i ? ri(i.start, i.end) : "";
|
|
6751
6827
|
return /* @__PURE__ */ Q("button", {
|
|
6752
6828
|
type: "button",
|
|
6753
6829
|
onClick: () => n(e.value),
|
|
@@ -6772,14 +6848,14 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6772
6848
|
style: { color: "var(--dc-text-secondary)" },
|
|
6773
6849
|
children: a
|
|
6774
6850
|
})]
|
|
6775
|
-
}), t && /* @__PURE__ */ Z(
|
|
6851
|
+
}), t && /* @__PURE__ */ Z(li, {
|
|
6776
6852
|
className: "dc:w-4 dc:h-4 dc:shrink-0",
|
|
6777
6853
|
style: { color: "var(--dc-primary)" }
|
|
6778
6854
|
})]
|
|
6779
6855
|
}, e.id);
|
|
6780
6856
|
})
|
|
6781
6857
|
});
|
|
6782
|
-
},
|
|
6858
|
+
}, di = s("chevronDown"), fi = s("close"), pi = ({ fieldName: e, operator: t, values: n, onValuesChange: r, schema: i }) => {
|
|
6783
6859
|
let { t: a } = P(), o = y[t], [s, c] = Y(!1), [l, u] = Y(""), [d, f] = Y(!1), p = J(null), m = J(""), h = te(l, 300), g = q(() => i ? i.cubes.some((t) => t.dimensions.some((t) => t.name === e)) : !1, [i, e]), _ = q(() => i ? i.cubes.some((t) => t.dimensions.some((t) => t.name === e && t.type === "time")) : !1, [i, e]), v = q(() => [
|
|
6784
6860
|
"equals",
|
|
6785
6861
|
"notEquals",
|
|
@@ -6916,7 +6992,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6916
6992
|
}), /* @__PURE__ */ Z("button", {
|
|
6917
6993
|
onClick: () => O(e),
|
|
6918
6994
|
className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
|
|
6919
|
-
children: /* @__PURE__ */ Z(
|
|
6995
|
+
children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
|
|
6920
6996
|
})]
|
|
6921
6997
|
}, t))
|
|
6922
6998
|
}), /* @__PURE__ */ Z("input", {
|
|
@@ -6946,7 +7022,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6946
7022
|
}), /* @__PURE__ */ Z("button", {
|
|
6947
7023
|
onClick: () => O(e),
|
|
6948
7024
|
className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
|
|
6949
|
-
children: /* @__PURE__ */ Z(
|
|
7025
|
+
children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
|
|
6950
7026
|
})]
|
|
6951
7027
|
}, t))
|
|
6952
7028
|
}),
|
|
@@ -6960,7 +7036,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6960
7036
|
}), /* @__PURE__ */ Z("button", {
|
|
6961
7037
|
onClick: () => r([]),
|
|
6962
7038
|
className: "text-dc-accent hover:text-dc-accent focus:outline-hidden",
|
|
6963
|
-
children: /* @__PURE__ */ Z(
|
|
7039
|
+
children: /* @__PURE__ */ Z(fi, { className: "dc:w-3 dc:h-3" })
|
|
6964
7040
|
})]
|
|
6965
7041
|
})
|
|
6966
7042
|
}),
|
|
@@ -6970,7 +7046,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
6970
7046
|
children: [/* @__PURE__ */ Z("span", {
|
|
6971
7047
|
className: "text-dc-text-muted dc:truncate",
|
|
6972
7048
|
children: a(S && !d ? "filter.shared.valueSelector.loadingValues" : "filter.shared.valueSelector.selectValue")
|
|
6973
|
-
}), /* @__PURE__ */ Z(
|
|
7049
|
+
}), /* @__PURE__ */ Z(di, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })]
|
|
6974
7050
|
}),
|
|
6975
7051
|
s && /* @__PURE__ */ Q("div", {
|
|
6976
7052
|
className: "dc:absolute dc:z-30 dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:shadow-lg dc:max-h-60 dc:overflow-y-auto",
|
|
@@ -7022,7 +7098,7 @@ var ti = ({ activePreset: e, onPresetSelect: t, disabled: n = !1 }) => {
|
|
|
7022
7098
|
};
|
|
7023
7099
|
//#endregion
|
|
7024
7100
|
//#region src/client/components/DashboardFilters/FilterValuePopover.tsx
|
|
7025
|
-
function
|
|
7101
|
+
function mi(e) {
|
|
7026
7102
|
return e ? { cubes: e.cubes.map((e) => ({
|
|
7027
7103
|
name: e.name,
|
|
7028
7104
|
title: e.title || e.name,
|
|
@@ -7050,7 +7126,7 @@ function li(e) {
|
|
|
7050
7126
|
})) || []
|
|
7051
7127
|
})) } : null;
|
|
7052
7128
|
}
|
|
7053
|
-
var
|
|
7129
|
+
var hi = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i }) => {
|
|
7054
7130
|
let { t: a } = P(), o = J(null);
|
|
7055
7131
|
K(() => {
|
|
7056
7132
|
let e = (e) => {
|
|
@@ -7066,7 +7142,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7066
7142
|
}, [r, i]);
|
|
7067
7143
|
let s = G((e) => {
|
|
7068
7144
|
n(e);
|
|
7069
|
-
}, [n]), c =
|
|
7145
|
+
}, [n]), c = mi(t);
|
|
7070
7146
|
return /* @__PURE__ */ Q("div", {
|
|
7071
7147
|
ref: o,
|
|
7072
7148
|
className: "dc:absolute dc:top-full dc:left-0 dc:mt-1 dc:z-50 dc:border dc:rounded-lg dc:shadow-lg dc:p-3 dc:min-w-[220px]",
|
|
@@ -7083,7 +7159,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7083
7159
|
}),
|
|
7084
7160
|
/* @__PURE__ */ Z("div", {
|
|
7085
7161
|
className: "dc:min-w-[180px]",
|
|
7086
|
-
children: /* @__PURE__ */ Z(
|
|
7162
|
+
children: /* @__PURE__ */ Z(pi, {
|
|
7087
7163
|
fieldName: e.member,
|
|
7088
7164
|
operator: e.operator,
|
|
7089
7165
|
values: e.values || [],
|
|
@@ -7108,8 +7184,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7108
7184
|
})
|
|
7109
7185
|
]
|
|
7110
7186
|
});
|
|
7111
|
-
},
|
|
7112
|
-
let [o, s] = Y(!1), c = J(null), l = e.filter, { label: u } = e, { operator: d, values: f } = l, p =
|
|
7187
|
+
}, gi = s("close"), _i = s("edit"), vi = ({ filter: e, schema: t, isEditMode: n, onChange: r, onEdit: i, onRemove: a }) => {
|
|
7188
|
+
let [o, s] = Y(!1), c = J(null), l = e.filter, { label: u } = e, { operator: d, values: f } = l, p = ai(f || [], d), m = G((t) => {
|
|
7113
7189
|
r({
|
|
7114
7190
|
...e,
|
|
7115
7191
|
filter: {
|
|
@@ -7168,7 +7244,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7168
7244
|
onMouseLeave: (e) => {
|
|
7169
7245
|
e.currentTarget.style.color = "var(--dc-text-secondary)";
|
|
7170
7246
|
},
|
|
7171
|
-
children: /* @__PURE__ */ Z(
|
|
7247
|
+
children: /* @__PURE__ */ Z(_i, { className: "dc:w-3 dc:h-3" })
|
|
7172
7248
|
}), /* @__PURE__ */ Z("button", {
|
|
7173
7249
|
type: "button",
|
|
7174
7250
|
onClick: (e) => {
|
|
@@ -7182,10 +7258,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7182
7258
|
onMouseLeave: (e) => {
|
|
7183
7259
|
e.currentTarget.style.color = "var(--dc-text-secondary)";
|
|
7184
7260
|
},
|
|
7185
|
-
children: /* @__PURE__ */ Z(
|
|
7261
|
+
children: /* @__PURE__ */ Z(gi, { className: "dc:w-3 dc:h-3" })
|
|
7186
7262
|
})] })
|
|
7187
7263
|
]
|
|
7188
|
-
}), o && !n && /* @__PURE__ */ Z(
|
|
7264
|
+
}), o && !n && /* @__PURE__ */ Z(hi, {
|
|
7189
7265
|
filter: l,
|
|
7190
7266
|
schema: t,
|
|
7191
7267
|
onValuesChange: m,
|
|
@@ -7193,7 +7269,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7193
7269
|
anchorRef: c
|
|
7194
7270
|
})]
|
|
7195
7271
|
}) : null;
|
|
7196
|
-
},
|
|
7272
|
+
}, yi = s("add"), bi = s("timeDimension"), xi = s("chevronDown"), Si = s("filter"), Ci = ({ dashboardFilters: e, schema: t, isEditMode: n, onDashboardFiltersChange: r, onAddFilter: i, onEditFilter: a, onRemoveFilter: o }) => {
|
|
7197
7273
|
let { t: s } = P(), [c, l] = Y(e);
|
|
7198
7274
|
K(() => {
|
|
7199
7275
|
l(e);
|
|
@@ -7202,10 +7278,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7202
7278
|
if (!g) return null;
|
|
7203
7279
|
let e = g.filter;
|
|
7204
7280
|
return e.dateRange ? e.dateRange : e.values && e.values.length > 0 ? e.values.length === 1 && typeof e.values[0] == "string" ? e.values[0] : e.values : null;
|
|
7205
|
-
}, [g]), v = q(() =>
|
|
7281
|
+
}, [g]), v = q(() => ii(_), [_]), y = q(() => {
|
|
7206
7282
|
if (!_ || Array.isArray(_)) return null;
|
|
7207
|
-
let e =
|
|
7208
|
-
return
|
|
7283
|
+
let e = ii(_);
|
|
7284
|
+
return ti.find((t) => t.id === e)?.id || null;
|
|
7209
7285
|
}, [_]), b = q(() => c.filter((e) => !e.isUniversalTime), [c]), x = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), S = G((e) => {
|
|
7210
7286
|
if (g) {
|
|
7211
7287
|
let t = c.map((t) => t.id === g.id ? {
|
|
@@ -7247,9 +7323,9 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7247
7323
|
l(n), r(n);
|
|
7248
7324
|
}, [c, r]), D = q(() => {
|
|
7249
7325
|
if (!_) return null;
|
|
7250
|
-
if (Array.isArray(_)) return
|
|
7251
|
-
let e =
|
|
7252
|
-
return e ?
|
|
7326
|
+
if (Array.isArray(_)) return ri(new Date(_[0]), new Date(_[1] || _[0]));
|
|
7327
|
+
let e = ni(_);
|
|
7328
|
+
return e ? ri(e.start, e.end) : _;
|
|
7253
7329
|
}, [_]);
|
|
7254
7330
|
return !n && c.length === 0 ? null : /* @__PURE__ */ Q("div", {
|
|
7255
7331
|
className: "dc:border dc:rounded-lg",
|
|
@@ -7260,11 +7336,11 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7260
7336
|
children: [/* @__PURE__ */ Q("div", {
|
|
7261
7337
|
className: "dc:hidden dc:md:flex dc:items-center dc:gap-2 dc:px-3 dc:py-2",
|
|
7262
7338
|
children: [
|
|
7263
|
-
/* @__PURE__ */ Z(
|
|
7339
|
+
/* @__PURE__ */ Z(Si, {
|
|
7264
7340
|
className: "dc:w-4 dc:h-4 dc:shrink-0",
|
|
7265
7341
|
style: { color: "var(--dc-text-secondary)" }
|
|
7266
7342
|
}),
|
|
7267
|
-
/* @__PURE__ */ Z(
|
|
7343
|
+
/* @__PURE__ */ Z(oi, {
|
|
7268
7344
|
activePreset: v !== "custom" && !y ? v : null,
|
|
7269
7345
|
onPresetSelect: C
|
|
7270
7346
|
}),
|
|
@@ -7284,11 +7360,11 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7284
7360
|
borderColor: v === "custom" ? "transparent" : "var(--dc-border)"
|
|
7285
7361
|
},
|
|
7286
7362
|
children: [
|
|
7287
|
-
/* @__PURE__ */ Z(
|
|
7363
|
+
/* @__PURE__ */ Z(bi, { className: "dc:w-3 dc:h-3" }),
|
|
7288
7364
|
/* @__PURE__ */ Z("span", { children: s("dateRange.custom") }),
|
|
7289
|
-
/* @__PURE__ */ Z(
|
|
7365
|
+
/* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })
|
|
7290
7366
|
]
|
|
7291
|
-
}), u && /* @__PURE__ */ Z(
|
|
7367
|
+
}), u && /* @__PURE__ */ Z(ci, {
|
|
7292
7368
|
isOpen: u,
|
|
7293
7369
|
onClose: () => d(!1),
|
|
7294
7370
|
onDateRangeChange: T,
|
|
@@ -7311,8 +7387,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7311
7387
|
color: y ? "white" : "var(--dc-text)",
|
|
7312
7388
|
borderColor: y ? "transparent" : "var(--dc-border)"
|
|
7313
7389
|
},
|
|
7314
|
-
children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(
|
|
7315
|
-
}), f && /* @__PURE__ */ Z(
|
|
7390
|
+
children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })]
|
|
7391
|
+
}), f && /* @__PURE__ */ Z(ui, {
|
|
7316
7392
|
isOpen: f,
|
|
7317
7393
|
onClose: () => p(!1),
|
|
7318
7394
|
onSelect: w,
|
|
@@ -7326,7 +7402,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7326
7402
|
}),
|
|
7327
7403
|
/* @__PURE__ */ Z("div", {
|
|
7328
7404
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:flex-wrap",
|
|
7329
|
-
children: b.map((e) => /* @__PURE__ */ Z(
|
|
7405
|
+
children: b.map((e) => /* @__PURE__ */ Z(vi, {
|
|
7330
7406
|
filter: e,
|
|
7331
7407
|
schema: t,
|
|
7332
7408
|
isEditMode: n,
|
|
@@ -7350,7 +7426,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7350
7426
|
onMouseLeave: (e) => {
|
|
7351
7427
|
e.currentTarget.style.backgroundColor = "transparent";
|
|
7352
7428
|
},
|
|
7353
|
-
children: /* @__PURE__ */ Z(
|
|
7429
|
+
children: /* @__PURE__ */ Z(yi, { className: "dc:w-3.5 dc:h-3.5" })
|
|
7354
7430
|
})
|
|
7355
7431
|
]
|
|
7356
7432
|
}), /* @__PURE__ */ Q("div", {
|
|
@@ -7358,10 +7434,10 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7358
7434
|
children: [
|
|
7359
7435
|
/* @__PURE__ */ Q("div", {
|
|
7360
7436
|
className: "dc:flex dc:items-center dc:gap-2 dc:overflow-x-auto dc:px-3 dc:py-2 scrollbar-thin",
|
|
7361
|
-
children: [/* @__PURE__ */ Z(
|
|
7437
|
+
children: [/* @__PURE__ */ Z(Si, {
|
|
7362
7438
|
className: "dc:w-4 dc:h-4 dc:shrink-0",
|
|
7363
7439
|
style: { color: "var(--dc-text-secondary)" }
|
|
7364
|
-
}), /* @__PURE__ */ Z(
|
|
7440
|
+
}), /* @__PURE__ */ Z(oi, {
|
|
7365
7441
|
activePreset: v !== "custom" && !y ? v : null,
|
|
7366
7442
|
onPresetSelect: C
|
|
7367
7443
|
})]
|
|
@@ -7385,8 +7461,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7385
7461
|
color: v === "custom" ? "white" : "var(--dc-text)",
|
|
7386
7462
|
borderColor: v === "custom" ? "transparent" : "var(--dc-border)"
|
|
7387
7463
|
},
|
|
7388
|
-
children: [/* @__PURE__ */ Z(
|
|
7389
|
-
}), u && /* @__PURE__ */ Z(
|
|
7464
|
+
children: [/* @__PURE__ */ Z(bi, { className: "dc:w-3 dc:h-3" }), /* @__PURE__ */ Z("span", { children: s("dateRange.custom") })]
|
|
7465
|
+
}), u && /* @__PURE__ */ Z(ci, {
|
|
7390
7466
|
isOpen: u,
|
|
7391
7467
|
onClose: () => d(!1),
|
|
7392
7468
|
onDateRangeChange: T,
|
|
@@ -7407,8 +7483,8 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7407
7483
|
color: y ? "white" : "var(--dc-text)",
|
|
7408
7484
|
borderColor: y ? "transparent" : "var(--dc-border)"
|
|
7409
7485
|
},
|
|
7410
|
-
children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(
|
|
7411
|
-
}), f && /* @__PURE__ */ Z(
|
|
7486
|
+
children: [/* @__PURE__ */ Z("span", { children: "XTD" }), /* @__PURE__ */ Z(xi, { className: "dc:w-3 dc:h-3" })]
|
|
7487
|
+
}), f && /* @__PURE__ */ Z(ui, {
|
|
7412
7488
|
isOpen: f,
|
|
7413
7489
|
onClose: () => p(!1),
|
|
7414
7490
|
onSelect: w,
|
|
@@ -7425,7 +7501,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7425
7501
|
color: "var(--dc-text-secondary)",
|
|
7426
7502
|
backgroundColor: "transparent"
|
|
7427
7503
|
},
|
|
7428
|
-
children: /* @__PURE__ */ Z(
|
|
7504
|
+
children: /* @__PURE__ */ Z(yi, { className: "dc:w-3.5 dc:h-3.5" })
|
|
7429
7505
|
})]
|
|
7430
7506
|
}),
|
|
7431
7507
|
b.length > 0 && /* @__PURE__ */ Z("div", {
|
|
@@ -7433,7 +7509,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7433
7509
|
style: { borderColor: "var(--dc-border)" },
|
|
7434
7510
|
children: /* @__PURE__ */ Z("div", {
|
|
7435
7511
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:flex-wrap",
|
|
7436
|
-
children: b.map((e) => /* @__PURE__ */ Z(
|
|
7512
|
+
children: b.map((e) => /* @__PURE__ */ Z(vi, {
|
|
7437
7513
|
filter: e,
|
|
7438
7514
|
schema: t,
|
|
7439
7515
|
isEditMode: n,
|
|
@@ -7446,7 +7522,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7446
7522
|
]
|
|
7447
7523
|
})]
|
|
7448
7524
|
});
|
|
7449
|
-
},
|
|
7525
|
+
}, wi = ({ dashboardFilters: e, editable: t, schema: n, dashboardConfig: r, onDashboardFiltersChange: i, onSaveFilters: a, selectedFilterId: o, onFilterSelect: s, isEditMode: c = !1 }) => {
|
|
7450
7526
|
let [l, u] = Y(null), [d, f] = Y(!1), p = G((e) => e ? { cubes: e.cubes.map((e) => ({
|
|
7451
7527
|
name: e.name,
|
|
7452
7528
|
title: e.title || e.name,
|
|
@@ -7472,7 +7548,9 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7472
7548
|
description: "",
|
|
7473
7549
|
shortTitle: e.shortTitle
|
|
7474
7550
|
})) || []
|
|
7475
|
-
})) } : null, []), m = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), h = G(() => {
|
|
7551
|
+
})) } : null, []), m = G(() => `df_${Date.now()}_${Math.random().toString(36).substring(7)}`, []), h = G(async (e) => {
|
|
7552
|
+
i(e), a && await a(e);
|
|
7553
|
+
}, [i, a]), g = G(() => {
|
|
7476
7554
|
u({
|
|
7477
7555
|
id: m(),
|
|
7478
7556
|
label: `Filter ${e.length + 1}`,
|
|
@@ -7482,7 +7560,7 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7482
7560
|
values: []
|
|
7483
7561
|
}
|
|
7484
7562
|
}), f(!0);
|
|
7485
|
-
}, [e.length, m]),
|
|
7563
|
+
}, [e.length, m]), _ = G(() => {
|
|
7486
7564
|
let t = {
|
|
7487
7565
|
id: m(),
|
|
7488
7566
|
label: "Date Range Filter",
|
|
@@ -7493,32 +7571,33 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7493
7571
|
values: ["last 30 days"]
|
|
7494
7572
|
}
|
|
7495
7573
|
};
|
|
7496
|
-
|
|
7574
|
+
h([...e, t]).catch((e) => {
|
|
7575
|
+
console.error("Failed to save filters:", e);
|
|
7576
|
+
});
|
|
7497
7577
|
}, [
|
|
7498
7578
|
m,
|
|
7499
7579
|
e,
|
|
7500
|
-
|
|
7501
|
-
]),
|
|
7580
|
+
h
|
|
7581
|
+
]), v = G((t) => {
|
|
7502
7582
|
let n = e.find((e) => e.id === t);
|
|
7503
7583
|
n && (u(n), f(!0));
|
|
7504
|
-
}, [e]),
|
|
7505
|
-
|
|
7584
|
+
}, [e]), y = G((t) => {
|
|
7585
|
+
h(e.filter((e) => e.id !== t)).catch((e) => {
|
|
7586
|
+
console.error("Failed to save filters:", e);
|
|
7587
|
+
}), l?.id === t && (u(null), f(!1));
|
|
7506
7588
|
}, [
|
|
7507
7589
|
e,
|
|
7508
7590
|
l,
|
|
7509
|
-
|
|
7510
|
-
]),
|
|
7591
|
+
h
|
|
7592
|
+
]), b = G(async (t) => {
|
|
7511
7593
|
let n = e.findIndex((e) => e.id === t.id), r;
|
|
7512
|
-
|
|
7513
|
-
|
|
7594
|
+
r = n >= 0 ? e.map((e) => e.id === t.id ? t : e) : [...e, t];
|
|
7595
|
+
try {
|
|
7596
|
+
await h(r);
|
|
7514
7597
|
} catch (e) {
|
|
7515
7598
|
throw console.error("Failed to save filters:", e), e;
|
|
7516
7599
|
}
|
|
7517
|
-
}, [
|
|
7518
|
-
e,
|
|
7519
|
-
i,
|
|
7520
|
-
a
|
|
7521
|
-
]), b = G(() => {
|
|
7600
|
+
}, [e, h]), x = G(() => {
|
|
7522
7601
|
u(null), f(!1);
|
|
7523
7602
|
}, []);
|
|
7524
7603
|
return !t || !c && e.length === 0 ? null : /* @__PURE__ */ Q("div", {
|
|
@@ -7530,38 +7609,38 @@ var ui = ({ filter: e, schema: t, onValuesChange: n, onClose: r, anchorRef: i })
|
|
|
7530
7609
|
backgroundColor: "var(--dc-surface)",
|
|
7531
7610
|
boxShadow: "var(--dc-shadow-sm)"
|
|
7532
7611
|
},
|
|
7533
|
-
children: /* @__PURE__ */ Z(
|
|
7612
|
+
children: /* @__PURE__ */ Z($r, {
|
|
7534
7613
|
dashboardFilters: e,
|
|
7535
|
-
onAddFilter:
|
|
7536
|
-
onAddTimeFilter:
|
|
7537
|
-
onEditFilter:
|
|
7538
|
-
onRemoveFilter:
|
|
7614
|
+
onAddFilter: g,
|
|
7615
|
+
onAddTimeFilter: _,
|
|
7616
|
+
onEditFilter: v,
|
|
7617
|
+
onRemoveFilter: y,
|
|
7539
7618
|
selectedFilterId: o,
|
|
7540
7619
|
onFilterSelect: s
|
|
7541
7620
|
})
|
|
7542
|
-
}) : /* @__PURE__ */ Z(
|
|
7621
|
+
}) : /* @__PURE__ */ Z(Ci, {
|
|
7543
7622
|
dashboardFilters: e,
|
|
7544
7623
|
schema: n,
|
|
7545
7624
|
isEditMode: !1,
|
|
7546
7625
|
onDashboardFiltersChange: i,
|
|
7547
|
-
onAddFilter:
|
|
7548
|
-
onEditFilter:
|
|
7549
|
-
onRemoveFilter:
|
|
7550
|
-
}), d && l && /* @__PURE__ */ Z(
|
|
7626
|
+
onAddFilter: g,
|
|
7627
|
+
onEditFilter: v,
|
|
7628
|
+
onRemoveFilter: y
|
|
7629
|
+
}), d && l && /* @__PURE__ */ Z(Kr, {
|
|
7551
7630
|
filter: l,
|
|
7552
7631
|
schema: n,
|
|
7553
7632
|
dashboardConfig: r,
|
|
7554
7633
|
isOpen: d,
|
|
7555
|
-
onSave:
|
|
7556
|
-
onClose:
|
|
7557
|
-
onDelete: () =>
|
|
7634
|
+
onSave: b,
|
|
7635
|
+
onClose: x,
|
|
7636
|
+
onDelete: () => y(l.id),
|
|
7558
7637
|
convertToMetaResponse: p
|
|
7559
7638
|
})]
|
|
7560
7639
|
});
|
|
7561
|
-
},
|
|
7562
|
-
function
|
|
7563
|
-
let { t: e } = P(), { dashboardFilters: t, editable: n, schema: r, config: i, onDashboardFiltersChange: a, onSave: o, selectedFilterId: s, selectedFilter: c, isEditMode: l, handleFilterSelect: u, handleSelectAllForFilter: d, actions: f } =
|
|
7564
|
-
return /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(
|
|
7640
|
+
}, Ti = s("filter");
|
|
7641
|
+
function Ei() {
|
|
7642
|
+
let { t: e } = P(), { dashboardFilters: t, editable: n, schema: r, config: i, onDashboardFiltersChange: a, onSave: o, selectedFilterId: s, selectedFilter: c, isEditMode: l, handleFilterSelect: u, handleSelectAllForFilter: d, actions: f } = Rn();
|
|
7643
|
+
return /* @__PURE__ */ Q(X, { children: [/* @__PURE__ */ Z(wi, {
|
|
7565
7644
|
dashboardFilters: t || [],
|
|
7566
7645
|
editable: n,
|
|
7567
7646
|
schema: r || null,
|
|
@@ -7588,7 +7667,7 @@ function xi() {
|
|
|
7588
7667
|
children: [/* @__PURE__ */ Q("div", {
|
|
7589
7668
|
className: "dc:flex dc:items-center dc:gap-2 dc:flex-wrap",
|
|
7590
7669
|
children: [
|
|
7591
|
-
/* @__PURE__ */ Z(
|
|
7670
|
+
/* @__PURE__ */ Z(Ti, { className: "dc:w-5 dc:h-5 dc:shrink-0" }),
|
|
7592
7671
|
/* @__PURE__ */ Z("span", {
|
|
7593
7672
|
className: "dc:font-medium",
|
|
7594
7673
|
children: e("dashboard.filterSelectionMode", { filterLabel: c.label })
|
|
@@ -7627,8 +7706,8 @@ function xi() {
|
|
|
7627
7706
|
}
|
|
7628
7707
|
//#endregion
|
|
7629
7708
|
//#region src/client/components/MobileStackedLayout.tsx
|
|
7630
|
-
var
|
|
7631
|
-
function
|
|
7709
|
+
var Di = s("refresh");
|
|
7710
|
+
function Oi(e) {
|
|
7632
7711
|
if (!e) return null;
|
|
7633
7712
|
let t = e.parentElement;
|
|
7634
7713
|
for (; t;) {
|
|
@@ -7639,9 +7718,9 @@ function Ci(e) {
|
|
|
7639
7718
|
}
|
|
7640
7719
|
return null;
|
|
7641
7720
|
}
|
|
7642
|
-
function
|
|
7721
|
+
function ki({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh: r }) {
|
|
7643
7722
|
let i = J({}), [a, o] = Y(null), s = J(null), c = G((e) => {
|
|
7644
|
-
s.current = e, e && o(
|
|
7723
|
+
s.current = e, e && o(Oi(e));
|
|
7645
7724
|
}, []), l = q(() => [...e.portlets].sort((e, t) => e.y === t.y ? e.x - t.x : e.y - t.y), [e.portlets]), u = (e) => {
|
|
7646
7725
|
i.current[e]?.refresh(), r?.(e);
|
|
7647
7726
|
};
|
|
@@ -7651,7 +7730,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
|
|
|
7651
7730
|
ref: c,
|
|
7652
7731
|
className: "mobile-stacked-layout dc:space-y-4 dc:px-2",
|
|
7653
7732
|
children: l.map((r) => {
|
|
7654
|
-
let { analysisConfig: a } =
|
|
7733
|
+
let { analysisConfig: a } = yt(r), o = a.charts[a.analysisType], s = JSON.stringify(a.query), c = o?.chartType || "line", l = o?.chartConfig, d = o?.displayConfig, f = c === "markdown" && !!d?.transparentBackground, p = c === "markdown" && (d?.autoHeight ?? !0), m = c === "markdown" ? (d?.hideHeader ?? !0) || !r.title : d?.hideHeader ?? !1, h = Math.max(300, r.h * 80), g = h - (m ? 0 : 40) - 24;
|
|
7655
7734
|
return /* @__PURE__ */ Q("div", {
|
|
7656
7735
|
"data-portlet-id": r.id,
|
|
7657
7736
|
className: f ? "dc:flex dc:flex-col" : "bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
|
|
@@ -7673,7 +7752,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
|
|
|
7673
7752
|
onClick: () => u(r.id),
|
|
7674
7753
|
className: "dc:p-1 bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer hover:bg-dc-surface-hover dc:transition-colors",
|
|
7675
7754
|
title: "Refresh portlet data",
|
|
7676
|
-
children: /* @__PURE__ */ Z(
|
|
7755
|
+
children: /* @__PURE__ */ Z(Di, { style: {
|
|
7677
7756
|
width: "16px",
|
|
7678
7757
|
height: "16px",
|
|
7679
7758
|
color: "currentColor"
|
|
@@ -7683,7 +7762,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
|
|
|
7683
7762
|
}), /* @__PURE__ */ Z("div", {
|
|
7684
7763
|
className: `dc:overflow-visible dc:flex dc:flex-col${f ? "" : " dc:px-2 dc:py-3"}`,
|
|
7685
7764
|
style: { height: p ? "auto" : g },
|
|
7686
|
-
children: /* @__PURE__ */ Z(
|
|
7765
|
+
children: /* @__PURE__ */ Z(It, {
|
|
7687
7766
|
ref: (e) => {
|
|
7688
7767
|
i.current[r.id] = e;
|
|
7689
7768
|
},
|
|
@@ -7706,7 +7785,7 @@ function wi({ config: e, colorPalette: t, dashboardFilters: n, onPortletRefresh:
|
|
|
7706
7785
|
}
|
|
7707
7786
|
//#endregion
|
|
7708
7787
|
//#region src/client/components/ScaledGridWrapper.tsx
|
|
7709
|
-
function
|
|
7788
|
+
function Ai({ scaleFactor: e, designWidth: t, children: n }) {
|
|
7710
7789
|
let [r, i] = Y(0), a = J(null);
|
|
7711
7790
|
K(() => {
|
|
7712
7791
|
if (!a.current) return;
|
|
@@ -7737,15 +7816,15 @@ function Ti({ scaleFactor: e, designWidth: t, children: n }) {
|
|
|
7737
7816
|
}
|
|
7738
7817
|
//#endregion
|
|
7739
7818
|
//#region src/client/components/dashboard/DashboardGridSurface.tsx
|
|
7740
|
-
var
|
|
7741
|
-
function
|
|
7742
|
-
let { t: e } = P(), { config: t, gridContentRef: n, displayMode: r, scaleFactor: i, designWidth: a, colorPalette: o, dashboardFilters: s, handlePortletRefresh: c, renderActiveLayout: l, editable: u, handleAddText: d, handleAddPortlet: f } =
|
|
7819
|
+
var ji = s("measure"), Mi = s("add");
|
|
7820
|
+
function Ni() {
|
|
7821
|
+
let { t: e } = P(), { config: t, gridContentRef: n, displayMode: r, scaleFactor: i, designWidth: a, colorPalette: o, dashboardFilters: s, handlePortletRefresh: c, renderActiveLayout: l, editable: u, handleAddText: d, handleAddPortlet: f } = Rn();
|
|
7743
7822
|
return !t.portlets || t.portlets.length === 0 ? /* @__PURE__ */ Z("div", {
|
|
7744
7823
|
className: "dc:flex dc:justify-center dc:items-center dc:min-h-[50vh]",
|
|
7745
7824
|
children: /* @__PURE__ */ Q("div", {
|
|
7746
7825
|
className: "dc:text-center",
|
|
7747
7826
|
children: [
|
|
7748
|
-
/* @__PURE__ */ Z(
|
|
7827
|
+
/* @__PURE__ */ Z(ji, { style: {
|
|
7749
7828
|
width: "64px",
|
|
7750
7829
|
height: "64px",
|
|
7751
7830
|
color: "var(--dc-text-muted)",
|
|
@@ -7770,7 +7849,7 @@ function Oi() {
|
|
|
7770
7849
|
},
|
|
7771
7850
|
onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface-hover)",
|
|
7772
7851
|
onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface)",
|
|
7773
|
-
children: [/* @__PURE__ */ Z(
|
|
7852
|
+
children: [/* @__PURE__ */ Z(In, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addText")]
|
|
7774
7853
|
}), /* @__PURE__ */ Q("button", {
|
|
7775
7854
|
onClick: f,
|
|
7776
7855
|
className: "dc:inline-flex dc:items-center dc:px-4 dc:py-2 dc:border border-dc-border bg-dc-surface dc:rounded-md focus:outline-hidden dc:focus:ring-2",
|
|
@@ -7780,19 +7859,19 @@ function Oi() {
|
|
|
7780
7859
|
},
|
|
7781
7860
|
onMouseEnter: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface-hover)",
|
|
7782
7861
|
onMouseLeave: (e) => e.currentTarget.style.backgroundColor = "var(--dc-surface)",
|
|
7783
|
-
children: [/* @__PURE__ */ Z(
|
|
7862
|
+
children: [/* @__PURE__ */ Z(Mi, { className: "dc:w-5 dc:h-5 dc:mr-2" }), e("dashboard.addPortlet")]
|
|
7784
7863
|
})]
|
|
7785
7864
|
})
|
|
7786
7865
|
]
|
|
7787
7866
|
})
|
|
7788
7867
|
}) : /* @__PURE__ */ Z("div", {
|
|
7789
7868
|
ref: n,
|
|
7790
|
-
children: r === "mobile" ? /* @__PURE__ */ Z(
|
|
7869
|
+
children: r === "mobile" ? /* @__PURE__ */ Z(ki, {
|
|
7791
7870
|
config: t,
|
|
7792
7871
|
colorPalette: o,
|
|
7793
7872
|
dashboardFilters: s,
|
|
7794
7873
|
onPortletRefresh: c
|
|
7795
|
-
}) : r === "scaled" ? /* @__PURE__ */ Z(
|
|
7874
|
+
}) : r === "scaled" ? /* @__PURE__ */ Z(Ai, {
|
|
7796
7875
|
scaleFactor: i,
|
|
7797
7876
|
designWidth: a,
|
|
7798
7877
|
children: l()
|
|
@@ -7801,7 +7880,7 @@ function Oi() {
|
|
|
7801
7880
|
}
|
|
7802
7881
|
//#endregion
|
|
7803
7882
|
//#region src/client/components/Modal.tsx
|
|
7804
|
-
var
|
|
7883
|
+
var Pi = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClick: i = !0, closeOnEscape: a = !0, showCloseButton: o = !0, children: s, footer: c, noPadding: l = !1 }) => {
|
|
7805
7884
|
let u = G((e) => {
|
|
7806
7885
|
e.key === "Escape" && a && t();
|
|
7807
7886
|
}, [a, t]);
|
|
@@ -7872,20 +7951,20 @@ var ki = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClic
|
|
|
7872
7951
|
]
|
|
7873
7952
|
})
|
|
7874
7953
|
}) : null;
|
|
7875
|
-
},
|
|
7954
|
+
}, Fi = W(() => import("./analysis-builder-MuMIzoRq.js")), Ii = U((e, t) => /* @__PURE__ */ Z(H, {
|
|
7876
7955
|
fallback: /* @__PURE__ */ Z("div", {
|
|
7877
7956
|
className: "dc:flex dc:items-center dc:justify-center dc:w-full dc:py-6",
|
|
7878
7957
|
children: /* @__PURE__ */ Z(ce, {})
|
|
7879
7958
|
}),
|
|
7880
|
-
children: /* @__PURE__ */ Z(
|
|
7959
|
+
children: /* @__PURE__ */ Z(Fi, {
|
|
7881
7960
|
...e,
|
|
7882
7961
|
ref: t
|
|
7883
7962
|
})
|
|
7884
7963
|
}));
|
|
7885
|
-
|
|
7964
|
+
Ii.displayName = "AnalysisBuilder";
|
|
7886
7965
|
//#endregion
|
|
7887
7966
|
//#region src/client/adapters/funnelModeAdapter.ts
|
|
7888
|
-
function
|
|
7967
|
+
function Li(e) {
|
|
7889
7968
|
let t = "";
|
|
7890
7969
|
e.funnelBindingKey && (typeof e.funnelBindingKey.dimension == "string" ? t = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (t = e.funnelBindingKey.dimension.map((e) => ({
|
|
7891
7970
|
cube: e.cube,
|
|
@@ -7902,7 +7981,7 @@ function Mi(e) {
|
|
|
7902
7981
|
includeTimeMetrics: !0
|
|
7903
7982
|
} };
|
|
7904
7983
|
}
|
|
7905
|
-
function
|
|
7984
|
+
function Ri(e) {
|
|
7906
7985
|
let { funnel: t } = e, n = null;
|
|
7907
7986
|
if (t.steps.length > 0 && t.steps[0].cube) n = t.steps[0].cube;
|
|
7908
7987
|
else if (typeof t.bindingKey == "string") {
|
|
@@ -7919,7 +7998,7 @@ function Ni(e) {
|
|
|
7919
7998
|
let a = t.steps.map((e) => {
|
|
7920
7999
|
let t = [];
|
|
7921
8000
|
return e.filter && (t = Array.isArray(e.filter) ? e.filter : typeof e.filter == "object" && "and" in e.filter ? e.filter.and : [e.filter]), {
|
|
7922
|
-
id:
|
|
8001
|
+
id: pr(),
|
|
7923
8002
|
name: e.name,
|
|
7924
8003
|
cube: e.cube || n || "",
|
|
7925
8004
|
filters: t,
|
|
@@ -7934,14 +8013,14 @@ function Ni(e) {
|
|
|
7934
8013
|
funnelBindingKey: r
|
|
7935
8014
|
};
|
|
7936
8015
|
}
|
|
7937
|
-
function
|
|
8016
|
+
function zi(e) {
|
|
7938
8017
|
if (!e || typeof e != "object") return !1;
|
|
7939
8018
|
let t = e;
|
|
7940
8019
|
if (t.version !== 1 || t.analysisType !== "funnel" || !t.query || typeof t.query != "object") return !1;
|
|
7941
8020
|
let n = t.query;
|
|
7942
8021
|
return !(!n.funnel || typeof n.funnel != "object");
|
|
7943
8022
|
}
|
|
7944
|
-
var
|
|
8023
|
+
var Bi = {
|
|
7945
8024
|
type: "funnel",
|
|
7946
8025
|
createInitial() {
|
|
7947
8026
|
return {
|
|
@@ -7962,11 +8041,11 @@ var Fi = {
|
|
|
7962
8041
|
};
|
|
7963
8042
|
},
|
|
7964
8043
|
canLoad(e) {
|
|
7965
|
-
return
|
|
8044
|
+
return zi(e);
|
|
7966
8045
|
},
|
|
7967
8046
|
load(e) {
|
|
7968
8047
|
if (e.analysisType !== "funnel") throw Error(`Cannot load ${e.analysisType} config with funnel adapter`);
|
|
7969
|
-
return
|
|
8048
|
+
return Ri(e.query);
|
|
7970
8049
|
},
|
|
7971
8050
|
save(e, t, n) {
|
|
7972
8051
|
return {
|
|
@@ -7974,7 +8053,7 @@ var Fi = {
|
|
|
7974
8053
|
analysisType: "funnel",
|
|
7975
8054
|
activeView: n,
|
|
7976
8055
|
charts: { funnel: t.funnel || this.getDefaultChartConfig() },
|
|
7977
|
-
query:
|
|
8056
|
+
query: Li(e)
|
|
7978
8057
|
};
|
|
7979
8058
|
},
|
|
7980
8059
|
validate(e) {
|
|
@@ -8009,7 +8088,7 @@ var Fi = {
|
|
|
8009
8088
|
};
|
|
8010
8089
|
//#endregion
|
|
8011
8090
|
//#region src/client/adapters/flowModeAdapter.ts
|
|
8012
|
-
function
|
|
8091
|
+
function Vi(e) {
|
|
8013
8092
|
let t = "";
|
|
8014
8093
|
return e.flowBindingKey && (typeof e.flowBindingKey.dimension == "string" ? t = e.flowBindingKey.dimension : Array.isArray(e.flowBindingKey.dimension) && (t = e.flowBindingKey.dimension.map((e) => ({
|
|
8015
8094
|
cube: e.cube,
|
|
@@ -8027,7 +8106,7 @@ function Ii(e) {
|
|
|
8027
8106
|
joinStrategy: e.joinStrategy
|
|
8028
8107
|
} };
|
|
8029
8108
|
}
|
|
8030
|
-
function
|
|
8109
|
+
function Hi(e) {
|
|
8031
8110
|
let { flow: t } = e, n = null;
|
|
8032
8111
|
if (typeof t.bindingKey == "string") {
|
|
8033
8112
|
let e = t.bindingKey.split(".");
|
|
@@ -8055,14 +8134,14 @@ function Li(e) {
|
|
|
8055
8134
|
joinStrategy: t.joinStrategy || "auto"
|
|
8056
8135
|
};
|
|
8057
8136
|
}
|
|
8058
|
-
function
|
|
8137
|
+
function Ui(e) {
|
|
8059
8138
|
if (!e || typeof e != "object") return !1;
|
|
8060
8139
|
let t = e;
|
|
8061
8140
|
if (t.version !== 1 || t.analysisType !== "flow" || !t.query || typeof t.query != "object") return !1;
|
|
8062
8141
|
let n = t.query;
|
|
8063
8142
|
return !(!n.flow || typeof n.flow != "object");
|
|
8064
8143
|
}
|
|
8065
|
-
var
|
|
8144
|
+
var Wi = {
|
|
8066
8145
|
type: "flow",
|
|
8067
8146
|
createInitial() {
|
|
8068
8147
|
return {
|
|
@@ -8092,11 +8171,11 @@ var zi = {
|
|
|
8092
8171
|
};
|
|
8093
8172
|
},
|
|
8094
8173
|
canLoad(e) {
|
|
8095
|
-
return
|
|
8174
|
+
return Ui(e);
|
|
8096
8175
|
},
|
|
8097
8176
|
load(e) {
|
|
8098
8177
|
if (e.analysisType !== "flow") throw Error(`Cannot load ${e.analysisType} config with flow adapter`);
|
|
8099
|
-
return
|
|
8178
|
+
return Hi(e.query);
|
|
8100
8179
|
},
|
|
8101
8180
|
save(e, t, n) {
|
|
8102
8181
|
return {
|
|
@@ -8104,7 +8183,7 @@ var zi = {
|
|
|
8104
8183
|
analysisType: "flow",
|
|
8105
8184
|
activeView: n,
|
|
8106
8185
|
charts: { flow: t.flow || this.getDefaultChartConfig() },
|
|
8107
|
-
query:
|
|
8186
|
+
query: Vi(e)
|
|
8108
8187
|
};
|
|
8109
8188
|
},
|
|
8110
8189
|
validate(e) {
|
|
@@ -8139,7 +8218,7 @@ var zi = {
|
|
|
8139
8218
|
};
|
|
8140
8219
|
//#endregion
|
|
8141
8220
|
//#region src/client/adapters/retentionModeAdapter.ts
|
|
8142
|
-
function
|
|
8221
|
+
function Gi(e) {
|
|
8143
8222
|
let t = "";
|
|
8144
8223
|
e.retentionBindingKey && (typeof e.retentionBindingKey.dimension == "string" ? t = e.retentionBindingKey.dimension : Array.isArray(e.retentionBindingKey.dimension) && (t = e.retentionBindingKey.dimension.map((e) => ({
|
|
8145
8224
|
cube: e.cube,
|
|
@@ -8155,7 +8234,7 @@ function Bi(e) {
|
|
|
8155
8234
|
} };
|
|
8156
8235
|
return e.retentionCohortFilters.length > 0 && (n.retention.cohortFilters = e.retentionCohortFilters.length === 1 ? e.retentionCohortFilters[0] : e.retentionCohortFilters), e.retentionActivityFilters.length > 0 && (n.retention.activityFilters = e.retentionActivityFilters.length === 1 ? e.retentionActivityFilters[0] : e.retentionActivityFilters), e.retentionBreakdowns && e.retentionBreakdowns.length > 0 && (n.retention.breakdownDimensions = e.retentionBreakdowns.map((e) => e.field)), n;
|
|
8157
8236
|
}
|
|
8158
|
-
function
|
|
8237
|
+
function Ki(e) {
|
|
8159
8238
|
let { retention: t } = e, n = null;
|
|
8160
8239
|
if (typeof t.timeDimension == "string") {
|
|
8161
8240
|
let e = t.timeDimension.split(".");
|
|
@@ -8191,17 +8270,17 @@ function Vi(e) {
|
|
|
8191
8270
|
retentionBreakdowns: s
|
|
8192
8271
|
};
|
|
8193
8272
|
}
|
|
8194
|
-
function
|
|
8273
|
+
function qi(e) {
|
|
8195
8274
|
if (!e || typeof e != "object") return !1;
|
|
8196
8275
|
let t = e;
|
|
8197
8276
|
if (t.version !== 1 || t.analysisType !== "retention" || !t.query || typeof t.query != "object") return !1;
|
|
8198
8277
|
let n = t.query;
|
|
8199
8278
|
return !(!n.retention || typeof n.retention != "object");
|
|
8200
8279
|
}
|
|
8201
|
-
var
|
|
8280
|
+
var Ji = {
|
|
8202
8281
|
type: "retention",
|
|
8203
8282
|
createInitial() {
|
|
8204
|
-
return { ...
|
|
8283
|
+
return { ...F };
|
|
8205
8284
|
},
|
|
8206
8285
|
extractState(e) {
|
|
8207
8286
|
return {
|
|
@@ -8218,11 +8297,11 @@ var Ui = {
|
|
|
8218
8297
|
};
|
|
8219
8298
|
},
|
|
8220
8299
|
canLoad(e) {
|
|
8221
|
-
return
|
|
8300
|
+
return qi(e);
|
|
8222
8301
|
},
|
|
8223
8302
|
load(e) {
|
|
8224
8303
|
if (e.analysisType !== "retention") throw Error(`Cannot load ${e.analysisType} config with retention adapter`);
|
|
8225
|
-
return
|
|
8304
|
+
return Ki(e.query);
|
|
8226
8305
|
},
|
|
8227
8306
|
save(e, t, n) {
|
|
8228
8307
|
return {
|
|
@@ -8230,7 +8309,7 @@ var Ui = {
|
|
|
8230
8309
|
analysisType: "retention",
|
|
8231
8310
|
activeView: n,
|
|
8232
8311
|
charts: { retention: t.retention || this.getDefaultChartConfig() },
|
|
8233
|
-
query:
|
|
8312
|
+
query: Gi(e)
|
|
8234
8313
|
};
|
|
8235
8314
|
},
|
|
8236
8315
|
validate(e) {
|
|
@@ -8268,8 +8347,8 @@ var Ui = {
|
|
|
8268
8347
|
};
|
|
8269
8348
|
//#endregion
|
|
8270
8349
|
//#region src/client/components/PortletAnalysisModal.tsx
|
|
8271
|
-
function
|
|
8272
|
-
let { t: c } = P(), l = J(null), [u, d] = Y(""), f = q(() => r ?
|
|
8350
|
+
function Yi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, title: a, submitText: o, colorPalette: s }) {
|
|
8351
|
+
let { t: c } = P(), l = J(null), [u, d] = Y(""), f = q(() => r ? yt(r).analysisConfig : null, [r]), p = q(() => {
|
|
8273
8352
|
if (!f) return;
|
|
8274
8353
|
let e = f.query;
|
|
8275
8354
|
if (e) return e;
|
|
@@ -8293,7 +8372,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8293
8372
|
funnelDisplayConfig: r.funnelDisplayConfig
|
|
8294
8373
|
};
|
|
8295
8374
|
if (f.query && "funnel" in f.query) {
|
|
8296
|
-
let e =
|
|
8375
|
+
let e = Bi.load(f), t = f.charts?.funnel;
|
|
8297
8376
|
return {
|
|
8298
8377
|
...e,
|
|
8299
8378
|
funnelChartType: t?.chartType,
|
|
@@ -8304,7 +8383,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8304
8383
|
}
|
|
8305
8384
|
}, [f, r]), _ = q(() => {
|
|
8306
8385
|
if (f?.analysisType === "flow" && f.query && "flow" in f.query) {
|
|
8307
|
-
let e =
|
|
8386
|
+
let e = Wi.load(f), t = f.charts?.flow;
|
|
8308
8387
|
return {
|
|
8309
8388
|
...e,
|
|
8310
8389
|
flowChartType: t?.chartType,
|
|
@@ -8314,7 +8393,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8314
8393
|
}
|
|
8315
8394
|
}, [f]), v = q(() => {
|
|
8316
8395
|
if (f?.analysisType === "retention" && f.query && "retention" in f.query) {
|
|
8317
|
-
let e =
|
|
8396
|
+
let e = Ji.load(f), t = f.charts?.retention;
|
|
8318
8397
|
return {
|
|
8319
8398
|
...e,
|
|
8320
8399
|
retentionChartType: t?.chartType,
|
|
@@ -8367,7 +8446,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8367
8446
|
n,
|
|
8368
8447
|
t
|
|
8369
8448
|
]);
|
|
8370
|
-
return /* @__PURE__ */ Z(
|
|
8449
|
+
return /* @__PURE__ */ Z(Pi, {
|
|
8371
8450
|
isOpen: e,
|
|
8372
8451
|
onClose: t,
|
|
8373
8452
|
title: a,
|
|
@@ -8412,7 +8491,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8412
8491
|
})
|
|
8413
8492
|
}), /* @__PURE__ */ Z("div", {
|
|
8414
8493
|
className: "dc:flex-1 dc:min-h-0",
|
|
8415
|
-
children: /* @__PURE__ */ Z(
|
|
8494
|
+
children: /* @__PURE__ */ Z(Ii, {
|
|
8416
8495
|
ref: l,
|
|
8417
8496
|
maxHeight: "100%",
|
|
8418
8497
|
initialQuery: p,
|
|
@@ -8432,7 +8511,7 @@ function Wi({ isOpen: e, onClose: t, onSave: n, portlet: r, initialData: i, titl
|
|
|
8432
8511
|
}
|
|
8433
8512
|
//#endregion
|
|
8434
8513
|
//#region src/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.tsx
|
|
8435
|
-
function
|
|
8514
|
+
function Xi({ label: e, value: t, onChange: n, placeholder: r, description: i }) {
|
|
8436
8515
|
let [a, o] = Y(() => t.join("\n"));
|
|
8437
8516
|
K(() => {
|
|
8438
8517
|
o(t.join("\n"));
|
|
@@ -8462,7 +8541,7 @@ function Gi({ label: e, value: t, onChange: n, placeholder: r, description: i })
|
|
|
8462
8541
|
]
|
|
8463
8542
|
});
|
|
8464
8543
|
}
|
|
8465
|
-
function
|
|
8544
|
+
function Zi({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigChange: r, excludeKeys: i }) {
|
|
8466
8545
|
let { t: a } = P(), { config: o, loaded: s } = m(e);
|
|
8467
8546
|
return s ? o.displayOptions && o.displayOptions.length > 0 || o.displayOptionsConfig && o.displayOptionsConfig.length > 0 ? /* @__PURE__ */ Z("div", {
|
|
8468
8547
|
className: "dc:space-y-6",
|
|
@@ -8760,7 +8839,7 @@ function Ki({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigCh
|
|
|
8760
8839
|
[e.key]: Object.keys(n).length > 0 ? n : void 0
|
|
8761
8840
|
})
|
|
8762
8841
|
}),
|
|
8763
|
-
e.type === "stringArray" && /* @__PURE__ */ Z(
|
|
8842
|
+
e.type === "stringArray" && /* @__PURE__ */ Z(Xi, {
|
|
8764
8843
|
label: a(e.label),
|
|
8765
8844
|
value: t[e.key] ?? [],
|
|
8766
8845
|
onChange: (n) => r({
|
|
@@ -8809,9 +8888,9 @@ function Ki({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigCh
|
|
|
8809
8888
|
}
|
|
8810
8889
|
//#endregion
|
|
8811
8890
|
//#region src/client/components/TextPortletModal.tsx
|
|
8812
|
-
var
|
|
8813
|
-
function
|
|
8814
|
-
let { t: o } = P(), [s, c] = Y(q(() => r ?
|
|
8891
|
+
var Qi = s("close");
|
|
8892
|
+
function $i({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, existingTitles: a = [] }) {
|
|
8893
|
+
let { t: o } = P(), [s, c] = Y(q(() => r ? yt(r).analysisConfig.charts.query?.displayConfig ?? {} : {
|
|
8815
8894
|
content: "",
|
|
8816
8895
|
hideHeader: !0,
|
|
8817
8896
|
autoHeight: !0,
|
|
@@ -8822,7 +8901,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
|
|
|
8822
8901
|
accentBorder: "none"
|
|
8823
8902
|
}, [r])), [l, u] = Y(() => r?.title ?? ""), [d, f] = Y(!1), [p, m] = Y(r);
|
|
8824
8903
|
if (r !== p) if (m(r), f(!1), r) {
|
|
8825
|
-
let e =
|
|
8904
|
+
let e = yt(r).analysisConfig.charts.query;
|
|
8826
8905
|
c(e?.displayConfig ?? {}), u(r.title ?? "");
|
|
8827
8906
|
} else c({
|
|
8828
8907
|
content: "",
|
|
@@ -8904,7 +8983,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
|
|
|
8904
8983
|
}), /* @__PURE__ */ Z("button", {
|
|
8905
8984
|
onClick: t,
|
|
8906
8985
|
className: "dc:p-1 dc:rounded-md text-dc-text-secondary dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
8907
|
-
children: /* @__PURE__ */ Z(
|
|
8986
|
+
children: /* @__PURE__ */ Z(Qi, { className: "dc:w-5 dc:h-5" })
|
|
8908
8987
|
})]
|
|
8909
8988
|
}),
|
|
8910
8989
|
/* @__PURE__ */ Z("div", {
|
|
@@ -8961,7 +9040,7 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
|
|
|
8961
9040
|
]
|
|
8962
9041
|
}), /* @__PURE__ */ Z("div", {
|
|
8963
9042
|
className: "dc:w-72 dc:shrink-0",
|
|
8964
|
-
children: /* @__PURE__ */ Z(
|
|
9043
|
+
children: /* @__PURE__ */ Z(Zi, {
|
|
8965
9044
|
chartType: "markdown",
|
|
8966
9045
|
displayConfig: s,
|
|
8967
9046
|
colorPalette: i,
|
|
@@ -8989,36 +9068,116 @@ function Ji({ isOpen: e, onClose: t, onSave: n, portlet: r, colorPalette: i, exi
|
|
|
8989
9068
|
}) : null;
|
|
8990
9069
|
}
|
|
8991
9070
|
//#endregion
|
|
9071
|
+
//#region src/client/utils/joinReachability.ts
|
|
9072
|
+
function ea(e, t) {
|
|
9073
|
+
let n = new Set(t);
|
|
9074
|
+
if (!e?.cubes || t.length === 0) return n;
|
|
9075
|
+
let r = /* @__PURE__ */ new Map(), i = (e, t) => {
|
|
9076
|
+
r.has(e) || r.set(e, /* @__PURE__ */ new Set()), r.has(t) || r.set(t, /* @__PURE__ */ new Set()), r.get(e).add(t), r.get(t).add(e);
|
|
9077
|
+
};
|
|
9078
|
+
e.cubes.forEach((e) => {
|
|
9079
|
+
e.relationships?.forEach((t) => i(e.name, t.targetCube));
|
|
9080
|
+
});
|
|
9081
|
+
let a = [...t];
|
|
9082
|
+
for (; a.length > 0;) {
|
|
9083
|
+
let e = a.shift(), t = r.get(e);
|
|
9084
|
+
t && t.forEach((e) => {
|
|
9085
|
+
n.has(e) || (n.add(e), a.push(e));
|
|
9086
|
+
});
|
|
9087
|
+
}
|
|
9088
|
+
return n;
|
|
9089
|
+
}
|
|
9090
|
+
function ta(e) {
|
|
9091
|
+
let t = e.indexOf(".");
|
|
9092
|
+
return t > 0 ? e.substring(0, t) : null;
|
|
9093
|
+
}
|
|
9094
|
+
function na(e) {
|
|
9095
|
+
let t = /* @__PURE__ */ new Set(), n = (e) => {
|
|
9096
|
+
if (typeof e == "string") {
|
|
9097
|
+
let n = ta(e);
|
|
9098
|
+
n && t.add(n);
|
|
9099
|
+
}
|
|
9100
|
+
}, r = (e) => {
|
|
9101
|
+
Array.isArray(e?.measures) && e.measures.forEach(n), Array.isArray(e?.dimensions) && e.dimensions.forEach(n), Array.isArray(e?.timeDimensions) && e.timeDimensions.forEach((e) => n(e?.dimension));
|
|
9102
|
+
};
|
|
9103
|
+
try {
|
|
9104
|
+
let i = yt(e).analysisConfig.query;
|
|
9105
|
+
if (!i) return [];
|
|
9106
|
+
if ("funnel" in i) {
|
|
9107
|
+
let e = i.funnel;
|
|
9108
|
+
typeof e?.timeDimension == "string" ? n(e.timeDimension) : Array.isArray(e?.timeDimension) && e.timeDimension.forEach((e) => e?.cube && t.add(e.cube)), typeof e?.bindingKey == "string" ? n(e.bindingKey) : Array.isArray(e?.bindingKey) && e.bindingKey.forEach((e) => e?.cube && t.add(e.cube)), Array.isArray(e?.steps) && e.steps.forEach((e) => e?.cube && t.add(e.cube));
|
|
9109
|
+
} else "queries" in i && Array.isArray(i.queries) ? i.queries.forEach(r) : r(i);
|
|
9110
|
+
} catch (t) {
|
|
9111
|
+
console.warn("Failed to extract cubes from portlet:", e.id, t);
|
|
9112
|
+
}
|
|
9113
|
+
return [...t];
|
|
9114
|
+
}
|
|
9115
|
+
function ra(e, t, n) {
|
|
9116
|
+
if (!e?.cubes) return [];
|
|
9117
|
+
let r = na(t);
|
|
9118
|
+
if (r.length === 0) return [];
|
|
9119
|
+
let i = ea(e, r), a;
|
|
9120
|
+
if (n?.sameTypeAs) for (let t of e.cubes) {
|
|
9121
|
+
let e = t.dimensions?.find((e) => e.name === n.sameTypeAs);
|
|
9122
|
+
if (e) {
|
|
9123
|
+
a = e.type;
|
|
9124
|
+
break;
|
|
9125
|
+
}
|
|
9126
|
+
}
|
|
9127
|
+
return e.cubes.filter((e) => i.has(e.name)).map((e) => ({
|
|
9128
|
+
cubeName: e.name,
|
|
9129
|
+
cubeTitle: e.title || e.name,
|
|
9130
|
+
dimensions: (e.dimensions || []).filter((e) => !a || e.type === a)
|
|
9131
|
+
})).filter((e) => e.dimensions.length > 0);
|
|
9132
|
+
}
|
|
9133
|
+
//#endregion
|
|
8992
9134
|
//#region src/client/components/PortletFilterConfigModal.tsx
|
|
8993
|
-
function
|
|
8994
|
-
let { t:
|
|
9135
|
+
function ia({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r = [], onSave: i, portletTitle: a, schema: o = null, portlet: s = null }) {
|
|
9136
|
+
let { t: c } = P(), [l, u] = Y(() => bt(r));
|
|
8995
9137
|
K(() => {
|
|
8996
|
-
|
|
9138
|
+
u((e) => {
|
|
9139
|
+
let t = bt(r);
|
|
9140
|
+
return JSON.stringify(t) === JSON.stringify(e) ? e : t;
|
|
9141
|
+
});
|
|
8997
9142
|
}, [r, e]);
|
|
8998
|
-
let
|
|
8999
|
-
|
|
9000
|
-
},
|
|
9001
|
-
|
|
9002
|
-
|
|
9003
|
-
|
|
9004
|
-
|
|
9143
|
+
let d = (e) => {
|
|
9144
|
+
u((t) => t.some((t) => t.filterId === e) ? t.filter((t) => t.filterId !== e) : [...t, { filterId: e }]);
|
|
9145
|
+
}, f = (e, t) => {
|
|
9146
|
+
u((n) => n.map((n) => n.filterId === e ? t ? {
|
|
9147
|
+
filterId: e,
|
|
9148
|
+
member: t
|
|
9149
|
+
} : { filterId: e } : n));
|
|
9150
|
+
}, p = () => {
|
|
9151
|
+
i(xt(l)), t();
|
|
9152
|
+
}, m = () => {
|
|
9153
|
+
u(bt(r)), t();
|
|
9154
|
+
}, h = q(() => {
|
|
9155
|
+
let e = /* @__PURE__ */ new Map();
|
|
9156
|
+
return !o || !s || n.forEach((t) => {
|
|
9157
|
+
t.isUniversalTime || !("member" in t.filter) || !t.filter.member || e.has(t.filter.member) || e.set(t.filter.member, ra(o, s, { sameTypeAs: t.filter.member }));
|
|
9158
|
+
}), e;
|
|
9159
|
+
}, [
|
|
9160
|
+
o,
|
|
9161
|
+
s,
|
|
9162
|
+
n
|
|
9163
|
+
]), g = (e) => {
|
|
9005
9164
|
if (!e.filter) return "";
|
|
9006
9165
|
if ("member" in e.filter && e.filter.member) {
|
|
9007
|
-
let t = e.filter.values || [], n = t.length > 0 ? t.join(", ") :
|
|
9166
|
+
let t = e.filter.values || [], n = t.length > 0 ? t.join(", ") : c("portlet.filterConfig.noValue");
|
|
9008
9167
|
return `${e.filter.member} ${e.filter.operator} ${n}`;
|
|
9009
9168
|
}
|
|
9010
9169
|
if ("type" in e.filter && e.filter.type) {
|
|
9011
9170
|
let t = e.filter.filters?.length || 0;
|
|
9012
|
-
return
|
|
9171
|
+
return c(t === 1 ? "portlet.filterConfig.groupFilter" : "portlet.filterConfig.groupFilterPlural", {
|
|
9013
9172
|
type: e.filter.type.toUpperCase(),
|
|
9014
9173
|
count: t
|
|
9015
9174
|
});
|
|
9016
9175
|
}
|
|
9017
|
-
return
|
|
9176
|
+
return c("portlet.filterConfig.complexFilter");
|
|
9018
9177
|
};
|
|
9019
9178
|
return e ? /* @__PURE__ */ Z("div", {
|
|
9020
9179
|
className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center bg-black bg-opacity-50",
|
|
9021
|
-
onClick:
|
|
9180
|
+
onClick: m,
|
|
9022
9181
|
children: /* @__PURE__ */ Q("div", {
|
|
9023
9182
|
className: "bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:max-w-2xl dc:w-full dc:mx-4 dc:max-h-[80vh] dc:flex dc:flex-col",
|
|
9024
9183
|
style: { boxShadow: "var(--dc-shadow-lg)" },
|
|
@@ -9028,10 +9187,10 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
|
|
|
9028
9187
|
className: "dc:px-6 dc:py-4 dc:border-b border-dc-border bg-dc-surface-secondary dc:rounded-t-lg",
|
|
9029
9188
|
children: [/* @__PURE__ */ Z("h2", {
|
|
9030
9189
|
className: "dc:text-lg dc:font-semibold text-dc-text",
|
|
9031
|
-
children:
|
|
9190
|
+
children: c("portlet.filterConfig.title")
|
|
9032
9191
|
}), /* @__PURE__ */ Z("p", {
|
|
9033
9192
|
className: "dc:text-sm text-dc-text-secondary dc:mt-1",
|
|
9034
|
-
children:
|
|
9193
|
+
children: c("portlet.filterConfig.subtitle", { portletTitle: a })
|
|
9035
9194
|
})]
|
|
9036
9195
|
}),
|
|
9037
9196
|
/* @__PURE__ */ Z("div", {
|
|
@@ -9053,11 +9212,11 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
|
|
|
9053
9212
|
}),
|
|
9054
9213
|
/* @__PURE__ */ Z("p", {
|
|
9055
9214
|
className: "dc:text-sm dc:font-medium",
|
|
9056
|
-
children:
|
|
9215
|
+
children: c("portlet.filterConfig.noFilters")
|
|
9057
9216
|
}),
|
|
9058
9217
|
/* @__PURE__ */ Z("p", {
|
|
9059
9218
|
className: "dc:text-xs dc:mt-1",
|
|
9060
|
-
children:
|
|
9219
|
+
children: c("portlet.filterConfig.noFiltersHint")
|
|
9061
9220
|
})
|
|
9062
9221
|
]
|
|
9063
9222
|
}) : /* @__PURE__ */ Q("div", {
|
|
@@ -9066,43 +9225,90 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
|
|
|
9066
9225
|
className: "dc:flex dc:items-center dc:justify-between dc:mb-4 dc:pb-2 dc:border-b border-dc-border",
|
|
9067
9226
|
children: [/* @__PURE__ */ Z("span", {
|
|
9068
9227
|
className: "dc:text-sm dc:font-medium text-dc-text",
|
|
9069
|
-
children:
|
|
9228
|
+
children: c("portlet.filterConfig.availableFilters")
|
|
9070
9229
|
}), /* @__PURE__ */ Z("span", {
|
|
9071
9230
|
className: "dc:text-xs text-dc-text-secondary",
|
|
9072
|
-
children:
|
|
9073
|
-
selected:
|
|
9231
|
+
children: c("portlet.filterConfig.selectedCount", {
|
|
9232
|
+
selected: l.filter((e) => n.some((t) => t.id === e.filterId)).length,
|
|
9074
9233
|
total: n.length
|
|
9075
9234
|
})
|
|
9076
9235
|
})]
|
|
9077
9236
|
}), n.map((e) => {
|
|
9078
|
-
let t =
|
|
9237
|
+
let t = l.find((t) => t.filterId === e.id), n = !!t, r = !!e.filter && "member" in e.filter && !!e.filter.member, i = n && r && !e.isUniversalTime, a = i && h.get(e.filter.member) || [], o = !!t?.member && !a.some((e) => e.dimensions.some((e) => e.name === t.member));
|
|
9079
9238
|
return /* @__PURE__ */ Q("label", {
|
|
9080
|
-
className: `dc:flex dc:items-start dc:p-3 dc:rounded-md dc:border dc:cursor-pointer dc:transition-colors ${
|
|
9239
|
+
className: `dc:flex dc:items-start dc:p-3 dc:rounded-md dc:border dc:cursor-pointer dc:transition-colors ${n ? "border-dc-primary bg-dc-surface-secondary" : "border-dc-border hover:bg-dc-surface-hover"}`,
|
|
9081
9240
|
children: [/* @__PURE__ */ Z("input", {
|
|
9082
9241
|
type: "checkbox",
|
|
9083
|
-
checked:
|
|
9084
|
-
onChange: () =>
|
|
9242
|
+
checked: n,
|
|
9243
|
+
onChange: () => d(e.id),
|
|
9085
9244
|
className: "dc:mt-0.5 dc:mr-3 dc:h-4 dc:w-4 dc:rounded border-dc-border dc:focus:ring-2 focus:ring-dc-primary",
|
|
9086
9245
|
style: { accentColor: "var(--dc-primary)" }
|
|
9087
9246
|
}), /* @__PURE__ */ Q("div", {
|
|
9088
9247
|
className: "dc:flex-1 dc:min-w-0",
|
|
9089
|
-
children: [
|
|
9090
|
-
|
|
9091
|
-
|
|
9092
|
-
|
|
9093
|
-
|
|
9094
|
-
|
|
9095
|
-
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9101
|
-
|
|
9102
|
-
|
|
9103
|
-
|
|
9104
|
-
|
|
9105
|
-
|
|
9248
|
+
children: [
|
|
9249
|
+
/* @__PURE__ */ Q("div", {
|
|
9250
|
+
className: "dc:flex dc:items-center dc:gap-2",
|
|
9251
|
+
children: [
|
|
9252
|
+
/* @__PURE__ */ Z("span", {
|
|
9253
|
+
className: "dc:font-medium dc:text-sm text-dc-text dc:truncate",
|
|
9254
|
+
children: e.label
|
|
9255
|
+
}),
|
|
9256
|
+
n && /* @__PURE__ */ Z("span", {
|
|
9257
|
+
className: "dc:px-2 dc:py-0.5 dc:text-xs dc:rounded-full",
|
|
9258
|
+
style: {
|
|
9259
|
+
backgroundColor: "var(--dc-primary)",
|
|
9260
|
+
color: "white"
|
|
9261
|
+
},
|
|
9262
|
+
children: c("portlet.filterConfig.applied")
|
|
9263
|
+
}),
|
|
9264
|
+
t?.member && /* @__PURE__ */ Z("span", {
|
|
9265
|
+
className: "dc:px-2 dc:py-0.5 dc:text-xs dc:rounded-full bg-dc-accent-bg text-dc-accent dc:truncate",
|
|
9266
|
+
title: t.member,
|
|
9267
|
+
children: c("portlet.filterConfig.mappedTo", { field: t.member })
|
|
9268
|
+
})
|
|
9269
|
+
]
|
|
9270
|
+
}),
|
|
9271
|
+
/* @__PURE__ */ Z("div", {
|
|
9272
|
+
className: "dc:mt-1 dc:text-xs text-dc-text-secondary dc:break-words",
|
|
9273
|
+
children: g(e)
|
|
9274
|
+
}),
|
|
9275
|
+
i && a.length > 0 && /* @__PURE__ */ Q("div", {
|
|
9276
|
+
className: "dc:mt-2",
|
|
9277
|
+
onClick: (e) => e.preventDefault(),
|
|
9278
|
+
children: [
|
|
9279
|
+
/* @__PURE__ */ Z("label", {
|
|
9280
|
+
className: "dc:block dc:text-xs dc:font-medium text-dc-text-secondary dc:mb-1",
|
|
9281
|
+
children: c("portlet.filterConfig.applyToField")
|
|
9282
|
+
}),
|
|
9283
|
+
/* @__PURE__ */ Q("select", {
|
|
9284
|
+
value: t?.member || "",
|
|
9285
|
+
onChange: (t) => f(e.id, t.target.value),
|
|
9286
|
+
className: "dc:w-full dc:text-sm dc:rounded-md dc:border border-dc-border bg-dc-surface text-dc-text dc:px-2 dc:py-1.5 dc:focus:ring-2 focus:ring-dc-primary",
|
|
9287
|
+
children: [
|
|
9288
|
+
/* @__PURE__ */ Z("option", {
|
|
9289
|
+
value: "",
|
|
9290
|
+
children: c("portlet.filterConfig.applyToFieldDefault", { field: e.filter.member })
|
|
9291
|
+
}),
|
|
9292
|
+
o && t?.member && /* @__PURE__ */ Z("option", {
|
|
9293
|
+
value: t.member,
|
|
9294
|
+
children: t.member
|
|
9295
|
+
}),
|
|
9296
|
+
a.map((e) => /* @__PURE__ */ Z("optgroup", {
|
|
9297
|
+
label: e.cubeTitle,
|
|
9298
|
+
children: e.dimensions.map((e) => /* @__PURE__ */ Z("option", {
|
|
9299
|
+
value: e.name,
|
|
9300
|
+
children: e.title || e.name
|
|
9301
|
+
}, e.name))
|
|
9302
|
+
}, e.cubeName))
|
|
9303
|
+
]
|
|
9304
|
+
}),
|
|
9305
|
+
o && /* @__PURE__ */ Z("p", {
|
|
9306
|
+
className: "dc:mt-1 dc:text-xs text-dc-warning",
|
|
9307
|
+
children: c("portlet.filterConfig.mappedFieldMissing", { field: t?.member || "" })
|
|
9308
|
+
})
|
|
9309
|
+
]
|
|
9310
|
+
})
|
|
9311
|
+
]
|
|
9106
9312
|
})]
|
|
9107
9313
|
}, e.id);
|
|
9108
9314
|
})]
|
|
@@ -9111,14 +9317,14 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
|
|
|
9111
9317
|
/* @__PURE__ */ Q("div", {
|
|
9112
9318
|
className: "dc:px-6 dc:py-4 dc:border-t border-dc-border bg-dc-surface-secondary dc:rounded-b-lg dc:flex dc:justify-end dc:gap-3",
|
|
9113
9319
|
children: [/* @__PURE__ */ Z("button", {
|
|
9114
|
-
onClick:
|
|
9320
|
+
onClick: m,
|
|
9115
9321
|
className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-md dc:border border-dc-border bg-dc-surface hover:bg-dc-surface-hover dc:transition-colors text-dc-text",
|
|
9116
|
-
children:
|
|
9322
|
+
children: c("common.actions.cancel")
|
|
9117
9323
|
}), /* @__PURE__ */ Z("button", {
|
|
9118
|
-
onClick:
|
|
9324
|
+
onClick: p,
|
|
9119
9325
|
className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-md text-white dc:transition-colors",
|
|
9120
9326
|
style: { backgroundColor: "var(--dc-primary)" },
|
|
9121
|
-
children:
|
|
9327
|
+
children: c("portlet.filterConfig.applyFilters")
|
|
9122
9328
|
})]
|
|
9123
9329
|
})
|
|
9124
9330
|
]
|
|
@@ -9127,9 +9333,9 @@ function Yi({ isOpen: e, onClose: t, dashboardFilters: n = [], currentMapping: r
|
|
|
9127
9333
|
}
|
|
9128
9334
|
//#endregion
|
|
9129
9335
|
//#region src/client/components/ConfirmModal.tsx
|
|
9130
|
-
var
|
|
9336
|
+
var aa = ({ isOpen: e, onClose: t, onConfirm: n, title: r, message: i, confirmText: a, cancelText: o, confirmVariant: s = "primary", isLoading: c = !1 }) => {
|
|
9131
9337
|
let { t: l } = P(), u = r ?? l("common.actions.confirm"), d = a ?? l("common.actions.confirm"), f = o ?? l("common.actions.cancel");
|
|
9132
|
-
return /* @__PURE__ */ Z(
|
|
9338
|
+
return /* @__PURE__ */ Z(Pi, {
|
|
9133
9339
|
isOpen: e,
|
|
9134
9340
|
onClose: t,
|
|
9135
9341
|
title: u,
|
|
@@ -9186,44 +9392,46 @@ var Xi = ({ isOpen: e, onClose: t, onConfirm: n, title: r, message: i, confirmTe
|
|
|
9186
9392
|
};
|
|
9187
9393
|
//#endregion
|
|
9188
9394
|
//#region src/client/components/dashboard/DashboardModals.tsx
|
|
9189
|
-
function
|
|
9190
|
-
let { t: e } = P(), { config: t, colorPalette: n, dashboardFilters: r,
|
|
9395
|
+
function oa() {
|
|
9396
|
+
let { t: e } = P(), { config: t, colorPalette: n, dashboardFilters: r, schema: i, isPortletModalOpen: a, editingPortlet: o, isTextModalOpen: s, editingTextPortlet: c, isFilterConfigModalOpen: l, filterConfigPortlet: u, deleteConfirmPortletId: d, handlePortletSave: f, handleSaveFilterConfig: p, actions: m } = Rn(), h = t.portlets.find((e) => e.id === d)?.title || e("dashboard.thisPortlet");
|
|
9191
9397
|
return /* @__PURE__ */ Q(X, { children: [
|
|
9192
|
-
/* @__PURE__ */ Z(
|
|
9193
|
-
isOpen:
|
|
9194
|
-
onClose:
|
|
9195
|
-
onSave:
|
|
9196
|
-
portlet:
|
|
9197
|
-
title: e(
|
|
9198
|
-
submitText: e(
|
|
9398
|
+
/* @__PURE__ */ Z(Yi, {
|
|
9399
|
+
isOpen: a,
|
|
9400
|
+
onClose: m.closePortletModal,
|
|
9401
|
+
onSave: f,
|
|
9402
|
+
portlet: o,
|
|
9403
|
+
title: e(o ? "dashboard.editPortlet" : "dashboard.addNewPortlet"),
|
|
9404
|
+
submitText: e(o ? "dashboard.updatePortlet" : "dashboard.addPortlet"),
|
|
9199
9405
|
colorPalette: n,
|
|
9200
9406
|
dashboardFilters: r
|
|
9201
9407
|
}),
|
|
9202
|
-
/* @__PURE__ */ Z(
|
|
9203
|
-
isOpen:
|
|
9204
|
-
onClose:
|
|
9205
|
-
onSave:
|
|
9206
|
-
portlet:
|
|
9408
|
+
/* @__PURE__ */ Z($i, {
|
|
9409
|
+
isOpen: s,
|
|
9410
|
+
onClose: m.closeTextModal,
|
|
9411
|
+
onSave: f,
|
|
9412
|
+
portlet: c,
|
|
9207
9413
|
colorPalette: n,
|
|
9208
9414
|
existingTitles: t.portlets.map((e) => e.title)
|
|
9209
9415
|
}),
|
|
9210
|
-
/* @__PURE__ */ Z(
|
|
9211
|
-
isOpen:
|
|
9212
|
-
onClose:
|
|
9416
|
+
/* @__PURE__ */ Z(ia, {
|
|
9417
|
+
isOpen: l,
|
|
9418
|
+
onClose: m.closeFilterConfig,
|
|
9213
9419
|
dashboardFilters: r || [],
|
|
9214
|
-
currentMapping:
|
|
9215
|
-
onSave:
|
|
9216
|
-
portletTitle:
|
|
9420
|
+
currentMapping: u?.dashboardFilterMapping || [],
|
|
9421
|
+
onSave: p,
|
|
9422
|
+
portletTitle: u?.title || "",
|
|
9423
|
+
schema: i || null,
|
|
9424
|
+
portlet: u
|
|
9217
9425
|
}),
|
|
9218
|
-
/* @__PURE__ */ Z(
|
|
9219
|
-
isOpen: !!
|
|
9220
|
-
onClose:
|
|
9221
|
-
onConfirm:
|
|
9426
|
+
/* @__PURE__ */ Z(aa, {
|
|
9427
|
+
isOpen: !!d,
|
|
9428
|
+
onClose: m.closeDeleteConfirm,
|
|
9429
|
+
onConfirm: m.confirmDelete,
|
|
9222
9430
|
title: e("dashboard.deletePortlet"),
|
|
9223
9431
|
message: /* @__PURE__ */ Q(X, { children: [
|
|
9224
9432
|
e("dashboard.deletePortletConfirm"),
|
|
9225
9433
|
" ",
|
|
9226
|
-
/* @__PURE__ */ Z("strong", { children:
|
|
9434
|
+
/* @__PURE__ */ Z("strong", { children: h }),
|
|
9227
9435
|
e("dashboard.deletePortletSuffix")
|
|
9228
9436
|
] }),
|
|
9229
9437
|
confirmText: e("common.actions.delete"),
|
|
@@ -9233,21 +9441,21 @@ function Zi() {
|
|
|
9233
9441
|
}
|
|
9234
9442
|
//#endregion
|
|
9235
9443
|
//#region src/client/components/DashboardGrid.tsx
|
|
9236
|
-
function
|
|
9444
|
+
function sa(e) {
|
|
9237
9445
|
let t = !e.config.portlets || e.config.portlets.length === 0;
|
|
9238
|
-
return /* @__PURE__ */ Q(
|
|
9446
|
+
return /* @__PURE__ */ Q(Gn, {
|
|
9239
9447
|
...e,
|
|
9240
9448
|
children: [
|
|
9241
|
-
!t && !e.hideToolbar && /* @__PURE__ */ Z(
|
|
9242
|
-
!t && /* @__PURE__ */ Z(
|
|
9243
|
-
/* @__PURE__ */ Z(
|
|
9244
|
-
/* @__PURE__ */ Z(
|
|
9449
|
+
!t && !e.hideToolbar && /* @__PURE__ */ Z(fr, {}),
|
|
9450
|
+
!t && /* @__PURE__ */ Z(Ei, {}),
|
|
9451
|
+
/* @__PURE__ */ Z(Ni, {}),
|
|
9452
|
+
/* @__PURE__ */ Z(oa, {})
|
|
9245
9453
|
]
|
|
9246
9454
|
});
|
|
9247
9455
|
}
|
|
9248
9456
|
//#endregion
|
|
9249
9457
|
//#region src/client/components/AnalyticsDashboard.tsx
|
|
9250
|
-
function
|
|
9458
|
+
function ca({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent: r, onConfigChange: i, onSave: a, onSaveThumbnail: o, onDirtyStateChange: s }) {
|
|
9251
9459
|
let { meta: c } = se(), { dashboardModes: l } = u(), { handleConfigChange: d, handleSave: f } = j({
|
|
9252
9460
|
initialConfig: e,
|
|
9253
9461
|
onConfigChange: i,
|
|
@@ -9277,7 +9485,7 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
9277
9485
|
]);
|
|
9278
9486
|
return /* @__PURE__ */ Z("div", {
|
|
9279
9487
|
className: "dc:w-full",
|
|
9280
|
-
children: /* @__PURE__ */ Z(
|
|
9488
|
+
children: /* @__PURE__ */ Z(sa, {
|
|
9281
9489
|
config: e,
|
|
9282
9490
|
editable: t,
|
|
9283
9491
|
dashboardFilters: p,
|
|
@@ -9287,7 +9495,7 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
9287
9495
|
onSaveThumbnail: o,
|
|
9288
9496
|
colorPalette: q(() => {
|
|
9289
9497
|
let t = e.colorPalette;
|
|
9290
|
-
return
|
|
9498
|
+
return qn(t);
|
|
9291
9499
|
}, [e.colorPalette]),
|
|
9292
9500
|
schema: c,
|
|
9293
9501
|
dashboardModes: l,
|
|
@@ -9297,8 +9505,8 @@ function $i({ config: e, editable: t = !1, dashboardFilters: n, loadingComponent
|
|
|
9297
9505
|
}
|
|
9298
9506
|
//#endregion
|
|
9299
9507
|
//#region src/client/components/PortletContainer.tsx
|
|
9300
|
-
function
|
|
9301
|
-
let { analysisConfig: a } = q(() =>
|
|
9508
|
+
function la({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i }) {
|
|
9509
|
+
let { analysisConfig: a } = q(() => yt(e), [e]), o = a.charts[a.analysisType], s = q(() => JSON.stringify(a.query), [a.query]), c = o?.chartType || "line", l = o?.chartConfig, u = o?.displayConfig, [d, f] = Y(null), p = G((e) => {
|
|
9302
9510
|
f(e);
|
|
9303
9511
|
}, []);
|
|
9304
9512
|
return /* @__PURE__ */ Q("div", {
|
|
@@ -9311,7 +9519,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
|
|
|
9311
9519
|
children: [/* @__PURE__ */ Z("h3", {
|
|
9312
9520
|
className: "dc:font-semibold dc:text-sm dc:truncate text-dc-text",
|
|
9313
9521
|
children: e.title
|
|
9314
|
-
}), d && /* @__PURE__ */ Z(
|
|
9522
|
+
}), d && /* @__PURE__ */ Z(un, {
|
|
9315
9523
|
chartConfig: d.chartConfig,
|
|
9316
9524
|
displayConfig: d.displayConfig,
|
|
9317
9525
|
queryObject: d.queryObject,
|
|
@@ -9380,7 +9588,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
|
|
|
9380
9588
|
})]
|
|
9381
9589
|
}), /* @__PURE__ */ Z("div", {
|
|
9382
9590
|
className: "dc:px-2 dc:py-3 dc:md:px-4 dc:md:pt-6 dc:md:pb-4 dc:flex-1 dc:min-h-0",
|
|
9383
|
-
children: /* @__PURE__ */ Z(
|
|
9591
|
+
children: /* @__PURE__ */ Z(It, {
|
|
9384
9592
|
query: s,
|
|
9385
9593
|
chartType: c,
|
|
9386
9594
|
chartConfig: l,
|
|
@@ -9394,7 +9602,7 @@ function ea({ portlet: e, editable: t = !1, onEdit: n, onDelete: r, onRefresh: i
|
|
|
9394
9602
|
}
|
|
9395
9603
|
//#endregion
|
|
9396
9604
|
//#region src/client/components/DashboardEditModal.tsx
|
|
9397
|
-
function
|
|
9605
|
+
function ua({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initialName: a = "", initialDescription: o = "" }) {
|
|
9398
9606
|
let { t: s } = P(), [c, l] = Y(""), [u, d] = Y(""), [f, p] = Y(!1);
|
|
9399
9607
|
K(() => {
|
|
9400
9608
|
e && (l(a), d(o));
|
|
@@ -9418,7 +9626,7 @@ function ta({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initial
|
|
|
9418
9626
|
}, h = () => {
|
|
9419
9627
|
l(""), d(""), p(!1), t();
|
|
9420
9628
|
};
|
|
9421
|
-
return /* @__PURE__ */ Z(
|
|
9629
|
+
return /* @__PURE__ */ Z(Pi, {
|
|
9422
9630
|
isOpen: e,
|
|
9423
9631
|
onClose: h,
|
|
9424
9632
|
title: r,
|
|
@@ -9469,6 +9677,6 @@ function ta({ isOpen: e, onClose: t, onSave: n, title: r, submitText: i, initial
|
|
|
9469
9677
|
});
|
|
9470
9678
|
}
|
|
9471
9679
|
//#endregion
|
|
9472
|
-
export {
|
|
9680
|
+
export { yt as $, sn as A, Xt as B, Yn as C, kn as D, Rn as E, Zt as F, Gt as G, Yt as H, nn as I, It as J, Kt as K, $t as L, Wt as M, Bt as N, un as O, an as P, Tt as Q, Jt as R, fr as S, Gn as T, Qt as U, en as V, rn as W, Ft as X, Pt as Y, Nt as Z, hr as _, ke as _t, oa as a, rt as at, pr as b, Yi as c, Qe as ct, Bi as d, Xe as dt, _t as et, Ii as f, $e as ft, Ir as g, Pe as gt, Ei as h, ct as ht, sa as i, it, on as j, ln as k, Ji as l, Ze as lt, Ni as m, nt as mt, la as n, st as nt, aa as o, ot, Pi as p, tt as pt, qt as q, ca as r, at as rt, Zi as s, lt as st, ua as t, ht as tt, Wi as u, et as ut, gr as v, xe as vt, qn as w, mr as x, Cr as y, tn as z };
|
|
9473
9681
|
|
|
9474
|
-
//# sourceMappingURL=DashboardEditModal-
|
|
9682
|
+
//# sourceMappingURL=DashboardEditModal-CjCIAT-J.js.map
|