@gooddata/sdk-ui-dashboard 11.40.0-alpha.0 → 11.40.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.
Files changed (85) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/index.d.ts +3 -3
  4. package/esm/index.js +3 -3
  5. package/esm/model/commandHandlers/dashboard/exportToTabularHandler.js +5 -2
  6. package/esm/model/commandHandlers/dashboard/saveAsDashboardHandler.js +6 -0
  7. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +65 -30
  8. package/esm/model/commandHandlers/index.js +0 -2
  9. package/esm/model/commandHandlers/tabs/createDashboardTabHandler.js +2 -2
  10. package/esm/model/commands/base.d.ts +1 -1
  11. package/esm/model/commands/index.d.ts +2 -2
  12. package/esm/model/commands/tabs.d.ts +0 -35
  13. package/esm/model/commands/tabs.js +0 -16
  14. package/esm/model/events/base.d.ts +1 -1
  15. package/esm/model/events/index.d.ts +2 -2
  16. package/esm/model/events/tabs.d.ts +0 -44
  17. package/esm/model/events/tabs.js +0 -28
  18. package/esm/model/react/useDashboardCommand.d.ts +0 -1
  19. package/esm/model/react/useDashboardCommandProcessing.d.ts +0 -4
  20. package/esm/model/store/tabs/index.d.ts +6 -0
  21. package/esm/model/store/tabs/layout/layoutSelectors.d.ts +41 -1
  22. package/esm/model/store/tabs/layout/layoutSelectors.js +38 -0
  23. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +86 -0
  24. package/esm/model/store/tabs/parameters/parametersHelpers.js +208 -0
  25. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +21 -16
  26. package/esm/model/store/tabs/parameters/parametersSelectors.js +45 -127
  27. package/esm/model/store/tabs/tabsReducers.d.ts +6 -0
  28. package/esm/model/store/tabs/tabsReducers.js +16 -0
  29. package/esm/model/utils/tabLocalIdentifier.d.ts +4 -0
  30. package/esm/model/utils/tabLocalIdentifier.js +12 -0
  31. package/esm/presentation/dashboard/DashboardHeader/DashboardTabs.js +2 -10
  32. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  33. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -0
  34. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  35. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -0
  36. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  37. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +1 -0
  38. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  39. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +1 -0
  40. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  41. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +1 -0
  42. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  43. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -0
  44. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  45. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -0
  46. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  47. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -0
  48. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  49. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -0
  50. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  51. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -0
  52. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  53. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -0
  54. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  55. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -0
  56. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  57. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -0
  58. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  59. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -0
  60. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  61. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -0
  62. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  63. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -0
  64. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  65. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +1 -0
  66. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  67. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -0
  68. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  69. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -0
  70. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  71. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -0
  72. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  73. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -0
  74. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  75. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -0
  76. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  77. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -0
  78. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  79. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -0
  80. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  81. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -0
  82. package/esm/sdk-ui-dashboard.d.ts +35 -94
  83. package/package.json +20 -20
  84. package/esm/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.d.ts +0 -4
  85. package/esm/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.js +0 -40
@@ -1,14 +1,16 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  import { createSelector } from "@reduxjs/toolkit";
3
3
  import { isEqual } from "lodash-es";
4
- import { DashboardParameterModeValues, areObjRefsEqual, insightMeasures, insightParameters, isDashboardLayout, isInsightWidget, isMeasureDefinition, isNumberParameterDefinition, isVisualizationSwitcherWidget, objRefToString, } from "@gooddata/sdk-model";
4
+ import { areObjRefsEqual, insightParameters, objRefToString, } from "@gooddata/sdk-model";
5
5
  import { createMemoizedSelector } from "../../_infra/selectors.js";
6
6
  import { selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, selectCatalogParameterByRef, selectCatalogParameters, selectCatalogParametersIsLoaded, } from "../../catalog/catalogSelectors.js";
7
7
  import { selectEnableParameters } from "../../config/configSelectors.js";
8
8
  import { selectInsightsMap } from "../../insights/insightsSelectors.js";
9
9
  import { selectIsInEditMode } from "../../renderMode/renderModeSelectors.js";
10
+ import { selectAllTabsInsightWidgetContexts } from "../layout/layoutSelectors.js";
10
11
  import { selectActiveTab, selectTabs } from "../tabsSelectors.js";
11
12
  import { DEFAULT_TAB_ID } from "../tabsState.js";
13
+ import { EMPTY_EXPORT_PARAMETERS, buildPersistedByTabAndRef, buildWidgetScopeTabRefSelections, collectExportOverrides, collectReferencedParameterRefs, computeParameterResetTargets, computeParameterResetValue, smartPersistResolvedEntry, } from "./parametersHelpers.js";
12
14
  import { parametersInitialState, pickTabParametersSource, } from "./parametersState.js";
13
15
  const EMPTY_PARAMETERS = [];
14
16
  const EMPTY_PARAMETER_VALUES = [];
@@ -191,25 +193,19 @@ export const selectHasAnyResettableParameterOnActiveTab = createSelector(selectA
191
193
  *
192
194
  * @alpha
193
195
  */
194
- export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((ref) => createSelector(selectParameterExecutionContextByWidgetRef(ref), selectInsightsMap, selectEnableParameters, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, (context, insights, isEnabled, measureParameters, measureParametersStatus) => {
195
- if (!isEnabled || !context || measureParametersStatus !== "loaded") {
196
+ export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((ref) => createSelector(selectAllTabsInsightWidgetContexts, selectInsightsMap, selectEnableParameters, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, (contexts, insights, isEnabled, measureParameters, measureParametersStatus) => {
197
+ if (!isEnabled || !ref || measureParametersStatus !== "loaded") {
198
+ return EMPTY_PARAMETER_VALUES;
199
+ }
200
+ const context = contexts.find((ctx) => areObjRefsEqual(ctx.widget.ref, ref));
201
+ if (!context) {
196
202
  return EMPTY_PARAMETER_VALUES;
197
203
  }
198
204
  const insight = insights.get(context.widget.insight);
199
205
  if (!insight) {
200
206
  return EMPTY_PARAMETER_VALUES;
201
207
  }
202
- const referencedRefs = new Set();
203
- for (const measure of insightMeasures(insight)) {
204
- const def = measure.measure.definition;
205
- if (!isMeasureDefinition(def)) {
206
- continue;
207
- }
208
- const parameterRefs = measureParameters[objRefToString(def.measureDefinition.item)] ?? [];
209
- for (const parameterRef of parameterRefs) {
210
- referencedRefs.add(objRefToString(parameterRef));
211
- }
212
- }
208
+ const referencedRefs = new Set(collectReferencedParameterRefs(insight, measureParameters).map(objRefToString));
213
209
  const entries = context.tab.parameters?.parameters ?? parametersInitialState.parameters;
214
210
  const result = [];
215
211
  const seen = new Set();
@@ -234,121 +230,43 @@ export const selectEffectiveParameterValuesForWidget = createMemoizedSelector((r
234
230
  }
235
231
  return result.length === 0 ? EMPTY_PARAMETER_VALUES : result;
236
232
  }));
237
- const selectParameterExecutionContextByWidgetRef = createMemoizedSelector((ref) => createSelector(selectTabs, (tabs) => findParameterExecutionContext(tabs, ref)));
238
- function findParameterExecutionContext(tabs, ref) {
239
- if (!ref || !tabs) {
240
- return undefined;
241
- }
242
- for (const tab of tabs) {
243
- const layout = tab.layout?.layout;
244
- if (!layout) {
245
- continue;
246
- }
247
- const widget = findInsightWidgetInLayout(layout, ref);
248
- if (widget) {
249
- return { tab, widget };
250
- }
251
- }
252
- return undefined;
253
- }
254
- function findInsightWidgetInLayout(layout, ref) {
255
- for (const section of layout.sections) {
256
- for (const item of section.items) {
257
- const widget = item.widget;
258
- if (!widget) {
259
- continue;
260
- }
261
- if (isInsightWidget(widget) && areObjRefsEqual(widget.ref, ref)) {
262
- return widget;
263
- }
264
- if (isDashboardLayout(widget)) {
265
- const nestedWidget = findInsightWidgetInLayout(widget, ref);
266
- if (nestedWidget) {
267
- return nestedWidget;
268
- }
269
- }
270
- if (isVisualizationSwitcherWidget(widget)) {
271
- const visualization = widget.visualizations.find((visualization) => areObjRefsEqual(visualization.ref, ref));
272
- if (visualization) {
273
- return visualization;
274
- }
275
- }
276
- }
277
- }
278
- return undefined;
279
- }
280
- function buildPersistedByTabAndRef(persistedTabs, rootPersistedParameters) {
281
- const result = new Map();
282
- for (const tab of persistedTabs) {
283
- const sourceParameters = pickTabParametersSource(tab, persistedTabs, rootPersistedParameters) ?? EMPTY_PARAMETERS;
284
- result.set(tab.localIdentifier, new Map(sourceParameters.map((parameter) => [objRefToString(parameter.ref), parameter])));
285
- }
286
- return result;
287
- }
288
- function smartPersistResolvedEntry(entry, workspaceParameter) {
289
- const workspaceDefault = isNumberParameterDefinition(workspaceParameter.definition)
290
- ? workspaceParameter.definition.defaultValue
291
- : undefined;
292
- const result = {
293
- ref: entry.parameter.ref,
294
- parameterType: entry.parameter.parameterType,
295
- mode: entry.parameter.mode,
296
- ...labelOverride(entry, workspaceParameter),
297
- };
298
- if (entry.runtimeOverride === undefined || entry.runtimeOverride === workspaceDefault) {
299
- return result;
300
- }
301
- return { ...result, value: entry.runtimeOverride };
302
- }
303
- function labelOverride(entry, workspaceParameter) {
304
- if (entry.parameter.label && entry.parameter.label !== workspaceParameter.title) {
305
- return { label: entry.parameter.label };
306
- }
307
- return {};
308
- }
309
233
  /**
310
- * Returns `undefined` when reset would be a no-op: missing/non-number workspace parameter, or
311
- * in edit mode when `parameter.value` is unset / already equals the workspace default.
234
+ * Returns the per-tab parameter overrides to send on dashboard tabular export, keyed by
235
+ * tab `localIdentifier`. The shape matches the backend's `dashboardTabsParametersOverrides`
236
+ * field directly.
312
237
  *
313
- * @internal
314
- */
315
- export function computeParameterResetValue(entry, workspaceParameter, isInEditMode) {
316
- if (!workspaceParameter || !isNumberParameterDefinition(workspaceParameter.definition)) {
317
- return undefined;
318
- }
319
- const workspaceDefault = workspaceParameter.definition.defaultValue;
320
- const dashboardOverride = entry.parameter.value;
321
- if (isInEditMode) {
322
- if (dashboardOverride === undefined || dashboardOverride === workspaceDefault) {
323
- return undefined;
324
- }
325
- return workspaceDefault;
326
- }
327
- return dashboardOverride ?? workspaceDefault;
328
- }
329
- /**
330
- * Only `mode: "active"` entries with a defined `runtimeOverride` are considered resettable;
331
- * HIDDEN and READONLY entries are skipped, and entries with `runtimeOverride === undefined`
332
- * (chip hidden, execution falls back to `insight.parameters`) are preserved as-is — symmetric
333
- * with per-chip behavior in `DashboardParameterFilter`.
238
+ * @remarks
239
+ * Scope rules:
240
+ * - When `widgetIds` is empty/undefined (whole-dashboard export), every tab in scope contributes
241
+ * parameter entries with a `runtimeOverride`.
242
+ * - When `widgetIds` is non-empty, each widget's owning tab contributes only entries with a
243
+ * `runtimeOverride` whose ref is referenced by the widget's insight metrics via the dashboard-wide
244
+ * metric parameter dependency map. Multi-widget across distinct owning tabs yields one
245
+ * map entry per owning tab; entries for the same tab are unioned and deduplicated by ref.
334
246
  *
335
- * @internal
247
+ * Returns `{}` (signalling "omit the field on the wire") when:
248
+ * - `enableParameters` is off,
249
+ * - the workspace catalog parameters are not loaded,
250
+ * - (widget scope only) the `measureParameters` dependency map is not loaded,
251
+ * - or no in-scope parameter has a `runtimeOverride`.
252
+ *
253
+ * @alpha
336
254
  */
337
- export function computeParameterResetTargets(entries, workspaceParameters, isInEditMode) {
338
- const workspaceByRef = new Map(workspaceParameters.map((wp) => [objRefToString(wp.ref), wp]));
339
- const result = [];
340
- for (const entry of entries) {
341
- if (entry.parameter.mode !== DashboardParameterModeValues.ACTIVE) {
342
- continue;
343
- }
344
- if (entry.runtimeOverride === undefined) {
345
- continue;
346
- }
347
- const workspaceParameter = workspaceByRef.get(objRefToString(entry.parameter.ref));
348
- const resetValue = computeParameterResetValue(entry, workspaceParameter, isInEditMode);
349
- if (resetValue !== undefined && resetValue !== entry.runtimeOverride) {
350
- result.push({ ref: entry.parameter.ref, value: resetValue });
351
- }
255
+ export const selectExportEffectiveParameters = (widgetIds) => widgetIds?.length
256
+ ? selectExportEffectiveParametersForWidgets(widgetIds)
257
+ : selectExportEffectiveParametersDashboardScope;
258
+ const selectExportEffectiveParametersDashboardScope = createSelector(selectTabs, selectEnableParameters, selectCatalogParameters, selectCatalogParametersIsLoaded, (tabs, isEnabled, catalogParameters, isCatalogLoaded) => {
259
+ if (!isEnabled || !isCatalogLoaded || !tabs?.length) {
260
+ return EMPTY_EXPORT_PARAMETERS;
352
261
  }
353
- return result;
354
- }
262
+ const workspaceByRef = new Map(catalogParameters.map((parameter) => [objRefToString(parameter.ref), parameter]));
263
+ return collectExportOverrides(tabs.map((tab) => ({ tab })), workspaceByRef);
264
+ });
265
+ const selectExportEffectiveParametersForWidgets = createMemoizedSelector((widgetIds) => createSelector(selectAllTabsInsightWidgetContexts, selectInsightsMap, selectEnableParameters, selectCatalogParameters, selectCatalogParametersIsLoaded, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, (widgetContexts, insights, isEnabled, catalogParameters, isCatalogLoaded, measureParameters, measureParametersStatus) => {
266
+ if (!isEnabled || !isCatalogLoaded || measureParametersStatus !== "loaded") {
267
+ return EMPTY_EXPORT_PARAMETERS;
268
+ }
269
+ const workspaceByRef = new Map(catalogParameters.map((parameter) => [objRefToString(parameter.ref), parameter]));
270
+ const tabRefSelections = buildWidgetScopeTabRefSelections(widgetContexts, widgetIds, insights, measureParameters);
271
+ return collectExportOverrides(tabRefSelections, workspaceByRef);
272
+ }));
@@ -64,5 +64,11 @@ export declare const tabsReducers: {
64
64
  };
65
65
  type: string;
66
66
  }>;
67
+ resolveDefaultTab: TabsReducer<{
68
+ payload: {
69
+ newLocalIdentifier: string;
70
+ };
71
+ type: string;
72
+ }>;
67
73
  };
68
74
  export {};
@@ -1,5 +1,6 @@
1
1
  // (C) 2021-2026 GoodData Corporation
2
2
  import { initializeFilterContext } from "./filterContext/filterContextUtils.js";
3
+ import { DEFAULT_TAB_ID } from "./tabsState.js";
3
4
  /**
4
5
  * Applies initialization logic to a tab's filterContext if present.
5
6
  * Ensures filters have local identifiers and proper ordering.
@@ -97,6 +98,20 @@ const renameTab = (state, action) => {
97
98
  }
98
99
  tab.title = title;
99
100
  };
101
+ /**
102
+ * Renames the placeholder DEFAULT_TAB_ID to a real UUID after the first backend save.
103
+ * Also updates activeTabLocalIdentifier when the active tab was the placeholder.
104
+ */
105
+ const resolveDefaultTab = (state, action) => {
106
+ const { newLocalIdentifier } = action.payload;
107
+ const tab = state.tabs?.find((t) => t.localIdentifier === DEFAULT_TAB_ID);
108
+ if (tab) {
109
+ tab.localIdentifier = newLocalIdentifier;
110
+ }
111
+ if (state.activeTabLocalIdentifier === DEFAULT_TAB_ID) {
112
+ state.activeTabLocalIdentifier = newLocalIdentifier;
113
+ }
114
+ };
100
115
  export const tabsReducers = {
101
116
  setTabs,
102
117
  setActiveTabLocalIdentifier,
@@ -105,4 +120,5 @@ export const tabsReducers = {
105
120
  clearTabs,
106
121
  setTabIsRenaming,
107
122
  renameTab,
123
+ resolveDefaultTab,
108
124
  };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * When running e2e tests, we need to generate deterministic tab local identifiers.
3
+ */
4
+ export declare function generateTabLocalIdentifier(): string;
@@ -0,0 +1,12 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { v4 as uuidv4 } from "uuid";
3
+ let counter = 0;
4
+ /**
5
+ * When running e2e tests, we need to generate deterministic tab local identifiers.
6
+ */
7
+ export function generateTabLocalIdentifier() {
8
+ if (window?.useSafeLocalIdentifiersForE2e === true) {
9
+ return `test_tab_local_identifier_${counter++}`;
10
+ }
11
+ return uuidv4();
12
+ }
@@ -5,12 +5,11 @@ import { useIntl } from "react-intl";
5
5
  import { v4 as uuid } from "uuid";
6
6
  import { usePropState } from "@gooddata/sdk-ui";
7
7
  import { DefaultUiTabsTabValue, UiFocusManager, UiIcon, UiIconButton, UiTabs, UiTooltip, bemFactory, separatorStaticItem, useId, useScopedIdOptional, } from "@gooddata/sdk-ui-kit";
8
- import { cancelRenamingDashboardTab, convertDashboardTabFromDefault, createDashboardTab, deleteDashboardTab, renameDashboardTab, repositionDashboardTab, startRenamingDashboardTab, switchDashboardTab, } from "../../../model/commands/tabs.js";
8
+ import { cancelRenamingDashboardTab, createDashboardTab, deleteDashboardTab, renameDashboardTab, repositionDashboardTab, startRenamingDashboardTab, switchDashboardTab, } from "../../../model/commands/tabs.js";
9
9
  import { useDashboardDispatch, useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
10
10
  import { selectIsAddTabButtonHidden } from "../../../model/store/config/configSelectors.js";
11
11
  import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
12
12
  import { selectActiveTabLocalIdentifier, selectTabs } from "../../../model/store/tabs/tabsSelectors.js";
13
- import { DEFAULT_TAB_ID } from "../../../model/store/tabs/tabsState.js";
14
13
  const EMPTY_TABS = [];
15
14
  function createRenameAction(params) {
16
15
  const { tab, intl, dispatch } = params;
@@ -151,13 +150,9 @@ export function DashboardTabs({ activeTabLocalIdentifier, uiTabs, handleTabSelec
151
150
  ariaLabel: intl.formatMessage({ id: "dashboard.tabs.accessibility.label" }),
152
151
  }), [intl]);
153
152
  const isCreateEnabled = isEditMode && !hideAddTabButton;
154
- const hasDefaultTab = uiTabs.some((tab) => tab.id === DEFAULT_TAB_ID);
155
153
  const handleCreateTab = useCallback(() => {
156
- if (hasDefaultTab) {
157
- dispatch(convertDashboardTabFromDefault());
158
- }
159
154
  dispatch(createDashboardTab());
160
- }, [dispatch, hasDefaultTab]);
155
+ }, [dispatch]);
161
156
  const shouldHideTabs = useMemo(() => {
162
157
  if (!uiTabs || activeTabLocalIdentifier === undefined) {
163
158
  return true;
@@ -181,9 +176,6 @@ function RenamableTabValue(props) {
181
176
  const [name, setName] = usePropState(tab.label);
182
177
  const handleRename = useCallback((newName) => {
183
178
  dispatch(renameDashboardTab(newName, tab.id));
184
- if (tab.id === DEFAULT_TAB_ID) {
185
- dispatch(convertDashboardTabFromDefault(newName));
186
- }
187
179
  }, [dispatch, tab.id]);
188
180
  const handleCancel = useCallback(() => {
189
181
  dispatch(cancelRenamingDashboardTab(tab.id));
@@ -435,6 +435,7 @@ export declare const de_DE: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const de_DE = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": " Leistungskennzahl kann nicht nach {attributeName} gefiltert werden. Markierung des Kontrollfelds entfernen.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "Leistungskennzahl kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kann nicht mehr auf die Visualisierung angewendet werden. Wählen Sie eine andere Dimension oder bearbeiten Sie die Visualisierung.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kann nicht mehr auf den Leistungskennzahl angewandt werden. Wählen Sie eine andere Dimension oder bearbeiten Sie den Leistungskennzahl.",
@@ -435,6 +435,7 @@ export declare const en_AU: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const en_AU = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "The kpi cannot be filtered by {attributeName}. Unselect the check box.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi can't be filtered by Date. Unselect the check box.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the KPI. Select a different dimension or edit the KPI.",
@@ -435,6 +435,7 @@ export declare const en_GB: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const en_GB = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "The kpi cannot be filtered by {attributeName}. Unselect the check box.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi cannot be filtered by Date. Unselect the check box.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the kpi. Select a different dimension or edit the kpi.",
@@ -435,6 +435,7 @@ export declare const es_419: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const es_419 = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "El KPI no se puede filtrar por {attributeName}. Desmarque la casilla de verificación.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione otra dimensión o edite el KPI.",
@@ -435,6 +435,7 @@ export declare const es_ES: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const es_ES = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "El KPI no se puede filtrar por {attributeName}. Desmarque la casilla de verificación.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione una dimensión diferente o edite el KPI.",
@@ -435,6 +435,7 @@ export declare const fi_FI: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const fi_FI = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "KPI:ta ei voi suodattaa {attributeName}. Poista valintamerkki.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "KPI:ta ei voi suodattaa päivämäärällä. Poista valintamerkki.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ei voida enää soveltaa visualisointiin. Valitse toinen ulottuvuus tai muokkaa visualisointia.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ei voi enää soveltaa KPI:hin. Valitse eri ulottuvuus tai muokkaa KPI:tä.",
@@ -435,6 +435,7 @@ export declare const fr_CA: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const fr_CA = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "Le KPI ne peut pas être filtré par {attributeName}. Décochez la case.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par Date. Décochez la case.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une dimension différente ou modifiez la visualisation.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une dimension différente ou modifiez le KPI.",
@@ -435,6 +435,7 @@ export declare const fr_FR: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const fr_FR = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "Le KPI ne peut pas être filtré par {attributeName}. Décochez la case.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par date. Décochez la case.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une autre dimension ou modifiez la visualisation.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une autre dimension ou modifiez le KPI.",
@@ -435,6 +435,7 @@ export declare const id_ID: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const id_ID = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "kpi tidak dapat difilter oleh {attributeName}. Batalkan pilihan kotak centang.",
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
+ "configurationPanel.mvfBlockedByRankingFilter": "Filter ini tidak dapat diterapkan karena visualisasi menggunakan filter nilai Teratas/Terbawah. Hapus filter nilai Teratas/Terbawah untuk menerapkan filter ini.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "kpi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada visualisasi. Pilih dimensi lain atau edit visualisasi.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada kpi. Pilih dimensi lain atau edit kpi.",
@@ -435,6 +435,7 @@ export declare const it_IT: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const it_IT = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "Il KPI non può essere filtrato per {attributeName}. Deselezionare la casella di controllo.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "Il KPI non può essere filtrato per Data. Deselezionare la casella di controllo.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" non può più essere applicato alla visualizzazione. Selezionare una dimensione diversa o modificare la visualizzazione.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" non può più essere applicato al KPI. Selezionare una dimensione diversa o modificare il KPI.",
@@ -435,6 +435,7 @@ export declare const ja_JP: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const ja_JP = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "KPIは{attributeName}でフィルターできません。チェックボックスの選択を解除してください。",
438
438
  "configurationPanel.vizCantBeFilteredByDate": "ビジュアライゼーションを日付でフィルターすることはできません。チェックボックスの選択を解除してください。",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "この可視化にはフィルターを適用できません。",
440
+ "configurationPanel.mvfBlockedByRankingFilter": "このフィルターは、可視化で上位/下位値フィルターが使用されているため適用できません。このフィルターを適用するには、上位/下位値フィルターを削除してください。",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "KPIは日付でフィルターできません。チェックボックスの選択を解除してください。",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" はビジュアライゼーションに適用できなくなりました。別の次元を選択するか、ビジュアライゼーションを編集してください。",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"はKPIに適用できなくなりました。別のディメンションを選ぶか、KPIを編集してください。",
@@ -435,6 +435,7 @@ export declare const ko_KR: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const ko_KR = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "KPI는 {attributeName}(으)로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.",
438
438
  "configurationPanel.vizCantBeFilteredByDate": "시각화는 날짜로 필터링할 수 없습니다. 체크 박스를 선택 해제하세요.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "이 시각화에는 필터를 적용할 수 없습니다.",
440
+ "configurationPanel.mvfBlockedByRankingFilter": "이 필터는 시각화에서 상위/하위 값 필터를 사용하므로 적용할 수 없습니다. 이 필터를 적용하려면 상위/하위 값 필터를 제거하세요.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "KPI는 날짜로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\"을/를 더 이상 시각화에 적용할 수 없습니다. 다른 차원을 선택하거나 시각화를 편집하세요.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"은/는 더 이상 KPI에 적용할 수 없습니다. 다른 차원을 선택하거나 KPI를 편집하세요.",
@@ -435,6 +435,7 @@ export declare const nl_NL: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const nl_NL = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "De KPI kan niet worden gefilterd op {attributeName}. Vink het selectievakje af.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "De KPI kan niet worden gefilterd op Datum. Vink het selectievakje af.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kan niet langer worden toegepast op de visualisatie. Selecteer een andere dimensie of bewerk de visualisatie.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kan niet langer op de KPI worden toegepast. Selecteer een andere dimensie of bewerk de KPI.",
@@ -435,6 +435,7 @@ export declare const pl_PL: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const pl_PL = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "KPI nie może być filtrowany przez {attributeName}. Odznacz pole wyboru.",
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
+ "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.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "KPI nie może być filtrowane wg daty. Odznacz pole wyboru.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do wizualizacji. Wybierz inny wymiar lub edytuj wizualizację.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do KPI. Wybierz inny wymiar lub edytuj KPI.",
@@ -435,6 +435,7 @@ export declare const pt_BR: {
435
435
  "configurationPanel.kpiCantBeFilteredByAttribute": string;
436
436
  "configurationPanel.vizCantBeFilteredByDate": string;
437
437
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": string;
438
+ "configurationPanel.mvfBlockedByRankingFilter": string;
438
439
  "configurationPanel.kpiCantBeFilteredByDate": string;
439
440
  "configurationPanel.unrelatedVizDateInfo": string;
440
441
  "configurationPanel.unrelatedKpiDateInfo": string;
@@ -437,6 +437,7 @@ export const pt_BR = {
437
437
  "configurationPanel.kpiCantBeFilteredByAttribute": "O KPI não pode ser filtrado por {attributeName}. Desmarque a caixa de seleção.",
438
438
  "configurationPanel.vizCantBeFilteredByDate": "A visualização não pode ser filtrada por Data. Desmarque a caixa de seleção.",
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "O filtro não é aplicável a esta visualização.",
440
+ "configurationPanel.mvfBlockedByRankingFilter": "Este filtro não pode ser aplicado porque a visualização usa um filtro de valores Top/bottom. Remova o filtro de valores Top/bottom para aplicar este filtro.",
440
441
  "configurationPanel.kpiCantBeFilteredByDate": "O KPI não pode ser filtrado por Data. Desmarque a caixa de seleção.",
441
442
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" não pode mais ser aplicado à visualização. Selecione uma dimensão diferente ou edite a visualização.",
442
443
  "configurationPanel.unrelatedKpiDateInfo": "Não é possível aplicar \"{dateDataSet}\" ao KPI. Selecione uma dimensão diferente ou edite o KPI.",