@gooddata/sdk-ui-dashboard 11.41.0-alpha.2 → 11.41.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/NOTICE +1294 -1498
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/index.d.ts +1 -1
  5. package/esm/index.js +1 -1
  6. package/esm/model/commandHandlers/dashboard/exportDashboardToPdfHandler.js +4 -0
  7. package/esm/model/commandHandlers/dashboard/exportDashboardToPdfPresentationHandler.js +5 -0
  8. package/esm/model/commandHandlers/dashboard/exportDashboardToPptPresentationHandler.js +5 -0
  9. package/esm/model/commandHandlers/widgets/exportImageInsightWidgetHandler.js +5 -0
  10. package/esm/model/commandHandlers/widgets/exportSlidesInsightWidgetHandler.js +5 -0
  11. package/esm/model/commands/executionResults.d.ts +2 -2
  12. package/esm/model/commands/executionResults.js +5 -2
  13. package/esm/model/react/useWidgetExecutionsHandler.d.ts +2 -2
  14. package/esm/model/react/useWidgetExecutionsHandler.js +8 -3
  15. package/esm/model/store/executionResults/executionResultsSelectors.d.ts +18 -1
  16. package/esm/model/store/executionResults/executionResultsSelectors.js +16 -0
  17. package/esm/model/store/executionResults/types.d.ts +7 -1
  18. package/esm/model/store/executionResults/types.js +1 -1
  19. package/esm/model/store/tabs/filterContext/filterContextUtils.js +5 -2
  20. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +4 -5
  21. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +2 -3
  22. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -1
  23. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -1
  24. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +1 -1
  25. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +1 -1
  26. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +1 -1
  27. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -1
  28. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -1
  29. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -1
  30. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -1
  31. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -1
  32. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -1
  33. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -1
  34. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -1
  35. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -1
  36. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -1
  37. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -1
  38. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +1 -1
  39. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -1
  40. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -1
  41. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -1
  42. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -1
  43. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -1
  44. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -1
  45. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -1
  46. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -1
  47. package/esm/sdk-ui-dashboard.d.ts +31 -4
  48. package/esm/tsdoc-metadata.json +1 -1
  49. package/package.json +21 -21
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.41.0-alpha.2";
1
+ export declare const LIB_VERSION = "11.41.0-alpha.3";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
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.41.0-alpha.2";
3
+ export const LIB_VERSION = "11.41.0-alpha.3";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
package/esm/index.d.ts CHANGED
@@ -156,7 +156,7 @@ export { selectAccessibleDashboards, selectAccessibleDashboardsLoaded, selectAcc
156
156
  export { selectInaccessibleDashboards, selectInaccessibleDashboardsMap, } from "./model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.js";
157
157
  export { selectDrillTargetsByWidgetRef, selectDrillTargets, } from "./model/store/drillTargets/drillTargetsSelectors.js";
158
158
  export type { IDrillTargets } from "./model/store/drillTargets/drillTargetsTypes.js";
159
- export { selectExecutionResult, selectExecutionResultByRef, selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExportableToXlsxByRef, selectIsExecutionResultExportableToPdfByRef, selectIsExecutionResultReadyForExportByRef, selectHasSomeExecutionResult, selectIsExecutionResultExportableToCsvRawByRef, } from "./model/store/executionResults/executionResultsSelectors.js";
159
+ export { selectExecutionResult, selectExecutionResultByRef, selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExportableToXlsxByRef, selectIsExecutionResultExportableToPdfByRef, selectIsExecutionResultReadyForExportByRef, selectHasSomeExecutionResult, selectIsExecutionResultExportableToCsvRawByRef, selectExecutionResultLimitBreaksByRef, selectHasExecutionResultLimitBreaksByRef, } from "./model/store/executionResults/executionResultsSelectors.js";
160
160
  export type { IExecutionResultEnvelope } from "./model/store/executionResults/types.js";
161
161
  export type { IUiState, IInvalidCustomUrlDrillParameterInfo, FilterViewDialogMode, } from "./model/store/ui/uiState.js";
162
162
  export { selectIsScheduleEmailDialogOpen, selectIsScheduleEmailManagementDialogOpen, selectIsScheduleEmailDialogContext, selectIsScheduleEmailManagementDialogContext, selectIsAlertingManagementDialogContext, selectIsSaveAsDialogOpen, selectIsShareDialogOpen, selectFilterBarExpanded, selectIsKpiAlertOpenedByWidgetRef, selectIsKpiAlertHighlightedByWidgetRef, selectMenuButtonItemsVisibility, selectScheduleEmailDialogReturnFocusTo, selectAlertingDialogReturnFocusTo, selectScheduleEmailDialogDefaultAttachment, selectSelectedWidgetRef, selectConfigurationPanelOpened, selectWidgetDateDatasetAutoSelect, selectIsDeleteDialogOpen, selectIsKpiDeleteDialogOpen, selectKpiDeleteDialogWidgetLayoutPath, selectKpiDeleteDialogWidgetCoordinates, selectInsightListLastUpdateRequested, selectIsWidgetLoadingAdditionalDataByWidgetRef, selectIsFilterAttributeSelectionOpen, selectSelectedFilterIndex, selectIsDraggingWidget, selectActiveSection, selectActiveSectionIndex, selectIsCancelEditModeDialogOpen, selectDraggingWidgetSource, selectDraggingWidgetTargetLayoutPath, selectDraggingWidgetTriggeringDropZoneType, selectDraggingWidgetTarget, selectWidgetsOverlay, selectWidgetsOverlayState, selectWidgetsModification, selectSectionModification, selectIsSectionInsertedByPlugin, selectInvalidDrillWidgetRefs, selectInvalidUrlDrillParameterDrillLocalIdsByWidgetRef, selectInvalidUrlDrillParameterWidgetRefs, selectInvalidUrlDrillParameterWidgetWarnings, selectFilterViewsDialogMode, selectIsFilterViewsDialogOpen, selectIsAlertingDialogOpen, selectIsAlertsManagementDialogOpen, selectIsWidgetDeleteDialogOpen, selectWidgetDeleteDialogWidgetRef, selectIgnoreExecutionTimestamp, selectExecutionTimestamp, selectIsSettingsDialogOpen, selectIsDensityDialogOpen, selectDashboardDensity, selectFilterValidationIncompatibleDefaultFiltersOverride, selectAutomationsInvalidationId, } from "./model/store/ui/uiSelectors.js";
package/esm/index.js CHANGED
@@ -112,7 +112,7 @@ export { selectListedDashboards, selectListedDashboardsMap, } from "./model/stor
112
112
  export { selectAccessibleDashboards, selectAccessibleDashboardsLoaded, selectAccessibleDashboardsMap, } from "./model/store/accessibleDashboards/accessibleDashboardsSelectors.js";
113
113
  export { selectInaccessibleDashboards, selectInaccessibleDashboardsMap, } from "./model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.js";
114
114
  export { selectDrillTargetsByWidgetRef, selectDrillTargets, } from "./model/store/drillTargets/drillTargetsSelectors.js";
115
- export { selectExecutionResult, selectExecutionResultByRef, selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExportableToXlsxByRef, selectIsExecutionResultExportableToPdfByRef, selectIsExecutionResultReadyForExportByRef, selectHasSomeExecutionResult, selectIsExecutionResultExportableToCsvRawByRef, } from "./model/store/executionResults/executionResultsSelectors.js";
115
+ export { selectExecutionResult, selectExecutionResultByRef, selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExportableToXlsxByRef, selectIsExecutionResultExportableToPdfByRef, selectIsExecutionResultReadyForExportByRef, selectHasSomeExecutionResult, selectIsExecutionResultExportableToCsvRawByRef, selectExecutionResultLimitBreaksByRef, selectHasExecutionResultLimitBreaksByRef, } from "./model/store/executionResults/executionResultsSelectors.js";
116
116
  export { selectIsScheduleEmailDialogOpen, selectIsScheduleEmailManagementDialogOpen, selectIsScheduleEmailDialogContext, selectIsScheduleEmailManagementDialogContext, selectIsAlertingManagementDialogContext, selectIsSaveAsDialogOpen, selectIsShareDialogOpen, selectFilterBarExpanded, selectIsKpiAlertOpenedByWidgetRef, selectIsKpiAlertHighlightedByWidgetRef, selectMenuButtonItemsVisibility, selectScheduleEmailDialogReturnFocusTo, selectAlertingDialogReturnFocusTo, selectScheduleEmailDialogDefaultAttachment, selectSelectedWidgetRef, selectConfigurationPanelOpened, selectWidgetDateDatasetAutoSelect, selectIsDeleteDialogOpen, selectIsKpiDeleteDialogOpen, selectKpiDeleteDialogWidgetLayoutPath, selectKpiDeleteDialogWidgetCoordinates, selectInsightListLastUpdateRequested, selectIsWidgetLoadingAdditionalDataByWidgetRef, selectIsFilterAttributeSelectionOpen, selectSelectedFilterIndex, selectIsDraggingWidget, selectActiveSection, selectActiveSectionIndex, selectIsCancelEditModeDialogOpen, selectDraggingWidgetSource, selectDraggingWidgetTargetLayoutPath, selectDraggingWidgetTriggeringDropZoneType, selectDraggingWidgetTarget, selectWidgetsOverlay, selectWidgetsOverlayState, selectWidgetsModification, selectSectionModification, selectIsSectionInsertedByPlugin, selectInvalidDrillWidgetRefs, selectInvalidUrlDrillParameterDrillLocalIdsByWidgetRef, selectInvalidUrlDrillParameterWidgetRefs, selectInvalidUrlDrillParameterWidgetWarnings, selectFilterViewsDialogMode, selectIsFilterViewsDialogOpen, selectIsAlertingDialogOpen, selectIsAlertsManagementDialogOpen, selectIsWidgetDeleteDialogOpen, selectWidgetDeleteDialogWidgetRef, selectIgnoreExecutionTimestamp, selectExecutionTimestamp, selectIsSettingsDialogOpen, selectIsDensityDialogOpen, selectDashboardDensity, selectFilterValidationIncompatibleDefaultFiltersOverride, selectAutomationsInvalidationId, } from "./model/store/ui/uiSelectors.js";
117
117
  export { uiActions } from "./model/store/ui/index.js";
118
118
  export { selectIsInEditMode, selectIsInExportMode, selectIsInViewMode, selectRenderMode, } from "./model/store/renderMode/renderModeSelectors.js";
@@ -6,6 +6,7 @@ import { invalidArgumentsProvided } from "../../events/general.js";
6
6
  import { selectExportResultPollingTimeout } from "../../store/config/configSelectors.js";
7
7
  import { selectDashboardRef } from "../../store/meta/metaSelectors.js";
8
8
  import { selectFilterContextFilters, selectFiltersByTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
9
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
9
10
  function exportDashboardToPdf(ctx, dashboardRef, filters, filtersByTab, options) {
10
11
  const { backend, workspace } = ctx;
11
12
  return backend
@@ -26,10 +27,13 @@ export function* exportDashboardToPdfHandler(ctx, cmd) {
26
27
  acc[tabId] = ensureAllTimeFilterForExport(filters);
27
28
  return acc;
28
29
  }, {});
30
+ // dashboard-scoped export → per-tab parameter overrides (empty when the flag is off)
31
+ const parametersByTab = yield select(selectExportEffectiveParameters(undefined));
29
32
  const timeout = yield select(selectExportResultPollingTimeout);
30
33
  const options = {
31
34
  timeout,
32
35
  exportMetadata: cmd.payload?.exportMetadata,
36
+ parametersByTab,
33
37
  };
34
38
  const result = yield call(exportDashboardToPdf, ctx, dashboardRef, effectiveFilters, effectiveFiltersByTab, options);
35
39
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
@@ -6,6 +6,7 @@ import { invalidArgumentsProvided } from "../../events/general.js";
6
6
  import { selectExportResultPollingTimeout } from "../../store/config/configSelectors.js";
7
7
  import { selectDashboardRef } from "../../store/meta/metaSelectors.js";
8
8
  import { selectFilterContextFilters, selectFiltersByTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
9
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
9
10
  function exportDashboardToPdfPresentation(ctx, dashboardRef, filters, filtersByTab, options) {
10
11
  const { backend, workspace } = ctx;
11
12
  return backend
@@ -26,11 +27,15 @@ export function* exportDashboardToPdfPresentationHandler(ctx, cmd) {
26
27
  acc[tabId] = ensureAllTimeFilterForExport(filters);
27
28
  return acc;
28
29
  }, {});
30
+ // dashboard-scoped export → per-tab parameter overrides (empty when the flag is off)
31
+ const parametersByTab = yield select(selectExportEffectiveParameters(undefined));
29
32
  const timeout = yield select(selectExportResultPollingTimeout);
30
33
  const options = {
31
34
  ...(cmd.payload?.options ?? {}),
32
35
  exportMetadata: cmd.payload?.exportMetadata,
33
36
  timeout,
37
+ // explicit caller-provided overrides win; otherwise fall back to the store-derived effective ones
38
+ parametersByTab: cmd.payload?.options?.parametersByTab ?? parametersByTab,
34
39
  };
35
40
  const result = yield call(exportDashboardToPdfPresentation, ctx, dashboardRef, effectiveFilters, effectiveFiltersByTab, options);
36
41
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
@@ -6,6 +6,7 @@ import { invalidArgumentsProvided } from "../../events/general.js";
6
6
  import { selectExportResultPollingTimeout } from "../../store/config/configSelectors.js";
7
7
  import { selectDashboardRef } from "../../store/meta/metaSelectors.js";
8
8
  import { selectFilterContextFilters, selectFiltersByTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
9
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
9
10
  function exportDashboardToPptPresentation(ctx, dashboardRef, filters, filtersByTab, options) {
10
11
  const { backend, workspace } = ctx;
11
12
  return backend
@@ -26,11 +27,15 @@ export function* exportDashboardToPptPresentationHandler(ctx, cmd) {
26
27
  acc[tabId] = ensureAllTimeFilterForExport(filters);
27
28
  return acc;
28
29
  }, {});
30
+ // dashboard-scoped export → per-tab parameter overrides (empty when the flag is off)
31
+ const parametersByTab = yield select(selectExportEffectiveParameters(undefined));
29
32
  const timeout = yield select(selectExportResultPollingTimeout);
30
33
  const options = {
31
34
  ...(cmd.payload?.options ?? {}),
32
35
  exportMetadata: cmd.payload?.exportMetadata,
33
36
  timeout,
37
+ // explicit caller-provided overrides win; otherwise fall back to the store-derived effective ones
38
+ parametersByTab: cmd.payload?.options?.parametersByTab ?? parametersByTab,
34
39
  };
35
40
  const result = yield call(exportDashboardToPptPresentation, ctx, dashboardRef, effectiveFilters, effectiveFiltersByTab, options);
36
41
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
@@ -1,11 +1,13 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { call, select } from "redux-saga/effects";
3
+ import { objRefToString } from "@gooddata/sdk-model";
3
4
  import { ensureAllTimeFilterForExport } from "../../../_staging/exportUtils/filterUtils.js";
4
5
  import { invalidArgumentsProvided } from "../../events/general.js";
5
6
  import { insightWidgetExportResolved, } from "../../events/insight.js";
6
7
  import { selectExportResultPollingTimeout } from "../../store/config/configSelectors.js";
7
8
  import { selectDashboardRef } from "../../store/meta/metaSelectors.js";
8
9
  import { selectFilterContextFilters } from "../../store/tabs/filterContext/filterContextSelectors.js";
10
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
9
11
  import { selectActiveTabLocalIdentifier } from "../../store/tabs/tabsSelectors.js";
10
12
  export function* exportImageInsightWidgetHandler(ctx, cmd) {
11
13
  const { ref, filename } = cmd.payload;
@@ -24,11 +26,14 @@ export function* exportImageInsightWidgetHandler(ctx, cmd) {
24
26
  [activeTabLocalIdentifier]: effectiveFilters,
25
27
  }
26
28
  : undefined;
29
+ // widget-scoped export → per-tab parameter overrides for this widget (empty when the flag is off)
30
+ const parametersByTab = yield select(selectExportEffectiveParameters([objRefToString(ref)]));
27
31
  const exportDashboardToImage = backend.workspace(workspace).dashboards().exportDashboardToImage;
28
32
  const result = yield call(exportDashboardToImage, dashboardRef, effectiveFilters, effectiveFiltersByTab, {
29
33
  widgetIds: [ref],
30
34
  filename,
31
35
  timeout,
36
+ parametersByTab,
32
37
  });
33
38
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
34
39
  const fullUri = ctx.backend.config.hostname
@@ -1,11 +1,13 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { call, select } from "redux-saga/effects";
3
+ import { objRefToString } from "@gooddata/sdk-model";
3
4
  import { ensureAllTimeFilterForExport } from "../../../_staging/exportUtils/filterUtils.js";
4
5
  import { invalidArgumentsProvided } from "../../events/general.js";
5
6
  import { insightWidgetExportResolved, } from "../../events/insight.js";
6
7
  import { selectExportResultPollingTimeout } from "../../store/config/configSelectors.js";
7
8
  import { selectDashboardRef } from "../../store/meta/metaSelectors.js";
8
9
  import { selectFilterContextFilters, selectFiltersByTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
10
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
9
11
  export function* exportSlidesInsightWidgetHandler(ctx, cmd) {
10
12
  const { ref, filename, exportType, templateId } = cmd.payload;
11
13
  const { workspace, backend } = ctx;
@@ -20,6 +22,8 @@ export function* exportSlidesInsightWidgetHandler(ctx, cmd) {
20
22
  acc[tabId] = ensureAllTimeFilterForExport(filters);
21
23
  return acc;
22
24
  }, {});
25
+ // widget-scoped export → per-tab parameter overrides for this widget (empty when the flag is off)
26
+ const parametersByTab = yield select(selectExportEffectiveParameters([objRefToString(ref)]));
23
27
  const timeout = yield select(selectExportResultPollingTimeout);
24
28
  const exportDashboardToPresentation = backend
25
29
  .workspace(workspace)
@@ -29,6 +33,7 @@ export function* exportSlidesInsightWidgetHandler(ctx, cmd) {
29
33
  filename,
30
34
  timeout,
31
35
  templateId,
36
+ parametersByTab,
32
37
  });
33
38
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
34
39
  const fullUri = ctx.backend.config.hostname
@@ -1,5 +1,5 @@
1
1
  import { type IExecutionResult } from "@gooddata/sdk-backend-spi";
2
- import { type IResultWarning, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IExecutionResultLimitBreak, type IResultWarning, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
4
4
  import { type IExecutionResultEnvelope } from "../store/executionResults/types.js";
5
5
  import { type IDashboardCommand } from "./base.js";
@@ -29,4 +29,4 @@ export declare function setExecutionResultError(id: ObjRef | string, error: Good
29
29
  *
30
30
  * @beta
31
31
  */
32
- export declare function setExecutionResultData(id: ObjRef | string, executionResult: IExecutionResult, executionWarnings: IResultWarning[] | undefined, correlationId?: string): IUpsertExecutionResult;
32
+ export declare function setExecutionResultData(id: ObjRef | string, executionResult: IExecutionResult, executionWarnings: IResultWarning[] | undefined, limitBreaks: IExecutionResultLimitBreak[] | undefined, correlationId?: string): IUpsertExecutionResult;
@@ -1,5 +1,5 @@
1
1
  // (C) 2021-2026 GoodData Corporation
2
- import { serializeObjRef } from "@gooddata/sdk-model";
2
+ import { serializeObjRef, } from "@gooddata/sdk-model";
3
3
  function upsertExecutionResult(id, envelopeData, correlationId) {
4
4
  return {
5
5
  type: "GDC.DASH/CMD.EXECUTION_RESULT.UPSERT",
@@ -21,6 +21,7 @@ export function setExecutionResultLoading(id, correlationId) {
21
21
  executionResult: undefined,
22
22
  error: undefined,
23
23
  warnings: undefined,
24
+ limitBreaks: undefined,
24
25
  }, correlationId);
25
26
  }
26
27
  /**
@@ -33,6 +34,7 @@ export function setExecutionResultError(id, error, correlationId) {
33
34
  isLoading: false,
34
35
  error,
35
36
  warnings: undefined,
37
+ limitBreaks: undefined,
36
38
  }, correlationId);
37
39
  }
38
40
  /**
@@ -40,11 +42,12 @@ export function setExecutionResultError(id, error, correlationId) {
40
42
  *
41
43
  * @beta
42
44
  */
43
- export function setExecutionResultData(id, executionResult, executionWarnings, correlationId) {
45
+ export function setExecutionResultData(id, executionResult, executionWarnings, limitBreaks, correlationId) {
44
46
  return upsertExecutionResult(id, {
45
47
  isLoading: false,
46
48
  error: undefined,
47
49
  executionResult,
48
50
  warnings: executionWarnings,
51
+ limitBreaks,
49
52
  }, correlationId);
50
53
  }
@@ -1,5 +1,5 @@
1
1
  import { type IExecutionResult } from "@gooddata/sdk-backend-spi";
2
- import { type IResultWarning, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IExecutionResultLimitBreak, type IResultWarning, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type IPushData, type OnError, type OnLoadingChanged } from "@gooddata/sdk-ui";
4
4
  /**
5
5
  * Provides callbacks to integrate with the executionResults slice.
@@ -8,6 +8,6 @@ import { type IPushData, type OnError, type OnLoadingChanged } from "@gooddata/s
8
8
  export declare function useWidgetExecutionsHandler(widgetRef: ObjRef): {
9
9
  onLoadingChanged: OnLoadingChanged;
10
10
  onError: OnError;
11
- onSuccess: (executionResult: IExecutionResult, warnings: IResultWarning[] | undefined) => void;
11
+ onSuccess: (executionResult: IExecutionResult, warnings: IResultWarning[] | undefined, limitBreaks?: IExecutionResultLimitBreak<import("@gooddata/sdk-model").ExecutionResultLimitType | (string & {})>[] | undefined) => void;
12
12
  onPushData: (data: IPushData) => void;
13
13
  };
@@ -2,6 +2,10 @@
2
2
  import { useCallback } from "react";
3
3
  import { setExecutionResultData, setExecutionResultError, setExecutionResultLoading, } from "../commands/executionResults.js";
4
4
  import { useDispatchDashboardCommand } from "./useDispatchDashboardCommand.js";
5
+ function getLimitBreaks(dataView) {
6
+ const limitBreaks = dataView.metadata?.limitBreaks;
7
+ return limitBreaks && limitBreaks.length > 0 ? [...limitBreaks] : undefined;
8
+ }
5
9
  /**
6
10
  * Provides callbacks to integrate with the executionResults slice.
7
11
  * @internal
@@ -13,12 +17,13 @@ export function useWidgetExecutionsHandler(widgetRef) {
13
17
  const onError = useCallback((error) => {
14
18
  setError(widgetRef, error);
15
19
  }, [setError, widgetRef]);
16
- const onSuccess = useCallback((executionResult, warnings) => {
17
- setData(widgetRef, executionResult, warnings);
20
+ const onSuccess = useCallback((executionResult, warnings, limitBreaks) => {
21
+ setData(widgetRef, executionResult, warnings, limitBreaks);
18
22
  }, [setData, widgetRef]);
19
23
  const onPushData = useCallback((data) => {
20
24
  if (data.dataView) {
21
- onSuccess(data.dataView.result, data.dataView.warnings);
25
+ const limitBreaks = getLimitBreaks(data.dataView);
26
+ onSuccess(data.dataView.result, data.dataView.warnings, limitBreaks);
22
27
  }
23
28
  }, [onSuccess]);
24
29
  const onLoadingChanged = useCallback(({ isLoading }) => {
@@ -1,4 +1,4 @@
1
- import { type ObjRef } from "@gooddata/sdk-model";
1
+ import { type IExecutionResultLimitBreak, type ObjRef } from "@gooddata/sdk-model";
2
2
  import { type DashboardSelector, type DashboardState } from "../types.js";
3
3
  import { type IExecutionResultEnvelope } from "./types.js";
4
4
  /**
@@ -10,6 +10,7 @@ export declare const selectExecutionResult: (state: DashboardState, id: import("
10
10
  executionResult?: import("@gooddata/sdk-backend-spi").IExecutionResult | undefined;
11
11
  error?: import("@gooddata/sdk-ui").GoodDataSdkError | undefined;
12
12
  warnings?: import("@gooddata/sdk-model").IResultWarning[] | undefined;
13
+ limitBreaks?: IExecutionResultLimitBreak<import("@gooddata/sdk-model").ExecutionResultLimitType | (string & {})>[] | undefined;
13
14
  };
14
15
  /**
15
16
  * @alpha
@@ -19,6 +20,22 @@ export declare const selectHasSomeExecutionResult: DashboardSelector<boolean>;
19
20
  * @alpha
20
21
  */
21
22
  export declare const selectExecutionResultByRef: (ref: ObjRef | undefined) => DashboardSelector<IExecutionResultEnvelope | undefined>;
23
+ /**
24
+ * Selects the execution result limit breaks for the widget with the given ref.
25
+ *
26
+ * @remarks
27
+ * Limit breaks indicate that the widget's execution hit a row/column/cell limit and only partial
28
+ * data was returned. Returns an empty array when there are no limit breaks or the result is not available.
29
+ *
30
+ * @alpha
31
+ */
32
+ export declare const selectExecutionResultLimitBreaksByRef: (ref: ObjRef | undefined) => DashboardSelector<IExecutionResultLimitBreak[]>;
33
+ /**
34
+ * Selects whether the widget with the given ref returned partial data because an execution limit was reached.
35
+ *
36
+ * @alpha
37
+ */
38
+ export declare const selectHasExecutionResultLimitBreaksByRef: (ref: ObjRef | undefined) => DashboardSelector<boolean>;
22
39
  /**
23
40
  * @alpha
24
41
  */
@@ -32,6 +32,22 @@ export const selectExecutionResultByRef = createMemoizedSelector((ref) => create
32
32
  const key = serializeObjRef(ref);
33
33
  return executionResults[key];
34
34
  }));
35
+ /**
36
+ * Selects the execution result limit breaks for the widget with the given ref.
37
+ *
38
+ * @remarks
39
+ * Limit breaks indicate that the widget's execution hit a row/column/cell limit and only partial
40
+ * data was returned. Returns an empty array when there are no limit breaks or the result is not available.
41
+ *
42
+ * @alpha
43
+ */
44
+ export const selectExecutionResultLimitBreaksByRef = createMemoizedSelector((ref) => createSelector(selectExecutionResultByRef(ref), (widgetExecution) => widgetExecution?.limitBreaks ?? []));
45
+ /**
46
+ * Selects whether the widget with the given ref returned partial data because an execution limit was reached.
47
+ *
48
+ * @alpha
49
+ */
50
+ export const selectHasExecutionResultLimitBreaksByRef = createMemoizedSelector((ref) => createSelector(selectExecutionResultLimitBreaksByRef(ref), (limitBreaks) => limitBreaks.length > 0));
35
51
  /**
36
52
  * @alpha
37
53
  */
@@ -1,5 +1,5 @@
1
1
  import { type IExecutionResult } from "@gooddata/sdk-backend-spi";
2
- import { type IResultWarning } from "@gooddata/sdk-model";
2
+ import { type IExecutionResultLimitBreak, type IResultWarning } from "@gooddata/sdk-model";
3
3
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
4
4
  /**
5
5
  * @beta
@@ -10,4 +10,10 @@ export interface IExecutionResultEnvelope {
10
10
  executionResult?: IExecutionResult;
11
11
  error?: GoodDataSdkError;
12
12
  warnings?: IResultWarning[];
13
+ /**
14
+ * Limits broken during result computation, causing partial data to be returned for this widget.
15
+ *
16
+ * @alpha
17
+ */
18
+ limitBreaks?: IExecutionResultLimitBreak[];
13
19
  }
@@ -1,2 +1,2 @@
1
- // (C) 2021-2023 GoodData Corporation
1
+ // (C) 2021-2026 GoodData Corporation
2
2
  export {};
@@ -1,6 +1,6 @@
1
1
  // (C) 2021-2026 GoodData Corporation
2
2
  import { partition } from "lodash-es";
3
- import { areObjRefsEqual, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, dashboardMeasureValueFilterLocalIdentifier, isAllTimeDashboardDateFilter, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, objRefToString, } from "@gooddata/sdk-model";
3
+ import { areObjRefsEqual, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, dashboardMeasureValueFilterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, isNoopAllTimeDashboardDateFilter, objRefToString, } from "@gooddata/sdk-model";
4
4
  import { generateFilterLocalIdentifier } from "../../_infra/generators.js";
5
5
  /**
6
6
  * Deeply merges partial working filter context into filter context definition.
@@ -97,7 +97,10 @@ export function applyFilterContext(filterContext, workingFilterContext, enableIm
97
97
  const workingCommonDateFilter = workingFilterContext?.filters.find(isDashboardCommonDateFilter);
98
98
  if (appliedCommonDateFilter ||
99
99
  !workingCommonDateFilter ||
100
- (isAllTimeDashboardDateFilter(workingCommonDateFilter) && !appliedCommonDateFilter)) {
100
+ // Drop the working common date filter only when it is a true no-op All time filter.
101
+ // An All time filter that carries `emptyValueHandling` (the "Empty values" preset) is a
102
+ // meaningful change and must be kept, otherwise the dashboard would not detect it as changed.
103
+ (isNoopAllTimeDashboardDateFilter(workingCommonDateFilter) && !appliedCommonDateFilter)) {
101
104
  return {
102
105
  ...filterContext,
103
106
  filters,
@@ -1,5 +1,4 @@
1
- import { type IDashboardParameterValueOverride } from "@gooddata/sdk-backend-spi";
2
- import { type IDashboardParameter, type IDashboardTab, type IInsight, type IInsightDefinition, type IInsightParameterValue, type IParameterMetadataObject, type IdentifierRef } from "@gooddata/sdk-model";
1
+ import { type IDashboardExportParameter, type IDashboardParameter, type IDashboardTab, type IInsight, type IInsightDefinition, type IInsightParameterValue, type IParameterMetadataObject, type IdentifierRef } from "@gooddata/sdk-model";
3
2
  import { type ObjRefMap } from "../../../../_staging/metadata/objRefMap.js";
4
3
  import { type IInsightWidgetTabContext } from "../layout/layoutSelectors.js";
5
4
  import { type ITabState } from "../tabsState.js";
@@ -7,7 +6,7 @@ import { type IDashboardParameterEntry } from "./parametersState.js";
7
6
  /**
8
7
  * @internal
9
8
  */
10
- export declare const EMPTY_EXPORT_PARAMETERS: Record<string, IDashboardParameterValueOverride[]>;
9
+ export declare const EMPTY_EXPORT_PARAMETERS: Record<string, IDashboardExportParameter[]>;
11
10
  /**
12
11
  * Walks the insight's metric buckets and returns the parameter refs they reference,
13
12
  * deduped by ref string. The order matches the first occurrence in the measure traversal.
@@ -48,7 +47,7 @@ export declare function workspaceParametersByRef(workspaceParameters: IParameter
48
47
  *
49
48
  * @internal
50
49
  */
51
- export declare function formatDashboardParameter(entry: IDashboardParameterEntry, workspaceParameter: IParameterMetadataObject | undefined): IDashboardParameterValueOverride | undefined;
50
+ export declare function formatDashboardParameter(entry: IDashboardParameterEntry, workspaceParameter: IParameterMetadataObject | undefined): IDashboardExportParameter | undefined;
52
51
  /**
53
52
  * Resolves the persisted shape of a parameter entry against its workspace catalog parameter.
54
53
  * Drops `value` when it equals the workspace default; drops `label` when it equals the workspace title.
@@ -94,7 +93,7 @@ export declare function computeParameterResetTargets(entries: IDashboardParamete
94
93
  export declare function collectExportOverrides(tabRefSelections: ReadonlyArray<{
95
94
  tab: ITabState;
96
95
  allowedRefs?: Set<string>;
97
- }>, workspaceByRef: Map<string, IParameterMetadataObject>): Record<string, IDashboardParameterValueOverride[]>;
96
+ }>, workspaceByRef: Map<string, IParameterMetadataObject>): Record<string, IDashboardExportParameter[]>;
98
97
  /**
99
98
  * Builds per-tab ref selections for a widget-scope export: each widget's owning tab is restricted
100
99
  * to refs referenced by the widget's insight metrics. Multiple widgets on the same tab union their
@@ -1,5 +1,4 @@
1
- import { type IDashboardParameterValueOverride } from "@gooddata/sdk-backend-spi";
2
- import { type IDashboardParameter, type IInsightParameterValue, type ObjRef } from "@gooddata/sdk-model";
1
+ import { type IDashboardExportParameter, type IDashboardParameter, type IInsightParameterValue, type ObjRef } from "@gooddata/sdk-model";
3
2
  import { type DashboardSelector } from "../../types.js";
4
3
  import { type IDashboardParameterEntry } from "./parametersState.js";
5
4
  /**
@@ -130,4 +129,4 @@ export declare const selectEffectiveParameterValuesForWidget: (ref: ObjRef | und
130
129
  *
131
130
  * @alpha
132
131
  */
133
- export declare const selectExportEffectiveParameters: (widgetIds: string[] | undefined) => DashboardSelector<Record<string, IDashboardParameterValueOverride[]>>;
132
+ export declare const selectExportEffectiveParameters: (widgetIds: string[] | undefined) => DashboardSelector<Record<string, IDashboardExportParameter[]>>;
@@ -439,7 +439,7 @@ export const de_DE = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Fehler: Die in diesem Filter verwendete Metrik existiert im workspace nicht mehr.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "Leistungskennzahl kann nicht nach Datum gefiltert werden. Markierung des Kontrollfelds entfernen.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kann nicht mehr auf die Visualisierung angewendet werden. Wählen Sie eine andere Dimension oder bearbeiten Sie die Visualisierung.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kann nicht mehr auf den Leistungskennzahl angewandt werden. Wählen Sie eine andere Dimension oder bearbeiten Sie den Leistungskennzahl.",
@@ -439,7 +439,7 @@ export const en_AU = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Error: The metric used in this filter no longer exists in the workspace.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi can't be filtered by Date. Unselect the check box.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the KPI. Select a different dimension or edit the KPI.",
@@ -439,7 +439,7 @@ export const en_GB = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Error: The metric used in this filter no longer exists in the workspace.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "The kpi cannot be filtered by Date. Unselect the check box.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" can no longer be applied to the visualisation. Select a different dimension or edit the visualisation.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" can no longer be applied to the kpi. Select a different dimension or edit the kpi.",
@@ -439,7 +439,7 @@ export const es_419 = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Error: La métrica usada en este filtro ya no existe en el espacio de trabajo.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione otra dimensión o edite el KPI.",
@@ -439,7 +439,7 @@ export const es_ES = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Error: La métrica usada en este filtro ya no existe en el espacio de trabajo.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "El KPI no se puede filtrar por fecha. Desmarque la casilla de verificación.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ya no se puede aplicar a la visualización. Seleccione una dimensión diferente o edite la visualización.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ya no se puede aplicar al KPI. Seleccione una dimensión diferente o edite el KPI.",
@@ -439,7 +439,7 @@ export const fi_FI = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Virhe: Tässä suodattimessa käytettyä metrikkaa ei enää ole työtilassa.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI:ta ei voi suodattaa päivämäärällä. Poista valintamerkki.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ei voida enää soveltaa visualisointiin. Valitse toinen ulottuvuus tai muokkaa visualisointia.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ei voi enää soveltaa KPI:hin. Valitse eri ulottuvuus tai muokkaa KPI:tä.",
@@ -439,7 +439,7 @@ export const fr_CA = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Erreur : La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par Date. Décochez la case.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une dimension différente ou modifiez la visualisation.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une dimension différente ou modifiez le KPI.",
@@ -439,7 +439,7 @@ export const fr_FR = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Erreur : La métrique utilisée dans ce filtre n’existe plus dans l’espace de travail.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "Le KPI ne peut pas être filtré par date. Décochez la case.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué à la visualisation. Sélectionnez une autre dimension ou modifiez la visualisation.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" ne peut plus être appliqué au KPI. Sélectionnez une autre dimension ou modifiez le KPI.",
@@ -439,7 +439,7 @@ export const id_ID = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Error: Metrik yang digunakan dalam filter ini tidak lagi ada di ruang kerja.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "kpi tidak dapat difilter oleh Tanggal. Batalkan pilihan kotak centang.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada visualisasi. Pilih dimensi lain atau edit visualisasi.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" tidak dapat lagi diterapkan pada kpi. Pilih dimensi lain atau edit kpi.",
@@ -439,7 +439,7 @@ export const it_IT = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Errore: La metrica usata in questo filtro non esiste più nell'area di lavoro.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "Il KPI non può essere filtrato per Data. Deselezionare la casella di controllo.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" non può più essere applicato alla visualizzazione. Selezionare una dimensione diversa o modificare la visualizzazione.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" non può più essere applicato al KPI. Selezionare una dimensione diversa o modificare il KPI.",
@@ -439,7 +439,7 @@ export const ja_JP = {
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "この可視化にはフィルターを適用できません。",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "このフィルターは、可視化で上位/下位値フィルターが使用されているため適用できません。このフィルターを適用するには、上位/下位値フィルターを削除してください。",
441
441
  "configurationPanel.mvfMissingMeasure": "このフィルターで使用されているメトリックは、ワークスペースに存在しなくなりました。",
442
- "filters.mvf.missingMetric.tooltip": "このフィルターで使用されているメトリックは、ワークスペースに存在しなくなりました。",
442
+ "filters.mvf.missingMetric.tooltip": "エラー: このフィルターで使用されているメトリックは、ワークスペースに存在しなくなりました。",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPIは日付でフィルターできません。チェックボックスの選択を解除してください。",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" はビジュアライゼーションに適用できなくなりました。別の次元を選択するか、ビジュアライゼーションを編集してください。",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"はKPIに適用できなくなりました。別のディメンションを選ぶか、KPIを編集してください。",
@@ -439,7 +439,7 @@ export const ko_KR = {
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "이 시각화에는 필터를 적용할 수 없습니다.",
440
440
  "configurationPanel.mvfBlockedByRankingFilter": "이 필터는 시각화에서 상위/하위 값 필터를 사용하므로 적용할 수 없습니다. 이 필터를 적용하려면 상위/하위 값 필터를 제거하세요.",
441
441
  "configurationPanel.mvfMissingMeasure": "이 필터에 사용된 메트릭이 더 이상 작업 공간에 존재하지 않습니다.",
442
- "filters.mvf.missingMetric.tooltip": "이 필터에 사용된 메트릭이 더 이상 작업 공간에 존재하지 않습니다.",
442
+ "filters.mvf.missingMetric.tooltip": "오류: 이 필터에 사용된 메트릭이 더 이상 작업 공간에 존재하지 않습니다.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI는 날짜로 필터링할 수 없습니다. 체크박스를 선택 해제하세요.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\"을/를 더 이상 시각화에 적용할 수 없습니다. 다른 차원을 선택하거나 시각화를 편집하세요.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\"은/는 더 이상 KPI에 적용할 수 없습니다. 다른 차원을 선택하거나 KPI를 편집하세요.",
@@ -439,7 +439,7 @@ export const nl_NL = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Fout: De metriek die in dit filter wordt gebruikt, bestaat niet meer in de werkruimte.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "De KPI kan niet worden gefilterd op Datum. Vink het selectievakje af.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" kan niet langer worden toegepast op de visualisatie. Selecteer een andere dimensie of bewerk de visualisatie.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" kan niet langer op de KPI worden toegepast. Selecteer een andere dimensie of bewerk de KPI.",
@@ -439,7 +439,7 @@ export const pl_PL = {
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
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.",
442
+ "filters.mvf.missingMetric.tooltip": "Błąd: Metryka używana w tym filtrze już nie istnieje w przestrzeni roboczej.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "KPI nie może być filtrowane wg daty. Odznacz pole wyboru.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do wizualizacji. Wybierz inny wymiar lub edytuj wizualizację.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "\"{dateDataSet}\" nie może być już zastosowany do KPI. Wybierz inny wymiar lub edytuj KPI.",
@@ -439,7 +439,7 @@ export const pt_BR = {
439
439
  "configurationPanel.vizCantBeFilteredByMeasureValueFilter": "O filtro não é aplicável a esta visualização.",
440
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.",
441
441
  "configurationPanel.mvfMissingMeasure": "A métrica usada neste filtro não existe mais no espaço de trabalho.",
442
- "filters.mvf.missingMetric.tooltip": "A métrica usada neste filtro não existe mais no espaço de trabalho.",
442
+ "filters.mvf.missingMetric.tooltip": "Erro: A métrica usada neste filtro não existe mais no espaço de trabalho.",
443
443
  "configurationPanel.kpiCantBeFilteredByDate": "O KPI não pode ser filtrado por Data. Desmarque a caixa de seleção.",
444
444
  "configurationPanel.unrelatedVizDateInfo": "\"{dateDataSet}\" não pode mais ser aplicado à visualização. Selecione uma dimensão diferente ou edite a visualização.",
445
445
  "configurationPanel.unrelatedKpiDateInfo": "Não é possível aplicar \"{dateDataSet}\" ao KPI. Selecione uma dimensão diferente ou edite o KPI.",