@gooddata/sdk-backend-tiger 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.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/backend/uiFeatures.js +2 -2
- package/esm/backend/workspace/dashboards/index.d.ts +2 -1
- package/esm/backend/workspace/dashboards/index.js +17 -4
- package/esm/backend/workspace/dashboards/parameters.d.ts +12 -0
- package/esm/backend/workspace/dashboards/parameters.js +42 -0
- package/esm/convertors/fromBackend/ExportDefinitionsConverter.d.ts +2 -1
- package/esm/convertors/fromBackend/ExportDefinitionsConverter.js +9 -0
- package/esm/convertors/fromBackend/ExportMetadataConverter.js +1 -0
- package/esm/convertors/fromBackend/afm/MetadataConverter.js +8 -1
- package/esm/convertors/toBackend/ExportDefinitionsConverter.js +14 -9
- package/esm/convertors/toBackend/afm/FilterConverter.js +1 -0
- package/esm/tsdoc-metadata.json +1 -1
- package/esm/types/index.d.ts +2 -1
- package/package.json +13 -13
package/esm/__version.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.41.0-alpha.
|
|
1
|
+
export declare const LIB_VERSION = "11.41.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";
|
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.
|
|
3
|
+
export const LIB_VERSION = "11.41.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";
|
|
@@ -330,7 +330,7 @@ export const DefaultFeatureFlags = {
|
|
|
330
330
|
enableAlertOncePerInterval: false,
|
|
331
331
|
enableFiscalCalendars: true,
|
|
332
332
|
enablePivotTablePagination: true,
|
|
333
|
-
enableDashboardFilterGroups:
|
|
333
|
+
enableDashboardFilterGroups: true,
|
|
334
334
|
enableMatchFilterAD: true,
|
|
335
335
|
enableArbitraryFilterAD: true,
|
|
336
336
|
enableMatchFilterKD: true,
|
|
@@ -351,7 +351,7 @@ export const DefaultFeatureFlags = {
|
|
|
351
351
|
enableUserDataFiltersUi: false,
|
|
352
352
|
enableEnhancedInsightPicker: false,
|
|
353
353
|
enableAiLlmAnthropicProvider: false,
|
|
354
|
-
enableShellApplication_metricEditor:
|
|
354
|
+
enableShellApplication_metricEditor: true,
|
|
355
355
|
enableShellApplication_analyticalDesigner: false,
|
|
356
356
|
enableDashboardSidebarResize: false,
|
|
357
357
|
enableIpAllowlistsUi: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IDashboardExportImageOptions, type IDashboardExportPdfOptions, type IDashboardExportPresentationOptions, type IDashboardExportRawOptions, type IDashboardExportTabularOptions, type IDashboardReferences, type IDashboardSummaryWorkflowStartResult, type IDashboardSummaryWorkflowStatusResult, type IDashboardWithReferences, type IDashboardsQuery, type IExportResult, type IGetDashboardOptions, type IGetDashboardPluginOptions, type IRawExportCustomOverrides, type IWorkspaceDashboardsService, type SupportedDashboardReferenceTypes } from "@gooddata/sdk-backend-spi";
|
|
2
|
-
import { type FilterContextItem, type IDashboard, type IDashboardAttributeFilterConfig, type IDashboardBase, type IDashboardDefinition, type IDashboardFilterView, type IDashboardFilterViewSaveRequest, type IDashboardObjectIdentity, type IDashboardPermissions, type IDashboardPlugin, type IDashboardPluginDefinition, type IDashboardTab, type IDashboardWidget, type IDateFilter, type IExecutionDefinition, type IFilter, type IFilterContext, type IListedDashboard, type IObjectCertificationWrite, type IWidget, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type FilterContextItem, type IDashboard, type IDashboardAttributeFilterConfig, type IDashboardBase, type IDashboardDefinition, type IDashboardExportParameter, type IDashboardFilterView, type IDashboardFilterViewSaveRequest, type IDashboardObjectIdentity, type IDashboardPermissions, type IDashboardPlugin, type IDashboardPluginDefinition, type IDashboardTab, type IDashboardWidget, type IDateFilter, type IExecutionDefinition, type IFilter, type IFilterContext, type IListedDashboard, type IObjectCertificationWrite, type IWidget, type ObjRef } from "@gooddata/sdk-model";
|
|
3
3
|
import { type FiltersByTab, type TigerAuthenticatedCallGuard } from "../../../types/index.js";
|
|
4
4
|
export declare function getOrphanedTabFilterContexts(originalTabs: IDashboardTab[], currentTabs: IDashboardTab[]): IFilterContext[];
|
|
5
5
|
export declare class TigerWorkspaceDashboards implements IWorkspaceDashboardsService {
|
|
@@ -13,6 +13,7 @@ export declare class TigerWorkspaceDashboards implements IWorkspaceDashboardsSer
|
|
|
13
13
|
getDashboardReferencedObjects: (dashboard: IDashboard<IDashboardWidget>, types?: SupportedDashboardReferenceTypes[]) => Promise<IDashboardReferences>;
|
|
14
14
|
getFilterContextByExportId: (exportId: string, type: "slides" | "visual" | undefined, exportTabId?: string | undefined) => Promise<{
|
|
15
15
|
filterContext?: IFilterContext | undefined;
|
|
16
|
+
parametersByTab?: Record<string, IDashboardExportParameter[]> | undefined;
|
|
16
17
|
title?: string | undefined;
|
|
17
18
|
hideWidgetTitles?: boolean | undefined;
|
|
18
19
|
exportMetadata?: Record<string, string> | undefined;
|
|
@@ -26,6 +26,7 @@ import { GET_OPTIMIZED_WORKSPACE_PARAMS } from "../constants.js";
|
|
|
26
26
|
import { getSettingsForCurrentUser } from "../settings/index.js";
|
|
27
27
|
import { buildDashboardPermissions } from "./dashboardPermissions.js";
|
|
28
28
|
import { DashboardsQuery } from "./dashboardsQuery.js";
|
|
29
|
+
import { getParametersMetadata, patchDashboardParametersFromExport } from "./parameters.js";
|
|
29
30
|
import { resolveWidgetFilters, resolveWidgetFiltersWithMultipleDateFilters } from "./widgetFilters.js";
|
|
30
31
|
export function getOrphanedTabFilterContexts(originalTabs, currentTabs) {
|
|
31
32
|
const currentRefs = currentTabs
|
|
@@ -75,8 +76,10 @@ export class TigerWorkspaceDashboards {
|
|
|
75
76
|
metaInclude: ["accessInfo"],
|
|
76
77
|
});
|
|
77
78
|
});
|
|
78
|
-
const { filterContext, title, hideWidgetTitles } = await this.prepareMetadata(options?.exportId, options?.exportType, filterContextRef, options?.exportTabId);
|
|
79
|
-
const dashboard = convertDashboard(result.data, filterContext)
|
|
79
|
+
const { filterContext, title, hideWidgetTitles, parametersByTab } = await this.prepareMetadata(options?.exportId, options?.exportType, filterContextRef, options?.exportTabId);
|
|
80
|
+
const dashboard = patchDashboardParametersFromExport(convertDashboard(result.data, filterContext), {
|
|
81
|
+
parametersByTab,
|
|
82
|
+
});
|
|
80
83
|
return updateDashboard(dashboard, title, hideWidgetTitles);
|
|
81
84
|
};
|
|
82
85
|
getDashboardWithReferences = async (ref, filterContextRef, options, types = ["insight", "dashboardPlugin"]) => {
|
|
@@ -89,8 +92,11 @@ export class TigerWorkspaceDashboards {
|
|
|
89
92
|
.filter(isDashboardPluginsItem)
|
|
90
93
|
.map((plugin) => convertDashboardPluginWithLinksFromBackend(plugin, included));
|
|
91
94
|
const dataSets = included.filter(isDataSetItem).map((dataSet) => convertDataSetItem(dataSet));
|
|
92
|
-
const { filterContext, title, hideWidgetTitles } = await this.prepareMetadata(options?.exportId, options?.exportType, filterContextRef, options?.exportTabId);
|
|
95
|
+
const { filterContext, title, hideWidgetTitles, parametersByTab } = await this.prepareMetadata(options?.exportId, options?.exportType, filterContextRef, options?.exportTabId);
|
|
93
96
|
let updatedDashboard = convertDashboard(dashboard, filterContext);
|
|
97
|
+
updatedDashboard = patchDashboardParametersFromExport(updatedDashboard, {
|
|
98
|
+
parametersByTab,
|
|
99
|
+
});
|
|
94
100
|
updatedDashboard = updateDashboard(updatedDashboard, title, hideWidgetTitles);
|
|
95
101
|
return {
|
|
96
102
|
dashboard: updatedDashboard,
|
|
@@ -164,7 +170,10 @@ export class TigerWorkspaceDashboards {
|
|
|
164
170
|
: undefined;
|
|
165
171
|
const filterContext = filterContextFromFiltersByTab || filterContextFromFilters;
|
|
166
172
|
return {
|
|
167
|
-
...
|
|
173
|
+
...filterContext,
|
|
174
|
+
...(convertedExportMetadata?.parametersByTab
|
|
175
|
+
? { parametersByTab: convertedExportMetadata.parametersByTab }
|
|
176
|
+
: {}),
|
|
168
177
|
...(convertedExportMetadata?.title ? { title: convertedExportMetadata.title } : {}),
|
|
169
178
|
...(convertedExportMetadata?.hideWidgetTitles
|
|
170
179
|
? { hideWidgetTitles: convertedExportMetadata.hideWidgetTitles }
|
|
@@ -412,6 +421,7 @@ export class TigerWorkspaceDashboards {
|
|
|
412
421
|
metadata: convertToBackendExportMetadata({
|
|
413
422
|
filters: withoutAllTime,
|
|
414
423
|
filtersByTab: withoutAllTimePerTab,
|
|
424
|
+
...getParametersMetadata(options?.parametersByTab),
|
|
415
425
|
exportMetadata: options?.exportMetadata,
|
|
416
426
|
}),
|
|
417
427
|
};
|
|
@@ -452,6 +462,7 @@ export class TigerWorkspaceDashboards {
|
|
|
452
462
|
metadata: convertToBackendExportMetadata({
|
|
453
463
|
filters: withoutAllTime,
|
|
454
464
|
filtersByTab: withoutAllTimePerTab,
|
|
465
|
+
...getParametersMetadata(options?.parametersByTab),
|
|
455
466
|
title: options?.title,
|
|
456
467
|
hideWidgetTitles: options?.hideWidgetTitles,
|
|
457
468
|
exportMetadata: options?.exportMetadata,
|
|
@@ -642,6 +653,7 @@ export class TigerWorkspaceDashboards {
|
|
|
642
653
|
metadata: convertToBackendExportMetadata({
|
|
643
654
|
filters: withoutAllTime,
|
|
644
655
|
filtersByTab: withoutAllTimePerTab,
|
|
656
|
+
...getParametersMetadata(options?.parametersByTab),
|
|
645
657
|
title: options?.filename,
|
|
646
658
|
}),
|
|
647
659
|
};
|
|
@@ -1084,6 +1096,7 @@ export class TigerWorkspaceDashboards {
|
|
|
1084
1096
|
: undefined;
|
|
1085
1097
|
return {
|
|
1086
1098
|
filterContext: filterContextByExport?.filterContext || filterContextByRef,
|
|
1099
|
+
parametersByTab: filterContextByExport?.parametersByTab,
|
|
1087
1100
|
title: filterContextByExport?.title,
|
|
1088
1101
|
hideWidgetTitles: filterContextByExport?.hideWidgetTitles,
|
|
1089
1102
|
exportMetadata: filterContextByExport?.exportMetadata,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type IDashboard, type IDashboardExportParameter } from "@gooddata/sdk-model";
|
|
2
|
+
/**
|
|
3
|
+
* Applies export parameter runtime-overrides onto a converted dashboard so the headless export
|
|
4
|
+
* render (`?exportId=…`) shows the overridden values, landing them wherever the loader sources
|
|
5
|
+
* parameters from for each tab.
|
|
6
|
+
*/
|
|
7
|
+
export declare function patchDashboardParametersFromExport(dashboard: IDashboard, overrides: {
|
|
8
|
+
parametersByTab?: Record<string, IDashboardExportParameter[]>;
|
|
9
|
+
}): IDashboard;
|
|
10
|
+
export declare function getParametersMetadata(parametersByTab: Record<string, IDashboardExportParameter[]> | undefined): {
|
|
11
|
+
parametersByTab?: Record<string, IDashboardExportParameter[]>;
|
|
12
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* Applies export parameter runtime-overrides onto a converted dashboard so the headless export
|
|
4
|
+
* render (`?exportId=…`) shows the overridden values, landing them wherever the loader sources
|
|
5
|
+
* parameters from for each tab.
|
|
6
|
+
*/
|
|
7
|
+
export function patchDashboardParametersFromExport(dashboard, overrides) {
|
|
8
|
+
const { parametersByTab } = overrides;
|
|
9
|
+
if (!parametersByTab) {
|
|
10
|
+
return dashboard;
|
|
11
|
+
}
|
|
12
|
+
// Patch each tab against the parameters the loader will source for it (mirrors the loader's
|
|
13
|
+
// pickTabParametersSource): the tab's own when present, else the shared root when every tab omits.
|
|
14
|
+
// Materializing per-tab keeps divergent per-tab overrides from collapsing onto the single root array.
|
|
15
|
+
const tabs = dashboard.tabs;
|
|
16
|
+
if (tabs?.length) {
|
|
17
|
+
const everyTabOmits = tabs.every((tab) => tab.parameters === undefined);
|
|
18
|
+
return {
|
|
19
|
+
...dashboard,
|
|
20
|
+
tabs: tabs.map((tab) => {
|
|
21
|
+
const source = tab.parameters ?? (everyTabOmits ? dashboard.parameters : undefined);
|
|
22
|
+
const parameters = applyParameterOverrides(source, parametersByTab[tab.localIdentifier] ?? []);
|
|
23
|
+
return parameters === tab.parameters ? tab : { ...tab, parameters };
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Legacy single-tab dashboards carry no tabs[]; the loader sources root directly.
|
|
28
|
+
const parameters = applyParameterOverrides(dashboard.parameters, Object.values(parametersByTab).flat());
|
|
29
|
+
return parameters === dashboard.parameters ? dashboard : { ...dashboard, parameters };
|
|
30
|
+
}
|
|
31
|
+
function applyParameterOverrides(parameters, overrides) {
|
|
32
|
+
if (!parameters || parameters.length === 0 || overrides.length === 0) {
|
|
33
|
+
return parameters;
|
|
34
|
+
}
|
|
35
|
+
const valueById = new Map(overrides.map((override) => [override.id, override.value]));
|
|
36
|
+
return parameters.map((parameter) => valueById.has(parameter.ref.identifier)
|
|
37
|
+
? { ...parameter, value: Number(valueById.get(parameter.ref.identifier)) }
|
|
38
|
+
: parameter);
|
|
39
|
+
}
|
|
40
|
+
export function getParametersMetadata(parametersByTab) {
|
|
41
|
+
return parametersByTab && Object.keys(parametersByTab).length > 0 ? { parametersByTab } : {};
|
|
42
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AutomationAutomationImageExport, type AutomationAutomationSlidesExport, type AutomationAutomationTabularExport, type AutomationAutomationVisualExport, type ITigerFilter, type ITigerFilterContextItem, type JsonApiExportDefinitionOutIncludes, type JsonApiExportDefinitionOutWithLinks, type JsonApiWorkspaceAutomationOutAttributesDashboardTabularExportsInner, type JsonApiWorkspaceAutomationOutAttributesRawExportsInner } from "@gooddata/api-client-tiger";
|
|
2
|
-
import { type IExportDefinitionDashboardRequestPayload, type IExportDefinitionMetadataObject, type IExportDefinitionRequestPayload, type IExportDefinitionVisualizationObjectRequestPayload } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IDashboardExportParameter, type IExportDefinitionDashboardRequestPayload, type IExportDefinitionMetadataObject, type IExportDefinitionRequestPayload, type IExportDefinitionVisualizationObjectRequestPayload } from "@gooddata/sdk-model";
|
|
3
3
|
type MetadataObjectDefinition<T extends ITigerFilter | ITigerFilterContextItem = ITigerFilterContextItem> = {
|
|
4
4
|
widget?: string;
|
|
5
5
|
visualizationObject?: string;
|
|
@@ -7,6 +7,7 @@ type MetadataObjectDefinition<T extends ITigerFilter | ITigerFilterContextItem =
|
|
|
7
7
|
title?: string;
|
|
8
8
|
filters?: T[];
|
|
9
9
|
filtersByTab?: Record<string, ITigerFilterContextItem[]>;
|
|
10
|
+
parametersByTab?: Record<string, IDashboardExportParameter[]>;
|
|
10
11
|
};
|
|
11
12
|
export declare const wrapExportDefinition: (requestPayload: IExportDefinitionRequestPayload, metadata?: MetadataObjectDefinition<ITigerFilterContextItem> | undefined) => IExportDefinitionMetadataObject;
|
|
12
13
|
export declare const convertDashboardTabularExportRequest: (exportRequest: JsonApiWorkspaceAutomationOutAttributesDashboardTabularExportsInner) => IExportDefinitionDashboardRequestPayload | IExportDefinitionVisualizationObjectRequestPayload;
|
|
@@ -96,6 +96,7 @@ export const convertVisualExportRequest = (exportRequest) => {
|
|
|
96
96
|
}, {})
|
|
97
97
|
: undefined;
|
|
98
98
|
const filtersByTabObj = filtersByTab ? { filtersByTab } : {};
|
|
99
|
+
const parametersByTabObj = metadata?.parametersByTab ? { parametersByTab: metadata.parametersByTab } : {};
|
|
99
100
|
return {
|
|
100
101
|
type: "dashboard",
|
|
101
102
|
fileName,
|
|
@@ -104,6 +105,7 @@ export const convertVisualExportRequest = (exportRequest) => {
|
|
|
104
105
|
dashboard: dashboardId,
|
|
105
106
|
...filtersObj,
|
|
106
107
|
...filtersByTabObj,
|
|
108
|
+
...parametersByTabObj,
|
|
107
109
|
},
|
|
108
110
|
};
|
|
109
111
|
};
|
|
@@ -139,6 +141,7 @@ export const convertImageExportRequest = (exportRequest) => {
|
|
|
139
141
|
widget: widgetIds?.[0] ?? "",
|
|
140
142
|
dashboard: dashboardId,
|
|
141
143
|
filters: convertTigerToSdkFilters(tigerMetadata?.filters),
|
|
144
|
+
...(tigerMetadata?.parametersByTab ? { parametersByTab: tigerMetadata.parametersByTab } : {}),
|
|
142
145
|
},
|
|
143
146
|
};
|
|
144
147
|
};
|
|
@@ -156,6 +159,7 @@ export const convertSlidesExportRequest = (exportRequest) => {
|
|
|
156
159
|
dashboard: dashboardId,
|
|
157
160
|
widget: tigerMetadata?.widget,
|
|
158
161
|
filters: convertTigerToSdkFilters(tigerMetadata?.filters),
|
|
162
|
+
...(tigerMetadata?.parametersByTab ? { parametersByTab: tigerMetadata.parametersByTab } : {}),
|
|
159
163
|
},
|
|
160
164
|
};
|
|
161
165
|
}
|
|
@@ -177,6 +181,7 @@ export const convertSlidesExportRequest = (exportRequest) => {
|
|
|
177
181
|
dashboard: dashboardId,
|
|
178
182
|
filters,
|
|
179
183
|
filtersByTab,
|
|
184
|
+
...(metadataObj?.parametersByTab ? { parametersByTab: metadataObj.parametersByTab } : {}),
|
|
180
185
|
},
|
|
181
186
|
};
|
|
182
187
|
};
|
|
@@ -280,6 +285,9 @@ const convertExportDefinitionRequestPayload = (exportRequest) => {
|
|
|
280
285
|
}, {})
|
|
281
286
|
: undefined;
|
|
282
287
|
const filtersByTabObj = filtersByTab ? { filtersByTab } : {};
|
|
288
|
+
const parametersByTabObj = metadata?.parametersByTab
|
|
289
|
+
? { parametersByTab: metadata.parametersByTab }
|
|
290
|
+
: {};
|
|
283
291
|
return {
|
|
284
292
|
type: "dashboard",
|
|
285
293
|
fileName: exportRequest.fileName,
|
|
@@ -288,6 +296,7 @@ const convertExportDefinitionRequestPayload = (exportRequest) => {
|
|
|
288
296
|
dashboard: exportRequest.dashboardId,
|
|
289
297
|
...filtersObj,
|
|
290
298
|
...filtersByTabObj,
|
|
299
|
+
...parametersByTabObj,
|
|
291
300
|
},
|
|
292
301
|
};
|
|
293
302
|
}
|
|
@@ -18,6 +18,7 @@ export const convertExportMetadata = (exportMetadata) => {
|
|
|
18
18
|
}, {}),
|
|
19
19
|
}
|
|
20
20
|
: {}),
|
|
21
|
+
...(exportMetadata?.parametersByTab ? { parametersByTab: exportMetadata.parametersByTab } : {}),
|
|
21
22
|
...(exportMetadata?.title ? { title: exportMetadata.title } : {}),
|
|
22
23
|
...(exportMetadata?.hideWidgetTitles ? { hideWidgetTitles: exportMetadata.hideWidgetTitles } : {}),
|
|
23
24
|
...(exportMetadata?.exportMetadata === undefined
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
// (C) 2025 GoodData Corporation
|
|
1
|
+
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
export function convertExecutionResultMetadata(metadata) {
|
|
3
3
|
// added for forward compatibility, currently there is no conversion necessary (save for types)
|
|
4
4
|
return {
|
|
5
5
|
dataSourceMessages: convertDataSourceMessages(metadata.dataSourceMessages),
|
|
6
|
+
limitBreaks: metadata.limitBreaks ? convertLimitBreaks(metadata.limitBreaks) : undefined,
|
|
6
7
|
};
|
|
7
8
|
}
|
|
8
9
|
function convertDataSourceMessages(messages) {
|
|
@@ -11,3 +12,9 @@ function convertDataSourceMessages(messages) {
|
|
|
11
12
|
...m,
|
|
12
13
|
}));
|
|
13
14
|
}
|
|
15
|
+
function convertLimitBreaks(limitBreaks) {
|
|
16
|
+
// added for forward compatibility, currently there is no conversion necessary (save for types)
|
|
17
|
+
return limitBreaks.map((limitBreak) => ({
|
|
18
|
+
...limitBreak,
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
@@ -74,11 +74,11 @@ export const convertToRawExportRequest = (exportRequest, widgetExecution, overri
|
|
|
74
74
|
};
|
|
75
75
|
export const convertToImageExportRequest = (exportRequest, title) => {
|
|
76
76
|
if (exportRequest.format === "PNG") {
|
|
77
|
-
const { dashboard, widget, filters } = exportRequest.content;
|
|
77
|
+
const { dashboard, widget, filters, parametersByTab } = exportRequest.content;
|
|
78
78
|
if (!widget || !dashboard) {
|
|
79
79
|
throw new UnexpectedError("Export definition must have a widget or dashboard");
|
|
80
80
|
}
|
|
81
|
-
const isMetadataFilled = title || filters;
|
|
81
|
+
const isMetadataFilled = title || filters || parametersByTab;
|
|
82
82
|
const metadataObj = {
|
|
83
83
|
...(isMetadataFilled
|
|
84
84
|
? {
|
|
@@ -88,6 +88,7 @@ export const convertToImageExportRequest = (exportRequest, title) => {
|
|
|
88
88
|
filters: convertSdkFiltersToTiger(filters),
|
|
89
89
|
}
|
|
90
90
|
: {}),
|
|
91
|
+
...(parametersByTab ? { parametersByTab } : {}),
|
|
91
92
|
...(title ? { title } : {}),
|
|
92
93
|
},
|
|
93
94
|
}
|
|
@@ -109,7 +110,7 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
|
|
|
109
110
|
throw new UnexpectedError("Export definition must be a PDF or PPTX format");
|
|
110
111
|
}
|
|
111
112
|
if (isExportDefinitionDashboardRequestPayload(exportRequest)) {
|
|
112
|
-
const { filters, filtersByTab, dashboard } = exportRequest.content;
|
|
113
|
+
const { filters, filtersByTab, dashboard, parametersByTab } = exportRequest.content;
|
|
113
114
|
// Convert filtersByTab to API format
|
|
114
115
|
const filtersByTabObj = filtersByTab
|
|
115
116
|
? Object.entries(filtersByTab).reduce((acc, [tabId, tabFilters]) => {
|
|
@@ -117,7 +118,7 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
|
|
|
117
118
|
return acc;
|
|
118
119
|
}, {})
|
|
119
120
|
: undefined;
|
|
120
|
-
const isMetadataFilled = title || filters || filtersByTab;
|
|
121
|
+
const isMetadataFilled = title || filters || filtersByTab || parametersByTab;
|
|
121
122
|
const metadataObj = {
|
|
122
123
|
...(isMetadataFilled
|
|
123
124
|
? {
|
|
@@ -128,6 +129,7 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
|
|
|
128
129
|
}
|
|
129
130
|
: {}),
|
|
130
131
|
...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
|
|
132
|
+
...(parametersByTab ? { parametersByTab } : {}),
|
|
131
133
|
...(title ? { title } : {}),
|
|
132
134
|
},
|
|
133
135
|
}
|
|
@@ -141,7 +143,7 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
|
|
|
141
143
|
...metadataObj,
|
|
142
144
|
};
|
|
143
145
|
}
|
|
144
|
-
const { filters, widget, dashboard } = exportRequest.content;
|
|
146
|
+
const { filters, widget, dashboard, parametersByTab } = exportRequest.content;
|
|
145
147
|
if (!widget) {
|
|
146
148
|
throw new UnexpectedError("Export definition must have a widget");
|
|
147
149
|
}
|
|
@@ -154,12 +156,13 @@ export const convertToSlidesExportRequest = (exportRequest, title) => {
|
|
|
154
156
|
metadata: {
|
|
155
157
|
widget,
|
|
156
158
|
...(filters ? { filters: convertSdkFiltersToTiger(filters) } : {}),
|
|
159
|
+
...(parametersByTab ? { parametersByTab } : {}),
|
|
157
160
|
...(title ? { title } : {}),
|
|
158
161
|
},
|
|
159
162
|
};
|
|
160
163
|
};
|
|
161
164
|
export const convertToVisualExportRequest = (exportRequest, title) => {
|
|
162
|
-
const { filters, filtersByTab, dashboard } = exportRequest.content;
|
|
165
|
+
const { filters, filtersByTab, dashboard, parametersByTab } = exportRequest.content;
|
|
163
166
|
// Convert filtersByTab to API format
|
|
164
167
|
const filtersByTabObj = filtersByTab
|
|
165
168
|
? Object.entries(filtersByTab).reduce((acc, [tabId, tabFilters]) => {
|
|
@@ -167,7 +170,7 @@ export const convertToVisualExportRequest = (exportRequest, title) => {
|
|
|
167
170
|
return acc;
|
|
168
171
|
}, {})
|
|
169
172
|
: undefined;
|
|
170
|
-
const isMetadataFilled = title || filters || filtersByTab;
|
|
173
|
+
const isMetadataFilled = title || filters || filtersByTab || parametersByTab;
|
|
171
174
|
const metadataObj = {
|
|
172
175
|
...(isMetadataFilled
|
|
173
176
|
? {
|
|
@@ -178,6 +181,7 @@ export const convertToVisualExportRequest = (exportRequest, title) => {
|
|
|
178
181
|
}
|
|
179
182
|
: {}),
|
|
180
183
|
...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
|
|
184
|
+
...(parametersByTab ? { parametersByTab } : {}),
|
|
181
185
|
...(title ? { title } : {}),
|
|
182
186
|
},
|
|
183
187
|
}
|
|
@@ -280,7 +284,7 @@ export const convertVisualizationToDashboardTabularExportRequest = (exportReques
|
|
|
280
284
|
};
|
|
281
285
|
export const convertExportDefinitionRequestPayload = (exportRequest, title) => {
|
|
282
286
|
if (isExportDefinitionDashboardRequestPayload(exportRequest)) {
|
|
283
|
-
const { filters, filtersByTab, dashboard } = exportRequest.content;
|
|
287
|
+
const { filters, filtersByTab, dashboard, parametersByTab } = exportRequest.content;
|
|
284
288
|
// Convert filtersByTab to API format
|
|
285
289
|
const filtersByTabObj = filtersByTab
|
|
286
290
|
? Object.entries(filtersByTab).reduce((acc, [tabId, tabFilters]) => {
|
|
@@ -288,7 +292,7 @@ export const convertExportDefinitionRequestPayload = (exportRequest, title) => {
|
|
|
288
292
|
return acc;
|
|
289
293
|
}, {})
|
|
290
294
|
: undefined;
|
|
291
|
-
const isMetadataFilled = title || filters || filtersByTab;
|
|
295
|
+
const isMetadataFilled = title || filters || filtersByTab || parametersByTab;
|
|
292
296
|
const metadataObj = {
|
|
293
297
|
...(isMetadataFilled
|
|
294
298
|
? {
|
|
@@ -299,6 +303,7 @@ export const convertExportDefinitionRequestPayload = (exportRequest, title) => {
|
|
|
299
303
|
}
|
|
300
304
|
: {}),
|
|
301
305
|
...(filtersByTabObj ? { filtersByTab: filtersByTabObj } : {}),
|
|
306
|
+
...(parametersByTab ? { parametersByTab } : {}),
|
|
302
307
|
...(title ? { title } : {}),
|
|
303
308
|
},
|
|
304
309
|
}
|
|
@@ -279,6 +279,7 @@ function convertMeasureValueFilter(filter, applyOnResultProp) {
|
|
|
279
279
|
from: Math.min(originalFrom, originalTo),
|
|
280
280
|
to: Math.max(originalFrom, originalTo),
|
|
281
281
|
treatNullValuesAs,
|
|
282
|
+
localIdentifier,
|
|
282
283
|
...dimensionalityProp,
|
|
283
284
|
...applyOnResultProp,
|
|
284
285
|
},
|
package/esm/tsdoc-metadata.json
CHANGED
package/esm/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type DeclarativeSettingTypeEnum, type ITigerClientBase, type JsonApiOrganizationSettingOutWithLinksTypeEnum } from "@gooddata/api-client-tiger";
|
|
2
2
|
import { type AuthenticatedCallGuard } from "@gooddata/sdk-backend-base";
|
|
3
|
-
import { type FilterContextItem } from "@gooddata/sdk-model";
|
|
3
|
+
import { type FilterContextItem, type IDashboardExportParameter } from "@gooddata/sdk-model";
|
|
4
4
|
/**
|
|
5
5
|
* Tiger authenticated call guard
|
|
6
6
|
*
|
|
@@ -37,6 +37,7 @@ export type FiltersByTab = {
|
|
|
37
37
|
export interface IExportMetadata {
|
|
38
38
|
filters?: FilterContextItem[];
|
|
39
39
|
filtersByTab?: FiltersByTab;
|
|
40
|
+
parametersByTab?: Record<string, IDashboardExportParameter[]>;
|
|
40
41
|
title?: string;
|
|
41
42
|
hideWidgetTitles?: boolean;
|
|
42
43
|
exportMetadata?: Record<string, string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-backend-tiger",
|
|
3
|
-
"version": "11.41.0-alpha.
|
|
3
|
+
"version": "11.41.0-alpha.4",
|
|
4
4
|
"description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData",
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
"spark-md5": "^3.0.0",
|
|
33
33
|
"ts-invariant": "0.10.3",
|
|
34
34
|
"tslib": "2.8.1",
|
|
35
|
-
"uuid": "11.1.
|
|
36
|
-
"@gooddata/api-client-tiger": "11.41.0-alpha.
|
|
37
|
-
"@gooddata/sdk-backend-
|
|
38
|
-
"@gooddata/sdk-backend-
|
|
39
|
-
"@gooddata/sdk-code-convertors": "11.41.0-alpha.
|
|
40
|
-
"@gooddata/sdk-model": "11.41.0-alpha.
|
|
41
|
-
"@gooddata/util": "11.41.0-alpha.
|
|
35
|
+
"uuid": "11.1.1",
|
|
36
|
+
"@gooddata/api-client-tiger": "11.41.0-alpha.4",
|
|
37
|
+
"@gooddata/sdk-backend-spi": "11.41.0-alpha.4",
|
|
38
|
+
"@gooddata/sdk-backend-base": "11.41.0-alpha.4",
|
|
39
|
+
"@gooddata/sdk-code-convertors": "11.41.0-alpha.4",
|
|
40
|
+
"@gooddata/sdk-model": "11.41.0-alpha.4",
|
|
41
|
+
"@gooddata/util": "11.41.0-alpha.4"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@gooddata/fixtures": "3.
|
|
44
|
+
"@gooddata/fixtures": "3.7.0",
|
|
45
45
|
"@microsoft/api-documenter": "^7.17.0",
|
|
46
46
|
"@microsoft/api-extractor": "^7.55.2",
|
|
47
47
|
"@types/lodash-es": "^4.17.12",
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"oxlint-tsgolint": "0.15.0",
|
|
66
66
|
"typescript": "5.9.3",
|
|
67
67
|
"vitest": "4.1.8",
|
|
68
|
-
"@gooddata/catalog-export": "11.41.0-alpha.
|
|
69
|
-
"@gooddata/eslint-config": "11.41.0-alpha.
|
|
70
|
-
"@gooddata/oxlint-config": "11.41.0-alpha.
|
|
71
|
-
"@gooddata/reference-workspace": "11.41.0-alpha.
|
|
68
|
+
"@gooddata/catalog-export": "11.41.0-alpha.4",
|
|
69
|
+
"@gooddata/eslint-config": "11.41.0-alpha.4",
|
|
70
|
+
"@gooddata/oxlint-config": "11.41.0-alpha.4",
|
|
71
|
+
"@gooddata/reference-workspace": "11.41.0-alpha.4"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"_phase:build": "npm run build",
|