@gooddata/sdk-ui-dashboard 11.36.0-alpha.2 → 11.36.0-alpha.6
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 +63 -115
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +5 -13
- package/esm/index.js +2 -10
- package/esm/internal.d.ts +1 -1
- package/esm/model/commandHandlers/dashboard/common/filterViews.js +24 -1
- package/esm/model/commandHandlers/dashboard/common/parameterHydration.d.ts +7 -1
- package/esm/model/commandHandlers/dashboard/common/parameterHydration.js +16 -2
- package/esm/model/commandHandlers/dashboard/common/stateInitializers.js +4 -2
- package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts +7 -1
- package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js +80 -4
- package/esm/model/commandHandlers/filterContext/filterViewHandler.js +10 -0
- package/esm/model/commandHandlers/filterContext/filterViewParameters.d.ts +7 -0
- package/esm/model/commandHandlers/filterContext/filterViewParameters.js +11 -0
- package/esm/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.js +7 -1
- package/esm/model/store/config/configSelectors.d.ts +0 -6
- package/esm/model/store/config/configSelectors.js +0 -8
- package/esm/model/store/tabs/index.d.ts +4 -0
- package/esm/model/store/tabs/parameters/parametersReducers.d.ts +11 -1
- package/esm/model/store/tabs/parameters/parametersReducers.js +16 -8
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +7 -0
- package/esm/model/store/tabs/parameters/parametersSelectors.js +17 -0
- package/esm/model/types/commonTypes.d.ts +11 -2
- package/esm/model/utils/measureValueFilterUtils.d.ts +14 -0
- package/esm/model/utils/measureValueFilterUtils.js +21 -0
- package/esm/presentation/alerting/DefaultAlertingDialog/{DefaultAlertingDialogNew.d.ts → DefaultAlertingDialog.d.ts} +1 -1
- package/esm/presentation/alerting/DefaultAlertingDialog/{DefaultAlertingDialogNew.js → DefaultAlertingDialog.js} +6 -12
- package/esm/presentation/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.js +43 -9
- package/esm/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.js +13 -25
- package/esm/presentation/alerting/types.d.ts +1 -72
- package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.d.ts +1 -2
- package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.js +5 -5
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProvider.js +1 -8
- package/esm/presentation/dashboard/DashboardHeader/ScheduledEmailDialogProvider.js +17 -8
- package/esm/presentation/dashboard/DashboardHeader/ShareDialogDashboardHeader.js +5 -2
- package/esm/presentation/dashboard/components/DashboardRenderer.js +2 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.js +97 -13
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParameters.d.ts +1 -1
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParameters.js +3 -3
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.d.ts +3 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.js +17 -4
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.d.ts +4 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.js +37 -4
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/Parameter.d.ts +4 -3
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/Parameter.js +3 -4
- package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js +4 -1
- package/esm/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js +4 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +4 -36
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +4 -36
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +2 -9
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +2 -9
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +2 -9
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +26 -59
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +2 -6
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +22 -104
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.js +12 -33
- package/esm/presentation/scheduledEmail/hooks/useWidgetAutomationFilters.d.ts +3 -0
- package/esm/presentation/scheduledEmail/hooks/useWidgetAutomationFilters.js +46 -0
- package/esm/presentation/scheduledEmail/types.d.ts +1 -7
- package/esm/presentation/scheduledEmail/utils/filters.d.ts +2 -0
- package/esm/presentation/scheduledEmail/utils/filters.js +5 -0
- package/esm/presentation/shareDialog/DefaultShareDialog.d.ts +1 -1
- package/esm/presentation/shareDialog/DefaultShareDialog.js +2 -2
- package/esm/presentation/shareDialog/types.d.ts +5 -1
- package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.d.ts +2 -2
- package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.js +36 -5
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useInsightWidgetAlerting.js +3 -6
- package/esm/presentation/widget/insight/configuration/InsightAlerts.js +1 -9
- package/esm/sdk-ui-dashboard.d.ts +28 -240
- package/package.json +20 -20
- package/esm/model/react/filtering/shared.d.ts +0 -6
- package/esm/model/react/filtering/shared.js +0 -38
- package/esm/model/react/filtering/useAutomationAvailableDashboardFilters.d.ts +0 -13
- package/esm/model/react/filtering/useAutomationAvailableDashboardFilters.js +0 -54
- package/esm/model/react/filtering/useDashboardScheduledExportFilters.d.ts +0 -19
- package/esm/model/react/filtering/useDashboardScheduledExportFilters.js +0 -18
- package/esm/model/react/filtering/useScheduledExportFilters.d.ts +0 -26
- package/esm/model/react/filtering/useScheduledExportFilters.js +0 -23
- package/esm/model/react/filtering/useWidgetAlertFilters.d.ts +0 -33
- package/esm/model/react/filtering/useWidgetAlertFilters.js +0 -48
- package/esm/model/react/filtering/useWidgetScheduledExportFilters.d.ts +0 -33
- package/esm/model/react/filtering/useWidgetScheduledExportFilters.js +0 -48
- package/esm/model/react/useDashboardAlerting/useEnableAutomationFilterContext.d.ts +0 -4
- package/esm/model/react/useDashboardAlerting/useEnableAutomationFilterContext.js +0 -20
- package/esm/model/react/useDashboardAlertsOld.d.ts +0 -32
- package/esm/model/react/useDashboardAlertsOld.js +0 -141
- package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogOld.d.ts +0 -5
- package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogOld.js +0 -36
- package/esm/presentation/alerting/DefaultAlertingDialog/components/AlertAttributeSelectOld.d.ts +0 -17
- package/esm/presentation/alerting/DefaultAlertingDialog/components/AlertAttributeSelectOld.js +0 -103
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.d.ts +0 -5
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.js +0 -53
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.d.ts +0 -9
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.js +0 -84
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/AlertsListOld.d.ts +0 -11
- package/esm/presentation/alerting/DefaultAlertingManagementDialog/components/AlertsListOld.js +0 -16
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderOld.d.ts +0 -1
- package/esm/presentation/dashboard/DashboardHeader/AlertingDialogProviderOld.js +0 -12
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.d.ts +0 -29
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.js +0 -61
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFiltersList.d.ts +0 -6
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFiltersList.js +0 -12
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentItems.d.ts +0 -17
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentItems.js +0 -68
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentsWrapper.d.ts +0 -4
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentsWrapper.js +0 -6
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.d.ts +0 -15
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.js +0 -42
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.d.ts +0 -18
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.js +0 -25
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/types.d.ts +0 -2
- package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/types.js +0 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertsOld.d.ts +0 -2
- package/esm/presentation/widget/insight/configuration/InsightAlertsOld.js +0 -43
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2019-2026 GoodData Corporation
|
|
3
|
-
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
5
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
6
|
import { areObjRefsEqual, } from "@gooddata/sdk-model";
|
|
7
|
-
import { Dropdown, DropdownButton, UiMenu, } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
import { Dropdown, DropdownButton, InvertableSelectSearchBar, Item, Separator, UiMenu, } from "@gooddata/sdk-ui-kit";
|
|
8
8
|
import { getSelectedCatalogAttribute, getSelectedCatalogAttributeValue } from "../utils/getters.js";
|
|
9
9
|
const createInteractiveItem = (id, title, attribute, value, isSelected, subItems) => ({
|
|
10
10
|
type: "interactive",
|
|
@@ -26,6 +26,34 @@ const createSeparator = (id) => ({
|
|
|
26
26
|
function CustomStaticItem({ item: _item }) {
|
|
27
27
|
return _jsx("div", { className: "gd-alert-attribute-select__dropdown-separator" });
|
|
28
28
|
}
|
|
29
|
+
function AttributeValuesSearchContent({ attribute, values, isSelected, selectedAttributeValue, onAttributeChange, onClose, }) {
|
|
30
|
+
const intl = useIntl();
|
|
31
|
+
const [searchString, setSearchString] = useState("");
|
|
32
|
+
const filteredValues = useMemo(() => {
|
|
33
|
+
if (!searchString) {
|
|
34
|
+
return values;
|
|
35
|
+
}
|
|
36
|
+
const loweredSearch = searchString.toLowerCase();
|
|
37
|
+
return values.filter((item) => (item.title ?? item.name ?? "").toLowerCase().includes(loweredSearch));
|
|
38
|
+
}, [searchString, values]);
|
|
39
|
+
return (_jsxs("div", { className: cx("gd-alert-attribute-select__submenu-content", "s-alert-attribute-submenu-content"), children: [
|
|
40
|
+
_jsx("div", { children: _jsx(InvertableSelectSearchBar, { onSearch: setSearchString, searchString: searchString, searchPlaceholder: intl.formatMessage({
|
|
41
|
+
id: "attributesDropdown.placeholder",
|
|
42
|
+
}), className: "gd-alert-attribute-select__menu-item_search" }) }), _jsx(Item, { className: "gd-alert-attribute-select__menu-item_wrapper", checked: Boolean(isSelected && !selectedAttributeValue), onClick: (e) => {
|
|
43
|
+
onAttributeChange(attribute, undefined);
|
|
44
|
+
onClose();
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
e.stopPropagation();
|
|
47
|
+
}, children: _jsxs("div", { className: "gd-alert-attribute-select__menu-item s-menu-alert-attribute-item-value", children: [intl.formatMessage({
|
|
48
|
+
id: "insightAlert.config.selectAttribute",
|
|
49
|
+
}), " ", "(", values.length, ")"] }) }), _jsx(Separator, {}), _jsx("div", { className: "gd-alert-attribute-select__menu-item__values", children: filteredValues.map((value, index) => (_jsx(Item, { checked: Boolean(isSelected && value.value === selectedAttributeValue?.value), className: "gd-alert-attribute-select__menu-item_wrapper", onClick: (e) => {
|
|
50
|
+
onAttributeChange(attribute, value);
|
|
51
|
+
onClose();
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
e.stopPropagation();
|
|
54
|
+
}, children: _jsx("div", { className: "gd-alert-attribute-select__menu-item s-menu-alert-attribute-item-value", children: (value.title ?? value.name) || `(${intl.formatMessage({ id: "empty_value" })})` }) }, index))) })
|
|
55
|
+
] }));
|
|
56
|
+
}
|
|
29
57
|
export function AlertAttributeSelect({ id, selectedAttribute: selectedAttributeProp, getAttributeValues, isResultLoading, selectedValue, onAttributeChange, attributes, catalogAttributes, catalogDateDatasets, showLabel = true, closeOnParentScroll, }) {
|
|
30
58
|
const intl = useIntl();
|
|
31
59
|
const availableAttributes = useMemo(() => {
|
|
@@ -47,17 +75,22 @@ export function AlertAttributeSelect({ id, selectedAttribute: selectedAttributeP
|
|
|
47
75
|
}
|
|
48
76
|
const values = getAttributeValues(item);
|
|
49
77
|
const hasDisplayForm = selectedAttribute?.displayForms.some((df) => areObjRefsEqual(df.ref, attribute.attribute.attribute.displayForm));
|
|
50
|
-
|
|
78
|
+
const isSelected = Boolean(hasDisplayForm);
|
|
79
|
+
if (values.length > 5) {
|
|
80
|
+
attributeItems.push({
|
|
81
|
+
type: "content",
|
|
82
|
+
id: `attribute-${item.id}`,
|
|
83
|
+
stringTitle: item.title || intl.formatMessage({ id: "empty_value" }),
|
|
84
|
+
data: undefined,
|
|
85
|
+
Component: ({ onClose }) => (_jsx(AttributeValuesSearchContent, { attribute: attribute, values: values, isSelected: isSelected, selectedAttributeValue: selectedAttributeValue, onAttributeChange: onAttributeChange, onClose: onClose })),
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
51
89
|
const subItems = [
|
|
52
|
-
// "All" option
|
|
53
90
|
createInteractiveItem(`all-${item.id}`, `${accessibilityAriaLabel} (${values.length})`, attribute, undefined, Boolean(hasDisplayForm && !selectedAttributeValue)),
|
|
54
|
-
// Separator after All option
|
|
55
91
|
createSeparator(`separator-${item.id}`),
|
|
92
|
+
...values.map((value) => createInteractiveItem(`value-${value.value}`, (value.title ?? value.name) || intl.formatMessage({ id: "empty_value" }), attribute, value, Boolean(hasDisplayForm && selectedAttributeValue?.value === value.value))),
|
|
56
93
|
];
|
|
57
|
-
// Add individual value items
|
|
58
|
-
for (const value of values) {
|
|
59
|
-
subItems.push(createInteractiveItem(`value-${value.value}`, (value.title ?? value.name) || intl.formatMessage({ id: "empty_value" }), attribute, value, Boolean(hasDisplayForm && selectedAttributeValue?.value === value.value)));
|
|
60
|
-
}
|
|
61
94
|
// Check if any child is selected to determine parent selection state
|
|
62
95
|
const hasSelectedChild = subItems.some((item) => item.type === "interactive" && "isSelected" in item && item.isSelected);
|
|
63
96
|
// Create attribute item with submenu
|
|
@@ -81,6 +114,7 @@ export function AlertAttributeSelect({ id, selectedAttribute: selectedAttributeP
|
|
|
81
114
|
catalogDateDatasets,
|
|
82
115
|
getAttributeValues,
|
|
83
116
|
intl,
|
|
117
|
+
onAttributeChange,
|
|
84
118
|
selectedAttribute,
|
|
85
119
|
selectedAttributeValue,
|
|
86
120
|
]);
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { omit } from "lodash-es";
|
|
4
|
-
import { isAllValuesAttributeFilter,
|
|
5
|
-
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
6
|
-
import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js";
|
|
4
|
+
import { isAllValuesAttributeFilter, } from "@gooddata/sdk-model";
|
|
7
5
|
import { useCreateAlert } from "./useCreateAlert.js";
|
|
8
6
|
import { useUpdateAlert } from "./useUpdateAlert.js";
|
|
9
7
|
/**
|
|
@@ -18,44 +16,43 @@ import { useUpdateAlert } from "./useUpdateAlert.js";
|
|
|
18
16
|
* @param onResumeError - callback to be called when alert resuming fails
|
|
19
17
|
*/
|
|
20
18
|
export function useSaveAlertToBackend({ onCreateSuccess, onCreateError, onUpdateSuccess, onUpdateError, onPauseSuccess, onPauseError, onResumeSuccess, onResumeError, }) {
|
|
21
|
-
const enableAutomationFilterContext = useDashboardSelector(selectEnableAutomationFilterContext);
|
|
22
19
|
const alertCreator = useCreateAlert({
|
|
23
20
|
onSuccess: (alert) => onCreateSuccess?.(alert),
|
|
24
21
|
onError: onCreateError,
|
|
25
22
|
});
|
|
26
23
|
const handleCreateAlert = useCallback((alert) => {
|
|
27
|
-
const sanitizedAlert = sanitizeAutomation(alert
|
|
24
|
+
const sanitizedAlert = sanitizeAutomation(alert);
|
|
28
25
|
alertCreator.create(sanitizedAlert);
|
|
29
|
-
}, [alertCreator
|
|
26
|
+
}, [alertCreator]);
|
|
30
27
|
const alertUpdater = useUpdateAlert({
|
|
31
28
|
onSuccess: onUpdateSuccess,
|
|
32
29
|
onError: onUpdateError,
|
|
33
30
|
});
|
|
34
31
|
const handleUpdateAlert = useCallback((alert) => {
|
|
35
|
-
const sanitizedAlert = sanitizeAutomation(alert
|
|
32
|
+
const sanitizedAlert = sanitizeAutomation(alert);
|
|
36
33
|
alertUpdater.save(sanitizedAlert);
|
|
37
|
-
}, [alertUpdater
|
|
34
|
+
}, [alertUpdater]);
|
|
38
35
|
const alertPauser = useUpdateAlert({
|
|
39
36
|
onSuccess: onPauseSuccess,
|
|
40
37
|
onError: onPauseError,
|
|
41
38
|
});
|
|
42
39
|
const handlePauseAlert = useCallback((alert) => {
|
|
43
|
-
alertPauser.save(sanitizeAutomation(alert
|
|
44
|
-
}, [alertPauser
|
|
40
|
+
alertPauser.save(sanitizeAutomation(alert));
|
|
41
|
+
}, [alertPauser]);
|
|
45
42
|
const alertResumer = useUpdateAlert({
|
|
46
43
|
onSuccess: onResumeSuccess,
|
|
47
44
|
onError: onResumeError,
|
|
48
45
|
});
|
|
49
46
|
const handleResumeAlert = useCallback((alert) => {
|
|
50
|
-
alertResumer.save(sanitizeAutomation(alert
|
|
51
|
-
}, [alertResumer
|
|
47
|
+
alertResumer.save(sanitizeAutomation(alert));
|
|
48
|
+
}, [alertResumer]);
|
|
52
49
|
const isSavingAlert = alertCreator.creationStatus === "running" ||
|
|
53
50
|
alertUpdater.savingStatus === "running" ||
|
|
54
51
|
alertPauser.savingStatus === "running" ||
|
|
55
52
|
alertResumer.savingStatus === "running";
|
|
56
53
|
return { handleCreateAlert, handleUpdateAlert, handlePauseAlert, handleResumeAlert, isSavingAlert };
|
|
57
54
|
}
|
|
58
|
-
function sanitizeAutomation(automationToSave
|
|
55
|
+
function sanitizeAutomation(automationToSave) {
|
|
59
56
|
let automation = {
|
|
60
57
|
...automationToSave,
|
|
61
58
|
};
|
|
@@ -71,7 +68,7 @@ function sanitizeAutomation(automationToSave, enableAutomationFilterContext) {
|
|
|
71
68
|
...automation.alert,
|
|
72
69
|
execution: {
|
|
73
70
|
...automation.alert.execution,
|
|
74
|
-
filters: removeNoopFiltersFromAlertFilters(automation.alert.execution.filters
|
|
71
|
+
filters: removeNoopFiltersFromAlertFilters(automation.alert.execution.filters),
|
|
75
72
|
},
|
|
76
73
|
},
|
|
77
74
|
};
|
|
@@ -81,16 +78,7 @@ function sanitizeAutomation(automationToSave, enableAutomationFilterContext) {
|
|
|
81
78
|
/**
|
|
82
79
|
* Strip noop filters that have no effect on execution and should not appear in alert email notifications.
|
|
83
80
|
* - "All values" attribute filters are always stripped.
|
|
84
|
-
* - "All time" date filters are stripped only for the legacy path (new path handles this in getAppliedWidgetFilters).
|
|
85
81
|
*/
|
|
86
|
-
function removeNoopFiltersFromAlertFilters(filters
|
|
87
|
-
return filters.filter((filter) =>
|
|
88
|
-
if (isAllValuesAttributeFilter(filter)) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
if (!enableAutomationFilterContext && isNoopAllTimeDateFilter(filter)) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
return true;
|
|
95
|
-
});
|
|
82
|
+
function removeNoopFiltersFromAlertFilters(filters) {
|
|
83
|
+
return filters.filter((filter) => !isAllValuesAttributeFilter(filter));
|
|
96
84
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ComponentType } from "react";
|
|
2
|
-
import { type DateAttributeGranularity, type IAttribute, type IAutomationMetadataObject, type IDataSetMetadataObject, type IInsight, type
|
|
2
|
+
import { type DateAttributeGranularity, type IAttribute, type IAutomationMetadataObject, type IDataSetMetadataObject, type IInsight, type IMeasure, type INotificationChannelIdentifier, type INotificationChannelMetadataObject, type IWorkspaceUser } from "@gooddata/sdk-model";
|
|
3
3
|
import { type GoodDataSdkError } from "@gooddata/sdk-ui";
|
|
4
4
|
import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js";
|
|
5
5
|
/**
|
|
@@ -67,31 +67,6 @@ export interface IAlertingDialogProps {
|
|
|
67
67
|
*/
|
|
68
68
|
onDeleteError?: (error: GoodDataSdkError) => void;
|
|
69
69
|
}
|
|
70
|
-
/**
|
|
71
|
-
* @alpha
|
|
72
|
-
*/
|
|
73
|
-
export interface IAlertingDialogOldProps {
|
|
74
|
-
/**
|
|
75
|
-
* Alert to be edited in the dialog.
|
|
76
|
-
*/
|
|
77
|
-
editAlert?: IAutomationMetadataObject;
|
|
78
|
-
/**
|
|
79
|
-
* Callback to be called, when user save the existing alert.
|
|
80
|
-
*/
|
|
81
|
-
onUpdate?: (alertingDefinition: IAutomationMetadataObject) => void;
|
|
82
|
-
/**
|
|
83
|
-
* Callback to be called, when user closes the alerting dialog.
|
|
84
|
-
*/
|
|
85
|
-
onCancel?: () => void;
|
|
86
|
-
/**
|
|
87
|
-
* Widget to be edited in the dialog.
|
|
88
|
-
*/
|
|
89
|
-
editWidget?: IInsightWidget;
|
|
90
|
-
/**
|
|
91
|
-
* Anchor element for the dialog.
|
|
92
|
-
*/
|
|
93
|
-
anchorEl?: HTMLElement | null;
|
|
94
|
-
}
|
|
95
70
|
/**
|
|
96
71
|
* @alpha
|
|
97
72
|
*/
|
|
@@ -146,52 +121,6 @@ export interface IAlertingManagementDialogProps {
|
|
|
146
121
|
*/
|
|
147
122
|
onPauseError: (error: GoodDataSdkError, pause: boolean) => void;
|
|
148
123
|
}
|
|
149
|
-
/**
|
|
150
|
-
* @alpha
|
|
151
|
-
*/
|
|
152
|
-
export interface IAlertingManagementDialogOldProps {
|
|
153
|
-
/**
|
|
154
|
-
* Callback to be called, when user clicks alert item for editing.
|
|
155
|
-
*/
|
|
156
|
-
onEdit?: (alertingDefinition: IAutomationMetadataObject, widget: IInsightWidget | undefined, anchor: HTMLElement | null, onClosed: () => void) => void;
|
|
157
|
-
/**
|
|
158
|
-
* Callback to be called, when user closes the alert management dialog.
|
|
159
|
-
*/
|
|
160
|
-
onClose?: () => void;
|
|
161
|
-
/**
|
|
162
|
-
* Is loading alert data?
|
|
163
|
-
*/
|
|
164
|
-
isLoadingAlertingData: boolean;
|
|
165
|
-
/**
|
|
166
|
-
* Error occurred while loading alert data?
|
|
167
|
-
*/
|
|
168
|
-
alertingDataError?: GoodDataSdkError;
|
|
169
|
-
/**
|
|
170
|
-
* Automations in workspace
|
|
171
|
-
*/
|
|
172
|
-
automations: IAutomationMetadataObject[];
|
|
173
|
-
/**
|
|
174
|
-
* Callback to be called, when alert is deleted.
|
|
175
|
-
* @param alert - alert that was deleted
|
|
176
|
-
*/
|
|
177
|
-
onDeleteSuccess?: (alert: IAutomationMetadataObject) => void;
|
|
178
|
-
/**
|
|
179
|
-
* Callback to be called, when alert fails to delete.
|
|
180
|
-
*/
|
|
181
|
-
onDeleteError?: (error: GoodDataSdkError) => void;
|
|
182
|
-
/**
|
|
183
|
-
* Callback to be called, when alert is paused.
|
|
184
|
-
* @param alert - alert that was paused
|
|
185
|
-
* @param pause - true if alert was paused, false if it was resumed
|
|
186
|
-
*/
|
|
187
|
-
onPauseSuccess: (alert: IAutomationMetadataObject, pause: boolean) => void;
|
|
188
|
-
/**
|
|
189
|
-
* Callback to be called, when alert fails to pause.
|
|
190
|
-
* @param error - error that occurred
|
|
191
|
-
* @param pause - true if alert was paused, false if it was resumed
|
|
192
|
-
*/
|
|
193
|
-
onPauseError: (error: GoodDataSdkError, pause: boolean) => void;
|
|
194
|
-
}
|
|
195
124
|
/**
|
|
196
125
|
* @alpha
|
|
197
126
|
*/
|
|
@@ -13,11 +13,10 @@ export interface IAutomationValidationResult {
|
|
|
13
13
|
visibleFiltersAreMissing: boolean;
|
|
14
14
|
incompatibleSelectionTypeIsAppliedInSavedFilters: boolean;
|
|
15
15
|
}
|
|
16
|
-
export declare function useValidateExistingAutomationFilters({ automationToEdit, widget, insight
|
|
16
|
+
export declare function useValidateExistingAutomationFilters({ automationToEdit, widget, insight }: {
|
|
17
17
|
automationToEdit?: IAutomationMetadataObject;
|
|
18
18
|
widget?: ExtendedDashboardWidget;
|
|
19
19
|
insight?: IInsight;
|
|
20
|
-
enableAutomationFilterContext?: boolean;
|
|
21
20
|
}): IAutomationValidationResult;
|
|
22
21
|
/**
|
|
23
22
|
* Validate existing automation filters against current dashboard filter context and optionally saved widget / insight.
|
|
@@ -17,8 +17,8 @@ function sanitizeCommonDateFilter(filter, commonDateFilterId) {
|
|
|
17
17
|
}
|
|
18
18
|
return filter;
|
|
19
19
|
}
|
|
20
|
-
function shouldSkipValidation(
|
|
21
|
-
if (!
|
|
20
|
+
function shouldSkipValidation(automationToEdit, widget, savedDashboardFilters, savedDashboardFiltersByTab) {
|
|
21
|
+
if (!automationToEdit) {
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
24
|
// Handle case, when dashboard scheduled export filters are not saved (undefined === always use latest dashboard filters in the scheduled export)
|
|
@@ -26,7 +26,7 @@ function shouldSkipValidation(enableAutomationFilterContext, automationToEdit, w
|
|
|
26
26
|
if (widget) {
|
|
27
27
|
return !isInsightWidget(widget);
|
|
28
28
|
}
|
|
29
|
-
return typeof savedDashboardFilters === "undefined";
|
|
29
|
+
return typeof savedDashboardFilters === "undefined" && typeof savedDashboardFiltersByTab === "undefined";
|
|
30
30
|
}
|
|
31
31
|
function hasMatchingPerTabFormat(widget, dashboardFiltersByTab, savedAutomationVisibleFiltersByTab, savedDashboardFiltersByTab) {
|
|
32
32
|
return (!widget &&
|
|
@@ -52,7 +52,7 @@ const defaultValidState = {
|
|
|
52
52
|
visibleFiltersAreMissing: false,
|
|
53
53
|
incompatibleSelectionTypeIsAppliedInSavedFilters: false,
|
|
54
54
|
};
|
|
55
|
-
export function useValidateExistingAutomationFilters({ automationToEdit, widget, insight,
|
|
55
|
+
export function useValidateExistingAutomationFilters({ automationToEdit, widget, insight, }) {
|
|
56
56
|
const lockedFilters = useDashboardSelector(selectDashboardLockedFilters);
|
|
57
57
|
const hiddenFilters = useDashboardSelector(selectDashboardHiddenFilters);
|
|
58
58
|
const dashboardFilters = useDashboardSelector(selectDashboardFiltersWithoutCrossFiltering);
|
|
@@ -67,7 +67,7 @@ export function useValidateExistingAutomationFilters({ automationToEdit, widget,
|
|
|
67
67
|
const savedAlertFilters = getAutomationAlertFilters(automationToEdit);
|
|
68
68
|
const savedDashboardFilters = getAutomationDashboardFilters(automationToEdit);
|
|
69
69
|
const savedDashboardFiltersByTab = getAutomationDashboardFiltersByTab(automationToEdit);
|
|
70
|
-
if (shouldSkipValidation(
|
|
70
|
+
if (shouldSkipValidation(automationToEdit, widget, savedDashboardFilters, savedDashboardFiltersByTab)) {
|
|
71
71
|
return defaultValidState;
|
|
72
72
|
}
|
|
73
73
|
// Check for matching format scenario: both automation and dashboard have per-tab structure
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2022-2026 GoodData Corporation
|
|
3
|
-
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
4
|
-
import { selectEnableAutomationFilterContext } from "../../../model/store/config/configSelectors.js";
|
|
5
3
|
import { AlertingDialogProviderNew } from "./AlertingDialogProviderNew.js";
|
|
6
|
-
import { AlertingDialogProviderOld } from "./AlertingDialogProviderOld.js";
|
|
7
4
|
export function AlertingDialogProvider() {
|
|
8
|
-
|
|
9
|
-
if (enableAutomationFilters) {
|
|
10
|
-
return _jsx(AlertingDialogProviderNew, {});
|
|
11
|
-
}
|
|
12
|
-
return _jsx(AlertingDialogProviderOld, {});
|
|
5
|
+
return _jsx(AlertingDialogProviderNew, {});
|
|
13
6
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2022-2026 GoodData Corporation
|
|
3
|
-
import {
|
|
3
|
+
import { getAutomationDashboardFilters, getAutomationVisualizationFilters, } from "../../../_staging/automation/index.js";
|
|
4
|
+
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
4
5
|
import { useDashboardScheduledEmails } from "../../../model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.js";
|
|
5
6
|
import { useWorkspaceUsers } from "../../../model/react/useWorkspaceUsers.js";
|
|
7
|
+
import { selectAutomationDefaultSelectedFilters, selectDashboardHiddenFilters, } from "../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
8
|
+
import { useWidgetAutomationFilters } from "../../scheduledEmail/hooks/useWidgetAutomationFilters.js";
|
|
6
9
|
import { ScheduledEmailDialog } from "../../scheduledEmail/ScheduledEmailDialog.js";
|
|
7
10
|
import { ScheduledEmailManagementDialog } from "../../scheduledEmail/ScheduledEmailManagementDialog.js";
|
|
11
|
+
import { getAppliedDashboardFilters } from "../../scheduledEmail/utils/filters.js";
|
|
8
12
|
export function ScheduledEmailDialogProvider() {
|
|
9
13
|
const {
|
|
10
14
|
// Shared Local State
|
|
@@ -15,13 +19,18 @@ export function ScheduledEmailDialogProvider() {
|
|
|
15
19
|
isScheduleEmailingDialogOpen, onScheduleEmailingCancel, onScheduleEmailingBack, onScheduleEmailingCreateSuccess, onScheduleEmailingCreateError, onScheduleEmailingSaveSuccess, onScheduleEmailingSaveError,
|
|
16
20
|
// Management / List Dialog
|
|
17
21
|
isScheduleEmailingManagementDialogOpen, onScheduleEmailingManagementClose, onScheduleEmailingManagementAdd, onScheduleEmailingManagementEdit, onScheduleEmailingManagementDeleteSuccess, onScheduleEmailingManagementDeleteError, } = useDashboardScheduledEmails();
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
const
|
|
24
|
-
const
|
|
22
|
+
const automationDefaultSelectedFilters = useDashboardSelector(selectAutomationDefaultSelectedFilters);
|
|
23
|
+
const dashboardHiddenFilters = useDashboardSelector(selectDashboardHiddenFilters);
|
|
24
|
+
const { executionFilters: savedWidgetFilters } = getAutomationVisualizationFilters(scheduledExportToEdit);
|
|
25
|
+
const savedDashboardFilters = getAutomationDashboardFilters(scheduledExportToEdit);
|
|
26
|
+
const { result: liveWidgetFilters, status: widgetFiltersStatus, error: widgetFiltersError, } = useWidgetAutomationFilters(widget, insight);
|
|
27
|
+
const widgetFilters = savedWidgetFilters ?? liveWidgetFilters;
|
|
28
|
+
const shouldLoadWidgetFilters = !!widget && !savedWidgetFilters;
|
|
29
|
+
const dashboardFilters = savedDashboardFilters ??
|
|
30
|
+
getAppliedDashboardFilters(automationDefaultSelectedFilters, dashboardHiddenFilters, true);
|
|
31
|
+
const isLoading = automationsLoading ||
|
|
32
|
+
(shouldLoadWidgetFilters && (widgetFiltersStatus === "pending" || widgetFiltersStatus === "running"));
|
|
33
|
+
const loadingError = (shouldLoadWidgetFilters ? widgetFiltersError : undefined) ?? automationsError;
|
|
25
34
|
if (!isInitialized) {
|
|
26
35
|
return null;
|
|
27
36
|
}
|
|
@@ -13,6 +13,7 @@ import { selectDashboardPermissions } from "../../../model/store/dashboardPermis
|
|
|
13
13
|
import { selectPersistedDashboard } from "../../../model/store/meta/metaSelectors.js";
|
|
14
14
|
import { selectCanManageWorkspace } from "../../../model/store/permissions/permissionsSelectors.js";
|
|
15
15
|
import { selectFilterContextFilters } from "../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
16
|
+
import { selectFilterViewParameters } from "../../../model/store/tabs/parameters/parametersSelectors.js";
|
|
16
17
|
import { selectIsDashboardShareLinkVisible, selectIsShareGrantVisible, } from "../../../model/store/topBar/topBarSelectors.js";
|
|
17
18
|
import { uiActions } from "../../../model/store/ui/index.js";
|
|
18
19
|
import { selectIsShareDialogOpen } from "../../../model/store/ui/uiSelectors.js";
|
|
@@ -28,6 +29,7 @@ const useShareDialogDashboardHeader = () => {
|
|
|
28
29
|
const isWorkspaceManager = useDashboardSelector(selectCanManageWorkspace);
|
|
29
30
|
const dashboardPermissions = useDashboardSelector(selectDashboardPermissions);
|
|
30
31
|
const dashboardFilters = useDashboardSelector(selectFilterContextFilters);
|
|
32
|
+
const dashboardParameters = useDashboardSelector(selectFilterViewParameters);
|
|
31
33
|
const isShareGrantHidden = !useDashboardSelector(selectIsShareGrantVisible);
|
|
32
34
|
const isDashboardShareDialogLinkEnabled = useDashboardSelector(selectEnableDashboardShareDialogLink);
|
|
33
35
|
const showDashboardShareLink = useDashboardSelector(selectIsDashboardShareLinkVisible);
|
|
@@ -78,6 +80,7 @@ const useShareDialogDashboardHeader = () => {
|
|
|
78
80
|
isCurrentUserWorkspaceManager: isWorkspaceManager,
|
|
79
81
|
dashboardPermissions,
|
|
80
82
|
dashboardFilters,
|
|
83
|
+
dashboardParameters,
|
|
81
84
|
isShareGrantHidden,
|
|
82
85
|
applyShareGrantOnSelect,
|
|
83
86
|
showDashboardShareLink,
|
|
@@ -89,7 +92,7 @@ const useShareDialogDashboardHeader = () => {
|
|
|
89
92
|
* @internal
|
|
90
93
|
*/
|
|
91
94
|
export function ShareDialogDashboardHeader() {
|
|
92
|
-
const { backend, workspace, isShareDialogOpen, persistedDashboard, currentUser, onCloseShareDialog, onApplyShareDialog, onErrorShareDialog, onInteractionShareDialog, isLockingSupported, isCurrentUserWorkspaceManager, dashboardPermissions, dashboardFilters, isShareGrantHidden, applyShareGrantOnSelect, showDashboardShareLink, onShareLinkCopy, isGranteeShareLoading, } = useShareDialogDashboardHeader();
|
|
95
|
+
const { backend, workspace, isShareDialogOpen, persistedDashboard, currentUser, onCloseShareDialog, onApplyShareDialog, onErrorShareDialog, onInteractionShareDialog, isLockingSupported, isCurrentUserWorkspaceManager, dashboardPermissions, dashboardFilters, dashboardParameters, isShareGrantHidden, applyShareGrantOnSelect, showDashboardShareLink, onShareLinkCopy, isGranteeShareLoading, } = useShareDialogDashboardHeader();
|
|
93
96
|
if (!isShareDialogOpen) {
|
|
94
97
|
return null;
|
|
95
98
|
}
|
|
@@ -100,5 +103,5 @@ export function ShareDialogDashboardHeader() {
|
|
|
100
103
|
canShareLockedAffectedObject: dashboardPermissions.canShareLockedDashboard,
|
|
101
104
|
canViewAffectedObject: dashboardPermissions.canViewDashboard,
|
|
102
105
|
};
|
|
103
|
-
return (_jsx(ShareDialog, { backend: backend, workspace: workspace, isVisible: isShareDialogOpen, currentUser: currentUser, sharedObject: persistedDashboard, onCancel: onCloseShareDialog, onApply: onApplyShareDialog, onError: onErrorShareDialog, isLockingSupported: isLockingSupported, isCurrentUserWorkspaceManager: isCurrentUserWorkspaceManager, currentUserPermissions: currentUserPermissions, dashboardFilters: dashboardFilters, onInteraction: onInteractionShareDialog, isShareGrantHidden: isShareGrantHidden, applyShareGrantOnSelect: applyShareGrantOnSelect, showDashboardShareLink: showDashboardShareLink, onShareLinkCopy: onShareLinkCopy, isGranteeShareLoading: isGranteeShareLoading }));
|
|
106
|
+
return (_jsx(ShareDialog, { backend: backend, workspace: workspace, isVisible: isShareDialogOpen, currentUser: currentUser, sharedObject: persistedDashboard, onCancel: onCloseShareDialog, onApply: onApplyShareDialog, onError: onErrorShareDialog, isLockingSupported: isLockingSupported, isCurrentUserWorkspaceManager: isCurrentUserWorkspaceManager, currentUserPermissions: currentUserPermissions, dashboardFilters: dashboardFilters, dashboardParameters: dashboardParameters, onInteraction: onInteractionShareDialog, isShareGrantHidden: isShareGrantHidden, applyShareGrantOnSelect: applyShareGrantOnSelect, showDashboardShareLink: showDashboardShareLink, onShareLinkCopy: onShareLinkCopy, isGranteeShareLoading: isGranteeShareLoading }));
|
|
104
107
|
}
|
|
@@ -6,7 +6,7 @@ import { BackendProvider, ErrorComponent as DefaultError, LoadingComponent as De
|
|
|
6
6
|
import { OverlayController, OverlayControllerProvider } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { ThemeProvider } from "@gooddata/sdk-ui-theme-provider";
|
|
8
8
|
import { DashboardStoreProvider } from "../../../model/react/DashboardStoreProvider.js";
|
|
9
|
-
import {
|
|
9
|
+
import { DefaultAlertingDialog } from "../../alerting/DefaultAlertingDialog/DefaultAlertingDialog.js";
|
|
10
10
|
import { DefaultAlertingManagementDialogNew } from "../../alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.js";
|
|
11
11
|
import { DASHBOARD_OVERLAYS_Z_INDEX } from "../../constants/zIndex.js";
|
|
12
12
|
import { DashboardComponentsProvider } from "../../dashboardContexts/DashboardComponentsContext.js";
|
|
@@ -58,7 +58,7 @@ function resolveDialogComponents(props) {
|
|
|
58
58
|
ScheduledEmailManagementDialogComponent: props.ScheduledEmailManagementDialogComponent ?? DefaultScheduledEmailManagementDialog,
|
|
59
59
|
ShareDialogComponent: props.ShareDialogComponent ?? DefaultShareDialog,
|
|
60
60
|
AlertingManagementDialogComponent: props.AlertingManagementDialogComponent ?? DefaultAlertingManagementDialogNew,
|
|
61
|
-
AlertingDialogComponent: props.AlertingDialogComponent ??
|
|
61
|
+
AlertingDialogComponent: props.AlertingDialogComponent ?? DefaultAlertingDialog,
|
|
62
62
|
SaveAsDialogComponent: props.SaveAsDialogComponent ?? DefaultSaveAsDialog,
|
|
63
63
|
DashboardSettingsDialogComponent: props.DashboardSettingsDialogComponent ?? DefaultDashboardSettingsDialog,
|
|
64
64
|
};
|