@gooddata/sdk-ui-dashboard 11.40.0-alpha.4 → 11.40.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/NOTICE +664 -360
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/model/react/useWidgetExecConfig.d.ts +9 -0
  5. package/esm/model/react/useWidgetExecConfig.js +21 -0
  6. package/esm/model/store/widgetDrills/widgetDrillSelectors.js +1 -4
  7. package/esm/presentation/automations/shared/automationFilters/components/AutomationMeasureValueFilter.js +3 -2
  8. package/esm/presentation/componentDefinition/renderModeAware.js +1 -4
  9. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +5 -1
  10. package/esm/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js +7 -2
  11. package/esm/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.js +11 -5
  12. package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.d.ts +3 -0
  13. package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.js +5 -1
  14. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +2 -0
  15. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +2 -0
  16. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +2 -0
  17. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +2 -0
  18. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +2 -0
  19. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +2 -0
  20. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +8 -0
  21. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +8 -0
  22. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +2 -0
  23. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +2 -0
  24. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +2 -0
  25. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +2 -0
  26. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +2 -0
  27. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +2 -0
  28. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +2 -0
  29. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +2 -0
  30. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +2 -0
  31. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +2 -0
  32. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +2 -0
  33. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +2 -0
  34. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +2 -0
  35. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +2 -0
  36. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +2 -0
  37. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +2 -0
  38. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +2 -0
  39. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +2 -0
  40. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +2 -0
  41. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +2 -0
  42. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +2 -0
  43. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +2 -0
  44. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +2 -0
  45. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +2 -0
  46. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +2 -0
  47. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +2 -0
  48. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +2 -0
  49. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +2 -0
  50. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +2 -0
  51. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +2 -0
  52. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +2 -0
  53. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +2 -0
  54. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +2 -0
  55. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +2 -0
  56. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +2 -0
  57. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +2 -0
  58. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +2 -0
  59. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +2 -0
  60. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +2 -0
  61. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +2 -0
  62. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +2 -0
  63. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +2 -0
  64. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +2 -0
  65. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +2 -0
  66. package/esm/presentation/widget/common/configuration/FilterConfiguration.js +6 -3
  67. package/esm/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.d.ts +2 -1
  68. package/esm/presentation/widget/common/configuration/MeasureValueFilterConfigurationItem.js +5 -5
  69. package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +3 -9
  70. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +2 -3
  71. package/package.json +24 -24
  72. package/styles/css/main.css +29 -2
  73. package/styles/css/main.css.map +1 -1
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.40.0-alpha.4";
1
+ export declare const LIB_VERSION = "11.40.0-alpha.6";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
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.40.0-alpha.4";
3
+ export const LIB_VERSION = "11.40.0-alpha.6";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
@@ -0,0 +1,9 @@
1
+ import { type IExecutionConfig, type ObjRef } from "@gooddata/sdk-model";
2
+ /**
3
+ * Single shared source of a widget's insight execution config, so the dashboard insight and its
4
+ * drill overlay execute consistently instead of each duplicating (and drifting) the logic.
5
+ *
6
+ * @param ref - ref of the source widget whose parameter values to resolve
7
+ * @internal
8
+ */
9
+ export declare function useWidgetExecConfig(ref: ObjRef): IExecutionConfig;
@@ -0,0 +1,21 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { useMemo } from "react";
3
+ import { selectEffectiveParameterValuesForWidget } from "../store/tabs/parameters/parametersSelectors.js";
4
+ import { selectExecutionTimestamp } from "../store/ui/uiSelectors.js";
5
+ import { useDashboardSelector } from "./DashboardStoreProvider.js";
6
+ /**
7
+ * Single shared source of a widget's insight execution config, so the dashboard insight and its
8
+ * drill overlay execute consistently instead of each duplicating (and drifting) the logic.
9
+ *
10
+ * @param ref - ref of the source widget whose parameter values to resolve
11
+ * @internal
12
+ */
13
+ export function useWidgetExecConfig(ref) {
14
+ const executionTimestamp = useDashboardSelector(selectExecutionTimestamp);
15
+ const parameterValues = useDashboardSelector(selectEffectiveParameterValuesForWidget(ref));
16
+ return useMemo(() => ({
17
+ timestamp: executionTimestamp,
18
+ // omit when empty so it does not bust the execution's defFingerprint
19
+ ...(parameterValues.length > 0 ? { parameterValues } : {}),
20
+ }), [executionTimestamp, parameterValues]);
21
+ }
@@ -265,9 +265,6 @@ const selectKdaByWidgetRef = createMemoizedSelector((ref) => createSelector(sele
265
265
  return undefined;
266
266
  }
267
267
  // construct predicates for all available attributes and measures
268
- const attributePredicates = [
269
- HeaderPredicates.localIdentifierMatch(date.attribute.attributeHeader.localIdentifier),
270
- ];
271
268
  const measurePredicates = compact(availableDrillTargets?.availableDrillTargets?.measures?.map((drillMeasure) => {
272
269
  const isMetricDisabled = getMetricDisabled(widgetInsight, drillMeasure.measure.measureHeaderItem.localIdentifier);
273
270
  if (isMetricDisabled) {
@@ -284,7 +281,7 @@ const selectKdaByWidgetRef = createMemoizedSelector((ref) => createSelector(sele
284
281
  transition: "in-place",
285
282
  origin: {},
286
283
  },
287
- predicates: [...attributePredicates, ...measurePredicates],
284
+ predicates: [...measurePredicates],
288
285
  };
289
286
  }));
290
287
  /**
@@ -28,7 +28,7 @@ export function AutomationMeasureValueFilter({ filter, onChange, onDelete, isLoc
28
28
  }, [filter, onChange]);
29
29
  return (_jsx(AutomationMeasureValueFilterProvider, { filter: filter, onChange: onChange, onDelete: onDelete, isLocked: isLocked, deleteAriaLabel: deleteAriaLabel, deleteTooltipContent: deleteTooltipContent, lockedTooltipContent: lockedTooltipContent, children: _jsx(MeasureValueFilter, { ...getSharedDashboardMvfProps(mvfData), onApply: handleApply, DropdownButtonComponent: (props) => (_jsx(AutomationMeasureValueFilterButton, { ...props, conditionLabel: conditionLabel, overlayPositionType: overlayPositionType, readonly: readonly })) }) }));
30
30
  }
31
- function AutomationMeasureValueFilterButton({ isActive, buttonTitle, onClick, conditionLabel, readonly, }) {
31
+ function AutomationMeasureValueFilterButton({ isActive, buttonTitle, onClick, conditionLabel, readonly, disabled, dropdownId, }) {
32
32
  const { isLocked, onDelete, filter, deleteAriaLabel, deleteTooltipContent, lockedTooltipContent } = useAutomationMeasureValueFilterContext();
33
33
  const label = `${buttonTitle}: ${conditionLabel}`;
34
34
  const mvfTooltipId = useIdPrefixed("mvf-filter-tooltip");
@@ -38,7 +38,7 @@ function AutomationMeasureValueFilterButton({ isActive, buttonTitle, onClick, co
38
38
  // AutomationFiltersSelect (`gd-automation-filters__overlay`), so the chip should not
39
39
  // claim a locked state from it. The lock icon only reflects the filter's own config.
40
40
  const isDeletable = !isLocked && !readonly;
41
- return (_jsx(UiChip, { label: label, iconBefore: "metric", isActive: isActive, isLocked: isLocked, isDeletable: isDeletable, onClick: onClick, onDelete: () => onDelete?.(filter), onKeyDown: (event) => {
41
+ return (_jsx(UiChip, { label: label, iconBefore: "metric", isActive: isActive, isLocked: isLocked, isDisabled: disabled, isDeletable: isDeletable, onClick: onClick, onDelete: () => onDelete?.(filter), onKeyDown: (event) => {
42
42
  // In case the button is locked and not disabled we need to explicitly
43
43
  // stop the event propagation to prevent dropdown from opening
44
44
  if (isLocked && isActionKey(event)) {
@@ -51,6 +51,7 @@ function AutomationMeasureValueFilterButton({ isActive, buttonTitle, onClick, co
51
51
  }
52
52
  }, accessibilityConfig: {
53
53
  isExpanded: isActive,
54
+ popupId: dropdownId,
54
55
  popupType: "dialog",
55
56
  ariaDescribedBy: mvfTooltipId,
56
57
  deleteAriaLabel: buttonTitle ? `${deleteAriaLabel} ${buttonTitle}` : deleteAriaLabel,
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
3
- import { selectEnableSlideshowExports } from "../../model/store/config/configSelectors.js";
4
3
  import { selectRenderMode } from "../../model/store/renderMode/renderModeSelectors.js";
5
4
  /**
6
5
  * Returns a component that wraps components for different render modes and automatically chooses the correct one.
@@ -12,9 +11,7 @@ import { selectRenderMode } from "../../model/store/renderMode/renderModeSelecto
12
11
  export function renderModeAware(components) {
13
12
  function RenderModeAware(props) {
14
13
  const renderMode = useDashboardSelector(selectRenderMode);
15
- const isExportModeEnabled = useDashboardSelector(selectEnableSlideshowExports);
16
- const sanitizedRenderMode = isExportModeEnabled || renderMode !== "export" ? renderMode : "view";
17
- const Component = components[sanitizedRenderMode] ?? components["view"];
14
+ const Component = components[renderMode] ?? components["view"];
18
15
  return _jsx(Component, { ...props });
19
16
  }
20
17
  return RenderModeAware;
@@ -30,7 +30,11 @@ export function DefaultDashboardDateFilter({ filter, workingFilter, onFilterChan
30
30
  const weekStart = useDashboardSelector(selectWeekStart);
31
31
  const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
32
32
  const activeCalendars = useDashboardSelector(selectActiveCalendars);
33
- const enableEmptyDateValues = useDashboardSelector(selectEnableKDEmptyDateValuesFilter);
33
+ const isEmptyDateValuesFilterEnabled = useDashboardSelector(selectEnableKDEmptyDateValuesFilter);
34
+ // The empty-values feature (the "Empty values" preset and the include/exclude toggle) is shown only when
35
+ // the feature flag is on AND the date filter config marks the option as visible. Hiding it via the config
36
+ // does not strip an already-set emptyValueHandling - that value is still applied to executions.
37
+ const enableEmptyDateValues = isEmptyDateValuesFilterEnabled && (config.dateFilterOptions.emptyValues?.visible ?? true);
34
38
  const allDateDatasets = useDashboardSelector(selectCatalogDateDatasets);
35
39
  let defaultDateFilterName;
36
40
  if (filter?.dateFilter.dataSet) {
@@ -38,9 +38,14 @@ export function DefaultDashboardFilterGroup(props) {
38
38
  }, []);
39
39
  const isFilterActive = useCallback((filter) => {
40
40
  if (isFilterBarMeasureValueFilter(filter)) {
41
+ // Measure value filters have no working selection, so they always reflect the
42
+ // committed filter regardless of the apply mode.
41
43
  return !isAllDashboardMeasureValueFilter(filter.filter);
42
44
  }
43
- const dashboardFilter = filter.filter;
45
+ // In apply-all-at-once mode the uncommitted (working) selection should be reflected in
46
+ // the group button subtitle immediately, without waiting for the Apply button. Fall back
47
+ // to the committed filter when there is no working selection.
48
+ const dashboardFilter = isApplyAllAtOnceEnabledAndSet && filter.workingFilter ? filter.workingFilter : filter.filter;
44
49
  if (isDashboardAttributeFilter(dashboardFilter)) {
45
50
  return getSelectedElementsCount(dashboardFilter) > 0;
46
51
  }
@@ -51,7 +56,7 @@ export function DefaultDashboardFilterGroup(props) {
51
56
  return dashboardFilter.matchAttributeFilter.literal.length > 0;
52
57
  }
53
58
  return true;
54
- }, []);
59
+ }, [isApplyAllAtOnceEnabledAndSet]);
55
60
  const renderFilter = useCallback((filter, AttributeFilterComponent, MeasureValueFilterComponent) => {
56
61
  if (isFilterBarMeasureValueFilter(filter)) {
57
62
  const localId = dashboardFilterLocalIdentifier(filter.filter);
@@ -55,7 +55,7 @@ export function DefaultDashboardMeasureValueFilter(props) {
55
55
  const workingFilter = useDashboardSelector(selectWorkingFilterContextMeasureValueFilterByLocalId(filter.dashboardMeasureValueFilter.localIdentifier));
56
56
  const filterToDisplay = isApplyAllAtOnceEnabledAndSet ? (workingFilter ?? filter) : filter;
57
57
  const mvfData = useDashboardMeasureValueFilterData(filter, filterToDisplay);
58
- const { localIdentifier, customTitle, defaultMetricTitle, catalogMetric, metricTitle, conditionLabel, dimensionality, dimensionalityItems, catalogDimensionality, loadCatalogDimensionality, } = mvfData;
58
+ const { localIdentifier, customTitle, defaultMetricTitle, catalogMetric, isMissingMetric, metricTitle, conditionLabel, dimensionality, dimensionalityItems, catalogDimensionality, loadCatalogDimensionality, } = mvfData;
59
59
  const mode = measureValueFilterConfigsModeMap.get(localIdentifier) ??
60
60
  DashboardAttributeFilterConfigModeValues.ACTIVE;
61
61
  const visibilityIcon = getVisibilityIcon(mode, isEditMode, !!capabilities.supportsHiddenAndLockedFiltersOnUI, intl);
@@ -179,15 +179,21 @@ export function DefaultDashboardMeasureValueFilter(props) {
179
179
  }, []);
180
180
  const BodyComponent = isConfigurationOpen ? ConfigurationBodyComponent : undefined;
181
181
  const DropdownButtonComponent = useMemo(() => {
182
- function DashboardMeasureValueFilterDropdownButton({ isActive, buttonTitle, buttonSubtitle, buttonTitleExtension, disabled, onClick, }) {
183
- return (_jsx(UiControlButton, { title: buttonTitle, titleClassName: "s-mvf-button-title", subtitle: _jsx("span", { className: "gd-measure-value-filter-dropdown-button-selected-items__next s-mvf-button-subtitle", children: buttonSubtitle ?? conditionLabel }), titleExtension: buttonTitleExtension ?? (_jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly })), isOpen: isActive, isDraggable: isEditMode, disabled: disabled ?? readonly, disabledTooltip: readonly ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, className: cx("gd-mvf-dashboard-filter-button__next", "s-dashboard-mvf-button", {
182
+ function DashboardMeasureValueFilterDropdownButton({ isActive, buttonTitle, buttonSubtitle, buttonTitleExtension, disabled, onClick, dropdownId, }) {
183
+ const button = (_jsx(UiControlButton, { title: buttonTitle, titleClassName: "s-mvf-button-title", dropdownId: dropdownId, subtitleClassName: "gd-measure-value-filter-dropdown-button-selected-items__next s-mvf-button-subtitle", icon: isMissingMetric ? _jsx("i", { className: "gd-icon gd-icon-circle-cross" }) : undefined, subtitle: _jsx("span", { className: "gd-measure-value-filter-dropdown-button-selected-items__next s-mvf-button-subtitle", children: buttonSubtitle ?? conditionLabel }), titleExtension: buttonTitleExtension ?? (_jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly })), isOpen: isActive, isDraggable: isEditMode, isError: isMissingMetric, disabled: disabled ?? readonly, disabledTooltip: readonly ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, className: cx("gd-mvf-dashboard-filter-button__next", "s-dashboard-mvf-button", {
184
184
  "gd-is-active": isActive,
185
185
  "gd-is-draggable": isEditMode,
186
186
  disabled: readonly,
187
+ "s-mvf-missing-metric": isMissingMetric,
187
188
  }) }));
189
+ if (isMissingMetric && !isActive) {
190
+ return (_jsxs(BubbleHoverTrigger, { tagName: "div", showDelay: 200, hideDelay: 0, children: [button, _jsx(Bubble, { className: "bubble-negative", alignPoints: [{ align: "bc tc" }], children: intl.formatMessage({ id: "filters.mvf.missingMetric.tooltip" }) })
191
+ ] }));
192
+ }
193
+ return button;
188
194
  }
189
195
  return DashboardMeasureValueFilterDropdownButton;
190
- }, [conditionLabel, intl, isEditMode, readonly, visibilityIcon]);
196
+ }, [conditionLabel, intl, isEditMode, isMissingMetric, readonly, visibilityIcon]);
191
197
  const MeasureValueFilterComponent = CustomMeasureValueFilterComponent ?? MeasureValueFilter;
192
- return (_jsx(MeasureValueFilterComponent, { ...getSharedDashboardMvfProps(mvfData), onApply: handleApply, buttonSubtitle: conditionLabel, loadMetricDetails: isEditMode ? loadMetricDetails : undefined, isHeaderEnabled: !isConfigurationOpen, buttonTitleExtension: _jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly }), buttonDisabled: readonly, onChange: isApplyAllAtOnceEnabledAndSet ? handleChange : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, BodyComponent: BodyComponent, DropdownActionsComponent: DropdownActionsComponent, DropdownButtonComponent: passDropdownButton ? DropdownButtonComponent : undefined, onCancel: handleClose, autoOpen: autoOpen, fullscreenOnMobile: true }));
198
+ return (_jsx(MeasureValueFilterComponent, { ...getSharedDashboardMvfProps(mvfData), onApply: handleApply, buttonSubtitle: conditionLabel, loadMetricDetails: isEditMode ? loadMetricDetails : undefined, isHeaderEnabled: !isConfigurationOpen, buttonTitleExtension: _jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly }), buttonDisabled: readonly, onChange: isApplyAllAtOnceEnabledAndSet ? handleChange : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, BodyComponent: BodyComponent, DropdownActionsComponent: DropdownActionsComponent, DropdownButtonComponent: passDropdownButton ? DropdownButtonComponent : undefined, onCancel: handleClose, autoOpen: autoOpen, fullscreenOnMobile: true, isViewMode: !isEditMode }));
193
199
  }
@@ -25,6 +25,8 @@ export interface IDashboardMeasureValueFilterData {
25
25
  customTitle: string | undefined;
26
26
  /** Catalog metric the filter references; undefined if not in the catalog. */
27
27
  catalogMetric: ICatalogMeasure | undefined;
28
+ /** True when the catalog has loaded and the referenced metric no longer exists in the workspace. */
29
+ isMissingMetric: boolean;
28
30
  /** Title fallback when no custom title is set. */
29
31
  defaultMetricTitle: string;
30
32
  /** Effective title — custom title or catalog title or stringified objRef. */
@@ -84,6 +86,7 @@ export interface ISharedDashboardMvfProps {
84
86
  enableMultipleConditions: true;
85
87
  isDimensionalityEnabled: false;
86
88
  isFilterSummaryEnabled: true;
89
+ showSimplifiedSummary: true;
87
90
  isHeaderEnabled: true;
88
91
  }
89
92
  /**
@@ -5,7 +5,7 @@ import { areObjRefsEqual, idRef, newAttribute, newMeasure, objRefToString, } fro
5
5
  import { useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
6
6
  import { getMeasureValueFilterConditionLabel } from "@gooddata/sdk-ui-filters";
7
7
  import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
8
- import { selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogMeasures, } from "../../../model/store/catalog/catalogSelectors.js";
8
+ import { selectCatalogAttributes, selectCatalogDateDatasets, selectCatalogIsLoaded, selectCatalogMeasures, } from "../../../model/store/catalog/catalogSelectors.js";
9
9
  import { selectLocale, selectObjectAvailabilityConfig, selectSeparators, } from "../../../model/store/config/configSelectors.js";
10
10
  const PERCENT_FORMAT_REGEX = /%/;
11
11
  const SupportedCatalogGranularity = [
@@ -142,6 +142,7 @@ export function useDashboardMeasureValueFilterData(filter, filterToDisplay) {
142
142
  const measures = useDashboardSelector(selectCatalogMeasures);
143
143
  const attributes = useDashboardSelector(selectCatalogAttributes);
144
144
  const dateDatasets = useDashboardSelector(selectCatalogDateDatasets);
145
+ const isCatalogLoaded = useDashboardSelector(selectCatalogIsLoaded);
145
146
  const objectAvailability = useDashboardSelector(selectObjectAvailabilityConfig);
146
147
  const separators = useDashboardSelector(selectSeparators);
147
148
  const locale = useDashboardSelector(selectLocale);
@@ -150,6 +151,7 @@ export function useDashboardMeasureValueFilterData(filter, filterToDisplay) {
150
151
  const effective = filterToDisplay ?? filter;
151
152
  const conditions = effective.dashboardMeasureValueFilter.conditions;
152
153
  const catalogMetric = useMemo(() => findCatalogMetric(measure, measures), [measure, measures]);
154
+ const isMissingMetric = isCatalogLoaded && !catalogMetric;
153
155
  const defaultMetricTitle = catalogMetric?.measure.title ?? objRefToString(measure);
154
156
  const metricTitle = customTitle ?? defaultMetricTitle;
155
157
  const format = catalogMetric?.measure.format;
@@ -181,6 +183,7 @@ export function useDashboardMeasureValueFilterData(filter, filterToDisplay) {
181
183
  localIdentifier,
182
184
  customTitle,
183
185
  catalogMetric,
186
+ isMissingMetric,
184
187
  defaultMetricTitle,
185
188
  metricTitle,
186
189
  format,
@@ -219,6 +222,7 @@ export function getSharedDashboardMvfProps(data) {
219
222
  enableMultipleConditions: true,
220
223
  isDimensionalityEnabled: false,
221
224
  isFilterSummaryEnabled: true,
225
+ showSimplifiedSummary: true,
222
226
  isHeaderEnabled: true,
223
227
  };
224
228
  }
@@ -436,6 +436,8 @@ export declare const de_DE: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const de_DE = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "Die Visualisierung kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filtern ist auf diese Visualisierung nicht anwendbar.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Dieser Filter kann nicht angewendet werden, weil die Visualisierung einen Top-/Bottom-Werte-Filter verwendet. Entfernen Sie den Top-/Bottom-Werte-Filter, um diesen Filter anzuwenden.",
441
+ "configurationPanel.mvfMissingMeasure": "Die in diesem Filter verwendete Metrik existiert im workspace nicht mehr.",
442
+ "filters.mvf.missingMetric.tooltip": "Die in diesem Filter verwendete Metrik existiert im workspace nicht mehr.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "Leistungskennzahl kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kann nicht mehr auf die Visualisierung angewendet werden. Wählen Sie eine andere Dimension oder bearbeiten Sie die Visualisierung.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kann nicht mehr auf den Leistungskennzahl angewandt werden. Wählen Sie eine andere Dimension oder bearbeiten Sie den Leistungskennzahl.",
@@ -436,6 +436,8 @@ export declare const en_AU: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const en_AU = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "The visualization cannot be filtered by Date. Unselect the check box.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is not applicable to this visualisation.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "This filter can't be applied because the visualisation uses a Top/bottom values filter. Remove the Top/bottom values filter to apply this filter.",
441
+ "configurationPanel.mvfMissingMeasure": "The metric used in this filter no longer exists in the workspace.",
442
+ "filters.mvf.missingMetric.tooltip": "The metric used in this filter no longer exists in the workspace.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi can't be filtered by Date. Unselect the check box.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the KPI. Select a different dimension or edit the KPI.",
@@ -436,6 +436,8 @@ export declare const en_GB: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const en_GB = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "The visualisation cannot be filtered by Date. Unselect the check box.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is not applicable to this visualisation.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "This filter can't be applied because the visualisation uses a Top/bottom values filter. Remove the Top/bottom values filter to apply this filter.",
441
+ "configurationPanel.mvfMissingMeasure": "The metric used in this filter no longer exists in the workspace.",
442
+ "filters.mvf.missingMetric.tooltip": "The metric used in this filter no longer exists in the workspace.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi cannot be filtered by Date. Unselect the check box.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the kpi. Select a different dimension or edit the kpi.",
@@ -1747,6 +1747,14 @@ export declare const en_US: {
1747
1747
  text: string;
1748
1748
  crowdinContext: string;
1749
1749
  };
1750
+ "configurationPanel.mvfMissingMeasure": {
1751
+ text: string;
1752
+ crowdinContext: string;
1753
+ };
1754
+ "filters.mvf.missingMetric.tooltip": {
1755
+ text: string;
1756
+ crowdinContext: string;
1757
+ };
1750
1758
  "configurationPanel.kpiCantBeFilteredByDate": {
1751
1759
  text: string;
1752
1760
  crowdinContext: string;
@@ -1749,6 +1749,14 @@ export const en_US = {
1749
1749
  "text": "This filter can't be applied because the visualization uses a Top/bottom values filter. Remove the Top/bottom values filter to apply this filter.",
1750
1750
  "crowdinContext": "Warning message shown on a dashboard measure value filter row in widget configuration when the widget's visualization uses a ranking (Top/Bottom values) filter, which is incompatible with measure value filters"
1751
1751
  },
1752
+ "configurationPanel.mvfMissingMeasure": {
1753
+ "text": "The metric used in this filter no longer exists in the workspace.",
1754
+ "crowdinContext": "Warning message shown on a dashboard measure value filter row in widget configuration when the referenced metric has been deleted from the workspace"
1755
+ },
1756
+ "filters.mvf.missingMetric.tooltip": {
1757
+ "text": "Error: The metric used in this filter no longer exists in the workspace.",
1758
+ "crowdinContext": "Tooltip shown on a measure value filter button in the dashboard filter bar when the referenced metric has been deleted from the workspace"
1759
+ },
1752
1760
  "configurationPanel.kpiCantBeFilteredByDate": {
1753
1761
  "text": "The kpi cannot be filtered by Date. Unselect the check box.",
1754
1762
  "crowdinContext": "Warning message when attempting to apply date filter to incompatible KPI"
@@ -436,6 +436,8 @@ export declare const es_419: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const es_419 = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "La visualización no puede filtrarse por Fecha. Desmarque la casilla de verificación.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "El filtro no se puede aplicar a esta visualización.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Este filtro no se puede aplicar porque la visualización usa un filtro de valores superiores/inferiores. Quite el filtro de valores superiores/inferiores para aplicar este filtro.",
441
+ "configurationPanel.mvfMissingMeasure": "La métrica usada en este filtro ya no existe en el espacio de trabajo.",
442
+ "filters.mvf.missingMetric.tooltip": "La métrica usada en este filtro ya no existe en el espacio de trabajo.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione otra dimensión o edite el KPI.",
@@ -436,6 +436,8 @@ export declare const es_ES: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const es_ES = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "La visualización no puede filtrarse por Fecha. Desmarque la casilla de verificación.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "El filtro no se puede aplicar a esta visualización.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Este filtro no se puede aplicar porque la visualización usa un filtro de valores superiores/inferiores. Quite el filtro de valores superiores/inferiores para aplicar este filtro.",
441
+ "configurationPanel.mvfMissingMeasure": "La métrica usada en este filtro ya no existe en el espacio de trabajo.",
442
+ "filters.mvf.missingMetric.tooltip": "La métrica usada en este filtro ya no existe en el espacio de trabajo.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione una dimensión diferente o edite el KPI.",
@@ -436,6 +436,8 @@ export declare const fi_FI: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const fi_FI = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "Visualisointia ei voida suodattaa päivämäärän mukaan. Poista valinta valintaruudusta.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Suodatin ei sovellu tähän visualisointiin.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Tätä suodatinta ei voi käyttää, koska visualisointi käyttää Ylä-/ala-arvojen suodatinta. Poista Ylä-/ala-arvojen suodatin, jotta voit käyttää tätä suodatinta.",
441
+ "configurationPanel.mvfMissingMeasure": "Tässä suodattimessa käytettyä metriikkaa ei enää ole työtilassa.",
442
+ "filters.mvf.missingMetric.tooltip": "Tässä suodattimessa käytettyä metriikkaa ei enää ole työtilassa.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI:ta ei voi suodattaa päivämäärällä. Poista valintamerkki.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ei voida enää soveltaa visualisointiin. Valitse toinen ulottuvuus tai muokkaa visualisointia.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ei voi enää soveltaa KPI:hin. Valitse eri ulottuvuus tai muokkaa KPI:tä.",
@@ -436,6 +436,8 @@ export declare const fr_CA: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const fr_CA = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "La visualisation ne peut pas être filtrée par la Date. Désélectionnez la case à cocher.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Le filtre ne s’applique pas à cette visualisation.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Ce filtre ne peut pas être appliqué, car la visualisation utilise un filtre des valeurs supérieures/inférieures. Supprimez le filtre des valeurs supérieures/inférieures pour appliquer ce filtre.",
441
+ "configurationPanel.mvfMissingMeasure": "La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
442
+ "filters.mvf.missingMetric.tooltip": "La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par Date. Décochez la case.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une dimension différente ou modifiez la visualisation.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une dimension différente ou modifiez le KPI.",
@@ -436,6 +436,8 @@ export declare const fr_FR: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const fr_FR = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "La visualisation ne peut pas être filtrée par date. Désélectionnez la case à cocher.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Le filtre ne peut pas être appliqué à cette visualisation.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Ce filtre ne peut pas être appliqué, car la visualisation utilise un filtre de valeurs Top/Bottom. Supprimez le filtre de valeurs Top/Bottom pour appliquer ce filtre.",
441
+ "configurationPanel.mvfMissingMeasure": "La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
442
+ "filters.mvf.missingMetric.tooltip": "La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par date. Décochez la case.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une autre dimension ou modifiez la visualisation.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une autre dimension ou modifiez le KPI.",
@@ -436,6 +436,8 @@ export declare const id_ID: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const id_ID = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "Visualisasi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter tidak dapat diterapkan pada visualisasi ini.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Filter ini tidak dapat diterapkan karena visualisasi menggunakan filter nilai Teratas/Terbawah. Hapus filter nilai Teratas/Terbawah untuk menerapkan filter ini.",
441
+ "configurationPanel.mvfMissingMeasure": "Metrik yang digunakan dalam filter ini tidak lagi ada di ruang kerja.",
442
+ "filters.mvf.missingMetric.tooltip": "Metrik yang digunakan dalam filter ini tidak lagi ada di ruang kerja.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "kpi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada visualisasi. Pilih dimensi lain atau edit visualisasi.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada kpi. Pilih dimensi lain atau edit kpi.",
@@ -436,6 +436,8 @@ export declare const it_IT: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const it_IT = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "La visualizzazione non può essere filtrata per data. Deselezionare la casella di controllo.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Il filtro non può essere applicato a questa visualizzazione.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Questo filtro non può essere applicato perché la visualizzazione usa un filtro Valori superiori/inferiori. Rimuovi il filtro Valori superiori/inferiori per applicare questo filtro.",
441
+ "configurationPanel.mvfMissingMeasure": "La metrica usata in questo filtro non esiste più nell'area di lavoro.",
442
+ "filters.mvf.missingMetric.tooltip": "La metrica usata in questo filtro non esiste più nell'area di lavoro.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "Il KPI non può essere filtrato per Data. Deselezionare la casella di controllo.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" non può più essere applicato alla visualizzazione. Selezionare una dimensione diversa o modificare la visualizzazione.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" non può più essere applicato al KPI. Selezionare una dimensione diversa o modificare il KPI.",
@@ -436,6 +436,8 @@ export declare const ja_JP: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const ja_JP = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "ビジュアライゼーションを日付でフィルターすることはできません。チェックボックスの選択を解除してください。",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "この可視化にはフィルターを適用できません。",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "このフィルターは、可視化で上位/下位値フィルターが使用されているため適用できません。このフィルターを適用するには、上位/下位値フィルターを削除してください。",
441
+ "configurationPanel.mvfMissingMeasure": "このフィルターで使用されているメトリックは、ワークスペースに存在しなくなりました。",
442
+ "filters.mvf.missingMetric.tooltip": "このフィルターで使用されているメトリックは、ワークスペースに存在しなくなりました。",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPIは日付でフィルターできません。チェックボックスの選択を解除してください。",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" はビジュアライゼーションに適用できなくなりました。別の次元を選択するか、ビジュアライゼーションを編集してください。",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"はKPIに適用できなくなりました。別のディメンションを選ぶか、KPIを編集してください。",
@@ -436,6 +436,8 @@ export declare const ko_KR: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const ko_KR = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "시각화는 날짜로 필터링할 수 없습니다. 체크 박스를 선택 해제하세요.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "이 시각화에는 필터를 적용할 수 없습니다.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "이 필터는 시각화에서 상위/하위 값 필터를 사용하므로 적용할 수 없습니다. 이 필터를 적용하려면 상위/하위 값 필터를 제거하세요.",
441
+ "configurationPanel.mvfMissingMeasure": "이 필터에 사용된 메트릭이 더 이상 작업 공간에 존재하지 않습니다.",
442
+ "filters.mvf.missingMetric.tooltip": "이 필터에 사용된 메트릭이 더 이상 작업 공간에 존재하지 않습니다.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI는 날짜로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\"을/를 더 이상 시각화에 적용할 수 없습니다. 다른 차원을 선택하거나 시각화를 편집하세요.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"은/는 더 이상 KPI에 적용할 수 없습니다. 다른 차원을 선택하거나 KPI를 편집하세요.",
@@ -436,6 +436,8 @@ export declare const nl_NL: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const nl_NL = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "De visualisatie kan niet worden gefilterd op Datum. Schakel het selectievakje uit.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filter is niet van toepassing op deze visualisatie.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Dit filter kan niet worden toegepast omdat de visualisatie een filter voor Top-/onderste waarden gebruikt. Verwijder het filter voor Top-/onderste waarden om dit filter toe te passen.",
441
+ "configurationPanel.mvfMissingMeasure": "De metriek die in dit filter wordt gebruikt, bestaat niet meer in de werkruimte.",
442
+ "filters.mvf.missingMetric.tooltip": "De metriek die in dit filter wordt gebruikt, bestaat niet meer in de werkruimte.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "De KPI kan niet worden gefilterd op Datum. Vink het selectievakje af.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kan niet langer worden toegepast op de visualisatie. Selecteer een andere dimensie of bewerk de visualisatie.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kan niet langer op de KPI worden toegepast. Selecteer een andere dimensie of bewerk de KPI.",
@@ -436,6 +436,8 @@ export declare const pl_PL: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -438,6 +438,8 @@ export const pl_PL = {
438
438
  "configurationPanel.vizCantBeFilteredByDate": "Wizualizacja nie może być filtrowana wg daty. Odznacz pole wyboru.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "Filtr nie ma zastosowania do tej wizualizacji.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "Tego filtra nie można zastosować, ponieważ wizualizacja używa filtra Top/bottom values. Usuń filtr Top/bottom values, aby zastosować ten filtr.",
441
+ "configurationPanel.mvfMissingMeasure": "Metryka używana w tym filtrze już nie istnieje w przestrzeni roboczej.",
442
+ "filters.mvf.missingMetric.tooltip": "Metryka używana w tym filtrze już nie istnieje w przestrzeni roboczej.",
441
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI nie może być filtrowane wg daty. Odznacz pole wyboru.",
442
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do wizualizacji. Wybierz inny wymiar lub edytuj wizualizację.",
443
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do KPI. Wybierz inny wymiar lub edytuj KPI.",
@@ -436,6 +436,8 @@ export declare const pt_BR: {
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
438
  "configurationPanel.mvfBlockedByRankingFilter": string;
439
+ "configurationPanel.mvfMissingMeasure": string;
440
+ "filters.mvf.missingMetric.tooltip": string;
439
441
  "configurationPanel.kpiCantBeFilteredByDate": string;
440
442
  "configurationPanel.unrelatedVizDateInfo": string;
441
443
  "configurationPanel.unrelatedKpiDateInfo": string;