@deeksha2309/sunbird-collection-editor 8.0.7
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 +24 -0
- package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
- package/esm2022/lib/collection-editor-library.component.mjs +16 -0
- package/esm2022/lib/collection-editor-library.module.mjs +137 -0
- package/esm2022/lib/components/answer/answer.component.mjs +43 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
- package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
- package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
- package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
- package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
- package/esm2022/lib/components/header/header.component.mjs +123 -0
- package/esm2022/lib/components/library/library.component.mjs +242 -0
- package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
- package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
- package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
- package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
- package/esm2022/lib/components/options/options.component.mjs +144 -0
- package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
- package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
- package/esm2022/lib/components/question/question.component.mjs +1360 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
- package/esm2022/lib/components/template/template.component.mjs +42 -0
- package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
- package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
- package/esm2022/lib/interfaces/McqForm.mjs +29 -0
- package/esm2022/lib/interfaces/editor.mjs +2 -0
- package/esm2022/lib/interfaces/framework.mjs +2 -0
- package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
- package/esm2022/lib/interfaces/requestParam.mjs +2 -0
- package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/config/category.config.json +8 -0
- package/esm2022/lib/services/config/config.service.mjs +27 -0
- package/esm2022/lib/services/config/editor.config.json +31 -0
- package/esm2022/lib/services/config/label.config.json +314 -0
- package/esm2022/lib/services/config/player.config.json +96 -0
- package/esm2022/lib/services/config/url.config.json +69 -0
- package/esm2022/lib/services/data/data.service.mjs +192 -0
- package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
- package/esm2022/lib/services/editor/editor.service.mjs +682 -0
- package/esm2022/lib/services/framework/framework.service.mjs +106 -0
- package/esm2022/lib/services/helper/helper.service.mjs +160 -0
- package/esm2022/lib/services/player/player.service.mjs +99 -0
- package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
- package/esm2022/lib/services/question/question.service.mjs +167 -0
- package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
- package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
- package/esm2022/lib/services/tree/tree.service.mjs +284 -0
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
- package/esm2022/public-api.mjs +4 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/assets/.gitkeep +0 -0
- package/lib/assets/images/MCQ.png +0 -0
- package/lib/assets/images/Spin.gif +0 -0
- package/lib/assets/images/bulkuploadfile.png +0 -0
- package/lib/assets/images/cancel-sign copy.png +0 -0
- package/lib/assets/images/cancel-sign.png +0 -0
- package/lib/assets/images/emptyResult.svg +1 -0
- package/lib/assets/images/icons-rtl.gif +0 -0
- package/lib/assets/images/icons.gif +0 -0
- package/lib/assets/images/imageicon.svg +16 -0
- package/lib/assets/images/imageicon_blue.svg +16 -0
- package/lib/assets/images/layoutoneicon.svg +16 -0
- package/lib/assets/images/layoutoneicon_blue.svg +16 -0
- package/lib/assets/images/layoutthreeicon.svg +18 -0
- package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
- package/lib/assets/images/layouttwoicon.svg +18 -0
- package/lib/assets/images/layouttwoicon_blue.svg +18 -0
- package/lib/assets/images/leftalignicon.svg +17 -0
- package/lib/assets/images/leftalignicon_blue.svg +17 -0
- package/lib/assets/images/loader.gif +0 -0
- package/lib/assets/images/loader.svg +1 -0
- package/lib/assets/images/loading.gif +0 -0
- package/lib/assets/images/middlealignicon.svg +17 -0
- package/lib/assets/images/middlealignicon_blue.svg +17 -0
- package/lib/assets/images/question_collection.svg +18 -0
- package/lib/assets/images/rightalignicon.svg +17 -0
- package/lib/assets/images/rightalignicon_blue.svg +17 -0
- package/lib/assets/images/vline-rtl.gif +0 -0
- package/lib/assets/images/vline.gif +0 -0
- package/lib/assets/images/writing.png +0 -0
- package/lib/collection-editor-cursor.service.d.ts +5 -0
- package/lib/collection-editor-cursor.service.d.ts.map +1 -0
- package/lib/collection-editor-library.component.d.ts +9 -0
- package/lib/collection-editor-library.component.d.ts.map +1 -0
- package/lib/collection-editor-library.module.d.ts +50 -0
- package/lib/collection-editor-library.module.d.ts.map +1 -0
- package/lib/components/answer/answer.component.d.ts +24 -0
- package/lib/components/answer/answer.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
- package/lib/components/dialcode/dialcode.component.d.ts +48 -0
- package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
- package/lib/components/editor/editor.component.d.ts +146 -0
- package/lib/components/editor/editor.component.d.ts.map +1 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
- package/lib/components/header/header.component.d.ts +46 -0
- package/lib/components/header/header.component.d.ts.map +1 -0
- package/lib/components/library/library.component.d.ts +69 -0
- package/lib/components/library/library.component.d.ts.map +1 -0
- package/lib/components/library-filter/library-filter.component.d.ts +47 -0
- package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
- package/lib/components/library-list/library-list.component.d.ts +32 -0
- package/lib/components/library-list/library-list.component.d.ts.map +1 -0
- package/lib/components/library-player/library-player.component.d.ts +24 -0
- package/lib/components/library-player/library-player.component.d.ts.map +1 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
- package/lib/components/meta-form/meta-form.component.d.ts +51 -0
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
- package/lib/components/options/options.component.d.ts +53 -0
- package/lib/components/options/options.component.d.ts.map +1 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
- package/lib/components/progress-status/progress-status.component.d.ts +25 -0
- package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
- package/lib/components/question/question.component.d.ts +215 -0
- package/lib/components/question/question.component.d.ts.map +1 -0
- package/lib/components/quml-player/quml-player.component.d.ts +26 -0
- package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/components/template/template.component.d.ts +21 -0
- package/lib/components/template/template.component.d.ts.map +1 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
- package/lib/interfaces/McqForm.d.ts +32 -0
- package/lib/interfaces/McqForm.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +78 -0
- package/lib/interfaces/editor.d.ts.map +1 -0
- package/lib/interfaces/framework.d.ts +46 -0
- package/lib/interfaces/framework.d.ts.map +1 -0
- package/lib/interfaces/httpOptions.d.ts +35 -0
- package/lib/interfaces/httpOptions.d.ts.map +1 -0
- package/lib/interfaces/requestParam.d.ts +24 -0
- package/lib/interfaces/requestParam.d.ts.map +1 -0
- package/lib/interfaces/serverResponse.d.ts +38 -0
- package/lib/interfaces/serverResponse.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/services/config/config.service.d.ts +13 -0
- package/lib/services/config/config.service.d.ts.map +1 -0
- package/lib/services/data/data.service.d.ts +85 -0
- package/lib/services/data/data.service.d.ts.map +1 -0
- package/lib/services/dialcode/dialcode.service.d.ts +36 -0
- package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +150 -0
- package/lib/services/editor/editor.service.d.ts.map +1 -0
- package/lib/services/framework/framework.service.d.ts +35 -0
- package/lib/services/framework/framework.service.d.ts.map +1 -0
- package/lib/services/helper/helper.service.d.ts +41 -0
- package/lib/services/helper/helper.service.d.ts.map +1 -0
- package/lib/services/player/player.service.d.ts +33 -0
- package/lib/services/player/player.service.d.ts.map +1 -0
- package/lib/services/public-data/public-data.service.d.ts +15 -0
- package/lib/services/public-data/public-data.service.d.ts.map +1 -0
- package/lib/services/question/question.service.d.ts +30 -0
- package/lib/services/question/question.service.d.ts.map +1 -0
- package/lib/services/telemetry/telemetry.service.d.ts +45 -0
- package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
- package/lib/services/toaster/toaster.service.d.ts +50 -0
- package/lib/services/toaster/toaster.service.d.ts.map +1 -0
- package/lib/services/tree/tree.service.d.ts +51 -0
- package/lib/services/tree/tree.service.d.ts.map +1 -0
- package/package.json +32 -0
- package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { of as observableOf, throwError as observableThrowError } from 'rxjs';
|
|
2
|
+
import { mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
/**
|
|
8
|
+
* Service to provide base CRUD methods to make api request.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export class DataService {
|
|
12
|
+
/**
|
|
13
|
+
* Constructor
|
|
14
|
+
* @param HttpClient http HttpClient reference
|
|
15
|
+
*/
|
|
16
|
+
constructor(http) {
|
|
17
|
+
/**
|
|
18
|
+
* Contains base Url for api end points
|
|
19
|
+
*/
|
|
20
|
+
this.baseUrl = 'api/';
|
|
21
|
+
this.http = http;
|
|
22
|
+
this._document = document;
|
|
23
|
+
const url = this._document.defaultView.questionEditorBaseUrl;
|
|
24
|
+
this.baseUrl = url ? `${url}/api/` : this.baseUrl;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* for making get api calls which needs headers in response
|
|
28
|
+
* headers are fetched to get server time using Date attribute in header
|
|
29
|
+
* @param requestParam interface
|
|
30
|
+
*/
|
|
31
|
+
getWithHeaders(requestParam) {
|
|
32
|
+
const httpOptions = {
|
|
33
|
+
headers: requestParam.header ? requestParam.header : this.getHeader(),
|
|
34
|
+
params: requestParam.param,
|
|
35
|
+
observe: 'response'
|
|
36
|
+
};
|
|
37
|
+
return this.http.get(this.baseUrl + requestParam.url, httpOptions).pipe(mergeMap(({ body, headers }) => {
|
|
38
|
+
// replace ts time with header date , this value is used in telemetry
|
|
39
|
+
body.ts = this.getDateDiff((headers.get('Date')));
|
|
40
|
+
if (body.responseCode !== 'OK') {
|
|
41
|
+
return observableThrowError(body);
|
|
42
|
+
}
|
|
43
|
+
return observableOf(body);
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* for making get api calls
|
|
48
|
+
*
|
|
49
|
+
* @param requestParam interface
|
|
50
|
+
*/
|
|
51
|
+
get(requestParam) {
|
|
52
|
+
const httpOptions = {
|
|
53
|
+
headers: requestParam.header ? requestParam.header : this.getHeader(),
|
|
54
|
+
params: requestParam.param
|
|
55
|
+
};
|
|
56
|
+
return this.http.get(this.baseUrl + requestParam.url, httpOptions).pipe(mergeMap((data) => {
|
|
57
|
+
if (data.responseCode !== 'OK') {
|
|
58
|
+
return observableThrowError(data);
|
|
59
|
+
}
|
|
60
|
+
return observableOf(data);
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* for making post api calls with headers in response object
|
|
65
|
+
*
|
|
66
|
+
* @param RequestParam requestParam interface
|
|
67
|
+
*
|
|
68
|
+
*/
|
|
69
|
+
postWithHeaders(requestParam) {
|
|
70
|
+
const httpOptions = {
|
|
71
|
+
headers: requestParam.header ? this.getHeader(requestParam.header) : this.getHeader(),
|
|
72
|
+
params: requestParam.param,
|
|
73
|
+
observe: 'response'
|
|
74
|
+
};
|
|
75
|
+
return this.http.post(this.baseUrl + requestParam.url, requestParam.data, httpOptions).pipe(mergeMap(({ body, headers }) => {
|
|
76
|
+
// replace ts time with header date , this value is used in telemetry
|
|
77
|
+
body.ts = this.getDateDiff((headers.get('Date')));
|
|
78
|
+
if (body.responseCode !== 'OK') {
|
|
79
|
+
return observableThrowError(body);
|
|
80
|
+
}
|
|
81
|
+
return observableOf(body);
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* for making post api calls
|
|
86
|
+
* @param RequestParam requestParam interface
|
|
87
|
+
*/
|
|
88
|
+
post(requestParam) {
|
|
89
|
+
const httpOptions = {
|
|
90
|
+
headers: requestParam.header ? this.getHeader(requestParam.header) : this.getHeader(),
|
|
91
|
+
params: requestParam.param
|
|
92
|
+
};
|
|
93
|
+
return this.http.post(this.baseUrl + requestParam.url, requestParam.data, httpOptions).pipe(mergeMap((data) => {
|
|
94
|
+
if (data.responseCode !== 'OK') {
|
|
95
|
+
return observableThrowError(data);
|
|
96
|
+
}
|
|
97
|
+
return observableOf(data);
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* for making patch api calls
|
|
102
|
+
*
|
|
103
|
+
* @param RequestParam requestParam interface
|
|
104
|
+
*
|
|
105
|
+
*/
|
|
106
|
+
patch(requestParam) {
|
|
107
|
+
const httpOptions = {
|
|
108
|
+
headers: requestParam.header ? requestParam.header : this.getHeader(),
|
|
109
|
+
params: requestParam.param
|
|
110
|
+
};
|
|
111
|
+
return this.http.patch(this.baseUrl + requestParam.url, requestParam.data, httpOptions).pipe(mergeMap((data) => {
|
|
112
|
+
if (data.responseCode !== 'OK') {
|
|
113
|
+
return observableThrowError(data);
|
|
114
|
+
}
|
|
115
|
+
return observableOf(data);
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* for making delete api calls
|
|
120
|
+
* @param RequestParam requestParam interface
|
|
121
|
+
*/
|
|
122
|
+
delete(requestParam) {
|
|
123
|
+
const httpOptions = {
|
|
124
|
+
headers: requestParam.header ? requestParam.header : this.getHeader(),
|
|
125
|
+
params: requestParam.param,
|
|
126
|
+
body: requestParam.data
|
|
127
|
+
};
|
|
128
|
+
return this.http.delete(this.baseUrl + requestParam.url, httpOptions).pipe(mergeMap((data) => {
|
|
129
|
+
if (data.responseCode !== 'OK') {
|
|
130
|
+
return observableThrowError(data);
|
|
131
|
+
}
|
|
132
|
+
return observableOf(data);
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* for preparing headers
|
|
137
|
+
*/
|
|
138
|
+
getHeader(headers) {
|
|
139
|
+
// tslint:disable-next-line:variable-name
|
|
140
|
+
const default_headers = {
|
|
141
|
+
Accept: 'application/json',
|
|
142
|
+
// 'X-Consumer-ID': 'X-Consumer-ID',
|
|
143
|
+
'X-Source': 'web',
|
|
144
|
+
ts: '2020-12-31T16:23:27+05:30',
|
|
145
|
+
'X-msgid': uuidv4(),
|
|
146
|
+
// tslint:disable-next-line:max-line-length
|
|
147
|
+
Authorization: ''
|
|
148
|
+
};
|
|
149
|
+
try {
|
|
150
|
+
this.deviceId = document.getElementById('deviceId').value || '9d1588c3cbc765c334ccc565e53d81a8';
|
|
151
|
+
this.appId = document.getElementById('appId').value || 'dev.dock.portal';
|
|
152
|
+
}
|
|
153
|
+
catch (err) { }
|
|
154
|
+
if (this.deviceId) {
|
|
155
|
+
default_headers['X-Device-ID'] = this.deviceId;
|
|
156
|
+
}
|
|
157
|
+
if (this.rootOrgId) {
|
|
158
|
+
default_headers['X-Org-code'] = this.rootOrgId;
|
|
159
|
+
}
|
|
160
|
+
if (this.channelId) {
|
|
161
|
+
default_headers['X-Channel-Id'] = this.channelId;
|
|
162
|
+
}
|
|
163
|
+
if (this.appId) {
|
|
164
|
+
default_headers['X-App-Id'] = this.appId;
|
|
165
|
+
}
|
|
166
|
+
if (headers) {
|
|
167
|
+
return { ...default_headers, ...headers };
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
return { ...default_headers };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
getDateDiff(serverdate) {
|
|
174
|
+
const currentdate = new Date();
|
|
175
|
+
const serverDate = new Date(serverdate);
|
|
176
|
+
if (serverdate) {
|
|
177
|
+
return (serverDate - currentdate) / 1000;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return 0;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
184
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, providedIn: 'root' }); }
|
|
185
|
+
}
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataService, decorators: [{
|
|
187
|
+
type: Injectable,
|
|
188
|
+
args: [{
|
|
189
|
+
providedIn: 'root'
|
|
190
|
+
}]
|
|
191
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL3NlcnZpY2VzL2RhdGEvZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUXBDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBMkJ0Qjs7O09BR0c7SUFDSCxZQUFZLElBQWdCO1FBZDVCOztXQUVHO1FBQ0gsWUFBTyxHQUFHLE1BQU0sQ0FBQztRQVlmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBb0IsQ0FBQTtRQUNyQyxNQUFNLEdBQUcsR0FBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQW1CLENBQUMscUJBQXFCLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsWUFBMEI7UUFDdkMsTUFBTSxXQUFXLEdBQWdCO1lBQy9CLE9BQU8sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JFLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztZQUMxQixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNyRSxRQUFRLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQU0sRUFBRSxFQUFFO1lBQ2hDLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsRUFBRSxHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO2dCQUM5QixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLFlBQTBCO1FBQzVCLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixPQUFPLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7U0FDM0IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDckUsUUFBUSxDQUFDLENBQUMsSUFBb0IsRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLFlBQTBCO1FBQ3hDLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixPQUFPLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDckYsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO1lBQzFCLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDekYsUUFBUSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFNLEVBQUUsRUFBRTtZQUNoQyxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLEVBQUUsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDOUIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLFlBQTBCO1FBQzdCLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixPQUFPLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDckYsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO1NBQzNCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDekYsUUFBUSxDQUFDLENBQUMsSUFBb0IsRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQTBCO1FBQzlCLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixPQUFPLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7U0FDM0IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUMxRixRQUFRLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDOUIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQTBCO1FBQy9CLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixPQUFPLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNyRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7WUFDMUIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1NBQ3hCLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3hFLFFBQVEsQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO2dCQUM5QixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxPQUFnQztRQUNoRCx5Q0FBeUM7UUFDekMsTUFBTSxlQUFlLEdBQUc7WUFDdEIsTUFBTSxFQUFFLGtCQUFrQjtZQUMxQixvQ0FBb0M7WUFDcEMsVUFBVSxFQUFFLEtBQUs7WUFDakIsRUFBRSxFQUFFLDJCQUEyQjtZQUMvQixTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQ25CLDJDQUEyQztZQUMzQyxhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYsSUFBSTtZQUNGLElBQUksQ0FBQyxRQUFRLEdBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQXNCLENBQUMsS0FBSyxJQUFJLGtDQUFrQyxDQUFDO1lBQ3RILElBQUksQ0FBQyxLQUFLLEdBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQXNCLENBQUMsS0FBSyxJQUFJLGlCQUFpQixDQUFDO1NBQ2hHO1FBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRztRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDbEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUMxQztRQUNELElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7U0FDM0M7YUFBTTtZQUNMLE9BQU8sRUFBRSxHQUFHLGVBQWUsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUFVO1FBQzVCLE1BQU0sV0FBVyxHQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLENBQUUsVUFBVSxHQUFHLFdBQVcsQ0FBRSxHQUFHLElBQUksQ0FBQztTQUM1QzthQUFNO1lBQ0wsT0FBTyxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7K0dBbk5VLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBvZiBhcyBvYnNlcnZhYmxlT2YsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG4vLyBpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXJ2ZXJSZXNwb25zZSc7XG5pbXBvcnQgeyBSZXF1ZXN0UGFyYW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcXVlc3RQYXJhbSc7XG5pbXBvcnQgeyBIdHRwT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaHR0cE9wdGlvbnMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gcHJvdmlkZSBiYXNlIENSVUQgbWV0aG9kcyB0byBtYWtlIGFwaSByZXF1ZXN0LlxuICpcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2Uge1xuICAvKipcbiAgICogQ29udGFpbnMgcm9vdE9yZyBJZFxuICAgKi9cbiAgcm9vdE9yZ0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb250YWlucyBjaGFubmVsIElkXG4gICAqL1xuICBjaGFubmVsSWQ6IHN0cmluZztcbiAgIC8qKlxuICAgICogQ29udGFpbnMgYXBwSWRcbiAgICAqL1xuICBhcHBJZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29udGFpbnMgZGV2b2NlIElkXG4gICAqL1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29udGFpbnMgYmFzZSBVcmwgZm9yIGFwaSBlbmQgcG9pbnRzXG4gICAqL1xuICBiYXNlVXJsID0gJ2FwaS8nO1xuICAvKipcbiAgICogYW5ndWxhciBIdHRwQ2xpZW50XG4gICAqL1xuICBodHRwOiBIdHRwQ2xpZW50O1xuXG4gIF9kb2N1bWVudDogRG9jdW1lbnRcbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBIdHRwQ2xpZW50IGh0dHAgSHR0cENsaWVudCByZWZlcmVuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmh0dHAgPSBodHRwO1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZG9jdW1lbnQgYXMgRG9jdW1lbnRcbiAgICBjb25zdCB1cmwgPSAodGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXcgYXMgYW55KS5xdWVzdGlvbkVkaXRvckJhc2VVcmw7XG4gICAgdGhpcy5iYXNlVXJsID0gdXJsID8gYCR7dXJsfS9hcGkvYDogdGhpcy5iYXNlVXJsXG4gIH1cblxuICAvKipcbiAgICogZm9yIG1ha2luZyBnZXQgYXBpIGNhbGxzIHdoaWNoIG5lZWRzIGhlYWRlcnMgaW4gcmVzcG9uc2VcbiAgICogIGhlYWRlcnMgYXJlIGZldGNoZWQgdG8gZ2V0IHNlcnZlciB0aW1lIHVzaW5nIERhdGUgYXR0cmlidXRlIGluIGhlYWRlclxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtIGludGVyZmFjZVxuICAgKi9cbiAgZ2V0V2l0aEhlYWRlcnMocmVxdWVzdFBhcmFtOiBSZXF1ZXN0UGFyYW0pOiBPYnNlcnZhYmxlPFNlcnZlclJlc3BvbnNlPiB7XG4gICAgY29uc3QgaHR0cE9wdGlvbnM6IEh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogcmVxdWVzdFBhcmFtLmhlYWRlciA/IHJlcXVlc3RQYXJhbS5oZWFkZXIgOiB0aGlzLmdldEhlYWRlcigpLFxuICAgICAgcGFyYW1zOiByZXF1ZXN0UGFyYW0ucGFyYW0sXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYmFzZVVybCArIHJlcXVlc3RQYXJhbS51cmwsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHtib2R5LCBoZWFkZXJzfTogYW55KSA9PiB7XG4gICAgICAgIC8vIHJlcGxhY2UgdHMgdGltZSB3aXRoIGhlYWRlciBkYXRlICwgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRlbGVtZXRyeVxuICAgICAgICBib2R5LnRzID0gIHRoaXMuZ2V0RGF0ZURpZmYoKGhlYWRlcnMuZ2V0KCdEYXRlJykpKTtcbiAgICAgICAgaWYgKGJvZHkucmVzcG9uc2VDb2RlICE9PSAnT0snKSB7XG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoYm9keSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogZm9yIG1ha2luZyBnZXQgYXBpIGNhbGxzXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW0gaW50ZXJmYWNlXG4gICAqL1xuICBnZXQocmVxdWVzdFBhcmFtOiBSZXF1ZXN0UGFyYW0pOiBPYnNlcnZhYmxlPFNlcnZlclJlc3BvbnNlPiB7XG4gICAgY29uc3QgaHR0cE9wdGlvbnM6IEh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogcmVxdWVzdFBhcmFtLmhlYWRlciA/IHJlcXVlc3RQYXJhbS5oZWFkZXIgOiB0aGlzLmdldEhlYWRlcigpLFxuICAgICAgcGFyYW1zOiByZXF1ZXN0UGFyYW0ucGFyYW1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5iYXNlVXJsICsgcmVxdWVzdFBhcmFtLnVybCwgaHR0cE9wdGlvbnMpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGF0YTogU2VydmVyUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGRhdGEucmVzcG9uc2VDb2RlICE9PSAnT0snKSB7XG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZGF0YSk7XG4gICAgICB9KSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBmb3IgbWFraW5nIHBvc3QgYXBpIGNhbGxzIHdpdGggaGVhZGVycyBpbiByZXNwb25zZSBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIFJlcXVlc3RQYXJhbSByZXF1ZXN0UGFyYW0gaW50ZXJmYWNlXG4gICAqXG4gICAqL1xuICBwb3N0V2l0aEhlYWRlcnMocmVxdWVzdFBhcmFtOiBSZXF1ZXN0UGFyYW0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGh0dHBPcHRpb25zOiBIdHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3RQYXJhbS5oZWFkZXIgPyB0aGlzLmdldEhlYWRlcihyZXF1ZXN0UGFyYW0uaGVhZGVyKSA6IHRoaXMuZ2V0SGVhZGVyKCksXG4gICAgICBwYXJhbXM6IHJlcXVlc3RQYXJhbS5wYXJhbSxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSdcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYmFzZVVybCArIHJlcXVlc3RQYXJhbS51cmwsIHJlcXVlc3RQYXJhbS5kYXRhLCBodHRwT3B0aW9ucykucGlwZShcbiAgICAgIG1lcmdlTWFwKCh7Ym9keSwgaGVhZGVyc306IGFueSkgPT4ge1xuICAgICAgICAvLyByZXBsYWNlIHRzIHRpbWUgd2l0aCBoZWFkZXIgZGF0ZSAsIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0ZWxlbWV0cnlcbiAgICAgICAgYm9keS50cyA9ICB0aGlzLmdldERhdGVEaWZmKChoZWFkZXJzLmdldCgnRGF0ZScpKSk7XG4gICAgICAgIGlmIChib2R5LnJlc3BvbnNlQ29kZSAhPT0gJ09LJykge1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihib2R5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGJvZHkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBtYWtpbmcgcG9zdCBhcGkgY2FsbHNcbiAgICogQHBhcmFtIFJlcXVlc3RQYXJhbSByZXF1ZXN0UGFyYW0gaW50ZXJmYWNlXG4gICAqL1xuICBwb3N0KHJlcXVlc3RQYXJhbTogUmVxdWVzdFBhcmFtKTogT2JzZXJ2YWJsZTxTZXJ2ZXJSZXNwb25zZT4ge1xuICAgIGNvbnN0IGh0dHBPcHRpb25zOiBIdHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3RQYXJhbS5oZWFkZXIgPyB0aGlzLmdldEhlYWRlcihyZXF1ZXN0UGFyYW0uaGVhZGVyKSA6IHRoaXMuZ2V0SGVhZGVyKCksXG4gICAgICBwYXJhbXM6IHJlcXVlc3RQYXJhbS5wYXJhbVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5iYXNlVXJsICsgcmVxdWVzdFBhcmFtLnVybCwgcmVxdWVzdFBhcmFtLmRhdGEsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRhdGE6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnJlc3BvbnNlQ29kZSAhPT0gJ09LJykge1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGRhdGEpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBtYWtpbmcgcGF0Y2ggYXBpIGNhbGxzXG4gICAqXG4gICAqIEBwYXJhbSBSZXF1ZXN0UGFyYW0gcmVxdWVzdFBhcmFtIGludGVyZmFjZVxuICAgKlxuICAgKi9cbiAgcGF0Y2gocmVxdWVzdFBhcmFtOiBSZXF1ZXN0UGFyYW0pOiBPYnNlcnZhYmxlPFNlcnZlclJlc3BvbnNlPiB7XG4gICAgY29uc3QgaHR0cE9wdGlvbnM6IEh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogcmVxdWVzdFBhcmFtLmhlYWRlciA/IHJlcXVlc3RQYXJhbS5oZWFkZXIgOiB0aGlzLmdldEhlYWRlcigpLFxuICAgICAgcGFyYW1zOiByZXF1ZXN0UGFyYW0ucGFyYW1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaCh0aGlzLmJhc2VVcmwgKyByZXF1ZXN0UGFyYW0udXJsLCByZXF1ZXN0UGFyYW0uZGF0YSwgaHR0cE9wdGlvbnMpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGF0YTogU2VydmVyUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGRhdGEucmVzcG9uc2VDb2RlICE9PSAnT0snKSB7XG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZGF0YSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogZm9yIG1ha2luZyBkZWxldGUgYXBpIGNhbGxzXG4gICAqIEBwYXJhbSBSZXF1ZXN0UGFyYW0gcmVxdWVzdFBhcmFtIGludGVyZmFjZVxuICAgKi9cbiAgZGVsZXRlKHJlcXVlc3RQYXJhbTogUmVxdWVzdFBhcmFtKTogT2JzZXJ2YWJsZTxTZXJ2ZXJSZXNwb25zZT4ge1xuICAgIGNvbnN0IGh0dHBPcHRpb25zOiBIdHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IHJlcXVlc3RQYXJhbS5oZWFkZXIgPyByZXF1ZXN0UGFyYW0uaGVhZGVyIDogdGhpcy5nZXRIZWFkZXIoKSxcbiAgICAgIHBhcmFtczogcmVxdWVzdFBhcmFtLnBhcmFtLFxuICAgICAgYm9keTogcmVxdWVzdFBhcmFtLmRhdGFcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuYmFzZVVybCArIHJlcXVlc3RQYXJhbS51cmwsIGh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRhdGE6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnJlc3BvbnNlQ29kZSAhPT0gJ09LJykge1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGRhdGEpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBwcmVwYXJpbmcgaGVhZGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRIZWFkZXIoaGVhZGVycz86IEh0dHBPcHRpb25zWydoZWFkZXJzJ10pOiBIdHRwT3B0aW9uc1snaGVhZGVycyddIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGNvbnN0IGRlZmF1bHRfaGVhZGVycyA9IHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgLy8gJ1gtQ29uc3VtZXItSUQnOiAnWC1Db25zdW1lci1JRCcsXG4gICAgICAnWC1Tb3VyY2UnOiAnd2ViJyxcbiAgICAgIHRzOiAnMjAyMC0xMi0zMVQxNjoyMzoyNyswNTozMCcsIC8vIG1vbWVudCgpLmZvcm1hdCgpLCAvL1RPRE86OlxuICAgICAgJ1gtbXNnaWQnOiB1dWlkdjQoKSxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgIEF1dGhvcml6YXRpb246ICcnXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmRldmljZUlkID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXZpY2VJZCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlIHx8ICc5ZDE1ODhjM2NiYzc2NWMzMzRjY2M1NjVlNTNkODFhOCc7XG4gICAgICB0aGlzLmFwcElkID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBJZCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlIHx8ICdkZXYuZG9jay5wb3J0YWwnO1xuICAgIH0gY2F0Y2ggKGVycikgeyB9XG4gICAgaWYgKHRoaXMuZGV2aWNlSWQpIHtcbiAgICAgIGRlZmF1bHRfaGVhZGVyc1snWC1EZXZpY2UtSUQnXSA9IHRoaXMuZGV2aWNlSWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnJvb3RPcmdJZCkge1xuICAgICAgZGVmYXVsdF9oZWFkZXJzWydYLU9yZy1jb2RlJ10gPSB0aGlzLnJvb3RPcmdJZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2hhbm5lbElkKSB7XG4gICAgICBkZWZhdWx0X2hlYWRlcnNbJ1gtQ2hhbm5lbC1JZCddID0gdGhpcy5jaGFubmVsSWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmFwcElkKSB7XG4gICAgICBkZWZhdWx0X2hlYWRlcnNbJ1gtQXBwLUlkJ10gPSB0aGlzLmFwcElkO1xuICAgIH1cbiAgICBpZiAoaGVhZGVycykge1xuICAgICAgcmV0dXJuIHsgLi4uZGVmYXVsdF9oZWFkZXJzLCAuLi5oZWFkZXJzIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLmRlZmF1bHRfaGVhZGVycyB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0ZURpZmYoc2VydmVyZGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgY3VycmVudGRhdGU6IGFueSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyRGF0ZTogYW55ID0gbmV3IERhdGUoc2VydmVyZGF0ZSk7XG4gICAgaWYgKHNlcnZlcmRhdGUpIHtcbiAgICAgIHJldHVybiAoIHNlcnZlckRhdGUgLSBjdXJyZW50ZGF0ZSApIC8gMTAwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import * as _ from 'lodash-es';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../config/config.service";
|
|
7
|
+
import * as i2 from "../public-data/public-data.service";
|
|
8
|
+
import * as i3 from "../../services/tree/tree.service";
|
|
9
|
+
import * as i4 from "../../services/toaster/toaster.service";
|
|
10
|
+
export class DialcodeService {
|
|
11
|
+
constructor(configService, publicDataService, treeService, toasterService) {
|
|
12
|
+
this.configService = configService;
|
|
13
|
+
this.publicDataService = publicDataService;
|
|
14
|
+
this.treeService = treeService;
|
|
15
|
+
this.toasterService = toasterService;
|
|
16
|
+
this.invaliddialCodeMap = {};
|
|
17
|
+
this.dialCodeMap = {};
|
|
18
|
+
this.dialcodeList = [];
|
|
19
|
+
this.maxChar = 6;
|
|
20
|
+
}
|
|
21
|
+
reserveDialCode(indetifier, requestCount) {
|
|
22
|
+
const req = {
|
|
23
|
+
url: this.configService.urlConFig.URLS.DIALCODE.RESERVE + indetifier,
|
|
24
|
+
data: {
|
|
25
|
+
request: {
|
|
26
|
+
dialcodes: {
|
|
27
|
+
count: requestCount,
|
|
28
|
+
qrCodeSpec: {
|
|
29
|
+
errorCorrectionLevel: 'H'
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return this.publicDataService.post(req);
|
|
36
|
+
}
|
|
37
|
+
linkDialcode(indetifier, dialcodes) {
|
|
38
|
+
const req = {
|
|
39
|
+
url: this.configService.urlConFig.URLS.DIALCODE.LINK + indetifier,
|
|
40
|
+
data: {
|
|
41
|
+
request: {
|
|
42
|
+
content: dialcodes
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return this.publicDataService.post(req);
|
|
47
|
+
}
|
|
48
|
+
downloadQRCode(processId) {
|
|
49
|
+
const req = {
|
|
50
|
+
url: this.configService.urlConFig.URLS.DIALCODE.PROCESS + processId,
|
|
51
|
+
};
|
|
52
|
+
return this.publicDataService.get(req);
|
|
53
|
+
}
|
|
54
|
+
searchDialCode(dialcode) {
|
|
55
|
+
const req = {
|
|
56
|
+
url: this.configService.urlConFig.URLS.DIALCODE.SEARCH,
|
|
57
|
+
data: {
|
|
58
|
+
request: {
|
|
59
|
+
search: {
|
|
60
|
+
identifier: dialcode,
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
return this.publicDataService.post(req);
|
|
66
|
+
}
|
|
67
|
+
updateDialCode(dialcode) {
|
|
68
|
+
if (!_.isEmpty(dialcode)) {
|
|
69
|
+
dialcode = _.isArray(dialcode) ? dialcode[0] : dialcode;
|
|
70
|
+
const editFlag = (dialcode && (dialcode.length === this.maxChar)) ? true : false;
|
|
71
|
+
if (_.indexOf(this.dialcodeList, dialcode) !== -1) {
|
|
72
|
+
return of({ isEditable: editFlag, isValid: true });
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return this.searchDialCode(dialcode).pipe(map(response => {
|
|
76
|
+
if (response.result.count) {
|
|
77
|
+
_.uniq(this.dialcodeList.push(response.result.dialcodes[0].identifier));
|
|
78
|
+
return { isEditable: editFlag, isValid: true };
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return { isEditable: editFlag, isValid: false };
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return of({ isEditable: false });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
clearDialCode() {
|
|
91
|
+
const currentNode = this.treeService.getActiveNode().data;
|
|
92
|
+
if (_.has(this.invaliddialCodeMap, currentNode.id)) {
|
|
93
|
+
_.unset(this.invaliddialCodeMap, currentNode.id);
|
|
94
|
+
}
|
|
95
|
+
if (_.has(this.dialCodeMap, currentNode.id)) {
|
|
96
|
+
_.unset(this.dialCodeMap, currentNode.id);
|
|
97
|
+
}
|
|
98
|
+
if (currentNode.metadata && currentNode.metadata.dialcodes === null) {
|
|
99
|
+
if (this.treeService.treeCache.nodesModified && this.treeService.treeCache.nodesModified[currentNode.id]) {
|
|
100
|
+
this.treeService.treeCache.nodesModified[currentNode.id].metadata.dialcodes = [];
|
|
101
|
+
}
|
|
102
|
+
this.dialCodeMap[currentNode.id] = '';
|
|
103
|
+
currentNode.metadata.dialcodes = null;
|
|
104
|
+
}
|
|
105
|
+
this.treeService.nextTreeStatus('modified');
|
|
106
|
+
}
|
|
107
|
+
changeDialCode(dialcode) {
|
|
108
|
+
const currentNode = this.treeService.getActiveNode().data;
|
|
109
|
+
if (_.isEmpty(dialcode)) {
|
|
110
|
+
if (_.has(this.invaliddialCodeMap, currentNode.id)) {
|
|
111
|
+
_.unset(this.invaliddialCodeMap, currentNode.id);
|
|
112
|
+
}
|
|
113
|
+
if (_.has(this.dialCodeMap, currentNode.id)) {
|
|
114
|
+
_.unset(this.dialCodeMap, currentNode.id);
|
|
115
|
+
}
|
|
116
|
+
if (currentNode.metadata && currentNode.metadata.dialcodes && currentNode.metadata.dialcodes.length) {
|
|
117
|
+
if (this.treeService.treeCache.nodesModified && this.treeService.treeCache.nodesModified[currentNode.id]) {
|
|
118
|
+
this.treeService.treeCache.nodesModified[currentNode.id].metadata.dialcodes = [];
|
|
119
|
+
}
|
|
120
|
+
this.dialCodeMap[currentNode.id] = '';
|
|
121
|
+
currentNode.metadata.dialcodes = null;
|
|
122
|
+
}
|
|
123
|
+
this.treeService.nextTreeStatus('modified');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
validateDialCode(dialcode) {
|
|
127
|
+
if (this.checkDuplicateDialCode(dialcode)) {
|
|
128
|
+
return of({ isEditable: true, isValid: false, statusMsg: 'Duplicate QR code' });
|
|
129
|
+
}
|
|
130
|
+
else if (String(dialcode).match(/^[A-Z0-9]{2,}$/)) {
|
|
131
|
+
const node = this.treeService.getActiveNode();
|
|
132
|
+
if (this.treeService.treeCache.nodesModified && this.treeService.treeCache.nodesModified[node.data.id]) {
|
|
133
|
+
this.treeService.treeCache.nodesModified[node.data.id].metadata.dialcodes = _.castArray(dialcode);
|
|
134
|
+
}
|
|
135
|
+
if (_.indexOf(this.dialcodeList, dialcode) !== -1) {
|
|
136
|
+
if (_.has(this.invaliddialCodeMap, node.data.id)) {
|
|
137
|
+
_.unset(this.invaliddialCodeMap, node.data.id);
|
|
138
|
+
}
|
|
139
|
+
this.dialCodeMap[node.data.id] = dialcode;
|
|
140
|
+
node.data.metadata.dialcodes = dialcode;
|
|
141
|
+
this.treeService.nextTreeStatus('modified');
|
|
142
|
+
return of({ isEditable: true, isValid: true });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return this.searchDialCode(dialcode).pipe(map(response => {
|
|
146
|
+
if (response.result.count) {
|
|
147
|
+
_.uniq(this.dialcodeList.push(dialcode));
|
|
148
|
+
if (_.has(this.invaliddialCodeMap, node.data.id)) {
|
|
149
|
+
_.unset(this.invaliddialCodeMap, node.data.id);
|
|
150
|
+
}
|
|
151
|
+
this.dialCodeMap[node.data.id] = dialcode;
|
|
152
|
+
node.data.metadata.dialcodes = dialcode;
|
|
153
|
+
this.treeService.nextTreeStatus('modified');
|
|
154
|
+
return { isEditable: true, isValid: true };
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
if (_.has(this.dialCodeMap, node.data.id)) {
|
|
158
|
+
_.unset(this.dialCodeMap, node.data.id);
|
|
159
|
+
}
|
|
160
|
+
this.invaliddialCodeMap[node.data.id] = dialcode;
|
|
161
|
+
node.data.metadata.dialcodes = dialcode;
|
|
162
|
+
this.treeService.nextTreeStatus('modified');
|
|
163
|
+
return { isEditable: true, isValid: false };
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return of({ isEditable: false });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
checkDuplicateDialCode(activeQRCode) {
|
|
173
|
+
const getAllNodes = this.treeService.getTreeObject();
|
|
174
|
+
const findValuesDeepByKey = (obj, key, res = []) => (
|
|
175
|
+
// tslint:disable-next-line:no-unused-expression
|
|
176
|
+
_.cloneDeepWith(obj, (v, k) => { k === key && res.push(v); }) && res);
|
|
177
|
+
const dialcodeArray = _.flattenDeep(findValuesDeepByKey(getAllNodes, 'dialcodes'));
|
|
178
|
+
if (_.includes(dialcodeArray, activeQRCode)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
validateUnitsDialcodes() {
|
|
184
|
+
let dialCodeMisssing = false;
|
|
185
|
+
const rootNode = this.treeService.getTreeObject();
|
|
186
|
+
let dialcodes;
|
|
187
|
+
rootNode.visit((node) => {
|
|
188
|
+
dialcodes = node.data.metadata.dialcodes;
|
|
189
|
+
const unitDialCode = _.isArray(dialcodes) ? dialcodes[0] : dialcodes;
|
|
190
|
+
if (node.data.metadata.visibility === 'Parent' || node.data.root) {
|
|
191
|
+
if (node.data.metadata.dialcodeRequired === 'Yes' && !_.includes(this.dialcodeList, unitDialCode)) {
|
|
192
|
+
dialCodeMisssing = true;
|
|
193
|
+
this.treeService.highlightNode(node.data.id, 'add');
|
|
194
|
+
}
|
|
195
|
+
else if (node.data.metadata.dialcodeRequired === 'Yes' && _.isEmpty(dialcodes)) {
|
|
196
|
+
dialCodeMisssing = true;
|
|
197
|
+
this.treeService.highlightNode(node.data.id, 'add');
|
|
198
|
+
}
|
|
199
|
+
// else if (node.data.metadata.dialcodeRequired === 'No' && !_.isEmpty(dialcodes)) {
|
|
200
|
+
// dialCodeMisssing = true;
|
|
201
|
+
// this.treeService.highlightNode(node.data.id, 'add');
|
|
202
|
+
// }
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
if (dialCodeMisssing) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
highlightNodeForInvalidDialCode(res, nodesModified, indetifier) {
|
|
213
|
+
const mapArr = [];
|
|
214
|
+
_.forEach(this.invaliddialCodeMap, (value, key) => {
|
|
215
|
+
if (_.has(res.identifiers, key)) {
|
|
216
|
+
delete this.invaliddialCodeMap[key];
|
|
217
|
+
this.invaliddialCodeMap[res.identifiers[key]] = value;
|
|
218
|
+
this.treeService.highlightNode(res.identifiers[key], 'add');
|
|
219
|
+
this.storeDialCodes(res.identifiers[key], value);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this.storeDialCodes(key, value);
|
|
223
|
+
this.treeService.highlightNode(key, 'add');
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
_.forEach(this.dialCodeMap, (value, key) => {
|
|
227
|
+
if (_.has(res.identifiers, key)) {
|
|
228
|
+
delete this.dialCodeMap[key];
|
|
229
|
+
this.dialCodeMap[res.identifiers[key]] = value;
|
|
230
|
+
mapArr.push({ identifier: res.identifiers[key], dialcode: value });
|
|
231
|
+
this.treeService.highlightNode(res.identifiers[key], 'remove');
|
|
232
|
+
this.storeDialCodes(res.identifiers[key], value);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
mapArr.push({ identifier: key, dialcode: value });
|
|
236
|
+
this.storeDialCodes(key, value);
|
|
237
|
+
this.treeService.highlightNode(key, 'remove');
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
let dialcodesUpdated = false;
|
|
241
|
+
_.forIn(nodesModified, (node) => {
|
|
242
|
+
if ((node.metadata.dialcodes || node.metadata.dialcodes === null) && !dialcodesUpdated) {
|
|
243
|
+
dialcodesUpdated = true;
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
const dialObj = _.find(mapArr, (Obj) => {
|
|
247
|
+
return Obj.identifier === res.content_id;
|
|
248
|
+
});
|
|
249
|
+
if (!_.isUndefined(dialObj)) {
|
|
250
|
+
dialcodesUpdated = true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
if (dialcodesUpdated) {
|
|
255
|
+
this.dialcodeLink(mapArr, indetifier);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
storeDialCodes(nodeId, dialCode) {
|
|
259
|
+
const node = this.treeService.getNodeById(nodeId);
|
|
260
|
+
if (node && node.data) {
|
|
261
|
+
node.data.metadata.dialcodes = dialCode;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
dialcodeLink(dialcodeMap, indetifier) {
|
|
265
|
+
if (!_.isEmpty(dialcodeMap)) {
|
|
266
|
+
this.linkDialcode(indetifier, dialcodeMap).subscribe((res) => {
|
|
267
|
+
if (!_.isEmpty(this.dialCodeMap) && !_.isEmpty(this.invaliddialCodeMap)) {
|
|
268
|
+
this.toasterService.warning(_.get(this.configService, 'labelConfig.messages.warning.002'));
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.009'));
|
|
272
|
+
}
|
|
273
|
+
this.clearDialCodeMaps();
|
|
274
|
+
}, (err) => {
|
|
275
|
+
if (err && err.error && err.error.params && err.error.params.err === 'ERR_DIALCODE_LINK') {
|
|
276
|
+
this.toasterService.error(err.error.params.errmsg);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.012'));
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
else if (!_.isEmpty(this.invaliddialCodeMap)) {
|
|
284
|
+
this.toasterService.warning(_.get(this.configService, 'labelConfig.messages.warning.002'));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
clearDialCodeMaps() {
|
|
288
|
+
this.dialCodeMap = {};
|
|
289
|
+
this.invaliddialCodeMap = {};
|
|
290
|
+
}
|
|
291
|
+
readExistingQrCode() {
|
|
292
|
+
const rootNode = this.treeService.getTreeObject();
|
|
293
|
+
this.dialcodeList = [];
|
|
294
|
+
rootNode.visit((node) => {
|
|
295
|
+
if (!_.isEmpty(node.data.metadata.dialcodes)) {
|
|
296
|
+
this.dialcodeList.push(node.data.metadata.dialcodes[0]);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialcodeService, deps: [{ token: i1.ConfigService }, { token: i2.PublicDataService }, { token: i3.TreeService }, { token: i4.ToasterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
301
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialcodeService, providedIn: 'root' }); }
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialcodeService, decorators: [{
|
|
304
|
+
type: Injectable,
|
|
305
|
+
args: [{
|
|
306
|
+
providedIn: 'root'
|
|
307
|
+
}]
|
|
308
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.PublicDataService }, { type: i3.TreeService }, { type: i4.ToasterService }]; } });
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGNvZGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9zZXJ2aWNlcy9kaWFsY29kZS9kaWFsY29kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQU0vQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUtyQyxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUFtQixhQUE0QixFQUFVLGlCQUFvQyxFQUN6RSxXQUF3QixFQUFVLGNBQThCO1FBRGpFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUN6RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUw3RSx1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFHLENBQUMsQ0FBQztJQUVvRSxDQUFDO0lBRXpGLGVBQWUsQ0FBQyxVQUFVLEVBQUUsWUFBWTtRQUN0QyxNQUFNLEdBQUcsR0FBRztZQUNWLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxVQUFVO1lBQ3BFLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFO3dCQUNULEtBQUssRUFBRSxZQUFZO3dCQUNuQixVQUFVLEVBQUU7NEJBQ1Ysb0JBQW9CLEVBQUUs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QUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFFO1FBQ3hCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBRSxJQUFJLEVBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0Q7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBalJVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IERpYWxjb2RlQ3Vyc29yIH0gZnJvbSAnQHByb2plY3Qtc3VuYmlyZC9jb21tb24tZm9ybS1lbGVtZW50cy1mdWxsJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHVibGljRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9wdWJsaWMtZGF0YS9wdWJsaWMtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJlZS90cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2FzdGVyL3RvYXN0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERpYWxjb2RlU2VydmljZSBpbXBsZW1lbnRzIERpYWxjb2RlQ3Vyc29yIHtcblxuICBwdWJsaWMgaW52YWxpZGRpYWxDb2RlTWFwID0ge307XG4gIHB1YmxpYyBkaWFsQ29kZU1hcCA9IHt9O1xuICBwdWJsaWMgZGlhbGNvZGVMaXN0ID0gW107XG4gIHByaXZhdGUgbWF4Q2hhciA9IDY7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLCBwcml2YXRlIHB1YmxpY0RhdGFTZXJ2aWNlOiBQdWJsaWNEYXRhU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UsIHByaXZhdGUgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlKSB7IH1cblxuICByZXNlcnZlRGlhbENvZGUoaW5kZXRpZmllciwgcmVxdWVzdENvdW50KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXEgPSB7XG4gICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5ESUFMQ09ERS5SRVNFUlZFICsgaW5kZXRpZmllcixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgIGRpYWxjb2Rlczoge1xuICAgICAgICAgICAgY291bnQ6IHJlcXVlc3RDb3VudCxcbiAgICAgICAgICAgIHFyQ29kZVNwZWM6IHtcbiAgICAgICAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6ICdIJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucG9zdChyZXEpO1xuICB9XG5cbiAgbGlua0RpYWxjb2RlKGluZGV0aWZpZXIsIGRpYWxjb2Rlcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgdXJsOiB0aGlzLmNvbmZpZ1NlcnZpY2UudXJsQ29uRmlnLlVSTFMuRElBTENPREUuTElOSyArIGluZGV0aWZpZXIsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICBjb250ZW50OiBkaWFsY29kZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UucG9zdChyZXEpO1xuICB9XG5cbiAgZG93bmxvYWRRUkNvZGUocHJvY2Vzc0lkKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXEgPSB7XG4gICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS51cmxDb25GaWcuVVJMUy5ESUFMQ09ERS5QUk9DRVNTICsgcHJvY2Vzc0lkLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucHVibGljRGF0YVNlcnZpY2UuZ2V0KHJlcSk7XG4gIH1cblxuICBzZWFyY2hEaWFsQ29kZShkaWFsY29kZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgdXJsOiB0aGlzLmNvbmZpZ1NlcnZpY2UudXJsQ29uRmlnLlVSTFMuRElBTENPREUuU0VBUkNILFxuICAgICAgZGF0YToge1xuICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBkaWFsY29kZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnB1YmxpY0RhdGFTZXJ2aWNlLnBvc3QocmVxKTtcbiAgfVxuXG4gIHVwZGF0ZURpYWxDb2RlKGRpYWxjb2RlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIV8uaXNFbXB0eShkaWFsY29kZSkpIHtcbiAgICAgIGRpYWxjb2RlID0gXy5pc0FycmF5KGRpYWxjb2RlKSA/IGRpYWxjb2RlWzBdIDogZGlhbGNvZGU7XG4gICAgICBjb25zdCBlZGl0RmxhZyA9IChkaWFsY29kZSAmJiAoZGlhbGNvZGUubGVuZ3RoID09PSB0aGlzLm1heENoYXIpKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgIGlmIChfLmluZGV4T2YodGhpcy5kaWFsY29kZUxpc3QsIGRpYWxjb2RlKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIG9mKHsgaXNFZGl0YWJsZTogZWRpdEZsYWcsIGlzVmFsaWQ6IHRydWUgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hEaWFsQ29kZShkaWFsY29kZSkucGlwZShtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQuY291bnQpIHtcbiAgICAgICAgICAgIF8udW5pcSh0aGlzLmRpYWxjb2RlTGlzdC5wdXNoKHJlc3BvbnNlLnJlc3VsdC5kaWFsY29kZXNbMF0uaWRlbnRpZmllcikpO1xuICAgICAgICAgICAgcmV0dXJuIHsgaXNFZGl0YWJsZTogZWRpdEZsYWcsIGlzVmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgaXNFZGl0YWJsZTogZWRpdEZsYWcsIGlzVmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih7IGlzRWRpdGFibGU6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRGlhbENvZGUoKSB7XG4gICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldEFjdGl2ZU5vZGUoKS5kYXRhO1xuICAgIGlmIChfLmhhcyh0aGlzLmludmFsaWRkaWFsQ29kZU1hcCwgY3VycmVudE5vZGUuaWQpKSB7IF8udW5zZXQodGhpcy5pbnZhbGlkZGlhbENvZGVNYXAsIGN1cnJlbnROb2RlLmlkKTsgfVxuICAgIGlmIChfLmhhcyh0aGlzLmRpYWxDb2RlTWFwLCBjdXJyZW50Tm9kZS5pZCkpIHsgXy51bnNldCh0aGlzLmRpYWxDb2RlTWFwLCBjdXJyZW50Tm9kZS5pZCk7IH1cbiAgICBpZiAoY3VycmVudE5vZGUubWV0YWRhdGEgJiYgY3VycmVudE5vZGUubWV0YWRhdGEuZGlhbGNvZGVzID09PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy50cmVlU2VydmljZS50cmVlQ2FjaGUubm9kZXNNb2RpZmllZCAmJiB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW2N1cnJlbnROb2RlLmlkXSkge1xuICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW2N1cnJlbnROb2RlLmlkXS5tZXRhZGF0YS5kaWFsY29kZXMgPSBbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlhbENvZGVNYXBbY3VycmVudE5vZGUuaWRdID0gJyc7XG4gICAgICBjdXJyZW50Tm9kZS5tZXRhZGF0YS5kaWFsY29kZXMgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm5leHRUcmVlU3RhdHVzKCdtb2RpZmllZCcpO1xuICB9XG5cbiAgY2hhbmdlRGlhbENvZGUoZGlhbGNvZGUpIHtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0QWN0aXZlTm9kZSgpLmRhdGE7XG4gICAgaWYgKF8uaXNFbXB0eShkaWFsY29kZSkpIHtcbiAgICAgIGlmIChfLmhhcyh0aGlzLmludmFsaWRkaWFsQ29kZU1hcCwgY3VycmVudE5vZGUuaWQpKSB7IF8udW5zZXQodGhpcy5pbnZhbGlkZGlhbENvZGVNYXAsIGN1cnJlbnROb2RlLmlkKTsgfVxuICAgICAgaWYgKF8uaGFzKHRoaXMuZGlhbENvZGVNYXAsIGN1cnJlbnROb2RlLmlkKSkgeyBfLnVuc2V0KHRoaXMuZGlhbENvZGVNYXAsIGN1cnJlbnROb2RlLmlkKTsgfVxuICAgICAgaWYgKGN1cnJlbnROb2RlLm1ldGFkYXRhICYmIGN1cnJlbnROb2RlLm1ldGFkYXRhLmRpYWxjb2RlcyAmJiBjdXJyZW50Tm9kZS5tZXRhZGF0YS5kaWFsY29kZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkICYmIHRoaXMudHJlZVNlcnZpY2UudHJlZUNhY2hlLm5vZGVzTW9kaWZpZWRbY3VycmVudE5vZGUuaWRdKSB7XG4gICAgICAgICAgdGhpcy50cmVlU2VydmljZS50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtjdXJyZW50Tm9kZS5pZF0ubWV0YWRhdGEuZGlhbGNvZGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaWFsQ29kZU1hcFtjdXJyZW50Tm9kZS5pZF0gPSAnJztcbiAgICAgICAgY3VycmVudE5vZGUubWV0YWRhdGEuZGlhbGNvZGVzID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJlZVNlcnZpY2UubmV4dFRyZWVTdGF0dXMoJ21vZGlmaWVkJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEaWFsQ29kZShkaWFsY29kZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMuY2hlY2tEdXBsaWNhdGVEaWFsQ29kZShkaWFsY29kZSkpIHtcbiAgICAgIHJldHVybiBvZih7IGlzRWRpdGFibGU6IHRydWUsIGlzVmFsaWQ6IGZhbHNlLCBzdGF0dXNNc2c6ICdEdXBsaWNhdGUgUVIgY29kZScgfSk7XG4gICAgfSBlbHNlIGlmIChTdHJpbmcoZGlhbGNvZGUpLm1hdGNoKC9eW0EtWjAtOV17Mix9JC8pKSB7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy50cmVlU2VydmljZS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgICBpZiAodGhpcy50cmVlU2VydmljZS50cmVlQ2FjaGUubm9kZXNNb2RpZmllZCAmJiB0aGlzLnRyZWVTZXJ2aWNlLnRyZWVDYWNoZS5ub2Rlc01vZGlmaWVkW25vZGUuZGF0YS5pZF0pIHtcbiAgICAgICAgdGhpcy50cmVlU2VydmljZS50cmVlQ2FjaGUubm9kZXNNb2RpZmllZFtub2RlLmRhdGEuaWRdLm1ldGFkYXRhLmRpYWxjb2RlcyA9IF8uY2FzdEFycmF5KGRpYWxjb2RlKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmluZGV4T2YodGhpcy5kaWFsY29kZUxpc3QsIGRpYWxjb2RlKSAhPT0gLTEpIHtcbiAgICAgICAgaWYgKF8uaGFzKHRoaXMuaW52YWxpZGRpYWxDb2RlTWFwLCBub2RlLmRhdGEuaWQpKSB7IF8udW5zZXQodGhpcy5pbnZhbGlkZGlhbENvZGVNYXAsIG5vZGUuZGF0YS5pZCk7IH1cbiAgICAgICAgdGhpcy5kaWFsQ29kZU1hcFtub2RlLmRhdGEuaWRdID0gZGlhbGNvZGU7XG4gICAgICAgIG5vZGUuZGF0YS5tZXRhZGF0YS5kaWFsY29kZXMgPSBkaWFsY29kZTtcbiAgICAgICAgdGhpcy50cmVlU2VydmljZS5uZXh0VHJlZVN0YXR1cygnbW9kaWZpZWQnKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgaXNFZGl0YWJsZTogdHJ1ZSwgaXNWYWxpZDogdHJ1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaERpYWxDb2RlKGRpYWxjb2RlKS5waXBlKG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdC5jb3VudCkge1xuICAgICAgICAgICAgXy51bmlxKHRoaXMuZGlhbGNvZGVMaXN0LnB1c2goZGlhbGNvZGUpKTtcbiAgICAgICAgICAgIGlmIChfLmhhcyh0aGlzLmludmFsaWRkaWFsQ29kZU1hcCwgbm9kZS5kYXRhLmlkKSkgeyBfLnVuc2V0KHRoaXMuaW52YWxpZGRpYWxDb2RlTWFwLCBub2RlLmRhdGEuaWQpOyB9XG4gICAgICAgICAgICB0aGlzLmRpYWxDb2RlTWFwW25vZGUuZGF0YS5pZF0gPSBkaWFsY29kZTtcbiAgICAgICAgICAgIG5vZGUuZGF0YS5tZXRhZGF0YS5kaWFsY29kZXMgPSBkaWFsY29kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UubmV4dFRyZWVTdGF0dXMoJ21vZGlmaWVkJyk7XG4gICAgICAgICAgICByZXR1cm4geyBpc0VkaXRhYmxlOiB0cnVlLCBpc1ZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChfLmhhcyh0aGlzLmRpYWxDb2RlTWFwLCBub2RlLmRhdGEuaWQpKSB7IF8udW5zZXQodGhpcy5kaWFsQ29kZU1hcCwgbm9kZS5kYXRhLmlkKTsgfVxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkZGlhbENvZGVNYXBbbm9kZS5kYXRhLmlkXSA9IGRpYWxjb2RlO1xuICAgICAgICAgICAgbm9kZS5kYXRhLm1ldGFkYXRhLmRpYWxjb2RlcyA9IGRpYWxjb2RlO1xuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS5uZXh0VHJlZVN0YXR1cygnbW9kaWZpZWQnKTtcbiAgICAgICAgICAgIHJldHVybiB7IGlzRWRpdGFibGU6IHRydWUsIGlzVmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih7IGlzRWRpdGFibGU6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRHVwbGljYXRlRGlhbENvZGUoYWN0aXZlUVJDb2RlKSB7XG4gICAgY29uc3QgZ2V0QWxsTm9kZXMgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldFRyZWVPYmplY3QoKTtcbiAgICBjb25zdCBmaW5kVmFsdWVzRGVlcEJ5S2V5ID0gKG9iaiwga2V5LCByZXMgPSBbXSkgPT4gKFxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICBfLmNsb25lRGVlcFdpdGgob2JqLCAodiwgaykgPT4geyBrID09PSBrZXkgJiYgcmVzLnB1c2godik7IH0pICYmIHJlc1xuICAgICk7XG4gICAgY29uc3QgZGlhbGNvZGVBcnJheSA9IF8uZmxhdHRlbkRlZXAoZmluZFZhbHVlc0RlZXBCeUtleShnZXRBbGxOb2RlcywgJ2RpYWxjb2RlcycpKTtcbiAgICBpZiAoXy5pbmNsdWRlcyhkaWFsY29kZUFycmF5LCBhY3RpdmVRUkNvZGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFsaWRhdGVVbml0c0RpYWxjb2RlcygpIHtcbiAgICBsZXQgZGlhbENvZGVNaXNzc2luZyA9IGZhbHNlO1xuICAgIGNvbnN0IHJvb3ROb2RlID0gdGhpcy50cmVlU2VydmljZS5nZXRUcmVlT2JqZWN0KCk7XG4gICAgbGV0IGRpYWxjb2RlcztcbiAgICByb290Tm9kZS52aXNpdCgobm9kZSkgPT4ge1xuICAgICAgZGlhbGNvZGVzID0gbm9kZS5kYXRhLm1ldGFkYXRhLmRpYWxjb2RlcztcbiAgICAgIGNvbnN0IHVuaXREaWFsQ29kZSA9IF8uaXNBcnJheShkaWFsY29kZXMpID8gZGlhbGNvZGVzWzBdIDogZGlhbGNvZGVzO1xuICAgICAgaWYgKG5vZGUuZGF0YS5tZXRhZGF0YS52aXNpYmlsaXR5ID09PSAnUGFyZW50JyB8fCBub2RlLmRhdGEucm9vdCkge1xuICAgICAgICBpZiAobm9kZS5kYXRhLm1ldGFkYXRhLmRpYWxjb2RlUmVxdWlyZWQgPT09ICdZZXMnICYmICFfLmluY2x1ZGVzKHRoaXMuZGlhbGNvZGVMaXN0LCB1bml0RGlhbENvZGUpKSB7XG4gICAgICAgICAgZGlhbENvZGVNaXNzc2luZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy50cmVlU2VydmljZS5oaWdobGlnaHROb2RlKG5vZGUuZGF0YS5pZCwgJ2FkZCcpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUuZGF0YS5tZXRhZGF0YS5kaWFsY29kZVJlcXVpcmVkID09PSAnWWVzJyAmJiBfLmlzRW1wdHkoZGlhbGNvZGVzKSkge1xuICAgICAgICAgIGRpYWxDb2RlTWlzc3NpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UuaGlnaGxpZ2h0Tm9kZShub2RlLmRhdGEuaWQsICdhZGQnKTtcbiAgICAgICAgfSBcbiAgICAgICAgLy8gZWxzZSBpZiAobm9kZS5kYXRhLm1ldGFkYXRhLmRpYWxjb2RlUmVxdWlyZWQgPT09ICdObycgJiYgIV8uaXNFbXB0eShkaWFsY29kZXMpKSB7XG4gICAgICAgIC8vICAgZGlhbENvZGVNaXNzc2luZyA9IHRydWU7XG4gICAgICAgIC8vICAgdGhpcy50cmVlU2VydmljZS5oaWdobGlnaHROb2RlKG5vZGUuZGF0YS5pZCwgJ2FkZCcpO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpYWxDb2RlTWlzc3NpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgaGlnaGxpZ2h0Tm9kZUZvckludmFsaWREaWFsQ29kZShyZXMsIG5vZGVzTW9kaWZpZWQsIGluZGV0aWZpZXIpIHtcbiAgICBjb25zdCBtYXBBcnIgPSBbXTtcbiAgICBfLmZvckVhY2godGhpcy5pbnZhbGlkZGlhbENvZGVNYXAsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAoXy5oYXMocmVzLmlkZW50aWZpZXJzLCBrZXkpKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmludmFsaWRkaWFsQ29kZU1hcFtrZXldO1xuICAgICAgICB0aGlzLmludmFsaWRkaWFsQ29kZU1hcFtyZXMuaWRlbnRpZmllcnNba2V5XV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50cmVlU2VydmljZS5oaWdobGlnaHROb2RlKHJlcy5pZGVudGlmaWVyc1trZXldLCAnYWRkJyk7XG4gICAgICAgIHRoaXMuc3RvcmVEaWFsQ29kZXMocmVzLmlkZW50aWZpZXJzW2tleV0sIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmVEaWFsQ29kZXMoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2UuaGlnaGxpZ2h0Tm9kZShrZXksICdhZGQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfLmZvckVhY2godGhpcy5kaWFsQ29kZU1hcCwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmIChfLmhhcyhyZXMuaWRlbnRpZmllcnMsIGtleSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGlhbENvZGVNYXBba2V5XTtcbiAgICAgICAgdGhpcy5kaWFsQ29kZU1hcFtyZXMuaWRlbnRpZmllcnNba2V5XV0gPSB2YWx1ZTtcbiAgICAgICAgbWFwQXJyLnB1c2goeyBpZGVudGlmaWVyOiByZXMuaWRlbnRpZmllcnNba2V5XSwgZGlhbGNvZGU6IHZhbHVlIH0pO1xuICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmhpZ2hsaWdodE5vZGUocmVzLmlkZW50aWZpZXJzW2tleV0sICdyZW1vdmUnKTtcbiAgICAgICAgdGhpcy5zdG9yZURpYWxDb2RlcyhyZXMuaWRlbnRpZmllcnNba2V5XSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwQXJyLnB1c2goeyBpZGVudGlmaWVyOiBrZXksIGRpYWxjb2RlOiB2YWx1ZSB9KTtcbiAgICAgICAgdGhpcy5zdG9yZURpYWxDb2RlcyhrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy50cmVlU2VydmljZS5oaWdobGlnaHROb2RlKGtleSwgJ3JlbW92ZScpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCBkaWFsY29kZXNVcGRhdGVkID0gZmFsc2U7XG4gICAgXy5mb3JJbihub2Rlc01vZGlmaWVkLCAobm9kZSkgPT4ge1xuICAgICAgaWYgKChub2RlLm1ldGFkYXRhLmRpYWxjb2RlcyB8fCBub2RlLm1ldGFkYXRhLmRpYWxjb2RlcyA9PT0gbnVsbCkgJiYgIWRpYWxjb2Rlc1VwZGF0ZWQpIHtcbiAgICAgICAgZGlhbGNvZGVzVXBkYXRlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkaWFsT2JqID0gXy5maW5kKG1hcEFyciwgKE9iaikgPT4geyAgLy8gY2hlY2sgdGhpczogbm90IHJlcXVpcmVkXG4gICAgICAgICAgcmV0dXJuIE9iai5pZGVudGlmaWVyID09PSByZXMuY29udGVudF9pZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkaWFsT2JqKSkge1xuICAgICAgICAgIGRpYWxjb2Rlc1VwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpYWxjb2Rlc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuZGlhbGNvZGVMaW5rKG1hcEFyciwgaW5kZXRpZmllcik7XG4gICAgfVxuICB9XG5cbiAgc3RvcmVEaWFsQ29kZXMobm9kZUlkLCBkaWFsQ29kZSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldE5vZGVCeUlkKG5vZGVJZCk7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5kYXRhKSB7XG4gICAgICBub2RlLmRhdGEubWV0YWRhdGEuZGlhbGNvZGVzID0gZGlhbENvZGU7XG4gICAgfVxuICB9XG5cbiAgZGlhbGNvZGVMaW5rKGRpYWxjb2RlTWFwLCBpbmRldGlmaWVyKSB7XG4gICAgaWYgKCFfLmlzRW1wdHkoZGlhbGNvZGVNYXApKSB7XG4gICAgICB0aGlzLmxpbmtEaWFsY29kZShpbmRldGlmaWVyLCBkaWFsY29kZU1hcCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCAhXy5pc0VtcHR5KHRoaXMuZGlhbENvZGVNYXApICYmICFfLmlzRW1wdHkodGhpcy5pbnZhbGlkZGlhbENvZGVNYXApKSB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS53YXJuaW5nKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLndhcm5pbmcuMDAyJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5zdWNjZXNzLjAwOScpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsZWFyRGlhbENvZGVNYXBzKCk7XG4gICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICBpZiAoZXJyICYmIGVyci5lcnJvciAmJiBlcnIuZXJyb3IucGFyYW1zICYmIGVyci5lcnJvci5wYXJhbXMuZXJyID09PSAnRVJSX0RJQUxDT0RFX0xJTksnKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGVyci5lcnJvci5wYXJhbXMuZXJybXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDEyJykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFfLmlzRW1wdHkodGhpcy5pbnZhbGlkZGlhbENvZGVNYXApKSB7XG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLndhcm5pbmcoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMud2FybmluZy4wMDInKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJEaWFsQ29kZU1hcHMoKSB7XG4gICAgdGhpcy5kaWFsQ29kZU1hcCA9IHt9O1xuICAgIHRoaXMuaW52YWxpZGRpYWxDb2RlTWFwID0ge307XG4gIH1cblxuICByZWFkRXhpc3RpbmdRckNvZGUoKSB7XG4gICAgY29uc3Qgcm9vdE5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldFRyZWVPYmplY3QoKTtcbiAgICB0aGlzLmRpYWxjb2RlTGlzdCA9IFtdIDtcbiAgICByb290Tm9kZS52aXNpdCgoIG5vZGUgKSA9PiB7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KG5vZGUuZGF0YS5tZXRhZGF0YS5kaWFsY29kZXMpKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxjb2RlTGlzdC5wdXNoKG5vZGUuZGF0YS5tZXRhZGF0YS5kaWFsY29kZXNbMF0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIl19
|