@gooddata/sdk-ui-dashboard 11.68.0-alpha.2 → 11.68.0-alpha.3
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 +3 -3
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/automation/index.d.ts.map +1 -1
- package/esm/_staging/automation/index.js +4 -3
- package/esm/_staging/dashboard/flexibleLayout/facade/item.d.ts.map +1 -1
- package/esm/_staging/dashboard/flexibleLayout/facade/item.js +2 -2
- package/esm/_staging/dashboard/flexibleLayout/facade/section.d.ts.map +1 -1
- package/esm/_staging/dashboard/flexibleLayout/facade/section.js +4 -4
- package/esm/_staging/dateFilterConfig/validation.d.ts.map +1 -1
- package/esm/_staging/dateFilterConfig/validation.js +3 -2
- package/esm/_staging/drills/drillingUtils.d.ts.map +1 -1
- package/esm/_staging/drills/drillingUtils.js +2 -2
- package/esm/_staging/objectUtils/setOrDelete.d.ts.map +1 -1
- package/esm/_staging/objectUtils/setOrDelete.js +3 -3
- package/esm/_staging/sharedHooks/useEventToastMessage.d.ts.map +1 -1
- package/esm/_staging/sharedHooks/useEventToastMessage.js +3 -3
- package/esm/kdaDialog/components/bars/AttributeBar.d.ts.map +1 -1
- package/esm/kdaDialog/components/bars/AttributeBar.js +11 -6
- package/esm/kdaDialog/composition/AddFilterButton.d.ts +3 -1
- package/esm/kdaDialog/composition/AddFilterButton.d.ts.map +1 -1
- package/esm/kdaDialog/composition/AddFilterButton.js +4 -4
- package/esm/kdaDialog/composition/FiltersBar.d.ts.map +1 -1
- package/esm/kdaDialog/composition/FiltersBar.js +23 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.d.ts.map +1 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.js +8 -5
- package/esm/model/commandHandlers/common/drillRevalidationUtils.d.ts.map +1 -1
- package/esm/model/commandHandlers/common/drillRevalidationUtils.js +3 -3
- package/esm/model/commandHandlers/common/validateDrills.d.ts.map +1 -1
- package/esm/model/commandHandlers/common/validateDrills.js +2 -2
- package/esm/model/commandHandlers/dashboard/changeSharingHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/changeSharingHandler.js +2 -2
- package/esm/model/commandHandlers/dashboard/common/filterViews.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/filterViews.js +6 -5
- package/esm/model/commandHandlers/dashboard/common/stateInitializers.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/stateInitializers.js +3 -2
- package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +1 -1
- package/esm/model/commandHandlers/drill/common/filterValuesResolver.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/common/filterValuesResolver.js +2 -2
- package/esm/model/commandHandlers/drill/crossFilteringHandler.js +2 -2
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.js +4 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/common.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/common.js +4 -4
- package/esm/model/commandHandlers/layout/addLayoutSectionHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/addLayoutSectionHandler.js +2 -2
- package/esm/model/commandHandlers/layout/addSectionItemsHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/addSectionItemsHandler.js +3 -3
- package/esm/model/commandHandlers/layout/removeLayoutSectionHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/removeLayoutSectionHandler.js +2 -2
- package/esm/model/commandHandlers/layout/replaceSectionItemHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/replaceSectionItemHandler.js +3 -3
- package/esm/model/commandHandlers/layout/validation/itemValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/validation/itemValidation.js +2 -2
- package/esm/model/commandHandlers/layout/validation/layoutValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/validation/layoutValidation.js +6 -6
- package/esm/model/commandHandlers/parameters/changeParameterValuesHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/parameters/changeParameterValuesHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/validation/filterValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/validation/filterValidation.js +6 -5
- package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.js +5 -6
- package/esm/model/events/base.js +3 -3
- package/esm/model/events/dashboard.d.ts +11 -4
- package/esm/model/events/dashboard.d.ts.map +1 -1
- package/esm/model/events/util.d.ts.map +1 -1
- package/esm/model/events/util.js +3 -3
- package/esm/model/react/useWidgetFilters.d.ts.map +1 -1
- package/esm/model/react/useWidgetFilters.js +2 -2
- package/esm/model/store/catalog/catalogSelectors.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogSelectors.js +7 -6
- package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.js +12 -12
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.d.ts.map +1 -1
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.js +3 -3
- package/esm/model/store/tabs/filterContext/filterContextSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/filterContext/filterContextSelectors.js +10 -9
- package/esm/model/store/tabs/layout/layoutSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/layout/layoutSelectors.js +3 -2
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.js +3 -2
- package/esm/model/types/dateFilterTypes.d.ts.map +1 -1
- package/esm/model/types/dateFilterTypes.js +3 -3
- package/esm/model/types/layoutTypes.d.ts.map +1 -1
- package/esm/model/types/layoutTypes.js +6 -5
- package/esm/model/types/widgetTypes.d.ts.map +1 -1
- package/esm/model/types/widgetTypes.js +2 -2
- package/esm/model/utils/filterResolver.d.ts.map +1 -1
- package/esm/model/utils/filterResolver.js +2 -2
- package/esm/plugins/customizationApis/fluidLayoutCustomizer.d.ts.map +1 -1
- package/esm/plugins/customizationApis/fluidLayoutCustomizer.js +4 -3
- package/esm/presentation/automations/alerting/state/useAlertFormValidation.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/useAlertFormValidation.js +2 -2
- package/esm/presentation/automations/alerting/utils/transformation.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/utils/transformation.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.js +2 -2
- package/esm/presentation/automations/shared/automationFilters/utils.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/utils.js +6 -6
- package/esm/presentation/automations/shared/utils/automationUtils.d.ts.map +1 -1
- package/esm/presentation/automations/shared/utils/automationUtils.js +4 -3
- package/esm/presentation/dashboard/defaultDashboardThemeModifier.d.ts.map +1 -1
- package/esm/presentation/dashboard/defaultDashboardThemeModifier.js +4 -3
- package/esm/presentation/dashboard/types.d.ts +2 -0
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.js +2 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/ParameterDetail.js +3 -3
- package/esm/presentation/drill/types.d.ts.map +1 -1
- package/esm/presentation/drill/types.js +10 -9
- package/esm/presentation/drill/utils/drillDownUtils.d.ts.map +1 -1
- package/esm/presentation/drill/utils/drillDownUtils.js +3 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributeListItem.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributeListItem.js +2 -3
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.js +3 -3
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.js +2 -2
- package/esm/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js +2 -2
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.js +3 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.js +3 -3
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.js +3 -2
- package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.js +2 -2
- package/esm/presentation/widget/common/configuration/utils.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/utils.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.js +3 -2
- package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.js +5 -5
- package/esm/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.js +3 -3
- package/esm/presentation/widget/richText/RestrictedReferencesDialog.js +1 -1
- package/esm/sdk-ui-dashboard.d.ts +13 -4
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +5 -5
- package/esm/widgets/placeholders/types.js +4 -4
- package/package.json +23 -23
- package/styles/css/configurationPanel.css +0 -6
- package/styles/css/configurationPanel.css.map +1 -1
- package/styles/css/filterBar.css +0 -20
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +2 -27
- package/styles/css/main.css.map +1 -1
- package/styles/scss/configurationPanel.scss +0 -8
- package/styles/scss/filterBar.scss +0 -25
package/NOTICE
CHANGED
|
@@ -11,9 +11,9 @@ This product includes a number of subcomponents with separate copyright notices
|
|
|
11
11
|
|
|
12
12
|
The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
|
|
13
13
|
|
|
14
|
-
Date generated: 2026-11-
|
|
14
|
+
Date generated: 2026-11-6
|
|
15
15
|
|
|
16
|
-
Revision ID:
|
|
16
|
+
Revision ID: d5b83a8355edc9eec2ad7787276b02a1a676cb3f
|
|
17
17
|
|
|
18
18
|
================================================================================
|
|
19
19
|
================================================================================
|
|
@@ -69383,4 +69383,4 @@ MIT
|
|
|
69383
69383
|
--------------------------------------------------------------------------------
|
|
69384
69384
|
--------------------------------------------------------------------------------
|
|
69385
69385
|
|
|
69386
|
-
Report Generated by FOSSA on 2026-11-
|
|
69386
|
+
Report Generated by FOSSA on 2026-11-6
|
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.68.0-alpha.
|
|
1
|
+
export declare const LIB_VERSION = "11.68.0-alpha.3";
|
|
2
2
|
export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
3
3
|
export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
4
4
|
//# sourceMappingURL=__version.d.ts.map
|
package/esm/__version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2021 GoodData Corporation
|
|
2
2
|
// DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
|
|
3
|
-
export const LIB_VERSION = "11.68.0-alpha.
|
|
3
|
+
export const LIB_VERSION = "11.68.0-alpha.3";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_staging/automation/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,KAAK,+BAA+B,EACpC,KAAK,yCAAyC,EAE9C,KAAK,OAAO,EACZ,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,KAAK,EACV,KAAK,cAAc,EAEnB,KAAK,cAAc,EAOtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_staging/automation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
|
-
import {
|
|
2
|
+
import { omit, pick } from "lodash-es";
|
|
3
3
|
import { assertNever, idRef, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isFilter, isFilterContextItem, } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
5
|
export const isDashboardAutomation = (automation) => {
|
|
5
6
|
if (!automation) {
|
|
6
7
|
return false;
|
|
@@ -229,8 +230,8 @@ export const areAutomationsEqual = (originalAutomation, updatedAutomation) => {
|
|
|
229
230
|
const origAutomationExportDefinitions = originalAutomation.exportDefinitions
|
|
230
231
|
?.map((exportDefinition) => pick(exportDefinition, ["requestPayload", "title"]))
|
|
231
232
|
.sort(sortByFormat);
|
|
232
|
-
return (
|
|
233
|
-
|
|
233
|
+
return (_isEqual(automationWithoutExportDefinitions, origAutomationWithoutExportDefinitions) &&
|
|
234
|
+
_isEqual(automationExportDefinitions, origAutomationExportDefinitions));
|
|
234
235
|
};
|
|
235
236
|
export const convertCurrentUserToAutomationRecipient = (users, user) => {
|
|
236
237
|
const foundUser = users.find((u) => u.login === user.login);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../../../src/_staging/dashboard/flexibleLayout/facade/item.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../../../src/_staging/dashboard/flexibleLayout/facade/item.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { areObjRefsEqual, isDashboardLayout, isDashboardLayoutItem, isInsightWidget, isInsightWidgetDefinition, isKpiWidget, isKpiWidgetDefinition, isObjRef, isWidget, isWidgetDefinition, } from "@gooddata/sdk-model";
|
|
3
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
4
|
import { areLayoutPathsEqual, updateItemIndex } from "../../../layout/coordinates.js";
|
|
5
5
|
import { determineWidthForScreen } from "../../../layout/sizing.js";
|
|
6
6
|
/**
|
|
@@ -50,7 +50,7 @@ export class DashboardLayoutItemFacade {
|
|
|
50
50
|
return undefined;
|
|
51
51
|
}
|
|
52
52
|
widgetEquals(widget) {
|
|
53
|
-
return
|
|
53
|
+
return _isEqual(this.widget(), widget);
|
|
54
54
|
}
|
|
55
55
|
widgetIs(widget) {
|
|
56
56
|
return this.widget() === widget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../../../src/_staging/dashboard/flexibleLayout/facade/section.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../../../src/_staging/dashboard/flexibleLayout/facade/section.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAGvG,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EACrC,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,qBAAa,4BAA4B,CAAC,QAAQ,CAAE,YAAW,6BAA6B,CAAC,QAAQ,CAAC;IAE9F,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,QAAQ,CAAC;IACjE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB;IAHvD,SAAS,aACc,YAAY,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAC9C,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAC1C,YAAY,EAAE,kBAAkB,EACnD;IAEJ,OAAc,GAAG,CAAC,QAAQ,EACtB,YAAY,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAC9C,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAC1C,KAAK,EAAE,kBAAkB,GAC1B,6BAA6B,CAAC,QAAQ,CAAC,CAEzC;IAEM,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAE9C;IAEM,MAAM,IAAI,6BAA6B,GAAG,SAAS,CAEzD;IAEM,KAAK,IAAI,MAAM,GAAG,SAAS,CAEjC;IAEM,WAAW,IAAI,MAAM,GAAG,SAAS,CAEvC;IAEM,KAAK,IAAI,kBAAkB,CAEjC;IAEM,OAAO,IAAI,OAAO,CAExB;IAEM,MAAM,IAAI,OAAO,CAEvB;IAEM,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,KAAK,OAAO,GAAG,OAAO,CAErF;IAEM,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,6BAA6B,CAAC,QAAQ,CAAC,KAAK,OAAO,GAAG,OAAO,CAExF;IAEM,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAEjD;IAEM,YAAY,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAElE;IAEM,SAAS,IAAI,OAAO,CAG1B;IAEM,QAAQ,IAAI,OAAO,CAGzB;IAEM,cAAc,IAAI,OAAO,CAG/B;IAEM,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzC;IAEM,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAErD;IAEM,OAAO,IAAI,OAAO,CAExB;IAEM,KAAK,IAAI,2BAA2B,CAAC,QAAQ,CAAC,CAEpD;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,GAAG,SAAS,CAO3E;IAEM,MAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAEhD;CACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
|
-
import {
|
|
2
|
+
import { _isEqual } from "@gooddata/util";
|
|
3
3
|
import { areSectionLayoutPathsEqual, asLayoutItemPath, updateSectionIndex, } from "../../../layout/coordinates.js";
|
|
4
4
|
import { DashboardLayoutItemFacade } from "./item.js";
|
|
5
5
|
import { DashboardLayoutItemsFacade } from "./items.js";
|
|
@@ -49,7 +49,7 @@ export class DashboardLayoutSectionFacade {
|
|
|
49
49
|
return areSectionLayoutPathsEqual(this.index(), index);
|
|
50
50
|
}
|
|
51
51
|
headerEquals(header) {
|
|
52
|
-
return
|
|
52
|
+
return _isEqual(this.header(), header);
|
|
53
53
|
}
|
|
54
54
|
hasHeader() {
|
|
55
55
|
const header = this.header();
|
|
@@ -64,10 +64,10 @@ export class DashboardLayoutSectionFacade {
|
|
|
64
64
|
return !(description === null || description === undefined);
|
|
65
65
|
}
|
|
66
66
|
titleEquals(title) {
|
|
67
|
-
return
|
|
67
|
+
return _isEqual(this.title(), title);
|
|
68
68
|
}
|
|
69
69
|
descriptionEquals(description) {
|
|
70
|
-
return
|
|
70
|
+
return _isEqual(this.description(), description);
|
|
71
71
|
}
|
|
72
72
|
isEmpty() {
|
|
73
73
|
return this.items().count() === 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/_staging/dateFilterConfig/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EAEjB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/_staging/dateFilterConfig/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EAEjB,MAAM,qBAAqB,CAAC;AAsE7B;;;;GAIG;AACH,MAAM,MAAM,gCAAgC,GACtC,OAAO,GACP,kBAAkB,GAClB,wBAAwB,GACxB,uBAAuB,CAAC;AAE9B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,iBAAiB,EACzB,yBAAyB,GAAE,OAAc,GAC1C,gCAAgC,CAalC;AAED,eAAO,MAAM,iBAAiB,EAAE,gCAAgC,EAG/D,CAAC;AAQF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAErF;AAgFD;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,SAAS,GACpB,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAQvD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { groupBy
|
|
2
|
+
import { groupBy } from "lodash-es";
|
|
3
3
|
import { getDateFilterGranularities, } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
4
5
|
import { defaultDateFilterConfig } from "./defaultConfig.js";
|
|
5
6
|
function getDuplicateIdentifiers(options) {
|
|
6
7
|
const groups = groupBy(options, (filter) => filter.localIdentifier);
|
|
@@ -17,7 +18,7 @@ function containsVisibleFilter(filters) {
|
|
|
17
18
|
return filters?.some(isFilterVisible) ?? false;
|
|
18
19
|
}
|
|
19
20
|
function isRelativeFormVisible(filter) {
|
|
20
|
-
return isFilterVisible(filter) && !
|
|
21
|
+
return isFilterVisible(filter) && !_isEmpty(filter?.availableGranularities ?? []);
|
|
21
22
|
}
|
|
22
23
|
function isAnyFilterVisible(config) {
|
|
23
24
|
return (isFilterVisible(config.allTime) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drillingUtils.d.ts","sourceRoot":"","sources":["../../../src/_staging/drills/drillingUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drillingUtils.d.ts","sourceRoot":"","sources":["../../../src/_staging/drills/drillingUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,uCAAuC,EAC5C,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAoBjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAEnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,4CAA4C,EACpD,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,iCAAiC,CAC7C,qBAAqB,EAAE,KAAK,CAAC,wBAAwB,CAAC,EACtD,2BAA2B,EAAE,MAAM,EAAE,GACtC,KAAK,CAAC,wBAAwB,CAAC,CAQjC;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,EAAE,CAG9E;AASD,wBAAgB,sCAAsC,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,EAAE,CAaxF;AAED,wBAAgB,wBAAwB,CACpC,gBAAgB,EAAE,wBAAwB,EAAE,EAC5C,UAAU,EAAE,WAAW,GACxB,wBAAwB,EAAE,CAM5B;AAED,wBAAgB,6BAA6B,CAAC,EAC1C,MAAM,GACT,EACK,sBAAsB,GACtB,oBAAoB,GACpB,4CAA4C,GAC5C,8BAA8B,GAAG,MAAM,CAc5C;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACrD,eAAe,EAAE,IAAI,CAAC,iBAAiB,GAAG,eAAe,EAAE,QAAQ,CAAC,EACpE,qBAAqB,EAAE,QAAQ,EAAE,GAClC,KAAK,CAAC,gBAAgB,GAAG,WAAW,CAAC,CAsBvC;AAED,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,wBAAwB,EAC/B,gBAAgB,EAAE,wBAAwB,EAAE,GAC7C,OAAO,CAWT;AAED,wBAAgB,6BAA6B,CACzC,uBAAuB,EAAE,sBAAsB,EAC/C,eAAe,EAAE,MAAM,GACxB,oBAAoB,EAAE,CAgBxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oDAAoD,CAChE,iCAAiC,EAAE,uCAAuC,EAC1E,kBAAkB,EAAE,MAAM,WAU7B;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,OAAO,EACf,kBAAkB,EAAE,yBAAyB,GAC9C,OAAO,CAOT;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC5C,IAAI,EAAE,yBAAyB,EAC/B,KAAK,EAAE,yBAAyB,GACjC,OAAO,CAKT;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,yBAAyB,GAAG,SAAS,CA0ChG;AAED,wBAAgB,8BAA8B,CAAC,kBAAkB,EAAE,yBAAyB,iBAc3F;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,aAAa,GAAG,SAAS,EACrC,qBAAqB,EAAE,QAAQ,EAAE,GAClC,MAAM,GAAG,SAAS,CAcpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2020-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { areObjRefsEqual, drillDownReferenceHierarchyRef, filterMeasureRef, filterObjRef, isAttributeFilter, isCrossFiltering, isDateFilter, isDrillFromAttribute, isDrillFromMeasure, isDrillToLegacyDashboard, isIdentifierRef, isKeyDriveAnalysis, isLocalIdRef, isMeasureDescriptor, isMeasureValueFilter, isRankingFilter, measureFilters, measureItem, measureLocalId, } from "@gooddata/sdk-model";
|
|
4
3
|
import { getMappingHeaderLocalIdentifier, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
export function getDrillsBySourceLocalIdentifiers(widgetDrillDefinition, drillSourceLocalIdentifiers) {
|
|
6
6
|
return widgetDrillDefinition.filter((d) => isDrillToLegacyDashboard(d) ||
|
|
7
7
|
isCrossFiltering(d) ||
|
|
@@ -81,7 +81,7 @@ export function isDrillConfigured(drill, configuredDrills) {
|
|
|
81
81
|
if (isDrillToLegacyDashboard(configDrill)) {
|
|
82
82
|
return false;
|
|
83
83
|
}
|
|
84
|
-
return
|
|
84
|
+
return _isEqual(drill, configDrill);
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
export function getValidDrillOriginAttributes(supportedItemsForWidget, localIdentifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setOrDelete.d.ts","sourceRoot":"","sources":["../../../src/_staging/objectUtils/setOrDelete.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setOrDelete.d.ts","sourceRoot":"","sources":["../../../src/_staging/objectUtils/setOrDelete.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,QAM/F"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// (C) 2022 GoodData Corporation
|
|
2
|
-
import {
|
|
1
|
+
// (C) 2022-2026 GoodData Corporation
|
|
2
|
+
import { _isEmpty } from "@gooddata/util";
|
|
3
3
|
export function setOrDelete(object, prop, value) {
|
|
4
|
-
if (
|
|
4
|
+
if (_isEmpty(value)) {
|
|
5
5
|
delete object[prop];
|
|
6
6
|
}
|
|
7
7
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventToastMessage.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useEventToastMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEventToastMessage.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useEventToastMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EACH,KAAK,oBAAoB,EAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAE1E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAO1E;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,SAAS,eAAe,GAAG,qBAAqB,QAClF,SAAS,GAAG,SAAS,GAAG,OAAO,aAC1B,oBAAoB,qBACZ,iBAAiB,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,iBAAiB,CAAC,sBAC1D,iBAAiB,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,iBAAiB,CAAC,SAgDlF,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { useEffect } from "react";
|
|
3
|
-
import { isEmpty } from "lodash-es";
|
|
4
3
|
import { useToastMessage } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { useDashboardEventsContext } from "../../model/react/DashboardEventsContext.js";
|
|
6
6
|
export function isMessageDescriptor(obj) {
|
|
7
|
-
return !
|
|
7
|
+
return !_isEmpty(obj) && obj.id !== undefined;
|
|
8
8
|
}
|
|
9
9
|
export function isMessageParameters(obj) {
|
|
10
|
-
return (!
|
|
10
|
+
return (!_isEmpty(obj) &&
|
|
11
11
|
(obj.values !== undefined ||
|
|
12
12
|
obj.duration !== undefined ||
|
|
13
13
|
obj.intensive !== undefined));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeBar.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/components/bars/AttributeBar.tsx"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EAGvC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AttributeBar.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/components/bars/AttributeBar.tsx"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EAGvC,MAAM,qBAAqB,CAAC;AAa7B,UAAU,kBAAkB;IACxB,SAAS,EAAE,4BAA4B,CAAC;IACxC,gBAAgB,EAAE,+BAA+B,EAAE,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,CAAC;CAC7D;AAOD,wBAAgB,YAAY,CAAC,KAAK,EAAE,kBAAkB,2CAoBrD"}
|
|
@@ -4,6 +4,7 @@ import { useCallback, useId } from "react";
|
|
|
4
4
|
import cx from "classnames";
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
6
|
import { dashboardAttributeFilterItemLocalIdentifier, } from "@gooddata/sdk-model";
|
|
7
|
+
import { useAutoupdateRef } from "@gooddata/sdk-ui";
|
|
7
8
|
import { AttributeFilterButton, } from "@gooddata/sdk-ui-filters";
|
|
8
9
|
import { UiChip, UiSkeleton, UiTooltip } from "@gooddata/sdk-ui-kit";
|
|
9
10
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
@@ -18,17 +19,21 @@ export function AttributeBar(props) {
|
|
|
18
19
|
return (_jsx("div", { className: cx("gd-kda-dialog-bar__attribute"), children: _jsx(KdaAttributeFilterWrapper, { filter: props.attribute, displayAsLabel: displayAsLabel, overlayPositionType: "absolute", deleteAriaLabel: deleteAriaLabel, onChange: props.onChange, onDelete: props.onDelete }) }));
|
|
19
20
|
}
|
|
20
21
|
function KdaAttributeFilterWrapper({ filter, displayAsLabel, overlayPositionType, deleteAriaLabel, onChange, onDelete, }) {
|
|
22
|
+
const onChangeRef = useAutoupdateRef(onChange);
|
|
23
|
+
const onDeleteRef = useAutoupdateRef(onDelete);
|
|
21
24
|
const handleFilterChanged = useCallback((newFilter) => {
|
|
22
|
-
|
|
23
|
-
}, [
|
|
25
|
+
onChangeRef.current?.(newFilter);
|
|
26
|
+
}, [onChangeRef]);
|
|
24
27
|
const handleFilterDeleted = useCallback((filter) => {
|
|
25
|
-
|
|
26
|
-
}, [
|
|
27
|
-
|
|
28
|
+
onDeleteRef.current?.(filter);
|
|
29
|
+
}, [onDeleteRef]);
|
|
30
|
+
const AttributeFilterComponent = useCallback((afProps) => (_jsx(KdaAttributeFilterComponent, { ...afProps, currentFilter: filter, onDelete: handleFilterDeleted, deleteAriaLabel: deleteAriaLabel ?? "" })), [deleteAriaLabel, filter, handleFilterDeleted]);
|
|
31
|
+
return (_jsx(StandaloneDashboardAttributeFilter, { filter: filter, displayAsLabel: displayAsLabel, overlayPositionType: overlayPositionType, onFilterChanged: handleFilterChanged, AttributeFilterComponent: AttributeFilterComponent, AttributeFilterLoadingComponent: KdaAttributeFilterLoadingComponent }));
|
|
28
32
|
}
|
|
29
33
|
function KdaAttributeFilterComponent({ onDelete, currentFilter, deleteAriaLabel, ...props }) {
|
|
30
34
|
const allAvailableSelectionTypes = useDashboardSelector(selectAvailableAttributeFilterSelectionTypes);
|
|
31
|
-
|
|
35
|
+
const DropdownButtonComponent = useCallback((ddProps) => (_jsx(KdaAttributeFilterDropdownButtonComponent, { ...ddProps, deleteAriaLabel: deleteAriaLabel, currentFilter: currentFilter, onDelete: onDelete })), [currentFilter, deleteAriaLabel, onDelete]);
|
|
36
|
+
return (_jsx(AttributeFilterButton, { ...props, menuConfig: { availableSelectionTypes: allAvailableSelectionTypes, showLabelsSwitch: false }, LoadingComponent: KdaAttributeFilterLoadingComponent, DropdownButtonComponent: DropdownButtonComponent }));
|
|
32
37
|
}
|
|
33
38
|
function KdaAttributeFilterLoadingComponent() {
|
|
34
39
|
return _jsx(UiSkeleton, { itemWidth: 160, itemHeight: 27, itemBorderRadius: 20 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddFilterButton.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/AddFilterButton.tsx"],"names":[],"mappings":"AAeA,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"AddFilterButton.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/AddFilterButton.tsx"],"names":[],"mappings":"AAeA,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,2CAmFjE"}
|
|
@@ -7,7 +7,7 @@ import { AttributesDropdown } from "../../presentation/filterBar/attributeFilter
|
|
|
7
7
|
import { useKdaState } from "../providers/KdaState.js";
|
|
8
8
|
import { useAddNewAttributeHandler } from "./hooks/useAddNewAttributeHandler.js";
|
|
9
9
|
import { useUnusedAttributes } from "./hooks/useUnusedAttributes.js";
|
|
10
|
-
export function AddFilterButton() {
|
|
10
|
+
export function AddFilterButton({ buttonId }) {
|
|
11
11
|
const intl = useIntl();
|
|
12
12
|
const attributes = useUnusedAttributes();
|
|
13
13
|
const dateDatasets = useMemo(() => [], []);
|
|
@@ -18,13 +18,13 @@ export function AddFilterButton() {
|
|
|
18
18
|
const attributesDropdownId = useId();
|
|
19
19
|
const isAddButtonDisabled = attributes.length === 0;
|
|
20
20
|
const { onSelectCallback } = useAddNewAttributeHandler();
|
|
21
|
-
const DropdownButtonComponent = useCallback(({
|
|
21
|
+
const DropdownButtonComponent = useCallback(({ buttonRef, isOpen, onClick }) => (_jsx(UiTooltip, { arrowPlacement: "left", triggerBy: ["hover", "focus"], content: tooltipText, anchor: _jsx(UiIconButton, { id: buttonId, icon: "plus", label: tooltipText, onClick: onClick, size: "small", variant: "tertiary", isDisabled: isAddButtonDisabled, ref: buttonRef, accessibilityConfig: {
|
|
22
22
|
ariaLabel: tooltipText,
|
|
23
23
|
ariaControls: isOpen ? attributesDropdownId : undefined,
|
|
24
24
|
ariaExpanded: isOpen,
|
|
25
25
|
ariaHaspopup: "dialog",
|
|
26
|
-
} }) })), [attributesDropdownId, isAddButtonDisabled, tooltipText]);
|
|
27
|
-
return (_jsx(AttributesDropdown, { id: attributesDropdownId, openOnInit: false, dateDatasets: dateDatasets, attributes: attributes, onSelect: onSelectCallback, onOpen: () => {
|
|
26
|
+
} }) })), [attributesDropdownId, buttonId, isAddButtonDisabled, tooltipText]);
|
|
27
|
+
return (_jsx(AttributesDropdown, { id: attributesDropdownId, openOnInit: false, returnFocusTo: buttonId, dateDatasets: dateDatasets, attributes: attributes, onSelect: onSelectCallback, onOpen: () => {
|
|
28
28
|
setState({
|
|
29
29
|
addFilterDropdownOpen: true,
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltersBar.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/FiltersBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FiltersBar.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/FiltersBar.tsx"],"names":[],"mappings":"AAwBA,wBAAgB,UAAU,4CA4DzB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2025-2026 GoodData Corporation
|
|
3
|
+
import { useCallback, useLayoutEffect, useRef } from "react";
|
|
3
4
|
import { useIntl } from "react-intl";
|
|
5
|
+
import { dashboardAttributeFilterItemLocalIdentifier, } from "@gooddata/sdk-model";
|
|
6
|
+
import { useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
4
7
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
5
8
|
import { selectRestrictedDashboardFilterCount } from "../../model/store/filtering/dashboardFilterSelectors.js";
|
|
6
9
|
import { selectAttributeFilterConfigsOverrides } from "../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
@@ -15,7 +18,26 @@ export function FiltersBar() {
|
|
|
15
18
|
const intl = useIntl();
|
|
16
19
|
const attributeConfigs = useDashboardSelector(selectAttributeFilterConfigsOverrides);
|
|
17
20
|
const restrictedFilterCount = useDashboardSelector(selectRestrictedDashboardFilterCount);
|
|
21
|
+
const addFilterButtonId = useIdPrefixed("kda-add-filter-button");
|
|
22
|
+
const attributeBarsRef = useRef(null);
|
|
23
|
+
const deletedIndexRef = useRef(null);
|
|
18
24
|
const { attributeFilters, onChangeAttributeFilter, onDeleteAttributeFilter } = useAttributeFiltersChangeHandler();
|
|
19
25
|
const { isAvailable, options, onPeriodChange } = usePeriodChangeHandler();
|
|
20
|
-
|
|
26
|
+
const onDelete = useCallback((filter) => {
|
|
27
|
+
deletedIndexRef.current = attributeFilters.indexOf(filter);
|
|
28
|
+
onDeleteAttributeFilter(filter);
|
|
29
|
+
}, [attributeFilters, onDeleteAttributeFilter]);
|
|
30
|
+
useLayoutEffect(() => {
|
|
31
|
+
const deletedIndex = deletedIndexRef.current;
|
|
32
|
+
if (deletedIndex === null) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
deletedIndexRef.current = null;
|
|
36
|
+
const bars = Array.from(attributeBarsRef.current?.children ?? []);
|
|
37
|
+
const bar = bars[Math.min(deletedIndex, bars.length - 1)];
|
|
38
|
+
const target = bar?.querySelector(".gd-ui-kit-chip__trigger") ??
|
|
39
|
+
document.getElementById(addFilterButtonId);
|
|
40
|
+
target?.focus();
|
|
41
|
+
}, [addFilterButtonId, attributeFilters]);
|
|
42
|
+
return (_jsx(KdaBar, { title: intl.formatMessage({ id: "kdaDialog.dialog.bars.filters.title" }), content: _jsxs(_Fragment, { children: [_jsx(KdaRestrictedFiltersNotice, { count: restrictedFilterCount }), _jsx(DateBar, { options: options, isAvailable: isAvailable, onPeriodChange: onPeriodChange }), _jsx("div", { ref: attributeBarsRef, style: { display: "contents" }, children: attributeFilters.map((attributeFilter, i) => (_jsx(AttributeBar, { attribute: attributeFilter, attributeConfigs: attributeConfigs, onChange: onChangeAttributeFilter, onDelete: onDelete }, dashboardAttributeFilterItemLocalIdentifier(attributeFilter) ?? i))) }), _jsx(AddFilterButton, { buttonId: addFilterButtonId })] }) }));
|
|
21
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyDriversFooter.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KeyDriversFooter.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"KeyDriversFooter.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KeyDriversFooter.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,gBAAgB,mDAyF/B"}
|
|
@@ -11,7 +11,7 @@ import { useKdaValidAttributes } from "./hooks/useKdaValidAttributes.js";
|
|
|
11
11
|
import { KdaAttributesDropdown } from "./KdaAttributesDropdown.js";
|
|
12
12
|
export function KeyDriversFooter() {
|
|
13
13
|
const { state, setState } = useKdaState();
|
|
14
|
-
const [
|
|
14
|
+
const [refocus, setRefocus] = useState();
|
|
15
15
|
const attributesButtonId = useIdPrefixed("kda-attributes-dropdown-button");
|
|
16
16
|
const isCatalogLoaded = useDashboardSelector(selectCatalogIsLoaded);
|
|
17
17
|
const isLoading = !isCatalogLoaded ||
|
|
@@ -22,7 +22,7 @@ export function KeyDriversFooter() {
|
|
|
22
22
|
const isError = state.itemsStatus === "error";
|
|
23
23
|
const { validAttributes, mapAttributes, initialAttributes, isSearchBarVisible } = useKdaValidAttributes();
|
|
24
24
|
const onApply = useCallback((selected) => {
|
|
25
|
-
|
|
25
|
+
setRefocus("applied");
|
|
26
26
|
setState({
|
|
27
27
|
selectedAttributes: selected.map((item) => {
|
|
28
28
|
const existingRef = state.selectedAttributes.find((ref) => item.displayForms.some((df) => areObjRefsEqual(df.ref, ref)));
|
|
@@ -37,16 +37,19 @@ export function KeyDriversFooter() {
|
|
|
37
37
|
const onClose = useCallback(() => {
|
|
38
38
|
setState({ attributesDropdownOpen: false });
|
|
39
39
|
}, [setState]);
|
|
40
|
+
if (refocus === "applied" && isLoading) {
|
|
41
|
+
setRefocus("reloading");
|
|
42
|
+
}
|
|
43
|
+
const isRefocusDue = refocus === "reloading" && !isLoading;
|
|
40
44
|
const autofocus = useUiAutofocusConnectors({
|
|
41
|
-
active:
|
|
42
|
-
refocusKey: `${applyCount}-${isLoading}`,
|
|
45
|
+
active: isRefocusDue,
|
|
43
46
|
initialFocus: attributesButtonId,
|
|
44
47
|
});
|
|
45
48
|
//Do not show footer when kda is not loaded at all
|
|
46
49
|
if (isError) {
|
|
47
50
|
return null;
|
|
48
51
|
}
|
|
49
|
-
return (_jsx("div", { ref: autofocus.ref, children: isLoading ? (_jsx(UiSkeleton, { itemHeight: 23, itemWidth: 300 })) : (_jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.description", values: {
|
|
52
|
+
return (_jsx("div", { ref: autofocus.ref, onFocus: isRefocusDue ? () => setRefocus(undefined) : undefined, children: isLoading ? (_jsx(UiSkeleton, { itemHeight: 23, itemWidth: 300 })) : (_jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.description", values: {
|
|
50
53
|
combinations: state.items.length,
|
|
51
54
|
attributes: state.selectedAttributes.length,
|
|
52
55
|
button: (chunks) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drillRevalidationUtils.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/common/drillRevalidationUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drillRevalidationUtils.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/common/drillRevalidationUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,QAAQ,EAKhB,MAAM,qBAAqB,CAAC;AAY7B,wBAAgB,wCAAwC,CACpD,eAAe,EAAE,QAAQ,EACzB,UAAU,EAAE,QAAQ,GACrB,OAAO,CAKT"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { insightFilters, insightMeasures, measureFilters, measureLocalId, } from "@gooddata/sdk-model";
|
|
3
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
4
|
function getSourceMeasureFilters(insight) {
|
|
5
5
|
return insightMeasures(insight)
|
|
6
6
|
.map((measure) => ({
|
|
@@ -10,6 +10,6 @@ function getSourceMeasureFilters(insight) {
|
|
|
10
10
|
.sort((left, right) => left.localIdentifier.localeCompare(right.localIdentifier));
|
|
11
11
|
}
|
|
12
12
|
export function shouldRevalidateDrillsAfterInsightChange(originalInsight, newInsight) {
|
|
13
|
-
return (!
|
|
14
|
-
!
|
|
13
|
+
return (!_isEqual(insightFilters(originalInsight), insightFilters(newInsight)) ||
|
|
14
|
+
!_isEqual(getSourceMeasureFilters(originalInsight), getSourceMeasureFilters(newInsight)));
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateDrills.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/common/validateDrills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validateDrills.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/common/validateDrills.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAG9B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAUnE,UAAU,iBAAiB;IACvB,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,6BAA6B,EAAE,OAAO,CAAC;IACvC,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,MAAM,EAAE,cAAc,CAAC;CAC1B;AAED,UAAU,sBAAsB;IAG5B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,wBAAiB,cAAc,CAC3B,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,CAAC,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,4BAA4B,CAAC,EAAE,EACzF,OAAO,GAAE,sBAA2B;;;;;;;;;;;;+BA8DvC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { all, call, put, select } from "redux-saga/effects";
|
|
4
3
|
import { isInsightWidget, widgetRef, } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { insightWidgetDrillsRemoved } from "../../events/insight.js";
|
|
6
6
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
7
7
|
import { uiActions } from "../../store/ui/index.js";
|
|
@@ -14,7 +14,7 @@ export function* validateDrills(ctx, cmd, widgets, options = {}) {
|
|
|
14
14
|
.filter(isInsightWidget) // KPI drills should not be validated like this and never removed
|
|
15
15
|
.map((widget) => call(validateInsightDrillDefinitions, ctx, cmd, widget)));
|
|
16
16
|
const widgetsToSanitize = drillValidationResults.filter(({ sanitizedDrills, widget }) => {
|
|
17
|
-
return !
|
|
17
|
+
return !_isEqual(widget.drills, sanitizedDrills);
|
|
18
18
|
});
|
|
19
19
|
const widgetsWithInvalidDrills = drillValidationResults.filter(({ invalidDrills }) => invalidDrills.length > 0);
|
|
20
20
|
const widgetsWithoutInvalidDrills = drillValidationResults.filter(({ invalidDrills }) => invalidDrills.length === 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeSharingHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/dashboard/changeSharingHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changeSharingHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/dashboard/changeSharingHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAa/C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,KAAK,uBAAuB,EAA2B,MAAM,2BAA2B,CAAC;AAKlG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA0HnE,wBAAiB,oBAAoB,CACjC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,cAAc,GACpB,YAAY,CAAC,uBAAuB,CAAC,CAgCvC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { batchActions } from "redux-batched-actions";
|
|
4
3
|
import { call, put, select } from "redux-saga/effects";
|
|
5
4
|
import { invariant } from "ts-invariant";
|
|
6
5
|
import { isFilterContext, isGranularAccessGrantee, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEmpty } from "@gooddata/util";
|
|
7
7
|
import { dashboardSharingChanged } from "../../events/dashboard.js";
|
|
8
8
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
9
9
|
import { dashboardPermissionsActions } from "../../store/dashboardPermissions/index.js";
|
|
@@ -57,7 +57,7 @@ function changeGrantees(ctx, saveSharingCtx) {
|
|
|
57
57
|
function* saveSharing(ctx, saveSharingCtx) {
|
|
58
58
|
const { granteesToAdd, granteesToDelete } = saveSharingCtx.cmd.payload.newSharingProperties;
|
|
59
59
|
const grantees = [...granteesToAdd, ...granteesToDelete].filter(isGranularAccessGrantee);
|
|
60
|
-
if (!
|
|
60
|
+
if (!_isEmpty(grantees)) {
|
|
61
61
|
yield call(changeGrantees, ctx, saveSharingCtx);
|
|
62
62
|
}
|
|
63
63
|
// get up-to-date permissions from backend
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterViews.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/filterViews.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGH,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGf,KAAK,+BAA+B,EAEpC,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,KAAK,MAAM,EAqBd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"filterViews.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/filterViews.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGH,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGf,KAAK,+BAA+B,EAEpC,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,KAAK,MAAM,EAqBd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAgQvD,KAAK,oBAAoB,GAAG;IAAE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAkBnE,UAAU,6BAA6B;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,4BAA4B,kBACtB,cAAc,qBACV,iBAAiB,EAAE,8BACV,WAAW,CAAC,MAAM,CAAC,2BACtB,+BAA+B,EAAE,KAC3D,6BAuJF,CAAC;AAIF;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C;;OAEG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAClE;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAC/C,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,oBAAoB,EAAE,EACnC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,8BAA8B,GACxC,OAAO,CAUT;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,WAAW,EAAE,oBAAoB,EAAE,EACnC,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,OAAO,GACpB,oBAAoB,GAAG,SAAS,CAQlC;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAC/C,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,oBAAoB,EAAE,EACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,kBAAkB,EAAE,aAAa,CAAC,8BAA8B,CAAC,EACjE,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,8BAA8B,GACzC,UAAU,CAIZ;AAED,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,oBAAoB,EAAE,EACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,kBAAkB,EAAE,aAAa,CAAC,8BAA8B,CAAC,EACjE,OAAO,GAAE,8BAAmC,GAC7C,UAAU,CAuDZ"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
|
-
import {
|
|
2
|
+
import { omit } from "lodash-es";
|
|
3
3
|
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardAttributeFilterItemTitle, dashboardAttributeFilterItemValidateElementsBy, dashboardFilterLocalIdentifier, dashboardMeasureValueFilterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, isDashboardTextAttributeFilter, isExportOverrideFilterContext, isFilterContext, isSingleSelectionFilter, } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
5
|
import { filterLocalIdentifiers } from "../../../store/filtering/dashboardFilterSelectors.js";
|
|
5
6
|
import { getRestrictedDashboardFilters } from "../../../store/filtering/restrictedFilterUtils.js";
|
|
6
7
|
import { applyMirroredFilterValue, findCounterpartFilter, targetAcceptsAttributeFilterValue, } from "../../../store/tabs/filterContext/filterSync.js";
|
|
@@ -33,7 +34,7 @@ const OMITTED_ATTRIBUTE_FILTER_PATHS = [
|
|
|
33
34
|
"attributeFilter.negativeSelection",
|
|
34
35
|
];
|
|
35
36
|
const hasSameAttributeFilterConfiguration = (filterA, filterB) => {
|
|
36
|
-
return
|
|
37
|
+
return _isEqual(omit(filterA, OMITTED_ATTRIBUTE_FILTER_PATHS), omit(filterB, OMITTED_ATTRIBUTE_FILTER_PATHS));
|
|
37
38
|
};
|
|
38
39
|
/**
|
|
39
40
|
* Checks that the non-view-editable configuration of two text filters matches.
|
|
@@ -68,9 +69,9 @@ const hasSameCrossTypeFilterConfiguration = (dashboardFilter, viewFilter, filter
|
|
|
68
69
|
const hasSameTitle = dashboardAttributeFilterItemTitle(dashboardFilter) === dashboardAttributeFilterItemTitle(viewFilter);
|
|
69
70
|
// Parent/validation props only apply to arbitrary filters — match filters don't support them
|
|
70
71
|
const hasSameParentConfig = !isDashboardArbitraryAttributeFilter(viewFilter) ||
|
|
71
|
-
(
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
(_isEqual(dashboardAttributeFilterItemFilterElementsBy(dashboardFilter), dashboardAttributeFilterItemFilterElementsBy(viewFilter)) &&
|
|
73
|
+
_isEqual(dashboardAttributeFilterItemFilterElementsByDate(dashboardFilter), dashboardAttributeFilterItemFilterElementsByDate(viewFilter)) &&
|
|
74
|
+
_isEqual(dashboardAttributeFilterItemValidateElementsBy(dashboardFilter), dashboardAttributeFilterItemValidateElementsBy(viewFilter)));
|
|
74
75
|
return hasSameDisplayForm && hasSameTitle && hasSameParentConfig;
|
|
75
76
|
};
|
|
76
77
|
/** Creates "All" state for text filters: always a negative arbitrary filter with empty selection */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateInitializers.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/stateInitializers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EAEtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEH,KAAK,mCAAmC,EACxC,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EAKpC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGd,KAAK,MAAM,EAOd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stateInitializers.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/stateInitializers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EAEtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEH,KAAK,mCAAmC,EACxC,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EAKpC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGd,KAAK,MAAM,EAOd,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAoB5E,OAAO,EACH,KAAK,gBAAgB,EAGxB,MAAM,+BAA+B,CAAC;AAiKvC,wBAAiB,+BAA+B,CAC5C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,SAAS,EACnB,gBAAgB,EAAE,iBAAiB,EACnC,YAAY,CAAC,EAAE,SAAS,CAAC,mCAAmC,CAAC,EAC7D,YAAY,CAAC,EAAE,MAAM,EACrB,mBAAmB,GAAE,wBAAwB,EAAO,GACrD,YAAY,CAAC;IACZ,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC,CA6GD;AAwJD,wBAAgB,YAAY,CACxB,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAInC;AAgGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAiB,oCAAoC,CACjD,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,QAAQ,EAAE,EACpB,QAAQ,EAAE,SAAS,EACnB,0CAA0C,EAAE,OAAO,EACnD,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,GAAG,SAAS,EAEjG,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,GAAG,SAAS,EACjF,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,EACjF,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC/D,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,EACrE,YAAY,CAAC,EAAE,SAAS,CAAC,mCAAmC,CAAC,EAC7D,kBAAkB,CAAC,EAAE,UAAU,EAC/B,wBAAwB,CAAC,EAAE,MAAM,EACjC,mBAAmB,GAAE,wBAAwB,EAAO,EACpD,0BAA0B,CAAC,EAAE,aAAa,CAAC,8BAA8B,CAAC,EAC1E,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,GACtD,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CA6NzC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { cloneDeep, compact,
|
|
2
|
+
import { cloneDeep, compact, update } from "lodash-es";
|
|
3
3
|
import { call, select } from "redux-saga/effects";
|
|
4
4
|
import { walkLayout, } from "@gooddata/sdk-backend-spi";
|
|
5
5
|
import { areObjRefsEqual, isDashboardAttributeFilter, isDashboardDateFilterWithDimension, isIdentifierRef, isInsightWidget, isObjRef, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
7
|
import { dashboardFilterContextDefinition, dashboardFilterContextIdentity, } from "../../../../_staging/dashboard/dashboardFilterContext.js";
|
|
7
8
|
import { dashboardLayoutSanitize } from "../../../../_staging/dashboard/dashboardLayout.js";
|
|
8
9
|
import { createDefaultFilterContext } from "../../../../_staging/dashboard/defaultFilterContext.js";
|
|
@@ -304,7 +305,7 @@ function* sanitizeFilterContext(ctx, filterContext, dataSets = [], displayForms,
|
|
|
304
305
|
if (!ctx.backend.capabilities.allowsInconsistentRelations) {
|
|
305
306
|
return filterContext;
|
|
306
307
|
}
|
|
307
|
-
if (!filterContext ||
|
|
308
|
+
if (!filterContext || _isEmpty(filterContext.filters)) {
|
|
308
309
|
return filterContext;
|
|
309
310
|
}
|
|
310
311
|
const storeUnavailableObjects = yield select(selectUnavailableObjects);
|
|
@@ -486,7 +486,7 @@ export function* saveDashboardHandler(ctx, cmd) {
|
|
|
486
486
|
yield put(savingActions.setSavingSuccess());
|
|
487
487
|
return dashboardSaved(ctx, dashboard, created, cmd.correlationId, {
|
|
488
488
|
...(isAiBuilder ? { originalDashboardId: saveCtx.dashboardFromState.identifier } : {}),
|
|
489
|
-
|
|
489
|
+
savedInsights,
|
|
490
490
|
});
|
|
491
491
|
}
|
|
492
492
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterValuesResolver.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/drill/common/filterValuesResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filterValuesResolver.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/drill/common/filterValuesResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAiBpE,OAAO,EAGH,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACxB,MAAM,+BAA+B,CAAC;AAIvC;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,CAAC,EAAE,kBAAkB,EAC5B,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA4ChC"}
|