@gooddata/sdk-ui-dashboard 11.56.0-alpha.6 → 11.56.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +1 -1
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/catalog/computedAttributes.d.ts +43 -0
- package/esm/_staging/catalog/computedAttributes.d.ts.map +1 -0
- package/esm/_staging/catalog/computedAttributes.js +93 -0
- package/esm/_staging/catalog/displayFormMap.d.ts +3 -2
- package/esm/_staging/catalog/displayFormMap.d.ts.map +1 -1
- package/esm/_staging/catalog/displayFormMap.js +9 -3
- package/esm/_staging/metadata/objRefMap.d.ts.map +1 -1
- package/esm/_staging/metadata/objRefMap.js +11 -1
- package/esm/index.d.ts +9 -5
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -3
- package/esm/kdaDialog/composition/hooks/useKdaValidAttributes.js +2 -2
- package/esm/kdaDialog/dialog/hooks/useValidAttributes.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/hooks/useValidAttributes.js +21 -6
- package/esm/kdaDialog/hooks/useAttribute.d.ts.map +1 -1
- package/esm/kdaDialog/hooks/useAttribute.js +16 -8
- package/esm/locales.d.ts +3 -0
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +3 -0
- package/esm/model/commandHandlers/dashboard/common/loadAvailableDisplayFormRefs.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/loadAvailableDisplayFormRefs.js +15 -6
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts +2 -3
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +26 -17
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.d.ts +6 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.js +37 -4
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts +7 -2
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.js +15 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/filterDisplayFormValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/filterDisplayFormValidation.js +10 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/uniqueFiltersValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/uniqueFiltersValidation.js +24 -14
- package/esm/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.js +2 -2
- package/esm/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.js +6 -0
- package/esm/model/commandHandlers/widgets/exportInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/exportInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/exportRawInsightWidgetHandler.js +2 -2
- package/esm/model/queries/base.d.ts +1 -1
- package/esm/model/queries/base.d.ts.map +1 -1
- package/esm/model/queries/base.js +1 -1
- package/esm/model/queries/computedAttributeExpression.d.ts +27 -0
- package/esm/model/queries/computedAttributeExpression.d.ts.map +1 -0
- package/esm/model/queries/computedAttributeExpression.js +21 -0
- package/esm/model/queries/connectedAttributes.d.ts +19 -1
- package/esm/model/queries/connectedAttributes.d.ts.map +1 -1
- package/esm/model/queries/connectedAttributes.js +3 -1
- package/esm/model/queries/index.d.ts +2 -1
- package/esm/model/queries/index.d.ts.map +1 -1
- package/esm/model/queryServices/index.d.ts +1 -1
- package/esm/model/queryServices/index.d.ts.map +1 -1
- package/esm/model/queryServices/index.js +2 -0
- package/esm/model/queryServices/queryAttributeByDisplayForm.d.ts.map +1 -1
- package/esm/model/queryServices/queryAttributeByDisplayForm.js +12 -3
- package/esm/model/queryServices/queryAttributeDataset.d.ts.map +1 -1
- package/esm/model/queryServices/queryAttributeDataset.js +9 -1
- package/esm/model/queryServices/queryComputedAttributeExpression.d.ts +4 -0
- package/esm/model/queryServices/queryComputedAttributeExpression.d.ts.map +1 -0
- package/esm/model/queryServices/queryComputedAttributeExpression.js +17 -0
- package/esm/model/queryServices/queryConnectedAttributes.d.ts.map +1 -1
- package/esm/model/queryServices/queryConnectedAttributes.js +20 -5
- package/esm/model/queryServices/queryInsightAttributesMeta.d.ts.map +1 -1
- package/esm/model/queryServices/queryInsightAttributesMeta.js +20 -11
- package/esm/model/react/useIsWidgetRestricted.d.ts +9 -0
- package/esm/model/react/useIsWidgetRestricted.d.ts.map +1 -0
- package/esm/model/react/useIsWidgetRestricted.js +14 -0
- package/esm/model/store/catalog/catalogReducers.d.ts +2 -1
- package/esm/model/store/catalog/catalogReducers.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogReducers.js +2 -1
- package/esm/model/store/catalog/catalogSelectors.d.ts +21 -1
- package/esm/model/store/catalog/catalogSelectors.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogSelectors.js +26 -2
- package/esm/model/store/catalog/catalogState.d.ts +8 -1
- package/esm/model/store/catalog/catalogState.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogState.js +1 -0
- package/esm/model/store/config/configSelectors.d.ts +11 -0
- package/esm/model/store/config/configSelectors.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.js +13 -0
- package/esm/model/store/insights/insightsSelectors.js +3 -3
- package/esm/model/store/tabs/filterContext/filterContextSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/filterContext/filterContextSelectors.js +8 -4
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.d.ts +8 -0
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.d.ts.map +1 -1
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.js +8 -0
- package/esm/model/utils/displayFormResolver.d.ts.map +1 -1
- package/esm/model/utils/displayFormResolver.js +11 -1
- package/esm/plugins/customizationApis/customizationBuilder.d.ts.map +1 -1
- package/esm/plugins/customizationApis/customizationBuilder.js +1 -0
- package/esm/plugins/customizationApis/insightCustomizer.d.ts +4 -2
- package/esm/plugins/customizationApis/insightCustomizer.d.ts.map +1 -1
- package/esm/plugins/customizationApis/insightCustomizer.js +43 -3
- package/esm/plugins/customizer.d.ts +14 -1
- package/esm/plugins/customizer.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts +2 -0
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/AlertingDialog.js +12 -2
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +1 -1
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.js +23 -58
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.d.ts +33 -0
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.js +61 -0
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.d.ts +3 -17
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.js +3 -52
- package/esm/presentation/automations/alerting/state/useAlertFormState.js +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +1 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts +3 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.js +13 -3
- package/esm/presentation/automations/scheduledEmail/blocks/ScheduledEmailDialogShell.js +2 -5
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.js +22 -40
- package/esm/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.js +14 -3
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.d.ts +27 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.js +142 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts +4 -6
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.js +9 -151
- package/esm/presentation/automations/shared/filters/conversions.d.ts +4 -0
- package/esm/presentation/automations/shared/filters/conversions.d.ts.map +1 -1
- package/esm/presentation/automations/shared/filters/conversions.js +28 -24
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.d.ts +16 -0
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.js +38 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.d.ts +10 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.js +18 -0
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.js +17 -4
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts +10 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts.map +1 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.js +19 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.js +8 -2
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.js +4 -2
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts +8 -3
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.js +65 -25
- package/esm/presentation/dashboard/components/DashboardInner.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardInner.js +4 -4
- package/esm/presentation/dashboard/components/DashboardRenderer.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardRenderer.js +2 -2
- package/esm/presentation/dashboard/hooks/useDashboard.d.ts +2 -1
- package/esm/presentation/dashboard/hooks/useDashboard.d.ts.map +1 -1
- package/esm/presentation/dashboard/hooks/useDashboard.js +7 -1
- package/esm/presentation/dashboard/types.d.ts +14 -1
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts +2 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.js +1 -0
- package/esm/presentation/dashboardContexts/types.d.ts +20 -0
- package/esm/presentation/dashboardContexts/types.d.ts.map +1 -1
- package/esm/presentation/dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.d.ts.map +1 -1
- package/esm/presentation/dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.js +4 -3
- package/esm/presentation/export/useExportData.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.js +8 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.d.ts +12 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.js +19 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/displayForms/AttributeDisplayFormsDropdown.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/displayForms/AttributeDisplayFormsDropdown.js +3 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.d.ts +14 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.d.ts.map +1 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.js +28 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDisplayFormConfiguration.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useValidNeighbourAttributes.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useValidNeighbourAttributes.js +12 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/shared/limitingItemsHook.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/shared/limitingItemsHook.js +6 -5
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersDisabledItem.js +2 -2
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarItem.js +2 -2
- package/esm/presentation/filterBar/filterBar/useFiltersWithAddedPlaceholder.js +2 -2
- package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.d.ts.map +1 -1
- package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.js +55 -17
- package/esm/presentation/flexibleLayout/DashboardLayoutWidget.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DashboardLayoutWidget.js +6 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +40 -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 +40 -0
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +33 -32
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +5 -4
- package/esm/presentation/widget/common/RestrictedPlaceholder.d.ts +54 -0
- package/esm/presentation/widget/common/RestrictedPlaceholder.d.ts.map +1 -0
- package/esm/presentation/widget/common/RestrictedPlaceholder.js +49 -0
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.d.ts +6 -1
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.js +2 -2
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.d.ts +6 -1
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.js +10 -3
- package/esm/presentation/widget/insight/DefaultInsightBody/DefaultInsightBody.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightDateDataSetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDateDataSetFilter.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.d.ts +6 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.js +13 -2
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.js +5 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.d.ts +1 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.js +2 -2
- package/esm/presentation/widget/richText/configuration/RichTextDateDataSetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/richText/configuration/RichTextDateDataSetFilter.js +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.d.ts.map +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js +8 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.d.ts +16 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.d.ts.map +1 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.js +19 -0
- package/esm/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.d.ts.map +1 -1
- package/esm/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.js +11 -1
- package/esm/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.js +2 -2
- package/esm/presentation/widget/widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.d.ts.map +1 -1
- package/esm/presentation/widget/widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.js +25 -12
- package/esm/sdk-ui-dashboard.d.ts +206 -4
- package/package.json +22 -22
- package/styles/css/alerting.css +3 -1
- package/styles/css/alerting.css.map +1 -1
- package/styles/css/configurationPanel.css +1 -5
- package/styles/css/configurationPanel.css.map +1 -1
- package/styles/css/dashboard.css +5 -3
- package/styles/css/dashboard.css.map +1 -1
- package/styles/css/export.css +10 -8
- package/styles/css/export.css.map +1 -1
- package/styles/css/filterBar.css +29 -0
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +230 -22
- package/styles/css/main.css.map +1 -1
- package/styles/css/sidebar.css +165 -0
- package/styles/css/sidebar.css.map +1 -1
- package/styles/css/visualizationSwitcherWidget.css +8 -0
- package/styles/css/visualizationSwitcherWidget.css.map +1 -1
- package/styles/scss/configurationPanel.scss +1 -7
- package/styles/scss/filterBar.scss +38 -0
- package/styles/scss/sidebar.scss +215 -0
- package/styles/scss/visualizationSwitcherWidget.scss +9 -0
package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2026 GoodData Corporation
|
|
3
|
-
import {
|
|
3
|
+
import { useState } from "react";
|
|
4
4
|
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
5
5
|
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
6
6
|
import { useAutomationFiltersSelect } from "../../shared/automationFilters/useAutomationFiltersSelect.js";
|
|
7
|
+
import { useShallowStable } from "../../shared/hooks/useShallowStable.js";
|
|
7
8
|
import { useScheduleTimezone } from "../hooks/useScheduleTimezone.js";
|
|
8
9
|
import { getDefaultPdfPageSize } from "../utils/pdfPageSize.js";
|
|
9
10
|
import { ScheduledExportActionsContextProvider } from "./ScheduledExportActionsContext.js";
|
|
10
11
|
import { ScheduledExportDataContextProvider } from "./ScheduledExportDataContext.js";
|
|
11
12
|
import { ScheduledExportDraftContextProvider } from "./ScheduledExportDraftContext.js";
|
|
12
13
|
import { ScheduledExportFiltersContextProvider } from "./ScheduledExportFiltersContext.js";
|
|
14
|
+
import { useScheduledEmailDraftFilterWrites } from "./useScheduledEmailDraftFilterWrites.js";
|
|
13
15
|
import { useScheduledEmailEffectiveFilters } from "./useScheduledEmailEffectiveFilters.js";
|
|
14
16
|
import { useScheduledEmailExportSettings } from "./useScheduledEmailExportSettings.js";
|
|
15
17
|
import { useScheduledEmailFiltersModel } from "./useScheduledEmailFiltersModel.js";
|
|
@@ -92,8 +94,16 @@ function LoadedScheduledEmailDialogState({ children }) {
|
|
|
92
94
|
defaultPdfPageSize,
|
|
93
95
|
scheduleTimezone: scheduleTimezoneState.scheduleTimezone,
|
|
94
96
|
});
|
|
95
|
-
const
|
|
97
|
+
const { applyFiltersToDraft, applyFiltersByTabToDraft } = useScheduledEmailDraftFilterWrites({
|
|
96
98
|
setEditedAutomation: formState.setEditedAutomation,
|
|
99
|
+
widget,
|
|
100
|
+
insight,
|
|
101
|
+
storeFilters,
|
|
102
|
+
availableFiltersAsVisibleFilters,
|
|
103
|
+
availableFiltersAsVisibleFiltersByTab,
|
|
104
|
+
filtersByTab,
|
|
105
|
+
});
|
|
106
|
+
const filtersModel = useScheduledEmailFiltersModel({
|
|
97
107
|
scheduledExportToEdit,
|
|
98
108
|
widget,
|
|
99
109
|
insight,
|
|
@@ -102,15 +112,15 @@ function LoadedScheduledEmailDialogState({ children }) {
|
|
|
102
112
|
editedAutomationFiltersByTab,
|
|
103
113
|
setEditedAutomationFiltersByTab,
|
|
104
114
|
availableFilters,
|
|
105
|
-
availableFiltersAsVisibleFilters,
|
|
106
|
-
availableFiltersAsVisibleFiltersByTab,
|
|
107
115
|
filtersByTab,
|
|
108
116
|
storeFilters,
|
|
109
117
|
setStoreFilters,
|
|
110
118
|
filtersForNewAutomation,
|
|
111
119
|
setParametersWire: exportSettings.setParametersWire,
|
|
120
|
+
applyFiltersToDraft,
|
|
121
|
+
applyFiltersByTabToDraft,
|
|
112
122
|
});
|
|
113
|
-
const draft =
|
|
123
|
+
const draft = useShallowStable({
|
|
114
124
|
editedAutomation: formState.editedAutomation,
|
|
115
125
|
originalAutomation: formState.originalAutomation,
|
|
116
126
|
startDate: formState.startDate,
|
|
@@ -123,21 +133,8 @@ function LoadedScheduledEmailDialogState({ children }) {
|
|
|
123
133
|
scheduleTimezoneSelection: scheduleTimezoneState.scheduleTimezoneSelection,
|
|
124
134
|
defaultResolvedTimezone: scheduleTimezoneState.defaultResolvedTimezone,
|
|
125
135
|
scheduleTimezoneIsStale: scheduleTimezoneState.scheduleTimezoneIsStale,
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
formState.originalAutomation,
|
|
129
|
-
formState.startDate,
|
|
130
|
-
formState.isCronValid,
|
|
131
|
-
formState.isTitleValid,
|
|
132
|
-
formState.isSubjectValid,
|
|
133
|
-
formState.isOnMessageValid,
|
|
134
|
-
scheduleTimezoneState.isTimezoneFeatureEnabled,
|
|
135
|
-
scheduleTimezoneState.canSelectScheduleTimezone,
|
|
136
|
-
scheduleTimezoneState.scheduleTimezoneSelection,
|
|
137
|
-
scheduleTimezoneState.defaultResolvedTimezone,
|
|
138
|
-
scheduleTimezoneState.scheduleTimezoneIsStale,
|
|
139
|
-
]);
|
|
140
|
-
const actions = useMemo(() => ({
|
|
136
|
+
});
|
|
137
|
+
const actions = useShallowStable({
|
|
141
138
|
setEditedAutomation: formState.setEditedAutomation,
|
|
142
139
|
onTitleChange: formState.onTitleChange,
|
|
143
140
|
onRecurrenceChange: formState.onRecurrenceChange,
|
|
@@ -155,25 +152,10 @@ function LoadedScheduledEmailDialogState({ children }) {
|
|
|
155
152
|
onSlidesTemplateIdChange: exportSettings.onSlidesTemplateIdChange,
|
|
156
153
|
onScheduleTimezoneChange: scheduleTimezoneState.onScheduleTimezoneChange,
|
|
157
154
|
applyCurrentScheduleTimezone: scheduleTimezoneState.applyCurrentScheduleTimezone,
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
formState.
|
|
161
|
-
formState.
|
|
162
|
-
|
|
163
|
-
formState.onDestinationChange,
|
|
164
|
-
formState.onRecipientsChange,
|
|
165
|
-
formState.onSubjectChange,
|
|
166
|
-
formState.onMessageChange,
|
|
167
|
-
exportSettings.onDashboardAttachmentsChange,
|
|
168
|
-
exportSettings.onWidgetAttachmentsChange,
|
|
169
|
-
exportSettings.onXlsxSettingsChange,
|
|
170
|
-
exportSettings.onPdfSettingsChange,
|
|
171
|
-
exportSettings.onCsvSettingsChange,
|
|
172
|
-
exportSettings.onCsvRawSettingsChange,
|
|
173
|
-
exportSettings.onSlidesTemplateIdChange,
|
|
174
|
-
scheduleTimezoneState.onScheduleTimezoneChange,
|
|
175
|
-
scheduleTimezoneState.applyCurrentScheduleTimezone,
|
|
176
|
-
]);
|
|
177
|
-
const data = useMemo(() => ({ defaultUser: formState.defaultUser, defaultRecipient: formState.defaultRecipient }), [formState.defaultUser, formState.defaultRecipient]);
|
|
155
|
+
});
|
|
156
|
+
const data = useShallowStable({
|
|
157
|
+
defaultUser: formState.defaultUser,
|
|
158
|
+
defaultRecipient: formState.defaultRecipient,
|
|
159
|
+
});
|
|
178
160
|
return (_jsx(ScheduledExportDraftContextProvider, { value: draft, children: _jsx(ScheduledExportActionsContextProvider, { value: actions, children: _jsx(ScheduledExportDataContextProvider, { value: data, children: _jsx(ScheduledExportFiltersContextProvider, { value: filtersModel, children: children }) }) }) }));
|
|
179
161
|
}
|
package/esm/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSaveScheduledEmailToBackend.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAEjG;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,GAChB,EAAE,+BAA+B,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"useSaveScheduledEmailToBackend.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAEjG;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,GAChB,EAAE,+BAA+B,GAAG,wBAAwB,CAoF5D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
|
-
import { useCallback, useState } from "react";
|
|
2
|
+
import { useCallback, useRef, useState } from "react";
|
|
3
3
|
import { omit } from "lodash-es";
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, } from "@gooddata/sdk-model";
|
|
@@ -20,11 +20,16 @@ export function useSaveScheduledEmailToBackend({ onCreateSuccess, onCreateError,
|
|
|
20
20
|
const [isSavingScheduledEmail, setIsSavingScheduledEmail] = useState(false);
|
|
21
21
|
const { createScheduledEmail, saveScheduledEmail } = useScheduledEmailDialogContext();
|
|
22
22
|
const { editedAutomation } = useScheduledExportDraft();
|
|
23
|
+
const submitInFlight = useRef(false);
|
|
23
24
|
const handleCreateScheduledEmail = useCallback(async (scheduledEmail) => {
|
|
24
|
-
|
|
25
|
+
if (submitInFlight.current) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
submitInFlight.current = true;
|
|
25
29
|
setSavingErrorMessage(undefined);
|
|
26
30
|
setIsSavingScheduledEmail(true);
|
|
27
31
|
try {
|
|
32
|
+
const sanitizedAutomation = sanitizeAutomation(scheduledEmail, intl);
|
|
28
33
|
const created = await createScheduledEmail(sanitizedAutomation);
|
|
29
34
|
onCreateSuccess?.(created);
|
|
30
35
|
}
|
|
@@ -41,14 +46,19 @@ export function useSaveScheduledEmailToBackend({ onCreateSuccess, onCreateError,
|
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
finally {
|
|
49
|
+
submitInFlight.current = false;
|
|
44
50
|
setIsSavingScheduledEmail(false);
|
|
45
51
|
}
|
|
46
52
|
}, [createScheduledEmail, intl, onCreateSuccess, onCreateError]);
|
|
47
53
|
const handleUpdateScheduledEmail = useCallback(async (scheduledEmail) => {
|
|
48
|
-
|
|
54
|
+
if (submitInFlight.current) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
submitInFlight.current = true;
|
|
49
58
|
setSavingErrorMessage(undefined);
|
|
50
59
|
setIsSavingScheduledEmail(true);
|
|
51
60
|
try {
|
|
61
|
+
const sanitizedAutomation = sanitizeAutomation(scheduledEmail, intl);
|
|
52
62
|
const saved = await saveScheduledEmail(sanitizedAutomation);
|
|
53
63
|
onUpdateSuccess?.(saved);
|
|
54
64
|
}
|
|
@@ -65,6 +75,7 @@ export function useSaveScheduledEmailToBackend({ onCreateSuccess, onCreateError,
|
|
|
65
75
|
}
|
|
66
76
|
}
|
|
67
77
|
finally {
|
|
78
|
+
submitInFlight.current = false;
|
|
68
79
|
setIsSavingScheduledEmail(false);
|
|
69
80
|
}
|
|
70
81
|
}, [saveScheduledEmail, intl, onUpdateSuccess, onUpdateError]);
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Dispatch, type SetStateAction } from "react";
|
|
2
|
+
import { type FilterContextItem, type IAutomationMetadataObjectDefinition, type IAutomationVisibleFilter, type IInsight, type IWidget } from "@gooddata/sdk-model";
|
|
3
|
+
import type { IAutomationFiltersTab } from "../../../../model/store/filtering/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Props for {@link useScheduledEmailDraftFilterWrites}.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export interface IUseScheduledEmailDraftFilterWritesProps {
|
|
9
|
+
setEditedAutomation: Dispatch<SetStateAction<IAutomationMetadataObjectDefinition>>;
|
|
10
|
+
widget?: IWidget;
|
|
11
|
+
insight?: IInsight;
|
|
12
|
+
storeFilters: boolean;
|
|
13
|
+
availableFiltersAsVisibleFilters?: IAutomationVisibleFilter[] | undefined;
|
|
14
|
+
availableFiltersAsVisibleFiltersByTab?: Record<string, IAutomationVisibleFilter[]>;
|
|
15
|
+
filtersByTab?: IAutomationFiltersTab[] | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Owns the scheduled-export draft's filter writes: reconciling a new flat or per-tab filter
|
|
19
|
+
* selection into the edited automation's export definitions and metadata.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare function useScheduledEmailDraftFilterWrites({ setEditedAutomation, widget, insight, storeFilters, availableFiltersAsVisibleFilters, availableFiltersAsVisibleFiltersByTab, filtersByTab, }: IUseScheduledEmailDraftFilterWritesProps): {
|
|
24
|
+
applyFiltersToDraft: (filters: FilterContextItem[], storeFiltersParam?: boolean) => void;
|
|
25
|
+
applyFiltersByTabToDraft: (newFiltersByTab: Record<string, FilterContextItem[]>, storeFiltersParam?: boolean) => void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=useScheduledEmailDraftFilterWrites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailDraftFilterWrites.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAe,MAAM,OAAO,CAAC;AAExE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,mCAAmC,EACxC,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,OAAO,EAIf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AASxF;;;GAGG;AACH,MAAM,WAAW,wCAAwC;IACrD,mBAAmB,EAAE,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnF,YAAY,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,EAC/C,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,YAAY,EACZ,gCAAgC,EAChC,qCAAqC,EACrC,YAAY,GACf,EAAE,wCAAwC,GAAG;IAC1C,mBAAmB,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzF,wBAAwB,EAAE,CACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EACpD,iBAAiB,CAAC,EAAE,OAAO,KAC1B,IAAI,CAAC;CACb,CA8LA"}
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isInsightWidget, } from "@gooddata/sdk-model";
|
|
4
|
+
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
5
|
+
import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersByFilters, getVisibleFiltersByFiltersByTab, } from "../../shared/filters/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Owns the scheduled-export draft's filter writes: reconciling a new flat or per-tab filter
|
|
8
|
+
* selection into the edited automation's export definitions and metadata.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export function useScheduledEmailDraftFilterWrites({ setEditedAutomation, widget, insight, storeFilters, availableFiltersAsVisibleFilters, availableFiltersAsVisibleFiltersByTab, filtersByTab, }) {
|
|
13
|
+
const { hiddenFilters: dashboardHiddenFilters, commonDateFilterId } = useScheduledEmailDialogContext();
|
|
14
|
+
// Re-derived locally (not passed as a prop) so that the `if (isWidget)` branch below narrows
|
|
15
|
+
// `widget`/`insight` via TS's aliased-condition control-flow analysis — this requires the boolean
|
|
16
|
+
// to be declared from those exact variables in this same scope, same as in the parent.
|
|
17
|
+
const isWidget = !!widget && !!insight;
|
|
18
|
+
const applyFiltersToDraft = useCallback((filters, storeFiltersParam) => {
|
|
19
|
+
const shouldStoreFilters = storeFiltersParam ?? storeFilters;
|
|
20
|
+
if (isWidget) {
|
|
21
|
+
if (!isInsightWidget(widget)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
setEditedAutomation((s) => {
|
|
25
|
+
const appliedDashboardFilters = getAppliedDashboardFilters(filters, dashboardHiddenFilters, true);
|
|
26
|
+
const appliedWidgetFiltersWithInsight = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, true);
|
|
27
|
+
const appliedWidgetFiltersWithoutInsight = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, false);
|
|
28
|
+
const visibleFilters = getVisibleFiltersByFilters(filters, availableFiltersAsVisibleFilters, true);
|
|
29
|
+
return {
|
|
30
|
+
...s,
|
|
31
|
+
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
32
|
+
if (isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload)) {
|
|
33
|
+
const format = exportDefinition.requestPayload.format;
|
|
34
|
+
const shouldUseWidgetFiltersWithInsight = format === "CSV";
|
|
35
|
+
const shouldUseWidgetFiltersWithoutInsight = format === "CSV_RAW";
|
|
36
|
+
const appliedFilters = shouldUseWidgetFiltersWithInsight
|
|
37
|
+
? appliedWidgetFiltersWithInsight
|
|
38
|
+
: shouldUseWidgetFiltersWithoutInsight
|
|
39
|
+
? appliedWidgetFiltersWithoutInsight
|
|
40
|
+
: appliedDashboardFilters;
|
|
41
|
+
return {
|
|
42
|
+
...exportDefinition,
|
|
43
|
+
requestPayload: {
|
|
44
|
+
...exportDefinition.requestPayload,
|
|
45
|
+
content: {
|
|
46
|
+
...exportDefinition.requestPayload.content,
|
|
47
|
+
filters: appliedFilters,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return exportDefinition;
|
|
54
|
+
}
|
|
55
|
+
}),
|
|
56
|
+
metadata: {
|
|
57
|
+
...s.metadata,
|
|
58
|
+
visibleFilters,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
setEditedAutomation((s) => {
|
|
65
|
+
const appliedFilters = getAppliedDashboardFilters(filters, dashboardHiddenFilters, shouldStoreFilters);
|
|
66
|
+
const visibleFilters = getVisibleFiltersByFilters(filters, availableFiltersAsVisibleFilters, shouldStoreFilters);
|
|
67
|
+
return {
|
|
68
|
+
...s,
|
|
69
|
+
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
70
|
+
if (isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload)) {
|
|
71
|
+
return {
|
|
72
|
+
...exportDefinition,
|
|
73
|
+
requestPayload: {
|
|
74
|
+
...exportDefinition.requestPayload,
|
|
75
|
+
content: {
|
|
76
|
+
...exportDefinition.requestPayload.content,
|
|
77
|
+
filters: appliedFilters,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
return exportDefinition;
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
86
|
+
metadata: {
|
|
87
|
+
...s.metadata,
|
|
88
|
+
visibleFilters,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}, [
|
|
94
|
+
setEditedAutomation,
|
|
95
|
+
dashboardHiddenFilters,
|
|
96
|
+
availableFiltersAsVisibleFilters,
|
|
97
|
+
storeFilters,
|
|
98
|
+
widget,
|
|
99
|
+
insight,
|
|
100
|
+
isWidget,
|
|
101
|
+
commonDateFilterId,
|
|
102
|
+
]);
|
|
103
|
+
// Callback for per-tab filter changes - updates state AND syncs to export definitions
|
|
104
|
+
const applyFiltersByTabToDraft = useCallback((newFiltersByTab, storeFiltersParam) => {
|
|
105
|
+
const shouldStoreFilters = storeFiltersParam ?? storeFilters;
|
|
106
|
+
const newEffectiveFiltersByTab = shouldStoreFilters
|
|
107
|
+
? Object.entries(newFiltersByTab).reduce((acc, [tabId, filters]) => {
|
|
108
|
+
const tabHiddenFilters = filtersByTab?.find((tab) => tab.tabId === tabId)?.hiddenFilters ?? [];
|
|
109
|
+
const appliedFilters = getAppliedDashboardFilters(filters ?? [], tabHiddenFilters, true);
|
|
110
|
+
if (appliedFilters) {
|
|
111
|
+
acc[tabId] = appliedFilters;
|
|
112
|
+
}
|
|
113
|
+
return acc;
|
|
114
|
+
}, {})
|
|
115
|
+
: undefined;
|
|
116
|
+
const newVisibleFiltersByTab = getVisibleFiltersByFiltersByTab(newFiltersByTab, availableFiltersAsVisibleFiltersByTab, shouldStoreFilters);
|
|
117
|
+
// Sync to export definitions AND metadata
|
|
118
|
+
setEditedAutomation((s) => ({
|
|
119
|
+
...s,
|
|
120
|
+
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
121
|
+
if (isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload)) {
|
|
122
|
+
return {
|
|
123
|
+
...exportDefinition,
|
|
124
|
+
requestPayload: {
|
|
125
|
+
...exportDefinition.requestPayload,
|
|
126
|
+
content: {
|
|
127
|
+
...exportDefinition.requestPayload.content,
|
|
128
|
+
filtersByTab: newEffectiveFiltersByTab,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return exportDefinition;
|
|
134
|
+
}),
|
|
135
|
+
metadata: {
|
|
136
|
+
...s.metadata,
|
|
137
|
+
visibleFiltersByTab: newVisibleFiltersByTab,
|
|
138
|
+
},
|
|
139
|
+
}));
|
|
140
|
+
}, [storeFilters, setEditedAutomation, availableFiltersAsVisibleFiltersByTab, filtersByTab]);
|
|
141
|
+
return { applyFiltersToDraft, applyFiltersByTabToDraft };
|
|
142
|
+
}
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationMetadataObjectDefinition, type IAutomationVisibleFilter, type IDashboardExportParameter, type IInsight, type IWidget } from "@gooddata/sdk-model";
|
|
1
|
+
import { type FilterContextItem, type IAutomationMetadataObject, type IDashboardExportParameter, type IInsight, type IWidget } from "@gooddata/sdk-model";
|
|
3
2
|
import type { IAutomationFiltersTab } from "../../../../model/store/filtering/types.js";
|
|
4
3
|
import { type IScheduledExportFiltersContextValue } from "./types.js";
|
|
5
4
|
export interface IUseScheduledEmailFiltersModelProps {
|
|
6
|
-
setEditedAutomation: Dispatch<SetStateAction<IAutomationMetadataObjectDefinition>>;
|
|
7
5
|
scheduledExportToEdit?: IAutomationMetadataObject;
|
|
8
6
|
widget?: IWidget;
|
|
9
7
|
insight?: IInsight;
|
|
@@ -12,13 +10,13 @@ export interface IUseScheduledEmailFiltersModelProps {
|
|
|
12
10
|
editedAutomationFiltersByTab?: Record<string, FilterContextItem[]>;
|
|
13
11
|
setEditedAutomationFiltersByTab?: (filters: Record<string, FilterContextItem[]>) => void;
|
|
14
12
|
availableFilters?: FilterContextItem[];
|
|
15
|
-
availableFiltersAsVisibleFilters?: IAutomationVisibleFilter[] | undefined;
|
|
16
|
-
availableFiltersAsVisibleFiltersByTab?: Record<string, IAutomationVisibleFilter[]>;
|
|
17
13
|
filtersByTab?: IAutomationFiltersTab[] | undefined;
|
|
18
14
|
storeFilters: boolean;
|
|
19
15
|
setStoreFilters: (storeFilters: boolean) => void;
|
|
20
16
|
filtersForNewAutomation: FilterContextItem[];
|
|
21
17
|
setParametersWire: (wire: Record<string, IDashboardExportParameter[]> | undefined) => void;
|
|
18
|
+
applyFiltersToDraft: (filters: FilterContextItem[], storeFiltersParam?: boolean) => void;
|
|
19
|
+
applyFiltersByTabToDraft: (newFiltersByTab: Record<string, FilterContextItem[]>, storeFiltersParam?: boolean) => void;
|
|
22
20
|
}
|
|
23
21
|
/**
|
|
24
22
|
* The scheduled-email dialog's single filter model: the current selection and available filters
|
|
@@ -34,5 +32,5 @@ export interface IUseScheduledEmailFiltersModelProps {
|
|
|
34
32
|
*
|
|
35
33
|
* @internal
|
|
36
34
|
*/
|
|
37
|
-
export declare function useScheduledEmailFiltersModel({
|
|
35
|
+
export declare function useScheduledEmailFiltersModel({ scheduledExportToEdit, widget, insight, editedAutomationFilters, setEditedAutomationFilters, editedAutomationFiltersByTab, setEditedAutomationFiltersByTab, availableFilters, filtersByTab, storeFilters, setStoreFilters, filtersForNewAutomation, setParametersWire, applyFiltersToDraft, applyFiltersByTabToDraft, }: IUseScheduledEmailFiltersModelProps): IScheduledExportFiltersContextValue;
|
|
38
36
|
//# sourceMappingURL=useScheduledEmailFiltersModel.d.ts.map
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScheduledEmailFiltersModel.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScheduledEmailFiltersModel.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,OAAO,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAOxF,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,mCAAmC;IAChD,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACnE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3F,mBAAmB,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzF,wBAAwB,EAAE,CACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EACpD,iBAAiB,CAAC,EAAE,OAAO,KAC1B,IAAI,CAAC;CACb;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAAC,EAC1C,qBAAqB,EACrB,MAAM,EACN,OAAO,EACP,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GAC3B,EAAE,mCAAmC,GAAG,mCAAmC,CA2F3E"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
|
-
import { useCallback
|
|
3
|
-
import { isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isInsightWidget, } from "@gooddata/sdk-model";
|
|
4
|
-
import { shallowEqualObjects } from "@gooddata/util";
|
|
2
|
+
import { useCallback } from "react";
|
|
5
3
|
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
6
4
|
import { useValidateExistingAutomationFilters } from "../../shared/automationFilters/hooks/useValidateExistingAutomationFilters.js";
|
|
7
5
|
import { useAutomationExportParameters } from "../../shared/automationFilters/useAutomationExportParameters.js";
|
|
8
6
|
import { getDefaultSelectedFiltersFromFiltersByTab } from "../../shared/automationFilters/useAutomationFiltersSelect.js";
|
|
9
|
-
import {
|
|
7
|
+
import { useShallowStable } from "../../shared/hooks/useShallowStable.js";
|
|
10
8
|
/**
|
|
11
9
|
* The scheduled-email dialog's single filter model: the current selection and available filters
|
|
12
10
|
* (flat and per-tab), the handlers that mutate them and mirror the result into the draft, the
|
|
@@ -21,145 +19,18 @@ import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersB
|
|
|
21
19
|
*
|
|
22
20
|
* @internal
|
|
23
21
|
*/
|
|
24
|
-
export function useScheduledEmailFiltersModel({
|
|
25
|
-
const {
|
|
26
|
-
// Re-derived locally (not passed as a prop) so that the `if (isWidget)` branch below narrows
|
|
27
|
-
// `widget`/`insight` via TS's aliased-condition control-flow analysis — this requires the boolean
|
|
28
|
-
// to be declared from those exact variables in this same scope, same as in the parent.
|
|
29
|
-
const isWidget = !!widget && !!insight;
|
|
22
|
+
export function useScheduledEmailFiltersModel({ scheduledExportToEdit, widget, insight, editedAutomationFilters, setEditedAutomationFilters, editedAutomationFiltersByTab, setEditedAutomationFiltersByTab, availableFilters, filtersByTab, storeFilters, setStoreFilters, filtersForNewAutomation, setParametersWire, applyFiltersToDraft, applyFiltersByTabToDraft, }) {
|
|
23
|
+
const { exportParametersByTab } = useScheduledEmailDialogContext();
|
|
30
24
|
const onFiltersChange = useCallback((filters, storeFiltersParam) => {
|
|
31
25
|
setEditedAutomationFilters(filters);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
setEditedAutomation((s) => {
|
|
38
|
-
const appliedDashboardFilters = getAppliedDashboardFilters(filters, dashboardHiddenFilters, true);
|
|
39
|
-
const appliedWidgetFiltersWithInsight = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, true);
|
|
40
|
-
const appliedWidgetFiltersWithoutInsight = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, false);
|
|
41
|
-
const visibleFilters = getVisibleFiltersByFilters(filters, availableFiltersAsVisibleFilters, true);
|
|
42
|
-
return {
|
|
43
|
-
...s,
|
|
44
|
-
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
45
|
-
if (isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload)) {
|
|
46
|
-
const format = exportDefinition.requestPayload.format;
|
|
47
|
-
const shouldUseWidgetFiltersWithInsight = format === "CSV";
|
|
48
|
-
const shouldUseWidgetFiltersWithoutInsight = format === "CSV_RAW";
|
|
49
|
-
const appliedFilters = shouldUseWidgetFiltersWithInsight
|
|
50
|
-
? appliedWidgetFiltersWithInsight
|
|
51
|
-
: shouldUseWidgetFiltersWithoutInsight
|
|
52
|
-
? appliedWidgetFiltersWithoutInsight
|
|
53
|
-
: appliedDashboardFilters;
|
|
54
|
-
return {
|
|
55
|
-
...exportDefinition,
|
|
56
|
-
requestPayload: {
|
|
57
|
-
...exportDefinition.requestPayload,
|
|
58
|
-
content: {
|
|
59
|
-
...exportDefinition.requestPayload.content,
|
|
60
|
-
filters: appliedFilters,
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
return exportDefinition;
|
|
67
|
-
}
|
|
68
|
-
}),
|
|
69
|
-
metadata: {
|
|
70
|
-
...s.metadata,
|
|
71
|
-
visibleFilters,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
setEditedAutomation((s) => {
|
|
78
|
-
const appliedFilters = getAppliedDashboardFilters(filters, dashboardHiddenFilters, shouldStoreFilters);
|
|
79
|
-
const visibleFilters = getVisibleFiltersByFilters(filters, availableFiltersAsVisibleFilters, shouldStoreFilters);
|
|
80
|
-
return {
|
|
81
|
-
...s,
|
|
82
|
-
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
83
|
-
if (isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload)) {
|
|
84
|
-
return {
|
|
85
|
-
...exportDefinition,
|
|
86
|
-
requestPayload: {
|
|
87
|
-
...exportDefinition.requestPayload,
|
|
88
|
-
content: {
|
|
89
|
-
...exportDefinition.requestPayload.content,
|
|
90
|
-
filters: appliedFilters,
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
return exportDefinition;
|
|
97
|
-
}
|
|
98
|
-
}),
|
|
99
|
-
metadata: {
|
|
100
|
-
...s.metadata,
|
|
101
|
-
visibleFilters,
|
|
102
|
-
},
|
|
103
|
-
};
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}, [
|
|
107
|
-
setEditedAutomationFilters,
|
|
108
|
-
setEditedAutomation,
|
|
109
|
-
dashboardHiddenFilters,
|
|
110
|
-
availableFiltersAsVisibleFilters,
|
|
111
|
-
storeFilters,
|
|
112
|
-
widget,
|
|
113
|
-
insight,
|
|
114
|
-
isWidget,
|
|
115
|
-
commonDateFilterId,
|
|
116
|
-
]);
|
|
117
|
-
// Callback for per-tab filter changes - updates state AND syncs to export definitions
|
|
26
|
+
applyFiltersToDraft(filters, storeFiltersParam);
|
|
27
|
+
}, [setEditedAutomationFilters, applyFiltersToDraft]);
|
|
28
|
+
// Callback for per-tab filter changes - updates state and forwards the draft write
|
|
118
29
|
const onFiltersByTabChange = useCallback((newFiltersByTab, storeFiltersParam) => {
|
|
119
30
|
// Update the editedFiltersByTab state
|
|
120
31
|
setEditedAutomationFiltersByTab?.(newFiltersByTab);
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
? Object.entries(newFiltersByTab).reduce((acc, [tabId, filters]) => {
|
|
124
|
-
const tabHiddenFilters = filtersByTab?.find((tab) => tab.tabId === tabId)?.hiddenFilters ?? [];
|
|
125
|
-
const appliedFilters = getAppliedDashboardFilters(filters ?? [], tabHiddenFilters, true);
|
|
126
|
-
if (appliedFilters) {
|
|
127
|
-
acc[tabId] = appliedFilters;
|
|
128
|
-
}
|
|
129
|
-
return acc;
|
|
130
|
-
}, {})
|
|
131
|
-
: undefined;
|
|
132
|
-
const newVisibleFiltersByTab = getVisibleFiltersByFiltersByTab(newFiltersByTab, availableFiltersAsVisibleFiltersByTab, shouldStoreFilters);
|
|
133
|
-
// Sync to export definitions AND metadata
|
|
134
|
-
setEditedAutomation((s) => ({
|
|
135
|
-
...s,
|
|
136
|
-
exportDefinitions: s.exportDefinitions?.map((exportDefinition) => {
|
|
137
|
-
if (isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload)) {
|
|
138
|
-
return {
|
|
139
|
-
...exportDefinition,
|
|
140
|
-
requestPayload: {
|
|
141
|
-
...exportDefinition.requestPayload,
|
|
142
|
-
content: {
|
|
143
|
-
...exportDefinition.requestPayload.content,
|
|
144
|
-
filtersByTab: newEffectiveFiltersByTab,
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
return exportDefinition;
|
|
150
|
-
}),
|
|
151
|
-
metadata: {
|
|
152
|
-
...s.metadata,
|
|
153
|
-
visibleFiltersByTab: newVisibleFiltersByTab,
|
|
154
|
-
},
|
|
155
|
-
}));
|
|
156
|
-
}, [
|
|
157
|
-
setEditedAutomationFiltersByTab,
|
|
158
|
-
storeFilters,
|
|
159
|
-
setEditedAutomation,
|
|
160
|
-
availableFiltersAsVisibleFiltersByTab,
|
|
161
|
-
filtersByTab,
|
|
162
|
-
]);
|
|
32
|
+
applyFiltersByTabToDraft(newFiltersByTab, storeFiltersParam);
|
|
33
|
+
}, [setEditedAutomationFiltersByTab, applyFiltersByTabToDraft]);
|
|
163
34
|
const onApplyCurrentFilters = useCallback(() => {
|
|
164
35
|
// Widget schedules should never use per-tab filters, only dashboard schedules can have tabs
|
|
165
36
|
const filtersByTabForNewAutomation = widget
|
|
@@ -219,16 +90,3 @@ export function useScheduledEmailFiltersModel({ setEditedAutomation, scheduledEx
|
|
|
219
90
|
...parameters,
|
|
220
91
|
});
|
|
221
92
|
}
|
|
222
|
-
/**
|
|
223
|
-
* Returns the previous object while every member keeps its identity, so a caller can hold a whole
|
|
224
|
-
* model stable without naming its members. Preferred over `useMemo` here because the roster is the
|
|
225
|
-
* hook's return shape: a dependency array would have to restate all of it, and a missed entry would
|
|
226
|
-
* serve a stale member rather than fail loudly.
|
|
227
|
-
*/
|
|
228
|
-
function useShallowStable(value) {
|
|
229
|
-
const previous = useRef(value);
|
|
230
|
-
if (!shallowEqualObjects(previous.current, value)) {
|
|
231
|
-
previous.current = value;
|
|
232
|
-
}
|
|
233
|
-
return previous.current;
|
|
234
|
-
}
|
|
@@ -25,6 +25,10 @@ export declare function dashboardFilterToFilterContextItem(filter: IDashboardFil
|
|
|
25
25
|
* the localIdRefs become dangling. This function resolves them to display form identifierRefs.
|
|
26
26
|
*/
|
|
27
27
|
export declare function resolveFilterDimensionalityLocalRefs(filters: IFilter[], insight: IInsight | undefined): IFilter[];
|
|
28
|
+
/** A filter with no effect on a widget execution: all-time date, condition-less MVF, all-values attribute. */
|
|
29
|
+
export declare function isNoopExecutionFilter(filter: IFilter): boolean;
|
|
30
|
+
/** The FilterContextItem form of {@link isNoopExecutionFilter}. */
|
|
31
|
+
export declare function isNoopDashboardFilter(filter: FilterContextItem): boolean;
|
|
28
32
|
/**
|
|
29
33
|
* Matches all-time date filters that are *noop*, i.e. that have no effect on execution.
|
|
30
34
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/filters/conversions.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,OAAO,EACZ,KAAK,QAAQ,EAoChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEtF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,eAAO,MAAM,0BAA0B,oBAClB,iBAAiB,EAAE,GAAG,SAAS,0BACxB,wBAAwB,EAAE,GAAG,SAAS,iBAC/C,OAAO,KACvB,wBAAwB,EAAE,GAAG,SA+B/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iBAC1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,0BACrC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAAS,iBAC/D,OAAO,KACvB,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAmB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,8BACL,iBAAiB,EAAE,0BACtB,iBAAiB,EAAE,UACnC,uBAAuB,GAAG,SAAS,WAClC,QAAQ,GAAG,SAAS,sBACT,MAAM,GAAG,SAAS,wBACjB,OAAO,kBACb,OAAO,
|
|
1
|
+
{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/filters/conversions.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,OAAO,EACZ,KAAK,QAAQ,EAoChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEtF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,eAAO,MAAM,0BAA0B,oBAClB,iBAAiB,EAAE,GAAG,SAAS,0BACxB,wBAAwB,EAAE,GAAG,SAAS,iBAC/C,OAAO,KACvB,wBAAwB,EAAE,GAAG,SA+B/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,iBAC1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,0BACrC,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAAS,iBAC/D,OAAO,KACvB,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAmB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,8BACL,iBAAiB,EAAE,0BACtB,iBAAiB,EAAE,UACnC,uBAAuB,GAAG,SAAS,WAClC,QAAQ,GAAG,SAAS,sBACT,MAAM,GAAG,SAAS,wBACjB,OAAO,kBACb,OAAO,cA6BzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,8BACR,iBAAiB,EAAE,0BACtB,iBAAiB,EAAE,iBAC5B,OAAO,oCAWzB,CAAC;AAEF,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,OAAO,GACtB,iBAAiB,GAAG,SAAS,CA8E/B;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAChD,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,EAAE,QAAQ,GAAG,SAAS,GAC9B,OAAO,EAAE,CAiDX;AAyBD,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAW9D;AAED,mEAAmE;AACnE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAWxE;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CA0BhE"}
|