@esri/solution-storymap 1.1.2 → 1.2.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.
- package/dist/esm/classic-storymap-processor.js +3 -3
- package/dist/esm/classic-storymap-processor.js.map +1 -1
- package/dist/esm/helpers/convert-storymap-to-template.js +15 -10
- package/dist/esm/helpers/convert-storymap-to-template.js.map +1 -1
- package/dist/esm/helpers/create-storymap-model-from-template.js +4 -4
- package/dist/esm/helpers/create-storymap-model-from-template.js.map +1 -1
- package/dist/esm/helpers/create-storymap.js +14 -14
- package/dist/esm/helpers/create-storymap.js.map +1 -1
- package/dist/esm/helpers/get-portal-env.js +2 -2
- package/dist/esm/helpers/get-portal-env.js.map +1 -1
- package/dist/esm/helpers/get-storymap-base-url.js +5 -5
- package/dist/esm/helpers/get-storymap-base-url.js.map +1 -1
- package/dist/esm/helpers/get-storymap-dependencies.js +4 -4
- package/dist/esm/helpers/get-storymap-dependencies.js.map +1 -1
- package/dist/esm/helpers/get-storymap-subdomain.js +2 -2
- package/dist/esm/helpers/get-storymap-subdomain.js.map +1 -1
- package/dist/esm/helpers/remap-webmap-keys.js +6 -7
- package/dist/esm/helpers/remap-webmap-keys.js.map +1 -1
- package/dist/esm/storymap-processor.d.ts +3 -2
- package/dist/esm/storymap-processor.js +23 -20
- package/dist/esm/storymap-processor.js.map +1 -1
- package/dist/node/classic-storymap-processor.js +4 -4
- package/dist/node/classic-storymap-processor.js.map +1 -1
- package/dist/node/helpers/convert-storymap-to-template.js +19 -14
- package/dist/node/helpers/convert-storymap-to-template.js.map +1 -1
- package/dist/node/helpers/create-storymap-model-from-template.js +8 -8
- package/dist/node/helpers/create-storymap-model-from-template.js.map +1 -1
- package/dist/node/helpers/create-storymap.js +16 -16
- package/dist/node/helpers/create-storymap.js.map +1 -1
- package/dist/node/helpers/get-portal-env.js +2 -2
- package/dist/node/helpers/get-portal-env.js.map +1 -1
- package/dist/node/helpers/get-storymap-base-url.js +6 -6
- package/dist/node/helpers/get-storymap-base-url.js.map +1 -1
- package/dist/node/helpers/get-storymap-dependencies.js +5 -5
- package/dist/node/helpers/get-storymap-dependencies.js.map +1 -1
- package/dist/node/helpers/get-storymap-subdomain.js +2 -2
- package/dist/node/helpers/get-storymap-subdomain.js.map +1 -1
- package/dist/node/helpers/remap-webmap-keys.js +7 -8
- package/dist/node/helpers/remap-webmap-keys.js.map +1 -1
- package/dist/node/index.js +2 -2
- package/dist/node/index.js.map +1 -1
- package/dist/node/storymap-processor.d.ts +3 -2
- package/dist/node/storymap-processor.js +29 -26
- package/dist/node/storymap-processor.js.map +1 -1
- package/dist/umd/storymap-processor.d.ts +3 -2
- package/dist/umd/storymap.umd.js +560 -558
- package/dist/umd/storymap.umd.js.map +1 -1
- package/dist/umd/storymap.umd.min.js +3 -3
- package/dist/umd/storymap.umd.min.js.map +1 -1
- package/package.json +14 -14
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import * as common from "@esri/solution-common";
|
|
22
22
|
// ------------------------------------------------------------------------------------------------------------------ //
|
|
23
23
|
export function convertItemToTemplate(solutionItemId, itemInfo) {
|
|
24
|
-
return new Promise(
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
25
|
if (isAStoryMap(itemInfo.type, itemInfo.url)) {
|
|
26
26
|
reject(common.fail("Classic StoryMap is not yet implemented"));
|
|
27
27
|
}
|
|
@@ -31,7 +31,7 @@ export function convertItemToTemplate(solutionItemId, itemInfo) {
|
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
export function createItemFromTemplate(template, templateDictionary, destinationAuthentication, itemProgressCallback) {
|
|
34
|
-
return new Promise(
|
|
34
|
+
return new Promise(resolve => {
|
|
35
35
|
if (isAStoryMap(template.type, template.item.url)) {
|
|
36
36
|
// Not yet implemented
|
|
37
37
|
itemProgressCallback(template.itemId, common.EItemProgressStatus.Failed, 0);
|
|
@@ -55,7 +55,7 @@ export function isAStoryMap(itemType, itemUrl) {
|
|
|
55
55
|
/\/apps\/StoryMap\//i,
|
|
56
56
|
/\/apps\/StoryMapBasic\//i,
|
|
57
57
|
/\/apps\/StorytellingSwipe\//i
|
|
58
|
-
].some(
|
|
58
|
+
].some(pattern => pattern.test(itemUrl));
|
|
59
59
|
}
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classic-storymap-processor.js","sourceRoot":"","sources":["../../src/classic-storymap-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,wHAAwH;AAExH,MAAM,UAAU,qBAAqB,CACnC,cAAsB,EACtB,QAAa;IAEb,OAAO,IAAI,OAAO,CAAuB,
|
|
1
|
+
{"version":3,"file":"classic-storymap-processor.js","sourceRoot":"","sources":["../../src/classic-storymap-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,wHAAwH;AAExH,MAAM,UAAU,qBAAqB,CACnC,cAAsB,EACtB,QAAa;IAEb,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;SAChE;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC;SACzD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAA8B,EAC9B,kBAAuB,EACvB,yBAA6C,EAC7C,oBAAkD;IAElD,OAAO,IAAI,OAAO,CAAyC,OAAO,CAAC,EAAE;QACnE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACjD,sBAAsB;YACtB,oBAAoB,CAClB,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,mBAAmB,CAAC,MAAM,EACjC,CAAC,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;aAAM;YACL,YAAY;YACZ,oBAAoB,CAClB,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,mBAAmB,CAAC,MAAM,EACjC,CAAC,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAgB;IAC5D,IAAI,OAAO,EAAE;QACX,OAAO;YACL,oBAAoB;YACpB,uBAAuB;YACvB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,8BAA8B;SAC/B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -24,26 +24,31 @@ import { getStoryMapDependencies } from "./get-storymap-dependencies";
|
|
|
24
24
|
* @param authentication
|
|
25
25
|
*/
|
|
26
26
|
export function convertStoryMapToTemplate(model) {
|
|
27
|
-
|
|
28
|
-
tmpl.key = propifyString(model.item.title)
|
|
29
|
-
|
|
27
|
+
const tmpl = createPlaceholderTemplate(model.item.id, model.item.type);
|
|
28
|
+
tmpl.key = `${propifyString(model.item.title)}_${createId("i")}`;
|
|
29
|
+
const clone = cloneObject(model);
|
|
30
30
|
tmpl.data = clone.data;
|
|
31
|
+
// We need to save these properties in order to restore them after hub.js deletes them
|
|
32
|
+
const created = clone.item.created;
|
|
33
|
+
const modified = clone.item.modified;
|
|
31
34
|
tmpl.item = normalizeSolutionTemplateItem(clone.item);
|
|
35
|
+
tmpl.item.created = created;
|
|
36
|
+
tmpl.item.modified = modified;
|
|
32
37
|
// templatize the url
|
|
33
38
|
tmpl.item.url = "{{storyMapTemplateUrl}}";
|
|
34
39
|
// Storymap Webmap Resources have complex keys that we need to remap
|
|
35
|
-
|
|
40
|
+
const webmapRemaps = remapWebmapKeys(tmpl.data.resources);
|
|
36
41
|
// and then replace in the rest of the structure
|
|
37
|
-
webmapRemaps.forEach(
|
|
42
|
+
webmapRemaps.forEach(remap => {
|
|
38
43
|
tmpl.data.resources[remap.updated] = cloneObject(tmpl.data.resources[remap.original]);
|
|
39
44
|
delete tmpl.data.resources[remap.original];
|
|
40
45
|
tmpl.data.nodes = deepStringReplace(tmpl.data.nodes, remap.original, remap.updated);
|
|
41
46
|
});
|
|
42
47
|
// use typeKeyword to mark item as published
|
|
43
48
|
// Note: Hub team decided to discard unpublished drafts when creating a template
|
|
44
|
-
|
|
49
|
+
const typeKeywords = tmpl.item.typeKeywords;
|
|
45
50
|
if (typeKeywords.indexOf(unPublishedChangesKW) !== -1) {
|
|
46
|
-
tmpl.item.typeKeywords = [publishedChangesKW].concat(tmpl.item.typeKeywords.filter(
|
|
51
|
+
tmpl.item.typeKeywords = [publishedChangesKW].concat(tmpl.item.typeKeywords.filter((word) => word !== unPublishedChangesKW));
|
|
47
52
|
}
|
|
48
53
|
tmpl.properties = {};
|
|
49
54
|
tmpl.properties.draftFileName = "draft_{{timestamp}}.json";
|
|
@@ -64,12 +69,12 @@ export function convertStoryMapToTemplate(model) {
|
|
|
64
69
|
// });
|
|
65
70
|
}
|
|
66
71
|
// Internal constants
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
const unPublishedChangesKW = "smstatusunpublishedchanges";
|
|
73
|
+
const publishedChangesKW = "smstatuspublished";
|
|
69
74
|
/**
|
|
70
75
|
* Template for oEmbed
|
|
71
76
|
*/
|
|
72
|
-
|
|
77
|
+
const oEmbedTemplates = {
|
|
73
78
|
oembed: {
|
|
74
79
|
version: "1.0",
|
|
75
80
|
type: "rich",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-storymap-to-template.js","sourceRoot":"","sources":["../../../src/helpers/convert-storymap-to-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,WAAW,EACX,aAAa,EACb,QAAQ,EACR,6BAA6B,EAC7B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAEL,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa;IAEb,
|
|
1
|
+
{"version":3,"file":"convert-storymap-to-template.js","sourceRoot":"","sources":["../../../src/helpers/convert-storymap-to-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ import { getPortalEnv } from "./get-portal-env";
|
|
|
22
22
|
import { getStoryMapBaseUrl } from "./get-storymap-base-url";
|
|
23
23
|
import { getStoryMapSubdomain } from "./get-storymap-subdomain";
|
|
24
24
|
export function createStoryMapModelFromTemplate(templateModel, settings, transforms, authentication) {
|
|
25
|
-
|
|
25
|
+
const timestamp = new Date().getTime();
|
|
26
26
|
// Keep these around in case we encounter some old templates
|
|
27
27
|
settings.agoenv = getPortalEnv(authentication);
|
|
28
28
|
settings.smBase = getStoryMapSubdomain(authentication);
|
|
@@ -31,9 +31,9 @@ export function createStoryMapModelFromTemplate(templateModel, settings, transfo
|
|
|
31
31
|
// they have `{{appid}}` in them so that the id of the created item
|
|
32
32
|
// will be interpolated into it after the item is created
|
|
33
33
|
settings.storyMapBaseUrl = getStoryMapBaseUrl(authentication);
|
|
34
|
-
settings.storyMapTemplateUrl = settings.storyMapBaseUrl
|
|
35
|
-
settings.storyMapThumnailUrl = authentication.portal
|
|
36
|
-
|
|
34
|
+
settings.storyMapTemplateUrl = `${settings.storyMapBaseUrl}/stories/{{appid}}`;
|
|
35
|
+
settings.storyMapThumnailUrl = `${authentication.portal}/content/items/{{appid}}/info/thumbnail/thumbnail.jpg/?w=400&d=${timestamp}`;
|
|
36
|
+
const model = interpolate(templateModel, settings, transforms);
|
|
37
37
|
return Promise.resolve(model);
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=create-storymap-model-from-template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-storymap-model-from-template.js","sourceRoot":"","sources":["../../../src/helpers/create-storymap-model-from-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,UAAU,+BAA+B,CAC7C,aAA6B,EAC7B,QAAa,EACb,UAAe,EACf,cAA2B;IAE3B,
|
|
1
|
+
{"version":3,"file":"create-storymap-model-from-template.js","sourceRoot":"","sources":["../../../src/helpers/create-storymap-model-from-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,UAAU,+BAA+B,CAC7C,aAA6B,EAC7B,QAAa,EACb,UAAe,EACf,cAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACvD,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,iEAAiE;IACjE,mEAAmE;IACnE,yDAAyD;IACzD,QAAQ,CAAC,eAAe,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC9D,QAAQ,CAAC,mBAAmB,GAAG,GAAG,QAAQ,CAAC,eAAe,oBAAoB,CAAC;IAC/E,QAAQ,CAAC,mBAAmB,GAAG,GAAG,cAAc,CAAC,MAAM,kEAAkE,SAAS,EAAE,CAAC;IAErI,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE/D,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -26,13 +26,13 @@ import { createItem, moveItem, addItemResource, updateItem } from "@esri/arcgis-
|
|
|
26
26
|
export function createStoryMap(model, folderId, options, authentication) {
|
|
27
27
|
// create an array to hold well-known resources
|
|
28
28
|
// that we have to generate from the passed in model
|
|
29
|
-
|
|
29
|
+
const resources = [];
|
|
30
30
|
// For unknown reasons we can not seem to spy on createItemInFolder
|
|
31
31
|
// so we will create-then-move for now
|
|
32
|
-
|
|
32
|
+
const createOptions = {
|
|
33
33
|
// need to serialize
|
|
34
34
|
item: serializeModel(model),
|
|
35
|
-
authentication
|
|
35
|
+
authentication
|
|
36
36
|
};
|
|
37
37
|
/* istanbul ignore else */
|
|
38
38
|
if (model.item.thumbnail) {
|
|
@@ -44,7 +44,7 @@ export function createStoryMap(model, folderId, options, authentication) {
|
|
|
44
44
|
}
|
|
45
45
|
// Create the item
|
|
46
46
|
return createItem(createOptions)
|
|
47
|
-
.then(
|
|
47
|
+
.then((createResponse) => {
|
|
48
48
|
// hold the id in the model
|
|
49
49
|
model.item.id = createResponse.id;
|
|
50
50
|
// and re-interpolate the item id
|
|
@@ -70,38 +70,38 @@ export function createStoryMap(model, folderId, options, authentication) {
|
|
|
70
70
|
return Promise.all([
|
|
71
71
|
updateItem({
|
|
72
72
|
item: serializeModel(model),
|
|
73
|
-
authentication
|
|
73
|
+
authentication
|
|
74
74
|
}),
|
|
75
75
|
authentication.getUsername()
|
|
76
76
|
]);
|
|
77
77
|
})
|
|
78
|
-
.then(
|
|
79
|
-
|
|
78
|
+
.then((responses) => {
|
|
79
|
+
const username = responses[1];
|
|
80
80
|
// add the resources
|
|
81
|
-
|
|
81
|
+
const failSafeAddItemResource = failSafe(addItemResource, {
|
|
82
82
|
success: true
|
|
83
83
|
});
|
|
84
|
-
|
|
84
|
+
const resourcePromises = resources.map(resource => {
|
|
85
85
|
return failSafeAddItemResource({
|
|
86
86
|
id: model.item.id,
|
|
87
87
|
owner: username,
|
|
88
88
|
resource: resource.file,
|
|
89
89
|
name: resource.name,
|
|
90
|
-
authentication
|
|
90
|
+
authentication
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
93
|
// Fire and forget as these are not critical-path
|
|
94
94
|
return Promise.all(resourcePromises);
|
|
95
95
|
})
|
|
96
|
-
.then(
|
|
96
|
+
.then(() => {
|
|
97
97
|
// Move it
|
|
98
98
|
return moveItem({
|
|
99
99
|
itemId: model.item.id,
|
|
100
|
-
folderId
|
|
101
|
-
authentication
|
|
100
|
+
folderId,
|
|
101
|
+
authentication
|
|
102
102
|
});
|
|
103
103
|
})
|
|
104
|
-
.then(
|
|
104
|
+
.then(() => {
|
|
105
105
|
return model;
|
|
106
106
|
});
|
|
107
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-storymap.js","sourceRoot":"","sources":["../../../src/helpers/create-storymap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gDAAgD;AAChD,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,UAAU,EACV,QAAQ,EACR,eAAe,EACf,UAAU,EAGX,MAAM,0BAA0B,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,QAAgB,EAChB,OAAY,EACZ,cAA2B;IAE3B,+CAA+C;IAC/C,oDAAoD;IACpD,
|
|
1
|
+
{"version":3,"file":"create-storymap.js","sourceRoot":"","sources":["../../../src/helpers/create-storymap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function getPortalEnv(authentication) {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
const portalUrl = authentication.portal || "https://www.arcgis.com/sharing/rest";
|
|
3
|
+
let result = "portal";
|
|
4
4
|
if (portalUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
|
|
5
5
|
result = "qaext";
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-portal-env.js","sourceRoot":"","sources":["../../../src/helpers/get-portal-env.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,YAAY,CAAC,cAA2B;IACtD,
|
|
1
|
+
{"version":3,"file":"get-portal-env.js","sourceRoot":"","sources":["../../../src/helpers/get-portal-env.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,YAAY,CAAC,cAA2B;IACtD,MAAM,SAAS,GACb,cAAc,CAAC,MAAM,IAAI,qCAAqC,CAAC;IACjE,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,SAAS,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE;QACnD,MAAM,GAAG,OAAO,CAAC;KAClB;SAAM,IAAI,SAAS,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE;QAC/D,MAAM,GAAG,QAAQ,CAAC;KACnB;SAAM,IAAI,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE;QACtD,MAAM,GAAG,KAAK,CAAC;KAChB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -6,16 +6,16 @@ import { getStoryMapSubdomain } from "./get-storymap-subdomain";
|
|
|
6
6
|
* @param authentication
|
|
7
7
|
*/
|
|
8
8
|
export function getStoryMapBaseUrl(authentication) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
let baseUrl = "";
|
|
10
|
+
const subdomain = getStoryMapSubdomain(authentication);
|
|
11
11
|
if (subdomain) {
|
|
12
|
-
baseUrl =
|
|
12
|
+
baseUrl = `https://${subdomain}.arcgis.com`;
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
15
|
// we're on portal
|
|
16
16
|
// chop off the /sharing/rest to get the baseUrl
|
|
17
|
-
|
|
18
|
-
baseUrl = portalBaseUrl
|
|
17
|
+
const portalBaseUrl = authentication.portal.replace("/sharing/rest", "");
|
|
18
|
+
baseUrl = `${portalBaseUrl}/apps/storymaps`;
|
|
19
19
|
}
|
|
20
20
|
return baseUrl;
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-storymap-base-url.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-base-url.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA2B;IAC5D,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,
|
|
1
|
+
{"version":3,"file":"get-storymap-base-url.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-base-url.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA2B;IAC5D,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,MAAM,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,SAAS,EAAE;QACb,OAAO,GAAG,WAAW,SAAS,aAAa,CAAC;KAC7C;SAAM;QACL,kBAAkB;QAClB,gDAAgD;QAChD,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,GAAG,GAAG,aAAa,iBAAiB,CAAC;KAC7C;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -21,10 +21,10 @@ import { getProp } from "@esri/hub-common";
|
|
|
21
21
|
* @param model IModel
|
|
22
22
|
*/
|
|
23
23
|
export function getStoryMapDependencies(model) {
|
|
24
|
-
|
|
25
|
-
return Object.keys(resources).reduce(
|
|
26
|
-
if (getProp(resources, key
|
|
27
|
-
acc.push(getProp(resources, key
|
|
24
|
+
const resources = getProp(model, "data.resources") || {};
|
|
25
|
+
return Object.keys(resources).reduce((acc, key) => {
|
|
26
|
+
if (getProp(resources, `${key}.type`) === "webmap") {
|
|
27
|
+
acc.push(getProp(resources, `${key}.data.itemId`));
|
|
28
28
|
}
|
|
29
29
|
return acc;
|
|
30
30
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-storymap-dependencies.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-dependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAU,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,
|
|
1
|
+
{"version":3,"file":"get-storymap-dependencies.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-dependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAU,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,EAAE;YAClD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;SACpD;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function getStoryMapSubdomain(authentication) {
|
|
2
|
-
|
|
2
|
+
const portalUrl = authentication.portal || "https://www.arcgis.com/sharing/rest";
|
|
3
3
|
// TODO: Sort out how we locate storymaps on portal?
|
|
4
|
-
|
|
4
|
+
let result;
|
|
5
5
|
if (portalUrl.match(/(qaext|\.mapsqa)\.arcgis.com/)) {
|
|
6
6
|
result = "storymapsqa";
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-storymap-subdomain.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-subdomain.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,oBAAoB,CAAC,cAA2B;IAC9D,
|
|
1
|
+
{"version":3,"file":"get-storymap-subdomain.js","sourceRoot":"","sources":["../../../src/helpers/get-storymap-subdomain.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,oBAAoB,CAAC,cAA2B;IAC9D,MAAM,SAAS,GACb,cAAc,CAAC,MAAM,IAAI,qCAAqC,CAAC;IACjE,oDAAoD;IACpD,IAAI,MAAM,CAAC;IACX,IAAI,SAAS,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE;QACnD,MAAM,GAAG,aAAa,CAAC;KACxB;SAAM,IAAI,SAAS,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE;QAC/D,MAAM,GAAG,cAAc,CAAC;KACzB;SAAM,IAAI,SAAS,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE;QACtD,MAAM,GAAG,WAAW,CAAC;KACtB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -22,15 +22,14 @@ import { getProp } from "@esri/hub-common";
|
|
|
22
22
|
*
|
|
23
23
|
* @param model
|
|
24
24
|
*/
|
|
25
|
-
export function remapWebmapKeys(resources) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (key !== "webmap" + webmapCounter) {
|
|
25
|
+
export function remapWebmapKeys(resources = {}) {
|
|
26
|
+
let webmapCounter = 0;
|
|
27
|
+
return Object.keys(resources).reduce((acc, key) => {
|
|
28
|
+
if (getProp(resources, `${key}.type`) === "webmap") {
|
|
29
|
+
if (key !== `webmap${webmapCounter}`) {
|
|
31
30
|
acc.push({
|
|
32
31
|
original: key,
|
|
33
|
-
updated:
|
|
32
|
+
updated: `webmap${webmapCounter}`
|
|
34
33
|
});
|
|
35
34
|
webmapCounter++;
|
|
36
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remap-webmap-keys.js","sourceRoot":"","sources":["../../../src/helpers/remap-webmap-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"remap-webmap-keys.js","sourceRoot":"","sources":["../../../src/helpers/remap-webmap-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,YAAiB,EAAE;IACjD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,EAAE;YAClD,IAAI,GAAG,KAAK,SAAS,aAAa,EAAE,EAAE;gBACpC,GAAG,CAAC,IAAI,CAAC;oBACP,QAAQ,EAAE,GAAG;oBACb,OAAO,EAAE,SAAS,aAAa,EAAE;iBAClC,CAAC,CAAC;gBACH,aAAa,EAAE,CAAC;aACjB;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
|
|
@@ -24,9 +24,10 @@ import { IItemTemplate, IItemProgressCallback, ICreateItemFromTemplateResponse,
|
|
|
24
24
|
*
|
|
25
25
|
* @param solutionItemId
|
|
26
26
|
* @param itemInfo
|
|
27
|
-
* @param
|
|
27
|
+
* @param destAuthentication Credentials for requests to the destination organization
|
|
28
|
+
* @param srcAuthentication Credentials for requests to source items
|
|
28
29
|
*/
|
|
29
|
-
export declare function convertItemToTemplate(solutionItemId: string, itemInfo: any,
|
|
30
|
+
export declare function convertItemToTemplate(solutionItemId: string, itemInfo: any, destAuthentication: UserSession, srcAuthentication: UserSession): Promise<IItemTemplate>;
|
|
30
31
|
/**
|
|
31
32
|
* Create a StoryMap from the passed in template
|
|
32
33
|
*
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { __assign } from "tslib";
|
|
17
16
|
/**
|
|
18
17
|
* Manages the creation and deployment of Story Map item types.
|
|
19
18
|
*
|
|
@@ -30,22 +29,23 @@ import { createStoryMap } from "./helpers/create-storymap";
|
|
|
30
29
|
*
|
|
31
30
|
* @param solutionItemId
|
|
32
31
|
* @param itemInfo
|
|
33
|
-
* @param
|
|
32
|
+
* @param destAuthentication Credentials for requests to the destination organization
|
|
33
|
+
* @param srcAuthentication Credentials for requests to source items
|
|
34
34
|
*/
|
|
35
|
-
export function convertItemToTemplate(solutionItemId, itemInfo,
|
|
36
|
-
|
|
35
|
+
export function convertItemToTemplate(solutionItemId, itemInfo, destAuthentication, srcAuthentication) {
|
|
36
|
+
const model = {
|
|
37
37
|
item: itemInfo,
|
|
38
38
|
data: {}
|
|
39
39
|
};
|
|
40
40
|
// fetch the data.json
|
|
41
|
-
return getItemData(itemInfo.id, { authentication:
|
|
42
|
-
.then(
|
|
41
|
+
return getItemData(itemInfo.id, { authentication: srcAuthentication })
|
|
42
|
+
.then(data => {
|
|
43
43
|
// append into the model
|
|
44
44
|
model.data = data;
|
|
45
45
|
// and use that to create a template
|
|
46
46
|
return convertStoryMapToTemplate(model);
|
|
47
47
|
})
|
|
48
|
-
.then(
|
|
48
|
+
.then(tmpl => {
|
|
49
49
|
return tmpl;
|
|
50
50
|
});
|
|
51
51
|
}
|
|
@@ -59,7 +59,7 @@ export function convertItemToTemplate(solutionItemId, itemInfo, authentication)
|
|
|
59
59
|
*/
|
|
60
60
|
export function createItemFromTemplate(template, templateDictionary, destinationAuthentication, itemProgressCallback) {
|
|
61
61
|
// let the progress system know we've started...
|
|
62
|
-
|
|
62
|
+
const startStatus = itemProgressCallback(template.itemId, EItemProgressStatus.Started, 0);
|
|
63
63
|
// and if it returned false, just resolve out
|
|
64
64
|
if (!startStatus) {
|
|
65
65
|
return Promise.resolve(generateEmptyCreationResponse(template.type));
|
|
@@ -71,21 +71,21 @@ export function createItemFromTemplate(template, templateDictionary, destination
|
|
|
71
71
|
// .title should always be set on the templateDictionary
|
|
72
72
|
templateDictionary.solution.title = templateDictionary.title;
|
|
73
73
|
// TODO: Determine if we need any transforms in this new env
|
|
74
|
-
|
|
74
|
+
const transforms = {};
|
|
75
75
|
// create an object to hold the created site through
|
|
76
76
|
// subsequent promise calls
|
|
77
|
-
|
|
77
|
+
let model;
|
|
78
78
|
// Create the "siteModel" from the template. Does not save the site item yet
|
|
79
79
|
// Note: depending on licensing and user privs, will also create the team groups
|
|
80
80
|
// and initiative item.
|
|
81
81
|
return createStoryMapModelFromTemplate(template, templateDictionary, transforms, destinationAuthentication)
|
|
82
|
-
.then(
|
|
83
|
-
|
|
82
|
+
.then(interpolated => {
|
|
83
|
+
const options = {
|
|
84
84
|
assets: interpolated.assets || []
|
|
85
85
|
};
|
|
86
86
|
return createStoryMap(interpolated, templateDictionary.folderId, options, destinationAuthentication);
|
|
87
87
|
})
|
|
88
|
-
.then(
|
|
88
|
+
.then(createdModel => {
|
|
89
89
|
model = createdModel;
|
|
90
90
|
// Update the template dictionary
|
|
91
91
|
// TODO: This should be done in whatever receives
|
|
@@ -94,21 +94,24 @@ export function createItemFromTemplate(template, templateDictionary, destination
|
|
|
94
94
|
itemId: model.item.id
|
|
95
95
|
};
|
|
96
96
|
// call the progress callback, which also mutates templateDictionary
|
|
97
|
-
|
|
97
|
+
const finalStatus = itemProgressCallback(template.itemId, EItemProgressStatus.Finished, template.estimatedDeploymentCostFactor || 2, model.item.id);
|
|
98
98
|
if (!finalStatus) {
|
|
99
99
|
// clean up the site we just created
|
|
100
|
-
|
|
100
|
+
const failSafeRemove = failSafe(removeItem, { success: true });
|
|
101
101
|
return failSafeRemove({
|
|
102
102
|
id: model.item.id,
|
|
103
103
|
authentication: destinationAuthentication
|
|
104
|
-
}).then(
|
|
104
|
+
}).then(() => {
|
|
105
105
|
return Promise.resolve(generateEmptyCreationResponse(template.type));
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
109
109
|
// finally, return ICreateItemFromTemplateResponse
|
|
110
|
-
|
|
111
|
-
item:
|
|
110
|
+
const response = {
|
|
111
|
+
item: {
|
|
112
|
+
...template,
|
|
113
|
+
...model
|
|
114
|
+
},
|
|
112
115
|
id: model.item.id,
|
|
113
116
|
type: template.type,
|
|
114
117
|
postProcess: false
|
|
@@ -117,13 +120,13 @@ export function createItemFromTemplate(template, templateDictionary, destination
|
|
|
117
120
|
return response;
|
|
118
121
|
}
|
|
119
122
|
})
|
|
120
|
-
.catch(
|
|
123
|
+
.catch(ex => {
|
|
121
124
|
itemProgressCallback(template.itemId, EItemProgressStatus.Failed, 0);
|
|
122
125
|
throw ex;
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
128
|
export function isAStoryMap(itemType) {
|
|
126
|
-
|
|
129
|
+
let result = false;
|
|
127
130
|
if (itemType === "StoryMap") {
|
|
128
131
|
result = true;
|
|
129
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storymap-processor.js","sourceRoot":"","sources":["../../src/storymap-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"storymap-processor.js","sourceRoot":"","sources":["../../src/storymap-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,10 +21,10 @@ exports.isAStoryMap = exports.createItemFromTemplate = exports.convertItemToTemp
|
|
|
21
21
|
*
|
|
22
22
|
* @module storymap
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
const common = require("@esri/solution-common");
|
|
25
25
|
// ------------------------------------------------------------------------------------------------------------------ //
|
|
26
26
|
function convertItemToTemplate(solutionItemId, itemInfo) {
|
|
27
|
-
return new Promise(
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
28
|
if (isAStoryMap(itemInfo.type, itemInfo.url)) {
|
|
29
29
|
reject(common.fail("Classic StoryMap is not yet implemented"));
|
|
30
30
|
}
|
|
@@ -35,7 +35,7 @@ function convertItemToTemplate(solutionItemId, itemInfo) {
|
|
|
35
35
|
}
|
|
36
36
|
exports.convertItemToTemplate = convertItemToTemplate;
|
|
37
37
|
function createItemFromTemplate(template, templateDictionary, destinationAuthentication, itemProgressCallback) {
|
|
38
|
-
return new Promise(
|
|
38
|
+
return new Promise(resolve => {
|
|
39
39
|
if (isAStoryMap(template.type, template.item.url)) {
|
|
40
40
|
// Not yet implemented
|
|
41
41
|
itemProgressCallback(template.itemId, common.EItemProgressStatus.Failed, 0);
|
|
@@ -60,7 +60,7 @@ function isAStoryMap(itemType, itemUrl) {
|
|
|
60
60
|
/\/apps\/StoryMap\//i,
|
|
61
61
|
/\/apps\/StoryMapBasic\//i,
|
|
62
62
|
/\/apps\/StorytellingSwipe\//i
|
|
63
|
-
].some(
|
|
63
|
+
].some(pattern => pattern.test(itemUrl));
|
|
64
64
|
}
|
|
65
65
|
return false;
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classic-storymap-processor.js","sourceRoot":"","sources":["../../src/classic-storymap-processor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH,
|
|
1
|
+
{"version":3,"file":"classic-storymap-processor.js","sourceRoot":"","sources":["../../src/classic-storymap-processor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH,gDAAgD;AAEhD,wHAAwH;AAExH,SAAgB,qBAAqB,CACnC,cAAsB,EACtB,QAAa;IAEb,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;SAChE;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC;SACzD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAXD,sDAWC;AAED,SAAgB,sBAAsB,CACpC,QAA8B,EAC9B,kBAAuB,EACvB,yBAA6C,EAC7C,oBAAkD;IAElD,OAAO,IAAI,OAAO,CAAyC,OAAO,CAAC,EAAE;QACnE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACjD,sBAAsB;YACtB,oBAAoB,CAClB,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,mBAAmB,CAAC,MAAM,EACjC,CAAC,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;aAAM;YACL,YAAY;YACZ,oBAAoB,CAClB,QAAQ,CAAC,MAAM,EACf,MAAM,CAAC,mBAAmB,CAAC,MAAM,EACjC,CAAC,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,wDAyBC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,OAAgB;IAC5D,IAAI,OAAO,EAAE;QACX,OAAO;YACL,oBAAoB;YACpB,uBAAuB;YACvB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,8BAA8B;SAC/B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,kCAcC"}
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.convertStoryMapToTemplate = void 0;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
const hub_common_1 = require("@esri/hub-common");
|
|
20
|
+
const solution_common_1 = require("@esri/solution-common");
|
|
21
|
+
const remap_webmap_keys_1 = require("./remap-webmap-keys");
|
|
22
|
+
const get_storymap_dependencies_1 = require("./get-storymap-dependencies");
|
|
23
23
|
/**
|
|
24
24
|
* Convert a StoryMap IModel to an IItemTemplate
|
|
25
25
|
*
|
|
@@ -27,26 +27,31 @@ var get_storymap_dependencies_1 = require("./get-storymap-dependencies");
|
|
|
27
27
|
* @param authentication
|
|
28
28
|
*/
|
|
29
29
|
function convertStoryMapToTemplate(model) {
|
|
30
|
-
|
|
31
|
-
tmpl.key = (0, hub_common_1.propifyString)(model.item.title)
|
|
32
|
-
|
|
30
|
+
const tmpl = (0, solution_common_1.createPlaceholderTemplate)(model.item.id, model.item.type);
|
|
31
|
+
tmpl.key = `${(0, hub_common_1.propifyString)(model.item.title)}_${(0, hub_common_1.createId)("i")}`;
|
|
32
|
+
const clone = (0, hub_common_1.cloneObject)(model);
|
|
33
33
|
tmpl.data = clone.data;
|
|
34
|
+
// We need to save these properties in order to restore them after hub.js deletes them
|
|
35
|
+
const created = clone.item.created;
|
|
36
|
+
const modified = clone.item.modified;
|
|
34
37
|
tmpl.item = (0, hub_common_1.normalizeSolutionTemplateItem)(clone.item);
|
|
38
|
+
tmpl.item.created = created;
|
|
39
|
+
tmpl.item.modified = modified;
|
|
35
40
|
// templatize the url
|
|
36
41
|
tmpl.item.url = "{{storyMapTemplateUrl}}";
|
|
37
42
|
// Storymap Webmap Resources have complex keys that we need to remap
|
|
38
|
-
|
|
43
|
+
const webmapRemaps = (0, remap_webmap_keys_1.remapWebmapKeys)(tmpl.data.resources);
|
|
39
44
|
// and then replace in the rest of the structure
|
|
40
|
-
webmapRemaps.forEach(
|
|
45
|
+
webmapRemaps.forEach(remap => {
|
|
41
46
|
tmpl.data.resources[remap.updated] = (0, hub_common_1.cloneObject)(tmpl.data.resources[remap.original]);
|
|
42
47
|
delete tmpl.data.resources[remap.original];
|
|
43
48
|
tmpl.data.nodes = (0, hub_common_1.deepStringReplace)(tmpl.data.nodes, remap.original, remap.updated);
|
|
44
49
|
});
|
|
45
50
|
// use typeKeyword to mark item as published
|
|
46
51
|
// Note: Hub team decided to discard unpublished drafts when creating a template
|
|
47
|
-
|
|
52
|
+
const typeKeywords = tmpl.item.typeKeywords;
|
|
48
53
|
if (typeKeywords.indexOf(unPublishedChangesKW) !== -1) {
|
|
49
|
-
tmpl.item.typeKeywords = [publishedChangesKW].concat(tmpl.item.typeKeywords.filter(
|
|
54
|
+
tmpl.item.typeKeywords = [publishedChangesKW].concat(tmpl.item.typeKeywords.filter((word) => word !== unPublishedChangesKW));
|
|
50
55
|
}
|
|
51
56
|
tmpl.properties = {};
|
|
52
57
|
tmpl.properties.draftFileName = "draft_{{timestamp}}.json";
|
|
@@ -68,12 +73,12 @@ function convertStoryMapToTemplate(model) {
|
|
|
68
73
|
}
|
|
69
74
|
exports.convertStoryMapToTemplate = convertStoryMapToTemplate;
|
|
70
75
|
// Internal constants
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
const unPublishedChangesKW = "smstatusunpublishedchanges";
|
|
77
|
+
const publishedChangesKW = "smstatuspublished";
|
|
73
78
|
/**
|
|
74
79
|
* Template for oEmbed
|
|
75
80
|
*/
|
|
76
|
-
|
|
81
|
+
const oEmbedTemplates = {
|
|
77
82
|
oembed: {
|
|
78
83
|
version: "1.0",
|
|
79
84
|
type: "rich",
|