@esri/solution-simple-types 6.0.2-alpha.24 → 6.0.2-alpha.250423
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/package.json +3 -3
- package/dist/cjs/dashboard.d.ts +0 -93
- package/dist/cjs/dashboard.js +0 -351
- package/dist/cjs/dashboard.js.map +0 -1
- package/dist/cjs/helpers/convert-item-to-template.d.ts +0 -34
- package/dist/cjs/helpers/convert-item-to-template.js +0 -199
- package/dist/cjs/helpers/convert-item-to-template.js.map +0 -1
- package/dist/cjs/helpers/create-item-from-template.d.ts +0 -17
- package/dist/cjs/helpers/create-item-from-template.js +0 -145
- package/dist/cjs/helpers/create-item-from-template.js.map +0 -1
- package/dist/cjs/helpers/notebook-helpers.d.ts +0 -19
- package/dist/cjs/helpers/notebook-helpers.js +0 -25
- package/dist/cjs/helpers/notebook-helpers.js.map +0 -1
- package/dist/cjs/helpers/quickcapture-helpers.d.ts +0 -18
- package/dist/cjs/helpers/quickcapture-helpers.js +0 -23
- package/dist/cjs/helpers/quickcapture-helpers.js.map +0 -1
- package/dist/cjs/helpers/simple-type-helpers.d.ts +0 -18
- package/dist/cjs/helpers/simple-type-helpers.js +0 -23
- package/dist/cjs/helpers/simple-type-helpers.js.map +0 -1
- package/dist/cjs/helpers/update-notebook-data.d.ts +0 -17
- package/dist/cjs/helpers/update-notebook-data.js +0 -28
- package/dist/cjs/helpers/update-notebook-data.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -27
- package/dist/cjs/index.js +0 -37
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/notebook.d.ts +0 -73
- package/dist/cjs/notebook.js +0 -164
- package/dist/cjs/notebook.js.map +0 -1
- package/dist/cjs/oic.d.ts +0 -53
- package/dist/cjs/oic.js +0 -170
- package/dist/cjs/oic.js.map +0 -1
- package/dist/cjs/quickcapture.d.ts +0 -75
- package/dist/cjs/quickcapture.js +0 -143
- package/dist/cjs/quickcapture.js.map +0 -1
- package/dist/cjs/simple-types.d.ts +0 -56
- package/dist/cjs/simple-types.js +0 -94
- package/dist/cjs/simple-types.js.map +0 -1
- package/dist/cjs/webmap.d.ts +0 -102
- package/dist/cjs/webmap.js +0 -314
- package/dist/cjs/webmap.js.map +0 -1
- package/dist/cjs/webmappingapplication.d.ts +0 -176
- package/dist/cjs/webmappingapplication.js +0 -661
- package/dist/cjs/webmappingapplication.js.map +0 -1
- package/dist/cjs/workforce.d.ts +0 -34
- package/dist/cjs/workforce.js +0 -45
- package/dist/cjs/workforce.js.map +0 -1
- package/dist/esm/dashboard.d.ts +0 -93
- package/dist/esm/dashboard.js +0 -338
- package/dist/esm/dashboard.js.map +0 -1
- package/dist/esm/helpers/convert-item-to-template.d.ts +0 -34
- package/dist/esm/helpers/convert-item-to-template.js +0 -193
- package/dist/esm/helpers/convert-item-to-template.js.map +0 -1
- package/dist/esm/helpers/create-item-from-template.d.ts +0 -17
- package/dist/esm/helpers/create-item-from-template.js +0 -140
- package/dist/esm/helpers/create-item-from-template.js.map +0 -1
- package/dist/esm/helpers/notebook-helpers.d.ts +0 -19
- package/dist/esm/helpers/notebook-helpers.js +0 -21
- package/dist/esm/helpers/notebook-helpers.js.map +0 -1
- package/dist/esm/helpers/quickcapture-helpers.d.ts +0 -18
- package/dist/esm/helpers/quickcapture-helpers.js +0 -20
- package/dist/esm/helpers/quickcapture-helpers.js.map +0 -1
- package/dist/esm/helpers/simple-type-helpers.d.ts +0 -18
- package/dist/esm/helpers/simple-type-helpers.js +0 -20
- package/dist/esm/helpers/simple-type-helpers.js.map +0 -1
- package/dist/esm/helpers/update-notebook-data.d.ts +0 -17
- package/dist/esm/helpers/update-notebook-data.js +0 -24
- package/dist/esm/helpers/update-notebook-data.js.map +0 -1
- package/dist/esm/index.d.ts +0 -27
- package/dist/esm/index.js +0 -28
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/notebook.d.ts +0 -73
- package/dist/esm/notebook.js +0 -153
- package/dist/esm/notebook.js.map +0 -1
- package/dist/esm/oic.d.ts +0 -53
- package/dist/esm/oic.js +0 -162
- package/dist/esm/oic.js.map +0 -1
- package/dist/esm/quickcapture.d.ts +0 -75
- package/dist/esm/quickcapture.js +0 -131
- package/dist/esm/quickcapture.js.map +0 -1
- package/dist/esm/simple-types.d.ts +0 -56
- package/dist/esm/simple-types.js +0 -86
- package/dist/esm/simple-types.js.map +0 -1
- package/dist/esm/webmap.d.ts +0 -102
- package/dist/esm/webmap.js +0 -301
- package/dist/esm/webmap.js.map +0 -1
- package/dist/esm/webmappingapplication.d.ts +0 -176
- package/dist/esm/webmappingapplication.js +0 -635
- package/dist/esm/webmappingapplication.js.map +0 -1
- package/dist/esm/workforce.d.ts +0 -34
- package/dist/esm/workforce.js +0 -39
- 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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"}
|