@gooddata/sdk-backend-tiger 11.48.0-alpha.0 → 11.48.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/auth.d.ts.map +1 -1
- package/esm/auth.js +11 -2
- package/esm/backend/features/feature.d.ts.map +1 -1
- package/esm/backend/features/feature.js +2 -3
- package/esm/backend/organization/automations/automationsQuery.d.ts.map +1 -1
- package/esm/backend/organization/automations/automationsQuery.js +1 -3
- package/esm/backend/organization/settings.d.ts.map +1 -1
- package/esm/backend/organization/settings.js +24 -9
- package/esm/backend/settings/responseCacheCoherence.d.ts +34 -0
- package/esm/backend/settings/responseCacheCoherence.d.ts.map +1 -0
- package/esm/backend/settings/responseCacheCoherence.js +70 -0
- package/esm/backend/uiFeatures.d.ts +7 -10
- package/esm/backend/uiFeatures.d.ts.map +1 -1
- package/esm/backend/uiFeatures.js +8 -11
- package/esm/backend/user/settings.d.ts.map +1 -1
- package/esm/backend/user/settings.js +26 -10
- package/esm/backend/workspace/automations/automationsQuery.d.ts.map +1 -1
- package/esm/backend/workspace/automations/automationsQuery.js +1 -4
- package/esm/backend/workspace/automations/index.d.ts +0 -1
- package/esm/backend/workspace/automations/index.d.ts.map +1 -1
- package/esm/backend/workspace/automations/index.js +6 -15
- package/esm/backend/workspace/execution/executionResult.d.ts.map +1 -1
- package/esm/backend/workspace/execution/executionResult.js +22 -0
- package/esm/backend/workspace/genAI/ChatConversations.js +10 -0
- package/esm/backend/workspace/settings/index.d.ts +10 -3
- package/esm/backend/workspace/settings/index.d.ts.map +1 -1
- package/esm/backend/workspace/settings/index.js +52 -14
- package/esm/backend/workspace/styling/index.d.ts +68 -1
- package/esm/backend/workspace/styling/index.d.ts.map +1 -1
- package/esm/backend/workspace/styling/index.js +199 -37
- package/esm/convertors/fromBackend/AutomationConverter.d.ts +2 -2
- package/esm/convertors/fromBackend/AutomationConverter.d.ts.map +1 -1
- package/esm/convertors/fromBackend/AutomationConverter.js +16 -23
- package/esm/convertors/fromBackend/ColorPaletteConverter.d.ts +4 -4
- package/esm/convertors/fromBackend/ColorPaletteConverter.d.ts.map +1 -1
- package/esm/convertors/fromBackend/ColorPaletteConverter.js +8 -3
- package/esm/convertors/fromBackend/ExportDefinitionsConverter.d.ts +0 -1
- package/esm/convertors/fromBackend/ExportDefinitionsConverter.d.ts.map +1 -1
- package/esm/convertors/fromBackend/ExportDefinitionsConverter.js +0 -18
- package/esm/convertors/fromBackend/ThemeConverter.d.ts +3 -3
- package/esm/convertors/fromBackend/ThemeConverter.d.ts.map +1 -1
- package/esm/convertors/fromBackend/ThemeConverter.js +7 -4
- package/esm/convertors/toBackend/AutomationConverter.d.ts +1 -1
- package/esm/convertors/toBackend/AutomationConverter.d.ts.map +1 -1
- package/esm/convertors/toBackend/AutomationConverter.js +5 -15
- package/esm/convertors/toBackend/ColorPaletteConverter.d.ts +2 -1
- package/esm/convertors/toBackend/ColorPaletteConverter.d.ts.map +1 -1
- package/esm/convertors/toBackend/ColorPaletteConverter.js +11 -0
- package/esm/convertors/toBackend/ThemeConverter.d.ts +2 -1
- package/esm/convertors/toBackend/ThemeConverter.d.ts.map +1 -1
- package/esm/convertors/toBackend/ThemeConverter.js +11 -0
- package/esm/sdk-backend-tiger.d.ts +2 -0
- package/esm/types/refTypeMapping.d.ts +2 -0
- package/esm/types/refTypeMapping.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -31,7 +31,6 @@ var TigerFeaturesNames;
|
|
|
31
31
|
TigerFeaturesNames["EnableDataProfiling"] = "enableDataProfiling";
|
|
32
32
|
TigerFeaturesNames["EnableExperimentalFeaturesUI"] = "enableExperimentalFeaturesUI";
|
|
33
33
|
TigerFeaturesNames["EnableSingleStoreDataSource"] = "enableSingleStoreDataSource";
|
|
34
|
-
TigerFeaturesNames["EnableCrateDbDataSource"] = "enableCrateDbDataSource";
|
|
35
34
|
TigerFeaturesNames["EnableOidcAuth"] = "enableOidcAuth";
|
|
36
35
|
TigerFeaturesNames["EnableSemanticSearch"] = "enableSemanticSearch";
|
|
37
36
|
TigerFeaturesNames["EnableCatalogSmartSearchResults"] = "enableCatalogSmartSearchResults";
|
|
@@ -51,7 +50,6 @@ var TigerFeaturesNames;
|
|
|
51
50
|
TigerFeaturesNames["EnableAmplitudeTracker"] = "enableAmplitudeTracker";
|
|
52
51
|
TigerFeaturesNames["EnableExportTemplateSelection"] = "enableExportTemplateSelection";
|
|
53
52
|
TigerFeaturesNames["EnableRawExports"] = "enableRawExports";
|
|
54
|
-
TigerFeaturesNames["EnableCustomizableCsvDelimiter"] = "enableCustomizableCsvDelimiter";
|
|
55
53
|
TigerFeaturesNames["EnableExecutionCancelling"] = "enableExecutionCancelling";
|
|
56
54
|
TigerFeaturesNames["EnableDashboardTabularExport"] = "enableDashboardTabularExport";
|
|
57
55
|
TigerFeaturesNames["EnableOrchestratedTabularExports"] = "enableOrchestratedTabularExports";
|
|
@@ -63,7 +61,6 @@ var TigerFeaturesNames;
|
|
|
63
61
|
TigerFeaturesNames["EnableNotificationChannelIdentifiers"] = "enableNotificationChannelIdentifiers";
|
|
64
62
|
TigerFeaturesNames["EnableDashboardShareDialogLink"] = "enableDashboardShareDialogLink";
|
|
65
63
|
TigerFeaturesNames["ProductionFeatures"] = "productionFeatures";
|
|
66
|
-
TigerFeaturesNames["EnableNewScheduledExport"] = "enableNewScheduledExport";
|
|
67
64
|
TigerFeaturesNames["EnableSeamlessIdpSwitch"] = "enableSeamlessIdpSwitch";
|
|
68
65
|
TigerFeaturesNames["EnablePreAggregationDatasets"] = "enablePreAggregationDatasets";
|
|
69
66
|
TigerFeaturesNames["EnableNewPivotTable"] = "enableNewPivotTable";
|
|
@@ -73,6 +70,7 @@ var TigerFeaturesNames;
|
|
|
73
70
|
TigerFeaturesNames["EnableHLL"] = "enableHLL";
|
|
74
71
|
TigerFeaturesNames["EnableGeoPushpinIcon"] = "enableGeoPushpinIcon";
|
|
75
72
|
TigerFeaturesNames["EnableGeoChartA11yImprovements"] = "enableGeoChartA11yImprovements";
|
|
73
|
+
TigerFeaturesNames["EnableGeoLayersExport"] = "enableGeoLayersExport";
|
|
76
74
|
TigerFeaturesNames["EnableGeoChartsViewportConfig"] = "enableGeoChartsViewportConfig";
|
|
77
75
|
TigerFeaturesNames["EnableGeoSegmentConflictRecommendation"] = "enableGeoSegmentConflictRecommendation";
|
|
78
76
|
TigerFeaturesNames["EnableGeoBasemapConfig"] = "enableGeoBasemapConfig";
|
|
@@ -123,6 +121,7 @@ var TigerFeaturesNames;
|
|
|
123
121
|
TigerFeaturesNames["EnableLdmModelerRemoteModule"] = "enableShellApplication_ldmModeler";
|
|
124
122
|
TigerFeaturesNames["EnableExportTimeoutFix"] = "enableExportTimeoutFix";
|
|
125
123
|
TigerFeaturesNames["EnableAiAssistantEmbedding"] = "enableAiAssistantEmbedding";
|
|
124
|
+
TigerFeaturesNames["EnableAiContextSetup"] = "enableAiContextSetup";
|
|
126
125
|
})(TigerFeaturesNames || (TigerFeaturesNames = {}));
|
|
127
126
|
export const DefaultFeatureFlags = {
|
|
128
127
|
enableMetricSqlAndDataExplain: false,
|
|
@@ -150,10 +149,9 @@ export const DefaultFeatureFlags = {
|
|
|
150
149
|
enableDataProfiling: false,
|
|
151
150
|
enableExperimentalFeaturesUI: false,
|
|
152
151
|
enableSingleStoreDataSource: false,
|
|
153
|
-
enableCrateDbDataSource: true,
|
|
154
152
|
enableOidcAuth: false,
|
|
155
153
|
enableSemanticSearch: false,
|
|
156
|
-
enableCatalogSmartSearchResults:
|
|
154
|
+
enableCatalogSmartSearchResults: true,
|
|
157
155
|
enableGenAIChat: false,
|
|
158
156
|
enableGenAICatalogQualityChecker: false,
|
|
159
157
|
enableCatalogTrendingObjects: false,
|
|
@@ -172,7 +170,6 @@ export const DefaultFeatureFlags = {
|
|
|
172
170
|
enableAmplitudeTracker: false,
|
|
173
171
|
enableExportTemplateSelection: true,
|
|
174
172
|
enableRawExports: false,
|
|
175
|
-
enableCustomizableCsvDelimiter: true,
|
|
176
173
|
enableExecutionCancelling: false,
|
|
177
174
|
enableImmediateAttributeFilterDisplayAsLabelMigration: false,
|
|
178
175
|
enableAnalyticalDesignerCatalogSideload: false,
|
|
@@ -184,7 +181,6 @@ export const DefaultFeatureFlags = {
|
|
|
184
181
|
enableNotificationChannelIdentifiers: false,
|
|
185
182
|
enableDashboardShareDialogLink: false,
|
|
186
183
|
productionFeatures: undefined,
|
|
187
|
-
enableNewScheduledExport: true,
|
|
188
184
|
enableSeamlessIdpSwitch: false,
|
|
189
185
|
enablePreAggregationDatasets: false,
|
|
190
186
|
enableNewPivotTable: true,
|
|
@@ -194,6 +190,7 @@ export const DefaultFeatureFlags = {
|
|
|
194
190
|
enableHLL: false,
|
|
195
191
|
enableGeoPushpinIcon: true,
|
|
196
192
|
enableGeoChartA11yImprovements: true,
|
|
193
|
+
enableGeoLayersExport: false,
|
|
197
194
|
enableGeoChartsViewportConfig: true,
|
|
198
195
|
enableGeoSegmentConflictRecommendation: true,
|
|
199
196
|
enableGeoBasemapConfig: true,
|
|
@@ -213,7 +210,7 @@ export const DefaultFeatureFlags = {
|
|
|
213
210
|
enableDashboardSectionHeadersDateDataSet: false,
|
|
214
211
|
enableAnalyticalDashboardVersion3: false,
|
|
215
212
|
enableAnomalyDetectionAlert: false,
|
|
216
|
-
enableAnomalyDetectionVisualization:
|
|
213
|
+
enableAnomalyDetectionVisualization: true,
|
|
217
214
|
enableAlertOncePerInterval: false,
|
|
218
215
|
enableFiscalCalendars: true,
|
|
219
216
|
enableDashboardFilterGroups: true,
|
|
@@ -230,6 +227,7 @@ export const DefaultFeatureFlags = {
|
|
|
230
227
|
enableDashboardsSearch: false,
|
|
231
228
|
enableAiHub: false,
|
|
232
229
|
enableAiAgenticConversations: false,
|
|
230
|
+
enableAiContextSetup: false,
|
|
233
231
|
enableGenAiAgenticDataShareOptOut: false,
|
|
234
232
|
enableGenAiVisualizationSummarySkill: false,
|
|
235
233
|
enableGenAiDashboardSummarySkill: false,
|
|
@@ -269,7 +267,6 @@ export const FeatureFlagsValues = {
|
|
|
269
267
|
enableDataProfiling: [true, false],
|
|
270
268
|
enableExperimentalFeaturesUI: [true, false],
|
|
271
269
|
enableSingleStoreDataSource: [true, false],
|
|
272
|
-
enableCrateDbDataSource: [true, false],
|
|
273
270
|
enableOidcAuth: [true, false],
|
|
274
271
|
enableSemanticSearch: [true, false],
|
|
275
272
|
enableCatalogSmartSearchResults: [true, false],
|
|
@@ -291,7 +288,6 @@ export const FeatureFlagsValues = {
|
|
|
291
288
|
enableAmplitudeTracker: [true, false],
|
|
292
289
|
enableExportTemplateSelection: [true, false],
|
|
293
290
|
enableRawExports: [true, false],
|
|
294
|
-
enableCustomizableCsvDelimiter: [true, false],
|
|
295
291
|
enableHighchartsAccessibility: [true, false],
|
|
296
292
|
enableAccessibleChartTooltip: [true, false],
|
|
297
293
|
enableExecutionCancelling: [true, false],
|
|
@@ -303,7 +299,6 @@ export const FeatureFlagsValues = {
|
|
|
303
299
|
enableNotificationChannelIdentifiers: [true, false],
|
|
304
300
|
enableDashboardShareDialogLink: [true, false],
|
|
305
301
|
productionFeatures: [undefined, {}],
|
|
306
|
-
enableNewScheduledExport: [true, false],
|
|
307
302
|
enableSeamlessIdpSwitch: [true, false],
|
|
308
303
|
enablePreAggregationDatasets: [true, false],
|
|
309
304
|
enableNewPivotTable: [true, false],
|
|
@@ -313,6 +308,7 @@ export const FeatureFlagsValues = {
|
|
|
313
308
|
enableHLL: [true, false],
|
|
314
309
|
enableGeoPushpinIcon: [true, false],
|
|
315
310
|
enableGeoChartA11yImprovements: [true, false],
|
|
311
|
+
enableGeoLayersExport: [true, false],
|
|
316
312
|
enableGeoChartsViewportConfig: [true, false],
|
|
317
313
|
enableGeoSegmentConflictRecommendation: [true, false],
|
|
318
314
|
enableGeoBasemapConfig: [true, false],
|
|
@@ -349,6 +345,7 @@ export const FeatureFlagsValues = {
|
|
|
349
345
|
enableDashboardsSearch: [false, true],
|
|
350
346
|
enableAiHub: [true, false],
|
|
351
347
|
enableAiAgenticConversations: [true, false],
|
|
348
|
+
enableAiContextSetup: [true, false],
|
|
352
349
|
enableGenAiAgenticDataShareOptOut: [true, false],
|
|
353
350
|
enableGenAiVisualizationSummarySkill: [false, true],
|
|
354
351
|
enableGenAiDashboardSummarySkill: [false, true],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/backend/user/settings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/backend/user/settings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAI1F,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIhG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,qBAAa,wBACT,SAAQ,oBAAoB,CAAC,aAAa,CAC1C,YAAW,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,YAA6B,QAAQ,EAAE,2BAA2B,EAGjE;IAEqB,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,CA6B1D;IAED,UAAyB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,mHAQhE;IAED,UAAyB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAoBtG;IAED,UAAyB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAmBtG;IAED,UAAyB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAoBlF;CACJ"}
|
|
@@ -5,6 +5,7 @@ import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/prof
|
|
|
5
5
|
import { unwrapSettingContent } from "../../convertors/fromBackend/SettingsConverter.js";
|
|
6
6
|
import { TigerFeaturesService, pickContext } from "../features/index.js";
|
|
7
7
|
import { mapTypeToKey } from "../settings/mapping.js";
|
|
8
|
+
import { invalidateSettingsResponses, trackSettingsResponse } from "../settings/responseCacheCoherence.js";
|
|
8
9
|
import { TigerSettingsService } from "../settings/settings.js";
|
|
9
10
|
import { DefaultUserSettings } from "../uiSettings.js";
|
|
10
11
|
export class TigerUserSettingsService extends TigerSettingsService {
|
|
@@ -20,7 +21,8 @@ export class TigerUserSettingsService extends TigerSettingsService {
|
|
|
20
21
|
const profile = await ProfileApi_GetCurrent(client.axios);
|
|
21
22
|
const context = pickContext(undefined, profile.organizationId, profile.entitlements);
|
|
22
23
|
const features = await this.tigerFeatureService.getFeatures(profile, context);
|
|
23
|
-
|
|
24
|
+
// The org-level read hits the same endpoint with excludeUserSettings; the scope keeps them apart.
|
|
25
|
+
const { data } = await trackSettingsResponse(client.axios, "user:withUser", (requestOptions) => ActionsApi_ResolveAllSettingsWithoutWorkspace(client.axios, client.basePath, {}, requestOptions));
|
|
24
26
|
const resolvedSettings = data.reduce((result, setting) => ({
|
|
25
27
|
...result,
|
|
26
28
|
[mapTypeToKey(setting.type, setting.id)]: unwrapSettingContent(setting.content),
|
|
@@ -43,7 +45,7 @@ export class TigerUserSettingsService extends TigerSettingsService {
|
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
47
|
async updateSetting(type, id, content) {
|
|
46
|
-
|
|
48
|
+
const result = await this.authCall(async (client) => {
|
|
47
49
|
const profile = await ProfileApi_GetCurrent(client.axios);
|
|
48
50
|
return EntitiesApi_UpdateEntityUserSettings(client.axios, client.basePath, {
|
|
49
51
|
id,
|
|
@@ -60,9 +62,11 @@ export class TigerUserSettingsService extends TigerSettingsService {
|
|
|
60
62
|
},
|
|
61
63
|
});
|
|
62
64
|
});
|
|
65
|
+
await invalidateSettingsResponses(this.authCall);
|
|
66
|
+
return result;
|
|
63
67
|
}
|
|
64
68
|
async createSetting(type, id, content) {
|
|
65
|
-
|
|
69
|
+
const result = await this.authCall(async (client) => {
|
|
66
70
|
const profile = await ProfileApi_GetCurrent(client.axios);
|
|
67
71
|
return EntitiesApi_CreateEntityUserSettings(client.axios, client.basePath, {
|
|
68
72
|
userId: profile.userId,
|
|
@@ -78,17 +82,29 @@ export class TigerUserSettingsService extends TigerSettingsService {
|
|
|
78
82
|
},
|
|
79
83
|
});
|
|
80
84
|
});
|
|
85
|
+
await invalidateSettingsResponses(this.authCall);
|
|
86
|
+
return result;
|
|
81
87
|
}
|
|
82
88
|
async deleteSettingByType(type) {
|
|
83
89
|
const settings = await this.getSettingByType(type);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
let deleted = false;
|
|
91
|
+
try {
|
|
92
|
+
for (const setting of settings.data.data) {
|
|
93
|
+
await this.authCall(async (client) => {
|
|
94
|
+
const profile = await ProfileApi_GetCurrent(client.axios);
|
|
95
|
+
return EntitiesApi_DeleteEntityUserSettings(client.axios, client.basePath, {
|
|
96
|
+
userId: profile.userId,
|
|
97
|
+
id: setting.id,
|
|
98
|
+
});
|
|
90
99
|
});
|
|
91
|
-
|
|
100
|
+
deleted = true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
// A failure partway still leaves earlier deletions persisted — invalidate for those.
|
|
105
|
+
if (deleted) {
|
|
106
|
+
await invalidateSettingsResponses(this.authCall);
|
|
107
|
+
}
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automationsQuery.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/automations/automationsQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,2CAA2C,EAEnD,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"automationsQuery.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/automations/automationsQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,2CAA2C,EAEnD,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAK3E,qBAAa,gBAAiB,YAAW,iBAAiB;aAmBlC,QAAQ,EAAE,2BAA2B;IACrD,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,OAAO,CAAC;IApBpB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,IAAI,CAAmC;IAC/C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAyC;IACrD,OAAO,CAAC,UAAU,CAAiC;IAEnD,YACoB,QAAQ,EAAE,2BAA2B,EAC7C,iBAAiB,EAAE,2CAA2C,EAC9D,OAAO,CAAC,yCAA6B,EAC7C;IAEJ,OAAO,CAAC,aAAa,CAEnB;IAEF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAGpD;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAGpD;IAED,UAAU,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,CAKxD;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAG7C;IAED,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,iBAAiB,CAG5D;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,GAAE,oBAA8B,GAAG,iBAAiB,CAIpG;IAED,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,oBAA8B,GAAG,iBAAiB,CAI9F;IAED,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,iBAAiB,CAGlE;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAGxC;IAED,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,oBAA8B,GAAG,iBAAiB,CAI9F;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,oBAA8B,GAAG,iBAAiB,CAIxF;IAED,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAiDxC;IAEK,QAAQ,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAGrD;IAED,OAAO,CAAC,eAAe,CAkDrB;CACL"}
|
|
@@ -4,7 +4,6 @@ import { EntitiesApi_GetAllEntitiesAutomations } from "@gooddata/api-client-tige
|
|
|
4
4
|
import { ServerPaging } from "@gooddata/sdk-backend-base";
|
|
5
5
|
import { convertAutomationListToAutomations } from "../../../convertors/fromBackend/AutomationConverter.js";
|
|
6
6
|
import { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from "../../common/automations.js";
|
|
7
|
-
import { getSettingsForCurrentUser } from "../settings/index.js";
|
|
8
7
|
import { buildFieldFilter, buildStatusFilter } from "./filterBuilders.js";
|
|
9
8
|
export class AutomationsQuery {
|
|
10
9
|
authCall;
|
|
@@ -94,8 +93,6 @@ export class AutomationsQuery {
|
|
|
94
93
|
? ["automationResults"]
|
|
95
94
|
: [];
|
|
96
95
|
const filterObj = this.constructFilter();
|
|
97
|
-
const userSettings = await getSettingsForCurrentUser(this.authCall, this.requestParameters.workspaceId);
|
|
98
|
-
const enableNewScheduledExport = userSettings.enableNewScheduledExport ?? true;
|
|
99
96
|
const items = await this.authCall((client) => EntitiesApi_GetAllEntitiesAutomations(client.axios, client.basePath, {
|
|
100
97
|
...this.requestParameters,
|
|
101
98
|
...metaIncludeObj,
|
|
@@ -120,7 +117,7 @@ export class AutomationsQuery {
|
|
|
120
117
|
if (!(totalCount === null || totalCount === undefined)) {
|
|
121
118
|
this.setTotalCount(totalCount);
|
|
122
119
|
}
|
|
123
|
-
return convertAutomationListToAutomations(data
|
|
120
|
+
return convertAutomationListToAutomations(data);
|
|
124
121
|
});
|
|
125
122
|
return { items, totalCount: this.totalCount };
|
|
126
123
|
}, this.size, this.page * this.size);
|
|
@@ -19,6 +19,5 @@ export declare class TigerWorkspaceAutomationService implements IWorkspaceAutoma
|
|
|
19
19
|
resumeAutomation(id: string): Promise<void>;
|
|
20
20
|
resumeAutomations(ids: string[]): Promise<void>;
|
|
21
21
|
triggerAutomation(id: string): Promise<void>;
|
|
22
|
-
private getEnableNewScheduledExport;
|
|
23
22
|
}
|
|
24
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/automations/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EAC5B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/automations/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EAC5B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAI3E,qBAAa,+BAAgC,YAAW,2BAA2B;IAE3E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFhC,YACqB,QAAQ,EAAE,2BAA2B,EACrC,WAAW,EAAE,MAAM,EACpC;IAEG,cAAc,4EAqBnB;IAEK,mBAAmB,2EAExB;IAEK,aAAa,kGAoBlB;IAEK,gBAAgB,8OA0BrB;IAEK,gBAAgB,oOA0BrB;IAEK,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjD;IAEM,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtD;IAEM,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASrD;IAEM,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1D;IAEM,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhD;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7C;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjD;IAED,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9C;IAEM,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlD;CACJ"}
|
|
@@ -4,7 +4,6 @@ import { AutomationApi_TriggerExistingAutomation } from "@gooddata/api-client-ti
|
|
|
4
4
|
import { EntitiesApi_CreateEntityAutomations, EntitiesApi_DeleteEntityAutomations, EntitiesApi_GetAllEntitiesAutomations, EntitiesApi_GetEntityAutomations, EntitiesApi_UpdateEntityAutomations, } from "@gooddata/api-client-tiger/endpoints/entitiesObjects";
|
|
5
5
|
import { convertAutomation as convertAutomationFromBackend } from "../../../convertors/fromBackend/AutomationConverter.js";
|
|
6
6
|
import { convertAutomation as convertAutomationToBackend } from "../../../convertors/toBackend/AutomationConverter.js";
|
|
7
|
-
import { getSettingsForCurrentUser } from "../settings/index.js";
|
|
8
7
|
import { AutomationsQuery } from "./automationsQuery.js";
|
|
9
8
|
export class TigerWorkspaceAutomationService {
|
|
10
9
|
authCall;
|
|
@@ -15,7 +14,6 @@ export class TigerWorkspaceAutomationService {
|
|
|
15
14
|
}
|
|
16
15
|
getAutomations = async (options) => {
|
|
17
16
|
const { loadUserData = false } = options ?? {};
|
|
18
|
-
const enableNewScheduledExport = await this.getEnableNewScheduledExport();
|
|
19
17
|
return this.authCall(async (client) => {
|
|
20
18
|
const result = await EntitiesApi_GetAllEntitiesAutomations(client.axios, client.basePath, {
|
|
21
19
|
workspaceId: this.workspaceId,
|
|
@@ -29,7 +27,7 @@ export class TigerWorkspaceAutomationService {
|
|
|
29
27
|
origin: "NATIVE", // ensures that no inherited automations are returned
|
|
30
28
|
});
|
|
31
29
|
const automations = result.data?.data || [];
|
|
32
|
-
return automations.map((automation) => convertAutomationFromBackend(automation, result.data.included ?? []
|
|
30
|
+
return automations.map((automation) => convertAutomationFromBackend(automation, result.data.included ?? []));
|
|
33
31
|
});
|
|
34
32
|
};
|
|
35
33
|
getAutomationsQuery = (options) => {
|
|
@@ -37,7 +35,6 @@ export class TigerWorkspaceAutomationService {
|
|
|
37
35
|
};
|
|
38
36
|
getAutomation = async (id, options) => {
|
|
39
37
|
const { loadUserData = false } = options ?? {};
|
|
40
|
-
const enableNewScheduledExport = await this.getEnableNewScheduledExport();
|
|
41
38
|
return this.authCall(async (client) => {
|
|
42
39
|
const result = await EntitiesApi_GetEntityAutomations(client.axios, client.basePath, {
|
|
43
40
|
objectId: id,
|
|
@@ -50,14 +47,13 @@ export class TigerWorkspaceAutomationService {
|
|
|
50
47
|
...(loadUserData ? ["createdBy", "modifiedBy"] : []),
|
|
51
48
|
],
|
|
52
49
|
});
|
|
53
|
-
return convertAutomationFromBackend(result.data.data, result.data.included ?? []
|
|
50
|
+
return convertAutomationFromBackend(result.data.data, result.data.included ?? []);
|
|
54
51
|
});
|
|
55
52
|
};
|
|
56
53
|
createAutomation = async (automation, options, widgetExecution, overrides) => {
|
|
57
54
|
const { loadUserData = false } = options ?? {};
|
|
58
|
-
const enableNewScheduledExport = await this.getEnableNewScheduledExport();
|
|
59
55
|
return this.authCall(async (client) => {
|
|
60
|
-
const convertedAutomation = convertAutomationToBackend(automation,
|
|
56
|
+
const convertedAutomation = convertAutomationToBackend(automation, widgetExecution, overrides);
|
|
61
57
|
const result = await EntitiesApi_CreateEntityAutomations(client.axios, client.basePath, {
|
|
62
58
|
workspaceId: this.workspaceId,
|
|
63
59
|
jsonApiAutomationInDocument: {
|
|
@@ -71,14 +67,13 @@ export class TigerWorkspaceAutomationService {
|
|
|
71
67
|
...(loadUserData ? ["createdBy", "modifiedBy"] : []),
|
|
72
68
|
],
|
|
73
69
|
});
|
|
74
|
-
return convertAutomationFromBackend(result.data.data, result.data.included ?? []
|
|
70
|
+
return convertAutomationFromBackend(result.data.data, result.data.included ?? []);
|
|
75
71
|
});
|
|
76
72
|
};
|
|
77
73
|
updateAutomation = async (automation, options, widgetExecution, overrides) => {
|
|
78
74
|
const { loadUserData = false } = options ?? {};
|
|
79
|
-
const enableNewScheduledExport = await this.getEnableNewScheduledExport();
|
|
80
75
|
return this.authCall(async (client) => {
|
|
81
|
-
const convertedAutomation = convertAutomationToBackend(automation,
|
|
76
|
+
const convertedAutomation = convertAutomationToBackend(automation, widgetExecution, overrides);
|
|
82
77
|
const result = await EntitiesApi_UpdateEntityAutomations(client.axios, client.basePath, {
|
|
83
78
|
objectId: automation.id,
|
|
84
79
|
workspaceId: this.workspaceId,
|
|
@@ -93,7 +88,7 @@ export class TigerWorkspaceAutomationService {
|
|
|
93
88
|
...(loadUserData ? ["createdBy", "modifiedBy"] : []),
|
|
94
89
|
],
|
|
95
90
|
});
|
|
96
|
-
return convertAutomationFromBackend(result.data.data, result.data.included ?? []
|
|
91
|
+
return convertAutomationFromBackend(result.data.data, result.data.included ?? []);
|
|
97
92
|
});
|
|
98
93
|
};
|
|
99
94
|
deleteAutomation(id) {
|
|
@@ -166,8 +161,4 @@ export class TigerWorkspaceAutomationService {
|
|
|
166
161
|
});
|
|
167
162
|
});
|
|
168
163
|
}
|
|
169
|
-
getEnableNewScheduledExport = async () => {
|
|
170
|
-
const userSettings = await getSettingsForCurrentUser(this.authCall, this.workspaceId);
|
|
171
|
-
return userSettings.enableNewScheduledExport ?? true;
|
|
172
|
-
};
|
|
173
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionResult.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/execution/executionResult.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"executionResult.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/execution/executionResult.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,oBAAoB,EAM5B,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EAEd,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kCAAkC,EAEvC,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EAG1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEH,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAG5B,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAE7F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAmE3E,qBAAa,oBAAqB,YAAW,gBAAgB;IAOrD,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,UAAU,EAAE,oBAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,QAAQ,CAAC,YAAY,EAAE,oBAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa;aACd,OAAO,CAAC;aACR,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAbvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,SAAgB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,YACqB,QAAQ,EAAE,2BAA2B,EACtC,UAAU,EAAE,oBAAoB,EAC/B,gBAAgB,EAAE,iBAAiB,EAC3C,YAAY,EAAE,oBAAoB,EAC1B,aAAa,EAAE,aAAa,EAC7B,OAAO,CAAC,SAAmB,EAC3B,MAAM,CAAC,yBAAa,EACnB,iBAAiB,CAAC,oBAAQ,EAS9C;IAEM,UAAU,4CAWf;IAEW,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAczC;IAEY,eAAe,CAAC,cAAc,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA4BtF;IAEY,eAAe,CAAC,cAAc,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA6CtF;IAEY,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiCtG;IAEY,iBAAiB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0C9F;IAEY,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAmB5E;IAEY,mBAAmB,CAAC,MAAM,EAAE,kCAAkC,GAAG,OAAO,CAAC,cAAc,CAAC,CA0BpG;IAEM,SAAS,IAAI,kBAAkB,CAKrC;IAEY,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAuElE;IAEM,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAE9C;IAEM,WAAW,IAAI,MAAM,CAE3B;IAEM,QAAQ,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,UAAU,CAiBhB;IAEF,OAAO,CAAC,6BAA6B;CAexC"}
|
|
@@ -25,6 +25,14 @@ const TABULAR_EXPORT_FORMATS = ["CSV", "XLSX", "HTML", "PDF"];
|
|
|
25
25
|
function isTabularExportFormat(format = "") {
|
|
26
26
|
return TABULAR_EXPORT_FORMATS.includes(format);
|
|
27
27
|
}
|
|
28
|
+
function buildTabularExportExecution(resultId, result, title) {
|
|
29
|
+
const customOverride = resolveCustomOverride(result.dimensions, result.definition);
|
|
30
|
+
return {
|
|
31
|
+
executionResult: resultId,
|
|
32
|
+
title,
|
|
33
|
+
customOverride: augmentCustomOverrideWithNormalizedKeys(customOverride, result.definition),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
28
36
|
function sanitizeOffset(offset) {
|
|
29
37
|
return offset.map((offsetItem = 0) => offsetItem);
|
|
30
38
|
}
|
|
@@ -245,6 +253,20 @@ export class TigerExecutionResult {
|
|
|
245
253
|
visualizationObject: options.visualizationObjectId,
|
|
246
254
|
visualizationObjectCustomFilters: options.visualizationObjectCustomFilters,
|
|
247
255
|
};
|
|
256
|
+
// For multi-layer geo visualizations the export ships one sheet/file per layer. The main
|
|
257
|
+
// layer is this result (index 0); the additional layers come pre-executed in the config.
|
|
258
|
+
// When executions is present the backend ignores the top-level executionResult/customOverride.
|
|
259
|
+
if (options.additionalExecutions?.length) {
|
|
260
|
+
payload.executions = [
|
|
261
|
+
{ executionResult: this._resultId, title: options.title, customOverride: augmented },
|
|
262
|
+
...options.additionalExecutions.flatMap(({ executionResult, title }) => {
|
|
263
|
+
const layerResultId = executionResult.resultId();
|
|
264
|
+
return layerResultId
|
|
265
|
+
? [buildTabularExportExecution(layerResultId, executionResult, title)]
|
|
266
|
+
: [];
|
|
267
|
+
}),
|
|
268
|
+
];
|
|
269
|
+
}
|
|
248
270
|
return this.authCall(async (client) => {
|
|
249
271
|
const tabularExport = await ExportApi_CreateTabularExport(client.axios, client.basePath, {
|
|
250
272
|
workspaceId: this.workspace,
|
|
@@ -442,6 +442,16 @@ function convertUserContext(userContext) {
|
|
|
442
442
|
view: {
|
|
443
443
|
dashboard: {
|
|
444
444
|
id: objRefToString(userContext.view.dashboard.ref),
|
|
445
|
+
...(userContext.view.dashboard.title
|
|
446
|
+
? { title: userContext.view.dashboard.title }
|
|
447
|
+
: {}),
|
|
448
|
+
...(userContext.view.dashboard.filters?.length
|
|
449
|
+
? {
|
|
450
|
+
// Filter `title` is display-only (drives the context indicator);
|
|
451
|
+
// the backend filter models reject unknown fields.
|
|
452
|
+
filters: userContext.view.dashboard.filters.map(({ title: _title, ...filter }) => filter),
|
|
453
|
+
}
|
|
454
|
+
: {}),
|
|
445
455
|
widgets: userContext.view.dashboard.widgets.map((w) => ({
|
|
446
456
|
title: w.title,
|
|
447
457
|
widgetId: objRefToString(w.widgetRef),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IUserWorkspaceSettings, type IWorkspaceSettings, type IWorkspaceSettingsService } from "@gooddata/sdk-backend-spi";
|
|
2
|
-
import { type DashboardFiltersApplyMode, type IActiveCalendars, type IAiRateLimit, type IAlertDefault, type IDefaultExportTemplate, type IFiscalYear, type ISeparators } from "@gooddata/sdk-model";
|
|
2
|
+
import { type DashboardFiltersApplyMode, type IActiveCalendars, type IAiRateLimit, type IAlertDefault, type IDefaultExportTemplate, type IFiscalYear, type ISeparators, type ObjRef } from "@gooddata/sdk-model";
|
|
3
3
|
import { type TigerAuthenticatedCallGuard, type TigerSettingsType } from "../../../types/index.js";
|
|
4
4
|
import { TigerSettingsService } from "../../settings/settings.js";
|
|
5
5
|
export declare class TigerWorkspaceSettings extends TigerSettingsService<IWorkspaceSettings> implements IWorkspaceSettingsService {
|
|
@@ -36,8 +36,15 @@ export declare class TigerWorkspaceSettings extends TigerSettingsService<IWorksp
|
|
|
36
36
|
setExportCsvCustomDelimiter(delimiter: string): Promise<void>;
|
|
37
37
|
deleteEnableDrillToUrlByDefault(): Promise<void>;
|
|
38
38
|
deleteExportCsvCustomDelimiter(): Promise<void>;
|
|
39
|
-
setTheme(
|
|
40
|
-
setColorPalette(
|
|
39
|
+
setTheme(activeTheme: string | ObjRef): Promise<void>;
|
|
40
|
+
setColorPalette(activeColorPalette: string | ObjRef): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Build the active-styling setting content from a reference. A bare id string (or an untyped/org-typed
|
|
43
|
+
* reference) is treated as organization-scoped; only a reference explicitly typed as the workspace scope
|
|
44
|
+
* activates the workspace collection. The scope must be explicit so the id resolves against the right
|
|
45
|
+
* scope with no cross-scope fallback.
|
|
46
|
+
*/
|
|
47
|
+
private resolveActiveStyleContent;
|
|
41
48
|
deleteTheme(): Promise<any>;
|
|
42
49
|
deleteColorPalette(): Promise<any>;
|
|
43
50
|
deleteMetricFormatOverride(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/settings/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/workspace/settings/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,14 @@ import { isLiveFeatures, isStaticFeatures } from "@gooddata/api-client-tiger";
|
|
|
3
3
|
import { ActionsApi_WorkspaceResolveAllSettings } from "@gooddata/api-client-tiger/endpoints/actions";
|
|
4
4
|
import { EntitiesApi_CreateEntityWorkspaceSettings, EntitiesApi_DeleteEntityWorkspaceSettings, EntitiesApi_GetAllEntitiesWorkspaceSettings, EntitiesApi_GetEntityWorkspaces, EntitiesApi_UpdateEntityWorkspaceSettings, } from "@gooddata/api-client-tiger/endpoints/entitiesObjects";
|
|
5
5
|
import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/profile";
|
|
6
|
+
import { isIdentifierRef, } from "@gooddata/sdk-model";
|
|
6
7
|
import { LIB_VERSION } from "../../../__version.js";
|
|
7
8
|
import { convertDateFilterConfig, } from "../../../convertors/fromBackend/DateFilterConfigurationConverter.js";
|
|
8
9
|
import { unwrapSettingContent } from "../../../convertors/fromBackend/SettingsConverter.js";
|
|
10
|
+
import { objRefToIdentifier } from "../../../utils/api.js";
|
|
9
11
|
import { TigerFeaturesService, getControlledFeatureRollout, getOrganizationTier, } from "../../features/index.js";
|
|
10
12
|
import { mapTypeToKey } from "../../settings/mapping.js";
|
|
13
|
+
import { invalidateSettingsResponses, trackSettingsResponse } from "../../settings/responseCacheCoherence.js";
|
|
11
14
|
import { TigerSettingsService } from "../../settings/settings.js";
|
|
12
15
|
import { DefaultUserSettings } from "../../uiSettings.js";
|
|
13
16
|
import { GET_OPTIMIZED_WORKSPACE_PARAMS } from "../constants.js";
|
|
@@ -128,11 +131,32 @@ export class TigerWorkspaceSettings extends TigerSettingsService {
|
|
|
128
131
|
async deleteExportCsvCustomDelimiter() {
|
|
129
132
|
return this.deleteSettingByType("EXPORT_CSV_CUSTOM_DELIMITER");
|
|
130
133
|
}
|
|
131
|
-
async setTheme(
|
|
132
|
-
return this.setSetting("ACTIVE_THEME",
|
|
133
|
-
}
|
|
134
|
-
async setColorPalette(
|
|
135
|
-
return this.setSetting("ACTIVE_COLOR_PALETTE",
|
|
134
|
+
async setTheme(activeTheme) {
|
|
135
|
+
return this.setSetting("ACTIVE_THEME", this.resolveActiveStyleContent(activeTheme, "theme", "workspaceTheme"));
|
|
136
|
+
}
|
|
137
|
+
async setColorPalette(activeColorPalette) {
|
|
138
|
+
return this.setSetting("ACTIVE_COLOR_PALETTE", this.resolveActiveStyleContent(activeColorPalette, "colorPalette", "workspaceColorPalette"));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build the active-styling setting content from a reference. A bare id string (or an untyped/org-typed
|
|
142
|
+
* reference) is treated as organization-scoped; only a reference explicitly typed as the workspace scope
|
|
143
|
+
* activates the workspace collection. The scope must be explicit so the id resolves against the right
|
|
144
|
+
* scope with no cross-scope fallback.
|
|
145
|
+
*/
|
|
146
|
+
resolveActiveStyleContent(ref, organizationType, workspaceType) {
|
|
147
|
+
if (typeof ref === "string") {
|
|
148
|
+
return { id: ref, type: organizationType };
|
|
149
|
+
}
|
|
150
|
+
const id = objRefToIdentifier(ref, this.authCall);
|
|
151
|
+
const refType = isIdentifierRef(ref) ? ref.type : undefined;
|
|
152
|
+
// A bare / uri / untyped reference defaults to the organization scope. A reference whose type is set
|
|
153
|
+
// but is neither the organization nor the workspace scope for this kind is a caller error - reject it
|
|
154
|
+
// rather than silently reinterpreting it as organization-scoped.
|
|
155
|
+
if (refType && refType !== organizationType && refType !== workspaceType) {
|
|
156
|
+
throw new Error(`Cannot set active ${organizationType}: reference type "${refType}" is neither ` +
|
|
157
|
+
`"${organizationType}" nor "${workspaceType}".`);
|
|
158
|
+
}
|
|
159
|
+
return { id, type: refType === workspaceType ? workspaceType : organizationType };
|
|
136
160
|
}
|
|
137
161
|
async deleteTheme() {
|
|
138
162
|
return this.deleteSettingByType("ACTIVE_THEME");
|
|
@@ -154,7 +178,7 @@ export class TigerWorkspaceSettings extends TigerSettingsService {
|
|
|
154
178
|
}));
|
|
155
179
|
}
|
|
156
180
|
async updateSetting(type, id, content) {
|
|
157
|
-
|
|
181
|
+
const result = await this.authCall(async (client) => EntitiesApi_UpdateEntityWorkspaceSettings(client.axios, client.basePath, {
|
|
158
182
|
workspaceId: this.workspace,
|
|
159
183
|
objectId: id,
|
|
160
184
|
jsonApiWorkspaceSettingInDocument: {
|
|
@@ -168,9 +192,11 @@ export class TigerWorkspaceSettings extends TigerSettingsService {
|
|
|
168
192
|
},
|
|
169
193
|
},
|
|
170
194
|
}));
|
|
195
|
+
await invalidateSettingsResponses(this.authCall);
|
|
196
|
+
return result;
|
|
171
197
|
}
|
|
172
198
|
async createSetting(type, id, content) {
|
|
173
|
-
|
|
199
|
+
const result = await this.authCall(async (client) => EntitiesApi_CreateEntityWorkspaceSettings(client.axios, client.basePath, {
|
|
174
200
|
workspaceId: this.workspace,
|
|
175
201
|
jsonApiWorkspaceSettingPostOptionalIdDocument: {
|
|
176
202
|
data: {
|
|
@@ -183,14 +209,26 @@ export class TigerWorkspaceSettings extends TigerSettingsService {
|
|
|
183
209
|
},
|
|
184
210
|
},
|
|
185
211
|
}));
|
|
212
|
+
await invalidateSettingsResponses(this.authCall);
|
|
213
|
+
return result;
|
|
186
214
|
}
|
|
187
215
|
async deleteSettingByType(type) {
|
|
188
216
|
const settings = await this.getSettingByType(type);
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
217
|
+
let deleted = false;
|
|
218
|
+
try {
|
|
219
|
+
for (const setting of settings.data.data) {
|
|
220
|
+
await this.authCall(async (client) => EntitiesApi_DeleteEntityWorkspaceSettings(client.axios, client.basePath, {
|
|
221
|
+
workspaceId: this.workspace,
|
|
222
|
+
objectId: setting.id,
|
|
223
|
+
}));
|
|
224
|
+
deleted = true;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
// A failure partway still leaves earlier deletions persisted — invalidate for those.
|
|
229
|
+
if (deleted) {
|
|
230
|
+
await invalidateSettingsResponses(this.authCall);
|
|
231
|
+
}
|
|
194
232
|
}
|
|
195
233
|
}
|
|
196
234
|
}
|
|
@@ -209,10 +247,10 @@ function resolveCurrencyFormatOverride(metricFormatOverride) {
|
|
|
209
247
|
* @internal
|
|
210
248
|
*/
|
|
211
249
|
async function resolveSettings(authCall, workspace, excludeUserSettings = false) {
|
|
212
|
-
const { data } = await authCall(async (client) => ActionsApi_WorkspaceResolveAllSettings(client.axios, client.basePath, {
|
|
250
|
+
const { data } = await authCall(async (client) => trackSettingsResponse(client.axios, `ws:${workspace}:${excludeUserSettings ? "excludeUser" : "withUser"}`, (requestOptions) => ActionsApi_WorkspaceResolveAllSettings(client.axios, client.basePath, {
|
|
213
251
|
workspaceId: workspace,
|
|
214
252
|
excludeUserSettings: excludeUserSettings || undefined,
|
|
215
|
-
}));
|
|
253
|
+
}, requestOptions)));
|
|
216
254
|
const settings = data.reduce((result, setting) => {
|
|
217
255
|
const key = mapTypeToKey(setting.type, setting.id);
|
|
218
256
|
if (key === "dateFilterConfig") {
|