@gooddata/sdk-ui-dashboard 11.43.0-alpha.3 → 11.43.0-alpha.5
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/NOTICE +641 -841
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +3 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -2
- package/esm/model/react/useWidgetExecConfig.d.ts +5 -3
- package/esm/model/react/useWidgetExecConfig.d.ts.map +1 -1
- package/esm/model/react/useWidgetExecConfig.js +8 -4
- package/esm/model/store/config/configSelectors.js +1 -1
- package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +19 -0
- package/esm/model/store/tabs/parameters/parametersHelpers.d.ts.map +1 -1
- package/esm/model/store/tabs/parameters/parametersHelpers.js +46 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +13 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.js +24 -30
- package/esm/presentation/automations/_staging/alerting/AlertingManagementDialog.d.ts +1 -1
- package/esm/presentation/automations/_staging/alerting/AlertingManagementDialog.d.ts.map +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.js +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentEnhanced.js +3 -3
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.d.ts +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.d.ts.map +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/components/Alert.js +2 -2
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/components/AlertDropdown.d.ts +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/components/AlertDropdown.d.ts.map +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/hooks/useAlertValidation.d.ts.map +1 -0
- package/esm/presentation/automations/_staging/alerting/{DefaultAlertingDialog → DefaultAlertingManagementDialog}/hooks/useAlertValidation.js +2 -2
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/AlertingDialog.js +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogHeader.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +21 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/DefaultAlertingDialog.js +58 -56
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertDeleteDialog.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertDestinationSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertGranularitySelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertSensitivitySelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertThresholdInput.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertTriggerModeSelect.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/constants.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertValidation.d.ts +7 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertValidation.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertValidation.js +16 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.d.ts +6 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.js +31 -5
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useEditAlert.d.ts +7 -7
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useEditAlert.js +15 -45
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useOperators.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useThresholdValue.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/messages.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/convertors.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/cron.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/getters.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/granularity.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/guards.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/items.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/responsive.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/threshold.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/transformation.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.d.ts +11 -0
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.js +35 -0
- package/esm/presentation/automations/alerting/hooks/useGetSupportedMeasures.d.ts.map +1 -0
- package/esm/presentation/automations/{_staging/alerting → alerting}/hooks/useGetSupportedMeasures.js +2 -6
- package/esm/presentation/automations/{_staging/alerting → alerting}/types.d.ts +5 -3
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/AlertingConnector.d.ts +27 -0
- package/esm/presentation/automations/connectors/AlertingConnector.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/AlertingConnector.js +72 -0
- package/esm/presentation/automations/connectors/hooks/sanitizeAutomationForSave.d.ts +15 -0
- package/esm/presentation/automations/connectors/hooks/sanitizeAutomationForSave.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/sanitizeAutomationForSave.js +25 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts +9 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.js +128 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.d.ts +2 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.js +66 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.js +65 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.js +27 -0
- package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts +32 -0
- package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -0
- package/esm/presentation/automations/contexts/AlertingDialogContext.js +11 -0
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts +20 -1
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AutomationsContext.js +4 -1
- package/esm/presentation/automations/contexts/AutomationsContext.test.js +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +2 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.d.ts +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.js +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.js +1 -1
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.js +19 -0
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProvider.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProvider.js +18 -4
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts +5 -4
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.js +30 -48
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts +37 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts.map +1 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.js +90 -0
- package/esm/presentation/dashboard/components/DashboardInner.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardInner.js +24 -14
- package/esm/presentation/dashboard/components/DashboardRenderer.js +1 -1
- package/esm/presentation/dashboard/types.d.ts +1 -1
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.d.ts +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.d.ts.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.js +6 -28
- package/esm/presentation/drill/hooks/useDrillSelectDropdownMenuItems.d.ts +0 -3
- package/esm/presentation/drill/hooks/useDrillSelectDropdownMenuItems.d.ts.map +1 -1
- package/esm/presentation/drill/hooks/useDrillSelectDropdownMenuItems.js +16 -3
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.js +11 -2
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +4 -0
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +4 -0
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -1
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.d.ts.map +1 -1
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.js +9 -9
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.d.ts +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +23 -14
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlertConfiguration.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.js +4 -4
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightWidgetAlerting.d.ts +3 -3
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightWidgetAlerting.js +5 -5
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.d.ts +0 -11
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.js +2 -17
- package/esm/presentation/widget/insight/configuration/InsightAlertsNew.js +3 -3
- package/esm/sdk-ui-dashboard.d.ts +18 -1
- package/package.json +20 -20
- package/styles/css/configurationPanel.css +2 -3
- package/styles/css/configurationPanel.css.map +1 -1
- package/styles/css/dashboard.css +7 -7
- package/styles/css/drillSelect.css +0 -49
- package/styles/css/drillSelect.css.map +1 -1
- package/styles/css/main.css +8799 -11451
- package/styles/css/main.css.map +1 -1
- package/styles/css/notifications_channels_dialog.css +7 -7
- package/styles/css/topBar.css +3 -5
- package/styles/css/topBar.css.map +1 -1
- package/styles/scss/configurationPanel.scss +2 -3
- package/styles/scss/drillSelect.scss +0 -65
- package/styles/scss/notifications_channels_dialog.scss +1 -1
- package/styles/scss/topBar.scss +3 -9
- package/esm/presentation/automations/_staging/alerting/AlertingDialog.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/AlertingDialogHeader.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +0 -7
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertDeleteDialog.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertDestinationSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertGranularitySelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertMeasureSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertSensitivitySelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertThresholdInput.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/components/AlertTriggerModeSelect.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/constants.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useAlertValidation.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useOperators.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useThresholdValue.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/messages.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/convertors.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/cron.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/getters.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/granularity.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/guards.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/items.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/responsive.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/threshold.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/utils/transformation.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/hooks/useGetSupportedMeasures.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/types.d.ts.map +0 -1
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderNew.d.ts +0 -2
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderNew.d.ts.map +0 -1
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderNew.js +0 -28
- /package/esm/presentation/automations/_staging/alerting/{DefaultAlertingDialog → DefaultAlertingManagementDialog}/hooks/useAlertValidation.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/AlertingDialog.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/AlertingDialogHeader.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/AlertingDialogHeader.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertAttributeSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertAttributeSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertDeleteDialog.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertDeleteDialog.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertDestinationSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertDestinationSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertGranularitySelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertGranularitySelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertMeasureSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertMeasureSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertSensitivitySelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertSensitivitySelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertThresholdInput.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertThresholdInput.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertTriggerModeSelect.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/components/AlertTriggerModeSelect.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/constants.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/constants.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useOperators.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useOperators.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useThresholdValue.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/hooks/useThresholdValue.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/messages.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/messages.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/convertors.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/convertors.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/cron.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/cron.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/getters.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/getters.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/granularity.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/granularity.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/guards.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/guards.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/items.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/items.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/responsive.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/responsive.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/threshold.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/threshold.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/transformation.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/DefaultAlertingDialog/utils/transformation.js +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/hooks/useGetSupportedMeasures.d.ts +0 -0
- /package/esm/presentation/automations/{_staging/alerting → alerting}/types.js +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { idRef } from "@gooddata/sdk-model";
|
|
5
|
+
const fixtures = vi.hoisted(() => {
|
|
6
|
+
// A single, referentially stable execution-result envelope, simulating an
|
|
7
|
+
// unchanged normalized store entity across renders.
|
|
8
|
+
const stableExecutionResult = { readAll: () => Promise.resolve({}) };
|
|
9
|
+
const stableEnvelope = { isLoading: false, executionResult: stableExecutionResult };
|
|
10
|
+
// Any serialized ObjRef key resolves to the same stable envelope.
|
|
11
|
+
const entities = new Proxy({}, {
|
|
12
|
+
get: () => stableEnvelope,
|
|
13
|
+
});
|
|
14
|
+
return { stableEnvelope, entities };
|
|
15
|
+
});
|
|
16
|
+
vi.mock("@gooddata/sdk-ui", () => ({
|
|
17
|
+
useBackendStrict: vi.fn(() => ({ workspace: () => ({ automations: () => ({}) }) })),
|
|
18
|
+
useWorkspaceStrict: vi.fn(() => "workspace"),
|
|
19
|
+
}));
|
|
20
|
+
vi.mock("../../../../model/react/DashboardStoreProvider.js", () => ({
|
|
21
|
+
useDashboardSelector: vi.fn((selector) => selector()),
|
|
22
|
+
}));
|
|
23
|
+
vi.mock("../../../../model/react/useDashboardCommandProcessing.js", () => ({
|
|
24
|
+
useDashboardCommandProcessing: vi.fn(() => ({ run: vi.fn() })),
|
|
25
|
+
}));
|
|
26
|
+
vi.mock("../../../../model/commands/alerts.js", () => ({
|
|
27
|
+
createAlert: vi.fn(),
|
|
28
|
+
saveAlert: vi.fn(),
|
|
29
|
+
}));
|
|
30
|
+
vi.mock("../../../../model/store/executionResults/executionResultsSelectors.js", () => ({
|
|
31
|
+
selectExecutionResultEntities: () => fixtures.entities,
|
|
32
|
+
}));
|
|
33
|
+
vi.mock("../../../../model/store/filtering/dashboardFilterSelectors.js", () => ({
|
|
34
|
+
selectAutomationCommonDateFilterId: () => undefined,
|
|
35
|
+
selectAutomationDefaultSelectedFilters: () => [],
|
|
36
|
+
selectDashboardHiddenFilters: () => [],
|
|
37
|
+
}));
|
|
38
|
+
vi.mock("../../../../model/store/meta/metaSelectors.js", () => ({
|
|
39
|
+
selectDashboardId: () => "dashboard-1",
|
|
40
|
+
selectEvaluationFrequency: () => undefined,
|
|
41
|
+
}));
|
|
42
|
+
vi.mock("../../../../model/store/tabs/layout/layoutSelectors.js", () => ({
|
|
43
|
+
selectWidgetLocalIdToTabIdMap: () => ({}),
|
|
44
|
+
}));
|
|
45
|
+
vi.mock("../../../../model/store/tabs/parameters/parametersSelectors.js", () => ({
|
|
46
|
+
selectEffectiveParameterValuesForWidget: () => () => [],
|
|
47
|
+
}));
|
|
48
|
+
vi.mock("../../../../model/utils/dashboardItemUtils.js", () => ({
|
|
49
|
+
getWidgetTitle: () => "widget title",
|
|
50
|
+
}));
|
|
51
|
+
import { useBuildAlertingDialogContext } from "./useBuildAlertingDialogContext.js";
|
|
52
|
+
describe("useBuildAlertingDialogContext", () => {
|
|
53
|
+
it("returns a referentially stable execution-result envelope across renders (no render loop)", () => {
|
|
54
|
+
const ref = idRef("widget-1");
|
|
55
|
+
const { result, rerender } = renderHook(() => useBuildAlertingDialogContext({ mode: "create" }));
|
|
56
|
+
const first = result.current.executionResultByRef(ref);
|
|
57
|
+
rerender();
|
|
58
|
+
const second = result.current.executionResultByRef(ref);
|
|
59
|
+
// The envelope must keep the same identity when the underlying store entity
|
|
60
|
+
// is unchanged. A fresh object each call makes useAttributeValuesFromExecResults'
|
|
61
|
+
// useEffect([execResult]) re-fire every render -> infinite readAll() loop ->
|
|
62
|
+
// the alerting dialog Overlay never stabilizes and stays hidden.
|
|
63
|
+
expect(second).toBe(first);
|
|
64
|
+
expect(first?.executionResult).toBe(fixtures.stableEnvelope.executionResult);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildAutomationsContext.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBuildAutomationsContext.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts"],"names":[],"mappings":"AAyEA,OAAO,KAAK,EACR,wBAAwB,EAE3B,MAAM,sCAAsC,CAAC;AAI9C,wBAAgB,0BAA0B,IAAI,wBAAwB,CA4LrE"}
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
import { useCallback, useMemo } from "react";
|
|
3
3
|
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
4
4
|
import { selectAllCatalogAttributesMap, selectAllCatalogDisplayFormsMap, selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogMeasures, } from "../../../../model/store/catalog/catalogSelectors.js";
|
|
5
|
-
import { selectEnableNewScheduledExport, selectLocale, selectSeparators, selectSettings, } from "../../../../model/store/config/configSelectors.js";
|
|
5
|
+
import { selectEnableAlertAttributes, selectEnableAlertOncePerInterval, selectEnableAnomalyDetectionAlert, selectEnableAutomationManagement, selectEnableComparisonInAlerting, selectEnableExternalRecipients, selectEnableNewScheduledExport, selectExternalRecipient, selectIsWhiteLabeled, selectLocale, selectSeparators, selectSettings, selectTimezone, selectWeekStart, } from "../../../../model/store/config/configSelectors.js";
|
|
6
|
+
import { selectEntitlementMinimumRecurrenceMinutes, selectMaxAutomationRecipients, } from "../../../../model/store/entitlements/entitlementsSelectors.js";
|
|
6
7
|
import { selectAutomationAvailableDashboardFilters, selectAutomationCommonDateFilterId, selectAutomationDefaultSelectedFilters, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, selectDashboardHiddenFilters, selectDashboardLockedFilters, } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
7
8
|
import { selectPersistedDashboardFilterContextDateFilterConfig } from "../../../../model/store/meta/metaSelectors.js";
|
|
9
|
+
import { selectCanManageWorkspace, selectCanUseAiAssistant, } from "../../../../model/store/permissions/permissionsSelectors.js";
|
|
8
10
|
import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
9
11
|
import { selectDateFilterConfigOverridesByTab, selectEffectiveDateFilterAvailableGranularities, selectEffectiveDateFilterGranularitiesPerTab, selectEffectiveDateFilterOptions, selectEffectiveDateFilterOptionsPerTab, } from "../../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
|
|
10
12
|
import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
|
|
11
13
|
import { selectAttributeFilterDisplayFormsMap } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
12
14
|
import { selectMeasureValueFilterConfigsOverrides, selectMeasureValueFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
|
|
15
|
+
import { selectIsAutomationDialogSecondaryTitleVisible } from "../../../../model/store/topBar/topBarSelectors.js";
|
|
16
|
+
import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js";
|
|
17
|
+
import { selectCurrentUser } from "../../../../model/store/user/userSelectors.js";
|
|
18
|
+
const DEFAULT_MIN_RECURRENCE_MINUTES = "60";
|
|
13
19
|
export function useBuildAutomationsContext() {
|
|
14
20
|
const locale = useDashboardSelector(selectLocale);
|
|
15
21
|
const separators = useDashboardSelector(selectSeparators);
|
|
@@ -42,6 +48,25 @@ export function useBuildAutomationsContext() {
|
|
|
42
48
|
const automationFiltersByTab = useDashboardSelector(selectAutomationFiltersByTab);
|
|
43
49
|
const defaultSelectedFilters = useDashboardSelector(selectAutomationDefaultSelectedFilters);
|
|
44
50
|
const automationAvailableFilters = useDashboardSelector(selectAutomationAvailableDashboardFilters);
|
|
51
|
+
const currentUser = useDashboardSelector(selectCurrentUser);
|
|
52
|
+
const weekStart = useDashboardSelector(selectWeekStart);
|
|
53
|
+
const timezone = useDashboardSelector(selectTimezone);
|
|
54
|
+
const isWhiteLabeled = useDashboardSelector(selectIsWhiteLabeled);
|
|
55
|
+
const isSecondaryTitleVisible = useDashboardSelector(selectIsAutomationDialogSecondaryTitleVisible);
|
|
56
|
+
const externalRecipient = useDashboardSelector(selectExternalRecipient);
|
|
57
|
+
const enableAlertOncePerInterval = useDashboardSelector(selectEnableAlertOncePerInterval);
|
|
58
|
+
const enableAnomalyDetectionAlert = useDashboardSelector(selectEnableAnomalyDetectionAlert);
|
|
59
|
+
const enableAutomationManagement = useDashboardSelector(selectEnableAutomationManagement);
|
|
60
|
+
const canUseAiAssistant = useDashboardSelector(selectCanUseAiAssistant);
|
|
61
|
+
const canManageWorkspace = useDashboardSelector(selectCanManageWorkspace);
|
|
62
|
+
const enableComparisonInAlerting = useDashboardSelector(selectEnableComparisonInAlerting);
|
|
63
|
+
const enableExternalRecipients = useDashboardSelector(selectEnableExternalRecipients);
|
|
64
|
+
const enableAlertAttributes = useDashboardSelector(selectEnableAlertAttributes);
|
|
65
|
+
const maxAutomationsRecipients = useDashboardSelector(selectMaxAutomationRecipients);
|
|
66
|
+
const minimumRecurrenceMinutesEntitlement = useDashboardSelector(selectEntitlementMinimumRecurrenceMinutes);
|
|
67
|
+
const allowHourlyRecurrence = parseInt(minimumRecurrenceMinutesEntitlement?.value ?? DEFAULT_MIN_RECURRENCE_MINUTES, 10) === 60;
|
|
68
|
+
const executionTimestamp = useDashboardSelector(selectExecutionTimestamp);
|
|
69
|
+
const isExecutionTimestampMode = !!executionTimestamp;
|
|
45
70
|
const getCatalogAttributeByRef = useCallback((ref) => allCatalogAttributesMap.get(ref), [allCatalogAttributesMap]);
|
|
46
71
|
const getAttributeFilterDisplayForm = useCallback((displayForm) => attrFilterDisplayFormsMap.get(displayForm) ?? catalogDisplayFormsMap.get(displayForm), [attrFilterDisplayFormsMap, catalogDisplayFormsMap]);
|
|
47
72
|
const dateFilterConfig = useMemo(() => ({
|
|
@@ -50,11 +75,33 @@ export function useBuildAutomationsContext() {
|
|
|
50
75
|
getGranularitiesForTab: (tabId) => granularitiesPerTab[tabId] ?? [],
|
|
51
76
|
getOptionsForTab: (tabId) => optionsPerTab[tabId],
|
|
52
77
|
}), [availableGranularities, dateFilterOptions, granularitiesPerTab, optionsPerTab]);
|
|
78
|
+
const features = useMemo(() => ({
|
|
79
|
+
enableAlertOncePerInterval,
|
|
80
|
+
enableAnomalyDetectionAlert,
|
|
81
|
+
enableAutomationManagement,
|
|
82
|
+
canUseAiAssistant,
|
|
83
|
+
enableComparisonInAlerting,
|
|
84
|
+
enableExternalRecipients,
|
|
85
|
+
enableAlertAttributes,
|
|
86
|
+
canManageWorkspace,
|
|
87
|
+
}), [
|
|
88
|
+
enableAlertOncePerInterval,
|
|
89
|
+
enableAnomalyDetectionAlert,
|
|
90
|
+
enableAutomationManagement,
|
|
91
|
+
canUseAiAssistant,
|
|
92
|
+
enableComparisonInAlerting,
|
|
93
|
+
enableExternalRecipients,
|
|
94
|
+
enableAlertAttributes,
|
|
95
|
+
canManageWorkspace,
|
|
96
|
+
]);
|
|
53
97
|
return useMemo(() => ({
|
|
54
98
|
locale,
|
|
55
99
|
separators,
|
|
56
100
|
settings,
|
|
57
101
|
enableNewScheduledExport,
|
|
102
|
+
maxAutomationsRecipients,
|
|
103
|
+
isExecutionTimestampMode,
|
|
104
|
+
allowHourlyRecurrence,
|
|
58
105
|
catalogAttributes,
|
|
59
106
|
catalogDateDatasets,
|
|
60
107
|
dateFilterConfig,
|
|
@@ -76,6 +123,13 @@ export function useBuildAutomationsContext() {
|
|
|
76
123
|
automationFiltersByTab,
|
|
77
124
|
defaultSelectedFilters,
|
|
78
125
|
automationAvailableFilters,
|
|
126
|
+
currentUser,
|
|
127
|
+
weekStart,
|
|
128
|
+
timezone,
|
|
129
|
+
isWhiteLabeled,
|
|
130
|
+
isSecondaryTitleVisible,
|
|
131
|
+
externalRecipient,
|
|
132
|
+
features,
|
|
79
133
|
getCatalogAttributeByRef,
|
|
80
134
|
getAttributeFilterDisplayForm,
|
|
81
135
|
}), [
|
|
@@ -83,6 +137,9 @@ export function useBuildAutomationsContext() {
|
|
|
83
137
|
separators,
|
|
84
138
|
settings,
|
|
85
139
|
enableNewScheduledExport,
|
|
140
|
+
maxAutomationsRecipients,
|
|
141
|
+
isExecutionTimestampMode,
|
|
142
|
+
allowHourlyRecurrence,
|
|
86
143
|
catalogAttributes,
|
|
87
144
|
catalogDateDatasets,
|
|
88
145
|
dateFilterConfig,
|
|
@@ -104,6 +161,13 @@ export function useBuildAutomationsContext() {
|
|
|
104
161
|
automationFiltersByTab,
|
|
105
162
|
defaultSelectedFilters,
|
|
106
163
|
automationAvailableFilters,
|
|
164
|
+
currentUser,
|
|
165
|
+
weekStart,
|
|
166
|
+
timezone,
|
|
167
|
+
isWhiteLabeled,
|
|
168
|
+
isSecondaryTitleVisible,
|
|
169
|
+
externalRecipient,
|
|
170
|
+
features,
|
|
107
171
|
getCatalogAttributeByRef,
|
|
108
172
|
getAttributeFilterDisplayForm,
|
|
109
173
|
]);
|
|
@@ -44,10 +44,30 @@ vi.mock("../../../../model/store/catalog/catalogSelectors.js", () => ({
|
|
|
44
44
|
selectCatalogMeasures: () => [],
|
|
45
45
|
}));
|
|
46
46
|
vi.mock("../../../../model/store/config/configSelectors.js", () => ({
|
|
47
|
+
selectEnableAlertAttributes: () => false,
|
|
48
|
+
selectEnableAlertOncePerInterval: () => false,
|
|
49
|
+
selectEnableAnomalyDetectionAlert: () => false,
|
|
50
|
+
selectEnableAutomationManagement: () => false,
|
|
51
|
+
selectEnableComparisonInAlerting: () => false,
|
|
52
|
+
selectEnableExternalRecipients: () => false,
|
|
47
53
|
selectEnableNewScheduledExport: () => false,
|
|
54
|
+
selectExternalRecipient: () => undefined,
|
|
55
|
+
selectIsWhiteLabeled: () => false,
|
|
48
56
|
selectLocale: () => "en-US",
|
|
49
57
|
selectSeparators: () => ({ decimal: ".", thousand: "," }),
|
|
50
58
|
selectSettings: () => undefined,
|
|
59
|
+
selectTimezone: () => undefined,
|
|
60
|
+
selectWeekStart: () => "Sunday",
|
|
61
|
+
}));
|
|
62
|
+
vi.mock("../../../../model/store/permissions/permissionsSelectors.js", () => ({
|
|
63
|
+
selectCanManageWorkspace: () => false,
|
|
64
|
+
selectCanUseAiAssistant: () => false,
|
|
65
|
+
}));
|
|
66
|
+
vi.mock("../../../../model/store/topBar/topBarSelectors.js", () => ({
|
|
67
|
+
selectIsAutomationDialogSecondaryTitleVisible: () => false,
|
|
68
|
+
}));
|
|
69
|
+
vi.mock("../../../../model/store/user/userSelectors.js", () => ({
|
|
70
|
+
selectCurrentUser: () => ({ login: "test@example.com", ref: { identifier: "test" } }),
|
|
51
71
|
}));
|
|
52
72
|
vi.mock("../../../../model/store/filtering/dashboardFilterSelectors.js", () => ({
|
|
53
73
|
selectAutomationAvailableDashboardFilters: () => [],
|
|
@@ -81,6 +101,13 @@ vi.mock("../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelecto
|
|
|
81
101
|
vi.mock("../../../../model/store/tabs/filterContext/filterContextSelectors.js", () => ({
|
|
82
102
|
selectAttributeFilterDisplayFormsMap: () => new Map(),
|
|
83
103
|
}));
|
|
104
|
+
vi.mock("../../../../model/store/entitlements/entitlementsSelectors.js", () => ({
|
|
105
|
+
selectMaxAutomationRecipients: () => 10,
|
|
106
|
+
selectEntitlementMinimumRecurrenceMinutes: () => undefined,
|
|
107
|
+
}));
|
|
108
|
+
vi.mock("../../../../model/store/ui/uiSelectors.js", () => ({
|
|
109
|
+
selectExecutionTimestamp: () => undefined,
|
|
110
|
+
}));
|
|
84
111
|
vi.mock("../../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js", () => ({
|
|
85
112
|
selectMeasureValueFilterConfigsOverrides: () => [],
|
|
86
113
|
selectMeasureValueFilterConfigsOverridesByTab: () => ({}),
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IExecutionResult } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import type { FilterContextItem, IAutomationMetadataObject, IAutomationMetadataObjectDefinition, IInsight, IInsightParameterValue, IWidget, ObjRef } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* Sub-context for the alerting create/edit dialog.
|
|
5
|
+
* Shape grows during Phase 2 migration as DefaultAlertingDialog and its hooks are migrated.
|
|
6
|
+
*
|
|
7
|
+
* The connector hydrates this from dashboard state and provides the CRUD callbacks.
|
|
8
|
+
* The dialog reads from this context instead of calling useDashboardSelector directly.
|
|
9
|
+
*/
|
|
10
|
+
export interface IAlertingDialogContextValue {
|
|
11
|
+
mode: "create" | "edit";
|
|
12
|
+
widget?: IWidget;
|
|
13
|
+
insight?: IInsight;
|
|
14
|
+
widgetTitle?: string;
|
|
15
|
+
dashboardId?: string;
|
|
16
|
+
dashboardFilters: FilterContextItem[];
|
|
17
|
+
hiddenFilters: FilterContextItem[];
|
|
18
|
+
widgetLocalIdToTabIdMap: Record<string, string>;
|
|
19
|
+
executionResultByRef: (ref: ObjRef | undefined) => {
|
|
20
|
+
executionResult?: IExecutionResult;
|
|
21
|
+
} | undefined;
|
|
22
|
+
/** Effective widget parameter values for the dialog's widget (replaces direct selectEffectiveParameterValuesForWidget read) */
|
|
23
|
+
parameterValues: IInsightParameterValue[];
|
|
24
|
+
commonDateFilterId?: string;
|
|
25
|
+
dashboardEvaluationFrequency?: string;
|
|
26
|
+
createAlert(alert: IAutomationMetadataObjectDefinition): Promise<IAutomationMetadataObject>;
|
|
27
|
+
saveAlert(alert: IAutomationMetadataObject): Promise<IAutomationMetadataObject>;
|
|
28
|
+
deleteAlert(alert: IAutomationMetadataObject): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export declare const AlertingDialogContextProvider: import("react").Provider<IAlertingDialogContextValue | undefined>;
|
|
31
|
+
export declare function useAlertingDialogContext(): IAlertingDialogContextValue;
|
|
32
|
+
//# sourceMappingURL=AlertingDialogContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertingDialogContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/AlertingDialogContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EACR,iBAAiB,EACjB,yBAAyB,EACzB,mCAAmC,EACnC,QAAQ,EACR,sBAAsB,EACtB,OAAO,EACP,MAAM,EACT,MAAM,qBAAqB,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,KAAK;QAAE,eAAe,CAAC,EAAE,gBAAgB,CAAA;KAAE,GAAG,SAAS,CAAC;IACtG,+HAA+H;IAC/H,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,WAAW,CAAC,KAAK,EAAE,mCAAmC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5F,SAAS,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAChF,WAAW,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAID,eAAO,MAAM,6BAA6B,mEAAiC,CAAC;AAE5E,wBAAgB,wBAAwB,IAAI,2BAA2B,CAMtE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
const AlertingDialogContext = createContext(undefined);
|
|
4
|
+
export const AlertingDialogContextProvider = AlertingDialogContext.Provider;
|
|
5
|
+
export function useAlertingDialogContext() {
|
|
6
|
+
const ctx = useContext(AlertingDialogContext);
|
|
7
|
+
if (!ctx) {
|
|
8
|
+
throw new Error("useAlertingDialogContext must be used within AlertingDialogContextProvider");
|
|
9
|
+
}
|
|
10
|
+
return ctx;
|
|
11
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DashboardAttributeFilterSelectionType, DateFilterGranularity, FilterContextItem, IAttributeDisplayFormMetadataObject, ICatalogAttribute, ICatalogDateAttribute, ICatalogDateDataset, ICatalogMeasure, IDashboardAttributeFilterConfig, IDashboardDateFilterConfig, IDashboardDateFilterConfigItem, IDashboardMeasureValueFilterConfig, ISeparators, ISettings, ObjRef } from "@gooddata/sdk-model";
|
|
1
|
+
import type { DashboardAttributeFilterSelectionType, DateFilterGranularity, FilterContextItem, IAttributeDisplayFormMetadataObject, ICatalogAttribute, ICatalogDateAttribute, ICatalogDateDataset, ICatalogMeasure, IDashboardAttributeFilterConfig, IDashboardDateFilterConfig, IDashboardDateFilterConfigItem, IDashboardMeasureValueFilterConfig, ISeparators, ISettings, IUser, ObjRef, WeekStart } from "@gooddata/sdk-model";
|
|
2
2
|
import type { ILocale } from "@gooddata/sdk-ui";
|
|
3
3
|
import type { IDateFilterOptionsByType } from "@gooddata/sdk-ui-filters";
|
|
4
4
|
import type { IAutomationFiltersTab } from "../../../model/store/filtering/types.js";
|
|
@@ -42,6 +42,25 @@ export interface IAutomationsContextValue {
|
|
|
42
42
|
defaultSelectedFilters: FilterContextItem[];
|
|
43
43
|
automationAvailableFilters: FilterContextItem[];
|
|
44
44
|
enableNewScheduledExport: boolean;
|
|
45
|
+
maxAutomationsRecipients: number;
|
|
46
|
+
isExecutionTimestampMode: boolean;
|
|
47
|
+
allowHourlyRecurrence: boolean;
|
|
48
|
+
currentUser: IUser;
|
|
49
|
+
weekStart: WeekStart;
|
|
50
|
+
timezone: string | undefined;
|
|
51
|
+
isWhiteLabeled: boolean;
|
|
52
|
+
isSecondaryTitleVisible: boolean;
|
|
53
|
+
externalRecipient: string | undefined;
|
|
54
|
+
features: {
|
|
55
|
+
enableAlertOncePerInterval: boolean;
|
|
56
|
+
enableAnomalyDetectionAlert: boolean;
|
|
57
|
+
enableAutomationManagement: boolean;
|
|
58
|
+
canUseAiAssistant: boolean;
|
|
59
|
+
enableComparisonInAlerting: boolean;
|
|
60
|
+
enableExternalRecipients: boolean;
|
|
61
|
+
enableAlertAttributes: boolean;
|
|
62
|
+
canManageWorkspace: boolean;
|
|
63
|
+
};
|
|
45
64
|
getCatalogAttributeByRef: (ref: ObjRef) => ICatalogAttribute | ICatalogDateAttribute | undefined;
|
|
46
65
|
getAttributeFilterDisplayForm: (displayForm: ObjRef) => IAttributeDisplayFormMetadataObject | undefined;
|
|
47
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationsContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/AutomationsContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,qCAAqC,EACrC,qBAAqB,EACrB,iBAAiB,EACjB,mCAAmC,EACnC,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,+BAA+B,EAC/B,0BAA0B,EAC1B,8BAA8B,EAC9B,kCAAkC,EAClC,WAAW,EACX,SAAS,EACT,MAAM,
|
|
1
|
+
{"version":3,"file":"AutomationsContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/AutomationsContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,qCAAqC,EACrC,qBAAqB,EACrB,iBAAiB,EACjB,mCAAmC,EACnC,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,+BAA+B,EAC/B,0BAA0B,EAC1B,8BAA8B,EAC9B,kCAAkC,EAClC,WAAW,EACX,SAAS,EACT,KAAK,EACL,MAAM,EACN,SAAS,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAErF;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IACzC,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,qBAAqB,EAAE,CAAC;IACnE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;CAC7E;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAC3C,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,gBAAgB,EAAE,4BAA4B,CAAC;IAC/C,uBAAuB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAChE,sBAAsB,EAAE,+BAA+B,EAAE,CAAC;IAC1D,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC/E,+BAA+B,EAAE,GAAG,CAAC,MAAM,EAAE,qCAAqC,GAAG,SAAS,CAAC,CAAC;IAChG,oCAAoC,EAAE,MAAM,CACxC,MAAM,EACN,GAAG,CAAC,MAAM,EAAE,qCAAqC,GAAG,SAAS,CAAC,CACjE,CAAC;IACF,iBAAiB,EAAE,8BAA8B,EAAE,CAAC;IACpD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACzE,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAAC;IACvF,yBAAyB,EAAE,kCAAkC,EAAE,CAAC;IAChE,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC,CAAC;IACrF,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;IAC5C,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;IAChD,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,EAAE,OAAO,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE;QACN,0BAA0B,EAAE,OAAO,CAAC;QACpC,2BAA2B,EAAE,OAAO,CAAC;QACrC,0BAA0B,EAAE,OAAO,CAAC;QACpC,iBAAiB,EAAE,OAAO,CAAC;QAC3B,0BAA0B,EAAE,OAAO,CAAC;QACpC,wBAAwB,EAAE,OAAO,CAAC;QAClC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kBAAkB,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,wBAAwB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACjG,6BAA6B,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,mCAAmC,GAAG,SAAS,CAAC;CAC3G;AAID,eAAO,MAAM,0BAA0B,gEAA8B,CAAC;AAEtE,wBAAgB,qBAAqB,IAAI,wBAAwB,CAWhE"}
|
|
@@ -5,7 +5,10 @@ export const AutomationsContextProvider = AutomationsContext.Provider;
|
|
|
5
5
|
export function useAutomationsContext() {
|
|
6
6
|
const ctx = useContext(AutomationsContext);
|
|
7
7
|
if (!ctx) {
|
|
8
|
-
throw new Error("useAutomationsContext must be used within AutomationsContextProvider"
|
|
8
|
+
throw new Error("useAutomationsContext must be used within an AutomationsContextProvider. " +
|
|
9
|
+
"The automation dialogs (e.g. DefaultAlertingDialog) are pure context consumers; " +
|
|
10
|
+
"render them inside a Dashboard — which supplies the provider via the alerting " +
|
|
11
|
+
"connector — or wrap them in AutomationsContextProvider yourself.");
|
|
9
12
|
}
|
|
10
13
|
return ctx;
|
|
11
14
|
}
|
|
@@ -4,6 +4,6 @@ import { describe, expect, it } from "vitest";
|
|
|
4
4
|
import { useAutomationsContext } from "./AutomationsContext.js";
|
|
5
5
|
describe("useAutomationsContext", () => {
|
|
6
6
|
it("throws when used outside provider", () => {
|
|
7
|
-
expect(() => renderHook(() => useAutomationsContext())).toThrow("useAutomationsContext must be used within AutomationsContextProvider");
|
|
7
|
+
expect(() => renderHook(() => useAutomationsContext())).toThrow("useAutomationsContext must be used within an AutomationsContextProvider");
|
|
8
8
|
});
|
|
9
9
|
});
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2019-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useMemo, useState } from "react";
|
|
4
4
|
import { sortBy } from "lodash-es";
|
|
5
|
-
import { convertUserToAutomationRecipient } from "
|
|
5
|
+
import { convertUserToAutomationRecipient } from "../../../../shared/utils/automationUtils.js";
|
|
6
6
|
import { createUser, matchUser } from "../../../utils/users.js";
|
|
7
7
|
import { isEmail } from "../../../utils/validate.js";
|
|
8
8
|
import { RecipientsSelectRenderer } from "./RecipientsSelectRenderer.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAU5B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAU5B,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAM3F,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAyBzF,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA62B7B"}
|
|
@@ -3,7 +3,7 @@ import { useCallback, useMemo, useRef, useState } from "react";
|
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
4
|
import { invariant } from "ts-invariant";
|
|
5
5
|
import { DEFAULT_CSV_DELIMITER, insightProperties, isAutomationExternalUserRecipient, isAutomationUnknownUserRecipient, isAutomationUserRecipient, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isInsightWidget, isWidget, objRefToString, } from "@gooddata/sdk-model";
|
|
6
|
-
import {
|
|
6
|
+
import { getAutomationExportParametersByTab, setExportParametersByTab, } from "../../../../../_staging/automation/index.js";
|
|
7
7
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
8
8
|
import { selectEnableAutomationEvaluationMode, selectEnableExternalRecipients, selectSettings, selectTimezone, } from "../../../../../model/store/config/configSelectors.js";
|
|
9
9
|
import { selectAutomationCommonDateFilterId, selectDashboardHiddenFilters, } from "../../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
@@ -15,6 +15,7 @@ import { selectUsers } from "../../../../../model/store/users/usersSelectors.js"
|
|
|
15
15
|
import { shouldStoreExportParameters } from "../../../shared/automationFilters/automationParameters.js";
|
|
16
16
|
import { getDefaultSelectedFiltersFromFiltersByTab } from "../../../shared/automationFilters/useAutomationFiltersSelect.js";
|
|
17
17
|
import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersByFilters, getVisibleFiltersByFiltersByTab, } from "../../../shared/automationFilters/utils.js";
|
|
18
|
+
import { areAutomationsEqual, convertCurrentUserToAutomationRecipient, convertCurrentUserToWorkspaceUser, convertExternalRecipientToAutomationRecipient, } from "../../../shared/utils/automationUtils.js";
|
|
18
19
|
import { toModifiedISOStringToTimezone, toNormalizedFirstRunAndCron, toNormalizedStartDate, } from "../../utils/date.js";
|
|
19
20
|
import { getUserTimezone } from "../../utils/timezone.js";
|
|
20
21
|
import { isEmail } from "../../utils/validate.js";
|
|
@@ -14,6 +14,6 @@ interface IUseFiltersForDashboardScheduledExportInfoProps {
|
|
|
14
14
|
*/
|
|
15
15
|
effectiveFilters?: FilterContextItem[];
|
|
16
16
|
}
|
|
17
|
-
export declare const useFiltersForDashboardScheduledExportInfo: ({ effectiveFilters, }: IUseFiltersForDashboardScheduledExportInfoProps) => import("
|
|
17
|
+
export declare const useFiltersForDashboardScheduledExportInfo: ({ effectiveFilters, }: IUseFiltersForDashboardScheduledExportInfoProps) => import("../../../shared/hooks/useFiltersNamings.js").FilterNaming[];
|
|
18
18
|
export {};
|
|
19
19
|
//# sourceMappingURL=useFiltersForDashboardScheduledExportInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersForDashboardScheduledExportInfo.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.ts"],"names":[],"mappings":"AAIA,OAAO,EAKH,KAAK,iBAAiB,EAKzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQjE,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,UAAU,+CAA+C;IACrD;;OAEG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAED,eAAO,MAAM,yCAAyC
|
|
1
|
+
{"version":3,"file":"useFiltersForDashboardScheduledExportInfo.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.ts"],"names":[],"mappings":"AAIA,OAAO,EAKH,KAAK,iBAAiB,EAKzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQjE,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,UAAU,+CAA+C;IACrD;;OAEG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAED,eAAO,MAAM,yCAAyC,iJAerD,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { compact } from "lodash-es";
|
|
3
3
|
import { DashboardAttributeFilterConfigModeValues, DashboardDateFilterConfigModeValues, dashboardAttributeFilterItemLocalIdentifier, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
4
|
-
import { useFiltersNamings } from "../../../../../_staging/sharedHooks/useFiltersNamings.js";
|
|
5
4
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
6
5
|
import { selectEffectiveAttributeFiltersModeMap } from "../../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
7
6
|
import { selectEffectiveDateFilterMode } from "../../../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
|
|
8
7
|
import { selectEffectiveDateFiltersModeMap } from "../../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
|
|
8
|
+
import { useFiltersNamings } from "../../../shared/hooks/useFiltersNamings.js";
|
|
9
9
|
export const useFiltersForDashboardScheduledExportInfo = ({ effectiveFilters = [], }) => {
|
|
10
10
|
// Remove hidden dashboard filters, we don't want to display them.
|
|
11
11
|
const commonDateFilterMode = useDashboardSelector(selectEffectiveDateFilterMode);
|
|
@@ -5,11 +5,11 @@ import cx from "classnames";
|
|
|
5
5
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
6
|
import { Bubble, BubbleHoverTrigger, IconInsight, IconSimplifiedDashboard, IconWarning, SELECT_ITEM_ACTION, ShortenedText, } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { useTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
8
|
-
import { isVisualisationAutomation } from "../../../../../_staging/automation/index.js";
|
|
9
8
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
10
9
|
import { selectCanManageWorkspace } from "../../../../../model/store/permissions/permissionsSelectors.js";
|
|
11
10
|
import { selectCurrentUser } from "../../../../../model/store/user/userSelectors.js";
|
|
12
11
|
import { gdColorNegative, gdColorStateBlank } from "../../../../constants/colors.js";
|
|
12
|
+
import { isVisualisationAutomation } from "../../../shared/utils/automationUtils.js";
|
|
13
13
|
import { useScheduleValidation } from "../../DefaultScheduledEmailDialog/hooks/useScheduleValidation.js";
|
|
14
14
|
const ICON_TOOLTIP_ALIGN_POINTS = [
|
|
15
15
|
{ align: "cr cl", offset: { x: 0, y: 0 } },
|
|
@@ -51,6 +51,25 @@ function createAutomationsContextValue(overrides) {
|
|
|
51
51
|
defaultSelectedFilters: [],
|
|
52
52
|
automationAvailableFilters: [],
|
|
53
53
|
enableNewScheduledExport: false,
|
|
54
|
+
maxAutomationsRecipients: 10,
|
|
55
|
+
isExecutionTimestampMode: false,
|
|
56
|
+
allowHourlyRecurrence: true,
|
|
57
|
+
currentUser: { login: "test@example.com", ref: { identifier: "test" } },
|
|
58
|
+
weekStart: "Sunday",
|
|
59
|
+
timezone: undefined,
|
|
60
|
+
isWhiteLabeled: false,
|
|
61
|
+
isSecondaryTitleVisible: false,
|
|
62
|
+
externalRecipient: undefined,
|
|
63
|
+
features: {
|
|
64
|
+
enableAlertOncePerInterval: false,
|
|
65
|
+
enableAnomalyDetectionAlert: false,
|
|
66
|
+
enableAutomationManagement: false,
|
|
67
|
+
canUseAiAssistant: false,
|
|
68
|
+
enableComparisonInAlerting: false,
|
|
69
|
+
enableExternalRecipients: false,
|
|
70
|
+
enableAlertAttributes: false,
|
|
71
|
+
canManageWorkspace: false,
|
|
72
|
+
},
|
|
54
73
|
getCatalogAttributeByRef: () => undefined,
|
|
55
74
|
getAttributeFilterDisplayForm: () => undefined,
|
|
56
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertingDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AlertingDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx"],"names":[],"mappings":"AAWA,wBAAgB,sBAAsB,4CAOrC"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useDashboardAlerts } from "../../../model/react/useDashboardAlerting/useDashboardAlerts.js";
|
|
3
|
+
import { AlertingManagementDialog } from "../../automations/_staging/alerting/AlertingManagementDialog.js";
|
|
4
|
+
import { AlertingAutomationsProvider, AlertingConnector, } from "../../automations/connectors/AlertingConnector.js";
|
|
4
5
|
export function AlertingDialogProvider() {
|
|
5
|
-
return
|
|
6
|
+
return (_jsxs(AlertingAutomationsProvider, { children: [
|
|
7
|
+
_jsx(StagedManagementBridge, {}), _jsx(AlertingConnector, {})
|
|
8
|
+
] }));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders the staged management dialog directly from Redux state.
|
|
12
|
+
* This bridge is removed in PR5 when management migrates out of _staging and into AlertingConnector.
|
|
13
|
+
*/
|
|
14
|
+
function StagedManagementBridge() {
|
|
15
|
+
const { isInitialized, isAlertManagementDialogOpen, automations, automationsLoading, automationsError, notificationChannels, onAlertingManagementClose, onAlertingManagementAdd, onAlertingManagementEdit, onAlertingManagementDeleteSuccess, onAlertingManagementDeleteError, onAlertingManagementPauseSuccess, onAlertingManagementPauseError, } = useDashboardAlerts();
|
|
16
|
+
if (!isInitialized || !isAlertManagementDialogOpen) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return (_jsx(AlertingManagementDialog, { automations: automations, notificationChannels: notificationChannels, alertDataError: automationsError, isLoadingAlertingData: automationsLoading, onAdd: onAlertingManagementAdd, onEdit: onAlertingManagementEdit, onClose: onAlertingManagementClose, onDeleteSuccess: onAlertingManagementDeleteSuccess, onDeleteError: onAlertingManagementDeleteError, onPauseSuccess: onAlertingManagementPauseSuccess, onPauseError: onAlertingManagementPauseError }));
|
|
6
20
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type ReactElement, type ReactNode } from "react";
|
|
2
2
|
/**
|
|
3
|
-
* Internal presentational wrapper that
|
|
3
|
+
* Internal presentational wrapper that drives the dashboard sidebar drag-to-resize interaction.
|
|
4
4
|
*
|
|
5
|
-
* Owns
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Owns only the live drag state (drag width — used for the dashed indicator transform — and drag
|
|
6
|
+
* phase). The committed width, min/max, and the editor-canvas constraint live in the shared
|
|
7
|
+
* {@link useResizableSidebar} state, so the same value also feeds the content area's width via the
|
|
8
|
+
* `--gd-dashboard-sidebar-width` custom property.
|
|
8
9
|
*
|
|
9
10
|
* Renders `.gd-sidebar-container` itself so the resize handle can be positioned absolutely inside
|
|
10
11
|
* it — that element is sticky+100vh, so the handle (and the grip centered inside it) tracks the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarResizeChrome.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"SidebarResizeChrome.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,SAAS,EAIjB,MAAM,OAAO,CAAC;AAkBf;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,gBAAgB,EAChB,QAAQ,EACX,EAAE;IACC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACvB,GAAG,YAAY,CAiHf"}
|