@gooddata/sdk-backend-tiger 11.62.0-alpha.2 → 11.62.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 (37) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/auth.js +1 -1
  4. package/esm/backend/features/feature.d.ts.map +1 -1
  5. package/esm/backend/features/feature.js +2 -1
  6. package/esm/backend/settings/mapping.js +2 -0
  7. package/esm/backend/uiFeatures.d.ts +6 -3
  8. package/esm/backend/uiFeatures.d.ts.map +1 -1
  9. package/esm/backend/uiFeatures.js +6 -3
  10. package/esm/backend/workspace/attributes/elements/dependentDateFilters.d.ts.map +1 -1
  11. package/esm/backend/workspace/attributes/elements/dependentDateFilters.js +26 -10
  12. package/esm/backend/workspace/dashboards/referenceAvailability.d.ts +13 -10
  13. package/esm/backend/workspace/dashboards/referenceAvailability.d.ts.map +1 -1
  14. package/esm/backend/workspace/dashboards/referenceAvailability.js +28 -13
  15. package/esm/backend/workspace/datasets/datasetsQuery.js +1 -1
  16. package/esm/backend/workspace/genAI/index.d.ts.map +1 -1
  17. package/esm/backend/workspace/genAI/index.js +13 -5
  18. package/esm/backend/workspace/parameters/parametersQuery.js +1 -1
  19. package/esm/convertors/fromBackend/AutomationConverter.d.ts.map +1 -1
  20. package/esm/convertors/fromBackend/AutomationConverter.js +4 -2
  21. package/esm/convertors/fromBackend/afm/FilterConverter.d.ts.map +1 -1
  22. package/esm/convertors/fromBackend/afm/FilterConverter.js +42 -0
  23. package/esm/convertors/shared/absoluteGranularityLiterals.d.ts +38 -0
  24. package/esm/convertors/shared/absoluteGranularityLiterals.d.ts.map +1 -0
  25. package/esm/convertors/shared/absoluteGranularityLiterals.js +82 -0
  26. package/esm/convertors/shared/storedFilterConverter.d.ts +12 -2
  27. package/esm/convertors/shared/storedFilterConverter.d.ts.map +1 -1
  28. package/esm/convertors/shared/storedFilterConverter.js +16 -5
  29. package/esm/convertors/toBackend/AutomationConverter.d.ts.map +1 -1
  30. package/esm/convertors/toBackend/AutomationConverter.js +7 -9
  31. package/esm/convertors/toBackend/ExportDefinitionsConverter.d.ts.map +1 -1
  32. package/esm/convertors/toBackend/ExportDefinitionsConverter.js +63 -71
  33. package/esm/convertors/toBackend/InsightConverter.d.ts.map +1 -1
  34. package/esm/convertors/toBackend/InsightConverter.js +6 -3
  35. package/esm/convertors/toBackend/afm/FilterConverter.d.ts.map +1 -1
  36. package/esm/convertors/toBackend/afm/FilterConverter.js +23 -2
  37. package/package.json +12 -12
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.62.0-alpha.2";
1
+ export declare const LIB_VERSION = "11.62.0-alpha.4";
2
2
  export declare const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-backend-tiger";
4
4
  //# sourceMappingURL=__version.d.ts.map
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.62.0-alpha.2";
3
+ export const LIB_VERSION = "11.62.0-alpha.4";
4
4
  export const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
5
5
  export const LIB_NAME = "@gooddata/sdk-backend-tiger";
package/esm/auth.js CHANGED
@@ -250,7 +250,7 @@ export function createTigerAuthenticationUrl(backend, authenticationFlow, locati
250
250
  const baseUrl = `${host}${authenticationFlow.loginUrl}`;
251
251
  const params = {
252
252
  [authenticationFlow.returnRedirectParam]: returnAddress,
253
- ...(additionalParams ?? {}),
253
+ ...additionalParams,
254
254
  };
255
255
  const paramsString = Object.entries(params)
256
256
  .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../src/backend/features/feature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,kBAAkB,EAAsB,MAAM,kBAAkB,CAAC;AAInG,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,OAAO,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,KAAK,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAErD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA43B9E"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../src/backend/features/feature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,kBAAkB,EAAsB,MAAM,kBAAkB,CAAC;AAInG,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,OAAO,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,KAAK,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAErD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAm4B9E"}
@@ -29,7 +29,6 @@ export function mapFeatures(features) {
29
29
  ...loadFeature(features, TigerFeaturesNames.EnableLabsSmartFunctions, "enableLabsSmartFunctions", "BOOLEAN", FeatureFlagsValues.enableLabsSmartFunctions),
30
30
  ...loadFeature(features, TigerFeaturesNames.EnableCustomTooltip, "enableCustomTooltip", "BOOLEAN", FeatureFlagsValues.enableCustomTooltip),
31
31
  ...loadFeature(features, TigerFeaturesNames.EnableMotherDuckDataSource, "enableMotherDuckDataSource", "BOOLEAN", FeatureFlagsValues.enableMotherDuckDataSource),
32
- ...loadFeature(features, TigerFeaturesNames.EnableMongoDbDataSource, "enableMongoDbDataSource", "BOOLEAN", FeatureFlagsValues.enableMongoDbDataSource),
33
32
  ...loadFeature(features, TigerFeaturesNames.EnableStarrocksDataSource, "enableStarrocksDataSource", "BOOLEAN", FeatureFlagsValues.enableStarrocksDataSource),
34
33
  ...loadFeature(features, TigerFeaturesNames.EnableDataProfiling, "enableDataProfiling", "BOOLEAN", FeatureFlagsValues.enableDataProfiling),
35
34
  ...loadFeature(features, TigerFeaturesNames.EnableExperimentalFeaturesUI, "enableExperimentalFeaturesUI", "BOOLEAN", FeatureFlagsValues.enableExperimentalFeaturesUI),
@@ -88,6 +87,7 @@ export function mapFeatures(features) {
88
87
  ...loadFeature(features, TigerFeaturesNames.EnableOrgLevelAIMemory, "enableOrgLevelAIMemory", "BOOLEAN", FeatureFlagsValues.enableOrgLevelAIMemory),
89
88
  ...loadFeature(features, TigerFeaturesNames.EnableAiAgenticSuggestions, "enableAiAgenticSuggestions", "BOOLEAN", FeatureFlagsValues.enableAiAgenticSuggestions),
90
89
  ...loadFeature(features, TigerFeaturesNames.EnableAiAssistantEmbedding, "enableAiAssistantEmbedding", "BOOLEAN", FeatureFlagsValues.enableAiAssistantEmbedding),
90
+ ...loadFeature(features, TigerFeaturesNames.EnableAiAssistantChartsV2, "enableAiAssistantChartsV2", "BOOLEAN", FeatureFlagsValues.enableAiAssistantChartsV2),
91
91
  ...loadFeature(features, TigerFeaturesNames.EnableAiContextSetup, "enableAiContextSetup", "BOOLEAN", FeatureFlagsValues.enableAiContextSetup),
92
92
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiDashboardBuilderSkill, "enableGenAiDashboardBuilderSkill", "BOOLEAN", FeatureFlagsValues.enableGenAiDashboardBuilderSkill),
93
93
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiRightPanel, "enableGenAiRightPanel", "BOOLEAN", FeatureFlagsValues.enableGenAiRightPanel),
@@ -128,6 +128,7 @@ export function mapFeatures(features) {
128
128
  ...loadFeature(features, TigerFeaturesNames.EnableComputedAttributes, "enableComputedAttributes", "BOOLEAN", FeatureFlagsValues.enableComputedAttributes),
129
129
  ...loadFeature(features, TigerFeaturesNames.EnableBusinessBriefingReportsApp, "enableBusinessBriefingReportsApp", "BOOLEAN", FeatureFlagsValues.enableBusinessBriefingReportsApp),
130
130
  ...loadFeature(features, TigerFeaturesNames.EnableReportsSubsections, "enableReportsSubsections", "BOOLEAN", FeatureFlagsValues.enableReportsSubsections),
131
+ ...loadFeature(features, TigerFeaturesNames.EnablePublisherV2, "enablePublisherV2", "BOOLEAN", FeatureFlagsValues.enablePublisherV2),
131
132
  ...loadFeature(features, TigerFeaturesNames.EnableEmbeddingWriteCommands, "enableEmbeddingWriteCommands", "BOOLEAN", FeatureFlagsValues.enableEmbeddingWriteCommands),
132
133
  ...loadFeature(features, TigerFeaturesNames.EnableLocalizationOverview, "enableLocalizationOverview", "BOOLEAN", FeatureFlagsValues.enableLocalizationOverview),
133
134
  };
@@ -42,6 +42,8 @@ const TYPE_TO_KEY_MAP = {
42
42
  ENABLE_PARTIAL_DATA_RESULTS: "enablePartialDataResults",
43
43
  ENABLE_NULL_JOINS: "enableNullJoins",
44
44
  ENABLE_TIMEZONE_CHANGE: "enableTimezoneChange",
45
+ DEFAULT_METRIC_VISIBILITY: "defaultMetricVisibility",
46
+ DEFAULT_VISUALIZATION_VISIBILITY: "defaultVisualizationVisibility",
45
47
  };
46
48
  export function mapTypeToKey(type, fallback = "") {
47
49
  // For undefined or unmapped type - return fallback
@@ -27,7 +27,6 @@ export declare enum TigerFeaturesNames {
27
27
  EnableStringParameters = "enableStringParameters",
28
28
  EnableCustomTooltip = "enableCustomTooltip",
29
29
  EnableMotherDuckDataSource = "enableMotherDuckDataSource",
30
- EnableMongoDbDataSource = "enableMongoDbDataSource",
31
30
  EnableStarrocksDataSource = "enableStarrocksDataSource",
32
31
  EnableLabsSmartFunctions = "enableLabsSmartFunctions",
33
32
  EnableDataProfiling = "enableDataProfiling",
@@ -121,6 +120,7 @@ export declare enum TigerFeaturesNames {
121
120
  EnableCollapsibleLeftSidebar = "enableCollapsibleLeftSidebar",
122
121
  EnableExportTimeoutFix = "enableExportTimeoutFix",
123
122
  EnableAiAssistantEmbedding = "enableAiAssistantEmbedding",
123
+ EnableAiAssistantChartsV2 = "enableAiAssistantChartsV2",
124
124
  EnableAiContextSetup = "enableAiContextSetup",
125
125
  EnableDashboardPersistentFiltersAcrossTabs = "enableDashboardPersistentFiltersAcrossTabs",
126
126
  EnableGenAiDashboardBuilderSkill = "enableGenAiDashboardBuilderSkill",
@@ -129,6 +129,7 @@ export declare enum TigerFeaturesNames {
129
129
  EnableComputedAttributes = "enableComputedAttributes",
130
130
  EnableBusinessBriefingReportsApp = "enableBusinessBriefingReportsApp",
131
131
  EnableReportsSubsections = "enableReportsSubsections",
132
+ EnablePublisherV2 = "enablePublisherV2",
132
133
  EnableEmbeddingWriteCommands = "enableEmbeddingWriteCommands",
133
134
  EnableLocalizationOverview = "enableLocalizationOverview"
134
135
  }
@@ -159,7 +160,6 @@ export type ITigerFeatureFlags = {
159
160
  enableLabsSmartFunctions: (typeof FeatureFlagsValues)["enableLabsSmartFunctions"][number];
160
161
  enableCustomTooltip: (typeof FeatureFlagsValues)["enableCustomTooltip"][number];
161
162
  enableMotherDuckDataSource: (typeof FeatureFlagsValues)["enableMotherDuckDataSource"][number];
162
- enableMongoDbDataSource: (typeof FeatureFlagsValues)["enableMongoDbDataSource"][number];
163
163
  enableStarrocksDataSource: (typeof FeatureFlagsValues)["enableStarrocksDataSource"][number];
164
164
  enableDataProfiling: (typeof FeatureFlagsValues)["enableDataProfiling"][number];
165
165
  enableExperimentalFeaturesUI: (typeof FeatureFlagsValues)["enableExperimentalFeaturesUI"][number];
@@ -218,6 +218,7 @@ export type ITigerFeatureFlags = {
218
218
  enableOrgLevelAIMemory: (typeof FeatureFlagsValues)["enableOrgLevelAIMemory"][number];
219
219
  enableAiAgenticSuggestions: (typeof FeatureFlagsValues)["enableAiAgenticSuggestions"][number];
220
220
  enableAiAssistantEmbedding: (typeof FeatureFlagsValues)["enableAiAssistantEmbedding"][number];
221
+ enableAiAssistantChartsV2: (typeof FeatureFlagsValues)["enableAiAssistantChartsV2"][number];
221
222
  enableAiAgenticMultiConversations: (typeof FeatureFlagsValues)["enableAiAgenticMultiConversations"][number];
222
223
  enableGenAiReasoningEffort: (typeof FeatureFlagsValues)["enableGenAiReasoningEffort"][number];
223
224
  enableGenAiObservability: (typeof FeatureFlagsValues)["enableGenAiObservability"][number];
@@ -258,6 +259,7 @@ export type ITigerFeatureFlags = {
258
259
  enableComputedAttributes: (typeof FeatureFlagsValues)["enableComputedAttributes"][number];
259
260
  enableBusinessBriefingReportsApp: (typeof FeatureFlagsValues)["enableBusinessBriefingReportsApp"][number];
260
261
  enableReportsSubsections: (typeof FeatureFlagsValues)["enableReportsSubsections"][number];
262
+ enablePublisherV2: (typeof FeatureFlagsValues)["enablePublisherV2"][number];
261
263
  enableEmbeddingWriteCommands: (typeof FeatureFlagsValues)["enableEmbeddingWriteCommands"][number];
262
264
  enableLocalizationOverview: (typeof FeatureFlagsValues)["enableLocalizationOverview"][number];
263
265
  };
@@ -280,7 +282,6 @@ export declare const FeatureFlagsValues: {
280
282
  enableImprovedRankingFilter: readonly [true, false];
281
283
  enableMySqlDataSource: readonly [true, false];
282
284
  enableMotherDuckDataSource: readonly [true, false];
283
- enableMongoDbDataSource: readonly [true, false];
284
285
  enableStarrocksDataSource: readonly [true, false];
285
286
  enableMariaDbDataSource: readonly [true, false];
286
287
  enableOracleDataSource: readonly [true, false];
@@ -348,6 +349,7 @@ export declare const FeatureFlagsValues: {
348
349
  enableOrgLevelAIMemory: readonly [false, true];
349
350
  enableAiAgenticSuggestions: readonly [true, false];
350
351
  enableAiAssistantEmbedding: readonly [true, false];
352
+ enableAiAssistantChartsV2: readonly [true, false];
351
353
  enableAiAgenticMultiConversations: readonly [true, false];
352
354
  enableGenAiReasoningEffort: readonly [true, false];
353
355
  enableGenAiObservability: readonly [true, false];
@@ -388,6 +390,7 @@ export declare const FeatureFlagsValues: {
388
390
  enableComputedAttributes: readonly [true, false];
389
391
  enableBusinessBriefingReportsApp: readonly [false, true];
390
392
  enableReportsSubsections: readonly [false, true];
393
+ enablePublisherV2: readonly [false, true];
391
394
  enableEmbeddingWriteCommands: readonly [true, false];
392
395
  enableLocalizationOverview: readonly [false, true];
393
396
  };
@@ -1 +1 @@
1
- {"version":3,"file":"uiFeatures.d.ts","sourceRoot":"","sources":["../../src/backend/uiFeatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uiFeatures.d.ts","sourceRoot":"","sources":["../../src/backend/uiFeatures.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,6 @@ export var TigerFeaturesNames;
28
28
  TigerFeaturesNames["EnableStringParameters"] = "enableStringParameters";
29
29
  TigerFeaturesNames["EnableCustomTooltip"] = "enableCustomTooltip";
30
30
  TigerFeaturesNames["EnableMotherDuckDataSource"] = "enableMotherDuckDataSource";
31
- TigerFeaturesNames["EnableMongoDbDataSource"] = "enableMongoDbDataSource";
32
31
  TigerFeaturesNames["EnableStarrocksDataSource"] = "enableStarrocksDataSource";
33
32
  TigerFeaturesNames["EnableLabsSmartFunctions"] = "enableLabsSmartFunctions";
34
33
  TigerFeaturesNames["EnableDataProfiling"] = "enableDataProfiling";
@@ -122,6 +121,7 @@ export var TigerFeaturesNames;
122
121
  TigerFeaturesNames["EnableCollapsibleLeftSidebar"] = "enableCollapsibleLeftSidebar";
123
122
  TigerFeaturesNames["EnableExportTimeoutFix"] = "enableExportTimeoutFix";
124
123
  TigerFeaturesNames["EnableAiAssistantEmbedding"] = "enableAiAssistantEmbedding";
124
+ TigerFeaturesNames["EnableAiAssistantChartsV2"] = "enableAiAssistantChartsV2";
125
125
  TigerFeaturesNames["EnableAiContextSetup"] = "enableAiContextSetup";
126
126
  TigerFeaturesNames["EnableDashboardPersistentFiltersAcrossTabs"] = "enableDashboardPersistentFiltersAcrossTabs";
127
127
  TigerFeaturesNames["EnableGenAiDashboardBuilderSkill"] = "enableGenAiDashboardBuilderSkill";
@@ -130,6 +130,7 @@ export var TigerFeaturesNames;
130
130
  TigerFeaturesNames["EnableComputedAttributes"] = "enableComputedAttributes";
131
131
  TigerFeaturesNames["EnableBusinessBriefingReportsApp"] = "enableBusinessBriefingReportsApp";
132
132
  TigerFeaturesNames["EnableReportsSubsections"] = "enableReportsSubsections";
133
+ TigerFeaturesNames["EnablePublisherV2"] = "enablePublisherV2";
133
134
  TigerFeaturesNames["EnableEmbeddingWriteCommands"] = "enableEmbeddingWriteCommands";
134
135
  TigerFeaturesNames["EnableLocalizationOverview"] = "enableLocalizationOverview";
135
136
  })(TigerFeaturesNames || (TigerFeaturesNames = {}));
@@ -152,7 +153,6 @@ export const DefaultFeatureFlags = {
152
153
  enableMySqlDataSource: false,
153
154
  enableMariaDbDataSource: false,
154
155
  enableMotherDuckDataSource: false,
155
- enableMongoDbDataSource: true,
156
156
  enableStarrocksDataSource: false,
157
157
  enableOracleDataSource: false,
158
158
  enableAnalyticalCatalog: false,
@@ -219,6 +219,7 @@ export const DefaultFeatureFlags = {
219
219
  enableOrgLevelAIMemory: false,
220
220
  enableAiAgenticSuggestions: false,
221
221
  enableAiAssistantEmbedding: false,
222
+ enableAiAssistantChartsV2: false,
222
223
  enableAiAgenticMultiConversations: false,
223
224
  enableGenAiReasoningEffort: false,
224
225
  enableGenAiObservability: false,
@@ -259,6 +260,7 @@ export const DefaultFeatureFlags = {
259
260
  enableComputedAttributes: false,
260
261
  enableBusinessBriefingReportsApp: false,
261
262
  enableReportsSubsections: false,
263
+ enablePublisherV2: false,
262
264
  enableEmbeddingWriteCommands: false,
263
265
  enableLocalizationOverview: false,
264
266
  };
@@ -280,7 +282,6 @@ export const FeatureFlagsValues = {
280
282
  enableImprovedRankingFilter: [true, false],
281
283
  enableMySqlDataSource: [true, false],
282
284
  enableMotherDuckDataSource: [true, false],
283
- enableMongoDbDataSource: [true, false],
284
285
  enableStarrocksDataSource: [true, false],
285
286
  enableMariaDbDataSource: [true, false],
286
287
  enableOracleDataSource: [true, false],
@@ -348,6 +349,7 @@ export const FeatureFlagsValues = {
348
349
  enableOrgLevelAIMemory: [false, true],
349
350
  enableAiAgenticSuggestions: [true, false],
350
351
  enableAiAssistantEmbedding: [true, false],
352
+ enableAiAssistantChartsV2: [true, false],
351
353
  enableAiAgenticMultiConversations: [true, false],
352
354
  enableGenAiReasoningEffort: [true, false],
353
355
  enableGenAiObservability: [true, false],
@@ -388,6 +390,7 @@ export const FeatureFlagsValues = {
388
390
  enableComputedAttributes: [true, false],
389
391
  enableBusinessBriefingReportsApp: [false, true],
390
392
  enableReportsSubsections: [false, true],
393
+ enablePublisherV2: [false, true],
391
394
  enableEmbeddingWriteCommands: [true, false],
392
395
  enableLocalizationOverview: [false, true],
393
396
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dependentDateFilters.d.ts","sourceRoot":"","sources":["../../../../../src/backend/workspace/attributes/elements/dependentDateFilters.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAI3B,MAAM,qBAAqB,CAAC;AAI7B,wBAAgB,2CAA2C,CACvD,UAAU,EAAE,mBAAmB,GAAG,mBAAmB,uBAOxD"}
1
+ {"version":3,"file":"dependentDateFilters.d.ts","sourceRoot":"","sources":["../../../../../src/backend/workspace/attributes/elements/dependentDateFilters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAI3B,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,2CAA2C,CACvD,UAAU,EAAE,mBAAmB,GAAG,mBAAmB,uBAOxD"}
@@ -1,7 +1,8 @@
1
- // (C) 2024-2025 GoodData Corporation
1
+ // (C) 2024-2026 GoodData Corporation
2
2
  import { invariant } from "ts-invariant";
3
3
  import { isRelativeBoundedDateFilter, isRelativeDateFilter, isUriRef, } from "@gooddata/sdk-model";
4
4
  import { toTigerGranularity } from "../../../../convertors/fromBackend/dateGranularityConversions.js";
5
+ import { hasPeriodLiteral, toWholePeriodLiterals, } from "../../../../convertors/shared/absoluteGranularityLiterals.js";
5
6
  export function mapDashboardDateFilterToDependentDateFilter(dateFilter) {
6
7
  if (isRelativeDateFilter(dateFilter)) {
7
8
  return newRelativeDependentDateFilter(dateFilter);
@@ -37,19 +38,34 @@ function newRelativeDependentDateFilter(dateFilter) {
37
38
  };
38
39
  }
39
40
  function newAbsoluteDependentDateFilter(dateFilter) {
40
- const localIdentifier = dateFilter.absoluteDateFilter.dataSet;
41
+ const { dataSet: localIdentifier, from, to, granularity } = dateFilter.absoluteDateFilter;
41
42
  invariant(!isUriRef(localIdentifier));
43
+ const dataset = {
44
+ identifier: {
45
+ id: localIdentifier.identifier,
46
+ type: "dataset",
47
+ },
48
+ };
49
+ if (hasPeriodLiteral(granularity)) {
50
+ const literals = toWholePeriodLiterals(granularity, from, to);
51
+ if (literals) {
52
+ return {
53
+ dateFilter: {
54
+ absoluteGranularityDateFilter: {
55
+ dataset,
56
+ granularity: toTigerGranularity(granularity),
57
+ ...literals,
58
+ },
59
+ },
60
+ };
61
+ }
62
+ }
42
63
  return {
43
64
  dateFilter: {
44
65
  absoluteDateFilter: {
45
- dataset: {
46
- identifier: {
47
- id: localIdentifier.identifier,
48
- type: "dataset",
49
- },
50
- },
51
- from: dateFilter.absoluteDateFilter.from,
52
- to: dateFilter.absoluteDateFilter.to,
66
+ dataset,
67
+ from,
68
+ to,
53
69
  },
54
70
  },
55
71
  };
@@ -5,6 +5,7 @@ import { type TigerAuthenticatedCallGuard } from "../../../types/index.js";
5
5
  /** The same for the filter-context GET, which links the objects the filters use. */
6
6
  declare const FILTER_CONTEXT_RELATIONSHIP_KEYS: {
7
7
  readonly displayForm: "labels";
8
+ readonly attribute: "attributes";
8
9
  readonly computedAttribute: "computedAttributes";
9
10
  readonly measure: "metrics";
10
11
  readonly fact: "facts";
@@ -23,19 +24,21 @@ export declare function resolveUnavailableReferences(document: JsonApiAnalytical
23
24
  */
24
25
  export declare function resolveUnavailableDashboardReferences(document: JsonApiAnalyticalDashboardOutDocument, dashboard: IDashboard, types: SupportedDashboardReferenceTypes[]): IUnavailableDashboardReference[];
25
26
  /**
26
- * Resolves which filter display forms, computed attributes, metrics and facts referenced by a filter
27
- * context are unavailable. Each inspected type must have been requested as an include (`labels`,
28
- * `computedAttributes`, `metrics`, `facts`) so the response contains both relationship linkages and
29
- * document-level `meta.restricted` for it.
27
+ * Resolves which filter display forms, attributes, computed attributes, metrics and facts referenced by
28
+ * a filter context are unavailable. Each inspected type must have been requested as an include
29
+ * (`labels`, `attributes`, `computedAttributes`, `metrics`, `facts`) so the response contains both
30
+ * relationship linkages and document-level `meta.restricted` for it.
30
31
  */
31
32
  export declare function resolveUnavailableFilterContextReferences(context: JsonApiFilterContextOut, restricted: RestrictedObject[] | undefined, inspected: FilterContextInspectedType[]): IUnavailableDashboardReference[];
32
33
  /**
33
- * Filter labels, computed attributes, metrics and facts relate to their filter-context entities: the
34
- * dashboard GET side-loads the filter contexts as bare items (no `relationships`), so the existence
35
- * linkage for filter objects is reachable only through a direct filter-context GET with `include=labels`
36
- * (and `computedAttributes`, `metrics`, `facts`), hence this one batched extra request. Types other than
37
- * labels are included only when a filter uses them (metric value filters, filters on computed
38
- * attributes, metrics and facts limiting a filter's values), so other dashboards never request them.
34
+ * Filter labels, attributes, computed attributes, metrics and facts relate to their filter-context
35
+ * entities: the dashboard GET side-loads the filter contexts as bare items (no `relationships`), so the
36
+ * existence linkage for filter objects is reachable only through a direct filter-context GET with
37
+ * `include=labels` (and `attributes`, `computedAttributes`, `metrics`, `facts`), hence this one batched
38
+ * extra request. Types other than labels are included only when a filter uses them (metric value
39
+ * filters and the attributes they are computed for, filters on computed attributes, metrics, facts
40
+ * and "Count of" attributes or computed attributes limiting a filter's values), so other dashboards
41
+ * never request them.
39
42
  * It inspects the contexts of the effective dashboard, so a `filterContextRef` override is covered;
40
43
  * the synthetic export-override context has no entity behind it and is skipped.
41
44
  * It would become redundant if the backend emitted `relationships.labels` on the filter-context items
@@ -1 +1 @@
1
- {"version":3,"file":"referenceAvailability.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/referenceAvailability.ts"],"names":[],"mappings":"AAEA,OAAO,EAIH,KAAK,qCAAqC,EAC1C,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,8BAA8B,EAC9B,gCAAgC,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,UAAU,EAQlB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAqD3E,oFAAoF;AACpF,QAAA,MAAM,gCAAgC;0BACrB,QAAQ;gCACF,oBAAoB;sBAC9B,SAAS;mBACZ,OAAO;CACwD,CAAC;AAE1E,KAAK,0BAA0B,GAAG,MAAM,OAAO,gCAAgC,CAAC;AAsEhF;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,QAAQ,EAAE,qCAAqC,EAC/C,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAKlC;AAED;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,qCAAqC,EAC/C,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAWlC;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CACrD,OAAO,EAAE,uBAAuB,EAChC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,SAAS,EAAE,0BAA0B,EAAE,GACxC,8BAA8B,EAAE,CAMlC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kCAAkC,CACpD,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,OAAO,CAAC,8BAA8B,EAAE,CAAC,CA4B3C;AA6BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ3E"}
1
+ {"version":3,"file":"referenceAvailability.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/dashboards/referenceAvailability.ts"],"names":[],"mappings":"AAEA,OAAO,EAIH,KAAK,qCAAqC,EAC1C,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACR,8BAA8B,EAC9B,gCAAgC,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,UAAU,EASlB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAqD3E,oFAAoF;AACpF,QAAA,MAAM,gCAAgC;0BACrB,QAAQ;wBACV,YAAY;gCACJ,oBAAoB;sBAC9B,SAAS;mBACZ,OAAO;CACwD,CAAC;AAE1E,KAAK,0BAA0B,GAAG,MAAM,OAAO,gCAAgC,CAAC;AAsEhF;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,QAAQ,EAAE,qCAAqC,EAC/C,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAKlC;AAED;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACjD,QAAQ,EAAE,qCAAqC,EAC/C,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,8BAA8B,EAAE,CAWlC;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CACrD,OAAO,EAAE,uBAAuB,EAChC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,SAAS,EAAE,0BAA0B,EAAE,GACxC,8BAA8B,EAAE,CAMlC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kCAAkC,CACpD,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,gCAAgC,EAAE,GAC1C,OAAO,CAAC,8BAA8B,EAAE,CAAC,CA4B3C;AA8CD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,EAAE,CAQ3E"}
@@ -20,6 +20,7 @@ const DASHBOARD_RELATIONSHIP_KEYS = {
20
20
  /** The same for the filter-context GET, which links the objects the filters use. */
21
21
  const FILTER_CONTEXT_RELATIONSHIP_KEYS = {
22
22
  displayForm: "labels",
23
+ attribute: "attributes",
23
24
  computedAttribute: "computedAttributes",
24
25
  measure: "metrics",
25
26
  fact: "facts",
@@ -88,21 +89,23 @@ export function resolveUnavailableDashboardReferences(document, dashboard, types
88
89
  return unavailable.filter((entry) => entry.type !== "filterContext" || (isIdentifierRef(entry.ref) && inUse.has(entry.ref.identifier)));
89
90
  }
90
91
  /**
91
- * Resolves which filter display forms, computed attributes, metrics and facts referenced by a filter
92
- * context are unavailable. Each inspected type must have been requested as an include (`labels`,
93
- * `computedAttributes`, `metrics`, `facts`) so the response contains both relationship linkages and
94
- * document-level `meta.restricted` for it.
92
+ * Resolves which filter display forms, attributes, computed attributes, metrics and facts referenced by
93
+ * a filter context are unavailable. Each inspected type must have been requested as an include
94
+ * (`labels`, `attributes`, `computedAttributes`, `metrics`, `facts`) so the response contains both
95
+ * relationship linkages and document-level `meta.restricted` for it.
95
96
  */
96
97
  export function resolveUnavailableFilterContextReferences(context, restricted, inspected) {
97
98
  return diffInspectedTypes({ data: context, meta: { restricted } }, FILTER_CONTEXT_RELATIONSHIP_KEYS, inspected);
98
99
  }
99
100
  /**
100
- * Filter labels, computed attributes, metrics and facts relate to their filter-context entities: the
101
- * dashboard GET side-loads the filter contexts as bare items (no `relationships`), so the existence
102
- * linkage for filter objects is reachable only through a direct filter-context GET with `include=labels`
103
- * (and `computedAttributes`, `metrics`, `facts`), hence this one batched extra request. Types other than
104
- * labels are included only when a filter uses them (metric value filters, filters on computed
105
- * attributes, metrics and facts limiting a filter's values), so other dashboards never request them.
101
+ * Filter labels, attributes, computed attributes, metrics and facts relate to their filter-context
102
+ * entities: the dashboard GET side-loads the filter contexts as bare items (no `relationships`), so the
103
+ * existence linkage for filter objects is reachable only through a direct filter-context GET with
104
+ * `include=labels` (and `attributes`, `computedAttributes`, `metrics`, `facts`), hence this one batched
105
+ * extra request. Types other than labels are included only when a filter uses them (metric value
106
+ * filters and the attributes they are computed for, filters on computed attributes, metrics, facts
107
+ * and "Count of" attributes or computed attributes limiting a filter's values), so other dashboards
108
+ * never request them.
106
109
  * It inspects the contexts of the effective dashboard, so a `filterContextRef` override is covered;
107
110
  * the synthetic export-override context has no entity behind it and is skipped.
108
111
  * It would become redundant if the backend emitted `relationships.labels` on the filter-context items
@@ -134,8 +137,9 @@ export async function fetchUnavailableFilterDisplayForms(authCall, workspaceId,
134
137
  }
135
138
  /**
136
139
  * The filter-context object types the dashboard's filters use: labels always; computed attributes of
137
- * attribute filters built on them; metrics of metric value filters; metrics and facts that limit an
138
- * attribute filter's values.
140
+ * attribute filters built on them; metrics of metric value filters and the attributes or computed
141
+ * attributes they are computed for ("For attribute"); metrics, facts and "Count of" attributes or
142
+ * computed attributes that limit an attribute filter's values.
139
143
  */
140
144
  function filterObjectTypes(dashboard) {
141
145
  const used = new Set(["displayForm"]);
@@ -143,6 +147,7 @@ function filterObjectTypes(dashboard) {
143
147
  for (const filter of contexts.flatMap((context) => context?.filters ?? [])) {
144
148
  if (isDashboardMeasureValueFilter(filter)) {
145
149
  used.add("measure");
150
+ dimensionalityObjectTypes(filter).forEach((type) => used.add(type));
146
151
  }
147
152
  if (!isDashboardAttributeFilterItem(filter)) {
148
153
  continue;
@@ -151,13 +156,23 @@ function filterObjectTypes(dashboard) {
151
156
  used.add("computedAttribute");
152
157
  }
153
158
  for (const ref of dashboardAttributeFilterItemValidateElementsBy(filter) ?? []) {
154
- if (isIdentifierRef(ref) && (ref.type === "measure" || ref.type === "fact")) {
159
+ if (isIdentifierRef(ref) &&
160
+ (ref.type === "measure" ||
161
+ ref.type === "fact" ||
162
+ ref.type === "attribute" ||
163
+ ref.type === "computedAttribute")) {
155
164
  used.add(ref.type);
156
165
  }
157
166
  }
158
167
  }
159
168
  return used;
160
169
  }
170
+ /** The attribute and computed-attribute types of the items a metric value filter is computed for. */
171
+ function dimensionalityObjectTypes(filter) {
172
+ return (filter.dashboardMeasureValueFilter.dimensionality ?? []).flatMap((ref) => isIdentifierRef(ref) && (ref.type === "attribute" || ref.type === "computedAttribute")
173
+ ? [ref.type]
174
+ : []);
175
+ }
161
176
  /**
162
177
  * Identifiers of the persisted filter contexts the dashboard actually uses (root and tabs; a
163
178
  * `filterContextRef` override replaces them all). Only a ref typed `filterContext` names an entity
@@ -56,7 +56,7 @@ export class DatasetsQuery {
56
56
  }
57
57
  query() {
58
58
  return ServerPaging.for(async ({ limit, offset }) => {
59
- const filter = { ...(this.filter ?? {}) };
59
+ const filter = { ...this.filter };
60
60
  // NOTE: Datasets endpoint does not support filtering by createdBy.
61
61
  if ("createdBy" in filter) {
62
62
  delete filter.createdBy;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/genAI/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACR,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,EAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAE9F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAS3E,qBAAa,YAAa,YAAW,aAAa;IAE1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAHnC,YACqB,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC/C;IAEJ,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB,CAE1E;IAED,sBAAsB,IAAI,oBAAoB,CAE7C;IAEK,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzC;IAED,qBAAqB,IAAI,0BAA0B,CAElD;IAED,cAAc,IAAI,mBAAmB,CAEpC;IAED,mBAAmB,IAAI,wBAAwB,CAE9C;IAED,kBAAkB,IAAI,uBAAuB,CAE5C;IAEK,kBAAkB,CACpB,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAkC5B;IAEK,uBAAuB,CACzB,OAAO,EAAE,6BAA6B,EACtC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/genAI/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACR,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,EAChC,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,yDAAyD,CAAC;AAE9F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAS3E,qBAAa,YAAa,YAAW,aAAa;IAE1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAHnC,YACqB,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC/C;IAEJ,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB,CAE1E;IAED,sBAAsB,IAAI,oBAAoB,CAE7C;IAEK,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzC;IAED,qBAAqB,IAAI,0BAA0B,CAElD;IAED,cAAc,IAAI,mBAAmB,CAEpC;IAED,mBAAmB,IAAI,wBAAwB,CAE9C;IAED,kBAAkB,IAAI,uBAAuB,CAE5C;IAEK,kBAAkB,CACpB,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAkC5B;IAEK,uBAAuB,CACzB,OAAO,EAAE,6BAA6B,EACtC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CA6B5B;CACJ"}
@@ -69,11 +69,13 @@ export class GenAIService {
69
69
  }
70
70
  async summarizeVisualizations(request, options) {
71
71
  const aiSummarizeVisualizationsRequest = {
72
- visualizations: request.visualizations,
73
- // Cast bridges the AFM filter definitions to the generated union type of the AI API.
74
- filterContext: request.filters
75
- .map((filter) => convertFilter(filter))
76
- .filter(Boolean),
72
+ visualizations: request.visualizations.map((visualization) => typeof visualization === "string"
73
+ ? visualization
74
+ : {
75
+ visualizationId: visualization.visualizationId,
76
+ filters: convertSummaryFilters(visualization.filters),
77
+ }),
78
+ filterContext: convertSummaryFilters(request.filters),
77
79
  };
78
80
  if (request.formatHint !== undefined) {
79
81
  aiSummarizeVisualizationsRequest.formatHint = request.formatHint;
@@ -85,6 +87,12 @@ export class GenAIService {
85
87
  return convertSummaryResponse(response.data);
86
88
  }
87
89
  }
90
+ // Cast bridges the AFM filter definitions to the generated union type of the AI API.
91
+ function convertSummaryFilters(filters) {
92
+ return filters
93
+ .map((filter) => convertFilter(filter))
94
+ .filter(Boolean);
95
+ }
88
96
  function convertSummaryResponse(data) {
89
97
  return {
90
98
  summary: data.summary,
@@ -53,7 +53,7 @@ export class ParametersQuery {
53
53
  }
54
54
  query() {
55
55
  return ServerPaging.for(async ({ limit, offset }) => {
56
- const filter = { ...(this.filter ?? {}) };
56
+ const filter = { ...this.filter };
57
57
  // Parameters API doesn't support `isHidden` filter yet.
58
58
  // When filtering for hidden parameters, return empty results since no parameters can be hidden.
59
59
  if ("isHidden" in filter) {
@@ -1 +1 @@
1
- {"version":3,"file":"AutomationConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/AutomationConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,eAAe,EAGpB,KAAK,yBAAyB,EAO9B,KAAK,uCAAuC,EAC5C,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAE7B,KAAK,6BAA6B,EAQlC,KAAK,sCAAsC,EAK3C,KAAK,gBAAgB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAI9B,KAAK,OAAO,EA0Bf,MAAM,qBAAqB,CAAC;AA6I7B,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,6BAA6B,GAAG,sCAAsC,EAClF,QAAQ,EAAE,4BAA4B,EAAE,EACxC,UAAU,CAAC,EAAE,gBAAgB,EAAE,GAChC,yBAAyB,CA6H3B;AAED,eAAO,MAAM,kCAAkC,mBAC3B,wBAAwB,KACzC,yBAAyB,EAI3B,CAAC;AAcF,eAAO,MAAM,YAAY,UACd,yBAAyB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,UAC/D,uCAAuC,KAChD,gBAAgB,GAAG,SAoGrB,CAAC;AA0CF;;;;;;;GAOG;AACH,wBAAgB,yCAAyC,CACrD,MAAM,EAAE,OAAO,EACf,uBAAuB,EAAE,MAAM,GAChC,iBAAiB,GAAG,SAAS,CAgG/B"}
1
+ {"version":3,"file":"AutomationConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/fromBackend/AutomationConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,eAAe,EAGpB,KAAK,yBAAyB,EAO9B,KAAK,uCAAuC,EAC5C,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAE7B,KAAK,6BAA6B,EAQlC,KAAK,sCAAsC,EAK3C,KAAK,gBAAgB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEH,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAI9B,KAAK,OAAO,EA2Bf,MAAM,qBAAqB,CAAC;AA6I7B,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,6BAA6B,GAAG,sCAAsC,EAClF,QAAQ,EAAE,4BAA4B,EAAE,EACxC,UAAU,CAAC,EAAE,gBAAgB,EAAE,GAChC,yBAAyB,CA6H3B;AAED,eAAO,MAAM,kCAAkC,mBAC3B,wBAAwB,KACzC,yBAAyB,EAI3B,CAAC;AAcF,eAAO,MAAM,YAAY,UACd,yBAAyB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,UAC/D,uCAAuC,KAChD,gBAAgB,GAAG,SAoGrB,CAAC;AA0CF;;;;;;;GAOG;AACH,wBAAgB,yCAAyC,CACrD,MAAM,EAAE,OAAO,EACf,uBAAuB,EAAE,MAAM,GAChC,iBAAiB,GAAG,SAAS,CAmG/B"}
@@ -1,6 +1,6 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { compact } from "lodash-es";
3
- import { filterAttributeElements, filterLocalIdentifier, filterObjRef, idRef, isAbsoluteDateFilter, isAllTimeDateFilter, isArbitraryAttributeFilter, isAttributeFilterWithSelection, isAutomationUserRecipient, isExportDefinitionVisualizationObjectRequestPayload, isFilter, isFilterContextItem, isMatchAttributeFilter, isMeasureValueFilter, isNegativeAttributeFilter, isObjRef, isRelativeBoundedDateFilter, isRelativeDateFilter, measureValueFilterConditions, measureValueFilterDimensionality, measureValueFilterMeasure, newAbsoluteDashboardDateFilter, newAllTimeDashboardDateFilter, newRelativeDashboardDateFilter, } from "@gooddata/sdk-model";
3
+ import { filterAttributeElements, filterLocalIdentifier, filterObjRef, idRef, isAbsoluteDateFilter, isAllTimeDateFilter, isArbitraryAttributeFilter, isAttributeFilterWithSelection, isAutomationUserRecipient, isDateFilterGranularity, isExportDefinitionVisualizationObjectRequestPayload, isFilter, isFilterContextItem, isMatchAttributeFilter, isMeasureValueFilter, isNegativeAttributeFilter, isObjRef, isRelativeBoundedDateFilter, isRelativeDateFilter, measureValueFilterConditions, measureValueFilterDimensionality, measureValueFilterMeasure, newAbsoluteDashboardDateFilter, newAllTimeDashboardDateFilter, newRelativeDashboardDateFilter, } from "@gooddata/sdk-model";
4
4
  import { fixNumber } from "../../utils/fixNumber.js";
5
5
  import { convertFilter } from "./afm/FilterConverter.js";
6
6
  import { convertMeasure } from "./afm/MeasureConverter.js";
@@ -338,7 +338,9 @@ export function convertExecutionFilterToFilterContextItem(filter, fallbackLocalI
338
338
  };
339
339
  }
340
340
  if (isAbsoluteDateFilter(filter)) {
341
- return newAbsoluteDashboardDateFilter(filter.absoluteDateFilter.from, filter.absoluteDateFilter.to, filter.absoluteDateFilter.dataSet, filter.absoluteDateFilter.localIdentifier, filter.absoluteDateFilter.emptyValueHandling);
341
+ return newAbsoluteDashboardDateFilter(filter.absoluteDateFilter.from, filter.absoluteDateFilter.to, filter.absoluteDateFilter.dataSet, filter.absoluteDateFilter.localIdentifier, filter.absoluteDateFilter.emptyValueHandling, isDateFilterGranularity(filter.absoluteDateFilter.granularity)
342
+ ? filter.absoluteDateFilter.granularity
343
+ : "GDC.time.date");
342
344
  }
343
345
  if (isAllTimeDateFilter(filter)) {
344
346
  return newAllTimeDashboardDateFilter(filter.relativeDateFilter.dataSet, filter.relativeDateFilter.localIdentifier, filter.relativeDateFilter.emptyValueHandling);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterConverter.d.ts","sourceRoot":"","sources":["../../../../src/convertors/fromBackend/afm/FilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,gBAAgB,EAWxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGH,KAAK,OAAO,EAQf,MAAM,qBAAqB,CAAC;AAqH7B,eAAO,MAAM,aAAa,WAAY,gBAAgB,KAAG,OA2NxD,CAAC"}
1
+ {"version":3,"file":"FilterConverter.d.ts","sourceRoot":"","sources":["../../../../src/convertors/fromBackend/afm/FilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAOH,KAAK,gBAAgB,EAWxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGH,KAAK,OAAO,EAQf,MAAM,qBAAqB,CAAC;AA8H7B,eAAO,MAAM,aAAa,WAAY,gBAAgB,KAAG,OAyQxD,CAAC"}
@@ -2,6 +2,7 @@
2
2
  import { isAfmObjectIdentifier, isAfmObjectLocalIdentifier, } from "@gooddata/api-client-tiger";
3
3
  import { NotSupported } from "@gooddata/sdk-backend-spi";
4
4
  import { newArbitraryAttributeFilter, } from "@gooddata/sdk-model";
5
+ import { fromPeriodLiteral, isWireAbsoluteGranularity, toPeriodLiteral, } from "../../shared/absoluteGranularityLiterals.js";
5
6
  import { toSdkGranularity } from "../dateGranularityConversions.js";
6
7
  import { toLocalRef, toObjRef } from "../ObjRefConverter.js";
7
8
  const isPositiveAttributeFilter = (filter) => {
@@ -13,6 +14,9 @@ const isNegativeAttributeFilter = (filter) => {
13
14
  const isAbsoluteDateFilter = (filter) => {
14
15
  return filter.absoluteDateFilter !== undefined;
15
16
  };
17
+ const isAbsoluteGranularityDateFilter = (filter) => {
18
+ return filter.absoluteGranularityDateFilter !== undefined;
19
+ };
16
20
  const isAllTimeDateFilter = (filter) => {
17
21
  return filter.allTimeDateFilter !== undefined;
18
22
  };
@@ -147,6 +151,44 @@ export const convertFilter = (filter) => {
147
151
  },
148
152
  };
149
153
  }
154
+ else if (isAbsoluteGranularityDateFilter(filter)) {
155
+ const { dataset, granularity, from, to, localIdentifier } = filter.absoluteGranularityDateFilter;
156
+ const sdkGranularity = toSdkGranularity(granularity);
157
+ if (from === undefined || from === null || to === undefined || to === null) {
158
+ throw new NotSupported("Open-ended absolute date filters are not supported.");
159
+ }
160
+ if (!isWireAbsoluteGranularity(sdkGranularity)) {
161
+ throw new NotSupported(`Absolute date filters at the ${granularity} granularity are not supported.`);
162
+ }
163
+ const emptyValueHandling = toSdkEmptyValues(filter.absoluteGranularityDateFilter.emptyValueHandling);
164
+ // The range covers whole periods, so it ends on the last day of the period 'to' names,
165
+ // not on its first day.
166
+ let range;
167
+ try {
168
+ range = {
169
+ from: fromPeriodLiteral(sdkGranularity, from).first,
170
+ to: fromPeriodLiteral(sdkGranularity, to).last,
171
+ };
172
+ // Parsing accepts a literal that is not zero-padded or has a short year, so the literal must
173
+ // also come back unchanged when its period is converted to a literal again.
174
+ if (toPeriodLiteral(sdkGranularity, range.from) !== from ||
175
+ toPeriodLiteral(sdkGranularity, range.to) !== to) {
176
+ throw new Error(`Not ${granularity} literals: ${from} - ${to}`);
177
+ }
178
+ }
179
+ catch {
180
+ throw new NotSupported(`The absolute date filter range ${from} - ${to} is not in the format of the ${granularity} granularity.`);
181
+ }
182
+ return {
183
+ absoluteDateFilter: {
184
+ dataSet: toObjRef(dataset),
185
+ localIdentifier,
186
+ ...range,
187
+ ...(sdkGranularity === "GDC.time.date" ? {} : { granularity: sdkGranularity }),
188
+ ...(emptyValueHandling === undefined ? {} : { emptyValueHandling }),
189
+ },
190
+ };
191
+ }
150
192
  else if (isAllTimeDateFilter(filter)) {
151
193
  const emptyValueHandling = toSdkEmptyValues(filter.allTimeDateFilter.emptyValueHandling);
152
194
  return {
@@ -0,0 +1,38 @@
1
+ import { type DateAttributeGranularity } from "@gooddata/sdk-model";
2
+ declare const WIRE_ABSOLUTE_GRANULARITIES: readonly ["GDC.time.date", "GDC.time.month", "GDC.time.quarter", "GDC.time.year"];
3
+ /**
4
+ * Granularities an absolute date filter can express on the wire as a period literal.
5
+ */
6
+ export type WireAbsoluteGranularity = (typeof WIRE_ABSOLUTE_GRANULARITIES)[number];
7
+ /**
8
+ * Granularities whose ranges can be sent as period literals rather than as days.
9
+ */
10
+ export type PeriodLiteralGranularity = Exclude<WireAbsoluteGranularity, "GDC.time.date">;
11
+ export declare function isWireAbsoluteGranularity(granularity: DateAttributeGranularity | undefined): granularity is WireAbsoluteGranularity;
12
+ /**
13
+ * Tells whether an absolute date filter at the granularity can be sent as period literals rather than
14
+ * as its days.
15
+ */
16
+ export declare function hasPeriodLiteral(granularity: DateAttributeGranularity | undefined): granularity is PeriodLiteralGranularity;
17
+ /**
18
+ * Converts a day into the literal of the period of the given granularity that contains it.
19
+ */
20
+ export declare function toPeriodLiteral(granularity: WireAbsoluteGranularity, day: string): string;
21
+ /**
22
+ * Converts a period literal into the first and the last day of that period.
23
+ */
24
+ export declare function fromPeriodLiteral(granularity: WireAbsoluteGranularity, literal: string): {
25
+ first: string;
26
+ last: string;
27
+ };
28
+ /**
29
+ * Converts a range of days into the literals of its first and last period of the given granularity.
30
+ *
31
+ * @returns undefined when a day is not in the YYYY-MM-DD format or the range is not whole periods
32
+ */
33
+ export declare function toWholePeriodLiterals(granularity: PeriodLiteralGranularity, from: string, to: string): {
34
+ from: string;
35
+ to: string;
36
+ } | undefined;
37
+ export {};
38
+ //# sourceMappingURL=absoluteGranularityLiterals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"absoluteGranularityLiterals.d.ts","sourceRoot":"","sources":["../../../src/convertors/shared/absoluteGranularityLiterals.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAMpE,QAAA,MAAM,2BAA2B,mFAKuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAEzF,wBAAgB,yBAAyB,CACrC,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAClD,WAAW,IAAI,uBAAuB,CAExC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAClD,WAAW,IAAI,wBAAwB,CAEzC;AAkBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,WAAW,EAAE,uBAAuB,EACpC,OAAO,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAuBjC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,WAAW,EAAE,wBAAwB,EACrC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAe1C"}
@@ -0,0 +1,82 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { endOfMonth, endOfQuarter, endOfYear, isValid } from "date-fns";
3
+ import { parseDateValue, serializeDateValue } from "../fromBackend/dateFormatting/dateValueParser.js";
4
+ // TODO: a week has no literal yet, because the backend numbers weeks by ISO-8601 and shifts them by the
5
+ // week start; support will be added later in a different PR.
6
+ const WIRE_ABSOLUTE_GRANULARITIES = [
7
+ "GDC.time.date",
8
+ "GDC.time.month",
9
+ "GDC.time.quarter",
10
+ "GDC.time.year",
11
+ ];
12
+ export function isWireAbsoluteGranularity(granularity) {
13
+ return WIRE_ABSOLUTE_GRANULARITIES.some((wireGranularity) => wireGranularity === granularity);
14
+ }
15
+ /**
16
+ * Tells whether an absolute date filter at the granularity can be sent as period literals rather than
17
+ * as its days.
18
+ */
19
+ export function hasPeriodLiteral(granularity) {
20
+ return isWireAbsoluteGranularity(granularity) && granularity !== "GDC.time.date";
21
+ }
22
+ function isDay(value) {
23
+ return /^\d{4}-\d{2}-\d{2}$/.test(value) && isValid(parseDateValue(value, "GDC.time.date"));
24
+ }
25
+ function parseDay(day) {
26
+ if (!isDay(day)) {
27
+ throw new Error(`Not a day in the YYYY-MM-DD format: ${day}`);
28
+ }
29
+ return parseDateValue(day, "GDC.time.date");
30
+ }
31
+ function serializeDay(date) {
32
+ return serializeDateValue(date, "GDC.time.date");
33
+ }
34
+ /**
35
+ * Converts a day into the literal of the period of the given granularity that contains it.
36
+ */
37
+ export function toPeriodLiteral(granularity, day) {
38
+ return serializeDateValue(parseDay(day), granularity);
39
+ }
40
+ /**
41
+ * Converts a period literal into the first and the last day of that period.
42
+ */
43
+ export function fromPeriodLiteral(granularity, literal) {
44
+ const first = parseDateValue(literal, granularity);
45
+ if (!isValid(first)) {
46
+ throw new Error(`Not a ${granularity} literal: ${literal}`);
47
+ }
48
+ let last = first;
49
+ switch (granularity) {
50
+ case "GDC.time.month":
51
+ last = endOfMonth(first);
52
+ break;
53
+ case "GDC.time.quarter":
54
+ last = endOfQuarter(first);
55
+ break;
56
+ case "GDC.time.year":
57
+ last = endOfYear(first);
58
+ break;
59
+ }
60
+ return {
61
+ first: serializeDay(first),
62
+ last: serializeDay(last),
63
+ };
64
+ }
65
+ /**
66
+ * Converts a range of days into the literals of its first and last period of the given granularity.
67
+ *
68
+ * @returns undefined when a day is not in the YYYY-MM-DD format or the range is not whole periods
69
+ */
70
+ export function toWholePeriodLiterals(granularity, from, to) {
71
+ if (!isDay(from) || !isDay(to)) {
72
+ return undefined;
73
+ }
74
+ const literals = {
75
+ from: toPeriodLiteral(granularity, from),
76
+ to: toPeriodLiteral(granularity, to),
77
+ };
78
+ const isWhole = from <= to &&
79
+ fromPeriodLiteral(granularity, literals.from).first === from &&
80
+ fromPeriodLiteral(granularity, literals.to).last === to;
81
+ return isWhole ? literals : undefined;
82
+ }
@@ -1,5 +1,14 @@
1
1
  import { type ITigerFilter, type ITigerFilterContextItem } from "@gooddata/api-client-tiger";
2
2
  import { type FilterContextItem, type IFilter } from "@gooddata/sdk-model";
3
+ /**
4
+ * Options of the conversion of SDK filters to Tiger stored filters.
5
+ */
6
+ export interface IStoredFilterConversionOptions {
7
+ /**
8
+ * Removes the granularity from absolute date filters. It is kept by default.
9
+ */
10
+ dropAbsoluteDateGranularity?: boolean;
11
+ }
3
12
  /**
4
13
  * Converts SDK filter to Tiger stored filter format.
5
14
  *
@@ -8,10 +17,11 @@ import { type FilterContextItem, type IFilter } from "@gooddata/sdk-model";
8
17
  * For AFM/execution filters, use the AFM filter converter instead.
9
18
  *
10
19
  * @param filter - SDK filter to convert
20
+ * @param options - conversion options
11
21
  * @returns Tiger stored filter with sanitized IDs and converted formats
12
22
  * @public
13
23
  */
14
- export declare function convertSdkFilterToTigerStored(filter: IFilter): ITigerFilter;
24
+ export declare function convertSdkFilterToTigerStored(filter: IFilter, options?: IStoredFilterConversionOptions): ITigerFilter;
15
25
  /**
16
26
  * Converts SDK FilterContextItem to Tiger FilterContextItem.
17
27
  *
@@ -31,7 +41,7 @@ export declare function convertSdkFilterContextItemToTiger(item: FilterContextIt
31
41
  export declare function convertTigerStoredToSdkFilter(filter: ITigerFilter): IFilter;
32
42
  type SdkFiltersToTigerInput = IFilter[] | FilterContextItem[] | undefined;
33
43
  type SdkFiltersToTigerOutput<T extends SdkFiltersToTigerInput> = T extends IFilter[] ? ITigerFilter[] : T extends FilterContextItem[] ? ITigerFilterContextItem[] : undefined;
34
- export declare function convertSdkFiltersToTiger<T extends SdkFiltersToTigerInput>(filters: T): SdkFiltersToTigerOutput<T>;
44
+ export declare function convertSdkFiltersToTiger<T extends SdkFiltersToTigerInput>(filters: T, options?: IStoredFilterConversionOptions): SdkFiltersToTigerOutput<T>;
35
45
  type TigerToSdkFiltersInput = ITigerFilter[] | ITigerFilterContextItem[] | undefined;
36
46
  type TigerToSdkFiltersOutput<T extends TigerToSdkFiltersInput> = T extends ITigerFilter[] ? IFilter[] : T extends ITigerFilterContextItem[] ? FilterContextItem[] : undefined;
37
47
  export declare function convertTigerToSdkFilters<T extends TigerToSdkFiltersInput>(filters: T): TigerToSdkFiltersOutput<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"storedFilterConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/shared/storedFilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAG/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,KAAK,iBAAiB,EAEtB,KAAK,OAAO,EAKf,MAAM,qBAAqB,CAAC;AAc7B;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAG3E;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,iBAAiB,GAAG,uBAAuB,CAgBnG;AA4CD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAG3E;AAmBD,KAAK,sBAAsB,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC;AAC1E,KAAK,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,IAAI,CAAC,SAAS,OAAO,EAAE,GAC9E,YAAY,EAAE,GACd,CAAC,SAAS,iBAAiB,EAAE,GAC3B,uBAAuB,EAAE,GACzB,SAAS,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,sBAAsB,EACrE,OAAO,EAAE,CAAC,GACX,uBAAuB,CAAC,CAAC,CAAC,CAkB5B;AAID,KAAK,sBAAsB,GAAG,YAAY,EAAE,GAAG,uBAAuB,EAAE,GAAG,SAAS,CAAC;AACrF,KAAK,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,IAAI,CAAC,SAAS,YAAY,EAAE,GACnF,OAAO,EAAE,GACT,CAAC,SAAS,uBAAuB,EAAE,GACjC,iBAAiB,EAAE,GACnB,SAAS,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,sBAAsB,EACrE,OAAO,EAAE,CAAC,GACX,uBAAuB,CAAC,CAAC,CAAC,CAiC5B"}
1
+ {"version":3,"file":"storedFilterConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/shared/storedFilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAG/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,KAAK,iBAAiB,EAEtB,KAAK,OAAO,EAMf,MAAM,qBAAqB,CAAC;AAW7B;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACzC;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,8BAAmC,GAC7C,YAAY,CAId;AAaD;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,iBAAiB,GAAG,uBAAuB,CAgBnG;AA4CD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAG3E;AAmBD,KAAK,sBAAsB,GAAG,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,SAAS,CAAC;AAC1E,KAAK,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,IAAI,CAAC,SAAS,OAAO,EAAE,GAC9E,YAAY,EAAE,GACd,CAAC,SAAS,iBAAiB,EAAE,GAC3B,uBAAuB,EAAE,GACzB,SAAS,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,sBAAsB,EACrE,OAAO,EAAE,CAAC,EACV,OAAO,GAAE,8BAAmC,GAC7C,uBAAuB,CAAC,CAAC,CAAC,CAoB5B;AAID,KAAK,sBAAsB,GAAG,YAAY,EAAE,GAAG,uBAAuB,EAAE,GAAG,SAAS,CAAC;AACrF,KAAK,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,IAAI,CAAC,SAAS,YAAY,EAAE,GACnF,OAAO,EAAE,GACT,CAAC,SAAS,uBAAuB,EAAE,GACjC,iBAAiB,EAAE,GACnB,SAAS,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,sBAAsB,EACrE,OAAO,EAAE,CAAC,GACX,uBAAuB,CAAC,CAAC,CAAC,CAiC5B"}
@@ -1,6 +1,6 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  import { isTigerFilterContextItems, isTigerFilters, } from "@gooddata/api-client-tiger";
3
- import { isComparisonCondition, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
3
+ import { isAbsoluteDateFilter, isComparisonCondition, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
4
4
  import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedFromBackend } from "../fromBackend/IdSanitization.js";
5
5
  import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedToBackend } from "../toBackend/IdSanitization.js";
6
6
  import { convertMeasureValueFilterSdkToTiger, convertMeasureValueFilterTigerToSdk, } from "./measureValueFilterConverter.js";
@@ -15,13 +15,24 @@ import { isFilterContextItems, isFilters } from "./sdkFilterTypeGuards.js";
15
15
  * For AFM/execution filters, use the AFM filter converter instead.
16
16
  *
17
17
  * @param filter - SDK filter to convert
18
+ * @param options - conversion options
18
19
  * @returns Tiger stored filter with sanitized IDs and converted formats
19
20
  * @public
20
21
  */
21
- export function convertSdkFilterToTigerStored(filter) {
22
- const sanitized = cloneWithSanitizedIdsTypedToBackend(filter);
22
+ export function convertSdkFilterToTigerStored(filter, options = {}) {
23
+ const stored = options.dropAbsoluteDateGranularity ? dropAbsoluteDateFilterGranularity(filter) : filter;
24
+ const sanitized = cloneWithSanitizedIdsTypedToBackend(stored);
23
25
  return convertMeasureValueFilterSdkToTiger(sanitized);
24
26
  }
27
+ // Insights store absolute date filters without the granularity. Dropping it cannot change what the
28
+ // filter selects, because from/to already are the first and the last day of the selected periods.
29
+ function dropAbsoluteDateFilterGranularity(filter) {
30
+ if (!isAbsoluteDateFilter(filter) || filter.absoluteDateFilter.granularity === undefined) {
31
+ return filter;
32
+ }
33
+ const { granularity: _granularity, ...absoluteDateFilter } = filter.absoluteDateFilter;
34
+ return { absoluteDateFilter };
35
+ }
25
36
  /**
26
37
  * Converts SDK FilterContextItem to Tiger FilterContextItem.
27
38
  *
@@ -106,7 +117,7 @@ function convertDashboardFilterToSdk(item) {
106
117
  }
107
118
  return cloneWithSanitizedIdsTypedFromBackend(item);
108
119
  }
109
- export function convertSdkFiltersToTiger(filters) {
120
+ export function convertSdkFiltersToTiger(filters, options = {}) {
110
121
  if (!filters) {
111
122
  return undefined;
112
123
  }
@@ -117,7 +128,7 @@ export function convertSdkFiltersToTiger(filters) {
117
128
  return filters.map(convertSdkFilterContextItemToTiger);
118
129
  }
119
130
  if (isFilters(filters)) {
120
- return filters.map(convertSdkFilterToTigerStored);
131
+ return filters.map((filter) => convertSdkFilterToTigerStored(filter, options));
121
132
  }
122
133
  throw new Error("Unsupported filters type");
123
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AutomationConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/AutomationConverter.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,mBAAmB,EACxB,KAAK,kCAAkC,EAG1C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EAK5B,MAAM,qBAAqB,CAAC;AAmB7B,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,yBAAyB,GAAG,mCAAmC,EAC3E,eAAe,CAAC,EAAE,oBAAoB,EACtC,SAAS,CAAC,EAAE,yBAAyB,GACtC,mBAAmB,CAsNrB;AAED,eAAO,MAAM,YAAY,UAAW,gBAAgB,KAAG,kCAkGtD,CAAC"}
1
+ {"version":3,"file":"AutomationConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/AutomationConverter.ts"],"names":[],"mappings":"AAKA,OAAO,EAGH,KAAK,mBAAmB,EACxB,KAAK,kCAAkC,EAG1C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EAK5B,MAAM,qBAAqB,CAAC;AAmB7B,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,yBAAyB,GAAG,mCAAmC,EAC3E,eAAe,CAAC,EAAE,oBAAoB,EACtC,SAAS,CAAC,EAAE,yBAAyB,GACtC,mBAAmB,CAsNrB;AAED,eAAO,MAAM,YAAY,UAAW,gBAAgB,KAAG,kCAiGtD,CAAC"}
@@ -233,15 +233,13 @@ export const convertAlert = (alert) => {
233
233
  format: condition.measure.right.format,
234
234
  },
235
235
  },
236
- threshold: {
237
- ...(condition.measure.operator === "CHANGE"
238
- ? {
239
- value: fixNumber(condition.threshold / 100),
240
- }
241
- : {
242
- value: condition.threshold,
243
- }),
244
- },
236
+ threshold: condition.measure.operator === "CHANGE"
237
+ ? {
238
+ value: fixNumber(condition.threshold / 100),
239
+ }
240
+ : {
241
+ value: condition.threshold,
242
+ },
245
243
  },
246
244
  },
247
245
  ...base,
@@ -1 +1 @@
1
- {"version":3,"file":"ExportDefinitionsConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/ExportDefinitionsConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EAEpC,KAAK,kBAAkB,EACvB,KAAK,iCAAiC,EACtC,KAAK,6CAA6C,EAClD,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAE3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,yBAAyB,EAAmB,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,wCAAwC,EAC7C,KAAK,yCAAyC,EAC9C,KAAK,+BAA+B,EACpC,KAAK,kDAAkD,EAG1D,MAAM,qBAAqB,CAAC;AA8B7B,eAAO,MAAM,yCAAyC,qBAChC,yCAAyC,KAC5D,6CAcF,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBACnB,kDAAkD,oBAC/C,oBAAoB,cAC1B,yBAAyB,KACtC,oCA8EF,CAAC;AAEF,eAAO,MAAM,2BAA2B,kBACrB,kDAAkD,UACzD,MAAM,KACf,kBAoCF,CAAC;AAEF,eAAO,MAAM,4BAA4B,kBACtB,+BAA+B,UACtC,MAAM,KACf,mBAuEF,CAAC;AAEF,eAAO,MAAM,4BAA4B,kBACtB,wCAAwC,UAC/C,MAAM,KACf,mBAsCF,CAAC;AAEF,eAAO,MAAM,sCAAsC,kBAChC,wCAAwC,KACxD,+BA4CF,CAAC;AAEF,eAAO,MAAM,6BAA6B,kBACvB,+BAA+B,UACtC,MAAM,KACf,oBA8CF,CAAC;AAEF,eAAO,MAAM,mDAAmD,kBAC7C,kDAAkD,KAClE,+BAuCF,CAAC;AAEF,eAAO,MAAM,qCAAqC,kBAC/B,+BAA+B,UACtC,MAAM,KACf,oBAAoB,GAAG,mBA0EzB,CAAC;AAEF,eAAO,MAAM,+BAA+B,qBACtB,yCAAyC,cAC/C,MAAM,KACnB,iCASF,CAAC"}
1
+ {"version":3,"file":"ExportDefinitionsConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/ExportDefinitionsConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EAEpC,KAAK,kBAAkB,EACvB,KAAK,iCAAiC,EACtC,KAAK,6CAA6C,EAClD,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAE3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,yBAAyB,EAAmB,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,wCAAwC,EAC7C,KAAK,yCAAyC,EAC9C,KAAK,+BAA+B,EACpC,KAAK,kDAAkD,EAG1D,MAAM,qBAAqB,CAAC;AA8B7B,eAAO,MAAM,yCAAyC,qBAChC,yCAAyC,KAC5D,6CAcF,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBACnB,kDAAkD,oBAC/C,oBAAoB,cAC1B,yBAAyB,KACtC,oCA8EF,CAAC;AAEF,eAAO,MAAM,2BAA2B,kBACrB,kDAAkD,UACzD,MAAM,KACf,kBAkCF,CAAC;AAEF,eAAO,MAAM,4BAA4B,kBACtB,+BAA+B,UACtC,MAAM,KACf,mBAqEF,CAAC;AAEF,eAAO,MAAM,4BAA4B,kBACtB,wCAAwC,UAC/C,MAAM,KACf,mBAoCF,CAAC;AAEF,eAAO,MAAM,sCAAsC,kBAChC,wCAAwC,KACxD,+BA4CF,CAAC;AAEF,eAAO,MAAM,6BAA6B,kBACvB,+BAA+B,UACtC,MAAM,KACf,oBA8CF,CAAC;AAEF,eAAO,MAAM,mDAAmD,kBAC7C,kDAAkD,KAClE,+BAuCF,CAAC;AAEF,eAAO,MAAM,qCAAqC,kBAC/B,+BAA+B,UACtC,MAAM,KACf,oBAAoB,GAAG,mBAwEzB,CAAC;AAEF,eAAO,MAAM,+BAA+B,qBACtB,yCAAyC,cAC/C,MAAM,KACnB,iCASF,CAAC"}
@@ -108,23 +108,21 @@ export const convertToImageExportRequest = (exportRequest, title) => {
108
108
  }
109
109
  const timezoneId = exportRequest.timezoneId;
110
110
  const isMetadataFilled = title || filters || parametersByTab || timezoneId;
111
- const metadataObj = {
112
- ...(isMetadataFilled
113
- ? {
114
- metadata: {
115
- ...(filters
116
- ? {
117
- filters: convertSdkFiltersToTiger(filters),
118
- }
119
- : {}),
120
- ...(parametersByTab ? { parametersByTab } : {}),
121
- // metadata copy for the headless render — see "Export timezone channels" above
122
- ...(timezoneId ? { timezoneId } : {}),
123
- ...(title ? { title } : {}),
124
- },
125
- }
126
- : {}),
127
- };
111
+ const metadataObj = isMetadataFilled
112
+ ? {
113
+ metadata: {
114
+ ...(filters
115
+ ? {
116
+ filters: convertSdkFiltersToTiger(filters),
117
+ }
118
+ : {}),
119
+ ...(parametersByTab ? { parametersByTab } : {}),
120
+ // metadata copy for the headless render — see "Export timezone channels" above
121
+ ...(timezoneId ? { timezoneId } : {}),
122
+ ...(title ? { title } : {}),
123
+ },
124
+ }
125
+ : {};
128
126
  return {
129
127
  dashboardId: dashboard,
130
128
  fileName: exportRequest.fileName,
@@ -152,24 +150,22 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
152
150
  : undefined;
153
151
  const timezoneId = exportRequest.timezoneId;
154
152
  const isMetadataFilled = title || filters || filtersByTab || parametersByTab || timezoneId;
155
- const metadataObj = {
156
- ...(isMetadataFilled
157
- ? {
158
- metadata: {
159
- ...(filters
160
- ? {
161
- filters: convertSdkFiltersToTiger(filters),
162
- }
163
- : {}),
164
- ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
165
- ...(parametersByTab ? { parametersByTab } : {}),
166
- // metadata copy for the headless render — see "Export timezone channels" above
167
- ...(timezoneId ? { timezoneId } : {}),
168
- ...(title ? { title } : {}),
169
- },
170
- }
171
- : {}),
172
- };
153
+ const metadataObj = isMetadataFilled
154
+ ? {
155
+ metadata: {
156
+ ...(filters
157
+ ? {
158
+ filters: convertSdkFiltersToTiger(filters),
159
+ }
160
+ : {}),
161
+ ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
162
+ ...(parametersByTab ? { parametersByTab } : {}),
163
+ // metadata copy for the headless render — see "Export timezone channels" above
164
+ ...(timezoneId ? { timezoneId } : {}),
165
+ ...(title ? { title } : {}),
166
+ },
167
+ }
168
+ : {};
173
169
  return {
174
170
  fileName: exportRequest.fileName,
175
171
  format,
@@ -211,24 +207,22 @@ export const convertToVisualExportRequest = (exportRequest, title) => {
211
207
  : undefined;
212
208
  const timezoneId = exportRequest.timezoneId;
213
209
  const isMetadataFilled = title || filters || filtersByTab || parametersByTab || timezoneId;
214
- const metadataObj = {
215
- ...(isMetadataFilled
216
- ? {
217
- metadata: {
218
- ...(filters
219
- ? {
220
- filters: convertSdkFiltersToTiger(filters),
221
- }
222
- : {}),
223
- ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
224
- ...(parametersByTab ? { parametersByTab } : {}),
225
- // metadata copy for the headless render — see "Export timezone channels" above
226
- ...(timezoneId ? { timezoneId } : {}),
227
- ...(title ? { title } : {}),
228
- },
229
- }
230
- : {}),
231
- };
210
+ const metadataObj = isMetadataFilled
211
+ ? {
212
+ metadata: {
213
+ ...(filters
214
+ ? {
215
+ filters: convertSdkFiltersToTiger(filters),
216
+ }
217
+ : {}),
218
+ ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
219
+ ...(parametersByTab ? { parametersByTab } : {}),
220
+ // metadata copy for the headless render — see "Export timezone channels" above
221
+ ...(timezoneId ? { timezoneId } : {}),
222
+ ...(title ? { title } : {}),
223
+ },
224
+ }
225
+ : {};
232
226
  return {
233
227
  fileName: exportRequest.fileName,
234
228
  dashboardId: dashboard,
@@ -356,24 +350,22 @@ export const convertExportDefinitionRequestPayload = (exportRequest, title) => {
356
350
  : undefined;
357
351
  const timezoneId = exportRequest.timezoneId;
358
352
  const isMetadataFilled = title || filters || filtersByTab || parametersByTab || timezoneId;
359
- const metadataObj = {
360
- ...(isMetadataFilled
361
- ? {
362
- metadata: {
363
- ...(filters
364
- ? {
365
- filters: convertSdkFiltersToTiger(filters),
366
- }
367
- : {}),
368
- ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
369
- ...(parametersByTab ? { parametersByTab } : {}),
370
- // metadata copy for the headless render — see "Export timezone channels" above
371
- ...(timezoneId ? { timezoneId } : {}),
372
- ...(title ? { title } : {}),
373
- },
374
- }
375
- : {}),
376
- };
353
+ const metadataObj = isMetadataFilled
354
+ ? {
355
+ metadata: {
356
+ ...(filters
357
+ ? {
358
+ filters: convertSdkFiltersToTiger(filters),
359
+ }
360
+ : {}),
361
+ ...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
362
+ ...(parametersByTab ? { parametersByTab } : {}),
363
+ // metadata copy for the headless render — see "Export timezone channels" above
364
+ ...(timezoneId ? { timezoneId } : {}),
365
+ ...(title ? { title } : {}),
366
+ },
367
+ }
368
+ : {};
377
369
  return {
378
370
  fileName: exportRequest.fileName,
379
371
  dashboardId: dashboard,
@@ -1 +1 @@
1
- {"version":3,"file":"InsightConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/InsightConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EAOH,KAAK,0BAA0B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAIH,KAAK,kBAAkB,EAO1B,MAAM,qBAAqB,CAAC;AAyB7B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YACd,kBAAkB,KAC5B,0BAA0B,CAAC,oBAwD7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,YAAa,kBAAkB,KAAG,MACxD,CAAC"}
1
+ {"version":3,"file":"InsightConverter.d.ts","sourceRoot":"","sources":["../../../src/convertors/toBackend/InsightConverter.ts"],"names":[],"mappings":"AAIA,OAAO,EAOH,KAAK,0BAA0B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAIH,KAAK,kBAAkB,EAO1B,MAAM,qBAAqB,CAAC;AAgC7B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YACd,kBAAkB,KAC5B,0BAA0B,CAAC,oBA2D7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,YAAa,kBAAkB,KAAG,MACxD,CAAC"}
@@ -1,8 +1,11 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
2
  import { omit } from "lodash-es";
3
3
  import { insightLayers, insightParameters, } from "@gooddata/sdk-model";
4
- import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js";
4
+ import { convertSdkFiltersToTiger, } from "../shared/storedFilterConverter.js";
5
5
  import { cloneWithSanitizedIdsTyped } from "./IdSanitization.js";
6
+ // TODO: Analytical Designer does not support the granularity of an absolute date filter yet,
7
+ // so the insight and layer filters store only its days; measure filters in buckets keep it.
8
+ const insightFilterConversionOptions = { dropAbsoluteDateGranularity: true };
6
9
  function removeIdentifiers(insight) {
7
10
  const insightData = omit(insight.insight, ["ref", "uri", "identifier"]);
8
11
  return {
@@ -32,7 +35,7 @@ export const convertInsight = (insight) => {
32
35
  ? {
33
36
  layers: layers.map((layer) => {
34
37
  const tigerLayer = cloneWithSanitizedIdsTyped(layer);
35
- const convertedFilters = convertSdkFiltersToTiger(layer.filters);
38
+ const convertedFilters = convertSdkFiltersToTiger(layer.filters, insightFilterConversionOptions);
36
39
  return {
37
40
  ...tigerLayer,
38
41
  ...(convertedFilters ? { filters: convertedFilters } : {}),
@@ -48,7 +51,7 @@ export const convertInsight = (insight) => {
48
51
  : {};
49
52
  return {
50
53
  buckets: cloneWithSanitizedIdsTyped(sanitizedInsight.insight.buckets),
51
- filters: convertSdkFiltersToTiger(sanitizedInsight.insight.filters),
54
+ filters: convertSdkFiltersToTiger(sanitizedInsight.insight.filters, insightFilterConversionOptions),
52
55
  ...(sanitizedInsight.insight.attributeFilterConfigs
53
56
  ? {
54
57
  attributeFilterConfigs: cloneWithSanitizedIdsTyped(sanitizedInsight.insight.attributeFilterConfigs),
@@ -1 +1 @@
1
- {"version":3,"file":"FilterConverter.d.ts","sourceRoot":"","sources":["../../../../src/convertors/toBackend/afm/FilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,gBAAgB,EASxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAMH,KAAK,OAAO,EA2Bf,MAAM,qBAAqB,CAAC;AA6B7B;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,OAAO,GAAG,SAAS,GACnC,wBAAwB,CAE1B;AAyWD,wBAAgB,aAAa,CACzB,OAAO,EAAE,OAAO,GAAG,wBAAwB,EAC3C,yBAAyB,GAAE,OAAe,GAC3C,gBAAgB,GAAG,IAAI,CAyBzB"}
1
+ {"version":3,"file":"FilterConverter.d.ts","sourceRoot":"","sources":["../../../../src/convertors/toBackend/afm/FilterConverter.ts"],"names":[],"mappings":"AAEA,OAAO,EAQH,KAAK,gBAAgB,EASxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAMH,KAAK,OAAO,EA2Bf,MAAM,qBAAqB,CAAC;AA+B7B;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,OAAO,GAAG,SAAS,GACnC,wBAAwB,CAE1B;AA8XD,wBAAgB,aAAa,CACzB,OAAO,EAAE,OAAO,GAAG,wBAAwB,EAC3C,yBAAyB,GAAE,OAAe,GAC3C,gBAAgB,GAAG,IAAI,CAyBzB"}
@@ -1,6 +1,7 @@
1
1
  // (C) 2007-2026 GoodData Corporation
2
2
  import { filterIsEmpty, isAbsoluteDateFilter, isAllTimeDateFilter, isArbitraryAttributeFilter, isAttributeElementsByValue, isAttributeFilter, isComparisonCondition, isFilter, isLowerBound, isMatchAttributeFilter, isMeasureValueFilter, isNegativeAttributeFilter, isObjRef, isPositiveAttributeFilter, isRangeCondition, isRankingFilter, isRelativeBoundedDateFilterBody, isRelativeDateFilter, isUpperBound, } from "@gooddata/sdk-model";
3
3
  import { toTigerGranularity } from "../../fromBackend/dateGranularityConversions.js";
4
+ import { hasPeriodLiteral, toWholePeriodLiterals } from "../../shared/absoluteGranularityLiterals.js";
4
5
  import { toAfmIdentifier, toDateDataSetQualifier, toLabelQualifier, toLocalIdentifier, } from "../ObjRefConverter.js";
5
6
  function toTigerEmptyValueHandling(emptyValues) {
6
7
  if (emptyValues === "include") {
@@ -132,11 +133,31 @@ function convertAbsoluteDateFilter(filter, applyOnResultProp) {
132
133
  const datasetRef = absoluteDateFilter.dataSet;
133
134
  const localIdentifier = absoluteDateFilter.localIdentifier;
134
135
  const emptyValueHandling = toTigerEmptyValueHandling(absoluteDateFilter.emptyValueHandling);
136
+ const from = String(absoluteDateFilter.from);
137
+ const to = String(absoluteDateFilter.to);
138
+ const granularity = absoluteDateFilter.granularity;
139
+ // A range of whole periods goes as period literals; any other range, which an older or an as-code
140
+ // dashboard can store, goes as its days, as stored.
141
+ if (hasPeriodLiteral(granularity)) {
142
+ const literals = toWholePeriodLiterals(granularity, from, to);
143
+ if (literals) {
144
+ return {
145
+ absoluteGranularityDateFilter: {
146
+ dataset: toDateDataSetQualifier(datasetRef),
147
+ granularity: toTigerGranularity(granularity),
148
+ ...literals,
149
+ localIdentifier,
150
+ ...(emptyValueHandling === undefined ? {} : { emptyValueHandling }),
151
+ ...applyOnResultProp,
152
+ },
153
+ };
154
+ }
155
+ }
135
156
  return {
136
157
  absoluteDateFilter: {
137
158
  dataset: toDateDataSetQualifier(datasetRef),
138
- from: String(absoluteDateFilter.from),
139
- to: String(absoluteDateFilter.to),
159
+ from,
160
+ to,
140
161
  localIdentifier,
141
162
  ...(emptyValueHandling === undefined ? {} : { emptyValueHandling }),
142
163
  ...applyOnResultProp,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.62.0-alpha.2",
3
+ "version": "11.62.0-alpha.4",
4
4
  "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -34,12 +34,12 @@
34
34
  "ts-invariant": "0.10.3",
35
35
  "tslib": "2.8.1",
36
36
  "uuid": "11.1.1",
37
- "@gooddata/api-client-tiger": "11.62.0-alpha.2",
38
- "@gooddata/sdk-backend-base": "11.62.0-alpha.2",
39
- "@gooddata/sdk-backend-spi": "11.62.0-alpha.2",
40
- "@gooddata/sdk-model": "11.62.0-alpha.2",
41
- "@gooddata/sdk-code-convertors": "11.62.0-alpha.2",
42
- "@gooddata/util": "11.62.0-alpha.2"
37
+ "@gooddata/api-client-tiger": "11.62.0-alpha.4",
38
+ "@gooddata/sdk-backend-base": "11.62.0-alpha.4",
39
+ "@gooddata/sdk-code-convertors": "11.62.0-alpha.4",
40
+ "@gooddata/sdk-backend-spi": "11.62.0-alpha.4",
41
+ "@gooddata/sdk-model": "11.62.0-alpha.4",
42
+ "@gooddata/util": "11.62.0-alpha.4"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@gooddata/fixtures": "3.7.0",
@@ -63,11 +63,11 @@
63
63
  "oxlint-plugin-eslint": "1.82.0",
64
64
  "oxlint-tsgolint": "7.0.2001",
65
65
  "typescript": "7.0.2",
66
- "vitest": "4.1.11",
67
- "@gooddata/catalog-export": "11.62.0-alpha.2",
68
- "@gooddata/reference-workspace": "11.62.0-alpha.2",
69
- "@gooddata/oxlint-config": "11.62.0-alpha.2",
70
- "@gooddata/eslint-config": "11.62.0-alpha.2"
66
+ "vitest": "5.0.4",
67
+ "@gooddata/catalog-export": "11.62.0-alpha.4",
68
+ "@gooddata/oxlint-config": "11.62.0-alpha.4",
69
+ "@gooddata/eslint-config": "11.62.0-alpha.4",
70
+ "@gooddata/reference-workspace": "11.62.0-alpha.4"
71
71
  },
72
72
  "scripts": {
73
73
  "_phase:build": "npm run build",