@gooddata/sdk-ui-dashboard 11.61.0-alpha.1 → 11.61.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.js +13 -5
- package/esm/presentation/widget/common/configuration/FilterConfiguration.js +4 -4
- package/package.json +21 -21
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.61.0-alpha.
|
|
1
|
+
export declare const LIB_VERSION = "11.61.0-alpha.2";
|
|
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.61.0-alpha.
|
|
3
|
+
export const LIB_VERSION = "11.61.0-alpha.2";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAwC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAwC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAqC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAoGnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAClC,YAAY,CAAC,IAAI,CAAC,CA2LpB"}
|
|
@@ -7,10 +7,12 @@ import { areObjRefsEqual, attributeElementsIsEmpty, dashboardAttributeFilterItem
|
|
|
7
7
|
import { dashboardFilterToFilterContextItem } from "../../../_staging/dashboard/dashboardFilterContext.js";
|
|
8
8
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
9
9
|
import { dispatchDashboardEvent } from "../../store/_infra/eventDispatcher.js";
|
|
10
|
+
import { isDashboardFilterRestricted } from "../../store/filtering/restrictedFilterUtils.js";
|
|
10
11
|
import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
11
12
|
import { selectAttributeFilterDisplayFormsMap, selectFilterContextAttributeFilterByDisplayForm, selectFilterContextAttributeFilterByDisplayFormForTab, selectFilterContextAttributeFilterByLocalId, selectFilterContextAttributeFilterByLocalIdForTab, selectFilterContextAttributeFilterItemByDisplayForm, selectFilterContextAttributeFilterItemByDisplayFormForTab, selectFilterContextAttributeFilterItemByLocalId, selectFilterContextAttributeFilterItemByLocalIdForTab, selectFilterContextAttributeFilterItems, selectFilterContextAttributeFilterItemsForTab, selectFilterContextAttributeFilters, selectFilterContextAttributeFiltersForTab, selectFilterContextDateFilterByDataSet, selectFilterContextDateFilterByDataSetForTab, selectFilterContextDateFiltersWithDimension, selectFilterContextDateFiltersWithDimensionForTab, selectFilterContextMeasureValueFilters, } from "../../store/tabs/filterContext/filterContextSelectors.js";
|
|
12
13
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
13
14
|
import { selectTabs } from "../../store/tabs/tabsSelectors.js";
|
|
15
|
+
import { selectUnavailableObjects } from "../../store/unavailableObjects/unavailableObjectsSelectors.js";
|
|
14
16
|
import { resolveAttributeMetadata } from "../../utils/attributeResolver.js";
|
|
15
17
|
import { resolveDisplayFormMetadata, } from "../../utils/displayFormResolver.js";
|
|
16
18
|
import { canApplyFilterTypeToTarget } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js";
|
|
@@ -79,6 +81,9 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
|
|
|
79
81
|
}
|
|
80
82
|
// Cross-filtering is always compatible with dashboard tabs now
|
|
81
83
|
// (removed the check that prevented cross-filtering without tabs)
|
|
84
|
+
const unavailableObjects = yield select(selectUnavailableObjects);
|
|
85
|
+
// A restricted attribute filter keeps its stored selection: its label is never resolved, so the
|
|
86
|
+
// filter can be neither matched nor changed.
|
|
82
87
|
const normalizedFilters = compact(filters.map((filter) => {
|
|
83
88
|
if (isDashboardAttributeFilterItem(filter) ||
|
|
84
89
|
isDashboardDateFilter(filter) ||
|
|
@@ -86,7 +91,8 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
|
|
|
86
91
|
return filter;
|
|
87
92
|
}
|
|
88
93
|
return dashboardFilterToFilterContextItem(filter, !!ctx.backend.capabilities.supportsMultipleDateFilters);
|
|
89
|
-
}))
|
|
94
|
+
})).filter((filter) => !(isDashboardAttributeFilterItem(filter) &&
|
|
95
|
+
isDashboardFilterRestricted(filter, unavailableObjects)));
|
|
90
96
|
const disabledComputedAttributeRef = yield call(findDisabledComputedAttributeRef, [
|
|
91
97
|
...normalizedFilters
|
|
92
98
|
.filter(isDashboardAttributeFilterItem)
|
|
@@ -134,7 +140,7 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
|
|
|
134
140
|
const [[commonDateFilter], dateFiltersWithDimension] = partition(dateFilters, isDashboardCommonDateFilter);
|
|
135
141
|
const selectionTypeMap = yield call(selectAttributeFilterConfigsSelectionTypeMapTabAware, tabLocalIdentifier);
|
|
136
142
|
const [attributeFilterResult, commonDateFilterUpdateActions, dateFiltersUpdateActions, measureValueFilterUpdateActions,] = yield all([
|
|
137
|
-
call(getAttributeFiltersUpdateActions, [...attributeFilters].reverse(), textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier),
|
|
143
|
+
call(getAttributeFiltersUpdateActions, [...attributeFilters].reverse(), textAttributeFilters, attributeFilterConfigs, resetOthers, unavailableObjects, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier),
|
|
138
144
|
call(getDateFilterUpdateActions, commonDateFilter, resetOthers, tabLocalIdentifier),
|
|
139
145
|
call(getDateFiltersUpdateActions, dateFiltersWithDimension, resetOthers, tabLocalIdentifier),
|
|
140
146
|
call(getMeasureValueFiltersUpdateActions, measureValueFilters, resetOthers),
|
|
@@ -229,7 +235,7 @@ function* findTargetFilterItemByDisplayForm(displayFormRef, tabLocalIdentifier)
|
|
|
229
235
|
}
|
|
230
236
|
return undefined;
|
|
231
237
|
}
|
|
232
|
-
function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier) {
|
|
238
|
+
function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilters, attributeFilterConfigs, resetOthers, unavailableObjects, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier) {
|
|
233
239
|
const updateActions = [];
|
|
234
240
|
const displayFormsToResolve = [];
|
|
235
241
|
const handledLocalIds = new Set();
|
|
@@ -516,7 +522,8 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
|
|
|
516
522
|
if (resetOthers) {
|
|
517
523
|
const currentAttributeFilters = yield call(selectFilterContextAttributeFiltersTabAware, tabLocalIdentifier);
|
|
518
524
|
// for element-based filters that have not been handled, create clear selection actions
|
|
519
|
-
const unhandledFilters = currentAttributeFilters.filter((filter) => !handledLocalIds.has(dashboardAttributeFilterItemLocalIdentifier(filter))
|
|
525
|
+
const unhandledFilters = currentAttributeFilters.filter((filter) => !handledLocalIds.has(dashboardAttributeFilterItemLocalIdentifier(filter)) &&
|
|
526
|
+
!isDashboardFilterRestricted(filter, unavailableObjects));
|
|
520
527
|
if (unhandledFilters.length > 0) {
|
|
521
528
|
updateActions.push(tabsActions.clearAttributeFiltersSelection({
|
|
522
529
|
filterLocalIds: unhandledFilters.map((filter) => dashboardAttributeFilterItemLocalIdentifier(filter)),
|
|
@@ -527,7 +534,8 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
|
|
|
527
534
|
// (negative arbitrary filter with empty selection)
|
|
528
535
|
const currentAllFilterItems = yield call(selectFilterContextAttributeFilterItemsTabAware, tabLocalIdentifier);
|
|
529
536
|
const unhandledTextFilters = currentAllFilterItems.filter((filter) => isDashboardTextAttributeFilter(filter) &&
|
|
530
|
-
!handledLocalIds.has(dashboardAttributeFilterItemLocalIdentifier(filter))
|
|
537
|
+
!handledLocalIds.has(dashboardAttributeFilterItemLocalIdentifier(filter)) &&
|
|
538
|
+
!isDashboardFilterRestricted(filter, unavailableObjects));
|
|
531
539
|
for (const textFilter of unhandledTextFilters) {
|
|
532
540
|
const localId = dashboardAttributeFilterItemLocalIdentifier(textFilter);
|
|
533
541
|
const resetFilter = {
|
|
@@ -7,16 +7,16 @@ import { useAttributeFilterDisplayFormFromMap } from "../../../../_staging/share
|
|
|
7
7
|
import { useAttributes } from "../../../../_staging/sharedHooks/useAttributes.js";
|
|
8
8
|
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { selectAllCatalogAttributesMap, selectAllCatalogDateDatasetsMap, selectAllCatalogMeasuresMap, selectCatalogIsLoaded, } from "../../../../model/store/catalog/catalogSelectors.js";
|
|
10
|
+
import { selectExecutableDashboardFilters } from "../../../../model/store/filtering/dashboardFilterSelectors.js";
|
|
10
11
|
import { selectInsightByRef } from "../../../../model/store/insights/insightsSelectors.js";
|
|
11
12
|
import { selectAttributeFilterConfigsDisplayAsLabelMap } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
12
|
-
import { selectFilterContextFilters } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
13
13
|
import { AttributeFilterConfigurationItem } from "./AttributeFilterConfigurationItem.js";
|
|
14
14
|
import { DateFilterConfigurationItem } from "./DateFilterConfigurationItem.js";
|
|
15
15
|
import { MeasureValueFilterConfigurationItem } from "./MeasureValueFilterConfigurationItem.js";
|
|
16
16
|
import { useMeasureValueFilterCompatibility } from "./useMeasureValueFilterCompatibility.js";
|
|
17
17
|
import { getAttributeByDisplayForm } from "./utils.js";
|
|
18
18
|
export function FilterConfiguration({ widget }) {
|
|
19
|
-
const
|
|
19
|
+
const filters = useDashboardSelector(selectExecutableDashboardFilters);
|
|
20
20
|
const getAttributeFilterDisplayFormFromMap = useAttributeFilterDisplayFormFromMap();
|
|
21
21
|
const attrMap = useDashboardSelector(selectAllCatalogAttributesMap);
|
|
22
22
|
const ddsMap = useDashboardSelector(selectAllCatalogDateDatasetsMap);
|
|
@@ -24,10 +24,10 @@ export function FilterConfiguration({ widget }) {
|
|
|
24
24
|
const isCatalogLoaded = useDashboardSelector(selectCatalogIsLoaded);
|
|
25
25
|
const displayAsLabelMap = useDashboardSelector(selectAttributeFilterConfigsDisplayAsLabelMap);
|
|
26
26
|
const draggableFilters = useMemo(() => {
|
|
27
|
-
return
|
|
27
|
+
return filters.filter((f) => isDashboardAttributeFilterItem(f) ||
|
|
28
28
|
isDashboardDateFilterWithDimension(f) ||
|
|
29
29
|
isDashboardMeasureValueFilter(f));
|
|
30
|
-
}, [
|
|
30
|
+
}, [filters]);
|
|
31
31
|
const attributeFilters = useMemo(() => {
|
|
32
32
|
return draggableFilters.filter(isDashboardAttributeFilterItem);
|
|
33
33
|
}, [draggableFilters]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-dashboard",
|
|
3
|
-
"version": "11.61.0-alpha.
|
|
3
|
+
"version": "11.61.0-alpha.2",
|
|
4
4
|
"description": "GoodData SDK - Dashboard Component",
|
|
5
5
|
"license": "LicenseRef-LICENSE",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -60,20 +60,20 @@
|
|
|
60
60
|
"ts-invariant": "0.10.3",
|
|
61
61
|
"tslib": "2.8.1",
|
|
62
62
|
"uuid": "11.1.1",
|
|
63
|
-
"@gooddata/sdk-backend-base": "11.61.0-alpha.
|
|
64
|
-
"@gooddata/sdk-
|
|
65
|
-
"@gooddata/sdk-
|
|
66
|
-
"@gooddata/sdk-ui
|
|
67
|
-
"@gooddata/sdk-
|
|
68
|
-
"@gooddata/sdk-ui-ext": "11.61.0-alpha.
|
|
69
|
-
"@gooddata/sdk-ui-
|
|
70
|
-
"@gooddata/sdk-ui-
|
|
71
|
-
"@gooddata/sdk-ui-
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/sdk-ui-
|
|
75
|
-
"@gooddata/sdk-ui-vis-commons": "11.61.0-alpha.
|
|
76
|
-
"@gooddata/util": "11.61.0-alpha.
|
|
63
|
+
"@gooddata/sdk-backend-base": "11.61.0-alpha.2",
|
|
64
|
+
"@gooddata/sdk-model": "11.61.0-alpha.2",
|
|
65
|
+
"@gooddata/sdk-backend-spi": "11.61.0-alpha.2",
|
|
66
|
+
"@gooddata/sdk-ui": "11.61.0-alpha.2",
|
|
67
|
+
"@gooddata/sdk-ui-charts": "11.61.0-alpha.2",
|
|
68
|
+
"@gooddata/sdk-ui-ext": "11.61.0-alpha.2",
|
|
69
|
+
"@gooddata/sdk-ui-filters": "11.61.0-alpha.2",
|
|
70
|
+
"@gooddata/sdk-ui-geo": "11.61.0-alpha.2",
|
|
71
|
+
"@gooddata/sdk-ui-pivot": "11.61.0-alpha.2",
|
|
72
|
+
"@gooddata/sdk-ui-kit": "11.61.0-alpha.2",
|
|
73
|
+
"@gooddata/sdk-ui-semantic-search": "11.61.0-alpha.2",
|
|
74
|
+
"@gooddata/sdk-ui-theme-provider": "11.61.0-alpha.2",
|
|
75
|
+
"@gooddata/sdk-ui-vis-commons": "11.61.0-alpha.2",
|
|
76
|
+
"@gooddata/util": "11.61.0-alpha.2"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@microsoft/api-documenter": "7.30.16",
|
|
@@ -115,12 +115,12 @@
|
|
|
115
115
|
"typescript": "7.0.2",
|
|
116
116
|
"vitest": "4.1.11",
|
|
117
117
|
"vitest-dom": "0.1.1",
|
|
118
|
-
"@gooddata/eslint-config": "11.61.0-alpha.
|
|
119
|
-
"@gooddata/
|
|
120
|
-
"@gooddata/
|
|
121
|
-
"@gooddata/
|
|
122
|
-
"@gooddata/
|
|
123
|
-
"@gooddata/stylelint-config": "11.61.0-alpha.
|
|
118
|
+
"@gooddata/eslint-config": "11.61.0-alpha.2",
|
|
119
|
+
"@gooddata/i18n-toolkit": "11.61.0-alpha.2",
|
|
120
|
+
"@gooddata/oxlint-config": "11.61.0-alpha.2",
|
|
121
|
+
"@gooddata/sdk-backend-mockingbird": "11.61.0-alpha.2",
|
|
122
|
+
"@gooddata/reference-workspace": "11.61.0-alpha.2",
|
|
123
|
+
"@gooddata/stylelint-config": "11.61.0-alpha.2"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
126
|
"react": "^18.0.0 || ^19.0.0",
|