@gooddata/sdk-ui-dashboard 11.42.0 → 11.43.0-alpha.1
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 +128 -128
- package/esm/__version.d.ts +1 -1
- package/esm/__version.d.ts.map +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +3 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/model/commandHandlers/filterContext/dateFilter/removeDateFiltersHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/dateFilter/removeDateFiltersHandler.js +22 -4
- package/esm/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.js +3 -1
- package/esm/model/commandHandlers/scheduledEmail/csvRawExecutionDefinition.d.ts +2 -2
- package/esm/model/commandHandlers/scheduledEmail/csvRawExecutionDefinition.d.ts.map +1 -1
- package/esm/model/commandHandlers/scheduledEmail/csvRawExecutionDefinition.js +36 -3
- package/esm/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.js +3 -1
- package/esm/model/store/executionResults/executionResultsSelectors.d.ts +4 -0
- package/esm/model/store/executionResults/executionResultsSelectors.d.ts.map +1 -1
- package/esm/model/store/executionResults/executionResultsSelectors.js +4 -1
- package/esm/model/store/filtering/dashboardFilterSelectors.d.ts +1 -30
- package/esm/model/store/filtering/dashboardFilterSelectors.d.ts.map +1 -1
- package/esm/model/store/filtering/dashboardFilterSelectors.js +3 -0
- package/esm/model/store/filtering/types.d.ts +33 -0
- package/esm/model/store/filtering/types.d.ts.map +1 -0
- package/esm/model/store/filtering/types.js +2 -0
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.d.ts +14 -0
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js +35 -0
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +12 -0
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.js +37 -12
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +9 -3
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingManagementDialog/components/PauseAlertRunner.js +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.d.ts +3 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.js +110 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.d.ts +2 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.js +99 -0
- package/esm/presentation/automations/connectors/hooks/useWidgetAutomationFilters.d.ts +4 -0
- package/esm/presentation/automations/connectors/hooks/useWidgetAutomationFilters.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useWidgetAutomationFilters.js +46 -0
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts +42 -2
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +8 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/hooks/useWidgetAutomationFilters.d.ts +2 -3
- package/esm/presentation/automations/scheduledEmail/hooks/useWidgetAutomationFilters.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/hooks/useWidgetAutomationFilters.js +4 -45
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.js +9 -16
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.d.ts +2 -0
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.d.ts.map +1 -0
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.js +131 -0
- package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useAutomationVisibleFilters.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useAutomationVisibleFilters.js +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForExistingAutomation.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForExistingAutomation.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForExistingAutomation.js +4 -6
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForNewAutomation.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForNewAutomation.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForNewAutomation.js +3 -4
- package/esm/presentation/automations/shared/automationFilters/hooks/useValidateExistingAutomationFilters.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useValidateExistingAutomationFilters.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useValidateExistingAutomationFilters.js +4 -10
- package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.js +3 -28
- package/esm/presentation/automations/shared/automationFilters/useAutomationFiltersSelect.d.ts +2 -2
- package/esm/presentation/automations/shared/automationFilters/useAutomationFiltersSelect.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/useAutomationFiltersSelect.js +2 -5
- package/esm/presentation/automations/shared/automationFilters/utils.d.ts +1 -1
- package/esm/presentation/automations/shared/automationFilters/utils.d.ts.map +1 -1
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterConfigConverters.d.ts +10 -0
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterConfigConverters.d.ts.map +1 -0
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterConfigConverters.js +89 -0
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterOptionMapping.d.ts +34 -0
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterOptionMapping.d.ts.map +1 -0
- package/esm/presentation/automations/shared/dateFilterConfig/dateFilterOptionMapping.js +261 -0
- package/esm/presentation/automations/shared/dateFilterConfig/defaultConfig.d.ts +12 -0
- package/esm/presentation/automations/shared/dateFilterConfig/defaultConfig.d.ts.map +1 -0
- package/esm/presentation/automations/shared/dateFilterConfig/defaultConfig.js +437 -0
- package/esm/presentation/automations/shared/exportUtils/filterUtils.d.ts +3 -0
- package/esm/presentation/automations/shared/exportUtils/filterUtils.d.ts.map +1 -0
- package/esm/presentation/automations/shared/exportUtils/filterUtils.js +14 -0
- package/esm/presentation/automations/shared/hooks/useAttributeFilterDisplayFormFromMap.d.ts +3 -0
- package/esm/presentation/automations/shared/hooks/useAttributeFilterDisplayFormFromMap.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useAttributeFilterDisplayFormFromMap.js +7 -0
- package/esm/presentation/automations/shared/hooks/useCommonDateFilterTitle.d.ts +3 -0
- package/esm/presentation/automations/shared/hooks/useCommonDateFilterTitle.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useCommonDateFilterTitle.js +6 -0
- package/esm/presentation/automations/shared/hooks/useDateFiltersTitles.d.ts +4 -0
- package/esm/presentation/automations/shared/hooks/useDateFiltersTitles.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useDateFiltersTitles.js +19 -0
- package/esm/presentation/automations/shared/hooks/useFiltersNamings.d.ts +13 -0
- package/esm/presentation/automations/shared/hooks/useFiltersNamings.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useFiltersNamings.js +196 -0
- package/esm/presentation/automations/shared/utils/automationUtils.d.ts +24 -0
- package/esm/presentation/automations/shared/utils/automationUtils.d.ts.map +1 -0
- package/esm/presentation/automations/shared/utils/automationUtils.js +135 -0
- package/esm/presentation/automations/shared/utils/filterContextUtils.d.ts +4 -0
- package/esm/presentation/automations/shared/utils/filterContextUtils.d.ts.map +1 -0
- package/esm/presentation/automations/shared/utils/filterContextUtils.js +67 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFilterConfigurationState.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFilterConfigurationState.js +34 -16
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.js +23 -8
- package/esm/presentation/filterBar/attributeFilter/useDependentDateFilters.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/useDependentDateFilters.js +17 -6
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.js +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +11 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useCreateAlert.d.ts.map +1 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightWidgetAlerting.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightWidgetAlerting.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.d.ts.map +1 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useUpdateAlert.d.ts.map +1 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.d.ts +4 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.d.ts.map +1 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.js +46 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertsNew.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertsNew.js +1 -1
- package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/DashboardInsightMenuItemButton.d.ts.map +1 -1
- package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/DashboardInsightMenuItemButton.js +2 -2
- package/esm/presentation/widget/insightMenu/types.js +1 -1
- package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.d.ts.map +1 -1
- package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.js +1 -1
- package/esm/sdk-ui-dashboard.d.ts +11 -2
- package/esm/tsdoc-metadata.json +1 -1
- package/package.json +20 -20
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useCreateAlert.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.d.ts.map +0 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/hooks/useUpdateAlert.d.ts.map +0 -1
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useCreateAlert.d.ts +0 -0
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useCreateAlert.js +0 -0
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useSaveAlertToBackend.d.ts +0 -0
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useSaveAlertToBackend.js +0 -0
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useUpdateAlert.d.ts +0 -0
- /package/esm/presentation/{automations/_staging/alerting/DefaultAlertingDialog → widget/insight/configuration/InsightAlertConfig}/hooks/useUpdateAlert.js +0 -0
|
@@ -97,4 +97,18 @@ export declare const selectEffectiveDateFilterOptionsForTab: (tabLocalIdentifier
|
|
|
97
97
|
* @internal
|
|
98
98
|
*/
|
|
99
99
|
export declare const selectEffectiveDateFilterAvailableGranularitiesForTab: (tabLocalIdentifier: string) => DashboardSelector<DateFilterGranularity[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Returns effective date filter available granularities for all tabs as a map.
|
|
102
|
+
* Key is the tab local identifier; value is the array of available granularities.
|
|
103
|
+
*
|
|
104
|
+
* @internal
|
|
105
|
+
*/
|
|
106
|
+
export declare const selectEffectiveDateFilterGranularitiesPerTab: DashboardSelector<Record<string, DateFilterGranularity[]>>;
|
|
107
|
+
/**
|
|
108
|
+
* Returns effective date filter options for all tabs as a map.
|
|
109
|
+
* Key is the tab local identifier; value is the date filter options (undefined when no config exists for that tab).
|
|
110
|
+
*
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
export declare const selectEffectiveDateFilterOptionsPerTab: DashboardSelector<Record<string, IDateFilterOptionsByType | undefined>>;
|
|
100
114
|
//# sourceMappingURL=dateFilterConfigSelectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateFilterConfigSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMxD;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAWxD,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,0BAA0B,GAAG,SAAS,CAajG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,iBAAiB,CAYhF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,EAAE,iBAAiB,CAAC,wBAAwB,CAIxF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,+CAA+C,EAAE,iBAAiB,CAAC,qBAAqB,EAAE,CAKlG,CAAC;AAmBN;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAchF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,6BAA6B,CAU1F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,CAI/F,CAAC;AAEP;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,EAAE,CAChD,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,iBAAiB,GAAG,SAAS,CAKnD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,EAAE,CACjD,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAS1D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qDAAqD,EAAE,CAChE,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,qBAAqB,EAAE,CAM7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"dateFilterConfigSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMxD;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAWxD,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,0BAA0B,GAAG,SAAS,CAajG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,iBAAiB,CAYhF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,EAAE,iBAAiB,CAAC,wBAAwB,CAIxF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,+CAA+C,EAAE,iBAAiB,CAAC,qBAAqB,EAAE,CAKlG,CAAC;AAmBN;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAchF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,iBAAiB,CAAC,6BAA6B,CAU1F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,CAI/F,CAAC;AAEP;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,EAAE,CAChD,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,iBAAiB,GAAG,SAAS,CAKnD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,EAAE,CACjD,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAS1D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qDAAqD,EAAE,CAChE,kBAAkB,EAAE,MAAM,KACzB,iBAAiB,CAAC,qBAAqB,EAAE,CAM7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,4CAA4C,EAAE,iBAAiB,CACxE,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAWzC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,EAAE,iBAAiB,CAClE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAYtD,CAAC"}
|
|
@@ -150,3 +150,38 @@ export const selectEffectiveDateFilterOptionsForTab = createMemoizedSelector((ta
|
|
|
150
150
|
* @internal
|
|
151
151
|
*/
|
|
152
152
|
export const selectEffectiveDateFilterAvailableGranularitiesForTab = createMemoizedSelector((tabLocalIdentifier) => createSelector(selectEffectiveDateFilterConfigForTab(tabLocalIdentifier), (effectiveDateFilterConfig) => effectiveDateFilterConfig?.relativeForm?.availableGranularities ?? []));
|
|
153
|
+
/**
|
|
154
|
+
* Returns effective date filter available granularities for all tabs as a map.
|
|
155
|
+
* Key is the tab local identifier; value is the array of available granularities.
|
|
156
|
+
*
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
export const selectEffectiveDateFilterGranularitiesPerTab = createSelector(selectTabs, (tabs) => {
|
|
160
|
+
if (!tabs?.length) {
|
|
161
|
+
return {};
|
|
162
|
+
}
|
|
163
|
+
return tabs.reduce((acc, tab) => {
|
|
164
|
+
const identifier = tab.localIdentifier ?? DEFAULT_TAB_ID;
|
|
165
|
+
acc[identifier] =
|
|
166
|
+
tab.dateFilterConfig?.effectiveDateFilterConfig?.relativeForm?.availableGranularities ?? [];
|
|
167
|
+
return acc;
|
|
168
|
+
}, {});
|
|
169
|
+
});
|
|
170
|
+
/**
|
|
171
|
+
* Returns effective date filter options for all tabs as a map.
|
|
172
|
+
* Key is the tab local identifier; value is the date filter options (undefined when no config exists for that tab).
|
|
173
|
+
*
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
export const selectEffectiveDateFilterOptionsPerTab = createSelector(selectTabs, (tabs) => {
|
|
177
|
+
if (!tabs?.length) {
|
|
178
|
+
return {};
|
|
179
|
+
}
|
|
180
|
+
return tabs.reduce((acc, tab) => {
|
|
181
|
+
const identifier = tab.localIdentifier ?? DEFAULT_TAB_ID;
|
|
182
|
+
acc[identifier] = tab.dateFilterConfig?.effectiveDateFilterConfig
|
|
183
|
+
? convertDateFilterConfigToDateFilterOptions(tab.dateFilterConfig.effectiveDateFilterConfig)
|
|
184
|
+
: undefined;
|
|
185
|
+
return acc;
|
|
186
|
+
}, {});
|
|
187
|
+
});
|
|
@@ -107,6 +107,18 @@ export declare const selectHasAnyResettableParameterOnActiveTab: DashboardSelect
|
|
|
107
107
|
* @alpha
|
|
108
108
|
*/
|
|
109
109
|
export declare const selectEffectiveParameterValuesForWidget: (ref: ObjRef | undefined) => DashboardSelector<IInsightParameterValue[]>;
|
|
110
|
+
/**
|
|
111
|
+
* The insight half of {@link selectEffectiveParameterValuesForWidget}: insight-authored values for
|
|
112
|
+
* the metric-referenced refs, flag-gated and ref-filtered, with no dashboard chip overrides.
|
|
113
|
+
*
|
|
114
|
+
* @remarks
|
|
115
|
+
* Raw CSV export inlines a resolved AFM, so it must carry parameters explicitly rather than letting
|
|
116
|
+
* the backend re-resolve them. This is the base; the dialog's `content.parametersByTab` overrides go
|
|
117
|
+
* on top.
|
|
118
|
+
*
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
export declare const selectReferencedInsightParameterValuesForWidget: (ref: ObjRef | undefined) => DashboardSelector<IInsightParameterValue[]>;
|
|
110
122
|
/**
|
|
111
123
|
* Returns the effective dashboard parameters (persisted shape with any `runtimeOverride` folded
|
|
112
124
|
* into `value`) held by the widget's owning tab.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parametersSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/parameters/parametersSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,OAAO,EACH,KAAK,wBAAwB,EAGhC,MAAM,sBAAsB,CAAC;AAkB9B;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAG9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAG/E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,CAGzF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,SAAS,CAMtF,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,CAC7C,GAAG,EAAE,MAAM,KACV,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAI1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAGlG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAa7F,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kCAAkC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CA4BnG,CAAC;AA6BN;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAchE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,CAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EAAE,iBAAiB,CAAC,OAAO,CAGjF,CAAC;
|
|
1
|
+
{"version":3,"file":"parametersSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/parameters/parametersSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,OAAO,EACH,KAAK,wBAAwB,EAGhC,MAAM,sBAAsB,CAAC;AAkB9B;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAG9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAG/E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,CAGzF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,SAAS,CAMtF,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,CAC7C,GAAG,EAAE,MAAM,KACV,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAI1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAGlG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAa7F,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kCAAkC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CA4BnG,CAAC;AA6BN;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAchE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,CAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EAAE,iBAAiB,CAAC,OAAO,CAGjF,CAAC;AA6BF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uCAAuC,EAAE,CAClD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CA6B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+CAA+C,EAAE,CAC1D,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CAW9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,EAAE,CACtD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,mBAAmB,EAAE,CAe3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,+BAA+B,EAAE,CAC1C,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,KAC9B,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAGX,CAAC"}
|
|
@@ -171,6 +171,21 @@ export const selectActiveTabParameterResetTargets = createSelector(selectDashboa
|
|
|
171
171
|
* @alpha
|
|
172
172
|
*/
|
|
173
173
|
export const selectHasAnyResettableParameterOnActiveTab = createSelector(selectActiveTabParameterResetTargets, (targets) => targets.length > 0);
|
|
174
|
+
// Shared base for the two parameter selectors below — the widget's insight, its metric-referenced
|
|
175
|
+
// parameter refs, and the owning tab's entries. Memoized, so both share one computation per ref.
|
|
176
|
+
const selectWidgetInsightAndReferencedRefs = createMemoizedSelector((ref) => createSelector(selectAllTabsInsightWidgetContexts, selectInsightsMap, selectEnableParameters, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, (contexts, insights, isEnabled, measureParameters, measureParametersStatus) => {
|
|
177
|
+
if (!isEnabled || !ref || measureParametersStatus !== "loaded") {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
const context = contexts.find((ctx) => areObjRefsEqual(ctx.widget.ref, ref));
|
|
181
|
+
const insight = context && insights.get(context.widget.insight);
|
|
182
|
+
if (!context || !insight) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
const referencedRefs = new Set(collectReferencedParameterRefs(insight, measureParameters).map(objRefToString));
|
|
186
|
+
const entries = context.tab.parameters?.parameters ?? parametersInitialState.parameters;
|
|
187
|
+
return { insight, referencedRefs, entries };
|
|
188
|
+
}));
|
|
174
189
|
/**
|
|
175
190
|
* Returns the parameter values to inject into the widget's `IExecutionConfig.parameterValues`.
|
|
176
191
|
*
|
|
@@ -188,20 +203,11 @@ export const selectHasAnyResettableParameterOnActiveTab = createSelector(selectA
|
|
|
188
203
|
*
|
|
189
204
|
* @alpha
|
|
190
205
|
*/
|
|
191
|
-
export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((ref) => createSelector(
|
|
192
|
-
if (!
|
|
206
|
+
export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((ref) => createSelector(selectWidgetInsightAndReferencedRefs(ref), (resolved) => {
|
|
207
|
+
if (!resolved) {
|
|
193
208
|
return EMPTY_PARAMETER_VALUES;
|
|
194
209
|
}
|
|
195
|
-
const
|
|
196
|
-
if (!context) {
|
|
197
|
-
return EMPTY_PARAMETER_VALUES;
|
|
198
|
-
}
|
|
199
|
-
const insight = insights.get(context.widget.insight);
|
|
200
|
-
if (!insight) {
|
|
201
|
-
return EMPTY_PARAMETER_VALUES;
|
|
202
|
-
}
|
|
203
|
-
const referencedRefs = new Set(collectReferencedParameterRefs(insight, measureParameters).map(objRefToString));
|
|
204
|
-
const entries = context.tab.parameters?.parameters ?? parametersInitialState.parameters;
|
|
210
|
+
const { insight, referencedRefs, entries } = resolved;
|
|
205
211
|
const result = [];
|
|
206
212
|
const seen = new Set();
|
|
207
213
|
for (const entry of entries) {
|
|
@@ -225,6 +231,25 @@ export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((r
|
|
|
225
231
|
}
|
|
226
232
|
return result.length === 0 ? EMPTY_PARAMETER_VALUES : result;
|
|
227
233
|
}));
|
|
234
|
+
/**
|
|
235
|
+
* The insight half of {@link selectEffectiveParameterValuesForWidget}: insight-authored values for
|
|
236
|
+
* the metric-referenced refs, flag-gated and ref-filtered, with no dashboard chip overrides.
|
|
237
|
+
*
|
|
238
|
+
* @remarks
|
|
239
|
+
* Raw CSV export inlines a resolved AFM, so it must carry parameters explicitly rather than letting
|
|
240
|
+
* the backend re-resolve them. This is the base; the dialog's `content.parametersByTab` overrides go
|
|
241
|
+
* on top.
|
|
242
|
+
*
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
245
|
+
export const selectReferencedInsightParameterValuesForWidget = createMemoizedSelector((ref) => createSelector(selectWidgetInsightAndReferencedRefs(ref), (resolved) => {
|
|
246
|
+
if (!resolved) {
|
|
247
|
+
return EMPTY_PARAMETER_VALUES;
|
|
248
|
+
}
|
|
249
|
+
const { insight, referencedRefs } = resolved;
|
|
250
|
+
const result = insightParameters(insight).filter((parameter) => referencedRefs.has(objRefToString(parameter.ref)));
|
|
251
|
+
return result.length === 0 ? EMPTY_PARAMETER_VALUES : result;
|
|
252
|
+
}));
|
|
228
253
|
/**
|
|
229
254
|
* Returns the effective dashboard parameters (persisted shape with any `runtimeOverride` folded
|
|
230
255
|
* into `value`) held by the widget's owning tab.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"AA2DA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2BxD,wBAAgB,sBAAsB,CAAC,EACnC,WAAW,EACX,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EAChB,EAAE,oBAAoB,2CAglBtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,2CAMhE"}
|
|
@@ -14,6 +14,9 @@ import { selectExecutionTimestamp } from "../../../../../model/store/ui/uiSelect
|
|
|
14
14
|
import { getWidgetTitle } from "../../../../../model/utils/dashboardItemUtils.js";
|
|
15
15
|
import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../../constants/zIndex.js";
|
|
16
16
|
import { IntlWrapper } from "../../../../localization/IntlWrapper.js";
|
|
17
|
+
import { useSaveAlertToBackend } from "../../../../widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.js";
|
|
18
|
+
import { useBuildAutomationsContext } from "../../../connectors/hooks/useBuildAutomationsContext.js";
|
|
19
|
+
import { AutomationsContextProvider } from "../../../contexts/AutomationsContext.js";
|
|
17
20
|
import { RecipientsSelect } from "../../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js";
|
|
18
21
|
import { ApplyCurrentFiltersConfirmDialog } from "../../../shared/automationFilters/components/ApplyLatestFiltersConfirmDialog.js";
|
|
19
22
|
import { AutomationFiltersSelect } from "../../../shared/automationFilters/components/AutomationFiltersSelect.js";
|
|
@@ -36,7 +39,6 @@ import { AlertTriggerModeSelect } from "./components/AlertTriggerModeSelect.js";
|
|
|
36
39
|
import { ALERTING_DIALOG_ID } from "./constants.js";
|
|
37
40
|
import { DefaultLoadingAlertingDialog } from "./DefaultLoadingAlertingDialog.js";
|
|
38
41
|
import { useEditAlert } from "./hooks/useEditAlert.js";
|
|
39
|
-
import { useSaveAlertToBackend } from "./hooks/useSaveAlertToBackend.js";
|
|
40
42
|
import { getDescription, getValueSuffix } from "./utils/getters.js";
|
|
41
43
|
import { isAnomalyDetection, isChangeOrDifferenceOperator } from "./utils/guards.js";
|
|
42
44
|
import { isMobileView } from "./utils/responsive.js";
|
|
@@ -202,11 +204,15 @@ export function AlertingDialogRenderer({ alertToEdit, users, usersError, notific
|
|
|
202
204
|
*/
|
|
203
205
|
export function DefaultAlertingDialog(props) {
|
|
204
206
|
const { isLoading, onCancel, alertToEdit } = props;
|
|
205
|
-
const locale = useDashboardSelector(selectLocale);
|
|
206
207
|
if (isLoading) {
|
|
207
208
|
return _jsx(DefaultLoadingAlertingDialog, { onCancel: onCancel, alertToEdit: alertToEdit });
|
|
208
209
|
}
|
|
209
|
-
return
|
|
210
|
+
return _jsx(DefaultAlertingDialogBody, { ...props });
|
|
211
|
+
}
|
|
212
|
+
function DefaultAlertingDialogBody(props) {
|
|
213
|
+
const locale = useDashboardSelector(selectLocale);
|
|
214
|
+
const automationsContext = useBuildAutomationsContext();
|
|
215
|
+
return (_jsx(AutomationsContextProvider, { value: automationsContext, children: _jsx(IntlWrapper, { locale: locale, children: _jsx(AlertingDialogRenderer, { ...props }) }) }));
|
|
210
216
|
}
|
|
211
217
|
function useDefaultAlertingDialogData() {
|
|
212
218
|
const maxAutomationsRecipients = useDashboardSelector(selectMaxAutomationRecipients);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useEffect } from "react";
|
|
3
3
|
import { convertError } from "@gooddata/sdk-ui";
|
|
4
|
-
import { useSaveAlertToBackend } from "
|
|
4
|
+
import { useSaveAlertToBackend } from "../../../../../widget/insight/configuration/InsightAlertConfig/hooks/useSaveAlertToBackend.js";
|
|
5
5
|
export function PauseAlertRunner({ alert, pause, onSuccess, onError }) {
|
|
6
6
|
const { handlePauseAlert, handleResumeAlert } = useSaveAlertToBackend({
|
|
7
7
|
onPauseSuccess: () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuildAutomationsContext.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EACR,wBAAwB,EAE3B,MAAM,sCAAsC,CAAC;AAE9C,wBAAgB,0BAA0B,IAAI,wBAAwB,CA2HrE"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
4
|
+
import { selectAllCatalogAttributesMap, selectAllCatalogDisplayFormsMap, selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogMeasures, } from "../../../../model/store/catalog/catalogSelectors.js";
|
|
5
|
+
import { selectEnableNewScheduledExport, selectLocale, selectSeparators, selectSettings, } from "../../../../model/store/config/configSelectors.js";
|
|
6
|
+
import { selectAutomationAvailableDashboardFilters, selectAutomationCommonDateFilterId, selectAutomationDefaultSelectedFilters, selectAutomationFiltersByTab, selectDashboardFiltersWithoutCrossFiltering, selectDashboardHiddenFilters, selectDashboardLockedFilters, } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
7
|
+
import { selectPersistedDashboardFilterContextDateFilterConfig } from "../../../../model/store/meta/metaSelectors.js";
|
|
8
|
+
import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
9
|
+
import { selectDateFilterConfigOverridesByTab, selectEffectiveDateFilterAvailableGranularities, selectEffectiveDateFilterGranularitiesPerTab, selectEffectiveDateFilterOptions, selectEffectiveDateFilterOptionsPerTab, } from "../../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
|
|
10
|
+
import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
|
|
11
|
+
import { selectAttributeFilterDisplayFormsMap } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
12
|
+
import { selectMeasureValueFilterConfigsOverrides, selectMeasureValueFilterConfigsOverridesByTab, } from "../../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
|
|
13
|
+
export function useBuildAutomationsContext() {
|
|
14
|
+
const locale = useDashboardSelector(selectLocale);
|
|
15
|
+
const separators = useDashboardSelector(selectSeparators);
|
|
16
|
+
const enableNewScheduledExport = useDashboardSelector(selectEnableNewScheduledExport);
|
|
17
|
+
const settings = useDashboardSelector(selectSettings);
|
|
18
|
+
const catalogAttributes = useDashboardSelector(selectCatalogAttributes);
|
|
19
|
+
const catalogDateDatasets = useDashboardSelector(selectCatalogDateDatasets);
|
|
20
|
+
const availableGranularities = useDashboardSelector(selectEffectiveDateFilterAvailableGranularities);
|
|
21
|
+
const granularitiesPerTab = useDashboardSelector(selectEffectiveDateFilterGranularitiesPerTab);
|
|
22
|
+
const dateFilterOptions = useDashboardSelector(selectEffectiveDateFilterOptions);
|
|
23
|
+
const optionsPerTab = useDashboardSelector(selectEffectiveDateFilterOptionsPerTab);
|
|
24
|
+
const catalogMeasures = useDashboardSelector(selectCatalogMeasures);
|
|
25
|
+
const allCatalogAttributesMap = useDashboardSelector(selectAllCatalogAttributesMap);
|
|
26
|
+
const catalogDisplayFormsMap = useDashboardSelector(selectAllCatalogDisplayFormsMap);
|
|
27
|
+
const attrFilterDisplayFormsMap = useDashboardSelector(selectAttributeFilterDisplayFormsMap);
|
|
28
|
+
const attributeFilterConfigs = useDashboardSelector(selectAttributeFilterConfigsOverrides);
|
|
29
|
+
const attributeFilterConfigsByTab = useDashboardSelector(selectAttributeFilterConfigsOverridesByTab);
|
|
30
|
+
const attributeFilterSelectionTypeMap = useDashboardSelector(selectAttributeFilterConfigsSelectionTypeMap);
|
|
31
|
+
const attributeFilterSelectionTypeMapByTab = useDashboardSelector(selectAttributeFilterConfigsSelectionTypeMapByTab);
|
|
32
|
+
const dateFilterConfigs = useDashboardSelector(selectDateFilterConfigsOverrides);
|
|
33
|
+
const dateFilterConfigsByTab = useDashboardSelector(selectDateFilterConfigsOverridesByTab);
|
|
34
|
+
const dateFilterConfigOverridesByTab = useDashboardSelector(selectDateFilterConfigOverridesByTab);
|
|
35
|
+
const measureValueFilterConfigs = useDashboardSelector(selectMeasureValueFilterConfigsOverrides);
|
|
36
|
+
const measureValueFilterConfigsByTab = useDashboardSelector(selectMeasureValueFilterConfigsOverridesByTab);
|
|
37
|
+
const dateFilterContextConfig = useDashboardSelector(selectPersistedDashboardFilterContextDateFilterConfig);
|
|
38
|
+
const commonDateFilterId = useDashboardSelector(selectAutomationCommonDateFilterId);
|
|
39
|
+
const lockedFilters = useDashboardSelector(selectDashboardLockedFilters);
|
|
40
|
+
const hiddenFilters = useDashboardSelector(selectDashboardHiddenFilters);
|
|
41
|
+
const availableFilters = useDashboardSelector(selectDashboardFiltersWithoutCrossFiltering);
|
|
42
|
+
const automationFiltersByTab = useDashboardSelector(selectAutomationFiltersByTab);
|
|
43
|
+
const defaultSelectedFilters = useDashboardSelector(selectAutomationDefaultSelectedFilters);
|
|
44
|
+
const automationAvailableFilters = useDashboardSelector(selectAutomationAvailableDashboardFilters);
|
|
45
|
+
const getCatalogAttributeByRef = useCallback((ref) => allCatalogAttributesMap.get(ref), [allCatalogAttributesMap]);
|
|
46
|
+
const getAttributeFilterDisplayForm = useCallback((displayForm) => attrFilterDisplayFormsMap.get(displayForm) ?? catalogDisplayFormsMap.get(displayForm), [attrFilterDisplayFormsMap, catalogDisplayFormsMap]);
|
|
47
|
+
const dateFilterConfig = useMemo(() => ({
|
|
48
|
+
availableGranularities,
|
|
49
|
+
dateFilterOptions,
|
|
50
|
+
getGranularitiesForTab: (tabId) => granularitiesPerTab[tabId] ?? [],
|
|
51
|
+
getOptionsForTab: (tabId) => optionsPerTab[tabId],
|
|
52
|
+
}), [availableGranularities, dateFilterOptions, granularitiesPerTab, optionsPerTab]);
|
|
53
|
+
return useMemo(() => ({
|
|
54
|
+
locale,
|
|
55
|
+
separators,
|
|
56
|
+
settings,
|
|
57
|
+
enableNewScheduledExport,
|
|
58
|
+
catalogAttributes,
|
|
59
|
+
catalogDateDatasets,
|
|
60
|
+
dateFilterConfig,
|
|
61
|
+
catalogMeasures,
|
|
62
|
+
attributeFilterConfigs,
|
|
63
|
+
attributeFilterConfigsByTab,
|
|
64
|
+
attributeFilterSelectionTypeMap,
|
|
65
|
+
attributeFilterSelectionTypeMapByTab,
|
|
66
|
+
dateFilterConfigs,
|
|
67
|
+
dateFilterConfigsByTab,
|
|
68
|
+
dateFilterConfigOverridesByTab,
|
|
69
|
+
measureValueFilterConfigs,
|
|
70
|
+
measureValueFilterConfigsByTab,
|
|
71
|
+
dateFilterContextConfig,
|
|
72
|
+
commonDateFilterId,
|
|
73
|
+
lockedFilters,
|
|
74
|
+
hiddenFilters,
|
|
75
|
+
availableFilters,
|
|
76
|
+
automationFiltersByTab,
|
|
77
|
+
defaultSelectedFilters,
|
|
78
|
+
automationAvailableFilters,
|
|
79
|
+
getCatalogAttributeByRef,
|
|
80
|
+
getAttributeFilterDisplayForm,
|
|
81
|
+
}), [
|
|
82
|
+
locale,
|
|
83
|
+
separators,
|
|
84
|
+
settings,
|
|
85
|
+
enableNewScheduledExport,
|
|
86
|
+
catalogAttributes,
|
|
87
|
+
catalogDateDatasets,
|
|
88
|
+
dateFilterConfig,
|
|
89
|
+
catalogMeasures,
|
|
90
|
+
attributeFilterConfigs,
|
|
91
|
+
attributeFilterConfigsByTab,
|
|
92
|
+
attributeFilterSelectionTypeMap,
|
|
93
|
+
attributeFilterSelectionTypeMapByTab,
|
|
94
|
+
dateFilterConfigs,
|
|
95
|
+
dateFilterConfigsByTab,
|
|
96
|
+
dateFilterConfigOverridesByTab,
|
|
97
|
+
measureValueFilterConfigs,
|
|
98
|
+
measureValueFilterConfigsByTab,
|
|
99
|
+
dateFilterContextConfig,
|
|
100
|
+
commonDateFilterId,
|
|
101
|
+
lockedFilters,
|
|
102
|
+
hiddenFilters,
|
|
103
|
+
availableFilters,
|
|
104
|
+
automationFiltersByTab,
|
|
105
|
+
defaultSelectedFilters,
|
|
106
|
+
automationAvailableFilters,
|
|
107
|
+
getCatalogAttributeByRef,
|
|
108
|
+
getAttributeFilterDisplayForm,
|
|
109
|
+
]);
|
|
110
|
+
}
|
package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuildAutomationsContext.test.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
const selectors = vi.hoisted(() => {
|
|
5
|
+
const availableGranularities = ["GDC.time.date"];
|
|
6
|
+
const dateFilterOptions = {
|
|
7
|
+
allTime: {
|
|
8
|
+
localIdentifier: "allTime",
|
|
9
|
+
type: "allTime",
|
|
10
|
+
name: "All time",
|
|
11
|
+
visible: true,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
const granularitiesPerTab = {
|
|
15
|
+
tab1: ["GDC.time.month"],
|
|
16
|
+
};
|
|
17
|
+
const optionsPerTab = {
|
|
18
|
+
tab1: {
|
|
19
|
+
relativeForm: {
|
|
20
|
+
fromLimit: -30,
|
|
21
|
+
toLimit: 0,
|
|
22
|
+
localIdentifier: "relative",
|
|
23
|
+
type: "relativeForm",
|
|
24
|
+
name: "Relative",
|
|
25
|
+
visible: true,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
availableGranularities,
|
|
31
|
+
dateFilterOptions,
|
|
32
|
+
granularitiesPerTab,
|
|
33
|
+
optionsPerTab,
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
vi.mock("../../../../model/react/DashboardStoreProvider.js", () => ({
|
|
37
|
+
useDashboardSelector: vi.fn((selector) => selector()),
|
|
38
|
+
}));
|
|
39
|
+
vi.mock("../../../../model/store/catalog/catalogSelectors.js", () => ({
|
|
40
|
+
selectAllCatalogAttributesMap: () => new Map(),
|
|
41
|
+
selectAllCatalogDisplayFormsMap: () => new Map(),
|
|
42
|
+
selectCatalogAttributes: () => [],
|
|
43
|
+
selectCatalogDateDatasets: () => [],
|
|
44
|
+
selectCatalogMeasures: () => [],
|
|
45
|
+
}));
|
|
46
|
+
vi.mock("../../../../model/store/config/configSelectors.js", () => ({
|
|
47
|
+
selectEnableNewScheduledExport: () => false,
|
|
48
|
+
selectLocale: () => "en-US",
|
|
49
|
+
selectSeparators: () => ({ decimal: ".", thousand: "," }),
|
|
50
|
+
selectSettings: () => undefined,
|
|
51
|
+
}));
|
|
52
|
+
vi.mock("../../../../model/store/filtering/dashboardFilterSelectors.js", () => ({
|
|
53
|
+
selectAutomationAvailableDashboardFilters: () => [],
|
|
54
|
+
selectAutomationCommonDateFilterId: () => undefined,
|
|
55
|
+
selectAutomationDefaultSelectedFilters: () => [],
|
|
56
|
+
selectAutomationFiltersByTab: () => [],
|
|
57
|
+
selectDashboardFiltersWithoutCrossFiltering: () => [],
|
|
58
|
+
selectDashboardHiddenFilters: () => [],
|
|
59
|
+
selectDashboardLockedFilters: () => [],
|
|
60
|
+
}));
|
|
61
|
+
vi.mock("../../../../model/store/meta/metaSelectors.js", () => ({
|
|
62
|
+
selectPersistedDashboardFilterContextDateFilterConfig: () => undefined,
|
|
63
|
+
}));
|
|
64
|
+
vi.mock("../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js", () => ({
|
|
65
|
+
selectAttributeFilterConfigsOverrides: () => [],
|
|
66
|
+
selectAttributeFilterConfigsOverridesByTab: () => ({}),
|
|
67
|
+
selectAttributeFilterConfigsSelectionTypeMap: () => new Map(),
|
|
68
|
+
selectAttributeFilterConfigsSelectionTypeMapByTab: () => ({}),
|
|
69
|
+
}));
|
|
70
|
+
vi.mock("../../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js", () => ({
|
|
71
|
+
selectDateFilterConfigOverridesByTab: () => ({}),
|
|
72
|
+
selectEffectiveDateFilterAvailableGranularities: () => selectors.availableGranularities,
|
|
73
|
+
selectEffectiveDateFilterGranularitiesPerTab: () => selectors.granularitiesPerTab,
|
|
74
|
+
selectEffectiveDateFilterOptions: () => selectors.dateFilterOptions,
|
|
75
|
+
selectEffectiveDateFilterOptionsPerTab: () => selectors.optionsPerTab,
|
|
76
|
+
}));
|
|
77
|
+
vi.mock("../../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js", () => ({
|
|
78
|
+
selectDateFilterConfigsOverrides: () => [],
|
|
79
|
+
selectDateFilterConfigsOverridesByTab: () => ({}),
|
|
80
|
+
}));
|
|
81
|
+
vi.mock("../../../../model/store/tabs/filterContext/filterContextSelectors.js", () => ({
|
|
82
|
+
selectAttributeFilterDisplayFormsMap: () => new Map(),
|
|
83
|
+
}));
|
|
84
|
+
vi.mock("../../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js", () => ({
|
|
85
|
+
selectMeasureValueFilterConfigsOverrides: () => [],
|
|
86
|
+
selectMeasureValueFilterConfigsOverridesByTab: () => ({}),
|
|
87
|
+
}));
|
|
88
|
+
import { useBuildAutomationsContext } from "./useBuildAutomationsContext.js";
|
|
89
|
+
describe("useBuildAutomationsContext", () => {
|
|
90
|
+
it("preserves per-tab date filter configuration in the automations context bridge", () => {
|
|
91
|
+
const { result } = renderHook(() => useBuildAutomationsContext());
|
|
92
|
+
expect(result.current.dateFilterConfig.availableGranularities).toEqual(selectors.availableGranularities);
|
|
93
|
+
expect(result.current.dateFilterConfig.dateFilterOptions).toEqual(selectors.dateFilterOptions);
|
|
94
|
+
expect(result.current.dateFilterConfig.getGranularitiesForTab("tab1")).toEqual(selectors.granularitiesPerTab["tab1"]);
|
|
95
|
+
expect(result.current.dateFilterConfig.getOptionsForTab("tab1")).toEqual(selectors.optionsPerTab["tab1"]);
|
|
96
|
+
expect(result.current.dateFilterConfig.getGranularitiesForTab("missing-tab")).toEqual([]);
|
|
97
|
+
expect(result.current.dateFilterConfig.getOptionsForTab("missing-tab")).toBeUndefined();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type IFilter, type IInsightDefinition } from "@gooddata/sdk-model";
|
|
2
|
+
import { type FilterableDashboardWidget } from "../../../../model/types/layoutTypes.js";
|
|
3
|
+
export declare function useWidgetAutomationFilters(widget?: FilterableDashboardWidget, insight?: IInsightDefinition): import("../../../../index.js").QueryProcessingState<IFilter[]>;
|
|
4
|
+
//# sourceMappingURL=useWidgetAutomationFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWidgetAutomationFilters.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/connectors/hooks/useWidgetAutomationFilters.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,kBAAkB,EAK1B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,kBAAkB,kEAmB1G"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { filterIsEmpty, filterLocalIdentifier, isAttributeFilter, isNoopAllTimeDateFilter, } from "@gooddata/sdk-model";
|
|
4
|
+
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
5
|
+
import { useWidgetFilters } from "../../../../model/react/useWidgetFilters.js";
|
|
6
|
+
import { selectCrossFilteringItems } from "../../../../model/store/drill/drillSelectors.js";
|
|
7
|
+
export function useWidgetAutomationFilters(widget, insight) {
|
|
8
|
+
const widgetFiltersQuery = useWidgetFilters(widget, insight);
|
|
9
|
+
const crossFilteringItems = useDashboardSelector(selectCrossFilteringItems);
|
|
10
|
+
return useMemo(() => {
|
|
11
|
+
const { result: widgetFilters, status: widgetFiltersStatus } = widgetFiltersQuery;
|
|
12
|
+
const sanitizedWidgetFilters = widgetFilters
|
|
13
|
+
? sanitizeWidgetFilters(widgetFilters, crossFilteringItems)
|
|
14
|
+
: undefined;
|
|
15
|
+
if (widgetFiltersStatus === "success" && sanitizedWidgetFilters) {
|
|
16
|
+
return {
|
|
17
|
+
...widgetFiltersQuery,
|
|
18
|
+
result: sanitizedWidgetFilters,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return widgetFiltersQuery;
|
|
22
|
+
}, [crossFilteringItems, widgetFiltersQuery]);
|
|
23
|
+
}
|
|
24
|
+
function sanitizeWidgetFilters(filters, crossFilteringItems) {
|
|
25
|
+
const withoutCrossFiltering = removeCrossFilteringFilters(filters, crossFilteringItems);
|
|
26
|
+
const withoutAllTimeDateFilters = removeAllTimeDateFilters(withoutCrossFiltering);
|
|
27
|
+
return removeEmptyAttributeFilters(withoutAllTimeDateFilters);
|
|
28
|
+
}
|
|
29
|
+
function removeCrossFilteringFilters(filters, crossFilteringItems) {
|
|
30
|
+
const crossFilteringFilterLocalIdentifiers = new Set(crossFilteringItems.flatMap((c) => c.filterLocalIdentifiers));
|
|
31
|
+
return filters.filter((filter) => {
|
|
32
|
+
const filterLocalId = filterLocalIdentifier(filter);
|
|
33
|
+
return filterLocalId ? !crossFilteringFilterLocalIdentifiers.has(filterLocalId) : true;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function removeEmptyAttributeFilters(filters) {
|
|
37
|
+
return filters.filter((filter) => {
|
|
38
|
+
if (isAttributeFilter(filter)) {
|
|
39
|
+
return !filterIsEmpty(filter);
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function removeAllTimeDateFilters(filters) {
|
|
45
|
+
return filters.filter((filter) => !isNoopAllTimeDateFilter(filter));
|
|
46
|
+
}
|
|
@@ -1,9 +1,49 @@
|
|
|
1
|
+
import type { DashboardAttributeFilterSelectionType, DateFilterGranularity, FilterContextItem, IAttributeDisplayFormMetadataObject, ICatalogAttribute, ICatalogDateAttribute, ICatalogDateDataset, ICatalogMeasure, IDashboardAttributeFilterConfig, IDashboardDateFilterConfig, IDashboardDateFilterConfigItem, IDashboardMeasureValueFilterConfig, ISeparators, ISettings, ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import type { ILocale } from "@gooddata/sdk-ui";
|
|
3
|
+
import type { IDateFilterOptionsByType } from "@gooddata/sdk-ui-filters";
|
|
4
|
+
import type { IAutomationFiltersTab } from "../../../model/store/filtering/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Date filter configuration provided by the dashboard connector so that AutomationDateFilter
|
|
7
|
+
* does not need to read dashboard selectors directly.
|
|
8
|
+
*/
|
|
9
|
+
export interface IAutomationsDateFilterConfig {
|
|
10
|
+
availableGranularities: DateFilterGranularity[];
|
|
11
|
+
dateFilterOptions: IDateFilterOptionsByType;
|
|
12
|
+
getGranularitiesForTab: (tabId: string) => DateFilterGranularity[];
|
|
13
|
+
getOptionsForTab: (tabId: string) => IDateFilterOptionsByType | undefined;
|
|
14
|
+
}
|
|
1
15
|
/**
|
|
2
16
|
* Main context shared across all automation dialogs.
|
|
3
|
-
*
|
|
4
|
-
* data is shared across all automation dialogs.
|
|
17
|
+
* Only fields actively consumed by migrated leaves are listed here — add fields as each leaf migrates.
|
|
5
18
|
*/
|
|
6
19
|
export interface IAutomationsContextValue {
|
|
20
|
+
locale: ILocale;
|
|
21
|
+
separators: ISeparators;
|
|
22
|
+
settings?: ISettings;
|
|
23
|
+
catalogAttributes: ICatalogAttribute[];
|
|
24
|
+
catalogDateDatasets: ICatalogDateDataset[];
|
|
25
|
+
catalogMeasures: ICatalogMeasure[];
|
|
26
|
+
dateFilterConfig: IAutomationsDateFilterConfig;
|
|
27
|
+
dateFilterContextConfig: IDashboardDateFilterConfig | undefined;
|
|
28
|
+
attributeFilterConfigs: IDashboardAttributeFilterConfig[];
|
|
29
|
+
attributeFilterConfigsByTab: Record<string, IDashboardAttributeFilterConfig[]>;
|
|
30
|
+
attributeFilterSelectionTypeMap: Map<string, DashboardAttributeFilterSelectionType | undefined>;
|
|
31
|
+
attributeFilterSelectionTypeMapByTab: Record<string, Map<string, DashboardAttributeFilterSelectionType | undefined>>;
|
|
32
|
+
dateFilterConfigs: IDashboardDateFilterConfigItem[];
|
|
33
|
+
dateFilterConfigsByTab: Record<string, IDashboardDateFilterConfigItem[]>;
|
|
34
|
+
dateFilterConfigOverridesByTab: Record<string, IDashboardDateFilterConfig | undefined>;
|
|
35
|
+
measureValueFilterConfigs: IDashboardMeasureValueFilterConfig[];
|
|
36
|
+
measureValueFilterConfigsByTab: Record<string, IDashboardMeasureValueFilterConfig[]>;
|
|
37
|
+
commonDateFilterId: string | undefined;
|
|
38
|
+
lockedFilters: FilterContextItem[];
|
|
39
|
+
hiddenFilters: FilterContextItem[];
|
|
40
|
+
availableFilters: FilterContextItem[];
|
|
41
|
+
automationFiltersByTab: IAutomationFiltersTab[];
|
|
42
|
+
defaultSelectedFilters: FilterContextItem[];
|
|
43
|
+
automationAvailableFilters: FilterContextItem[];
|
|
44
|
+
enableNewScheduledExport: boolean;
|
|
45
|
+
getCatalogAttributeByRef: (ref: ObjRef) => ICatalogAttribute | ICatalogDateAttribute | undefined;
|
|
46
|
+
getAttributeFilterDisplayForm: (displayForm: ObjRef) => IAttributeDisplayFormMetadataObject | undefined;
|
|
7
47
|
}
|
|
8
48
|
export declare const AutomationsContextProvider: import("react").Provider<IAutomationsContextValue | undefined>;
|
|
9
49
|
export declare function useAutomationsContext(): IAutomationsContextValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationsContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/AutomationsContext.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"AutomationsContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/AutomationsContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,qCAAqC,EACrC,qBAAqB,EACrB,iBAAiB,EACjB,mCAAmC,EACnC,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,+BAA+B,EAC/B,0BAA0B,EAC1B,8BAA8B,EAC9B,kCAAkC,EAClC,WAAW,EACX,SAAS,EACT,MAAM,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAErF;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IACzC,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,qBAAqB,EAAE,CAAC;IACnE,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;CAC7E;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAC3C,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,gBAAgB,EAAE,4BAA4B,CAAC;IAC/C,uBAAuB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAChE,sBAAsB,EAAE,+BAA+B,EAAE,CAAC;IAC1D,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC/E,+BAA+B,EAAE,GAAG,CAAC,MAAM,EAAE,qCAAqC,GAAG,SAAS,CAAC,CAAC;IAChG,oCAAoC,EAAE,MAAM,CACxC,MAAM,EACN,GAAG,CAAC,MAAM,EAAE,qCAAqC,GAAG,SAAS,CAAC,CACjE,CAAC;IACF,iBAAiB,EAAE,8BAA8B,EAAE,CAAC;IACpD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACzE,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAAC;IACvF,yBAAyB,EAAE,kCAAkC,EAAE,CAAC;IAChE,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC,CAAC;IACrF,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;IAC5C,0BAA0B,EAAE,iBAAiB,EAAE,CAAC;IAChD,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,GAAG,qBAAqB,GAAG,SAAS,CAAC;IACjG,6BAA6B,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,mCAAmC,GAAG,SAAS,CAAC;CAC3G;AAID,eAAO,MAAM,0BAA0B,gEAA8B,CAAC;AAEtE,wBAAgB,qBAAqB,IAAI,wBAAwB,CAMhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx"],"names":[],"mappings":"AAmEA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAgE9D,wBAAgB,2BAA2B,CAAC,EACxC,qBAAqB,EACrB,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACZ,EAAE,0BAA0B,2CA0kB5B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,2CAW5E"}
|
|
@@ -17,6 +17,8 @@ import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors
|
|
|
17
17
|
import { getWidgetTitle } from "../../../../model/utils/dashboardItemUtils.js";
|
|
18
18
|
import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../constants/zIndex.js";
|
|
19
19
|
import { IntlWrapper } from "../../../localization/IntlWrapper.js";
|
|
20
|
+
import { useBuildAutomationsContext } from "../../connectors/hooks/useBuildAutomationsContext.js";
|
|
21
|
+
import { AutomationsContextProvider } from "../../contexts/AutomationsContext.js";
|
|
20
22
|
import { ApplyCurrentFiltersConfirmDialog } from "../../shared/automationFilters/components/ApplyLatestFiltersConfirmDialog.js";
|
|
21
23
|
import { AutomationFiltersSelect } from "../../shared/automationFilters/components/AutomationFiltersSelect.js";
|
|
22
24
|
import { useValidateExistingAutomationFilters } from "../../shared/automationFilters/hooks/useValidateExistingAutomationFilters.js";
|
|
@@ -243,11 +245,15 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
|
|
|
243
245
|
*/
|
|
244
246
|
export function DefaultScheduledEmailDialog(props) {
|
|
245
247
|
const { isLoading, onCancel, scheduledExportToEdit } = props;
|
|
246
|
-
const locale = useDashboardSelector(selectLocale);
|
|
247
248
|
if (isLoading) {
|
|
248
249
|
return (_jsx(DefaultLoadingScheduledEmailDialog, { onCancel: onCancel, scheduledExportToEdit: scheduledExportToEdit }));
|
|
249
250
|
}
|
|
250
|
-
return
|
|
251
|
+
return _jsx(DefaultScheduledEmailDialogBody, { ...props });
|
|
252
|
+
}
|
|
253
|
+
function DefaultScheduledEmailDialogBody(props) {
|
|
254
|
+
const locale = useDashboardSelector(selectLocale);
|
|
255
|
+
const automationsContext = useBuildAutomationsContext();
|
|
256
|
+
return (_jsx(AutomationsContextProvider, { value: automationsContext, children: _jsx(IntlWrapper, { locale: locale, children: _jsx(ScheduledMailDialogRenderer, { ...props }) }) }));
|
|
251
257
|
}
|
|
252
258
|
function useDefaultScheduledEmailDialogData() {
|
|
253
259
|
const locale = useDashboardSelector(selectLocale);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DashboardAttachmentType, type FilterContextItem, type IAutomationMetadataObject, type IAutomationMetadataObjectDefinition, type IAutomationRecipient, type IAutomationVisibleFilter, type IDashboardExportParameter, type IExportDefinitionVisualizationObjectSettings, type IFilter, type IInsight, type INotificationChannelIdentifier, type INotificationChannelMetadataObject, type WidgetAttachmentType } from "@gooddata/sdk-model";
|
|
2
|
-
import {
|
|
2
|
+
import type { IAutomationFiltersTab } from "../../../../../model/store/filtering/types.js";
|
|
3
3
|
import { type ExtendedDashboardWidget } from "../../../../../model/types/layoutTypes.js";
|
|
4
4
|
export interface IUseEditScheduledEmailProps {
|
|
5
5
|
scheduledExportToEdit?: IAutomationMetadataObject;
|