@esri/solution-common 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/completeItem.js +6 -7
- package/dist/esm/completeItem.js.map +1 -1
- package/dist/esm/create-hub-request-options.d.ts +4 -4
- package/dist/esm/create-hub-request-options.js +9 -12
- package/dist/esm/create-hub-request-options.js.map +1 -1
- package/dist/esm/deleteHelpers/deleteEmptyGroups.js +2 -2
- package/dist/esm/deleteHelpers/deleteEmptyGroups.js.map +1 -1
- package/dist/esm/deleteHelpers/deleteGroupIfEmpty.js +15 -15
- package/dist/esm/deleteHelpers/deleteGroupIfEmpty.js.map +1 -1
- package/dist/esm/deleteHelpers/deleteSolutionContents.js +20 -22
- package/dist/esm/deleteHelpers/deleteSolutionContents.js.map +1 -1
- package/dist/esm/deleteHelpers/deleteSolutionFolder.js +10 -10
- package/dist/esm/deleteHelpers/deleteSolutionFolder.js.map +1 -1
- package/dist/esm/deleteHelpers/deleteSolutionItem.js +4 -4
- package/dist/esm/deleteHelpers/deleteSolutionItem.js.map +1 -1
- package/dist/esm/deleteHelpers/reconstructBuildOrderIds.js +1 -1
- package/dist/esm/deleteHelpers/reconstructBuildOrderIds.js.map +1 -1
- package/dist/esm/deleteHelpers/removeItems.js +20 -29
- package/dist/esm/deleteHelpers/removeItems.js.map +1 -1
- package/dist/esm/deleteHelpers/reportProgress.js +3 -6
- package/dist/esm/deleteHelpers/reportProgress.js.map +1 -1
- package/dist/esm/deleteSolution.js +10 -12
- package/dist/esm/deleteSolution.js.map +1 -1
- package/dist/esm/dependencies.js +27 -19
- package/dist/esm/dependencies.js.map +1 -1
- package/dist/esm/featureServiceHelpers.d.ts +6 -0
- package/dist/esm/featureServiceHelpers.js +530 -500
- package/dist/esm/featureServiceHelpers.js.map +1 -1
- package/dist/esm/generalHelpers.js +72 -76
- package/dist/esm/generalHelpers.js.map +1 -1
- package/dist/esm/get-subscription-info.js +5 -3
- package/dist/esm/get-subscription-info.js.map +1 -1
- package/dist/esm/getDeletableSolutionInfo.js +6 -10
- package/dist/esm/getDeletableSolutionInfo.js.map +1 -1
- package/dist/esm/getSolutionSummary.js +15 -19
- package/dist/esm/getSolutionSummary.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.d.ts +39 -1
- package/dist/esm/interfaces.js +3 -3
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/libConnectors.js +5 -7
- package/dist/esm/libConnectors.js.map +1 -1
- package/dist/esm/migrations/apply-schema.js +3 -3
- package/dist/esm/migrations/apply-schema.js.map +1 -1
- package/dist/esm/migrations/is-legacy-solution.js +2 -2
- package/dist/esm/migrations/is-legacy-solution.js.map +1 -1
- package/dist/esm/migrations/upgrade-three-dot-one.js +3 -3
- package/dist/esm/migrations/upgrade-three-dot-one.js.map +1 -1
- package/dist/esm/migrations/upgrade-three-dot-zero.js +1 -1
- package/dist/esm/migrations/upgrade-three-dot-zero.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-five.js +17 -8
- package/dist/esm/migrations/upgrade-two-dot-five.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-four.js +12 -12
- package/dist/esm/migrations/upgrade-two-dot-four.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-one.js +1 -1
- package/dist/esm/migrations/upgrade-two-dot-one.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-seven.js +1 -1
- package/dist/esm/migrations/upgrade-two-dot-seven.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-six.js +9 -12
- package/dist/esm/migrations/upgrade-two-dot-six.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-three.js +3 -3
- package/dist/esm/migrations/upgrade-two-dot-three.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-two.js +3 -3
- package/dist/esm/migrations/upgrade-two-dot-two.js.map +1 -1
- package/dist/esm/migrations/upgrade-two-dot-zero.js +8 -9
- package/dist/esm/migrations/upgrade-two-dot-zero.js.map +1 -1
- package/dist/esm/migrator.js +5 -7
- package/dist/esm/migrator.js.map +1 -1
- package/dist/esm/polyfills.js +5 -5
- package/dist/esm/polyfills.js.map +1 -1
- package/dist/esm/resourceHelpers.js +54 -57
- package/dist/esm/resourceHelpers.js.map +1 -1
- package/dist/esm/resources/add-resource-from-blob.js +2 -2
- package/dist/esm/resources/add-resource-from-blob.js.map +1 -1
- package/dist/esm/resources/addMetadataFromBlob.js +1 -1
- package/dist/esm/resources/addMetadataFromBlob.js.map +1 -1
- package/dist/esm/resources/convert-item-resource-to-storage-resource.js +6 -7
- package/dist/esm/resources/convert-item-resource-to-storage-resource.js.map +1 -1
- package/dist/esm/resources/convert-storage-resource-to-item-resource.js +8 -9
- package/dist/esm/resources/convert-storage-resource-to-item-resource.js.map +1 -1
- package/dist/esm/resources/copyAssociatedFiles.js +44 -53
- package/dist/esm/resources/copyAssociatedFiles.js.map +1 -1
- package/dist/esm/resources/copyDataIntoItem.js +5 -11
- package/dist/esm/resources/copyDataIntoItem.js.map +1 -1
- package/dist/esm/resources/copyMetadataIntoItem.js +4 -10
- package/dist/esm/resources/copyMetadataIntoItem.js.map +1 -1
- package/dist/esm/resources/copyResourceIntoZip.js +5 -7
- package/dist/esm/resources/copyResourceIntoZip.js.map +1 -1
- package/dist/esm/resources/copyZipIntoItem.js +5 -9
- package/dist/esm/resources/copyZipIntoItem.js.map +1 -1
- package/dist/esm/resources/createCopyResults.js +5 -2
- package/dist/esm/resources/createCopyResults.js.map +1 -1
- package/dist/esm/resources/get-blob.js +7 -5
- package/dist/esm/resources/get-blob.js.map +1 -1
- package/dist/esm/resources/getItemResourcesFilesFromPaths.js +7 -7
- package/dist/esm/resources/getItemResourcesFilesFromPaths.js.map +1 -1
- package/dist/esm/resources/getItemResourcesPaths.js +7 -8
- package/dist/esm/resources/getItemResourcesPaths.js.map +1 -1
- package/dist/esm/resources/transform-resource-paths-to-solution-resources.js +8 -9
- package/dist/esm/resources/transform-resource-paths-to-solution-resources.js.map +1 -1
- package/dist/esm/restHelpers.d.ts +65 -5
- package/dist/esm/restHelpers.js +422 -276
- package/dist/esm/restHelpers.js.map +1 -1
- package/dist/esm/restHelpersGet.js +102 -111
- package/dist/esm/restHelpersGet.js.map +1 -1
- package/dist/esm/sharing/share-item-to-groups.d.ts +2 -1
- package/dist/esm/sharing/share-item-to-groups.js +12 -6
- package/dist/esm/sharing/share-item-to-groups.js.map +1 -1
- package/dist/esm/templatization.js +64 -40
- package/dist/esm/templatization.js.map +1 -1
- package/dist/esm/trackingHelpers.d.ts +116 -0
- package/dist/esm/trackingHelpers.js +205 -0
- package/dist/esm/trackingHelpers.js.map +1 -0
- package/dist/esm/velocityHelpers.d.ts +2 -0
- package/dist/esm/velocityHelpers.js +30 -12
- package/dist/esm/velocityHelpers.js.map +1 -1
- package/dist/esm/workforceHelpers.d.ts +11 -0
- package/dist/esm/workforceHelpers.js +208 -180
- package/dist/esm/workforceHelpers.js.map +1 -1
- package/dist/node/completeItem.js +8 -9
- package/dist/node/completeItem.js.map +1 -1
- package/dist/node/create-hub-request-options.d.ts +4 -4
- package/dist/node/create-hub-request-options.js +11 -14
- package/dist/node/create-hub-request-options.js.map +1 -1
- package/dist/node/deleteHelpers/deleteEmptyGroups.js +3 -3
- package/dist/node/deleteHelpers/deleteEmptyGroups.js.map +1 -1
- package/dist/node/deleteHelpers/deleteGroupIfEmpty.js +16 -16
- package/dist/node/deleteHelpers/deleteGroupIfEmpty.js.map +1 -1
- package/dist/node/deleteHelpers/deleteSolutionContents.js +26 -28
- package/dist/node/deleteHelpers/deleteSolutionContents.js.map +1 -1
- package/dist/node/deleteHelpers/deleteSolutionFolder.js +11 -11
- package/dist/node/deleteHelpers/deleteSolutionFolder.js.map +1 -1
- package/dist/node/deleteHelpers/deleteSolutionItem.js +6 -6
- package/dist/node/deleteHelpers/deleteSolutionItem.js.map +1 -1
- package/dist/node/deleteHelpers/index.js +1 -1
- package/dist/node/deleteHelpers/reconstructBuildOrderIds.js +2 -2
- package/dist/node/deleteHelpers/reconstructBuildOrderIds.js.map +1 -1
- package/dist/node/deleteHelpers/removeItems.js +26 -35
- package/dist/node/deleteHelpers/removeItems.js.map +1 -1
- package/dist/node/deleteHelpers/reportProgress.js +4 -7
- package/dist/node/deleteHelpers/reportProgress.js.map +1 -1
- package/dist/node/deleteSolution.js +12 -14
- package/dist/node/deleteSolution.js.map +1 -1
- package/dist/node/dependencies.js +29 -21
- package/dist/node/dependencies.js.map +1 -1
- package/dist/node/featureServiceHelpers.d.ts +6 -0
- package/dist/node/featureServiceHelpers.js +535 -504
- package/dist/node/featureServiceHelpers.js.map +1 -1
- package/dist/node/generalHelpers.js +75 -79
- package/dist/node/generalHelpers.js.map +1 -1
- package/dist/node/get-subscription-info.js +7 -5
- package/dist/node/get-subscription-info.js.map +1 -1
- package/dist/node/getDeletableSolutionInfo.js +8 -12
- package/dist/node/getDeletableSolutionInfo.js.map +1 -1
- package/dist/node/getSolutionSummary.js +19 -23
- package/dist/node/getSolutionSummary.js.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.js +2 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/interfaces.d.ts +39 -1
- package/dist/node/interfaces.js.map +1 -1
- package/dist/node/libConnectors.js +8 -10
- package/dist/node/libConnectors.js.map +1 -1
- package/dist/node/migrations/apply-schema.js +4 -4
- package/dist/node/migrations/apply-schema.js.map +1 -1
- package/dist/node/migrations/is-legacy-solution.js +3 -3
- package/dist/node/migrations/is-legacy-solution.js.map +1 -1
- package/dist/node/migrations/upgrade-three-dot-one.js +5 -5
- package/dist/node/migrations/upgrade-three-dot-one.js.map +1 -1
- package/dist/node/migrations/upgrade-three-dot-zero.js +2 -2
- package/dist/node/migrations/upgrade-three-dot-zero.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-five.js +18 -9
- package/dist/node/migrations/upgrade-two-dot-five.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-four.js +13 -13
- package/dist/node/migrations/upgrade-two-dot-four.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-one.js +2 -2
- package/dist/node/migrations/upgrade-two-dot-one.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-seven.js +2 -2
- package/dist/node/migrations/upgrade-two-dot-seven.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-six.js +10 -13
- package/dist/node/migrations/upgrade-two-dot-six.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-three.js +5 -5
- package/dist/node/migrations/upgrade-two-dot-three.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-two.js +5 -5
- package/dist/node/migrations/upgrade-two-dot-two.js.map +1 -1
- package/dist/node/migrations/upgrade-two-dot-zero.js +9 -10
- package/dist/node/migrations/upgrade-two-dot-zero.js.map +1 -1
- package/dist/node/migrator.js +16 -18
- package/dist/node/migrator.js.map +1 -1
- package/dist/node/polyfills.js +5 -5
- package/dist/node/polyfills.js.map +1 -1
- package/dist/node/resourceHelpers.js +62 -65
- package/dist/node/resourceHelpers.js.map +1 -1
- package/dist/node/resources/add-resource-from-blob.js +4 -4
- package/dist/node/resources/add-resource-from-blob.js.map +1 -1
- package/dist/node/resources/addMetadataFromBlob.js +2 -2
- package/dist/node/resources/addMetadataFromBlob.js.map +1 -1
- package/dist/node/resources/convert-item-resource-to-storage-resource.js +6 -7
- package/dist/node/resources/convert-item-resource-to-storage-resource.js.map +1 -1
- package/dist/node/resources/convert-storage-resource-to-item-resource.js +9 -10
- package/dist/node/resources/convert-storage-resource-to-item-resource.js.map +1 -1
- package/dist/node/resources/copyAssociatedFiles.js +52 -61
- package/dist/node/resources/copyAssociatedFiles.js.map +1 -1
- package/dist/node/resources/copyDataIntoItem.js +9 -15
- package/dist/node/resources/copyDataIntoItem.js.map +1 -1
- package/dist/node/resources/copyMetadataIntoItem.js +7 -13
- package/dist/node/resources/copyMetadataIntoItem.js.map +1 -1
- package/dist/node/resources/copyResourceIntoZip.js +7 -9
- package/dist/node/resources/copyResourceIntoZip.js.map +1 -1
- package/dist/node/resources/copyZipIntoItem.js +8 -12
- package/dist/node/resources/copyZipIntoItem.js.map +1 -1
- package/dist/node/resources/createCopyResults.js +5 -2
- package/dist/node/resources/createCopyResults.js.map +1 -1
- package/dist/node/resources/get-blob.js +8 -6
- package/dist/node/resources/get-blob.js.map +1 -1
- package/dist/node/resources/getItemResourcesFilesFromPaths.js +8 -8
- package/dist/node/resources/getItemResourcesFilesFromPaths.js.map +1 -1
- package/dist/node/resources/getItemResourcesPaths.js +9 -10
- package/dist/node/resources/getItemResourcesPaths.js.map +1 -1
- package/dist/node/resources/index.js +1 -1
- package/dist/node/resources/transform-resource-paths-to-solution-resources.js +10 -11
- package/dist/node/resources/transform-resource-paths-to-solution-resources.js.map +1 -1
- package/dist/node/restHelpers.d.ts +65 -5
- package/dist/node/restHelpers.js +437 -285
- package/dist/node/restHelpers.js.map +1 -1
- package/dist/node/restHelpersGet.js +107 -116
- package/dist/node/restHelpersGet.js.map +1 -1
- package/dist/node/sharing/index.js +1 -1
- package/dist/node/sharing/share-item-to-groups.d.ts +2 -1
- package/dist/node/sharing/share-item-to-groups.js +13 -7
- package/dist/node/sharing/share-item-to-groups.js.map +1 -1
- package/dist/node/templatization.js +61 -37
- package/dist/node/templatization.js.map +1 -1
- package/dist/node/trackingHelpers.d.ts +116 -0
- package/dist/node/trackingHelpers.js +217 -0
- package/dist/node/trackingHelpers.js.map +1 -0
- package/dist/node/velocityHelpers.d.ts +2 -0
- package/dist/node/velocityHelpers.js +33 -15
- package/dist/node/velocityHelpers.js.map +1 -1
- package/dist/node/workforceHelpers.d.ts +11 -0
- package/dist/node/workforceHelpers.js +214 -185
- package/dist/node/workforceHelpers.js.map +1 -1
- package/dist/umd/common.umd.js +14830 -14466
- package/dist/umd/common.umd.js.map +1 -1
- package/dist/umd/common.umd.min.js +3 -3
- package/dist/umd/common.umd.min.js.map +1 -1
- package/dist/umd/create-hub-request-options.d.ts +4 -4
- package/dist/umd/featureServiceHelpers.d.ts +6 -0
- package/dist/umd/index.d.ts +1 -0
- package/dist/umd/interfaces.d.ts +39 -1
- package/dist/umd/restHelpers.d.ts +65 -5
- package/dist/umd/sharing/share-item-to-groups.d.ts +2 -1
- package/dist/umd/trackingHelpers.d.ts +116 -0
- package/dist/umd/velocityHelpers.d.ts +2 -0
- package/dist/umd/workforceHelpers.d.ts +11 -0
- package/package.json +24 -24
|
@@ -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 { __read } from "tslib";
|
|
17
16
|
/**
|
|
18
17
|
* Provides general helper functions.
|
|
19
18
|
*
|
|
@@ -32,20 +31,20 @@ import { templatizeTerm, replaceInTemplate } from "./templatization";
|
|
|
32
31
|
* @return templatized itemTemplate
|
|
33
32
|
*/
|
|
34
33
|
export function convertWorkforceItemToTemplate(itemTemplate, authentication) {
|
|
35
|
-
return new Promise(
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
36
35
|
// This function is specific to workforce v1 project structure
|
|
37
36
|
// Key properties that contain item IDs for the workforce project type
|
|
38
|
-
|
|
37
|
+
const keyProperties = getKeyWorkforceProperties(1);
|
|
39
38
|
// The templates data to process
|
|
40
|
-
|
|
39
|
+
const data = itemTemplate.data;
|
|
41
40
|
if (data) {
|
|
42
41
|
// Extract dependencies
|
|
43
|
-
extractWorkforceDependencies(data, keyProperties, authentication).then(
|
|
42
|
+
extractWorkforceDependencies(data, keyProperties, authentication).then(results => {
|
|
44
43
|
itemTemplate.dependencies = results.dependencies;
|
|
45
44
|
// templatize key properties
|
|
46
45
|
itemTemplate.data = templatizeWorkforce(data, keyProperties, results.urlHash);
|
|
47
46
|
resolve(itemTemplate);
|
|
48
|
-
},
|
|
47
|
+
}, e => reject(fail(e)));
|
|
49
48
|
}
|
|
50
49
|
else {
|
|
51
50
|
resolve(itemTemplate);
|
|
@@ -61,13 +60,13 @@ export function convertWorkforceItemToTemplate(itemTemplate, authentication) {
|
|
|
61
60
|
* @return List of dependencies ids
|
|
62
61
|
*/
|
|
63
62
|
export function extractWorkforceDependencies(data, keyProperties, authentication) {
|
|
64
|
-
return new Promise(
|
|
65
|
-
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
const deps = [];
|
|
66
65
|
// get the ids for the service dependencies
|
|
67
66
|
// "workerWebMapId" and "dispatcherWebMapId" are already IDs and don't have a serviceItemId
|
|
68
|
-
keyProperties.forEach(
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
keyProperties.forEach(p => {
|
|
68
|
+
const serviceItemId = getProp(data, p + ".serviceItemId");
|
|
69
|
+
const v = getProp(data, p);
|
|
71
70
|
if (serviceItemId) {
|
|
72
71
|
if (deps.indexOf(serviceItemId) === -1) {
|
|
73
72
|
deps.push(serviceItemId);
|
|
@@ -78,33 +77,33 @@ export function extractWorkforceDependencies(data, keyProperties, authentication
|
|
|
78
77
|
}
|
|
79
78
|
});
|
|
80
79
|
if (getProp(data, "assignmentIntegrations")) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
data.assignmentIntegrations.forEach(
|
|
80
|
+
let requests = [];
|
|
81
|
+
let urls = [];
|
|
82
|
+
data.assignmentIntegrations.forEach((ai) => {
|
|
84
83
|
if (ai.assignmentTypes) {
|
|
85
|
-
|
|
86
|
-
assignmentKeys.forEach(
|
|
87
|
-
|
|
84
|
+
const assignmentKeys = Object.keys(ai.assignmentTypes);
|
|
85
|
+
assignmentKeys.forEach(k => {
|
|
86
|
+
const urlTemplate = ai.assignmentTypes[k].urlTemplate;
|
|
88
87
|
idTest(urlTemplate, deps);
|
|
89
|
-
|
|
88
|
+
const serviceRequests = urlTest(urlTemplate, authentication);
|
|
90
89
|
if (Array.isArray(serviceRequests.requests) &&
|
|
91
90
|
serviceRequests.requests.length > 0) {
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
requests = requests.concat(serviceRequests.requests);
|
|
92
|
+
urls = urls.concat(serviceRequests.urls);
|
|
94
93
|
}
|
|
95
94
|
});
|
|
96
95
|
}
|
|
97
96
|
});
|
|
98
|
-
if (
|
|
99
|
-
Promise.all(
|
|
100
|
-
|
|
97
|
+
if (requests.length > 0) {
|
|
98
|
+
Promise.all(requests).then(results => {
|
|
99
|
+
const urlHash = {};
|
|
101
100
|
// Get the serviceItemId for the url
|
|
102
101
|
/* istanbul ignore else */
|
|
103
102
|
if (Array.isArray(results)) {
|
|
104
|
-
results.forEach(
|
|
103
|
+
results.forEach((result, i) => {
|
|
105
104
|
/* istanbul ignore else */
|
|
106
105
|
if (result.serviceItemId) {
|
|
107
|
-
urlHash[
|
|
106
|
+
urlHash[urls[i]] = result.serviceItemId;
|
|
108
107
|
/* istanbul ignore else */
|
|
109
108
|
if (deps.indexOf(result.serviceItemId) === -1) {
|
|
110
109
|
deps.push(result.serviceItemId);
|
|
@@ -116,7 +115,7 @@ export function extractWorkforceDependencies(data, keyProperties, authentication
|
|
|
116
115
|
dependencies: deps,
|
|
117
116
|
urlHash: urlHash
|
|
118
117
|
});
|
|
119
|
-
},
|
|
118
|
+
}, e => reject(fail(e)));
|
|
120
119
|
}
|
|
121
120
|
else {
|
|
122
121
|
resolve({
|
|
@@ -142,16 +141,16 @@ export function extractWorkforceDependencies(data, keyProperties, authentication
|
|
|
142
141
|
* @return an updated data object to be stored in the template
|
|
143
142
|
*/
|
|
144
143
|
export function templatizeWorkforce(data, keyProperties, urlHash) {
|
|
145
|
-
keyProperties.forEach(
|
|
144
|
+
keyProperties.forEach(p => {
|
|
146
145
|
/* istanbul ignore else */
|
|
147
146
|
if (getProp(data, p)) {
|
|
148
147
|
if (getProp(data[p], "serviceItemId")) {
|
|
149
148
|
// templatize properties with id and url
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
const id = data[p].serviceItemId;
|
|
150
|
+
let serviceItemIdSuffix = ".itemId";
|
|
152
151
|
/* istanbul ignore else */
|
|
153
152
|
if (getProp(data[p], "url")) {
|
|
154
|
-
|
|
153
|
+
const layerId = getLayerId(data[p].url);
|
|
155
154
|
data[p].url = templatizeTerm(id, id, getReplaceValue(layerId, ".url"));
|
|
156
155
|
serviceItemIdSuffix = getReplaceValue(layerId, serviceItemIdSuffix);
|
|
157
156
|
}
|
|
@@ -165,13 +164,13 @@ export function templatizeWorkforce(data, keyProperties, urlHash) {
|
|
|
165
164
|
});
|
|
166
165
|
data["folderId"] = "{{folderId}}";
|
|
167
166
|
// templatize app integrations
|
|
168
|
-
|
|
169
|
-
integrations.forEach(
|
|
167
|
+
const integrations = data.assignmentIntegrations || [];
|
|
168
|
+
integrations.forEach(i => {
|
|
170
169
|
_templatizeUrlTemplate(i, urlHash);
|
|
171
170
|
/* istanbul ignore else */
|
|
172
171
|
if (i.assignmentTypes) {
|
|
173
|
-
|
|
174
|
-
assignmentKeys.forEach(
|
|
172
|
+
const assignmentKeys = Object.keys(i.assignmentTypes);
|
|
173
|
+
assignmentKeys.forEach(k => {
|
|
175
174
|
_templatizeUrlTemplate(i.assignmentTypes[k], urlHash);
|
|
176
175
|
});
|
|
177
176
|
}
|
|
@@ -187,8 +186,8 @@ export function templatizeWorkforce(data, keyProperties, urlHash) {
|
|
|
187
186
|
* @returns an array of objects with dependency ids
|
|
188
187
|
*/
|
|
189
188
|
export function getWorkforceDependencies(itemTemplate, dependencies) {
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
const properties = itemTemplate.item.properties || {};
|
|
190
|
+
const keyProperties = getKeyWorkforceProperties(2);
|
|
192
191
|
dependencies = keyProperties.reduce(function (acc, v) {
|
|
193
192
|
/* istanbul ignore else */
|
|
194
193
|
if (properties[v] && dependencies.indexOf(properties[v]) < 0) {
|
|
@@ -197,14 +196,14 @@ export function getWorkforceDependencies(itemTemplate, dependencies) {
|
|
|
197
196
|
return acc;
|
|
198
197
|
}, dependencies);
|
|
199
198
|
// We also need the dependencies listed in the Assignment Integrations table
|
|
200
|
-
|
|
199
|
+
const infos = getProp(itemTemplate, "properties.workforceInfos.assignmentIntegrationInfos");
|
|
201
200
|
/* istanbul ignore else */
|
|
202
201
|
if (infos && infos.length > 0) {
|
|
203
|
-
infos.forEach(
|
|
204
|
-
|
|
202
|
+
infos.forEach((info) => {
|
|
203
|
+
const infoKeys = Object.keys(info);
|
|
205
204
|
/* istanbul ignore else */
|
|
206
205
|
if (infoKeys.indexOf("dependencies") > -1) {
|
|
207
|
-
info["dependencies"].forEach(
|
|
206
|
+
info["dependencies"].forEach((d) => {
|
|
208
207
|
/* istanbul ignore else */
|
|
209
208
|
if (dependencies.indexOf(d) < 0) {
|
|
210
209
|
dependencies.push(d);
|
|
@@ -213,48 +212,82 @@ export function getWorkforceDependencies(itemTemplate, dependencies) {
|
|
|
213
212
|
}
|
|
214
213
|
});
|
|
215
214
|
}
|
|
216
|
-
return dependencies.map(
|
|
215
|
+
return dependencies.map(d => {
|
|
217
216
|
return { id: d, name: "" };
|
|
218
217
|
});
|
|
219
218
|
}
|
|
220
219
|
export function getWorkforceServiceInfo(properties, url, authentication) {
|
|
221
|
-
return new Promise(
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
222
221
|
url = url.replace("/rest/admin/services", "/rest/services");
|
|
223
222
|
url = _updateUrl(url);
|
|
224
|
-
|
|
223
|
+
const requests = [
|
|
225
224
|
queryFeatures({
|
|
226
|
-
url: url
|
|
225
|
+
url: `${url}3`,
|
|
227
226
|
where: "1=1",
|
|
228
|
-
authentication
|
|
227
|
+
authentication
|
|
229
228
|
}),
|
|
230
229
|
queryFeatures({
|
|
231
|
-
url: url
|
|
230
|
+
url: `${url}4`,
|
|
232
231
|
where: "1=1",
|
|
233
|
-
authentication
|
|
232
|
+
authentication
|
|
234
233
|
})
|
|
235
234
|
];
|
|
236
|
-
Promise.all(requests).then(
|
|
237
|
-
|
|
235
|
+
Promise.all(requests).then(responses => {
|
|
236
|
+
const [assignmentTypes, assignmentIntegrations] = responses;
|
|
238
237
|
properties.workforceInfos = {
|
|
239
238
|
assignmentTypeInfos: _getAssignmentTypeInfos(assignmentTypes)
|
|
240
239
|
};
|
|
241
|
-
_getAssignmentIntegrationInfos(assignmentIntegrations, authentication).then(
|
|
240
|
+
_getAssignmentIntegrationInfos(assignmentIntegrations, authentication).then(results => {
|
|
242
241
|
properties.workforceInfos["assignmentIntegrationInfos"] = results;
|
|
242
|
+
_updateGlobalIdAndAssignmentType(properties.workforceInfos);
|
|
243
243
|
resolve(properties);
|
|
244
|
-
},
|
|
245
|
-
},
|
|
244
|
+
}, e => reject(fail(e)));
|
|
245
|
+
}, e => reject(fail(e)));
|
|
246
246
|
});
|
|
247
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Wrap global id and assignmenttype values in curly braces
|
|
250
|
+
*
|
|
251
|
+
* Added for issue #734
|
|
252
|
+
*
|
|
253
|
+
* This function will update the provided workforceInfos object
|
|
254
|
+
*
|
|
255
|
+
* @param workforceInfos the object that stores the integration and type info with global ids
|
|
256
|
+
*
|
|
257
|
+
*/
|
|
258
|
+
export function _updateGlobalIdAndAssignmentType(workforceInfos) {
|
|
259
|
+
const updateId = (i) => {
|
|
260
|
+
/* istanbul ignore else */
|
|
261
|
+
if (i["GlobalID"]) {
|
|
262
|
+
i["GlobalID"] = `{${i["GlobalID"]}}`;
|
|
263
|
+
}
|
|
264
|
+
/* istanbul ignore else */
|
|
265
|
+
if (i["assignmenttype"]) {
|
|
266
|
+
i["assignmenttype"] = `{${i["assignmenttype"]}}`;
|
|
267
|
+
}
|
|
268
|
+
return i;
|
|
269
|
+
};
|
|
270
|
+
const assignmentIntegrationInfos = getProp(workforceInfos, "assignmentIntegrationInfos");
|
|
271
|
+
/* istanbul ignore else */
|
|
272
|
+
if (assignmentIntegrationInfos && Array.isArray(assignmentIntegrationInfos)) {
|
|
273
|
+
setProp(workforceInfos, "assignmentIntegrationInfos", assignmentIntegrationInfos.map(updateId));
|
|
274
|
+
}
|
|
275
|
+
const assignmentTypeInfos = getProp(workforceInfos, "assignmentTypeInfos");
|
|
276
|
+
/* istanbul ignore else */
|
|
277
|
+
if (assignmentTypeInfos && Array.isArray(assignmentTypeInfos)) {
|
|
278
|
+
setProp(workforceInfos, "assignmentTypeInfos", assignmentTypeInfos.map(updateId));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
248
281
|
export function _getAssignmentTypeInfos(assignmentTypes) {
|
|
249
282
|
// Assignment Types
|
|
250
|
-
|
|
251
|
-
|
|
283
|
+
const assignmentTypeInfos = [];
|
|
284
|
+
const keyAssignmentTypeProps = [
|
|
252
285
|
"description",
|
|
253
286
|
assignmentTypes.globalIdFieldName
|
|
254
287
|
];
|
|
255
|
-
assignmentTypes.features.forEach(
|
|
256
|
-
|
|
257
|
-
keyAssignmentTypeProps.forEach(
|
|
288
|
+
assignmentTypes.features.forEach((f) => {
|
|
289
|
+
const info = {};
|
|
290
|
+
keyAssignmentTypeProps.forEach(p => {
|
|
258
291
|
info[p] = f.attributes[p];
|
|
259
292
|
});
|
|
260
293
|
assignmentTypeInfos.push(info);
|
|
@@ -262,27 +295,27 @@ export function _getAssignmentTypeInfos(assignmentTypes) {
|
|
|
262
295
|
return assignmentTypeInfos;
|
|
263
296
|
}
|
|
264
297
|
export function _getAssignmentIntegrationInfos(assignmentIntegrations, authentication) {
|
|
265
|
-
return new Promise(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
298
|
+
return new Promise((resolve, reject) => {
|
|
299
|
+
let requests = [];
|
|
300
|
+
let urls = [];
|
|
301
|
+
const assignmentIntegrationInfos = [];
|
|
302
|
+
const keyAssignmentIntegrationsProps = [
|
|
270
303
|
"appid",
|
|
271
304
|
assignmentIntegrations.globalIdFieldName,
|
|
272
305
|
"prompt",
|
|
273
306
|
"urltemplate",
|
|
274
307
|
"assignmenttype"
|
|
275
308
|
];
|
|
276
|
-
assignmentIntegrations.features.forEach(
|
|
277
|
-
|
|
278
|
-
keyAssignmentIntegrationsProps.forEach(
|
|
309
|
+
assignmentIntegrations.features.forEach((f) => {
|
|
310
|
+
const info = {};
|
|
311
|
+
keyAssignmentIntegrationsProps.forEach(p => {
|
|
279
312
|
info[p] = f.attributes[p];
|
|
280
313
|
/* istanbul ignore else */
|
|
281
314
|
if (p === "urltemplate") {
|
|
282
|
-
|
|
283
|
-
|
|
315
|
+
const urlTemplate = f.attributes[p];
|
|
316
|
+
const ids = getIDs(urlTemplate);
|
|
284
317
|
info["dependencies"] = ids;
|
|
285
|
-
|
|
318
|
+
const serviceRequests = urlTest(urlTemplate, authentication);
|
|
286
319
|
/* istanbul ignore else */
|
|
287
320
|
if (Array.isArray(serviceRequests.requests) &&
|
|
288
321
|
serviceRequests.requests.length > 0) {
|
|
@@ -293,24 +326,24 @@ export function _getAssignmentIntegrationInfos(assignmentIntegrations, authentic
|
|
|
293
326
|
});
|
|
294
327
|
assignmentIntegrationInfos.push(info);
|
|
295
328
|
});
|
|
296
|
-
getUrlDependencies(requests, urls).then(
|
|
297
|
-
assignmentIntegrationInfos.forEach(
|
|
329
|
+
getUrlDependencies(requests, urls).then(results => {
|
|
330
|
+
assignmentIntegrationInfos.forEach(ai => {
|
|
298
331
|
_templatizeUrlTemplate(ai, results.urlHash);
|
|
299
332
|
});
|
|
300
333
|
resolve(assignmentIntegrationInfos);
|
|
301
|
-
},
|
|
334
|
+
}, e => reject(fail(e)));
|
|
302
335
|
});
|
|
303
336
|
}
|
|
304
337
|
export function getUrlDependencies(requests, urls) {
|
|
305
|
-
return new Promise(
|
|
306
|
-
|
|
338
|
+
return new Promise((resolve, reject) => {
|
|
339
|
+
const dependencies = [];
|
|
307
340
|
if (requests.length > 0) {
|
|
308
|
-
Promise.all(requests).then(
|
|
309
|
-
|
|
341
|
+
Promise.all(requests).then(results => {
|
|
342
|
+
const urlHash = {};
|
|
310
343
|
// Get the serviceItemId for the url
|
|
311
344
|
/* istanbul ignore else */
|
|
312
345
|
if (Array.isArray(results)) {
|
|
313
|
-
results.forEach(
|
|
346
|
+
results.forEach((result, i) => {
|
|
314
347
|
/* istanbul ignore else */
|
|
315
348
|
if (result.serviceItemId) {
|
|
316
349
|
urlHash[urls[i]] = result.serviceItemId;
|
|
@@ -322,14 +355,14 @@ export function getUrlDependencies(requests, urls) {
|
|
|
322
355
|
});
|
|
323
356
|
}
|
|
324
357
|
resolve({
|
|
325
|
-
dependencies
|
|
326
|
-
urlHash
|
|
358
|
+
dependencies,
|
|
359
|
+
urlHash
|
|
327
360
|
});
|
|
328
|
-
},
|
|
361
|
+
}, e => reject(fail(e)));
|
|
329
362
|
}
|
|
330
363
|
else {
|
|
331
364
|
resolve({
|
|
332
|
-
dependencies
|
|
365
|
+
dependencies,
|
|
333
366
|
urlHash: {}
|
|
334
367
|
});
|
|
335
368
|
}
|
|
@@ -344,21 +377,21 @@ export function getUrlDependencies(requests, urls) {
|
|
|
344
377
|
export function _templatizeUrlTemplate(item, urlHash) {
|
|
345
378
|
// v1 uses urlTemplate
|
|
346
379
|
// v2 uses urltemplate
|
|
347
|
-
|
|
380
|
+
const urlTemplateVar = getProp(item, "urlTemplate")
|
|
348
381
|
? "urlTemplate"
|
|
349
382
|
: "urltemplate";
|
|
350
|
-
|
|
383
|
+
let urlTemplate = getProp(item, urlTemplateVar);
|
|
351
384
|
/* istanbul ignore else */
|
|
352
385
|
if (urlTemplate) {
|
|
353
|
-
|
|
354
|
-
ids.forEach(
|
|
386
|
+
const ids = getIDs(urlTemplate);
|
|
387
|
+
ids.forEach(id => {
|
|
355
388
|
urlTemplate = urlTemplate.replace(id, templatizeTerm(id, id, ".itemId"));
|
|
356
389
|
});
|
|
357
|
-
|
|
358
|
-
urls.forEach(
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
390
|
+
const urls = _getURLs(urlTemplate);
|
|
391
|
+
urls.forEach(url => {
|
|
392
|
+
const layerId = getLayerId(url);
|
|
393
|
+
const replaceValue = getReplaceValue(layerId, ".url");
|
|
394
|
+
const id = urlHash[url];
|
|
362
395
|
/* istanbul ignore else */
|
|
363
396
|
if (Array.isArray(item.dependencies) &&
|
|
364
397
|
item.dependencies.indexOf(id) < 0) {
|
|
@@ -376,12 +409,12 @@ export function getLayerId(url) {
|
|
|
376
409
|
}
|
|
377
410
|
export function getReplaceValue(layerId, suffix) {
|
|
378
411
|
return isNaN(Number.parseInt(layerId, 10))
|
|
379
|
-
?
|
|
380
|
-
:
|
|
412
|
+
? `${suffix}`
|
|
413
|
+
: `.layer${layerId}${suffix}`;
|
|
381
414
|
}
|
|
382
415
|
export function postProcessWorkforceTemplates(templates) {
|
|
383
|
-
|
|
384
|
-
|
|
416
|
+
const groupUpdates = {};
|
|
417
|
+
const _templates = templates.map(t => {
|
|
385
418
|
// templatize Workforce Project
|
|
386
419
|
t = _templatizeWorkforceProject(t, groupUpdates);
|
|
387
420
|
// templatize Workforce Dispatcher
|
|
@@ -390,7 +423,7 @@ export function postProcessWorkforceTemplates(templates) {
|
|
|
390
423
|
t = _templatizeWorkforceDispatcherOrWorker(t, "Workforce Worker");
|
|
391
424
|
return t;
|
|
392
425
|
});
|
|
393
|
-
return _templates.map(
|
|
426
|
+
return _templates.map(t => {
|
|
394
427
|
if (groupUpdates[t.itemId]) {
|
|
395
428
|
t.dependencies = t.dependencies.concat(groupUpdates[t.itemId]);
|
|
396
429
|
}
|
|
@@ -400,37 +433,37 @@ export function postProcessWorkforceTemplates(templates) {
|
|
|
400
433
|
export function _templatizeWorkforceProject(t, groupUpdates) {
|
|
401
434
|
/* istanbul ignore else */
|
|
402
435
|
if (isWorkforceProject(t)) {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
Object.keys(
|
|
436
|
+
const properties = t.item.properties || {};
|
|
437
|
+
const keyProperties = getKeyWorkforceProperties(2);
|
|
438
|
+
const groupId = properties["workforceProjectGroupId"];
|
|
439
|
+
const shuffleIds = [];
|
|
440
|
+
Object.keys(properties).forEach((p) => {
|
|
408
441
|
/* istanbul ignore else */
|
|
409
|
-
if (
|
|
410
|
-
|
|
442
|
+
if (keyProperties.indexOf(p) > -1) {
|
|
443
|
+
const id = properties[p];
|
|
411
444
|
/* istanbul ignore else */
|
|
412
|
-
if (id !==
|
|
413
|
-
|
|
445
|
+
if (id !== groupId) {
|
|
446
|
+
shuffleIds.push(id);
|
|
414
447
|
}
|
|
415
|
-
t.item.properties[p] = templatizeTerm(
|
|
448
|
+
t.item.properties[p] = templatizeTerm(properties[p], properties[p], ".itemId");
|
|
416
449
|
}
|
|
417
450
|
});
|
|
418
451
|
// update the dependencies
|
|
419
|
-
t.dependencies = t.dependencies.filter(
|
|
452
|
+
t.dependencies = t.dependencies.filter((d) => d !== groupId && shuffleIds.indexOf(d) < 0);
|
|
420
453
|
// shuffle and cleanup
|
|
421
|
-
|
|
454
|
+
const workforceInfos = getProp(t, "properties.workforceInfos");
|
|
422
455
|
/* istanbul ignore else */
|
|
423
|
-
if (
|
|
424
|
-
Object.keys(
|
|
425
|
-
|
|
456
|
+
if (workforceInfos) {
|
|
457
|
+
Object.keys(workforceInfos).forEach(k => {
|
|
458
|
+
workforceInfos[k].forEach((wInfo) => {
|
|
426
459
|
/* istanbul ignore else */
|
|
427
460
|
if (wInfo.dependencies) {
|
|
428
|
-
wInfo.dependencies.forEach(
|
|
461
|
+
wInfo.dependencies.forEach((id) => {
|
|
429
462
|
/* istanbul ignore else */
|
|
430
|
-
if (
|
|
431
|
-
|
|
463
|
+
if (shuffleIds.indexOf(id) < 0) {
|
|
464
|
+
shuffleIds.push(id);
|
|
432
465
|
}
|
|
433
|
-
|
|
466
|
+
const depIndex = t.dependencies.indexOf(id);
|
|
434
467
|
/* istanbul ignore else */
|
|
435
468
|
if (depIndex > -1) {
|
|
436
469
|
t.dependencies.splice(depIndex, 1);
|
|
@@ -442,15 +475,15 @@ export function _templatizeWorkforceProject(t, groupUpdates) {
|
|
|
442
475
|
});
|
|
443
476
|
}
|
|
444
477
|
// move the dependencies to the group
|
|
445
|
-
groupUpdates[
|
|
478
|
+
groupUpdates[groupId] = shuffleIds;
|
|
446
479
|
}
|
|
447
480
|
return t;
|
|
448
481
|
}
|
|
449
482
|
export function _templatizeWorkforceDispatcherOrWorker(t, type) {
|
|
450
483
|
/* istanbul ignore else */
|
|
451
484
|
if ((t.item.typeKeywords || []).indexOf(type) > -1) {
|
|
452
|
-
|
|
453
|
-
|
|
485
|
+
const properties = t.item.properties || {};
|
|
486
|
+
const fsId = properties["workforceFeatureServiceId"];
|
|
454
487
|
/* istanbul ignore else */
|
|
455
488
|
if (fsId) {
|
|
456
489
|
t.item.properties["workforceFeatureServiceId"] = templatizeTerm(fsId, fsId, ".itemId");
|
|
@@ -487,10 +520,10 @@ export function getKeyWorkforceProperties(version) {
|
|
|
487
520
|
* @returns an object with any pending requests and the urls that requests were made to
|
|
488
521
|
*/
|
|
489
522
|
export function urlTest(v, authentication) {
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
urls.forEach(
|
|
493
|
-
|
|
523
|
+
const urls = _getURLs(v);
|
|
524
|
+
const requests = [];
|
|
525
|
+
urls.forEach(url => {
|
|
526
|
+
const options = {
|
|
494
527
|
f: "json",
|
|
495
528
|
authentication: authentication
|
|
496
529
|
};
|
|
@@ -502,9 +535,7 @@ export function urlTest(v, authentication) {
|
|
|
502
535
|
};
|
|
503
536
|
}
|
|
504
537
|
export function _getURLs(v) {
|
|
505
|
-
return regExTest(v, /=(http.*?FeatureServer.*?(?=&|$))/gi).map(
|
|
506
|
-
return _v.replace("=", "");
|
|
507
|
-
});
|
|
538
|
+
return regExTest(v, /=(http.*?FeatureServer.*?(?=&|$))/gi).map(_v => _v.replace("=", ""));
|
|
508
539
|
}
|
|
509
540
|
//#region Deploy Process ---------------------------------------------------------------------------------------//
|
|
510
541
|
/**
|
|
@@ -515,63 +546,63 @@ export function _getURLs(v) {
|
|
|
515
546
|
* @return A promise that will resolve with { "success" === true || false }
|
|
516
547
|
*/
|
|
517
548
|
export function fineTuneCreatedWorkforceItem(newlyCreatedItem, destinationAuthentication, url, templateDictionary) {
|
|
518
|
-
return new Promise(
|
|
519
|
-
destinationAuthentication.getUser().then(
|
|
549
|
+
return new Promise((resolve, reject) => {
|
|
550
|
+
destinationAuthentication.getUser().then(user => {
|
|
520
551
|
// update url with slash if necessary
|
|
521
552
|
url = _updateUrl(url);
|
|
522
553
|
// Dispatchers...index 2 for workforce v2
|
|
523
554
|
// for v1 we need tp fetch from dispatchers for v2 we use the items url
|
|
524
|
-
|
|
555
|
+
const dispatchers = getProp(newlyCreatedItem, "data.dispatchers");
|
|
525
556
|
// add current user as dispatcher
|
|
526
|
-
_updateDispatchers(dispatchers && dispatchers.url ? dispatchers.url : url
|
|
557
|
+
_updateDispatchers(dispatchers && dispatchers.url ? dispatchers.url : `${url}2`, user.username || "", user.fullName || "", destinationAuthentication, templateDictionary.isPortal).then(results => {
|
|
527
558
|
// for workforce v2 we storce the key details from the workforce service as workforceInfos
|
|
528
559
|
// now we need to detemplatize it and update the workforce service
|
|
529
|
-
|
|
560
|
+
let workforceInfos = getProp(newlyCreatedItem, "properties.workforceInfos");
|
|
530
561
|
if (workforceInfos && url) {
|
|
531
562
|
workforceInfos = replaceInTemplate(workforceInfos, templateDictionary);
|
|
532
|
-
_getFields(url, [2, 3, 4], destinationAuthentication).then(
|
|
563
|
+
_getFields(url, [2, 3, 4], destinationAuthentication).then(fields => {
|
|
533
564
|
// Assignment Types...index 3
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
565
|
+
const assignmentTypeUrl = `${url}3`;
|
|
566
|
+
const assignmentTypeInfos = workforceInfos.assignmentTypeInfos;
|
|
567
|
+
const assignmentTypeFeatures = _getAddFeatures(assignmentTypeInfos, fields[assignmentTypeUrl]);
|
|
568
|
+
const assignmentTypePromise = _applyEdits(assignmentTypeUrl, assignmentTypeFeatures, destinationAuthentication, true);
|
|
538
569
|
// Assignment Integrations...index 4
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
570
|
+
const assignmentIntegrationUrl = `${url}4`;
|
|
571
|
+
const assignmentIntegrationInfos = workforceInfos.assignmentIntegrationInfos;
|
|
572
|
+
const assignmentIntegrationFeatures = _getAddFeatures(assignmentIntegrationInfos, fields[assignmentIntegrationUrl]);
|
|
573
|
+
const assignmentIntegrationPromise = _applyEdits(assignmentIntegrationUrl, assignmentIntegrationFeatures, destinationAuthentication, true);
|
|
543
574
|
Promise.all([
|
|
544
575
|
assignmentTypePromise,
|
|
545
576
|
assignmentIntegrationPromise
|
|
546
577
|
]).then(resolve, reject);
|
|
547
|
-
},
|
|
578
|
+
}, e => reject(fail(e)));
|
|
548
579
|
}
|
|
549
580
|
else {
|
|
550
581
|
resolve({ success: results });
|
|
551
582
|
}
|
|
552
|
-
},
|
|
553
|
-
},
|
|
583
|
+
}, e => reject(fail(e)));
|
|
584
|
+
}, e => reject(fail(e)));
|
|
554
585
|
});
|
|
555
586
|
}
|
|
556
587
|
export function _getFields(url, ids, authentication) {
|
|
557
|
-
return new Promise(
|
|
558
|
-
|
|
588
|
+
return new Promise((resolve, reject) => {
|
|
589
|
+
const options = {
|
|
559
590
|
f: "json",
|
|
560
591
|
fields: "*",
|
|
561
592
|
authentication: authentication
|
|
562
593
|
};
|
|
563
594
|
url = _updateUrl(url);
|
|
564
|
-
|
|
565
|
-
ids.forEach(
|
|
566
|
-
promises.push(rest_request(
|
|
595
|
+
const promises = [];
|
|
596
|
+
ids.forEach(id => {
|
|
597
|
+
promises.push(rest_request(`${url}${id}`, options));
|
|
567
598
|
});
|
|
568
|
-
Promise.all(promises).then(
|
|
569
|
-
|
|
570
|
-
results.forEach(
|
|
571
|
-
finalResult[
|
|
599
|
+
Promise.all(promises).then(results => {
|
|
600
|
+
const finalResult = {};
|
|
601
|
+
results.forEach(r => {
|
|
602
|
+
finalResult[`${url}${r.id}`] = r.fields.map((f) => f.name);
|
|
572
603
|
});
|
|
573
604
|
resolve(finalResult);
|
|
574
|
-
},
|
|
605
|
+
}, e => reject(fail(e)));
|
|
575
606
|
});
|
|
576
607
|
}
|
|
577
608
|
export function _updateUrl(url) {
|
|
@@ -579,11 +610,11 @@ export function _updateUrl(url) {
|
|
|
579
610
|
return url;
|
|
580
611
|
}
|
|
581
612
|
export function _getAddFeatures(updateInfos, fields) {
|
|
582
|
-
|
|
583
|
-
updateInfos.forEach(
|
|
584
|
-
|
|
585
|
-
Object.keys(update).forEach(
|
|
586
|
-
|
|
613
|
+
const features = [];
|
|
614
|
+
updateInfos.forEach((update) => {
|
|
615
|
+
const f = {};
|
|
616
|
+
Object.keys(update).forEach(k => {
|
|
617
|
+
const fieldName = _getField(k, fields);
|
|
587
618
|
f[fieldName] = update[k];
|
|
588
619
|
});
|
|
589
620
|
features.push({ attributes: f });
|
|
@@ -591,7 +622,7 @@ export function _getAddFeatures(updateInfos, fields) {
|
|
|
591
622
|
return features;
|
|
592
623
|
}
|
|
593
624
|
export function _getField(name, fields) {
|
|
594
|
-
return fields.filter(
|
|
625
|
+
return fields.filter(f => f.toLowerCase() === name.toLowerCase())[0];
|
|
595
626
|
}
|
|
596
627
|
/**
|
|
597
628
|
* Updates the dispatchers service to include the current user as a dispatcher
|
|
@@ -604,24 +635,24 @@ export function _getField(name, fields) {
|
|
|
604
635
|
* @protected
|
|
605
636
|
*/
|
|
606
637
|
export function _updateDispatchers(url, name, fullName, authentication, isPortal) {
|
|
607
|
-
return new Promise(
|
|
638
|
+
return new Promise((resolve, reject) => {
|
|
608
639
|
if (url) {
|
|
609
|
-
|
|
640
|
+
const fieldName = isPortal ? "userid" : "userId";
|
|
610
641
|
queryFeatures({
|
|
611
|
-
url
|
|
612
|
-
where:
|
|
613
|
-
authentication
|
|
614
|
-
}).then(
|
|
642
|
+
url,
|
|
643
|
+
where: `${fieldName} = '${name}'`,
|
|
644
|
+
authentication
|
|
645
|
+
}).then((results) => {
|
|
615
646
|
if (results && results.features) {
|
|
616
647
|
if (results.features.length === 0) {
|
|
617
|
-
|
|
648
|
+
const features = [
|
|
618
649
|
{
|
|
619
650
|
attributes: {
|
|
620
651
|
name: fullName
|
|
621
652
|
}
|
|
622
653
|
}
|
|
623
654
|
];
|
|
624
|
-
features[0].attributes[
|
|
655
|
+
features[0].attributes[fieldName] = name;
|
|
625
656
|
_applyEdits(url, features, authentication).then(resolve, reject);
|
|
626
657
|
}
|
|
627
658
|
else {
|
|
@@ -631,24 +662,23 @@ export function _updateDispatchers(url, name, fullName, authentication, isPortal
|
|
|
631
662
|
else {
|
|
632
663
|
resolve(false);
|
|
633
664
|
}
|
|
634
|
-
},
|
|
665
|
+
}, e => reject(fail(e)));
|
|
635
666
|
}
|
|
636
667
|
else {
|
|
637
668
|
resolve(false);
|
|
638
669
|
}
|
|
639
670
|
});
|
|
640
671
|
}
|
|
641
|
-
export function _applyEdits(url, adds, authentication, useGlobalIds // only set when contains a globalid
|
|
672
|
+
export function _applyEdits(url, adds, authentication, useGlobalIds = false // only set when contains a globalid
|
|
642
673
|
) {
|
|
643
|
-
|
|
644
|
-
return new Promise(function (resolve, reject) {
|
|
674
|
+
return new Promise((resolve, reject) => {
|
|
645
675
|
if (adds.length > 0) {
|
|
646
676
|
applyEdits({
|
|
647
|
-
url
|
|
648
|
-
adds
|
|
649
|
-
useGlobalIds
|
|
650
|
-
authentication
|
|
651
|
-
}).then(
|
|
677
|
+
url,
|
|
678
|
+
adds,
|
|
679
|
+
useGlobalIds,
|
|
680
|
+
authentication
|
|
681
|
+
}).then(addResults => {
|
|
652
682
|
if (addResults && addResults.addResults) {
|
|
653
683
|
resolve(true);
|
|
654
684
|
}
|
|
@@ -658,13 +688,11 @@ export function _applyEdits(url, adds, authentication, useGlobalIds // only set
|
|
|
658
688
|
message: "Failed to add dispatch record."
|
|
659
689
|
}));
|
|
660
690
|
}
|
|
661
|
-
},
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
}));
|
|
667
|
-
});
|
|
691
|
+
}, e => reject(fail({
|
|
692
|
+
success: false,
|
|
693
|
+
message: "Failed to add dispatch record.",
|
|
694
|
+
error: e
|
|
695
|
+
})));
|
|
668
696
|
}
|
|
669
697
|
else {
|
|
670
698
|
resolve(true);
|