@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { invariant } from "ts-invariant";
|
|
4
3
|
import { attributeElementsCount, filterAttributeElements, filterObjRef, isAbsoluteDateFilter, isAttributeFilter, isDateFilter, isObjRef, objRefToString, } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
const MAX_ELEMENTS_COUNT_PER_REQUEST = 500; // should cover all attribute filters created by UI where we have 500 elements limit
|
|
6
6
|
/**
|
|
7
7
|
* Resolves filter values
|
|
@@ -109,7 +109,7 @@ async function resolveAttributeFilterValues(filter, backend, workspace) {
|
|
|
109
109
|
const requestLimit = Math.min(selectedElementsCount, MAX_ELEMENTS_COUNT_PER_REQUEST);
|
|
110
110
|
let elementsPage = await elementsQuery.withLimit(requestLimit).query();
|
|
111
111
|
const elements = [];
|
|
112
|
-
while (!
|
|
112
|
+
while (!_isEmpty(elementsPage.items)) {
|
|
113
113
|
elements.push(...elementsPage.items);
|
|
114
114
|
elementsPage = await elementsPage.next();
|
|
115
115
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2023-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { all, call, put, select } from "redux-saga/effects";
|
|
4
3
|
import { v4 as uuid } from "uuid";
|
|
5
4
|
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, isDashboardAttributeFilterItem, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
6
|
import { addAttributeFilter, changeAttributeFilterSelection, removeAttributeFilters, } from "../../commands/filters.js";
|
|
7
7
|
import { crossFilteringRequested, crossFilteringResolved } from "../../events/drill.js";
|
|
8
8
|
import { generateFilterLocalIdentifier } from "../../store/_infra/generators.js";
|
|
@@ -38,7 +38,7 @@ function virtualFilterHasMatchInIntersection(virtualFilter, drillIntersectionFil
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
function shouldUpdateExistingFiltering(crossFilteringItemByWidget, drillIntersectionFilters, currentVirtualFilters, attributeFilterDisplayAsLabelMap) {
|
|
41
|
-
if (
|
|
41
|
+
if (_isEmpty(crossFilteringItemByWidget)) {
|
|
42
42
|
return false;
|
|
43
43
|
}
|
|
44
44
|
// Intersection may have multiple lengths in pivot table so we need to make sure that when we are updating existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drillToDashboardHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/drillToDashboardHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"drillToDashboardHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/drillToDashboardHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAkC/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EACH,KAAK,kCAAkC,EAG1C,MAAM,uBAAuB,CAAC;AAmB/B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAWnE,wBAAiB,uBAAuB,CACpC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,GACvB,YAAY,CAAC,kCAAkC,CAAC,CAoIlD"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { compact
|
|
2
|
+
import { compact } from "lodash-es";
|
|
3
3
|
import { call, put, select } from "redux-saga/effects";
|
|
4
4
|
import { invariant } from "ts-invariant";
|
|
5
5
|
import { areObjRefsEqual, dashboardAttributeFilterItemToAttributeFilter, dashboardDateFilterToDateFilterByWidget, dashboardFilterLocalIdentifier, dashboardMeasureValueFilterToMeasureValueFilter, insightMeasures, isDashboardAttributeFilter, isDashboardMeasureValueFilter, isDateFilter, isSimpleMeasure, measureFilters, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEmpty, _isEqual } from "@gooddata/util";
|
|
6
7
|
import { switchDashboardTab } from "../../commands/tabs.js";
|
|
7
8
|
import { drillToDashboardRequested, drillToDashboardResolved, } from "../../events/drill.js";
|
|
8
9
|
import { generateFilterLocalIdentifier } from "../../store/_infra/generators.js";
|
|
@@ -162,12 +163,12 @@ function* getWidgetAwareDashboardFilters(ctx, widget, filterContextItems) {
|
|
|
162
163
|
}));
|
|
163
164
|
const widgetFilters = yield call(getResolvedFiltersForWidget, ctx, widget, filtersPairs.map((pair) => pair.filter), attributeFilterConfigs);
|
|
164
165
|
return filtersPairs
|
|
165
|
-
.filter((pair) => widgetFilters.some((wf) =>
|
|
166
|
+
.filter((pair) => widgetFilters.some((wf) => _isEqual(wf, pair.filter)))
|
|
166
167
|
.map((pair) => pair.originalFilter);
|
|
167
168
|
}
|
|
168
169
|
function isDateFilterDisabled(insight) {
|
|
169
170
|
const measures = insightMeasures(insight);
|
|
170
|
-
return
|
|
171
|
+
return _isEmpty(measures)
|
|
171
172
|
? false
|
|
172
173
|
: measures.every((measure) => {
|
|
173
174
|
if (isSimpleMeasure(measure)) {
|
package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addAttributeFilterHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addAttributeFilterHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAEH,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAexE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYtE,wBAAiB,yBAAyB,CACtC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,EACxB,IAAI,GAAE,QAAQ,GAAG,aAAwB,GAC1C,YAAY,CAAC,IAAI,CAAC,CAyJpB;AAED,wBAAiB,uBAAuB,CACpC,GAAG,EAAE,gBAAgB,EACrB,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,yBAAyB;;;;;;sLAqC5C"}
|
package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.js
CHANGED
|
@@ -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 { all, call, put, select } from "redux-saga/effects";
|
|
5
4
|
import { invariant } from "ts-invariant";
|
|
6
5
|
import { DashboardAttributeFilterSelectionTypeValues, areObjRefsEqual, isInsightWidget, objRefToString, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEmpty } from "@gooddata/util";
|
|
7
7
|
import { attributeFilterAdded } from "../../../events/filters.js";
|
|
8
8
|
import { invalidArgumentsProvided } from "../../../events/general.js";
|
|
9
9
|
import { dispatchDashboardEvent } from "../../../store/_infra/eventDispatcher.js";
|
|
@@ -31,7 +31,7 @@ export function* addAttributeFilterHandler(ctx, cmd, type = "normal") {
|
|
|
31
31
|
}
|
|
32
32
|
const allFilters = yield select(selectFilterContextAttributeFilterItems);
|
|
33
33
|
const resolvedDisplayForm = yield call(resolveDisplayFormMetadata, ctx, [usedDisplayForm]);
|
|
34
|
-
if (!
|
|
34
|
+
if (!_isEmpty(resolvedDisplayForm.missing)) {
|
|
35
35
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to add filter for a non-existing display form ${objRefToString(usedDisplayForm)}.`);
|
|
36
36
|
}
|
|
37
37
|
const displayFormMetadata = resolvedDisplayForm.resolved.get(usedDisplayForm);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTextAttributeFilterHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addTextAttributeFilterHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAa/C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAW5E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAYtE,wBAAiB,6BAA6B,CAC1C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,uBAAuB,GAC7B,YAAY,CAAC,IAAI,CAAC,CA2GpB"}
|
package/esm/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 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 { DashboardAttributeFilterSelectionTypeValues, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, isInsightWidget, objRefToString, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEmpty } from "@gooddata/util";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../../events/general.js";
|
|
8
8
|
import { selectBackendCapabilities } from "../../../store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
9
9
|
import { selectCanAddMoreFilters, selectFilterContextAttributeFilterItemByDisplayForm, selectFilterContextAttributeFilterItemByLocalId, selectFilterContextAttributeFilterItems, } from "../../../store/tabs/filterContext/filterContextSelectors.js";
|
|
@@ -61,7 +61,7 @@ export function* addTextAttributeFilterHandler(ctx, cmd) {
|
|
|
61
61
|
localIdentifier: addedFilterLocalIdentifier,
|
|
62
62
|
selectionType: DashboardAttributeFilterSelectionTypeValues.LIST_OR_TEXT,
|
|
63
63
|
}));
|
|
64
|
-
if (!
|
|
64
|
+
if (!_isEmpty(configActions)) {
|
|
65
65
|
yield put(batchActions(configActions));
|
|
66
66
|
}
|
|
67
67
|
yield call(dispatchFilterContextChanged, ctx, cmd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAttributeFilterParentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setAttributeFilterParentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAW/E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKtE,wBAAiB,gCAAgC,CAC7C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,0BAA0B,GAChC,YAAY,CAAC,IAAI,CAAC,CAiEpB"}
|
package/esm/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { call, put, select } from "redux-saga/effects";
|
|
4
3
|
import { invariant } from "ts-invariant";
|
|
5
4
|
import { dashboardAttributeFilterItemFilterElementsBy, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
6
|
import { attributeFilterParentChanged } from "../../../events/filters.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../../events/general.js";
|
|
8
8
|
import { dispatchDashboardEvent } from "../../../store/_infra/eventDispatcher.js";
|
|
@@ -25,7 +25,7 @@ export function* setAttributeFilterParentsHandler(ctx, cmd) {
|
|
|
25
25
|
// reject the whole command. Anything new or edited is validated, which is what refuses a
|
|
26
26
|
// dependency on a filter the caller may not read.
|
|
27
27
|
const isCarriedOverRestrictedParent = (parent) => restrictedFilterLocalIdentifiers.has(parent.filterLocalIdentifier) &&
|
|
28
|
-
storedParents.some((stored) =>
|
|
28
|
+
storedParents.some((stored) => _isEqual(stored, parent));
|
|
29
29
|
const validationResult = yield call(validateAttributeFilterParents, ctx, affectedFilter, parentFilters.filter((parent) => !isCarriedOverRestrictedParent(parent)), allFilters, displayFormsMap);
|
|
30
30
|
if (validationResult !== "VALID") {
|
|
31
31
|
const message = validationResult === "EXTRANEOUS_PARENT"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/common.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,EACH,KAAK,+BAA+B,EACpC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAChC,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAqBhE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AAI5G,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,KAAK,eAAe,EAA0C,MAAM,0BAA0B,CAAC;AAExG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,CAAC;IAC9E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,GAAG,SAAS,CAAC,CAAC;IAC5F,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;CACtF;AAED,wBAAiB,iCAAiC,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAU9F;AAED;;GAEG;AACH,wBAAiB,0CAA0C,CACvD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,QAAQ,EAAE,2BAA2B,EACrC,YAAY,CAAC,EAAE,MAAM,GACtB,YAAY,CAAC,IAAI,CAAC,CAwBpB;AAED,wBAAiB,4BAA4B,CACzC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAC5B,YAAY,CAAC,IAAI,CAAC,CAkCpB;AAED,wBAAiB,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,YAAY,CAAC,OAAO,CAAC,CAuB3F;AAED,wBAAiB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB;;;yEAU1D;AAED,wBAAiB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,8YA4B1F;AAED,wBAAiB,4BAA4B;;;mBAE5C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { call, put, select } from "redux-saga/effects";
|
|
4
3
|
import { invariant } from "ts-invariant";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { findDateFilterOptionByValue } from "../../../_staging/dateFilterConfig/dateFilterOptionMapping.js";
|
|
6
6
|
import { removeAttributeFilters } from "../../commands/filters.js";
|
|
7
7
|
import { filterContextChanged, filterContextWorkingSelectionApplied } from "../../events/filters.js";
|
|
@@ -35,9 +35,9 @@ export function* dispatchFilterContextChangedForMutatedTabs(ctx, cmd, snapshot,
|
|
|
35
35
|
continue;
|
|
36
36
|
}
|
|
37
37
|
const configs = attributeFilterConfigs[tabId] ?? [];
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
if (_isEqual(snapshot.filterContexts[tabId], filterContexts[tabId]) &&
|
|
39
|
+
_isEqual(snapshot.workingFilterContexts[tabId], workingFilterContexts[tabId]) &&
|
|
40
|
+
_isEqual(snapshot.attributeFilterConfigs[tabId] ?? [], configs)) {
|
|
41
41
|
continue;
|
|
42
42
|
}
|
|
43
43
|
yield call(dispatchFilterContextChanged, ctx, cmd, tabId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLayoutSectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/addLayoutSectionHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addLayoutSectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/addLayoutSectionHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,KAAK,4BAA4B,EAAsB,MAAM,wBAAwB,CAAC;AAM/F,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA4DnE,wBAAiB,uBAAuB,CACpC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,GACvB,YAAY,CAAC,4BAA4B,CAAC,CAwF5C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { asLayoutItemPath, findSections, getParentPath, updateSectionIndex, } from "../../../_staging/layout/coordinates.js";
|
|
6
6
|
import { normalizeItemSizeToParent } from "../../../_staging/layout/sizing.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
@@ -24,7 +24,7 @@ function validateAndResolveItems(commandCtx) {
|
|
|
24
24
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to insert new section at wrong index ${index}. There are currently ${layout.sections.length} sections.`);
|
|
25
25
|
}
|
|
26
26
|
const stashValidationResult = validateAndResolveStashedItems(stash, initialItems);
|
|
27
|
-
if (!
|
|
27
|
+
if (!_isEmpty(stashValidationResult.missing)) {
|
|
28
28
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to use non-existing stashes. Identifiers of missing stashes: ${stashValidationResult.missing.join(", ")}`);
|
|
29
29
|
}
|
|
30
30
|
return stashValidationResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addSectionItemsHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/addSectionItemsHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addSectionItemsHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/addSectionItemsHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,KAAK,iCAAiC,EAA2B,MAAM,wBAAwB,CAAC;AAMzG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgHnE,wBAAiB,sBAAsB,CACnC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,CAAC,CAiFjD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { findSection, getItemIndex, getParentPath, getSectionIndex, serializeLayoutItemPath, updateItemIndex, } from "../../../_staging/layout/coordinates.js";
|
|
6
6
|
import { normalizeItemSizeToParent } from "../../../_staging/layout/sizing.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
@@ -28,7 +28,7 @@ function validateAndResolveItems(commandCtx) {
|
|
|
28
28
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to insert new item at wrong index ${itemIndex}. There are currently ${section.items.length} items.`);
|
|
29
29
|
}
|
|
30
30
|
const stashValidationResult = validateAndResolveStashedItems(stash, items);
|
|
31
|
-
if (!
|
|
31
|
+
if (!_isEmpty(stashValidationResult.missing)) {
|
|
32
32
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to use non-existing stashes. Identifiers of missing stashes: ${stashValidationResult.missing.join(", ")}`);
|
|
33
33
|
}
|
|
34
34
|
return {
|
|
@@ -45,7 +45,7 @@ function validateAndResolveItems(commandCtx) {
|
|
|
45
45
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to insert new item at wrong index ${serializeLayoutItemPath(itemPath)}. There are currently ${section.items.length} items.`);
|
|
46
46
|
}
|
|
47
47
|
const stashValidationResult = validateAndResolveStashedItems(stash, items);
|
|
48
|
-
if (!
|
|
48
|
+
if (!_isEmpty(stashValidationResult.missing)) {
|
|
49
49
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to use non-existing stashes. Identifiers of missing stashes: ${stashValidationResult.missing.join(", ")}`);
|
|
50
50
|
}
|
|
51
51
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeLayoutSectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/removeLayoutSectionHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeLayoutSectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/removeLayoutSectionHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAW/C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,KAAK,8BAA8B,EAAwB,MAAM,wBAAwB,CAAC;AAGnG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,wBAAiB,0BAA0B,CACvC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,oBAAoB,GAC1B,YAAY,CAAC,8BAA8B,CAAC,CA4D9C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { call, put, select } from "redux-saga/effects";
|
|
3
|
+
import { _isEmpty } from "@gooddata/util";
|
|
4
4
|
import { findSections, getParentPath, serializeLayoutSectionPath, updateSectionIndex, } from "../../../_staging/layout/coordinates.js";
|
|
5
5
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
6
6
|
import { layoutSectionRemoved } from "../../events/layout.js";
|
|
@@ -14,7 +14,7 @@ export function* removeLayoutSectionHandler(ctx, cmd) {
|
|
|
14
14
|
const { index, stashIdentifier } = cmd.payload;
|
|
15
15
|
const isLegacyCommand = typeof index === "number";
|
|
16
16
|
const sections = isLegacyCommand ? layout.sections : findSections(layout, index);
|
|
17
|
-
if (
|
|
17
|
+
if (_isEmpty(sections)) {
|
|
18
18
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to remove a section from an empty layout.`);
|
|
19
19
|
}
|
|
20
20
|
if (isLegacyCommand) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceSectionItemHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/replaceSectionItemHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replaceSectionItemHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/layout/replaceSectionItemHandler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,KAAK,mCAAmC,EAA6B,MAAM,wBAAwB,CAAC;AAK7G,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA4GnE,wBAAiB,yBAAyB,CACtC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,GACzB,YAAY,CAAC,mCAAmC,CAAC,CAsEnD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
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";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { findItem, findSection, getItemIndex, getParentPath, getSectionIndex, serializeLayoutItemPath, } from "../../../_staging/layout/coordinates.js";
|
|
6
6
|
import { normalizeItemSizeToParent } from "../../../_staging/layout/sizing.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
@@ -26,7 +26,7 @@ function validateAndResolve(commandCtx) {
|
|
|
26
26
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to replace non-existent item from index ${itemIndex} in section ${sectionIndex}. There are only ${fromSection.items.length} items in this section.`);
|
|
27
27
|
}
|
|
28
28
|
const stashValidationResult = validateAndResolveStashedItems(stash, items);
|
|
29
|
-
if (!
|
|
29
|
+
if (!_isEmpty(stashValidationResult.missing)) {
|
|
30
30
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to use non-existing stashes. Identifiers of missing stashes: ${stashValidationResult.missing.join(", ")}`);
|
|
31
31
|
}
|
|
32
32
|
return {
|
|
@@ -43,7 +43,7 @@ function validateAndResolve(commandCtx) {
|
|
|
43
43
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to replace non-existent item from index ${serializeLayoutItemPath(itemPath)}. There are only ${fromSection.items.length} items in this section.`);
|
|
44
44
|
}
|
|
45
45
|
const stashValidationResult = validateAndResolveStashedItems(stash, items);
|
|
46
|
-
if (!
|
|
46
|
+
if (!_isEmpty(stashValidationResult.missing)) {
|
|
47
47
|
throw invalidArgumentsProvided(ctx, commandCtx.cmd, `Attempting to use non-existing stashes. Identifiers of missing stashes: ${stashValidationResult.missing.join(", ")}`);
|
|
48
48
|
}
|
|
49
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/layout/validation/itemValidation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"itemValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/layout/validation/itemValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AA8B/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAcnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,KAAK,wBAAwB,EAAmB,MAAM,mCAAmC,CAAC;AAQnG,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAyBlE,KAAK,oBAAoB,GAAG;IACxB,eAAe,EAAE,qBAAqB,CAAC;IACvC,gBAAgB,EAAE,wBAAwB,CAAC;CAC9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAiB,+BAA+B,CAC5C,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,iBAAiB,GACvB,YAAY,CAAC,oBAAoB,CAAC,CAyBpC;AAyKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAiB,oCAAoC,CACjD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,oBAAoB,EAC3B,eAAe,GAAE,OAAe,GACjC,YAAY,CAAC,qBAAqB,EAAE,CAAC,CAsIvC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { call, select } from "redux-saga/effects";
|
|
4
3
|
import { invariant } from "ts-invariant";
|
|
5
4
|
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterObjRef, insightMeasures, insightRef, isDashboardAttributeFilterReference, isDashboardMeasureValueFilterReference, isInsightWidget, isKpiWidget, isRichTextWidget, measureItem, objRefToString, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
6
|
import { newInsight } from "../../../../_staging/insight/insightBuilder.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../../events/general.js";
|
|
8
8
|
import { insightSelectDateDataset, queryDateDatasetsForInsight, } from "../../../queries/insights.js";
|
|
@@ -43,7 +43,7 @@ function normalizeItems(items, insights) {
|
|
|
43
43
|
export function* validateAndNormalizeWidgetItems(ctx, items, cmd) {
|
|
44
44
|
const insightRefs = extractInsightRefsFromItems(items.resolved);
|
|
45
45
|
const resolvedInsights = yield call(resolveInsights, ctx, insightRefs);
|
|
46
|
-
if (!
|
|
46
|
+
if (!_isEmpty(resolvedInsights.missing)) {
|
|
47
47
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to add dashboard items that reference missing insights: ${resolvedInsights.missing
|
|
48
48
|
.map(objRefToString)
|
|
49
49
|
.join(", ")}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layoutValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/layout/validation/layoutValidation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layoutValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/layout/validation/layoutValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAS5D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACH,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC/B,MAAM,+BAA+B,CAAC;AAEvC,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,EACjD,KAAK,EAAE,kBAAkB,GAAG,eAAe,GAAG,MAAM,GACrD,OAAO,CA4BT;AAED,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,EACjD,UAAU,EAAE,eAAe,GAAG,kBAAkB,GAAG,MAAM,GAC1D,OAAO,CAOT;AAED,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,8BAA8B,EACvC,KAAK,EAAE,eAAe,GAAG,MAAM,GAChC,OAAO,CAyBT;AAED,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,8BAA8B,EACvC,KAAK,EAAE,eAAe,GAAG,MAAM,GAChC,OAAO,CAOT"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// (C) 2021-
|
|
2
|
-
import {
|
|
1
|
+
// (C) 2021-2026 GoodData Corporation
|
|
2
|
+
import { _isEmpty } from "@gooddata/util";
|
|
3
3
|
import { findSection, findSections, getItemIndex, getSectionIndex, } from "../../../../_staging/layout/coordinates.js";
|
|
4
4
|
export function validateSectionPlacement(layout, index) {
|
|
5
5
|
if (typeof index === "number") {
|
|
6
6
|
if (index === -1) {
|
|
7
7
|
return true;
|
|
8
8
|
}
|
|
9
|
-
if (
|
|
9
|
+
if (_isEmpty(layout.sections) && !index) {
|
|
10
10
|
return true;
|
|
11
11
|
}
|
|
12
12
|
// using <= here so that we can add to the last place not only by using -1 by also by using (lastIndex+1)
|
|
@@ -18,7 +18,7 @@ export function validateSectionPlacement(layout, index) {
|
|
|
18
18
|
return true;
|
|
19
19
|
}
|
|
20
20
|
const sections = findSections(layout, index);
|
|
21
|
-
if (
|
|
21
|
+
if (_isEmpty(sections) && !sectionIndex) {
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
24
|
// using <= here so that we can add to the last place not only by using -1 by also by using (lastIndex+1)
|
|
@@ -39,7 +39,7 @@ export function validateItemPlacement(section, index) {
|
|
|
39
39
|
if (index === -1) {
|
|
40
40
|
return true;
|
|
41
41
|
}
|
|
42
|
-
if (
|
|
42
|
+
if (_isEmpty(section.items) && !index) {
|
|
43
43
|
return true;
|
|
44
44
|
}
|
|
45
45
|
// using <= here so that we can add to the last place not only by using -1 by also by using (lastIndex+1)
|
|
@@ -50,7 +50,7 @@ export function validateItemPlacement(section, index) {
|
|
|
50
50
|
if (itemIndex === -1) {
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
53
|
-
if (
|
|
53
|
+
if (_isEmpty(section.items) && !itemIndex) {
|
|
54
54
|
return true;
|
|
55
55
|
}
|
|
56
56
|
// using <= here so that we can add to the last place not only by using -1 by also by using (lastIndex+1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeParameterValuesHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/parameters/changeParameterValuesHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changeParameterValuesHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/parameters/changeParameterValuesHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,KAAK,sBAAsB,EAAmB,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAY3E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;;;GAOG;AACH,wBAAiB,4BAA4B,CACzC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,sBAAsB,GAC5B,YAAY,CAAC,IAAI,CAAC,CA2BpB;AAoCD;;;;;GAKG;AACH,wBAAiB,wCAAwC,CACrD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC,EAClE,WAAW,EAAE,MAAM,GACpB,YAAY,CAAC,IAAI,CAAC,CAOpB;AAED;;;;;GAKG;AACH,wBAAiB,yBAAyB,CACtC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,sBAAsB,EAAE,GAAG,SAAS,GACnD,YAAY,CAAC,IAAI,CAAC,CASpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { call, put, select } from "redux-saga/effects";
|
|
4
3
|
import { areObjRefsEqual } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { parametersChanged } from "../../events/parameters.js";
|
|
6
6
|
import { dispatchDashboardEvent } from "../../store/_infra/eventDispatcher.js";
|
|
7
7
|
import { selectEnableParameters } from "../../store/config/configSelectors.js";
|
|
@@ -87,7 +87,7 @@ export function* dispatchParametersChangedForAffectedTabs(ctx, cmd, valuesBefore
|
|
|
87
87
|
export function* dispatchParametersChanged(ctx, cmd, tabLocalIdentifier, valuesBefore) {
|
|
88
88
|
const valuesByTab = yield select(selectParameterValuesByTab);
|
|
89
89
|
const values = valuesByTab[tabLocalIdentifier];
|
|
90
|
-
if (values === undefined ||
|
|
90
|
+
if (values === undefined || _isEqual(valuesBefore, values)) {
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
93
|
yield dispatchDashboardEvent(parametersChanged(ctx, values, tabLocalIdentifier, cmd.correlationId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACH,KAAK,qCAAqC,EAE7C,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,6BAA6B,GACnC,YAAY,CAAC,qCAAqC,CAAC,CAyFrD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2023-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { put, select } from "redux-saga/effects";
|
|
4
3
|
import { getHierarchyRef } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { insightWidgetDrillDownAdded, } from "../../events/insight.js";
|
|
6
6
|
import { selectAllCatalogAttributeHierarchies } from "../../store/catalog/catalogSelectors.js";
|
|
7
7
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
@@ -39,7 +39,7 @@ export function* addDrillDownForInsightWidgetHandler(ctx, cmd) {
|
|
|
39
39
|
}));
|
|
40
40
|
if (hierarchy && intersectionIgnoredAttributes) {
|
|
41
41
|
const drillDownReference = hierarchyToDrillDownReference(hierarchy, attributeIdentifier);
|
|
42
|
-
const existingIgnoredAttributesWithoutChangedItem = currentDrillDownIntersectionIgnoredAttributes?.filter((item) =>
|
|
42
|
+
const existingIgnoredAttributesWithoutChangedItem = currentDrillDownIntersectionIgnoredAttributes?.filter((item) => _isEqual(item.drillDownReference, drillDownReference)) ?? [];
|
|
43
43
|
yield put(tabsActions.replaceWidgetDrillDownIntersectionIgnoredAttributes({
|
|
44
44
|
ref: widgetRef,
|
|
45
45
|
ignoredDrillDownIntersectionIgnoredAttributes: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeKpiWidgetMeasureHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changeKpiWidgetMeasureHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,KAAK,iCAAiC,EAA2B,MAAM,qBAAqB,CAAC;AAMtG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA2EnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAiB,6BAA6B,CAC1C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,uBAAuB,GAC7B,YAAY,CAAC,iCAAiC,CAAC,CAsDjD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { objRefToString, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
6
|
import { newCatalogDateDatasetMap } from "../../../_staging/metadata/objRefMap.js";
|
|
7
7
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
8
8
|
import { kpiWidgetMeasureChanged } from "../../events/kpi.js";
|
|
@@ -41,7 +41,7 @@ function* determineDateDatasetToUse(widget, measure) {
|
|
|
41
41
|
const measureDateDatasets = yield call(query, queryDateDatasetsForMeasure(measure.measure.ref));
|
|
42
42
|
const catalogDataSet = newCatalogDateDatasetMap(measureDateDatasets.dateDatasets).get(widget.dateDataSet);
|
|
43
43
|
if (!catalogDataSet) {
|
|
44
|
-
if (!
|
|
44
|
+
if (!_isEmpty(measureDateDatasets.dateDatasetsOrdered)) {
|
|
45
45
|
return measureDateDatasets.dateDatasetsOrdered[0];
|
|
46
46
|
}
|
|
47
47
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifyDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"modifyDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EACH,KAAK,wCAAwC,EAEhD,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,wBAAiB,sCAAsC,CACnD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,gCAAgC,GACtC,YAAY,CAAC,wCAAwC,CAAC,CAuExD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2023-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { put, select } from "redux-saga/effects";
|
|
4
3
|
import { getHierarchyRef } from "@gooddata/sdk-model";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { insightWidgetDrillDownModified, } from "../../events/insight.js";
|
|
6
6
|
import { selectAllCatalogAttributeHierarchies } from "../../store/catalog/catalogSelectors.js";
|
|
7
7
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
@@ -32,7 +32,7 @@ export function* modifyDrillDownForInsightWidgetHandler(ctx, cmd) {
|
|
|
32
32
|
}));
|
|
33
33
|
if (hierarchy && intersectionIgnoredAttributes) {
|
|
34
34
|
const drillDownReference = hierarchyToDrillDownReference(hierarchy, attributeIdentifier);
|
|
35
|
-
const existingIgnoredAttributesWithoutChangedItem = currentDrillDownIntersectionIgnoredAttributes?.filter((item) => !
|
|
35
|
+
const existingIgnoredAttributesWithoutChangedItem = currentDrillDownIntersectionIgnoredAttributes?.filter((item) => !_isEqual(item.drillDownReference, drillDownReference)) ?? [];
|
|
36
36
|
yield put(tabsActions.replaceWidgetDrillDownIntersectionIgnoredAttributes({
|
|
37
37
|
ref: widgetRef,
|
|
38
38
|
ignoredDrillDownIntersectionIgnoredAttributes: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeDrillDownForInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EACH,KAAK,uCAAuC,EAE/C,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,wBAAiB,sCAAsC,CACnD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,gCAAgC,GACtC,YAAY,CAAC,uCAAuC,CAAC,CA6CvD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2023-2026 GoodData Corporation
|
|
2
|
-
import { isEqual } from "lodash-es";
|
|
3
2
|
import { put, select } from "redux-saga/effects";
|
|
3
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
4
|
import { insightWidgetDrillDownRemoved, } from "../../events/insight.js";
|
|
5
5
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
6
6
|
import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js";
|
|
@@ -18,7 +18,7 @@ export function* removeDrillDownForInsightWidgetHandler(ctx, cmd) {
|
|
|
18
18
|
cmd,
|
|
19
19
|
},
|
|
20
20
|
}));
|
|
21
|
-
const drillIntersectionIgnoredAttributesWithoutBlacklistedHierarchies = currentDrillDownIntersectionIgnoredAttributes?.filter((ignoredIntersectionAttributes) => !newBlacklistHierarchies.some((hierarchy) =>
|
|
21
|
+
const drillIntersectionIgnoredAttributesWithoutBlacklistedHierarchies = currentDrillDownIntersectionIgnoredAttributes?.filter((ignoredIntersectionAttributes) => !newBlacklistHierarchies.some((hierarchy) => _isEqual(hierarchy, ignoredIntersectionAttributes.drillDownReference)));
|
|
22
22
|
yield put(tabsActions.replaceWidgetDrillDownIntersectionIgnoredAttributes({
|
|
23
23
|
ref: widgetRef,
|
|
24
24
|
ignoredDrillDownIntersectionIgnoredAttributes: drillIntersectionIgnoredAttributesWithoutBlacklistedHierarchies ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/widgets/validation/filterValidation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"filterValidation.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/widgets/validation/filterValidation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAenE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAiB,yCAAyC,CACtD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,QAAQ,GAC3B,YAAY,CAAC,mBAAmB,CAAC,CAsBnC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAiB,0CAA0C,CACvD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,GACpB,YAAY,CAAC,mBAAmB,CAAC,CAsBnC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAiB,qCAAqC,CAClD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,MAAM,GACpB,YAAY,CAAC,mBAAmB,CAAC,CAkBnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAiB,gCAAgC,CAC7C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAAE,GACnB,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAuD9C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAiB,2BAA2B,CACxC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAAE,GACnB,YAAY,CAAC,oBAAoB,EAAE,CAAC,CA6CtC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import {
|
|
2
|
+
import { partition } from "lodash-es";
|
|
3
3
|
import { call, select } from "redux-saga/effects";
|
|
4
4
|
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemLocalIdentifier, objRefToString, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
6
|
import { newInsight } from "../../../../_staging/insight/insightBuilder.js";
|
|
6
7
|
import { newCatalogDateDatasetMap } from "../../../../_staging/metadata/objRefMap.js";
|
|
7
8
|
import { invalidArgumentsProvided } from "../../../events/general.js";
|
|
@@ -132,7 +133,7 @@ export function* validateDatasetForKpiWidgetDateFilter(ctx, cmd, widget, dateDat
|
|
|
132
133
|
export function* validateAttributeFiltersToIgnore(ctx, cmd, _widget, toIgnore) {
|
|
133
134
|
const resolvedDisplayForms = yield call(resolveDisplayFormMetadata, ctx, toIgnore);
|
|
134
135
|
const { missing, resolved } = resolvedDisplayForms;
|
|
135
|
-
if (!
|
|
136
|
+
if (!_isEmpty(missing)) {
|
|
136
137
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to disable attribute filters but some of the display form refs to disable filters by do not exist: ${missing
|
|
137
138
|
.map(objRefToString)
|
|
138
139
|
.join(", ")}`);
|
|
@@ -155,7 +156,7 @@ export function* validateAttributeFiltersToIgnore(ctx, cmd, _widget, toIgnore) {
|
|
|
155
156
|
badIgnores.push(toIgnore.ref);
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
|
-
if (!
|
|
159
|
+
if (!_isEmpty(badIgnores)) {
|
|
159
160
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to disable attribute filters but some of the display form refs to disable filters by are not used for filtering at all: ${badIgnores
|
|
160
161
|
.map(objRefToString)
|
|
161
162
|
.join(", ")}`);
|
|
@@ -181,7 +182,7 @@ export function* validateAttributeFiltersToIgnore(ctx, cmd, _widget, toIgnore) {
|
|
|
181
182
|
export function* validateDateFiltersToIgnore(ctx, cmd, _widget, toIgnore) {
|
|
182
183
|
const allAvailableDateDatasetsMap = yield select(selectAllCatalogDateDatasetsMap);
|
|
183
184
|
const [resolved, missing] = partition(toIgnore, (ref) => allAvailableDateDatasetsMap.has(ref));
|
|
184
|
-
if (!
|
|
185
|
+
if (!_isEmpty(missing)) {
|
|
185
186
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to disable date filters but some of the date data set refs to disable filters by do not exist: ${missing
|
|
186
187
|
.map(objRefToString)
|
|
187
188
|
.join(", ")}`);
|
|
@@ -198,7 +199,7 @@ export function* validateDateFiltersToIgnore(ctx, cmd, _widget, toIgnore) {
|
|
|
198
199
|
badIgnores.push(toIgnore);
|
|
199
200
|
}
|
|
200
201
|
}
|
|
201
|
-
if (!
|
|
202
|
+
if (!_isEmpty(badIgnores)) {
|
|
202
203
|
throw invalidArgumentsProvided(ctx, cmd, `Attempting to disable date filters but some of the date data set refs to disable filters by are not used for filtering at all: ${badIgnores
|
|
203
204
|
.map(objRefToString)
|
|
204
205
|
.join(", ")}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insightDrillDefinitionUtils.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"insightDrillDefinitionUtils.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mCAAmC,EACxC,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAGtB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,MAAM,EAYd,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAQ/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAG3F,wBAAgB,6BAA6B,CACzC,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,sBAAsB,GACrC,sBAAsB,CA8BxB;AAED,wBAAgB,4BAA4B,CACxC,eAAe,EAAE,sBAAsB,EACvC,oBAAoB,GAAE,sBAAsB,EAAO,GACpD,OAAO,CAIT;AAED,wBAAgB,2BAA2B,CACvC,eAAe,EAAE,sBAAsB,EACvC,oBAAoB,GAAE,sBAAsB,EAAO,GACpD,sBAAsB,GAAG,SAAS,CAIpC;AAED,wBAAgB,wCAAwC,CACpD,GAAG,EAAE,UAAU,EACf,oBAAoB,GAAE,sBAAsB,EAAO,GACpD,sBAAsB,CAUxB;AAED,wBAAgB,oCAAoC,CAChD,uBAAuB,EAAE,sBAAsB,EAC/C,wBAAwB,EAAE,sBAAsB,GACjD,OAAO,CA+BT;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,MAAM,EAAE,CAEzF;AAED,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAalG;AAED,wBAAgB,4CAA4C,CACxD,gBAAgB,EAAE,sBAAsB,EAAE,GAC3C,MAAM,EAAE,CAOV;AAED,wBAAgB,0CAA0C,CACtD,gBAAgB,EAAE,sBAAsB,EAAE,GAC3C,MAAM,EAAE,CAOV;AAED,MAAM,WAAW,qCAAqC;IAClD,uBAAuB,EAAE,UAAU,EAAE,CAAC;IACtC,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAChC,qBAAqB,EAAE,QAAQ,EAAE,CAAC;IAClC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,aAAa,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC3C,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,eAAe,EAAE,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAChE,qBAAqB,EAAE,sBAAsB,CAAC;IAC9C,yBAAyB,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC7D,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oBAAoB,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;CACrD;AAED,wBAAgB,8BAA8B,CAC1C,eAAe,EAAE,sBAAsB,EACvC,iBAAiB,EAAE,qCAAqC,GACzD,sBAAsB,CAkBxB;AAyMD,wBAAgB,kCAAkC,CAC9C,eAAe,EAAE,iBAAiB,EAClC,iBAAiB,EAAE,qCAAqC,GACzD,iBAAiB,CAenB;AAED,wBAAgB,qCAAqC,CACjD,eAAe,EAAE,oBAAoB,EACrC,iBAAiB,EAAE,qCAAqC,GACzD,oBAAoB,CAwCtB"}
|