@gooddata/sdk-ui-dashboard 11.37.0-alpha.4 → 11.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +6 -6
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/dashboard/dashboardFilterContext.d.ts +6 -1
- package/esm/_staging/dashboard/dashboardFilterContext.js +10 -3
- package/esm/index.d.ts +12 -11
- package/esm/index.js +10 -9
- package/esm/internal.d.ts +6 -6
- package/esm/internal.js +5 -5
- package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.js +3 -5
- package/esm/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.js +22 -8
- package/esm/model/events/base.d.ts +1 -1
- package/esm/model/events/index.d.ts +2 -1
- package/esm/model/events/parameters.d.ts +21 -0
- package/esm/model/events/parameters.js +19 -0
- package/esm/model/events/userInteraction.d.ts +1 -1
- package/esm/model/react/useDashboardCommand.d.ts +1 -0
- package/esm/model/react/useDashboardCommandProcessing.d.ts +4 -0
- package/esm/model/react/useDashboardUserInteraction.d.ts +1 -0
- package/esm/model/react/useDashboardUserInteraction.js +4 -0
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +37 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.js +69 -13
- package/esm/presentation/{alerting → automations/alerting}/AlertingDialog.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/AlertingManagementDialog.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/AlertingDialogHeader.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/DefaultAlertingDialog.js +13 -13
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/constants.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useAlertValidation.js +4 -4
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.d.ts +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useCreateAlert.d.ts +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useCreateAlert.js +2 -2
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useEditAlert.d.ts +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useEditAlert.js +12 -12
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useOperators.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useThresholdValue.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useUpdateAlert.d.ts +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useUpdateAlert.js +2 -2
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/cron.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/granularity.js +1 -0
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/guards.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/responsive.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/threshold.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.js +5 -5
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentEnhanced.js +10 -10
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.js +3 -3
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/Alert.js +6 -6
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/AlertDropdown.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/AlertsList.js +1 -1
- package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.js +3 -3
- package/esm/presentation/{alerting → automations/alerting}/hooks/useAlertingDialogAccessibility.js +3 -3
- package/esm/presentation/{alerting → automations/alerting}/hooks/useGetSupportedMeasures.js +3 -3
- package/esm/presentation/{alerting → automations/alerting}/types.d.ts +1 -1
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts +9 -0
- package/esm/presentation/automations/contexts/AutomationsContext.js +11 -0
- package/esm/presentation/automations/contexts/AutomationsContext.test.d.ts +1 -0
- package/esm/presentation/automations/contexts/AutomationsContext.test.js +9 -0
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +20 -18
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsSelect.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsWrapper.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/EvaluationModeCheckbox/EvaluationModeCheckbox.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Header/ScheduleEmailDialogHeader.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/MessageForm/MessageForm.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/SubjectForm/SubjectForm.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Textarea.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useCreateScheduledEmail.d.ts +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useCreateScheduledEmail.js +2 -2
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +2 -2
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +10 -10
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.d.ts +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.js +5 -5
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useScheduleValidation.js +2 -2
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useUpdateScheduledEmail.d.ts +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useUpdateScheduledEmail.js +2 -2
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js +3 -3
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.js +9 -9
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.js +10 -10
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.js +3 -3
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.js +5 -5
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/ScheduledEmailsList.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/ScheduledEmailDialog.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/ScheduledEmailManagementDialog.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/hooks/useScheduleEmailDialogAccessibility.js +3 -3
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/hooks/useWidgetAutomationFilters.d.ts +2 -2
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/hooks/useWidgetAutomationFilters.js +3 -3
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/types.d.ts +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/cron.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/date.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/filters.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/responsive.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/timezone.js +1 -1
- package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/users.js +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationAttributeFilter.js +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationDateFilter.js +4 -4
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationDateFilterContext.js +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationFiltersSelect.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationFiltersSelect.js +2 -2
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationMeasureValueFilter.js +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useAutomationVisibleFilters.js +2 -2
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useDefaultSelectedFiltersForExistingAutomation.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useDefaultSelectedFiltersForExistingAutomation.js +43 -9
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useDefaultSelectedFiltersForNewAutomation.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useDefaultSelectedFiltersForNewAutomation.js +3 -3
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useValidateExistingAutomationFilters.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useValidateExistingAutomationFilters.js +10 -7
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/useAutomationFilters.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/useAutomationFilters.js +9 -9
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/useAutomationFiltersSelect.d.ts +2 -2
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/useAutomationFiltersSelect.js +3 -3
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/utils.d.ts +1 -1
- package/esm/presentation/{automationFilters → automations/shared/automationFilters}/utils.js +2 -2
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderNew.js +2 -2
- package/esm/presentation/dashboard/DashboardHeader/ScheduledEmailDialogProvider.js +4 -4
- package/esm/presentation/dashboard/components/DashboardRenderer.js +4 -4
- package/esm/presentation/dashboard/types.d.ts +2 -2
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts +2 -2
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.js +3 -1
- package/esm/presentation/filterBar/filterBar/ResetFiltersButton.js +0 -3
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.js +46 -18
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +3 -3
- package/esm/presentation/widget/common/useInsightExport.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.d.ts +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertsList.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +14 -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.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 +6 -6
- package/esm/presentation/widget/insight/configuration/InsightAlertsNew.js +4 -4
- package/esm/sdk-ui-dashboard.d.ts +39 -3
- package/package.json +20 -20
- package/styles/css/filterBar.css +3 -0
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +3 -0
- package/styles/css/main.css.map +1 -1
- package/styles/scss/filterBar.scss +4 -0
- /package/esm/presentation/{alerting → automations/alerting}/AlertingDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/AlertingManagementDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/AlertingDialogHeader.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertAttributeSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertAttributeSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertComparisonOperatorSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertComparisonPeriodSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertDeleteDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertDeleteDialog.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertDestinationSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertDestinationSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertGranularitySelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertGranularitySelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertMeasureSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertMeasureSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertSensitivitySelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertSensitivitySelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertThresholdInput.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertThresholdInput.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertTriggerIntervalSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertTriggerModeSelect.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/components/AlertTriggerModeSelect.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/constants.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useAlertValidation.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useAttributeValuesFromExecResults.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useOperators.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useSaveAlertToBackend.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useSaveAlertToBackend.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/hooks/useThresholdValue.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/messages.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/messages.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/convertors.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/convertors.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/cron.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/getters.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/getters.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/granularity.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/guards.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/items.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/items.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/responsive.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/threshold.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/transformation.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingDialog/utils/transformation.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentEnhanced.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/Alert.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/AlertDropdown.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/AlertsList.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/PauseAlertRunner.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/DefaultAlertingManagementDialog/components/PauseAlertRunner.js +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/hooks/useAlertingDialogAccessibility.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/hooks/useGetSupportedMeasures.d.ts +0 -0
- /package/esm/presentation/{alerting → automations/alerting}/types.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsList.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsList.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsSelect.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/AttachmentsWrapper.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/SlidesTemplateSettings.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/SlidesTemplateSettings.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/DestinationSelect/DestinationSelect.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/DestinationSelect/DestinationSelect.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/ErrorWrapper/ErrorWrapper.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/ErrorWrapper/ErrorWrapper.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/EvaluationModeCheckbox/EvaluationModeCheckbox.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Header/ScheduleEmailDialogHeader.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/MessageForm/MessageForm.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/SubjectForm/SubjectForm.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/components/Textarea.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/constants.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/constants.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailDialog/hooks/useScheduleValidation.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/DefaultScheduledEmailManagementDialog/components/ScheduledEmailsList.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/ScheduledEmailDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/ScheduledEmailManagementDialog.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/hooks/useScheduleEmailDialogAccessibility.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/types.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/cron.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/date.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/filters.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/pdfPageSize.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/pdfPageSize.js +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/responsive.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/timezone.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/users.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/validate.d.ts +0 -0
- /package/esm/presentation/{scheduledEmail → automations/scheduledEmail}/utils/validate.js +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/ApplyLatestFiltersConfirmDialog.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/ApplyLatestFiltersConfirmDialog.js +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationAttributeFilter.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationAttributeFilterContext.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationAttributeFilterContext.js +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationDateFilter.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationDateFilterContext.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationMeasureValueFilter.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationMeasureValueFilterContext.d.ts +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/components/AutomationMeasureValueFilterContext.js +0 -0
- /package/esm/presentation/{automationFilters → automations/shared/automationFilters}/hooks/useAutomationVisibleFilters.d.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FilterContextItem, type ICatalogAttribute, type ICatalogDateDataset, type IDashboardAttributeFilterConfig, type IDashboardDateFilterConfigItem, type ObjRef } from "@gooddata/sdk-model";
|
|
2
2
|
import { type OverlayPositionType } from "@gooddata/sdk-ui-kit";
|
|
3
|
-
import type { IAutomationFiltersTab } from "
|
|
3
|
+
import type { IAutomationFiltersTab } from "../../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
4
4
|
export interface IAutomationFiltersProps {
|
|
5
5
|
id?: string;
|
|
6
6
|
filters: FilterContextItem[] | undefined;
|
|
@@ -4,8 +4,8 @@ import { useState } from "react";
|
|
|
4
4
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
5
5
|
import { areObjRefsEqual, dashboardFilterLocalIdentifier, dashboardFilterObjRef, isCatalogAttribute, isCatalogDateDataset, isCatalogMeasure, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
|
|
6
6
|
import { Bubble, BubbleHoverTrigger, Typography, UiButton, UiIconButton, UiTooltip, isActionKey, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
|
|
7
|
-
import { AUTOMATION_FILTERS_DIALOG_ID, AUTOMATION_FILTERS_DIALOG_TITLE_ID, AUTOMATION_FILTERS_GROUP_LABEL_ID, } from "
|
|
8
|
-
import { AttributesDropdown } from "
|
|
7
|
+
import { AUTOMATION_FILTERS_DIALOG_ID, AUTOMATION_FILTERS_DIALOG_TITLE_ID, AUTOMATION_FILTERS_GROUP_LABEL_ID, } from "../../../../constants/automations.js";
|
|
8
|
+
import { AttributesDropdown } from "../../../../filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js";
|
|
9
9
|
import { useAutomationFilters, useAutomationFiltersByTab } from "../useAutomationFilters.js";
|
|
10
10
|
import { AutomationAttributeFilter } from "./AutomationAttributeFilter.js";
|
|
11
11
|
import { AutomationDateFilter } from "./AutomationDateFilter.js";
|
|
@@ -4,7 +4,7 @@ import { useCallback } from "react";
|
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { MeasureValueFilter } from "@gooddata/sdk-ui-filters";
|
|
6
6
|
import { UiChip, UiTooltip, isActionKey, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
|
|
7
|
-
import { getSharedDashboardMvfProps, normalizeMeasureValueFilterConditions, useDashboardMeasureValueFilterData, } from "
|
|
7
|
+
import { getSharedDashboardMvfProps, normalizeMeasureValueFilterConditions, useDashboardMeasureValueFilterData, } from "../../../../filterBar/measureValueFilter/useDashboardMeasureValueFilterData.js";
|
|
8
8
|
import { AutomationMeasureValueFilterProvider, useAutomationMeasureValueFilterContext, } from "./AutomationMeasureValueFilterContext.js";
|
|
9
9
|
export function AutomationMeasureValueFilter({ filter, onChange, onDelete, isLocked, overlayPositionType, readonly, }) {
|
|
10
10
|
const intl = useIntl();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// (C) 2025 GoodData Corporation
|
|
1
|
+
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { compact } from "lodash-es";
|
|
4
|
-
import { useFiltersByTabNamings, useFiltersNamings, } from "
|
|
4
|
+
import { useFiltersByTabNamings, useFiltersNamings, } from "../../../../../_staging/sharedHooks/useFiltersNamings.js";
|
|
5
5
|
export const useAutomationVisibleFilters = (availableFilters = []) => {
|
|
6
6
|
const filterNamings = useFiltersNamings(availableFilters);
|
|
7
7
|
return useMemo(() => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationVisibleFilter } from "@gooddata/sdk-model";
|
|
2
|
-
import type { ExtendedDashboardWidget } from "
|
|
2
|
+
import type { ExtendedDashboardWidget } from "../../../../../model/types/layoutTypes.js";
|
|
3
3
|
export declare function useDefaultSelectedFiltersForExistingAutomation(automationToEdit?: IAutomationMetadataObject, availableVisibleFilters?: IAutomationVisibleFilter[], widget?: ExtendedDashboardWidget): (import("@gooddata/sdk-model").IDashboardArbitraryAttributeFilter | import("@gooddata/sdk-model").IDashboardAttributeFilter | import("@gooddata/sdk-model").IDashboardDateFilter | import("@gooddata/sdk-model").IDashboardMatchAttributeFilter | import("@gooddata/sdk-model").IDashboardMeasureValueFilter)[];
|
|
4
4
|
/**
|
|
5
5
|
* Reconstructs filters per tab from saved visibleFiltersByTab and filtersByTab.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isDashboardAttributeFilter, isDashboardDateFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
4
|
-
import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "
|
|
5
|
-
import { dashboardFilterToFilterContextItem } from "
|
|
6
|
-
import { useDashboardSelector } from "
|
|
7
|
-
import { selectAutomationAvailableDashboardFilters, selectAutomationCommonDateFilterId, } from "
|
|
8
|
-
import { removeIgnoredWidgetFilters } from "
|
|
9
|
-
import { isDashboardFilter } from "
|
|
3
|
+
import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
4
|
+
import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "../../../../../_staging/automation/index.js";
|
|
5
|
+
import { dashboardFilterToFilterContextItem } from "../../../../../_staging/dashboard/dashboardFilterContext.js";
|
|
6
|
+
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
7
|
+
import { selectAutomationAvailableDashboardFilters, selectAutomationCommonDateFilterId, } from "../../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
8
|
+
import { removeIgnoredWidgetFilters } from "../../../../../model/utils/widgetFilters.js";
|
|
9
|
+
import { isDashboardFilter } from "../../../../../types.js";
|
|
10
10
|
export function useDefaultSelectedFiltersForExistingAutomation(automationToEdit, availableVisibleFilters, widget) {
|
|
11
11
|
const availableDashboardFilters = useDashboardSelector(selectAutomationAvailableDashboardFilters);
|
|
12
12
|
const commonDateFilterId = useDashboardSelector(selectAutomationCommonDateFilterId);
|
|
@@ -18,7 +18,8 @@ export function useDefaultSelectedFiltersForExistingAutomation(automationToEdit,
|
|
|
18
18
|
const savedAutomationWidgetFilters = savedWidgetAlertFilters ?? savedWidgetScheduleFilters;
|
|
19
19
|
const convertedSavedWidgetFilters = savedAutomationWidgetFilters
|
|
20
20
|
?.filter(isDashboardFilter)
|
|
21
|
-
.map((filter) => convertAndSanitizeFilter(filter, availableVisibleFilters))
|
|
21
|
+
.map((filter) => convertAndSanitizeFilter(filter, availableVisibleFilters))
|
|
22
|
+
.filter((item) => item !== undefined);
|
|
22
23
|
return (savedDashboardScheduleFilters ??
|
|
23
24
|
savedWidgetScheduleFilterContextItems ??
|
|
24
25
|
convertedSavedWidgetFilters);
|
|
@@ -113,6 +114,9 @@ export function getDefaultSelectedFiltersByTabForExistingAutomation(automationTo
|
|
|
113
114
|
}
|
|
114
115
|
function convertAndSanitizeFilter(filter, availableVisibleFilters) {
|
|
115
116
|
const convertedItem = dashboardFilterToFilterContextItem(filter, true);
|
|
117
|
+
if (!convertedItem) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
116
120
|
// Because execution filters do not include titles, and they cannot be saved there,
|
|
117
121
|
// get them from the current available visible filters.
|
|
118
122
|
const titleToUse = availableVisibleFilters?.find((visibleFilter) => visibleFilter.localIdentifier === filterLocalIdentifier(filter));
|
|
@@ -126,6 +130,10 @@ function convertAndSanitizeFilter(filter, availableVisibleFilters) {
|
|
|
126
130
|
};
|
|
127
131
|
}
|
|
128
132
|
else if (isDashboardDateFilter(convertedItem)) {
|
|
133
|
+
// IDashboardDateFilter has no `title` field on its current type, but downstream UI relies
|
|
134
|
+
// on the saved automation title carried alongside the filter. Preserved as pre-existing
|
|
135
|
+
// behavior via a structural assertion until the type is widened or the field is consumed
|
|
136
|
+
// from a different source.
|
|
129
137
|
return {
|
|
130
138
|
...convertedItem,
|
|
131
139
|
dateFilter: {
|
|
@@ -134,6 +142,32 @@ function convertAndSanitizeFilter(filter, availableVisibleFilters) {
|
|
|
134
142
|
},
|
|
135
143
|
};
|
|
136
144
|
}
|
|
137
|
-
|
|
145
|
+
else if (isDashboardMeasureValueFilter(convertedItem)) {
|
|
146
|
+
return {
|
|
147
|
+
...convertedItem,
|
|
148
|
+
dashboardMeasureValueFilter: {
|
|
149
|
+
...convertedItem.dashboardMeasureValueFilter,
|
|
150
|
+
title: titleToUse?.title,
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
else if (isDashboardArbitraryAttributeFilter(convertedItem)) {
|
|
155
|
+
return {
|
|
156
|
+
...convertedItem,
|
|
157
|
+
arbitraryAttributeFilter: {
|
|
158
|
+
...convertedItem.arbitraryAttributeFilter,
|
|
159
|
+
title: titleToUse?.title,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
else if (isDashboardMatchAttributeFilter(convertedItem)) {
|
|
164
|
+
return {
|
|
165
|
+
...convertedItem,
|
|
166
|
+
matchAttributeFilter: {
|
|
167
|
+
...convertedItem.matchAttributeFilter,
|
|
168
|
+
title: titleToUse?.title,
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
138
172
|
return convertedItem;
|
|
139
173
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ExtendedDashboardWidget } from "
|
|
1
|
+
import type { ExtendedDashboardWidget } from "../../../../../model/types/layoutTypes.js";
|
|
2
2
|
export declare function useDefaultSelectedFiltersForNewAutomation(widget?: ExtendedDashboardWidget): import("@gooddata/sdk-model").FilterContextItem[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
|
-
import { useDashboardSelector } from "
|
|
3
|
-
import { selectAutomationDefaultSelectedFilters } from "
|
|
4
|
-
import { removeIgnoredWidgetFilters } from "
|
|
2
|
+
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
3
|
+
import { selectAutomationDefaultSelectedFilters } from "../../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
4
|
+
import { removeIgnoredWidgetFilters } from "../../../../../model/utils/widgetFilters.js";
|
|
5
5
|
export function useDefaultSelectedFiltersForNewAutomation(widget) {
|
|
6
6
|
const availableDashboardFilters = useDashboardSelector(selectAutomationDefaultSelectedFilters);
|
|
7
7
|
return removeIgnoredWidgetFilters(availableDashboardFilters, widget);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DashboardAttributeFilterSelectionType, type FilterContextItem, type IAutomationMetadataObject, type IAutomationVisibleFilter, type IFilter, type IInsight } from "@gooddata/sdk-model";
|
|
2
|
-
import type { ExtendedDashboardWidget } from "
|
|
2
|
+
import type { ExtendedDashboardWidget } from "../../../../../model/types/layoutTypes.js";
|
|
3
3
|
export interface IAutomationValidationResult {
|
|
4
4
|
isValid: boolean;
|
|
5
5
|
hiddenFilterIsMissingInSavedFilters: boolean;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { differenceBy, omit } from "lodash-es";
|
|
3
|
-
import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isAttributeFilter, isAttributeFilterWithSelection, isDashboardAttributeFilter, isDashboardCommonDateFilter, isDateFilter, isInsightWidget, isLocalIdRef, isNegativeAttributeFilter, isPositiveAttributeFilter, isRelativeDateFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
|
|
4
|
-
import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "
|
|
5
|
-
import { filterContextItemsToDashboardFiltersByWidget } from "
|
|
6
|
-
import { isFilterTypeCompatibleWithSelectionType } from "
|
|
7
|
-
import { useDashboardSelector } from "
|
|
8
|
-
import { selectAutomationCommonDateFilterId, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, selectDashboardHiddenFilters, selectDashboardLockedFilters, } from "
|
|
9
|
-
import { selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "
|
|
3
|
+
import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isAllDashboardMeasureValueFilter, isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isAttributeFilter, isAttributeFilterWithSelection, isDashboardAttributeFilter, isDashboardCommonDateFilter, isDateFilter, isInsightWidget, isLocalIdRef, isNegativeAttributeFilter, isPositiveAttributeFilter, isRelativeDateFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
|
|
4
|
+
import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "../../../../../_staging/automation/index.js";
|
|
5
|
+
import { filterContextItemsToDashboardFiltersByWidget } from "../../../../../converters/filterConverters.js";
|
|
6
|
+
import { isFilterTypeCompatibleWithSelectionType } from "../../../../../model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.js";
|
|
7
|
+
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
8
|
+
import { selectAutomationCommonDateFilterId, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, selectDashboardHiddenFilters, selectDashboardLockedFilters, } from "../../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
9
|
+
import { selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "../../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
10
10
|
import { areFiltersEqual, isFilterIgnoredByWidget, isFilterMatch, isNoopAllTimeDateFilterFixed, } from "../utils.js";
|
|
11
11
|
function sanitizeCommonDateFilter(filter, commonDateFilterId) {
|
|
12
12
|
// Sanitize common date filters by removing date dataSet
|
|
@@ -365,6 +365,9 @@ function validateVisibleFilters(savedAutomationFilters, savedVisibleFilters, das
|
|
|
365
365
|
if (isAllValuesDashboardAttributeFilter(currentDashboardFilter)) {
|
|
366
366
|
continue;
|
|
367
367
|
}
|
|
368
|
+
if (isAllDashboardMeasureValueFilter(currentDashboardFilter)) {
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
368
371
|
visibleFilterIsMissingInSavedFilters = true;
|
|
369
372
|
}
|
|
370
373
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type MutableRefObject } from "react";
|
|
2
2
|
import { type FilterContextItem, type ICatalogAttribute, type ICatalogDateDataset, type ICatalogMeasure, type IDashboardAttributeFilterConfig, type IDashboardDateFilterConfigItem, type ObjRef } from "@gooddata/sdk-model";
|
|
3
|
-
import { type IAutomationFiltersTab } from "
|
|
3
|
+
import { type IAutomationFiltersTab } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
4
4
|
/**
|
|
5
5
|
* Processed filter data for a single tab, ready for UI rendering.
|
|
6
6
|
*/
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
import { useCallback, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
4
|
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, isDashboardAttributeFilterItem, isDashboardDateFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
|
|
5
|
-
import { useDashboardSelector } from "
|
|
6
|
-
import { selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogMeasures, } from "
|
|
7
|
-
import { selectEnableNewScheduledExport } from "
|
|
8
|
-
import { selectAutomationCommonDateFilterId, selectDashboardLockedFilters, } from "
|
|
9
|
-
import { selectPersistedDashboardFilterContextDateFilterConfig } from "
|
|
10
|
-
import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, } from "
|
|
11
|
-
import { selectDateFilterConfigOverridesByTab } from "
|
|
12
|
-
import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "
|
|
13
|
-
import { selectMeasureValueFilterConfigsOverrides, selectMeasureValueFilterConfigsOverridesByTab, } from "
|
|
5
|
+
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
6
|
+
import { selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogMeasures, } from "../../../../model/store/catalog/catalogSelectors.js";
|
|
7
|
+
import { selectEnableNewScheduledExport } from "../../../../model/store/config/configSelectors.js";
|
|
8
|
+
import { selectAutomationCommonDateFilterId, selectDashboardLockedFilters, } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
9
|
+
import { selectPersistedDashboardFilterContextDateFilterConfig } from "../../../../model/store/meta/metaSelectors.js";
|
|
10
|
+
import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
11
|
+
import { selectDateFilterConfigOverridesByTab } from "../../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
|
|
12
|
+
import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
|
|
13
|
+
import { selectMeasureValueFilterConfigsOverrides, selectMeasureValueFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
|
|
14
14
|
import { areFiltersMatchedByIdentifier, getCatalogAttributesByFilters, getCatalogDateDatasetsByFilters, getCatalogMeasuresByFilters, getFilterByCatalogItemRef, getFilterLocalIdentifier, getFilterTitle, getNonHiddenFilters, getNonSelectedFilters, } from "./utils.js";
|
|
15
15
|
/**
|
|
16
16
|
* Computes visible filters by removing hidden filters.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationVisibleFilter } from "@gooddata/sdk-model";
|
|
2
|
-
import { type IAutomationFiltersTab } from "
|
|
3
|
-
import type { ExtendedDashboardWidget } from "
|
|
2
|
+
import { type IAutomationFiltersTab } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
3
|
+
import type { ExtendedDashboardWidget } from "../../../../model/types/layoutTypes.js";
|
|
4
4
|
/**
|
|
5
5
|
* Edited automation filters structured by tab ID.
|
|
6
6
|
* Used for storing user edits to filters when dashboard tabs are enabled.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useMemo, useState } from "react";
|
|
3
3
|
import { isExportDefinitionDashboardRequestPayload, } from "@gooddata/sdk-model";
|
|
4
|
-
import { useDashboardSelector } from "
|
|
5
|
-
import { selectAutomationCommonDateFilterId, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, } from "
|
|
6
|
-
import { removeIgnoredWidgetFilters } from "
|
|
4
|
+
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
5
|
+
import { selectAutomationCommonDateFilterId, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
6
|
+
import { removeIgnoredWidgetFilters } from "../../../../model/utils/widgetFilters.js";
|
|
7
7
|
import { useAutomationVisibleFilters, useAutomationVisibleFiltersByTab, } from "./hooks/useAutomationVisibleFilters.js";
|
|
8
8
|
import { getDefaultSelectedFiltersByTabForExistingAutomation, useDefaultSelectedFiltersForExistingAutomation, } from "./hooks/useDefaultSelectedFiltersForExistingAutomation.js";
|
|
9
9
|
import { useDefaultSelectedFiltersForNewAutomation } from "./hooks/useDefaultSelectedFiltersForNewAutomation.js";
|
package/esm/presentation/{automationFilters → automations/shared/automationFilters}/utils.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type IntlShape } from "react-intl";
|
|
2
2
|
import { type FilterContextItem, type IAutomationVisibleFilter, type ICatalogAttribute, type ICatalogDateDataset, type ICatalogMeasure, type IDashboardAttributeFilterConfig, type IDashboardDateFilterConfigItem, type IDashboardMeasureValueFilterConfig, type IDateFilter, type IFilter, type IInsight, type ObjRef } from "@gooddata/sdk-model";
|
|
3
|
-
import type { ExtendedDashboardWidget } from "
|
|
3
|
+
import type { ExtendedDashboardWidget } from "../../../../model/types/layoutTypes.js";
|
|
4
4
|
export declare const getFilterLocalIdentifier: (filter: FilterContextItem) => string | undefined;
|
|
5
5
|
export declare const validateAllFilterLocalIdentifiers: (filters: FilterContextItem[]) => boolean;
|
|
6
6
|
export declare const areFiltersMatchedByIdentifier: (filter1: FilterContextItem, filter2: FilterContextItem) => boolean;
|
package/esm/presentation/{automationFilters → automations/shared/automationFilters}/utils.js
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { compact, isEqual } from "lodash-es";
|
|
3
3
|
import { absoluteDateFilterValues, areObjRefsEqual, attributeLocalId, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, dashboardFilterObjRef, filterAttributeElements, filterLocalIdentifier, filterObjRef, getAttributeElementsItems, hasMeasureValueFilterConditions, insightAttributes, isAbsoluteDateFilter, isAllDashboardMeasureValueFilter, isAllTimeDateFilter, isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isArbitraryAttributeFilter, isAttributeFilter, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, isDateFilter, isInsightWidget, isLocalIdRef, isMatchAttributeFilter, isMeasureValueFilter, isNegativeAttributeFilter, isNoopAllTimeDashboardDateFilter, isPositiveAttributeFilter, isRelativeDateFilter, mergeFilters, relativeDateFilterValues, } from "@gooddata/sdk-model";
|
|
4
|
-
import { filterContextItemsToDashboardFiltersByWidget } from "
|
|
5
|
-
import { removeIgnoredWidgetFilters } from "
|
|
4
|
+
import { filterContextItemsToDashboardFiltersByWidget } from "../../../../converters/filterConverters.js";
|
|
5
|
+
import { removeIgnoredWidgetFilters } from "../../../../model/utils/widgetFilters.js";
|
|
6
6
|
export const getFilterLocalIdentifier = (filter) => {
|
|
7
7
|
return dashboardFilterLocalIdentifier(filter);
|
|
8
8
|
};
|
|
@@ -2,8 +2,8 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
// (C) 2022-2026 GoodData Corporation
|
|
3
3
|
import { useDashboardAlerts } from "../../../model/react/useDashboardAlerting/useDashboardAlerts.js";
|
|
4
4
|
import { useWorkspaceUsers } from "../../../model/react/useWorkspaceUsers.js";
|
|
5
|
-
import { AlertingDialog } from "../../alerting/AlertingDialog.js";
|
|
6
|
-
import { AlertingManagementDialog } from "../../alerting/AlertingManagementDialog.js";
|
|
5
|
+
import { AlertingDialog } from "../../automations/alerting/AlertingDialog.js";
|
|
6
|
+
import { AlertingManagementDialog } from "../../automations/alerting/AlertingManagementDialog.js";
|
|
7
7
|
export function AlertingDialogProviderNew() {
|
|
8
8
|
const {
|
|
9
9
|
// Shared Local State
|
|
@@ -5,10 +5,10 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide
|
|
|
5
5
|
import { useDashboardScheduledEmails } from "../../../model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.js";
|
|
6
6
|
import { useWorkspaceUsers } from "../../../model/react/useWorkspaceUsers.js";
|
|
7
7
|
import { selectAutomationDefaultSelectedFilters, selectDashboardHiddenFilters, } from "../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
8
|
-
import { useWidgetAutomationFilters } from "../../scheduledEmail/hooks/useWidgetAutomationFilters.js";
|
|
9
|
-
import { ScheduledEmailDialog } from "../../scheduledEmail/ScheduledEmailDialog.js";
|
|
10
|
-
import { ScheduledEmailManagementDialog } from "../../scheduledEmail/ScheduledEmailManagementDialog.js";
|
|
11
|
-
import { getAppliedDashboardFilters } from "../../scheduledEmail/utils/filters.js";
|
|
8
|
+
import { useWidgetAutomationFilters } from "../../automations/scheduledEmail/hooks/useWidgetAutomationFilters.js";
|
|
9
|
+
import { ScheduledEmailDialog } from "../../automations/scheduledEmail/ScheduledEmailDialog.js";
|
|
10
|
+
import { ScheduledEmailManagementDialog } from "../../automations/scheduledEmail/ScheduledEmailManagementDialog.js";
|
|
11
|
+
import { getAppliedDashboardFilters } from "../../automations/scheduledEmail/utils/filters.js";
|
|
12
12
|
export function ScheduledEmailDialogProvider() {
|
|
13
13
|
const {
|
|
14
14
|
// Shared Local State
|
|
@@ -6,8 +6,10 @@ import { BackendProvider, ErrorComponent as DefaultError, LoadingComponent as De
|
|
|
6
6
|
import { OverlayController, OverlayControllerProvider } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { ThemeProvider } from "@gooddata/sdk-ui-theme-provider";
|
|
8
8
|
import { DashboardStoreProvider } from "../../../model/react/DashboardStoreProvider.js";
|
|
9
|
-
import { DefaultAlertingDialog } from "../../alerting/DefaultAlertingDialog/DefaultAlertingDialog.js";
|
|
10
|
-
import { DefaultAlertingManagementDialogNew } from "../../alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.js";
|
|
9
|
+
import { DefaultAlertingDialog } from "../../automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js";
|
|
10
|
+
import { DefaultAlertingManagementDialogNew } from "../../automations/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.js";
|
|
11
|
+
import { DefaultScheduledEmailDialog } from "../../automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js";
|
|
12
|
+
import { ScheduledEmailManagementDialog as DefaultScheduledEmailManagementDialog } from "../../automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js";
|
|
11
13
|
import { DASHBOARD_OVERLAYS_Z_INDEX } from "../../constants/zIndex.js";
|
|
12
14
|
import { DashboardComponentsProvider } from "../../dashboardContexts/DashboardComponentsContext.js";
|
|
13
15
|
import { DashboardConfigProvider } from "../../dashboardContexts/DashboardConfigContext.js";
|
|
@@ -23,8 +25,6 @@ import { LayoutResizeStateProvider } from "../../dragAndDrop/LayoutResizeContext
|
|
|
23
25
|
import { RenderModeAwareFilterBar } from "../../filterBar/filterBar/RenderModeAwareFilterBar.js";
|
|
24
26
|
import { DefaultDashboardLayout } from "../../flexibleLayout/DefaultDashboardLayout.js";
|
|
25
27
|
import { DefaultSaveAsDialog } from "../../saveAs/DefaultSaveAsDialog/index.js";
|
|
26
|
-
import { DefaultScheduledEmailDialog } from "../../scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js";
|
|
27
|
-
import { ScheduledEmailManagementDialog as DefaultScheduledEmailManagementDialog } from "../../scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js";
|
|
28
28
|
import { DefaultShareDialog } from "../../shareDialog/DefaultShareDialog.js";
|
|
29
29
|
import { HiddenToolbar } from "../../toolbar/HiddenToolbar.js";
|
|
30
30
|
import { DefaultSaveButton } from "../../topBar/buttonBar/button/saveButton/DefaultSaveButton.js";
|
|
@@ -6,14 +6,14 @@ import { type IErrorProps, type ILoadingProps } from "@gooddata/sdk-ui";
|
|
|
6
6
|
import { type DashboardEventHandler } from "../../model/eventHandlers/eventHandler.js";
|
|
7
7
|
import { type DashboardDispatch, type DashboardState } from "../../model/store/types.js";
|
|
8
8
|
import { type DashboardConfig, type DashboardModelCustomizationFns, type WidgetsOverlayFn } from "../../model/types/commonTypes.js";
|
|
9
|
-
import { type CustomAlertingDialogComponent, type CustomAlertingManagementDialogComponent } from "../alerting/types.js";
|
|
9
|
+
import { type CustomAlertingDialogComponent, type CustomAlertingManagementDialogComponent } from "../automations/alerting/types.js";
|
|
10
|
+
import { type CustomScheduledEmailDialogComponent, type CustomScheduledEmailManagementDialogComponent } from "../automations/scheduledEmail/types.js";
|
|
10
11
|
import { type InsightComponentSetProvider } from "../componentDefinition/types.js";
|
|
11
12
|
import { type InsightMenuItemsProvider, type OptionalAttributeFilterComponentProvider, type OptionalDashboardContentComponentProvider, type OptionalDashboardLayoutComponentProvider, type OptionalDateFilterComponentProvider, type OptionalDrillDialogExportDropdownComponentProvider, type OptionalFilterGroupComponentProvider, type OptionalInsightBodyComponentProvider, type OptionalInsightComponentProvider, type OptionalInsightMenuButtonComponentProvider, type OptionalInsightMenuComponentProvider, type OptionalInsightMenuTitleComponentProvider, type OptionalMeasureValueFilterComponentProvider, type OptionalRichTextComponentProvider, type OptionalRichTextMenuComponentProvider, type OptionalRichTextMenuTitleComponentProvider, type OptionalShowAsTableButtonComponentProvider, type OptionalVisualizationSwitcherComponentProvider, type OptionalVisualizationSwitcherToolbarComponentProvider, type OptionalWidgetComponentProvider, type RichTextMenuItemsProvider } from "../dashboardContexts/types.js";
|
|
12
13
|
import { type CustomDashboardSettingsDialogComponent } from "../dashboardSettingsDialog/types.js";
|
|
13
14
|
import { type CustomFilterBarComponent } from "../filterBar/filterBar/types.js";
|
|
14
15
|
import { type CustomEmptyLayoutDropZoneBodyComponent } from "../flexibleLayout/types.js";
|
|
15
16
|
import { type CustomSaveAsDialogComponent } from "../saveAs/types.js";
|
|
16
|
-
import { type CustomScheduledEmailDialogComponent, type CustomScheduledEmailManagementDialogComponent } from "../scheduledEmail/types.js";
|
|
17
17
|
import { type CustomShareDialogComponent } from "../shareDialog/types.js";
|
|
18
18
|
import { type CustomToolbarComponent } from "../toolbar/types.js";
|
|
19
19
|
import { type CustomSaveButtonComponent } from "../topBar/buttonBar/button/saveButton/types.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type ComponentType, type ReactElement, type ReactNode } from "react";
|
|
2
2
|
import { type IErrorProps, type ILoadingProps } from "@gooddata/sdk-ui";
|
|
3
|
-
import { type CustomAlertingDialogComponent, type CustomAlertingManagementDialogComponent } from "../alerting/types.js";
|
|
3
|
+
import { type CustomAlertingDialogComponent, type CustomAlertingManagementDialogComponent } from "../automations/alerting/types.js";
|
|
4
|
+
import { type CustomScheduledEmailDialogComponent, type CustomScheduledEmailManagementDialogComponent } from "../automations/scheduledEmail/types.js";
|
|
4
5
|
import { type AttributeFilterComponentSet, type DashboardLayoutWidgetComponentSet, type DateFilterComponentSet, type InsightWidgetComponentSet, type RichTextWidgetComponentSet, type VisualizationSwitcherWidgetComponentSet } from "../componentDefinition/types.js";
|
|
5
6
|
import { type CustomSidebarComponent } from "../dashboard/DashboardSidebar/types.js";
|
|
6
7
|
import { type CustomDashboardSettingsDialogComponent } from "../dashboardSettingsDialog/types.js";
|
|
7
8
|
import { type CustomFilterBarComponent } from "../filterBar/filterBar/types.js";
|
|
8
9
|
import { type CustomEmptyLayoutDropZoneBodyComponent } from "../flexibleLayout/types.js";
|
|
9
10
|
import { type CustomSaveAsDialogComponent } from "../saveAs/types.js";
|
|
10
|
-
import { type CustomScheduledEmailDialogComponent, type CustomScheduledEmailManagementDialogComponent } from "../scheduledEmail/types.js";
|
|
11
11
|
import { type CustomShareDialogComponent } from "../shareDialog/types.js";
|
|
12
12
|
import { type CustomToolbarComponent } from "../toolbar/types.js";
|
|
13
13
|
import { type CustomSaveButtonComponent } from "../topBar/buttonBar/button/saveButton/types.js";
|
|
@@ -9,6 +9,7 @@ import DefaultMeasure from "react-measure";
|
|
|
9
9
|
import { Bubble, BubbleHoverTrigger, Message, UiButton, UiTooltip, makeHorizontalKeyboardNavigation, } from "@gooddata/sdk-ui-kit";
|
|
10
10
|
import { applyFilterContextWorkingSelection } from "../../../model/commands/filters.js";
|
|
11
11
|
import { isDashboardFilterContextSelectionReset, isDashboardFilterContextWorkingSelectionApplied, } from "../../../model/events/filters.js";
|
|
12
|
+
import { isDashboardParametersSelectionReset } from "../../../model/events/parameters.js";
|
|
12
13
|
import { useDashboardEventsContext } from "../../../model/react/DashboardEventsContext.js";
|
|
13
14
|
import { useDashboardDispatch, useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
14
15
|
import { selectEnableFilterViews, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectLocale, } from "../../../model/store/config/configSelectors.js";
|
|
@@ -118,7 +119,8 @@ function MeasuredDiv({ measureRef, isAutoExpanded, children, }) {
|
|
|
118
119
|
useEffect(() => {
|
|
119
120
|
const handler = {
|
|
120
121
|
eval: (event) => isDashboardFilterContextSelectionReset(event) ||
|
|
121
|
-
isDashboardFilterContextWorkingSelectionApplied(event)
|
|
122
|
+
isDashboardFilterContextWorkingSelectionApplied(event) ||
|
|
123
|
+
isDashboardParametersSelectionReset(event),
|
|
122
124
|
handler: () => {
|
|
123
125
|
moveToFilterRegion();
|
|
124
126
|
},
|
|
@@ -3,9 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { IconReset, UiTooltip } from "@gooddata/sdk-ui-kit";
|
|
6
|
-
import { useEventToastMessage } from "../../../_staging/sharedHooks/useEventToastMessage.js";
|
|
7
6
|
import { messages } from "../../../locales.js";
|
|
8
|
-
import { isDashboardFilterContextSelectionReset } from "../../../model/events/filters.js";
|
|
9
7
|
import { useResetFiltersButton } from "./hooks/useResetFiltersButton.js";
|
|
10
8
|
/**
|
|
11
9
|
* @internal
|
|
@@ -23,7 +21,6 @@ export function ResetFiltersButton() {
|
|
|
23
21
|
}
|
|
24
22
|
};
|
|
25
23
|
}, []);
|
|
26
|
-
useEventToastMessage("success", isDashboardFilterContextSelectionReset, messages.filterResetButtonSuccess);
|
|
27
24
|
// Custom focus handling with delay support
|
|
28
25
|
const customFocusHandlers = useMemo(() => {
|
|
29
26
|
return {
|
|
@@ -3,8 +3,11 @@ import { useCallback, useMemo } from "react";
|
|
|
3
3
|
import { difference, isEqual, partition } from "lodash-es";
|
|
4
4
|
import { generateDateFilterLocalIdentifier } from "@gooddata/sdk-backend-base";
|
|
5
5
|
import { dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMeasureValueFilter, isNoopAllTimeDashboardDateFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
6
|
+
import { useToastMessage } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
import { messages } from "../../../../locales.js";
|
|
6
8
|
import { changeFilterContextSelection, removeAttributeFilters, resetFilterContextWorkingSelection, } from "../../../../model/commands/filters.js";
|
|
7
9
|
import { filterContextSelectionReset } from "../../../../model/events/filters.js";
|
|
10
|
+
import { parametersSelectionReset } from "../../../../model/events/parameters.js";
|
|
8
11
|
import { useDashboardDispatch, useDashboardSelector, } from "../../../../model/react/DashboardStoreProvider.js";
|
|
9
12
|
import { useDashboardEventDispatch } from "../../../../model/react/useDashboardEventDispatch.js";
|
|
10
13
|
import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js";
|
|
@@ -14,6 +17,8 @@ import { drillActions } from "../../../../model/store/drill/index.js";
|
|
|
14
17
|
import { selectDisableDashboardCrossFiltering, selectDisableDashboardUserFilterReset, } from "../../../../model/store/meta/metaSelectors.js";
|
|
15
18
|
import { selectIsInEditMode } from "../../../../model/store/renderMode/renderModeSelectors.js";
|
|
16
19
|
import { selectFilterContextFilters, selectIsWorkingFilterContextChanged, selectOriginalFilterContextFilters, } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
20
|
+
import { tabsActions } from "../../../../model/store/tabs/index.js";
|
|
21
|
+
import { selectActiveTabParameterResetTargets } from "../../../../model/store/tabs/parameters/parametersSelectors.js";
|
|
17
22
|
import { selectActiveTabLocalIdentifier } from "../../../../model/store/tabs/tabsSelectors.js";
|
|
18
23
|
const isNoopAllTimeCommonDateFilter = (filter) => {
|
|
19
24
|
return isDashboardCommonDateFilter(filter) && isNoopAllTimeDashboardDateFilter(filter);
|
|
@@ -83,17 +88,18 @@ const getNewlyAddedFilterLocalIds = (currentFilters, originalFilters) => {
|
|
|
83
88
|
.map((filter) => dashboardAttributeFilterItemLocalIdentifier(filter));
|
|
84
89
|
return difference(currentFiltersLocalIds, originalAttributeFiltersLocalIds);
|
|
85
90
|
};
|
|
86
|
-
const
|
|
91
|
+
const computeResetEligibility = (isEditMode, normalizedCurrentFilters, normalizedOriginalFilters, userFilterResetAllowed, newlyAddedFiltersCount, isWorkingFilterContextChanged, isApplyAllAtOnceEnabledAndSet, hasResettableParameter) => {
|
|
87
92
|
if (isEditMode) {
|
|
88
|
-
return false;
|
|
93
|
+
return { canResetFilters: false, canResetWorkingContext: false, canResetParameters: false };
|
|
89
94
|
}
|
|
90
95
|
const filtersChanged = !isEqual(normalizedCurrentFilters, normalizedOriginalFilters);
|
|
91
|
-
const userFilterResetAllowed = !disableUserFilterReset && !disableUserFilterResetByConfig;
|
|
92
96
|
const hasCrossFilterAddedFilters = newlyAddedFiltersCount > 0;
|
|
93
97
|
// If the cross filter add some filters, we should allow the reset
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
return {
|
|
99
|
+
canResetFilters: filtersChanged && (userFilterResetAllowed || hasCrossFilterAddedFilters),
|
|
100
|
+
canResetWorkingContext: !!isWorkingFilterContextChanged && isApplyAllAtOnceEnabledAndSet,
|
|
101
|
+
canResetParameters: hasResettableParameter && userFilterResetAllowed,
|
|
102
|
+
};
|
|
97
103
|
};
|
|
98
104
|
const isCrossFilteringEnabled = (enableKDCrossFiltering, supportsCrossFiltering, disableCrossFiltering, disableCrossFilteringByConfig) => {
|
|
99
105
|
return (enableKDCrossFiltering &&
|
|
@@ -122,31 +128,38 @@ export const useResetFiltersButton = () => {
|
|
|
122
128
|
const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
|
|
123
129
|
const enableDateFilterIdentifiers = useDashboardSelector(selectEnableDateFilterIdentifiers);
|
|
124
130
|
const activeTabId = useDashboardSelector(selectActiveTabLocalIdentifier);
|
|
131
|
+
const parameterResetTargets = useDashboardSelector(selectActiveTabParameterResetTargets);
|
|
132
|
+
const hasResettableParameter = parameterResetTargets.length > 0;
|
|
133
|
+
const userFilterResetAllowed = !disableUserFilterReset && !disableUserFilterResetByConfig;
|
|
125
134
|
const dispatch = useDashboardDispatch();
|
|
126
135
|
const dispatchEvent = useDashboardEventDispatch();
|
|
127
|
-
const { filterContextStateReset } = useDashboardUserInteraction();
|
|
136
|
+
const { filterContextStateReset, parametersStateReset } = useDashboardUserInteraction();
|
|
137
|
+
const { addSuccess } = useToastMessage();
|
|
128
138
|
const newlyAddedFiltersLocalIds = useMemo(() => getNewlyAddedFilterLocalIds(currentFilters, originalFilters), [currentFilters, originalFilters]);
|
|
129
139
|
const sanitizedCurrentFilters = useMemo(() => sanitizeFilters(currentFilters, originalFilters, enableDateFilterIdentifiers), [enableDateFilterIdentifiers, originalFilters, currentFilters]);
|
|
130
140
|
// Normalize filters for comparison to handle "all time" common date filters consistently
|
|
131
141
|
const normalizedCurrentFilters = useMemo(() => normalizeFiltersForComparison(sanitizedCurrentFilters), [sanitizedCurrentFilters]);
|
|
132
142
|
const normalizedOriginalFilters = useMemo(() => normalizeFiltersForComparison(originalFilters), [originalFilters]);
|
|
133
|
-
const
|
|
143
|
+
const { canResetFilters, canResetWorkingContext, canResetParameters } = useMemo(() => computeResetEligibility(isEditMode, normalizedCurrentFilters, normalizedOriginalFilters, userFilterResetAllowed, newlyAddedFiltersLocalIds.length, isWorkingFilterContextChanged, isApplyAllAtOnceEnabledAndSet, hasResettableParameter), [
|
|
134
144
|
isEditMode,
|
|
135
145
|
normalizedCurrentFilters,
|
|
136
146
|
normalizedOriginalFilters,
|
|
137
|
-
|
|
138
|
-
disableUserFilterResetByConfig,
|
|
147
|
+
userFilterResetAllowed,
|
|
139
148
|
newlyAddedFiltersLocalIds.length,
|
|
140
149
|
isWorkingFilterContextChanged,
|
|
141
150
|
isApplyAllAtOnceEnabledAndSet,
|
|
151
|
+
hasResettableParameter,
|
|
142
152
|
]);
|
|
153
|
+
const canReset = canResetFilters || canResetWorkingContext || canResetParameters;
|
|
143
154
|
const crossFilteringEnabled = isCrossFilteringEnabled(enableKDCrossFiltering, supportsCrossFiltering, disableCrossFiltering, disableCrossFilteringByConfig);
|
|
144
155
|
const resetFilters = useCallback(() => {
|
|
145
156
|
if (!canReset) {
|
|
146
157
|
return;
|
|
147
158
|
}
|
|
148
|
-
|
|
149
|
-
|
|
159
|
+
const willResetFilterContext = canResetFilters || canResetWorkingContext;
|
|
160
|
+
// If the user filter reset is disabled (by dashboard prop OR workspace config),
|
|
161
|
+
// keep user-modified filters; only the cross-filter cleanup branch runs below.
|
|
162
|
+
if (willResetFilterContext && userFilterResetAllowed) {
|
|
150
163
|
// Normalize filters to include "All time" date filter
|
|
151
164
|
const [[commonDateFilter], otherFilters] = partition(originalFilters, isDashboardCommonDateFilter);
|
|
152
165
|
if (isApplyAllAtOnceEnabledAndSet) {
|
|
@@ -162,28 +175,43 @@ export const useResetFiltersButton = () => {
|
|
|
162
175
|
]));
|
|
163
176
|
}
|
|
164
177
|
// If cross filtering is enabled, we need to remove all attribute filters that were added by cross filtering
|
|
165
|
-
if (crossFilteringEnabled) {
|
|
178
|
+
if (willResetFilterContext && crossFilteringEnabled) {
|
|
166
179
|
dispatch(removeAttributeFilters(newlyAddedFiltersLocalIds));
|
|
167
180
|
dispatch(drillActions.resetCrossFiltering(activeTabId));
|
|
168
181
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
182
|
+
if (canResetParameters) {
|
|
183
|
+
dispatch(tabsActions.setParameterRuntimeValues({ values: parameterResetTargets }));
|
|
184
|
+
dispatchEvent(parametersSelectionReset());
|
|
185
|
+
parametersStateReset();
|
|
186
|
+
}
|
|
187
|
+
// Filter-context event and telemetry must only fire when filter-side work actually ran,
|
|
188
|
+
// so plugins/analytics don't observe a filter reset on a parameter-only click.
|
|
189
|
+
if (willResetFilterContext) {
|
|
190
|
+
dispatchEvent(filterContextSelectionReset());
|
|
191
|
+
filterContextStateReset();
|
|
192
|
+
}
|
|
193
|
+
addSuccess(messages.filterResetButtonSuccess);
|
|
172
194
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
173
195
|
}, [
|
|
174
196
|
canReset,
|
|
197
|
+
canResetFilters,
|
|
198
|
+
canResetWorkingContext,
|
|
199
|
+
canResetParameters,
|
|
200
|
+
parameterResetTargets,
|
|
175
201
|
originalFilters,
|
|
176
202
|
dispatch,
|
|
177
203
|
crossFilteringEnabled,
|
|
178
204
|
filterContextStateReset,
|
|
205
|
+
parametersStateReset,
|
|
179
206
|
newlyAddedFiltersLocalIds,
|
|
180
|
-
|
|
207
|
+
userFilterResetAllowed,
|
|
181
208
|
enableDateFilterIdentifiers,
|
|
182
209
|
isApplyAllAtOnceEnabledAndSet,
|
|
210
|
+
addSuccess,
|
|
183
211
|
]);
|
|
184
212
|
return {
|
|
185
213
|
canReset,
|
|
186
|
-
resetType:
|
|
214
|
+
resetType: userFilterResetAllowed ? "all" : "crossFilter",
|
|
187
215
|
resetFilters,
|
|
188
216
|
};
|
|
189
217
|
};
|
|
@@ -2238,15 +2238,15 @@ export const en_US = {
|
|
|
2238
2238
|
"crowdinContext": "The tooltip helps users understand why they cannot change its value."
|
|
2239
2239
|
},
|
|
2240
2240
|
"filter.resetButton.tooltip": {
|
|
2241
|
-
"text": "Reset all
|
|
2241
|
+
"text": "Reset all to defaults",
|
|
2242
2242
|
"crowdinContext": "The tooltip of the reset button in the filter bar"
|
|
2243
2243
|
},
|
|
2244
2244
|
"filter.resetButton.success": {
|
|
2245
|
-
"text": "Success:
|
|
2245
|
+
"text": "Success: Reset to default values.",
|
|
2246
2246
|
"crowdinContext": "Text shown after reset button in the filter bar is used."
|
|
2247
2247
|
},
|
|
2248
2248
|
"filter.resetButton.ariaLabel": {
|
|
2249
|
-
"text": "Reset
|
|
2249
|
+
"text": "Reset all to defaults",
|
|
2250
2250
|
"crowdinContext": "The aria-label of the reset button in the filter bar"
|
|
2251
2251
|
},
|
|
2252
2252
|
"filter.crossFilterResetButton.tooltip": {
|
|
@@ -14,10 +14,10 @@ import { selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExp
|
|
|
14
14
|
import { selectShowWidgetAsTable } from "../../../model/store/showWidgetAsTable/showWidgetAsTableSelectors.js";
|
|
15
15
|
import { selectSlideShowExportVisible } from "../../../model/store/topBar/topBarSelectors.js";
|
|
16
16
|
import { selectIsExportableToCSV, selectIsExportableToPdfTabular, selectIsExportableToPngImage, selectIsExportableToXLSX, } from "../../../model/store/widgetExports/widgetExportsSelectors.js";
|
|
17
|
+
import { getDefaultPdfPageSize } from "../../automations/scheduledEmail/utils/pdfPageSize.js";
|
|
17
18
|
import { useExportCsvDialogContext } from "../../dashboardContexts/ExportCsvDialogContext.js";
|
|
18
19
|
import { useExportTabularPdfDialogContext } from "../../dashboardContexts/ExportTabularPdfDialogContext.js";
|
|
19
20
|
import { useExportXlsxDialogContext } from "../../dashboardContexts/ExportXlsxDialogContext.js";
|
|
20
|
-
import { getDefaultPdfPageSize } from "../../scheduledEmail/utils/pdfPageSize.js";
|
|
21
21
|
import { useExportToTabular } from "../../topBar/menuButton/useExportToTabular.js";
|
|
22
22
|
import { useExportWithTemplateSelection } from "../../topBar/menuButton/useExportWithTemplateSelection.js";
|
|
23
23
|
import { useExportHandler } from "./useExportHandler.js";
|