@esri/solution-simple-types 6.0.5-alpha.0 → 6.1.0-alpha.0

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 (91) hide show
  1. package/package.json +3 -3
  2. package/dist/cjs/dashboard.d.ts +0 -93
  3. package/dist/cjs/dashboard.js +0 -351
  4. package/dist/cjs/dashboard.js.map +0 -1
  5. package/dist/cjs/helpers/convert-item-to-template.d.ts +0 -34
  6. package/dist/cjs/helpers/convert-item-to-template.js +0 -199
  7. package/dist/cjs/helpers/convert-item-to-template.js.map +0 -1
  8. package/dist/cjs/helpers/create-item-from-template.d.ts +0 -17
  9. package/dist/cjs/helpers/create-item-from-template.js +0 -145
  10. package/dist/cjs/helpers/create-item-from-template.js.map +0 -1
  11. package/dist/cjs/helpers/notebook-helpers.d.ts +0 -19
  12. package/dist/cjs/helpers/notebook-helpers.js +0 -25
  13. package/dist/cjs/helpers/notebook-helpers.js.map +0 -1
  14. package/dist/cjs/helpers/quickcapture-helpers.d.ts +0 -18
  15. package/dist/cjs/helpers/quickcapture-helpers.js +0 -23
  16. package/dist/cjs/helpers/quickcapture-helpers.js.map +0 -1
  17. package/dist/cjs/helpers/simple-type-helpers.d.ts +0 -18
  18. package/dist/cjs/helpers/simple-type-helpers.js +0 -23
  19. package/dist/cjs/helpers/simple-type-helpers.js.map +0 -1
  20. package/dist/cjs/helpers/update-notebook-data.d.ts +0 -17
  21. package/dist/cjs/helpers/update-notebook-data.js +0 -28
  22. package/dist/cjs/helpers/update-notebook-data.js.map +0 -1
  23. package/dist/cjs/index.d.ts +0 -27
  24. package/dist/cjs/index.js +0 -37
  25. package/dist/cjs/index.js.map +0 -1
  26. package/dist/cjs/notebook.d.ts +0 -73
  27. package/dist/cjs/notebook.js +0 -164
  28. package/dist/cjs/notebook.js.map +0 -1
  29. package/dist/cjs/oic.d.ts +0 -53
  30. package/dist/cjs/oic.js +0 -170
  31. package/dist/cjs/oic.js.map +0 -1
  32. package/dist/cjs/quickcapture.d.ts +0 -75
  33. package/dist/cjs/quickcapture.js +0 -143
  34. package/dist/cjs/quickcapture.js.map +0 -1
  35. package/dist/cjs/simple-types.d.ts +0 -56
  36. package/dist/cjs/simple-types.js +0 -94
  37. package/dist/cjs/simple-types.js.map +0 -1
  38. package/dist/cjs/webmap.d.ts +0 -102
  39. package/dist/cjs/webmap.js +0 -314
  40. package/dist/cjs/webmap.js.map +0 -1
  41. package/dist/cjs/webmappingapplication.d.ts +0 -176
  42. package/dist/cjs/webmappingapplication.js +0 -661
  43. package/dist/cjs/webmappingapplication.js.map +0 -1
  44. package/dist/cjs/workforce.d.ts +0 -34
  45. package/dist/cjs/workforce.js +0 -45
  46. package/dist/cjs/workforce.js.map +0 -1
  47. package/dist/esm/dashboard.d.ts +0 -93
  48. package/dist/esm/dashboard.js +0 -338
  49. package/dist/esm/dashboard.js.map +0 -1
  50. package/dist/esm/helpers/convert-item-to-template.d.ts +0 -34
  51. package/dist/esm/helpers/convert-item-to-template.js +0 -193
  52. package/dist/esm/helpers/convert-item-to-template.js.map +0 -1
  53. package/dist/esm/helpers/create-item-from-template.d.ts +0 -17
  54. package/dist/esm/helpers/create-item-from-template.js +0 -140
  55. package/dist/esm/helpers/create-item-from-template.js.map +0 -1
  56. package/dist/esm/helpers/notebook-helpers.d.ts +0 -19
  57. package/dist/esm/helpers/notebook-helpers.js +0 -21
  58. package/dist/esm/helpers/notebook-helpers.js.map +0 -1
  59. package/dist/esm/helpers/quickcapture-helpers.d.ts +0 -18
  60. package/dist/esm/helpers/quickcapture-helpers.js +0 -20
  61. package/dist/esm/helpers/quickcapture-helpers.js.map +0 -1
  62. package/dist/esm/helpers/simple-type-helpers.d.ts +0 -18
  63. package/dist/esm/helpers/simple-type-helpers.js +0 -20
  64. package/dist/esm/helpers/simple-type-helpers.js.map +0 -1
  65. package/dist/esm/helpers/update-notebook-data.d.ts +0 -17
  66. package/dist/esm/helpers/update-notebook-data.js +0 -24
  67. package/dist/esm/helpers/update-notebook-data.js.map +0 -1
  68. package/dist/esm/index.d.ts +0 -27
  69. package/dist/esm/index.js +0 -28
  70. package/dist/esm/index.js.map +0 -1
  71. package/dist/esm/notebook.d.ts +0 -73
  72. package/dist/esm/notebook.js +0 -153
  73. package/dist/esm/notebook.js.map +0 -1
  74. package/dist/esm/oic.d.ts +0 -53
  75. package/dist/esm/oic.js +0 -162
  76. package/dist/esm/oic.js.map +0 -1
  77. package/dist/esm/quickcapture.d.ts +0 -75
  78. package/dist/esm/quickcapture.js +0 -131
  79. package/dist/esm/quickcapture.js.map +0 -1
  80. package/dist/esm/simple-types.d.ts +0 -56
  81. package/dist/esm/simple-types.js +0 -86
  82. package/dist/esm/simple-types.js.map +0 -1
  83. package/dist/esm/webmap.d.ts +0 -102
  84. package/dist/esm/webmap.js +0 -301
  85. package/dist/esm/webmap.js.map +0 -1
  86. package/dist/esm/webmappingapplication.d.ts +0 -176
  87. package/dist/esm/webmappingapplication.js +0 -635
  88. package/dist/esm/webmappingapplication.js.map +0 -1
  89. package/dist/esm/workforce.d.ts +0 -34
  90. package/dist/esm/workforce.js +0 -39
  91. package/dist/esm/workforce.js.map +0 -1
@@ -1,635 +0,0 @@
1
- /** @license
2
- * Copyright 2020 Esri
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import * as common from "@esri/solution-common";
17
- // ------------------------------------------------------------------------------------------------------------------ //
18
- /**
19
- * Converts a web mapping application item into a template.
20
- *
21
- * @param itemInfo Info about the item
22
- * @param destAuthentication Credentials for requests to the destination organization
23
- * @param srcAuthentication Credentials for requests to source items
24
- * @param templateDictionary Hash of key details used for variable replacement
25
- * @returns A promise that will resolve when the template has been created
26
- */
27
- export function convertItemToTemplate(itemTemplate, destAuthentication, srcAuthentication, templateDictionary) {
28
- return new Promise((resolve, reject) => {
29
- // Remove org base URL and app id, e.g.,
30
- // http://anOrg.maps.arcgis.com/apps/CrowdsourcePolling/index.html?appid=6fc5992522d34a6b5ce80d17835eea21
31
- // to
32
- // <placeholder(SERVER_NAME)>/apps/CrowdsourcePolling/index.html?appid={{<itemId>.id}}
33
- // Need to add placeholder server name because otherwise AGOL makes URL null
34
- let portalUrl = "";
35
- if (itemTemplate.item.url) {
36
- const templatizedUrl = itemTemplate.item.url;
37
- const iSep = templatizedUrl.indexOf("//");
38
- itemTemplate.item.url =
39
- common.placeholder(common.SERVER_NAME) + // add placeholder server name
40
- templatizedUrl.substring(templatizedUrl.indexOf("/", iSep + 2), templatizedUrl.lastIndexOf("=") + 1) +
41
- itemTemplate.item.id; // templatized id
42
- portalUrl = templatizedUrl.replace(templatizedUrl.substring(templatizedUrl.indexOf("/", iSep + 2)), "");
43
- }
44
- // Extract dependencies
45
- itemTemplate.dependencies = _extractDependencies(itemTemplate);
46
- // Set the folder
47
- common.setProp(itemTemplate, "data.folderId", "{{folderId}}");
48
- // Set the map or group after we've extracted them as dependencies
49
- _templatizeIdPaths(itemTemplate, [
50
- "data.map.itemId",
51
- "data.map.appProxy.mapItemId",
52
- "data.values.webmap",
53
- "data.values.group",
54
- ]);
55
- // force the appItemId to be pulled directly from the template item
56
- // this is to address solution.js #124
57
- _templatizeIdPath(itemTemplate, "data.appItemId", itemTemplate.itemId);
58
- setValues(itemTemplate, ["data.logo", "data.map.portalUrl", "data.portalUrl", "data.httpProxy.url"], common.placeholder(common.SERVER_NAME));
59
- common.setProp(itemTemplate, "data.geometryService", common.placeholder(common.GEOMETRY_SERVER_NAME));
60
- templatizeDatasources(itemTemplate, srcAuthentication, portalUrl, templateDictionary).then(() => {
61
- templatizeWidgets(itemTemplate, srcAuthentication, portalUrl, "data.widgetPool.widgets").then((_itemTemplate) => {
62
- templatizeWidgets(_itemTemplate, srcAuthentication, portalUrl, "data.widgetOnScreen.widgets", true).then((updatedItemTemplate) => {
63
- templatizeValues(updatedItemTemplate, srcAuthentication, portalUrl, "data.values").then((_updatedItemTemplate) => {
64
- resolve(_updatedItemTemplate);
65
- }, (e) => reject(common.fail(e)));
66
- }, (e) => reject(common.fail(e)));
67
- }, (e) => reject(common.fail(e)));
68
- }, (e) => reject(common.fail(e)));
69
- });
70
- }
71
- /**
72
- * Converts web mapping application datasources to variables for deployment
73
- *
74
- * @param itemTemplate The solution item template
75
- * @param authentication Credentials for requests
76
- * @param portalUrl Rest Url of the portal to perform the search
77
- * @param templateDictionary Hash of key details used for variable replacement
78
- * @returns A promise that will resolve with the created template
79
- */
80
- export function templatizeDatasources(itemTemplate, authentication, portalUrl, templateDictionary) {
81
- return new Promise((resolve, reject) => {
82
- const dataSources = common.getProp(itemTemplate, "data.dataSource.dataSources");
83
- if (dataSources && Object.keys(dataSources).length > 0) {
84
- const pendingRequests = new Array();
85
- Object.keys(dataSources).forEach((k) => {
86
- const ds = dataSources[k];
87
- common.setProp(ds, "portalUrl", common.placeholder(common.SERVER_NAME));
88
- const itemId = common.getProp(ds, "itemId");
89
- if (common.getProp(ds, "url")) {
90
- if (itemId) {
91
- const layerId = ds.url.substr(ds.url.lastIndexOf("/") + 1);
92
- common.cacheLayerInfo(layerId.toString(), itemId, ds.url, templateDictionary);
93
- ds.itemId = common.templatizeTerm(itemId, itemId, ".layer" + layerId + ".itemId");
94
- }
95
- const urlResults = findUrls(ds.url, portalUrl, [], [], authentication);
96
- pendingRequests.push(new Promise((resolveReq, rejectReq) => {
97
- handleServiceRequests(urlResults.serviceRequests, urlResults.requestUrls, urlResults.testString).then((response) => {
98
- ds.url = response;
99
- resolveReq();
100
- }, (e) => rejectReq(common.fail(e)));
101
- }));
102
- }
103
- else {
104
- if (itemId) {
105
- ds.itemId = common.templatizeTerm(itemId, itemId, ".itemId");
106
- }
107
- }
108
- });
109
- Promise.all(pendingRequests).then(() => resolve(itemTemplate), (e) => reject(common.fail(e)));
110
- }
111
- else {
112
- resolve(itemTemplate);
113
- }
114
- });
115
- }
116
- export function templatizeWidgets(itemTemplate, authentication, portalUrl, widgetPath, isOnScreen = false) {
117
- return new Promise((resolve, reject) => {
118
- // update widgets
119
- const widgets = common.getProp(itemTemplate, widgetPath) || [];
120
- let serviceRequests = [];
121
- let requestUrls = [];
122
- widgets.forEach((widget) => {
123
- /* istanbul ignore else */
124
- if (!isOnScreen && common.getProp(widget, "icon")) {
125
- setValues(widget, ["icon"], common.placeholder(common.SERVER_NAME));
126
- }
127
- const config = widget.config;
128
- if (config) {
129
- const sConfig = JSON.stringify(config);
130
- const urlResults = findUrls(sConfig, portalUrl, requestUrls, serviceRequests, authentication);
131
- widget.config = JSON.parse(urlResults.testString);
132
- serviceRequests = urlResults.serviceRequests;
133
- requestUrls = urlResults.requestUrls;
134
- }
135
- });
136
- if (serviceRequests.length > 0) {
137
- const sWidgets = JSON.stringify(widgets);
138
- handleServiceRequests(serviceRequests, requestUrls, sWidgets).then((response) => {
139
- common.setProp(itemTemplate, widgetPath, JSON.parse(response));
140
- resolve(itemTemplate);
141
- }, (e) => reject(common.fail(e)));
142
- }
143
- else {
144
- resolve(itemTemplate);
145
- }
146
- });
147
- }
148
- export function templatizeValues(itemTemplate, authentication, portalUrl, widgetPath) {
149
- return new Promise((resolve, reject) => {
150
- // update properties of values collection for web app templates
151
- let values = common.getProp(itemTemplate, widgetPath);
152
- let serviceRequests = [];
153
- let requestUrls = [];
154
- if (values) {
155
- if (common.getProp(values, "icon")) {
156
- setValues(values, ["icon"], common.placeholder(common.SERVER_NAME));
157
- }
158
- const sConfig = JSON.stringify(values);
159
- const urlResults = findUrls(sConfig, portalUrl, requestUrls, serviceRequests, authentication);
160
- values = JSON.parse(urlResults.testString);
161
- serviceRequests = urlResults.serviceRequests;
162
- requestUrls = urlResults.requestUrls;
163
- }
164
- if (serviceRequests.length > 0) {
165
- const sWidgets = JSON.stringify(values);
166
- handleServiceRequests(serviceRequests, requestUrls, sWidgets).then((response) => {
167
- common.setProp(itemTemplate, widgetPath, JSON.parse(response));
168
- resolve(itemTemplate);
169
- }, (e) => reject(common.fail(e)));
170
- }
171
- else {
172
- resolve(itemTemplate);
173
- }
174
- });
175
- }
176
- export function handleServiceRequests(serviceRequests, requestUrls, objString) {
177
- return new Promise((resolve, reject) => {
178
- if (serviceRequests && serviceRequests.length > 0) {
179
- let i = 0;
180
- Promise.all(serviceRequests).then((serviceResponses) => {
181
- serviceResponses.forEach((serviceResponse) => {
182
- if (common.getProp(serviceResponse, "serviceItemId")) {
183
- const serviceTemplate = "{{" +
184
- serviceResponse.serviceItemId +
185
- (serviceResponse.hasOwnProperty("id") ? ".layer" + serviceResponse.id : "") +
186
- ".url}}";
187
- objString = replaceUrl(objString, requestUrls[i], serviceTemplate, true);
188
- }
189
- i++;
190
- });
191
- resolve(objString);
192
- }, (e) => reject(common.fail(e)));
193
- }
194
- else {
195
- resolve(objString);
196
- }
197
- });
198
- }
199
- export function findUrls(testString, portalUrl, requestUrls, serviceRequests, authentication) {
200
- const options = {
201
- f: "json",
202
- authentication: authentication,
203
- };
204
- // test for URLs
205
- const results = testString.match(/(\bhttps?:\/\/[-A-Z0-9/._]*)/gim);
206
- if (results && results.length) {
207
- results.forEach((url) => {
208
- if (url.indexOf("NAServer") > -1) {
209
- testString = replaceUrl(testString, url, common.placeholder(common.NA_SERVER_NAME));
210
- }
211
- else if (url.indexOf("GeocodeServer") > -1) {
212
- testString = replaceUrl(testString, url, common.placeholder(common.GEOCODE_SERVER_NAME));
213
- }
214
- else if (portalUrl && url.indexOf(portalUrl) > -1) {
215
- testString = replaceUrl(testString, portalUrl, common.placeholder(common.SERVER_NAME));
216
- }
217
- else if (url.indexOf("FeatureServer") > -1) {
218
- if (requestUrls.indexOf(url) === -1) {
219
- requestUrls.push(url);
220
- serviceRequests.push(common.request(url, options));
221
- }
222
- }
223
- });
224
- }
225
- return {
226
- testString,
227
- requestUrls,
228
- serviceRequests,
229
- };
230
- }
231
- /**
232
- * Replace url with templatized url value
233
- *
234
- * @param obj can be a single url string or a stringified JSON object
235
- * @param url the current url we are testing for
236
- * @param newUrl the templatized url
237
- * @param validateFullUrl should only replace url when we have a full match.
238
- * This property is only relevant when the obj is a stringified JSON object.
239
- *
240
- * @returns the obj with any instances of the url replaced
241
- */
242
- export function replaceUrl(obj, url, newUrl, validateFullUrl = false) {
243
- const enforceFullUrl = validateFullUrl && obj.indexOf('"') > -1;
244
- const re = new RegExp(enforceFullUrl ? '"' + url + '"' : url, "gmi");
245
- return obj.replace(re, enforceFullUrl ? '"' + newUrl + '"' : newUrl);
246
- }
247
- export function setValues(itemTemplate, paths, base) {
248
- paths.forEach((path) => {
249
- const url = common.getProp(itemTemplate, path);
250
- if (url) {
251
- const subString = url.substring(url.indexOf("/", url.indexOf("//") + 2));
252
- common.setProp(itemTemplate, path, subString !== url ? base + subString : base);
253
- }
254
- });
255
- }
256
- export function fineTuneCreatedItem(originalTemplate, newlyCreatedItem, templateDictionary, destinationAuthentication) {
257
- return new Promise((resolve) => {
258
- // If this is a Web AppBuilder application, we will create a Code Attachment for downloading
259
- if (common.hasAnyKeyword(originalTemplate, ["WAB2D", "WAB3D", "Web AppBuilder"])) {
260
- // Update item so properties like appItemId can now be set now that we know the new apps ID
261
- const updateOptions = {
262
- id: newlyCreatedItem.itemId,
263
- url: newlyCreatedItem.item.url,
264
- data: newlyCreatedItem.data,
265
- };
266
- const updateDef = common.updateItem(updateOptions, destinationAuthentication);
267
- const itemInfo = {
268
- tags: originalTemplate.item.tags,
269
- title: originalTemplate.item.title,
270
- type: "Code Attachment",
271
- typeKeywords: ["Code", "Javascript", "Web Mapping Application"],
272
- relationshipType: "WMA2Code",
273
- originItemId: newlyCreatedItem.itemId,
274
- url: common.checkUrlPathTermination(common.replaceInTemplate(common.placeholder(common.SERVER_NAME), templateDictionary)) +
275
- "sharing/rest/content/items/" +
276
- newlyCreatedItem.itemId +
277
- "/package",
278
- };
279
- const createItemWithDataDef = common.createItemWithData(itemInfo, {}, destinationAuthentication, templateDictionary.folderId);
280
- Promise.all([updateDef, createItemWithDataDef]).then(() => resolve(null), () => resolve(null));
281
- }
282
- else {
283
- // Otherwise, nothing extra needed
284
- resolve(null);
285
- }
286
- });
287
- }
288
- // ------------------------------------------------------------------------------------------------------------------ //
289
- /**
290
- * Gets the ids of the dependencies of an AGOL webapp item.
291
- *
292
- * @param fullItem A webapp item whose dependencies are sought
293
- * @returns A promise that will resolve with list of dependent ids
294
- * @private
295
- */
296
- export function _extractDependencies(model) {
297
- let processor = _getGenericWebAppDependencies;
298
- /*
299
- if (common.hasTypeKeyword(model, "Story Map")) {
300
- processor = getStoryMapDependencies;
301
- }
302
- */
303
- if (common.hasAnyKeyword(model, ["WAB2D", "WAB3D", "Web AppBuilder"])) {
304
- processor = _getWABDependencies;
305
- }
306
- return processor(model);
307
- }
308
- /**
309
- * Generic Web App Dependencies
310
- *
311
- * @private
312
- */
313
- export function _getGenericWebAppDependencies(model) {
314
- const props = ["data.values.webmap", "data.values.group"];
315
- return common.getProps(model, props);
316
- }
317
- //TODO: function doc
318
- export function _getWABDependencies(model) {
319
- const deps = [];
320
- const v = common.getProp(model, "data.map.itemId");
321
- if (v) {
322
- deps.push(v);
323
- }
324
- const dataSources = common.getProp(model, "data.dataSource.dataSources");
325
- if (dataSources) {
326
- Object.keys(dataSources).forEach((k) => {
327
- const ds = dataSources[k];
328
- if (ds.itemId) {
329
- deps.push(ds.itemId);
330
- }
331
- });
332
- }
333
- return deps;
334
- }
335
- /**
336
- * Templatizes id properties for the paths provided
337
- *
338
- * @param itemTemplate The solution item template
339
- * @param paths A list of property paths that contain ids
340
- * @private
341
- */
342
- export function _templatizeIdPaths(itemTemplate, paths) {
343
- paths.forEach((path) => {
344
- const id = common.getProp(itemTemplate, path);
345
- _templatizeIdPath(itemTemplate, path, id);
346
- });
347
- }
348
- /**
349
- * Templatizes id property for the path provided
350
- *
351
- * @param itemTemplate The solution item template
352
- * @param path A path to an id property
353
- * @param id The base id to use when templatizing
354
- * @private
355
- */
356
- export function _templatizeIdPath(itemTemplate, path, id) {
357
- common.setProp(itemTemplate, path, common.templatizeTerm(id, id, ".itemId"));
358
- }
359
- /**
360
- * Templatize field references for datasources and widgets.
361
- *
362
- * @param solutionTemplate The solution item template
363
- * @param datasourceInfos A list of datasource info objects that contain key values to templatize field references
364
- * @returns The solutionTemplate with templatized field references
365
- */
366
- export function postProcessFieldReferences(solutionTemplate, datasourceInfos) {
367
- // handle datasources common for WAB apps
368
- const dataSources = common.getProp(solutionTemplate, "data.dataSource.dataSources");
369
- if (dataSources && Object.keys(dataSources).length > 0) {
370
- Object.keys(dataSources).forEach((k) => {
371
- const ds = dataSources[k];
372
- dataSources[k] = _templatizeObject(ds, datasourceInfos);
373
- });
374
- common.setProp(solutionTemplate, "data.dataSource.dataSources", dataSources);
375
- }
376
- // handle widgets common for WAB apps
377
- const paths = ["data.widgetPool.widgets", "data.widgetOnScreen.widgets"];
378
- paths.forEach((path) => {
379
- const widgets = common.getProp(solutionTemplate, path);
380
- if (widgets) {
381
- common.setProp(solutionTemplate, path, _templatizeObjectArray(widgets, datasourceInfos));
382
- }
383
- });
384
- // handle values common for web app templates
385
- const values = common.getProp(solutionTemplate, "data.values");
386
- if (values) {
387
- common.setProp(solutionTemplate, "data.values", _templatizeObject(values, datasourceInfos));
388
- }
389
- return solutionTemplate;
390
- }
391
- /**
392
- * Templatize field references for given dataSource from the web application.
393
- *
394
- * @param obj The dataSource or widget object from the web application.
395
- * @param datasourceInfos A list of datasource info objects that contain key values to templatize field references
396
- * @returns The dataSource with templatized field references
397
- * @private
398
- */
399
- export function _templatizeObject(obj, datasourceInfos, templatizeKeys = false) {
400
- obj = _prioritizedTests(obj, datasourceInfos, templatizeKeys);
401
- const replaceOrder = _getReplaceOrder(obj, datasourceInfos);
402
- replaceOrder.forEach((ds) => {
403
- obj = common.templatizeFieldReferences(obj, ds.fields, ds.basePath, templatizeKeys);
404
- });
405
- return obj;
406
- }
407
- /**
408
- * Templatize field references from an array of various objects from the web application.
409
- *
410
- * @param objects A list of widgets or objects from the web application that may contain field references.
411
- * @param datasourceInfos A list of datasource info objects that contain key values to templatize field references
412
- * @returns The widgets with templatized field references
413
- * @private
414
- */
415
- export function _templatizeObjectArray(objects, datasourceInfos) {
416
- const updateKeyObjects = ["SmartEditor", "Screening"];
417
- return objects.map((obj) => {
418
- // only templatize the config and lower
419
- if (obj.config) {
420
- const templatizeKeys = updateKeyObjects.indexOf(obj.name) > -1;
421
- obj.config = _templatizeObject(obj.config, datasourceInfos, templatizeKeys);
422
- }
423
- return obj;
424
- });
425
- }
426
- /**
427
- * Gets an order for testing wit the various datasource info objects against the widget or dataSource.
428
- * A widget or dataSource that contain a layers url or webmap layer id are more likely
429
- * to have field references from that layer.
430
- *
431
- * @param obj The dataSource or widget object from the web application.
432
- * @param datasourceInfos A list of datasource info objects that contain key values to templatize field references
433
- * @returns A list of datasourceInfo objects sorted based on the presence of a layers url or id
434
- * @private
435
- */
436
- export function _getReplaceOrder(obj, datasourceInfos) {
437
- const objString = JSON.stringify(obj);
438
- // If we don't find any layer url, web map layer id, service url, agol itemId then remove the datasource.
439
- const _datasourceInfos = datasourceInfos.filter((ds) => _getSortOrder(ds, objString) < 4);
440
- return _datasourceInfos.sort((a, b) => {
441
- return _getSortOrder(a, objString) - _getSortOrder(b, objString);
442
- });
443
- }
444
- /**
445
- * Determine an order for checking field names against a dataSource or widget.
446
- * Sort order preference is set in this order: layer url, web map layer id, service url, agol itemId
447
- *
448
- * @param datasourceInfo The datasource object with key properties about the service.
449
- * @param testString A stringified version of a widget or dataSource
450
- * @returns The prioritized order for testing
451
- * @private
452
- */
453
- export function _getSortOrder(datasourceInfo, testString) {
454
- const url = datasourceInfo.url;
455
- const itemId = datasourceInfo.itemId;
456
- const layerId = datasourceInfo.layerId;
457
- // if we have the url and the layerID and its found prioritize it first
458
- // else if we find the maps layer id prioritze it first
459
- let layerUrlTest;
460
- if (url && !isNaN(layerId)) {
461
- layerUrlTest = new RegExp(url.replace(/[.]/, ".layer" + layerId + "."), "gm");
462
- }
463
- if (layerUrlTest && layerUrlTest.test(testString)) {
464
- return 1;
465
- }
466
- else if (datasourceInfo.ids.length > 0) {
467
- if (datasourceInfo.ids.some((id) => {
468
- const layerMapIdTest = new RegExp(id, "gm");
469
- return layerMapIdTest.test(testString);
470
- })) {
471
- return 1;
472
- }
473
- }
474
- // if neither full layer url or map layer id are found...check to see if we can
475
- // find the base service url
476
- if (url) {
477
- const serviceUrlTest = new RegExp(url, "gm");
478
- if (serviceUrlTest.test(testString)) {
479
- return 2;
480
- }
481
- }
482
- // if none of the above see if we can find an AGOL item id reference
483
- if (itemId) {
484
- const itemIdTest = new RegExp(itemId, "gm");
485
- if (itemIdTest.test(testString)) {
486
- return 3;
487
- }
488
- }
489
- return 4;
490
- }
491
- /**
492
- * These tests will run prior to the tests associated with the higher level tests based on sort order.
493
- * The tests work more like cloning an object where we go through and review each individual property.
494
- * If we find a url or webmap layer id we will templatize the parent object that contains this property.
495
- * Many widgets will store one of these two properties in an object that will also contain various field references.
496
- *
497
- * @param obj The dataSource or widget object from the application
498
- * @param datasourceInfos A list of datasource info objects that contain key values to templatize field references
499
- * @returns An updated instance of the dataSource or widget with as many field references templatized as possible.
500
- * @private
501
- */
502
- export function _prioritizedTests(obj, datasourceInfos, templatizeKeys) {
503
- const objString = JSON.stringify(obj);
504
- const hasDatasources = datasourceInfos.filter((ds) => {
505
- let urlTest;
506
- if (ds.url && !isNaN(ds.layerId)) {
507
- urlTest = new RegExp(ds.url.replace(/[.]/, ".layer" + ds.layerId + "."), "gm");
508
- }
509
- let hasMapLayerId = false;
510
- if (ds.ids.length > 0) {
511
- hasMapLayerId = ds.ids.some((id) => {
512
- const idTest = new RegExp(id, "gm");
513
- return idTest.test(objString);
514
- });
515
- }
516
- if (hasMapLayerId || (urlTest && urlTest.test(objString))) {
517
- return ds;
518
- }
519
- });
520
- if (hasDatasources.length > 0) {
521
- hasDatasources.forEach((ds) => {
522
- // specific url reference is the most common
523
- obj = _templatizeParentByURL(obj, ds, templatizeKeys);
524
- if (ds.ids.length > 0) {
525
- // the second most common is to use the layerId from the webmap
526
- ds.ids.forEach((id) => {
527
- obj = _templatizeParentByWebMapLayerId(obj, ds, id, templatizeKeys);
528
- });
529
- }
530
- });
531
- }
532
- return obj;
533
- }
534
- /**
535
- * This is very close to common.cloneObject but will test if an object
536
- * has one of the datasource urls as a property. If it finds one it will
537
- * templatize it's parent based on the fields from that datasource
538
- *
539
- * @param obj The dataSource or widget object from the application
540
- * @param ds A datasourceInfo object to use for testing against the current dataSource or widget
541
- * @returns The updated instance of the object with as many field references templatized as possible
542
- * @private
543
- */
544
- export function _templatizeParentByURL(obj, ds, templatizeKeys) {
545
- let clone = {};
546
- const url = ds.url;
547
- const layerId = ds.layerId;
548
- let urlTest;
549
- if (url && !isNaN(layerId)) {
550
- urlTest = new RegExp(url.replace(/[.]/, ".layer" + layerId + "."), "gm");
551
- }
552
- if (Array.isArray(obj)) {
553
- clone = obj.map((c) => {
554
- return _templatizeParentByURL(c, ds, templatizeKeys);
555
- });
556
- }
557
- else if (typeof obj === "object") {
558
- for (const i in obj) {
559
- if (obj[i] != null && typeof obj[i] === "object") {
560
- clone[i] = _templatizeParentByURL(obj[i], ds, templatizeKeys);
561
- }
562
- else {
563
- if (urlTest && urlTest.test(obj[i])) {
564
- obj = common.templatizeFieldReferences(obj, ds.fields, ds.basePath, templatizeKeys);
565
- }
566
- clone[i] = obj[i];
567
- }
568
- }
569
- }
570
- else {
571
- clone = obj;
572
- }
573
- return clone;
574
- }
575
- /**
576
- * This is very close to common.cloneObject but will test if an object
577
- * has one of the datasource webmap layer ids as a property. If it finds one it will
578
- * templatize it's parent based on the fields from that datasource.
579
- *
580
- * @param obj The dataSource or widget object from the application
581
- * @param ds A datasourceInfo object to use for testing against the current dataSource or widget
582
- * @param id A webmap layer id to test with.
583
- * @returns The updated instance of the object with as many field references templatized as possible
584
- * @private
585
- */
586
- export function _templatizeParentByWebMapLayerId(obj, ds, id, templatizeKeys) {
587
- let clone = {};
588
- const idTest = new RegExp(id, "gm");
589
- if (Array.isArray(obj)) {
590
- clone = obj.map((c) => {
591
- return _templatizeParentByWebMapLayerId(c, ds, id, templatizeKeys);
592
- });
593
- }
594
- else if (typeof obj === "object") {
595
- for (const i in obj) {
596
- if (obj[i] !== null) {
597
- // In some web application templates they store a stringified version of an object that can
598
- // contain multiple layer references at a very high level on the main values collection.
599
- // This was causing many other more typical layer references to be set incorrectly as the first
600
- // layerId found in this high level string would be used against the main object.
601
- let parsedProp;
602
- try {
603
- parsedProp = JSON.parse(obj[i]);
604
- }
605
- catch (error) {
606
- parsedProp = undefined;
607
- }
608
- if (parsedProp && typeof parsedProp === "object") {
609
- clone[i] = JSON.stringify(_templatizeParentByWebMapLayerId(parsedProp, ds, id, templatizeKeys));
610
- }
611
- else if (typeof obj[i] === "object") {
612
- // some widgets store the layerId as a key to a collection of details that contain field references
613
- if (idTest.test(i) && templatizeKeys) {
614
- obj[i] = common.templatizeFieldReferences(obj[i], ds.fields, ds.basePath, templatizeKeys);
615
- }
616
- clone[i] = _templatizeParentByWebMapLayerId(obj[i], ds, id, templatizeKeys);
617
- }
618
- else {
619
- if (idTest.test(obj[i])) {
620
- obj = common.templatizeFieldReferences(obj, ds.fields, ds.basePath, templatizeKeys);
621
- }
622
- clone[i] = obj[i];
623
- }
624
- }
625
- else {
626
- clone[i] = obj[i];
627
- }
628
- }
629
- }
630
- else {
631
- clone = obj;
632
- }
633
- return clone;
634
- }
635
- //# sourceMappingURL=webmappingapplication.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webmappingapplication.js","sourceRoot":"","sources":["../../src/webmappingapplication.ts"],"names":[],"mappings":"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"}