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

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 (71) 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/config/configSelectors.js +1 -1
  16. package/esm/model/store/executionResults/executionResultsSelectors.d.ts +18 -1
  17. package/esm/model/store/executionResults/executionResultsSelectors.js +16 -0
  18. package/esm/model/store/executionResults/types.d.ts +7 -1
  19. package/esm/model/store/executionResults/types.js +1 -1
  20. package/esm/model/store/tabs/filterContext/filterContextUtils.js +5 -2
  21. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +4 -5
  22. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +2 -3
  23. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +2 -2
  24. package/esm/presentation/automations/alerting/DefaultAlertingDialog/utils/getters.js +2 -1
  25. package/esm/presentation/automations/shared/automationFilters/useAutomationFiltersSelect.js +1 -1
  26. package/esm/presentation/automations/shared/automationFilters/utils.d.ts +1 -1
  27. package/esm/presentation/automations/shared/automationFilters/utils.js +4 -2
  28. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -1
  29. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -1
  30. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +1 -1
  31. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +64 -0
  32. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +64 -0
  33. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +1 -1
  34. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +1 -1
  35. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -1
  36. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -1
  37. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -1
  38. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -1
  39. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -1
  40. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -1
  41. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -1
  42. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -1
  43. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -1
  44. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -1
  45. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -1
  46. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +1 -1
  47. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -1
  48. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -1
  49. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -1
  50. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -1
  51. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -1
  52. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -1
  53. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -1
  54. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -1
  55. package/esm/presentation/topBar/buttonBar/DefaultButtonBar.d.ts +1 -1
  56. package/esm/presentation/topBar/buttonBar/DefaultButtonBar.js +2 -2
  57. package/esm/presentation/topBar/buttonBar/types.d.ts +2 -0
  58. package/esm/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.js +8 -0
  59. package/esm/presentation/widget/widget/InsightWidget/useInsightWarning.d.ts +5 -0
  60. package/esm/presentation/widget/widget/InsightWidget/useInsightWarning.js +11 -0
  61. package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.d.ts +13 -0
  62. package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.js +108 -0
  63. package/esm/sdk-ui-dashboard.d.ts +34 -5
  64. package/esm/tsdoc-metadata.json +1 -1
  65. package/package.json +21 -21
  66. package/styles/css/main.css +129 -0
  67. package/styles/css/main.css.map +1 -1
  68. package/styles/css/warningPartialResult.css +16 -0
  69. package/styles/css/warningPartialResult.css.map +1 -0
  70. package/styles/scss/main.scss +1 -0
  71. package/styles/scss/warningPartialResult.scss +16 -0
@@ -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.4";
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.4";
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 }) => {
@@ -806,7 +806,7 @@ export const selectActiveCalendars = createSelector(selectConfig, selectEnableFi
806
806
  * @alpha
807
807
  */
808
808
  export const selectEnableDashboardFilterGroups = createSelector(selectConfig, (state) => {
809
- return state.settings?.enableDashboardFilterGroups ?? false;
809
+ return state.settings?.enableDashboardFilterGroups ?? true;
810
810
  });
811
811
  /**
812
812
  * Selector for enabling empty date values configuration in KPI Dashboards date filter.
@@ -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[]>>;
@@ -102,7 +102,7 @@ export function useEditAlert({ alertToEdit, notificationChannels, insight, widge
102
102
  };
103
103
  })();
104
104
  const [editedAutomation, setEditedAutomation] = useState(resolvedAlertToEdit ??
105
- createDefaultAlert(getAppliedWidgetFilters(editedAutomationFilters ?? [], dashboardHiddenFilters, widget, insight, commonDateFilterId, true), supportedMeasures, defaultMeasure, defaultNotificationChannelId, defaultRecipient, measureFormatMap, undefined, descriptor.evaluationFrequency
105
+ createDefaultAlert(getAppliedWidgetFilters(editedAutomationFilters ?? [], dashboardHiddenFilters, widget, insight, commonDateFilterId, true, false), supportedMeasures, defaultMeasure, defaultNotificationChannelId, defaultRecipient, measureFormatMap, undefined, descriptor.evaluationFrequency
106
106
  ? {
107
107
  cron: descriptor.evaluationFrequency,
108
108
  timezone: settings.alertDefault?.defaultTimezone,
@@ -232,7 +232,7 @@ export function useEditAlert({ alertToEdit, notificationChannels, insight, widge
232
232
  if (!s) {
233
233
  return undefined;
234
234
  }
235
- const appliedFilters = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, true);
235
+ const appliedFilters = getAppliedWidgetFilters(filters, dashboardHiddenFilters, widget, insight, commonDateFilterId, true, !s.metadata?.widget);
236
236
  const visibleFilters = getVisibleFiltersByFilters(filters, availableFiltersAsVisibleFilters, true);
237
237
  const updatedAutomationWithFilters = {
238
238
  ...s,
@@ -243,7 +243,8 @@ export function getFiltersAttribute(datasetsWithGranularity, dataset) {
243
243
  //utils
244
244
  function getAttributeRelatedFilter(attr, alert) {
245
245
  const filter = alert?.alert?.execution.filters.filter((f) => {
246
- return getSliceFilterDisplayFormLocalId(f) === attr?.attribute.attribute.localIdentifier;
246
+ return (attr?.attribute.attribute.localIdentifier &&
247
+ getSliceFilterDisplayFormLocalId(f) === attr.attribute.attribute.localIdentifier);
247
248
  })[0];
248
249
  if (isPositiveAttributeFilter(filter) && isAttributeElementsByValue(filter.positiveAttributeFilter.in)) {
249
250
  return {
@@ -84,7 +84,7 @@ export const useAutomationFiltersSelect = ({ widget, automationToEdit, }) => {
84
84
  return !widget && !storeFilters;
85
85
  }, [widget, storeFilters]);
86
86
  // State of current automation filters to display (and potentially save).
87
- const [editedAutomationFilters, setEditedAutomationFilters] = useState(automationToEdit && !isDashboardAutomationWithoutStoredFilters
87
+ const [editedAutomationFilters, setEditedAutomationFilters] = useState(automationToEdit && (!isDashboardAutomationWithoutStoredFilters || !automationToEdit.metadata?.widget)
88
88
  ? filtersForExistingAutomation
89
89
  : filtersForNewAutomation);
90
90
  const filtersByTabForNewAutomation = getDefaultSelectedFiltersFromFiltersByTab(filtersByTab);
@@ -27,7 +27,7 @@ export declare function resolveMvfDimensionalityLocalRefs(filters: IFilter[], in
27
27
  /**
28
28
  * Get final execution filters for the widget alert or scheduled export.
29
29
  */
30
- export declare const getAppliedWidgetFilters: (selectedAutomationFilters: FilterContextItem[], dashboardHiddenFilters: FilterContextItem[], widget: ExtendedDashboardWidget | undefined, insight: IInsight | undefined, commonDateFilterId: string | undefined, mergeInsightFilters?: boolean) => IFilter[];
30
+ export declare const getAppliedWidgetFilters: (selectedAutomationFilters: FilterContextItem[], dashboardHiddenFilters: FilterContextItem[], widget: ExtendedDashboardWidget | undefined, insight: IInsight | undefined, commonDateFilterId: string | undefined, mergeInsightFilters?: boolean, withoutWidget?: boolean) => IFilter[];
31
31
  /**
32
32
  * Get final filters for the dashboard scheduled export.
33
33
  */
@@ -172,7 +172,7 @@ export function resolveMvfDimensionalityLocalRefs(filters, insight) {
172
172
  /**
173
173
  * Get final execution filters for the widget alert or scheduled export.
174
174
  */
175
- export const getAppliedWidgetFilters = (selectedAutomationFilters, dashboardHiddenFilters, widget, insight, commonDateFilterId, mergeInsightFilters = false) => {
175
+ export const getAppliedWidgetFilters = (selectedAutomationFilters, dashboardHiddenFilters, widget, insight, commonDateFilterId, mergeInsightFilters = false, withoutWidget = false) => {
176
176
  // Hidden filters are never included in selectedAutomationFilters,
177
177
  // but we need them to construct proper execution filters, so merge them.
178
178
  const selectedFiltersWithHiddenFilters = [...selectedAutomationFilters, ...dashboardHiddenFilters];
@@ -181,7 +181,9 @@ export const getAppliedWidgetFilters = (selectedAutomationFilters, dashboardHidd
181
181
  // Now, convert sanitized selected filters to execution filters shape.
182
182
  const selectedExecutionFilters = isInsightWidget(widget)
183
183
  ? filterContextItemsToDashboardFiltersByWidget(selectedFiltersWithoutIgnoredFilters, widget)
184
- : [];
184
+ : withoutWidget
185
+ ? filterContextItemsToDashboardFiltersByWidget(selectedFiltersWithoutIgnoredFilters, undefined)
186
+ : [];
185
187
  const filtersToUse = mergeInsightFilters
186
188
  ? mergeFilters(insight?.insight?.filters ?? [], selectedExecutionFilters, commonDateFilterId)
187
189
  : selectedExecutionFilters;
@@ -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.",
@@ -1259,6 +1259,70 @@ export declare const en_US: {
1259
1259
  text: string;
1260
1260
  crowdinContext: string;
1261
1261
  };
1262
+ "partial_data_warning.title": {
1263
+ text: string;
1264
+ crowdinContext: string;
1265
+ };
1266
+ "partial_data_warning.show_details": {
1267
+ text: string;
1268
+ crowdinContext: string;
1269
+ };
1270
+ "partial_data_warning.hide_details": {
1271
+ text: string;
1272
+ crowdinContext: string;
1273
+ };
1274
+ "partial_data_warning.close": {
1275
+ text: string;
1276
+ crowdinContext: string;
1277
+ };
1278
+ "partial_data_warning.export_raw": {
1279
+ text: string;
1280
+ crowdinContext: string;
1281
+ };
1282
+ "partial_data_warning.description": {
1283
+ text: string;
1284
+ crowdinContext: string;
1285
+ };
1286
+ "partial_data_warning.rows.description": {
1287
+ text: string;
1288
+ crowdinContext: string;
1289
+ };
1290
+ "partial_data_warning.rows.description.unknown_total": {
1291
+ text: string;
1292
+ crowdinContext: string;
1293
+ };
1294
+ "partial_data_warning.columns.description": {
1295
+ text: string;
1296
+ crowdinContext: string;
1297
+ };
1298
+ "partial_data_warning.columns.description.unknown_total": {
1299
+ text: string;
1300
+ crowdinContext: string;
1301
+ };
1302
+ "partial_data_warning.rows_columns.description": {
1303
+ text: string;
1304
+ crowdinContext: string;
1305
+ };
1306
+ "partial_data_warning.rows_columns.description.unknown_column_total": {
1307
+ text: string;
1308
+ crowdinContext: string;
1309
+ };
1310
+ "partial_data_warning.rows_columns.description.unknown_row_total": {
1311
+ text: string;
1312
+ crowdinContext: string;
1313
+ };
1314
+ "partial_data_warning.rows_columns.description.unknown_total": {
1315
+ text: string;
1316
+ crowdinContext: string;
1317
+ };
1318
+ "partial_data_warning.cells.description": {
1319
+ text: string;
1320
+ crowdinContext: string;
1321
+ };
1322
+ "partial_data_warning.cells.description.unknown_total": {
1323
+ text: string;
1324
+ crowdinContext: string;
1325
+ };
1262
1326
  "export_unsupported.disabled": {
1263
1327
  text: string;
1264
1328
  crowdinContext: string;