@gooddata/sdk-ui-dashboard 11.43.0-alpha.0 → 11.43.0-alpha.2
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 +130 -130
- package/esm/__version.d.ts +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/drill/resolveDrillToCustomUrl.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js +10 -5
- 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 +10 -5
- 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/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.d.ts.map +1 -1
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.js +11 -13
- 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.d.ts.map +1 -1
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.js +11 -20
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +3 -4
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.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
|
@@ -131,6 +131,9 @@ export const isFilterContextItemLocked = (filter, filterConfigurations) => {
|
|
|
131
131
|
}
|
|
132
132
|
return false;
|
|
133
133
|
};
|
|
134
|
+
//
|
|
135
|
+
// Per-tab automation filter selectors
|
|
136
|
+
//
|
|
134
137
|
/**
|
|
135
138
|
* Returns automation-available filters structured per tab.
|
|
136
139
|
* Each entry includes tab information and the filters applicable to that tab.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { FilterContextItem } from "@gooddata/sdk-model";
|
|
2
|
+
/**
|
|
3
|
+
* Automation filters grouped by tab, returned by {@link selectAutomationFiltersByTab}.
|
|
4
|
+
* @alpha
|
|
5
|
+
*/
|
|
6
|
+
export interface IAutomationFiltersTab {
|
|
7
|
+
/**
|
|
8
|
+
* Tab local identifier.
|
|
9
|
+
*/
|
|
10
|
+
tabId: string;
|
|
11
|
+
/**
|
|
12
|
+
* Tab title.
|
|
13
|
+
*/
|
|
14
|
+
tabTitle: string;
|
|
15
|
+
/**
|
|
16
|
+
* Automation-available filters for the tab (hidden filters removed).
|
|
17
|
+
*/
|
|
18
|
+
availableFilters: FilterContextItem[];
|
|
19
|
+
/**
|
|
20
|
+
* Default selected filters for the tab
|
|
21
|
+
* (no-op filters removed: "all values" attribute filters and "all" measure value filters).
|
|
22
|
+
*/
|
|
23
|
+
defaultSelectedFilters: FilterContextItem[];
|
|
24
|
+
/**
|
|
25
|
+
* Locked filters for the tab.
|
|
26
|
+
*/
|
|
27
|
+
lockedFilters: FilterContextItem[];
|
|
28
|
+
/**
|
|
29
|
+
* Hidden filters for the tab.
|
|
30
|
+
*/
|
|
31
|
+
hiddenFilters: FilterContextItem[];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/model/store/filtering/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC;;;OAGG;IACH,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;IAC5C;;OAEG;IACH,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACtC"}
|
|
@@ -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,2CA+kBtB;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";
|
|
@@ -123,9 +125,8 @@ export function AlertingDialogRenderer({ alertToEdit, users, usersError, notific
|
|
|
123
125
|
message: validationErrorMessage,
|
|
124
126
|
severity: isInvalidConnectionToInsight ? "error" : "warning",
|
|
125
127
|
}),
|
|
126
|
-
!!thresholdErrorMessage && createInvalidDatapoint({ message: thresholdErrorMessage }),
|
|
127
128
|
]);
|
|
128
|
-
}, [validationErrorMessage,
|
|
129
|
+
}, [validationErrorMessage, isInvalidConnectionToInsight, setInvalidDatapoints]);
|
|
129
130
|
const helpTextId = isMobileView()
|
|
130
131
|
? defineMessage({ id: "dialogs.alerting.footer.title.short" }).id
|
|
131
132
|
: defineMessage({ id: "dialogs.alerting.footer.title" }).id;
|
|
@@ -202,11 +203,15 @@ export function AlertingDialogRenderer({ alertToEdit, users, usersError, notific
|
|
|
202
203
|
*/
|
|
203
204
|
export function DefaultAlertingDialog(props) {
|
|
204
205
|
const { isLoading, onCancel, alertToEdit } = props;
|
|
205
|
-
const locale = useDashboardSelector(selectLocale);
|
|
206
206
|
if (isLoading) {
|
|
207
207
|
return _jsx(DefaultLoadingAlertingDialog, { onCancel: onCancel, alertToEdit: alertToEdit });
|
|
208
208
|
}
|
|
209
|
-
return
|
|
209
|
+
return _jsx(DefaultAlertingDialogBody, { ...props });
|
|
210
|
+
}
|
|
211
|
+
function DefaultAlertingDialogBody(props) {
|
|
212
|
+
const locale = useDashboardSelector(selectLocale);
|
|
213
|
+
const automationsContext = useBuildAutomationsContext();
|
|
214
|
+
return (_jsx(AutomationsContextProvider, { value: automationsContext, children: _jsx(IntlWrapper, { locale: locale, children: _jsx(AlertingDialogRenderer, { ...props }) }) }));
|
|
210
215
|
}
|
|
211
216
|
function useDefaultAlertingDialogData() {
|
|
212
217
|
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;
|