dts-backoffice-util 16.0.0 → 17.0.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/README.md +143 -52
- package/esm2022/dts-backoffice-util.mjs +4 -4
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +305 -272
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +7 -7
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +208 -183
- package/esm2022/lib/dts-backoffice-util.module.mjs +54 -54
- package/esm2022/lib/interfaces/filter-range.interface.mjs +1 -1
- package/esm2022/lib/interfaces/totvs-response.interface.mjs +1 -1
- package/esm2022/lib/model/session-info.model.mjs +67 -67
- package/esm2022/lib/pipes/dts-date-format.pipe.mjs +20 -20
- package/esm2022/lib/services/breadcrumb-control.service.mjs +99 -99
- package/esm2022/lib/services/cache-params.service.mjs +25 -25
- package/esm2022/lib/services/menu-datasul.service.mjs +118 -118
- package/esm2022/lib/services/profile.service.mjs +55 -55
- package/esm2022/lib/services/report.service.mjs +57 -57
- package/esm2022/lib/services/session-info.service.mjs +36 -36
- package/esm2022/lib/services/translate.service.mjs +23 -23
- package/esm2022/lib/utils/date.util.mjs +56 -56
- package/esm2022/lib/utils/disclaimer.util.mjs +490 -490
- package/esm2022/lib/utils/field-validation.util.mjs +179 -179
- package/esm2022/lib/utils/file.util.mjs +151 -151
- package/esm2022/lib/utils/filter-range.util.mjs +32 -32
- package/esm2022/lib/utils/generic-functions.utils.mjs +170 -170
- package/esm2022/public-api.mjs +33 -33
- package/fesm2022/dts-backoffice-util.mjs +2013 -1955
- package/fesm2022/dts-backoffice-util.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +53 -49
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.d.ts +68 -60
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +30 -30
- package/lib/dts-backoffice-util.module.d.ts +14 -14
- package/lib/interfaces/filter-range.interface.d.ts +18 -18
- package/lib/interfaces/totvs-response.interface.d.ts +4 -4
- package/lib/model/session-info.model.d.ts +40 -40
- package/lib/pipes/dts-date-format.pipe.d.ts +7 -7
- package/lib/services/breadcrumb-control.service.d.ts +18 -18
- package/lib/services/cache-params.service.d.ts +10 -10
- package/lib/services/menu-datasul.service.d.ts +27 -27
- package/lib/services/profile.service.d.ts +25 -25
- package/lib/services/report.service.d.ts +31 -31
- package/lib/services/session-info.service.d.ts +12 -12
- package/lib/services/translate.service.d.ts +8 -8
- package/lib/utils/date.util.d.ts +9 -9
- package/lib/utils/disclaimer.util.d.ts +40 -40
- package/lib/utils/field-validation.util.d.ts +21 -21
- package/lib/utils/file.util.d.ts +23 -23
- package/lib/utils/filter-range.util.d.ts +7 -7
- package/lib/utils/generic-functions.utils.d.ts +24 -24
- package/package.json +5 -5
- package/public-api.d.ts +20 -20
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export class ScheduleParameters {
|
|
2
|
-
}
|
|
3
|
-
export class ExecutionStatus {
|
|
4
|
-
}
|
|
5
|
-
export class ExecutionParameters {
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export class ScheduleParameters {
|
|
2
|
+
}
|
|
3
|
+
export class ExecutionStatus {
|
|
4
|
+
}
|
|
5
|
+
export class ExecutionParameters {
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHRzLWJhY2tvZmZpY2UtdXRpbC9zcmMvbGliL2NvbXBvbmVudHMvdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxPQUFPLGtCQUFrQjtDQWM5QjtBQVVELE1BQU0sT0FBTyxlQUFlO0NBTTNCO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjtDQVcvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVQYXJhbWV0ZXJzIGltcGxlbWVudHMgSVNjaGVkdWxlUGFyYW1ldGVycyB7XHJcbiAgICBleGVjdXRpb25UeXBlOiBudW1iZXI7XHJcbiAgICBleGVjQXBwb2ludERhdGU6IERhdGU7XHJcbiAgICBleGVjQXBwb2ludEhvdXI6IHN0cmluZztcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcmVwZWF0RXhlY3V0aW9uOiBib29sZWFuO1xyXG4gICAgcmVwZWF0VHlwZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5OiBzdHJpbmc7XHJcbiAgICBmcmVxdWVuY3lWYWx1ZTogbnVtYmVyO1xyXG4gICAgZnJlcXVlbmN5VHlwZTogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VySW5pdDogc3RyaW5nO1xyXG4gICAgZXhlY0FwcG9pbnRIb3VyRmluYWw6IHN0cmluZztcclxuICAgIHNlbGVjdFdlZWtseXM6IFtdO1xyXG4gICAgZGF5T2ZNb250aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFeGVjdXRpb25TdGF0dXMge1xyXG4gICAgam9iU2NoZWR1bGVJRDogc3RyaW5nO1xyXG4gICAgZXhlY3V0aW9uSUQ6IHN0cmluZztcclxuICAgIHN0YXJ0ZWREYXRlOiBEYXRlO1xyXG4gICAgZXJyb3I6IHN0cmluZztcclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uU3RhdHVzIGltcGxlbWVudHMgSUV4ZWN1dGlvblN0YXR1cyB7XHJcbiAgICBqb2JTY2hlZHVsZUlEOiBzdHJpbmc7XHJcbiAgICBleGVjdXRpb25JRDogc3RyaW5nO1xyXG4gICAgc3RhcnRlZERhdGU6IERhdGU7XHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgc3RhdHVzOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4ZWN1dGlvblBhcmFtZXRlcnMge1xyXG4gICAgZXhlY3V0aW9uU2VydmVyOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtTmFtZTogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxOYW1lOiBzdHJpbmc7XHJcbiAgICBwcm9ncmFtRU1TNT86IGJvb2xlYW47XHJcbiAgICBwcm9ncmFtU3R5bGU/OiBudW1iZXI7XHJcbiAgICBwcm9ncmFtVmVyc2lvbj86IHN0cmluZztcclxuICAgIGJ1c2luZXNzUGFyYW1zOiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1EaWdpdERlZj86IEFycmF5PGFueT47XHJcbiAgICBwYXJhbURpZ2l0RGF0YT86IEFycmF5PGFueT47XHJcbiAgICBwYXJhbVNlbGVjdGlvbnM/OiBBcnJheTxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uUGFyYW1ldGVycyBpbXBsZW1lbnRzIElFeGVjdXRpb25QYXJhbWV0ZXJzIHtcclxuICAgIGV4ZWN1dGlvblNlcnZlcjogc3RyaW5nO1xyXG4gICAgcHJvZ3JhbU5hbWU6IHN0cmluZztcclxuICAgIGV4dGVybmFsTmFtZTogc3RyaW5nO1xyXG4gICAgcHJvZ3JhbUVNUzU/OiBib29sZWFuO1xyXG4gICAgcHJvZ3JhbVN0eWxlPzogbnVtYmVyO1xyXG4gICAgcHJvZ3JhbVZlcnNpb24/OiBzdHJpbmc7XHJcbiAgICBidXNpbmVzc1BhcmFtczogQXJyYXk8YW55PjtcclxuICAgIHBhcmFtRGlnaXREZWY/OiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1EaWdpdERhdGE/OiBBcnJheTxhbnk+O1xyXG4gICAgcGFyYW1TZWxlY3Rpb25zPzogQXJyYXk8YW55PjtcclxufVxyXG4iXX0=
|
package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs
CHANGED
|
@@ -1,183 +1,208 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { ExecutionStatus } from './totvs-schedule-execution.model';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
export class TotvsScheduleExecutionService {
|
|
8
|
-
constructor(http) {
|
|
9
|
-
this.http = http;
|
|
10
|
-
this.headers = { headers: { 'X-PO-Screen-Lock': 'true' } };
|
|
11
|
-
this.urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';
|
|
12
|
-
this.urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';
|
|
13
|
-
this.urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';
|
|
14
|
-
}
|
|
15
|
-
getFilteredItems(params) {
|
|
16
|
-
const urlParams = new Array();
|
|
17
|
-
urlParams.push(`pageSize=${params.pageSize.toString()}`);
|
|
18
|
-
urlParams.push(`page=${params.page.toString()}`);
|
|
19
|
-
if (params.filter && params.filter.length > 0) {
|
|
20
|
-
urlParams.push(`quickSearch=${params.filter}`);
|
|
21
|
-
}
|
|
22
|
-
return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);
|
|
23
|
-
}
|
|
24
|
-
getObjectByValue(id) {
|
|
25
|
-
return this.http.get(`${this.urlCadServidor}/${id}`, this.headers);
|
|
26
|
-
}
|
|
27
|
-
createExecution(parameters, loading) {
|
|
28
|
-
const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\/g, '*|'));
|
|
29
|
-
if (loading) {
|
|
30
|
-
return this.http.post(`${this.urlJobScheduler}`, params, this.headers);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return this.http.post(`${this.urlJobScheduler}`, params);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
createExecutionForNow(executionParams, loading) {
|
|
37
|
-
let jobScheduleParams;
|
|
38
|
-
const date = new Date();
|
|
39
|
-
const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\/g, '*|'));
|
|
40
|
-
if (!params.
|
|
41
|
-
params.
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
execStatus =
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBMEMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFhdEMsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVgzQixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRXRELG1CQUFjLEdBQUcsMkRBQTJELENBQUM7UUFDN0Usb0JBQWUsR0FBRywyREFBMkQsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLDJEQUEyRCxDQUFDO0lBTy9DLENBQUM7SUFFeEMsZ0JBQWdCLENBQUMsTUFBbUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUV0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENB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RyxFQUFFLENBQUM7U0FBRTtRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7a0lBek1RLDZCQUE2QjtzSUFBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBFeGVjdXRpb25TdGF0dXMsIElFeGVjdXRpb25QYXJhbWV0ZXJzLCBJRXhlY3V0aW9uU3RhdHVzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaGVhZGVycyA9IHsgaGVhZGVyczogeyAnWC1QTy1TY3JlZW4tTG9jayc6ICd0cnVlJyB9IH07XHJcblxyXG4gICAgcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZHRzL2RhdGFzdWwtcmVzdC9yZXNvdXJjZXMvcHJnL2J0Yi92MS9zZXJ2aWRvcmVzRXhlY3VjYW8nO1xyXG4gICAgcHJpdmF0ZSB1cmxKb2JTY2hlZHVsZXIgPSAnL2R0cy9kYXRhc3VsLXJlc3QvcmVzb3VyY2VzL3ByZy9mcmFtZXdvcmsvdjEvam9iU2NoZWR1bGVyJztcclxuICAgIHByaXZhdGUgdXJsSm9iRXhlY3V0aW9uID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZnJhbWV3b3JrL3YxL2pvYkV4ZWN1dGlvbic7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZ2VuZXJpY3Nab29tJztcclxuICAgIC8vIHByaXZhdGUgdXJsSm9iU2NoZWR1bGVyID0gJy9qb2JTY2hlZHVsZXInO1xyXG5cclxuICAgIHByaXZhdGUgam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZVNpemU9JHtwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZT0ke3BhcmFtcy5wYWdlLnRvU3RyaW5nKCl9YCk7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyICYmIHBhcmFtcy5maWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB1cmxQYXJhbXMucHVzaChgcXVpY2tTZWFyY2g9JHtwYXJhbXMuZmlsdGVyfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxDYWRTZXJ2aWRvcn0/JHt1cmxQYXJhbXMuam9pbignJicpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdEJ5VmFsdWUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybENhZFNlcnZpZG9yfS8ke2lkfWAsIHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRXhlY3V0aW9uKHBhcmFtZXRlcnM6IE9iamVjdCwgbG9hZGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnKnwnKSk7XHJcblxyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVybEpvYlNjaGVkdWxlcn1gLCBwYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUV4ZWN1dGlvbkZvck5vdyhleGVjdXRpb25QYXJhbXM6IElFeGVjdXRpb25QYXJhbWV0ZXJzLCBsb2FkaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBsZXQgam9iU2NoZWR1bGVQYXJhbXM6IGFueTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGVjdXRpb25QYXJhbXMpLnJlcGxhY2UoL1xcXFxcXFxcL2csICcqfCcpKTtcclxuICAgICAgICBpZiAoIXBhcmFtcy5idXNpbmVzc1BhcmFtcyB8fCBwYXJhbXMuYnVzaW5lc3NQYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5idXNpbmVzc1BhcmFtcyA9IFt7IGNoYXZlOiAnJywgdmFsb3I6ICcnIH1dO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMgPSB7fTtcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5zdGF0dXMgPSAnYWN0aXZlJztcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5wcm9jZXNzSUQgPSBwYXJhbXMucHJvZ3JhbU5hbWU7XHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMuZmlyc3RFeGVjdXRpb24gPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7KGRhdGUuZ2V0TW9udGgoKSArIDEpfS0ke2RhdGUuZ2V0RGF0ZSgpfVQke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9OjAwLjAwMFpgO1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnJlY3VycmVudCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIgPSB7XHJcbiAgICAgICAgICAgIHBhcmFtZXRyb3M6IFtcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdycHdTZXJ2ZXInLCB2YWxvcjogcGFyYW1zLmV4ZWN1dGlvblNlcnZlciB9LFxyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHBhcmFtcy5leHRlcm5hbE5hbWUgfSxcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdSUFdfUFJHX0VNUzUnLCB2YWxvcjogcGFyYW1zLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHBhcmFtcy5wcm9ncmFtVmVyc2lvbiB9LFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbWV0cm9zX25lZ29jaW86IHBhcmFtcy5idXNpbmVzc1BhcmFtcyB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51cmxKb2JTY2hlZHVsZXJ9YCwgam9iU2NoZWR1bGVQYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIGpvYlNjaGVkdWxlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RXhlY3V0aW9uQnlKb2JTY2hlZHVsZUlEKGpvYlNjaGVkdWxlSUQ6IHN0cmluZywgbG9hZGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJRXhlY3V0aW9uU3RhdHVzPiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxKb2JFeGVjdXRpb259P2pvYlNjaGVkdWxlSUQ9JHtqb2JTY2hlZHVsZUlEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2pvYlNjaGVkdWxlSUQnLCByZXNwb25zZSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFeGVjdXRpb25CeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGxvYWRpbmcgPSBmYWxzZSk6IE9ic2VydmFibGU8SUV4ZWN1dGlvblN0YXR1cz4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsSm9iRXhlY3V0aW9ufS8ke2V4ZWN1dGlvbklEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2V4ZWN1dGlvbklEJywgcmVzcG9uc2UpKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGVjdXRpb24odXJsOiBzdHJpbmcsIGxvYWRpbmc6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5oZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUV4ZWN1dGlvbih0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnkpOiBJRXhlY3V0aW9uU3RhdHVzIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZS5pdGVtcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5pdGVtc1swXTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhlY1N0YXR1cyA9IG5ldyBFeGVjdXRpb25TdGF0dXMoKTtcclxuICAgICAgICBleGVjU3RhdHVzLmpvYlNjaGVkdWxlSUQgPSByZXNwb25zZS5qb2JTY2hlZHVsZUlEO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSByZXNwb25zZS5leGVjdXRpb25JRDtcclxuICAgICAgICBleGVjU3RhdHVzLnN0YXJ0ZWREYXRlID0gcmVzcG9uc2Uuc3RhcnRlZERhdGU7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5lcnJvciA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICAgICAgICByZXR1cm4gZXhlY1N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBmb2xsb3dVcEV4Y0J5Sm9iU2NoZWR1bGVJRChqb2JTY2hlZHVsZUlEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignam9iU2NoZWR1bGVJRCcsIGpvYlNjaGVkdWxlSUQsIGludGVydmFsTnVtLCBmbmNDYWxsQmFjaywgbG9hZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9sbG93VXBFeGNCeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignZXhlY3V0aW9uSUQnLCBleGVjdXRpb25JRCwgaW50ZXJ2YWxOdW0sIGZuY0NhbGxCYWNrLCBsb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvbGxvd1VwRXhlY3V0aW9uKHR5cGU6IHN0cmluZywgZXhlY0lEOiBzdHJpbmcsXHJcbiAgICAgICAgaW50ZXJ2YWxOdW06IG51bWJlciwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uLCBsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGludGVydmFsSUQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWNTdGF0dXMgPSBuZXcgRXhlY3V0aW9uU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuam9iU2NoZWR1bGVJRCA9ICh0eXBlID09PSAnam9iU2NoZWR1bGVJRCcpID8gZXhlY0lEIDogJyc7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSAodHlwZSA9PT0gJ2V4ZWN1dGlvbklEJykgPyBleGVjSUQgOiAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGFydGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXJyb3IgPSAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnUEVORElORyc7IC8vIFBFTkRJTkcsIFJVTk5JTkcsIFNVQ0NFU1MsIEZBSUxVUkVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2pvYlNjaGVkdWxlSUQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSB0aGlzLmdldEV4ZWN1dGlvbkJ5Sm9iU2NoZWR1bGVJRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdleGVjdXRpb25JRCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IHRoaXMuZ2V0RXhlY3V0aW9uQnlFeGVjdXRpb25JRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCBpbnRlcnZhbE51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQ6IHN0cmluZywgZXhlY1N0YXR1czogSUV4ZWN1dGlvblN0YXR1cywgcmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMsXHJcbiAgICAgICAgaW50ZXJ2YWxJRDogYW55LCBmbmNDYWxsQmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMgPSByZXNwb25zZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gYEFnZW5kYW1lbnRvIG7Do28gZW5jb250cmFkbyBjb20gSUQ6ICR7ZXhlY0lEfWA7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gJ0ZBSUxVUkUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmbmNDYWxsQmFjayhleGVjU3RhdHVzKSB8fFxyXG4gICAgICAgICAgICBleGVjU3RhdHVzLnN0YXR1cyA9PT0gJ1NVQ0NFU1MnIHx8XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID09PSAnRkFJTFVSRScpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5FcnJvcihlcnJvcjogYW55LCBleGVjU3RhdHVzOiBJRXhlY3V0aW9uU3RhdHVzLFxyXG4gICAgICAgIGludGVydmFsSUQ6IGFueSwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGxldCBlcnJvRGVzYyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBlcnJvRGVzYyA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb0Rlc2MgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlKSB7IGVycm9EZXNjID0gZXJyb3IuZXJyb3IuY29kZTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHsgZXJyb0Rlc2MgPSBgJHtlcnJvRGVzY30gLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmRldGFpbGVkTWVzc2FnZSkgeyBlcnJvRGVzYyA9IGAke2Vycm9EZXNjfSAtICR7ZXJyb3IuZXJyb3IuZGV0YWlsZWRNZXNzYWdlfWA7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9EZXNjID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gZXJyb0Rlc2M7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnRkFJTFVSRSc7XHJcbiAgICAgICAgZm5jQ2FsbEJhY2soZXhlY1N0YXR1cyk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { ExecutionStatus } from './totvs-schedule-execution.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
export class TotvsScheduleExecutionService {
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.headers = { headers: { 'X-PO-Screen-Lock': 'true' } };
|
|
11
|
+
this.urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';
|
|
12
|
+
this.urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';
|
|
13
|
+
this.urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';
|
|
14
|
+
}
|
|
15
|
+
getFilteredItems(params) {
|
|
16
|
+
const urlParams = new Array();
|
|
17
|
+
urlParams.push(`pageSize=${params.pageSize.toString()}`);
|
|
18
|
+
urlParams.push(`page=${params.page.toString()}`);
|
|
19
|
+
if (params.filter && params.filter.length > 0) {
|
|
20
|
+
urlParams.push(`quickSearch=${params.filter}`);
|
|
21
|
+
}
|
|
22
|
+
return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);
|
|
23
|
+
}
|
|
24
|
+
getObjectByValue(id) {
|
|
25
|
+
return this.http.get(`${this.urlCadServidor}/${id}`, this.headers);
|
|
26
|
+
}
|
|
27
|
+
createExecution(parameters, loading) {
|
|
28
|
+
const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\/g, '*|'));
|
|
29
|
+
if (loading) {
|
|
30
|
+
return this.http.post(`${this.urlJobScheduler}`, params, this.headers);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return this.http.post(`${this.urlJobScheduler}`, params);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
createExecutionForNow(executionParams, loading) {
|
|
37
|
+
let jobScheduleParams;
|
|
38
|
+
const date = new Date();
|
|
39
|
+
const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\/g, '*|'));
|
|
40
|
+
if (!params.programEMS5) {
|
|
41
|
+
params.programEMS5 = false;
|
|
42
|
+
}
|
|
43
|
+
if (!params.programStyle) {
|
|
44
|
+
params.programStyle = 0;
|
|
45
|
+
}
|
|
46
|
+
if (!params.programVersion) {
|
|
47
|
+
params.programVersion = '';
|
|
48
|
+
}
|
|
49
|
+
if (!params.businessParams || params.businessParams.length === 0) {
|
|
50
|
+
params.businessParams = [{ chave: '', valor: '' }];
|
|
51
|
+
}
|
|
52
|
+
jobScheduleParams = {};
|
|
53
|
+
jobScheduleParams.status = 'active';
|
|
54
|
+
jobScheduleParams.processID = params.programName;
|
|
55
|
+
jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;
|
|
56
|
+
jobScheduleParams.recurrent = false;
|
|
57
|
+
jobScheduleParams.executionParameter = {
|
|
58
|
+
parametros: [
|
|
59
|
+
{ chave: 'rpwServer', valor: params.executionServer },
|
|
60
|
+
{ chave: 'RPW_PROGRAM', valor: params.externalName },
|
|
61
|
+
{ chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },
|
|
62
|
+
{ chave: 'RPW_PRG_ESTILO', valor: params.programStyle },
|
|
63
|
+
{ chave: 'RPW_PRG_VERS', valor: params.programVersion },
|
|
64
|
+
{ parametros_negocio: params.businessParams }
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
if (params.paramDigitDef && params.paramDigitDef.length > 0) {
|
|
68
|
+
jobScheduleParams.executionParameter.parametros.push({
|
|
69
|
+
param_digita_def: params.paramDigitDef
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (params.paramDigitData && params.paramDigitData.length > 0) {
|
|
73
|
+
jobScheduleParams.executionParameter.parametros.push({
|
|
74
|
+
param_digita_dados: params.paramDigitData
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (params.paramSelections && params.paramSelections.length > 0) {
|
|
78
|
+
jobScheduleParams.executionParameter.parametros.push({
|
|
79
|
+
selecoes: params.paramSelections
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (loading) {
|
|
83
|
+
return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
getExecutionByJobScheduleID(jobScheduleID, loading = false) {
|
|
90
|
+
const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;
|
|
91
|
+
return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('jobScheduleID', response)));
|
|
92
|
+
}
|
|
93
|
+
getExecutionByExecutionID(executionID, loading = false) {
|
|
94
|
+
const url = `${this.urlJobExecution}/${executionID}`;
|
|
95
|
+
return this.getExecution(url, loading).pipe(map((response) => this.transformExecution('executionID', response)));
|
|
96
|
+
}
|
|
97
|
+
getExecution(url, loading) {
|
|
98
|
+
if (loading) {
|
|
99
|
+
return this.http.get(url, this.headers);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return this.http.get(url);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
transformExecution(type, response) {
|
|
106
|
+
if (!response || !response.items || response.items.length === 0) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
response = response.items[0];
|
|
110
|
+
const execStatus = new ExecutionStatus();
|
|
111
|
+
execStatus.jobScheduleID = response.jobScheduleID;
|
|
112
|
+
execStatus.executionID = response.executionID;
|
|
113
|
+
execStatus.startedDate = response.startedDate;
|
|
114
|
+
execStatus.error = response.error;
|
|
115
|
+
execStatus.status = response.status;
|
|
116
|
+
return execStatus;
|
|
117
|
+
}
|
|
118
|
+
followUpExcByJobScheduleID(jobScheduleID, intervalNum, fncCallBack, loading = false) {
|
|
119
|
+
this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);
|
|
120
|
+
}
|
|
121
|
+
followUpExcByExecutionID(executionID, intervalNum, fncCallBack, loading = false) {
|
|
122
|
+
this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);
|
|
123
|
+
}
|
|
124
|
+
followUpExecution(type, execID, intervalNum, fncCallBack, loading) {
|
|
125
|
+
this.jobExecutionSubscription$ = null;
|
|
126
|
+
const intervalID = setInterval(() => {
|
|
127
|
+
const execStatus = new ExecutionStatus();
|
|
128
|
+
execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';
|
|
129
|
+
execStatus.executionID = (type === 'executionID') ? execID : '';
|
|
130
|
+
execStatus.startedDate = null;
|
|
131
|
+
execStatus.error = '';
|
|
132
|
+
execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE
|
|
133
|
+
if (this.jobExecutionSubscription$) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (type === 'jobScheduleID') {
|
|
137
|
+
this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)
|
|
138
|
+
.subscribe((response) => {
|
|
139
|
+
this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
|
|
140
|
+
}, (error) => {
|
|
141
|
+
this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (type === 'executionID') {
|
|
145
|
+
this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)
|
|
146
|
+
.subscribe((response) => {
|
|
147
|
+
this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);
|
|
148
|
+
}, (error) => {
|
|
149
|
+
this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}, intervalNum);
|
|
153
|
+
}
|
|
154
|
+
followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack) {
|
|
155
|
+
if (response) {
|
|
156
|
+
execStatus = response;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
execStatus.error = `Agendamento não encontrado com ID: ${execID}`;
|
|
160
|
+
execStatus.status = 'FAILURE';
|
|
161
|
+
}
|
|
162
|
+
if (!fncCallBack(execStatus) ||
|
|
163
|
+
execStatus.status === 'SUCCESS' ||
|
|
164
|
+
execStatus.status === 'FAILURE') {
|
|
165
|
+
clearInterval(intervalID);
|
|
166
|
+
}
|
|
167
|
+
this.jobExecutionSubscription$ = null;
|
|
168
|
+
}
|
|
169
|
+
followUpExecReturnError(error, execStatus, intervalID, fncCallBack) {
|
|
170
|
+
let erroDesc = '';
|
|
171
|
+
if (error instanceof HttpErrorResponse) {
|
|
172
|
+
erroDesc = error.message;
|
|
173
|
+
if (error.error) {
|
|
174
|
+
erroDesc = '';
|
|
175
|
+
if (error.error.code) {
|
|
176
|
+
erroDesc = error.error.code;
|
|
177
|
+
}
|
|
178
|
+
if (error.error.message) {
|
|
179
|
+
erroDesc = `${erroDesc} - ${error.error.message}`;
|
|
180
|
+
}
|
|
181
|
+
if (error.error.detailedMessage) {
|
|
182
|
+
erroDesc = `${erroDesc} - ${error.error.detailedMessage}`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
erroDesc = error;
|
|
188
|
+
}
|
|
189
|
+
execStatus.error = erroDesc;
|
|
190
|
+
execStatus.status = 'FAILURE';
|
|
191
|
+
fncCallBack(execStatus);
|
|
192
|
+
clearInterval(intervalID);
|
|
193
|
+
this.jobExecutionSubscription$ = null;
|
|
194
|
+
}
|
|
195
|
+
addZero(num) {
|
|
196
|
+
let str = `${num}`;
|
|
197
|
+
if (num < 10) {
|
|
198
|
+
str = `0${num}`;
|
|
199
|
+
}
|
|
200
|
+
return str;
|
|
201
|
+
}
|
|
202
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
203
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService }); }
|
|
204
|
+
}
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TotvsScheduleExecutionService, decorators: [{
|
|
206
|
+
type: Injectable
|
|
207
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBMEMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRzNHLE1BQU0sT0FBTyw2QkFBNkI7SUFhdEMsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVgzQixZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRXRELG1CQUFjLEdBQUcsMkRBQTJELENBQUM7UUFDN0Usb0JBQWUsR0FBRywyREFBMkQsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLDJEQUEyRCxDQUFDO0lBTy9DLENBQUM7SUFFeEMsZ0JBQWdCLENBQUMsTUFBbUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUV0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENB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LENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVc7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7aUlBaE9RLDZCQUE2QjtxSUFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBFeGVjdXRpb25TdGF0dXMsIElFeGVjdXRpb25QYXJhbWV0ZXJzLCBJRXhlY3V0aW9uU3RhdHVzIH0gZnJvbSAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24ubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaGVhZGVycyA9IHsgaGVhZGVyczogeyAnWC1QTy1TY3JlZW4tTG9jayc6ICd0cnVlJyB9IH07XHJcblxyXG4gICAgcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZHRzL2RhdGFzdWwtcmVzdC9yZXNvdXJjZXMvcHJnL2J0Yi92MS9zZXJ2aWRvcmVzRXhlY3VjYW8nO1xyXG4gICAgcHJpdmF0ZSB1cmxKb2JTY2hlZHVsZXIgPSAnL2R0cy9kYXRhc3VsLXJlc3QvcmVzb3VyY2VzL3ByZy9mcmFtZXdvcmsvdjEvam9iU2NoZWR1bGVyJztcclxuICAgIHByaXZhdGUgdXJsSm9iRXhlY3V0aW9uID0gJy9kdHMvZGF0YXN1bC1yZXN0L3Jlc291cmNlcy9wcmcvZnJhbWV3b3JrL3YxL2pvYkV4ZWN1dGlvbic7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSB1cmxDYWRTZXJ2aWRvciA9ICcvZ2VuZXJpY3Nab29tJztcclxuICAgIC8vIHByaXZhdGUgdXJsSm9iU2NoZWR1bGVyID0gJy9qb2JTY2hlZHVsZXInO1xyXG5cclxuICAgIHByaXZhdGUgam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRGaWx0ZXJlZEl0ZW1zKHBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG5cclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZVNpemU9JHtwYXJhbXMucGFnZVNpemUudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICB1cmxQYXJhbXMucHVzaChgcGFnZT0ke3BhcmFtcy5wYWdlLnRvU3RyaW5nKCl9YCk7XHJcblxyXG4gICAgICAgIGlmIChwYXJhbXMuZmlsdGVyICYmIHBhcmFtcy5maWx0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB1cmxQYXJhbXMucHVzaChgcXVpY2tTZWFyY2g9JHtwYXJhbXMuZmlsdGVyfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxDYWRTZXJ2aWRvcn0/JHt1cmxQYXJhbXMuam9pbignJicpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdEJ5VmFsdWUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybENhZFNlcnZpZG9yfS8ke2lkfWAsIHRoaXMuaGVhZGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRXhlY3V0aW9uKHBhcmFtZXRlcnM6IE9iamVjdCwgbG9hZGluZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnKnwnKSk7XHJcblxyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVybEpvYlNjaGVkdWxlcn1gLCBwYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIHBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUV4ZWN1dGlvbkZvck5vdyhleGVjdXRpb25QYXJhbXM6IElFeGVjdXRpb25QYXJhbWV0ZXJzLCBsb2FkaW5nOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBsZXQgam9iU2NoZWR1bGVQYXJhbXM6IGFueTtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShleGVjdXRpb25QYXJhbXMpLnJlcGxhY2UoL1xcXFxcXFxcL2csICcqfCcpKTtcclxuXHJcbiAgICAgICAgaWYgKCFwYXJhbXMucHJvZ3JhbUVNUzUpIHsgcGFyYW1zLnByb2dyYW1FTVM1ID0gZmFsc2U7IH1cclxuICAgICAgICBpZiAoIXBhcmFtcy5wcm9ncmFtU3R5bGUpIHsgcGFyYW1zLnByb2dyYW1TdHlsZSA9IDA7IH1cclxuICAgICAgICBpZiAoIXBhcmFtcy5wcm9ncmFtVmVyc2lvbikgeyBwYXJhbXMucHJvZ3JhbVZlcnNpb24gPSAnJzsgfVxyXG4gICAgICAgIGlmICghcGFyYW1zLmJ1c2luZXNzUGFyYW1zIHx8IHBhcmFtcy5idXNpbmVzc1BhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcGFyYW1zLmJ1c2luZXNzUGFyYW1zID0gW3sgY2hhdmU6ICcnLCB2YWxvcjogJycgfV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcyA9IHt9O1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnN0YXR1cyA9ICdhY3RpdmUnO1xyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLnByb2Nlc3NJRCA9IHBhcmFtcy5wcm9ncmFtTmFtZTtcclxuICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5maXJzdEV4ZWN1dGlvbiA9IGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHsoZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7ZGF0ZS5nZXREYXRlKCl9VCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX06MDAuMDAwWmA7XHJcbiAgICAgICAgam9iU2NoZWR1bGVQYXJhbXMucmVjdXJyZW50ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLmV4ZWN1dGlvblBhcmFtZXRlciA9IHtcclxuICAgICAgICAgICAgcGFyYW1ldHJvczogW1xyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ3Jwd1NlcnZlcicsIHZhbG9yOiBwYXJhbXMuZXhlY3V0aW9uU2VydmVyIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BST0dSQU0nLCB2YWxvcjogcGFyYW1zLmV4dGVybmFsTmFtZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBjaGF2ZTogJ1JQV19QUkdfRU1TNScsIHZhbG9yOiBwYXJhbXMucHJvZ3JhbUVNUzUgPyAneWVzJyA6ICdubycgfSxcclxuICAgICAgICAgICAgICAgIHsgY2hhdmU6ICdSUFdfUFJHX0VTVElMTycsIHZhbG9yOiBwYXJhbXMucHJvZ3JhbVN0eWxlIH0sXHJcbiAgICAgICAgICAgICAgICB7IGNoYXZlOiAnUlBXX1BSR19WRVJTJywgdmFsb3I6IHBhcmFtcy5wcm9ncmFtVmVyc2lvbiB9LFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbWV0cm9zX25lZ29jaW86IHBhcmFtcy5idXNpbmVzc1BhcmFtcyB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAocGFyYW1zLnBhcmFtRGlnaXREZWYgJiYgcGFyYW1zLnBhcmFtRGlnaXREZWYubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtX2RpZ2l0YV9kZWY6IHBhcmFtcy5wYXJhbURpZ2l0RGVmXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmFtcy5wYXJhbURpZ2l0RGF0YSAmJiBwYXJhbXMucGFyYW1EaWdpdERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBqb2JTY2hlZHVsZVBhcmFtcy5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhcmFtX2RpZ2l0YV9kYWRvczogcGFyYW1zLnBhcmFtRGlnaXREYXRhXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhcmFtcy5wYXJhbVNlbGVjdGlvbnMgJiYgcGFyYW1zLnBhcmFtU2VsZWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGpvYlNjaGVkdWxlUGFyYW1zLmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2VsZWNvZXM6IHBhcmFtcy5wYXJhbVNlbGVjdGlvbnNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51cmxKb2JTY2hlZHVsZXJ9YCwgam9iU2NoZWR1bGVQYXJhbXMsIHRoaXMuaGVhZGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudXJsSm9iU2NoZWR1bGVyfWAsIGpvYlNjaGVkdWxlUGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RXhlY3V0aW9uQnlKb2JTY2hlZHVsZUlEKGpvYlNjaGVkdWxlSUQ6IHN0cmluZywgbG9hZGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJRXhlY3V0aW9uU3RhdHVzPiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxKb2JFeGVjdXRpb259P2pvYlNjaGVkdWxlSUQ9JHtqb2JTY2hlZHVsZUlEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2pvYlNjaGVkdWxlSUQnLCByZXNwb25zZSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFeGVjdXRpb25CeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGxvYWRpbmcgPSBmYWxzZSk6IE9ic2VydmFibGU8SUV4ZWN1dGlvblN0YXR1cz4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsSm9iRXhlY3V0aW9ufS8ke2V4ZWN1dGlvbklEfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0aW9uKHVybCwgbG9hZGluZykucGlwZShcclxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gdGhpcy50cmFuc2Zvcm1FeGVjdXRpb24oJ2V4ZWN1dGlvbklEJywgcmVzcG9uc2UpKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGVjdXRpb24odXJsOiBzdHJpbmcsIGxvYWRpbmc6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGlmIChsb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgdGhpcy5oZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybUV4ZWN1dGlvbih0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnkpOiBJRXhlY3V0aW9uU3RhdHVzIHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZS5pdGVtcy5sZW5ndGggPT09IDApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS5pdGVtc1swXTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhlY1N0YXR1cyA9IG5ldyBFeGVjdXRpb25TdGF0dXMoKTtcclxuICAgICAgICBleGVjU3RhdHVzLmpvYlNjaGVkdWxlSUQgPSByZXNwb25zZS5qb2JTY2hlZHVsZUlEO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSByZXNwb25zZS5leGVjdXRpb25JRDtcclxuICAgICAgICBleGVjU3RhdHVzLnN0YXJ0ZWREYXRlID0gcmVzcG9uc2Uuc3RhcnRlZERhdGU7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5lcnJvciA9IHJlc3BvbnNlLmVycm9yO1xyXG4gICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICAgICAgICByZXR1cm4gZXhlY1N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICBmb2xsb3dVcEV4Y0J5Sm9iU2NoZWR1bGVJRChqb2JTY2hlZHVsZUlEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignam9iU2NoZWR1bGVJRCcsIGpvYlNjaGVkdWxlSUQsIGludGVydmFsTnVtLCBmbmNDYWxsQmFjaywgbG9hZGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9sbG93VXBFeGNCeUV4ZWN1dGlvbklEKGV4ZWN1dGlvbklEOiBzdHJpbmcsIGludGVydmFsTnVtOiBudW1iZXIsIGZuY0NhbGxCYWNrOiBGdW5jdGlvbiwgbG9hZGluZyA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWN1dGlvbignZXhlY3V0aW9uSUQnLCBleGVjdXRpb25JRCwgaW50ZXJ2YWxOdW0sIGZuY0NhbGxCYWNrLCBsb2FkaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvbGxvd1VwRXhlY3V0aW9uKHR5cGU6IHN0cmluZywgZXhlY0lEOiBzdHJpbmcsXHJcbiAgICAgICAgaW50ZXJ2YWxOdW06IG51bWJlciwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uLCBsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGludGVydmFsSUQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWNTdGF0dXMgPSBuZXcgRXhlY3V0aW9uU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuam9iU2NoZWR1bGVJRCA9ICh0eXBlID09PSAnam9iU2NoZWR1bGVJRCcpID8gZXhlY0lEIDogJyc7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXhlY3V0aW9uSUQgPSAodHlwZSA9PT0gJ2V4ZWN1dGlvbklEJykgPyBleGVjSUQgOiAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGFydGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuZXJyb3IgPSAnJztcclxuICAgICAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnUEVORElORyc7IC8vIFBFTkRJTkcsIFJVTk5JTkcsIFNVQ0NFU1MsIEZBSUxVUkVcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2pvYlNjaGVkdWxlSUQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSB0aGlzLmdldEV4ZWN1dGlvbkJ5Sm9iU2NoZWR1bGVJRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdleGVjdXRpb25JRCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IHRoaXMuZ2V0RXhlY3V0aW9uQnlFeGVjdXRpb25JRChleGVjSUQsIGxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQsIGV4ZWNTdGF0dXMsIHJlc3BvbnNlLCBpbnRlcnZhbElELCBmbmNDYWxsQmFjayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sbG93VXBFeGVjUmV0dXJuRXJyb3IoZXJyb3IsIGV4ZWNTdGF0dXMsIGludGVydmFsSUQsIGZuY0NhbGxCYWNrKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCBpbnRlcnZhbE51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5PayhleGVjSUQ6IHN0cmluZywgZXhlY1N0YXR1czogSUV4ZWN1dGlvblN0YXR1cywgcmVzcG9uc2U6IElFeGVjdXRpb25TdGF0dXMsXHJcbiAgICAgICAgaW50ZXJ2YWxJRDogYW55LCBmbmNDYWxsQmFjazogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMgPSByZXNwb25zZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gYEFnZW5kYW1lbnRvIG7Do28gZW5jb250cmFkbyBjb20gSUQ6ICR7ZXhlY0lEfWA7XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID0gJ0ZBSUxVUkUnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFmbmNDYWxsQmFjayhleGVjU3RhdHVzKSB8fFxyXG4gICAgICAgICAgICBleGVjU3RhdHVzLnN0YXR1cyA9PT0gJ1NVQ0NFU1MnIHx8XHJcbiAgICAgICAgICAgIGV4ZWNTdGF0dXMuc3RhdHVzID09PSAnRkFJTFVSRScpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuam9iRXhlY3V0aW9uU3Vic2NyaXB0aW9uJCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb2xsb3dVcEV4ZWNSZXR1cm5FcnJvcihlcnJvcjogYW55LCBleGVjU3RhdHVzOiBJRXhlY3V0aW9uU3RhdHVzLFxyXG4gICAgICAgIGludGVydmFsSUQ6IGFueSwgZm5jQ2FsbEJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGxldCBlcnJvRGVzYyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBlcnJvRGVzYyA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZXJyb0Rlc2MgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlKSB7IGVycm9EZXNjID0gZXJyb3IuZXJyb3IuY29kZTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHsgZXJyb0Rlc2MgPSBgJHtlcnJvRGVzY30gLSAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmRldGFpbGVkTWVzc2FnZSkgeyBlcnJvRGVzYyA9IGAke2Vycm9EZXNjfSAtICR7ZXJyb3IuZXJyb3IuZGV0YWlsZWRNZXNzYWdlfWA7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9EZXNjID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBleGVjU3RhdHVzLmVycm9yID0gZXJyb0Rlc2M7XHJcbiAgICAgICAgZXhlY1N0YXR1cy5zdGF0dXMgPSAnRkFJTFVSRSc7XHJcbiAgICAgICAgZm5jQ2FsbEJhY2soZXhlY1N0YXR1cyk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElEKTtcclxuICAgICAgICB0aGlzLmpvYkV4ZWN1dGlvblN1YnNjcmlwdGlvbiQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkWmVybyhudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0ciA9IGAke251bX1gO1xyXG4gICAgICAgIGlmIChudW0gPCAxMCkgeyBzdHIgPSBgMCR7bnVtfWA7IH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|