@tuki-io/tuki-widgets 0.0.53 → 0.0.57
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/esm2020/users-list/src/app.constants.mjs +3 -2
- package/esm2020/users-list/src/classes/app-location.mjs +32 -0
- package/esm2020/users-list/src/classes/user-list.mjs +2 -1
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +72 -19
- package/esm2020/users-list/src/services/site-settings.service.mjs +27 -0
- package/esm2020/users-list/src/users-list.component.mjs +5 -5
- package/esm2020/users-list/src/users-list.module.mjs +6 -3
- package/esm2020/users-list/src/utils/common-functions.mjs +14 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +150 -25
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +147 -25
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/package.json +1 -1
- package/users-list/src/app.constants.d.ts +1 -0
- package/users-list/src/classes/app-location.d.ts +17 -0
- package/users-list/src/classes/user-list.d.ts +5 -1
- package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +14 -1
- package/users-list/src/services/site-settings.service.d.ts +11 -0
- package/users-list/src/users-list.component.d.ts +1 -1
- package/users-list/src/utils/common-functions.d.ts +1 -0
|
@@ -17,7 +17,8 @@ export const API = {
|
|
|
17
17
|
WEBEX_USERS: "/api/webex/provisioning/customers/:customerId/users",
|
|
18
18
|
MIGRATED_USERS: "/api/search/migratedusers",
|
|
19
19
|
REVERT_WEBEX_USER: "/api/webex/provisioning/customers/:customerId/persons/:webexUUID/revertmigration",
|
|
20
|
-
PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers"
|
|
20
|
+
PHONE_NUMBERS: "/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers",
|
|
21
|
+
GET_LOCATIONS: "/api/search/webex/customers/:customerId/locations"
|
|
21
22
|
};
|
|
22
23
|
export const REGEX_PATTERN = {
|
|
23
24
|
EMAIL: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))' +
|
|
@@ -47,4 +48,4 @@ export const CUCMS_TO_IGNORE = [
|
|
|
47
48
|
250
|
|
48
49
|
];
|
|
49
50
|
export const MAX_INTEGER = 2147483647;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2Vycy1saXN0L3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixVQUFVLEVBQUUsNENBQTRDO0lBQ3hELGtCQUFrQixFQUFFLDBDQUEwQztJQUM5RCxrQkFBa0IsRUFBRSx3Q0FBd0M7SUFDNUQsVUFBVSxFQUFFLHNDQUFzQztJQUNsRCxrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxTQUFTLEVBQUUsc0RBQXNEO0lBQ2pFLHNCQUFzQixFQUFFLDJDQUEyQztJQUNuRSxXQUFXLEVBQUUsZ0RBQWdEO0lBQzdELGlCQUFpQixFQUFFLDJFQUEyRTtJQUM5RixpQkFBaUIsRUFBRSwwQ0FBMEM7SUFDN0QsY0FBYyxFQUFFLGlFQUFpRTtJQUNqRix3QkFBd0IsRUFBRSxpQ0FBaUM7SUFDM0Qsa0JBQWtCLEVBQUUsZ0RBQWdEO0lBQ3BFLG9CQUFvQixFQUFFLHdEQUF3RDtJQUM5RSxXQUFXLEVBQUUscURBQXFEO0lBQ2xFLGNBQWMsRUFBRSwyQkFBMkI7SUFDM0MsaUJBQWlCLEVBQUUsa0ZBQWtGO0lBQ3JHLGFBQWEsRUFBRSw0RUFBNEU7SUFDM0YsYUFBYSxFQUFFLG1EQUFtRDtDQUNuRSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLEtBQUssRUFBRSwwRUFBMEU7UUFDakYsK0NBQStDO1FBQy9DLHlEQUF5RDtDQUMxRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsSUFBSSxFQUFFLEVBQUU7SUFDUixLQUFLLEVBQUUsQ0FBQztDQUNULENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxFQUFFO0lBQ0YsRUFBRTtJQUNGLEdBQUc7SUFDSCxHQUFHO0NBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0NBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0NBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVBJID0ge1xyXG4gIFVTRVJfVE9LRU46ICcvYXBpL3Byb3Zpc2lvbi86c2l0ZUlkL3VzZXJzLzp1c2VySWQvdG9rZW4nLFxyXG4gIFVQREFURV9VU0VSX0ZJRUxEUzogJy9hcGkvcHJvdmlzaW9uLzpzaXRlSWQvdXNlckZpZWxkcy86dG9rZW4nLFxyXG4gIFBFUlNJU1RfVVNFUl9DQUNIRTogJy9hcGkvcHJvdmlzaW9uLzpzaXRlSWQvc2F2ZVVzZXIvOnRva2VuJyxcclxuICBVU0VSX0JZX0lEOiAnL2FwaS9wcm92aXNpb24vOnNpdGVJZC91c2Vycy86dXNlcklkJyxcclxuICBRVUlDS19VU0VSU19TRUFSQ0g6IFwiL2FwaS9zZWFyY2gvcXVpY2t1c2Vyc1wiLFxyXG4gIERFTEVURV9VU0VSOiBcIi9hcGkvc2VhcmNoL3F1aWNrdXNlcnNcIixcclxuICBNT1ZFX1VTRVI6IFwiL2FwaS9taWdyYXRpb24vd2ViZXgvc2luZ2xlbWlncmF0aW9uL2ZlYXR1cmVzL1BFUlNPTlwiLFxyXG4gIEFWQUlMQUJMRV9ETl9JTl9SQU5HRVM6IFwiL2FwaS9zaXRlcy86c2l0ZUlkL2F2YWlsYWJsZS1kbi1pbi1yYW5nZXNcIixcclxuICBERUxFVEVfTElORTogXCIvYXBpL3Byb3Zpc2lvbi86c2l0ZUlkL2RlbGV0ZUxpbmUvOnBraWQvOnRva2VuXCIsXHJcbiAgRElTQVNTT0NJQVRFX0xJTkU6IFwiL2FwaS9wcm92aXNpb24vOnNpdGVJZC86ZGV2aWNlTmFtZS9kZWxldGVMaW5lQXNzb2NpYXRpb24vOmxpbmVQa2lkLzp0b2tlblwiLFxyXG4gIENIRUNLX0RFTEVURV9MSU5FOiBcIi9hcGkvcHJvdmlzaW9uLzpzaXRlSWQvY2hlY2tsaW5lZGVsZXRpb25cIixcclxuICBBU1NPQ0lBVEVfTElORTogXCIvYXBpL3Byb3Zpc2lvbi86c2l0ZUlkLzpkZXZpY2VOYW1lL2NyZWF0ZUxpbmVBc3NvY2lhdGlvbi86dG9rZW5cIixcclxuICBDSEVDS19ERVNUSU5BVElPTl9OVU1CRVI6IFwiL2FwaS9wcm92aXNpb24vOnNpdGVJZC9jaGVjay1kblwiLFxyXG4gIFVQREFURV9MSU5FX0ZJRUxEUzogXCIvYXBpL3Byb3Zpc2lvbi86c2l0ZUlkL2xpbmVGaWVsZHMvOnBraWQvOnRva2VuXCIsXHJcbiAgVVBEQVRFX0RFVklDRV9GSUVMRFM6IFwiL2FwaS9wcm92aXNpb24vOnNpdGVJZC9kZXZpY2VGaWVsZHMvOmRldmljZU5hbWUvOnRva2VuXCIsXHJcbiAgV0VCRVhfVVNFUlM6IFwiL2FwaS93ZWJleC9wcm92aXNpb25pbmcvY3VzdG9tZXJzLzpjdXN0b21lcklkL3VzZXJzXCIsXHJcbiAgTUlHUkFURURfVVNFUlM6IFwiL2FwaS9zZWFyY2gvbWlncmF0ZWR1c2Vyc1wiLFxyXG4gIFJFVkVSVF9XRUJFWF9VU0VSOiBcIi9hcGkvd2ViZXgvcHJvdmlzaW9uaW5nL2N1c3RvbWVycy86Y3VzdG9tZXJJZC9wZXJzb25zLzp3ZWJleFVVSUQvcmV2ZXJ0bWlncmF0aW9uXCIsXHJcbiAgUEhPTkVfTlVNQkVSUzogXCIvYXBpL3NlYXJjaC93ZWJleC9jdXN0b21lcnMvOmN1c3RvbWVySWQvbG9jYXRpb25zLzpsb2NhdGlvbklkL3Bob25lbnVtYmVyc1wiLFxyXG4gIEdFVF9MT0NBVElPTlM6IFwiL2FwaS9zZWFyY2gvd2ViZXgvY3VzdG9tZXJzLzpjdXN0b21lcklkL2xvY2F0aW9uc1wiXHJcbn07XHJcbmV4cG9ydCBjb25zdCBSRUdFWF9QQVRURVJOID0ge1xyXG4gIEVNQUlMOiAnXigoW148PigpXFxcXFtcXFxcXVxcXFxcXFxcLiw7OlxcXFxzQFwiXSsoXFxcXC5bXjw+KClcXFxcW1xcXFxdXFxcXFxcXFwuLDs6XFxcXHNAXCJdKykqKXwoXCIuK1wiKSknICtcclxuICAnQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjJ9W2EtekEtWjAtOV0pJyArXHJcbiAgJz8oPzpcXFxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjJ9W2EtekEtWjAtOV0pPykqJCdcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RFRkFVTFRTID0ge1xyXG4gIFNJWkU6IDEwLFxyXG4gIElOREVYOiAwXHJcbn1cclxuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fU0laRV9PUFRJT05TID0gW1xyXG4gIDEwLFxyXG4gIDUwLFxyXG4gIDEwMCxcclxuICA1MDBcclxuXTtcclxuZXhwb3J0IGNvbnN0IENVQ1NfVE9fSUdOT1JFID0gW1xyXG4gIDE4OSxcclxuICAxOTQsXHJcbiAgMTkxLFxyXG4gIDE5MFxyXG5dO1xyXG5leHBvcnQgY29uc3QgQ1VDTVNfVE9fSUdOT1JFID0gW1xyXG4gIDI0OSxcclxuICAyNTUsXHJcbiAgMjUxLFxyXG4gIDI1MFxyXG5dO1xyXG5leHBvcnQgY29uc3QgTUFYX0lOVEVHRVIgPSAyMTQ3NDgzNjQ3O1xyXG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class AppLocation {
|
|
2
|
+
constructor(props) {
|
|
3
|
+
this.id = '';
|
|
4
|
+
this.name = '';
|
|
5
|
+
this.timeZone = '';
|
|
6
|
+
this.address = new LocationAddress();
|
|
7
|
+
if (props) {
|
|
8
|
+
this.id = props.id || '';
|
|
9
|
+
this.name = props.name || '';
|
|
10
|
+
this.timeZone = props.timeZone || '';
|
|
11
|
+
this.address = new LocationAddress(props.address);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class LocationAddress {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
this.country = '';
|
|
18
|
+
this.countryName = '';
|
|
19
|
+
this.state = '';
|
|
20
|
+
this.city = '';
|
|
21
|
+
this.postalCode = '';
|
|
22
|
+
this.address1 = '';
|
|
23
|
+
this.address2 = '';
|
|
24
|
+
if (props) {
|
|
25
|
+
['country', 'countryName', 'state', 'city', 'postalCode', 'address1', 'address2'].forEach(token => {
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
this[token] = props[token] || '';
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL2NsYXNzZXMvYXBwLWxvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQVksS0FBVTtRQUx0QixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUc5QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLGVBQWU7SUFVMUIsWUFBWSxLQUFXO1FBVHZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixVQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ1YsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFJWixJQUFJLEtBQUssRUFBRTtZQUNULENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoRyxhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQXBwTG9jYXRpb24ge1xyXG4gIGlkID0gJyc7XHJcbiAgbmFtZSA9ICcnO1xyXG4gIHRpbWVab25lID0gJyc7XHJcbiAgYWRkcmVzcyA9IG5ldyBMb2NhdGlvbkFkZHJlc3MoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgaWYgKHByb3BzKSB7XHJcbiAgICAgIHRoaXMuaWQgPSBwcm9wcy5pZCB8fCAnJztcclxuICAgICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZSB8fCAnJztcclxuICAgICAgdGhpcy50aW1lWm9uZSA9IHByb3BzLnRpbWVab25lIHx8ICcnO1xyXG4gICAgICB0aGlzLmFkZHJlc3MgPSBuZXcgTG9jYXRpb25BZGRyZXNzKHByb3BzLmFkZHJlc3MpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbkFkZHJlc3Mge1xyXG4gIGNvdW50cnkgPSAnJztcclxuICBjb3VudHJ5TmFtZSA9ICcnXHJcbiAgc3RhdGUgPSAnJ1xyXG4gIGNpdHkgPSAnJztcclxuICBwb3N0YWxDb2RlID0gJyc7XHJcbiAgYWRkcmVzczEgPSAnJztcclxuICBhZGRyZXNzMiA9ICcnO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHM/OiBhbnkpIHtcclxuICAgIGlmIChwcm9wcykge1xyXG4gICAgICBbJ2NvdW50cnknLCAnY291bnRyeU5hbWUnLCAnc3RhdGUnLCAnY2l0eScsICdwb3N0YWxDb2RlJywgJ2FkZHJlc3MxJywgJ2FkZHJlc3MyJ10uZm9yRWFjaCh0b2tlbiA9PiB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHRoaXNbdG9rZW5dID0gcHJvcHNbdG9rZW5dIHx8ICcnO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -2,6 +2,7 @@ export class ListUser {
|
|
|
2
2
|
constructor(user, roleName) {
|
|
3
3
|
this.devices = [];
|
|
4
4
|
this.deviceProfiles = [];
|
|
5
|
+
this.isMigrated = false;
|
|
5
6
|
if (user) {
|
|
6
7
|
Object.assign(this, user);
|
|
7
8
|
}
|
|
@@ -10,4 +11,4 @@ export class ListUser {
|
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL2NsYXNzZXMvdXNlci1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxRQUFRO0lBdUJuQixZQUFZLElBQWUsRUFBRSxRQUFpQjtRQWhCOUMsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBU3ZDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFPakIsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXZpY2VJbnRlcmZhY2UgfSBmcm9tICcuL2RldmljZSc7XHJcbmltcG9ydCB7IExpbmVJbnRlcmZhY2UgfSBmcm9tICcuL2xpbmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIExpc3RVc2VyIGltcGxlbWVudHMgTGlzdFVzZXJJbnRlcmZhY2Uge1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICB1c2VyaWQ6IHN0cmluZztcclxuICBmaXJzdE5hbWU/OiBzdHJpbmc7XHJcbiAgbGFzdE5hbWU/OiBzdHJpbmc7XHJcbiAgZW1haWw/OiBzdHJpbmc7XHJcbiAgdGVsZXBob25lTnVtYmVyPzogc3RyaW5nO1xyXG4gIGRldmljZXM6IERldmljZUludGVyZmFjZVtdID0gW107XHJcbiAgZGV2aWNlUHJvZmlsZXM6IERldmljZUludGVyZmFjZVtdID0gW107XHJcbiAgbGluZXM/OiBMaW5lSW50ZXJmYWNlW107XHJcbiAgc2l0ZUlkPzogbnVtYmVyO1xyXG4gIHNpdGVOYW1lPzogc3RyaW5nO1xyXG4gIHdlYmV4VVVJRD86IHN0cmluZztcclxuICBjdWNtSWQ/OiBudW1iZXI7XHJcbiAgcm9sZU5hbWU/OiBzdHJpbmc7XHJcbiAgc3RhdHVzPzogc3RyaW5nO1xyXG4gIGxkYXBJbnRlZ3JhdGVkITogYm9vbGVhbjtcclxuICBpc01pZ3JhdGVkID0gZmFsc2U7XHJcbiAgbmV3TnVtYmVyITogc3RyaW5nOyAvL1RFTVAgZm9yIGRlbW9cclxuICBuZXdFeHRlbnNpb24hOiBzdHJpbmc7IC8vVEVNUCBmb3IgZGVtb1xyXG4gIG5ld0xvY2F0aW9uITogc3RyaW5nOyAvL1RFTVAgZm9yIGRlbW9cclxuICBtb3ZlVHlwZSE6IHN0cmluZzsgLy9URU1QIGZvciBkZW1vXHJcblxyXG4gIGNvbnN0cnVjdG9yKHVzZXI/OiBMaXN0VXNlciwgcm9sZU5hbWU/OiBzdHJpbmcpIHtcclxuICAgIGlmICh1c2VyKSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgdXNlcik7XHJcbiAgICB9XHJcbiAgICBpZiAocm9sZU5hbWUpIHtcclxuICAgICAgdGhpcy5yb2xlTmFtZSA9IHJvbGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXN0VXNlckludGVyZmFjZSB7XHJcbiAgdXNlcmlkOiBzdHJpbmc7XHJcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xyXG4gIGxhc3ROYW1lPzogc3RyaW5nO1xyXG4gIGVtYWlsPzogc3RyaW5nO1xyXG4gIHRlbGVwaG9uZU51bWJlcj86IHN0cmluZztcclxuICB2aWV3TW9kZT86IGFueTtcclxuICBkZXZpY2VzOiBEZXZpY2VJbnRlcmZhY2VbXTtcclxuICBkZXZpY2VQcm9maWxlczogRGV2aWNlSW50ZXJmYWNlW107XHJcbiAgbGluZXM/OiBMaW5lSW50ZXJmYWNlW107XHJcbiAgc2l0ZUlkPzogbnVtYmVyO1xyXG4gIHNpdGVOYW1lPzogc3RyaW5nO1xyXG4gIHdlYmV4VVVJRD86IHN0cmluZztcclxuICBjdWNtSWQ/OiBudW1iZXI7XHJcbn1cclxuIl19
|
package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
+
import { filterOptions } from '../../utils/common-functions';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "../../services/dns.service";
|
|
4
5
|
import * as i2 from "../../services/user.service";
|
|
5
|
-
import * as i3 from "
|
|
6
|
-
import * as i4 from "@angular/
|
|
7
|
-
import * as i5 from "@angular/
|
|
8
|
-
import * as i6 from "@angular/material/
|
|
9
|
-
import * as i7 from "@angular/material/
|
|
10
|
-
import * as i8 from "@angular/material/
|
|
11
|
-
import * as i9 from "@angular/material/
|
|
12
|
-
import * as i10 from "@angular/material/
|
|
13
|
-
import * as i11 from "@angular/material/
|
|
14
|
-
import * as i12 from "@angular/material/
|
|
15
|
-
import * as i13 from "@angular/material/
|
|
16
|
-
import * as i14 from "
|
|
6
|
+
import * as i3 from "../../services/site-settings.service";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
import * as i6 from "@angular/material/button";
|
|
10
|
+
import * as i7 from "@angular/material/progress-spinner";
|
|
11
|
+
import * as i8 from "@angular/material/form-field";
|
|
12
|
+
import * as i9 from "@angular/material/input";
|
|
13
|
+
import * as i10 from "@angular/material/autocomplete";
|
|
14
|
+
import * as i11 from "@angular/material/core";
|
|
15
|
+
import * as i12 from "@angular/material/stepper";
|
|
16
|
+
import * as i13 from "@angular/material/checkbox";
|
|
17
|
+
import * as i14 from "@angular/material/radio";
|
|
18
|
+
import * as i15 from "../../utils/app-loader/app-loader";
|
|
17
19
|
// for test only
|
|
18
20
|
const LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';
|
|
19
21
|
export class MoveUserStepperComponent {
|
|
@@ -26,14 +28,20 @@ export class MoveUserStepperComponent {
|
|
|
26
28
|
}
|
|
27
29
|
return '';
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
get locations() {
|
|
32
|
+
return this.siteSettingsService.locations;
|
|
33
|
+
}
|
|
34
|
+
constructor(dnsService, userService, siteSettingsService) {
|
|
30
35
|
this.dnsService = dnsService;
|
|
31
36
|
this.userService = userService;
|
|
37
|
+
this.siteSettingsService = siteSettingsService;
|
|
32
38
|
this.done = new EventEmitter();
|
|
33
39
|
this.runMoveUser = new EventEmitter();
|
|
34
40
|
this.cancel = new EventEmitter();
|
|
35
41
|
this.isLinear = false;
|
|
36
42
|
this.phoneNumberPending = false;
|
|
43
|
+
this.filteredLocations = [];
|
|
44
|
+
this.dataPending = false;
|
|
37
45
|
}
|
|
38
46
|
ngOnInit() {
|
|
39
47
|
if (this.user) {
|
|
@@ -48,6 +56,31 @@ export class MoveUserStepperComponent {
|
|
|
48
56
|
}
|
|
49
57
|
});
|
|
50
58
|
}
|
|
59
|
+
this.getData();
|
|
60
|
+
}
|
|
61
|
+
displayLocation(location) {
|
|
62
|
+
return location?.name || '';
|
|
63
|
+
}
|
|
64
|
+
onLocationAutocomplete() {
|
|
65
|
+
if (this.locations?.length) {
|
|
66
|
+
this.filteredLocations = filterOptions(this.locations, this.user.newLocation, '', 'name');
|
|
67
|
+
}
|
|
68
|
+
if (!this.user.newLocation) {
|
|
69
|
+
this.resetMoveTypePhoneNUmber();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
onNumberAutocomplete() {
|
|
73
|
+
if (this.dnsService.phoneNumbers?.length) {
|
|
74
|
+
this.filteredPhoneNumbers = filterOptions(this.dnsService.phoneNumbers, this.user.newNumber);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
onLocationChange(event) {
|
|
78
|
+
this.user.newNumber = '';
|
|
79
|
+
if (this.user.moveType.phoneNumber === '2') {
|
|
80
|
+
if (this.user.newLocation) {
|
|
81
|
+
this.getPhoneNumbers();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
51
84
|
}
|
|
52
85
|
onMoveUser(stepper) {
|
|
53
86
|
this.stepper = stepper;
|
|
@@ -71,9 +104,13 @@ export class MoveUserStepperComponent {
|
|
|
71
104
|
return false;
|
|
72
105
|
}
|
|
73
106
|
getPhoneNumbers() {
|
|
107
|
+
if (!this.user.newLocation) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
74
110
|
this.phoneNumberPending = true;
|
|
75
|
-
this.dnsService.fetchPhoneNumbers(this.customerId,
|
|
111
|
+
this.dnsService.fetchPhoneNumbers(this.customerId, this.user.newLocation.id)
|
|
76
112
|
.subscribe(() => {
|
|
113
|
+
this.filteredPhoneNumbers = this.dnsService.phoneNumbers.slice();
|
|
77
114
|
this.phoneNumberPending = false;
|
|
78
115
|
}, () => this.phoneNumberPending = false);
|
|
79
116
|
}
|
|
@@ -88,13 +125,29 @@ export class MoveUserStepperComponent {
|
|
|
88
125
|
stepper.steps.get(2)
|
|
89
126
|
].map(step => step ? step.completed = true : undefined);
|
|
90
127
|
}
|
|
128
|
+
getData() {
|
|
129
|
+
if (!this.user) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.dataPending = true;
|
|
133
|
+
this.siteSettingsService.getLocations(this.customerId)
|
|
134
|
+
.subscribe(() => {
|
|
135
|
+
if (this.locations?.length) {
|
|
136
|
+
this.filteredLocations = this.locations.slice();
|
|
137
|
+
}
|
|
138
|
+
this.dataPending = false;
|
|
139
|
+
}, () => this.dataPending = false);
|
|
140
|
+
}
|
|
141
|
+
resetMoveTypePhoneNUmber() {
|
|
142
|
+
this.dnsService.phoneNumbers = [];
|
|
143
|
+
}
|
|
91
144
|
}
|
|
92
|
-
MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: i1.DnsService }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
-
MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { done: "done", runMoveUser: "runMoveUser", cancel: "cancel" }, viewQueries: [{ propertyName: "nextAfterMoveBtn", first: true, predicate: ["nextAfterMoveBtn"], descendants: true }], ngImport: i0, template: "<app-loader *ngIf=\"moveUserPending\"></app-loader>\r\n<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n</mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}.invisible-next-btn{height:1px;width:1px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i10.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i10.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i10.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i10.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i11.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i13.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i13.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i14.AppLoaderComponent, selector: "app-loader" }] });
|
|
145
|
+
MoveUserStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, deps: [{ token: i1.DnsService }, { token: i2.UserService }, { token: i3.SiteSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
+
MoveUserStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MoveUserStepperComponent, selector: "app-move-user-stepper", inputs: { user: "user", customerId: "customerId" }, outputs: { done: "done", runMoveUser: "runMoveUser", cancel: "cancel" }, viewQueries: [{ propertyName: "nextAfterMoveBtn", first: true, predicate: ["nextAfterMoveBtn"], descendants: true }], ngImport: i0, template: "<app-loader *ngIf=\"moveUserPending || dataPending\"></app-loader>\r\n<div id=\"move-user-stepper\">\r\n\r\n <mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n\r\n <mat-label class=\"mat-label\">Select a new location</mat-label>\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select location\"\r\n [(ngModel)]=\"user.newLocation\"\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n (input)=\"onLocationAutocomplete()\">\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayLocation\"\r\n (optionSelected)=\"onLocationChange($event)\">\r\n <mat-option *ngFor=\"let location of filteredLocations\" [value]=\"location\">\r\n {{ location.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!dataPending && !locations.length\" class=\"mat-error\">Locations are not available</div>\r\n\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{ currentNumber }}\r\n </mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\"\r\n [disabled]=\"!user.newLocation\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select number\"\r\n [(ngModel)]=\"user.newNumber\"\r\n [matAutocomplete]=\"autoPh\"\r\n matInput\r\n (input)=\"onNumberAutocomplete()\">\r\n <mat-autocomplete\r\n #autoPh=\"matAutocomplete\"\r\n (optionSelected)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let number of filteredPhoneNumbers\" [value]=\"number\">\r\n {{ number }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!phoneNumberPending && !dnsService.phoneNumbers?.length\" class=\"mat-error\">Phone numbers are not available for this location</div>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\"/>\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext\r\n (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please\r\n be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to\r\n download.\r\n </li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device\r\n settings once the user is moved. If some of the device settings are overwritten at the user level, these\r\n user level settings will be retained and the rest of the settings will be picked up at the higher level\r\n (organization or location) settings.\r\n </li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording\r\n of this user may be lost after moving location.\r\n </li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I\r\n acknowledge the changes.\r\n </mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n\r\n</div>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative;width:100%;max-width:300px}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}.invisible-next-btn{height:1px;width:1px}.mat-label{display:block}::ng-deep .mat-form-field-infix{padding:0!important;width:100%}::ng-deep .mat-form-field-appearance-outline .mat-input-element{height:35px;width:100%;line-height:35px;margin:5px 0 0}::ng-deep .mat-form-field{width:350px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i12.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i12.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i12.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i12.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i12.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i14.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i14.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i15.AppLoaderComponent, selector: "app-loader" }] });
|
|
94
147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MoveUserStepperComponent, decorators: [{
|
|
95
148
|
type: Component,
|
|
96
|
-
args: [{ selector: 'app-move-user-stepper', template: "<app-loader *ngIf=\"moveUserPending\"></app-loader>\r\n<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n</mat-stepper>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem 2rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}.invisible-next-btn{height:1px;width:1px}\n"] }]
|
|
97
|
-
}], ctorParameters: function () { return [{ type: i1.DnsService }, { type: i2.UserService }]; }, propDecorators: { nextAfterMoveBtn: [{
|
|
149
|
+
args: [{ selector: 'app-move-user-stepper', template: "<app-loader *ngIf=\"moveUserPending || dataPending\"></app-loader>\r\n<div id=\"move-user-stepper\">\r\n\r\n <mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n\r\n <mat-label class=\"mat-label\">Select a new location</mat-label>\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select location\"\r\n [(ngModel)]=\"user.newLocation\"\r\n [matAutocomplete]=\"auto\"\r\n matInput\r\n (input)=\"onLocationAutocomplete()\">\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayLocation\"\r\n (optionSelected)=\"onLocationChange($event)\">\r\n <mat-option *ngFor=\"let location of filteredLocations\" [value]=\"location\">\r\n {{ location.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!dataPending && !locations.length\" class=\"mat-error\">Locations are not available</div>\r\n\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{ currentNumber }}\r\n </mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\"\r\n [disabled]=\"!user.newLocation\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select number\"\r\n [(ngModel)]=\"user.newNumber\"\r\n [matAutocomplete]=\"autoPh\"\r\n matInput\r\n (input)=\"onNumberAutocomplete()\">\r\n <mat-autocomplete\r\n #autoPh=\"matAutocomplete\"\r\n (optionSelected)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let number of filteredPhoneNumbers\" [value]=\"number\">\r\n {{ number }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!phoneNumberPending && !dnsService.phoneNumbers?.length\" class=\"mat-error\">Phone numbers are not available for this location</div>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\"/>\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext\r\n (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please\r\n be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to\r\n download.\r\n </li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device\r\n settings once the user is moved. If some of the device settings are overwritten at the user level, these\r\n user level settings will be retained and the rest of the settings will be picked up at the higher level\r\n (organization or location) settings.\r\n </li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording\r\n of this user may be lost after moving location.\r\n </li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I\r\n acknowledge the changes.\r\n </mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n\r\n</div>\r\n", styles: [".mat-stepper-horizontal{height:-moz-fit-content;height:fit-content;max-height:750px;margin:0 auto;width:70%;background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}.mat-stepper-horizontal .mat-step-icon{width:18px;height:18px;border:3px solid hsl(0,0%,50.2%)}.mat-stepper-horizontal .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}.mat-stepper-horizontal .mat-step-icon-state-number{background-color:#fff}.mat-stepper-horizontal .mat-step-icon-state-edit,.mat-stepper-horizontal .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}.mat-stepper-horizontal .mat-step-icon-content{display:none}.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,.mat-stepper-horizontal .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,.mat-stepper-horizontal [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}.mat-stepper-horizontal .mat-horizontal-stepper-header:before,.mat-stepper-horizontal .mat-horizontal-stepper-header:after,.mat-stepper-horizontal .mat-stepper-horizontal-line{border-top-width:3px!important;background-color:#7b7b7b}::ng-deep .mat-step-header[aria-labelledby=disabled_af]{pointer-events:none!important;cursor:not-allowed}::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-icon,::ng-deep .mat-step-header[aria-labelledby=disabled_af] .mat-step-label{cursor:not-allowed;opacity:.6}.mat-mdc-form-field{margin-top:16px}.mat-label{font-size:16px;font-weight:600;margin:1rem 0}.step-title{font-size:28px;font-weight:700;margin:.5rem 0 1.5rem}.validation-text{margin-top:.5rem;margin-bottom:2rem}ul{padding:.5rem 2rem;margin-top:.5rem;margin-bottom:2rem}form{background-color:#fff;padding:2.5rem;min-height:350px;border-radius:.5rem}.form-link{text-decoration:none;color:#007bff}.radio-group{display:flex;flex-direction:column;margin:15px 0;align-items:flex-start}.radio-button{margin:.5rem 0}.select{width:350px;padding:.5rem;margin:.5rem 0;border:1px solid #a0a0a0;border-radius:.5rem}.step-actions{display:flex;flex-flow:row-reverse;margin-top:2rem;gap:1rem}.webex-btn{border:1px solid black;border-radius:1rem;cursor:pointer;gap:1rem}.btn-next{background-color:#000;color:#fff}.btn-cancel,.btn-done{background-color:#fff;color:#000}.select-container{position:relative;width:100%;max-width:300px}.select-container .mat-progress-spinner{position:absolute;left:45%;top:35px}.invisible-next-btn{height:1px;width:1px}.mat-label{display:block}::ng-deep .mat-form-field-infix{padding:0!important;width:100%}::ng-deep .mat-form-field-appearance-outline .mat-input-element{height:35px;width:100%;line-height:35px;margin:5px 0 0}::ng-deep .mat-form-field{width:350px}\n"] }]
|
|
150
|
+
}], ctorParameters: function () { return [{ type: i1.DnsService }, { type: i2.UserService }, { type: i3.SiteSettingsService }]; }, propDecorators: { nextAfterMoveBtn: [{
|
|
98
151
|
type: ViewChild,
|
|
99
152
|
args: ['nextAfterMoveBtn']
|
|
100
153
|
}], done: [{
|
|
@@ -108,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
108
161
|
}], cancel: [{
|
|
109
162
|
type: Output
|
|
110
163
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL21vdmUtdXNlci13aXphcmQvbW92ZS11c2VyLXN0ZXBwZXIvbW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL21vdmUtdXNlci13aXphcmQvbW92ZS11c2VyLXN0ZXBwZXIvbW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLMUYsZ0JBQWdCO0FBQ2hCLE1BQU0sUUFBUSxHQUFHLG9GQUFvRixDQUFDO0FBT3RHLE1BQU0sT0FBTyx3QkFBd0I7SUFnQm5DLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7U0FDakY7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LENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7c0hBL0ZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLGdUQ2JyQyxtMkxBK0ZBOzRGRGxGYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0UsdUJBQXVCOzJIQU1GLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRTdCLElBQUk7c0JBREgsTUFBTTtnQkFHUCxJQUFJO3NCQURILEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBEbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG5zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXJcIjtcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG4vLyBmb3IgdGVzdCBvbmx5XHJcbmNvbnN0IExPQ0FUSU9OID0gJ1kybHpZMjl6Y0dGeWF6b3ZMM1Z6TDB4UFEwRlVTVTlPTHpFMllqWTBOamxqTFRCalptUXROREpqTVMxaU9XSmpMVFV5TjJGbFpUTmhOMlJsT1EnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tb3ZlLXVzZXItc3RlcHBlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vdmUtdXNlci1zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tb3ZlLXVzZXItc3RlcHBlci5jb21wb25lbnQuc2NzcyddXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW92ZVVzZXJTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCduZXh0QWZ0ZXJNb3ZlQnRuJykgbmV4dEFmdGVyTW92ZUJ0bjogYW55O1xyXG4gIEBPdXRwdXQoKVxyXG4gIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KClcclxuICB1c2VyOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBjdXN0b21lcklkITogbnVtYmVyO1xyXG4gIEBPdXRwdXQoKVxyXG4gIHJ1bk1vdmVVc2VyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc0xpbmVhciA9IGZhbHNlO1xyXG4gIHBob25lTnVtYmVyUGVuZGluZyA9IGZhbHNlO1xyXG4gIHN0ZXBwZXIhOiBNYXRTdGVwcGVyO1xyXG5cclxuICBnZXQgbW92ZVVzZXJQZW5kaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UubW92ZVVzZXJQZW5kaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnROdW1iZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnVzZXI/LmRldmljZXM/Lmxlbmd0aCAmJiB0aGlzLnVzZXIuZGV2aWNlc1swXT8ubGluZUFzc29jaWF0aW9ucyAmJiB0aGlzLnVzZXIuZGV2aWNlc1swXS5saW5lQXNzb2NpYXRpb25zWzBdKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnVzZXIuZGV2aWNlc1swXS5saW5lQXNzb2NpYXRpb25zWzBdLmRpcmVjdG9yeU51bWJlci5kaXJlY3RvcnlOdW1iZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkbnNTZXJ2aWNlOiBEbnNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyKSB7XHJcbiAgICAgIHRoaXMudXNlci5tb3ZlVHlwZSA9IHtcclxuICAgICAgICBwaG9uZU51bWJlcjogJzEnLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJzEnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlck1vdmVkJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UubW92ZVVzZXJQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0aGlzLm5leHRBZnRlck1vdmVCdG4/Ll9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRBZnRlck1vdmVCdG4uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTW92ZVVzZXIoc3RlcHBlcjogTWF0U3RlcHBlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zdGVwcGVyID0gc3RlcHBlcjtcclxuICAgIHRoaXMucnVuTW92ZVVzZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UGhvbmVOdW1iZXJNaWdyYXRpb25UeXBlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC52YWx1ZSAmJiBldmVudC52YWx1ZSA9PT0gJzInKSB7XHJcbiAgICAgIHRoaXMuZ2V0UGhvbmVOdW1iZXJzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBob25lTnVtYmVyQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlci5uZXdOdW1iZXJcclxuICB9XHJcblxyXG4gIG9uRXh0ZW5zaW9uQ0hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlci5uZXdFeHRlbnNpb25cclxuICB9XHJcblxyXG4gIGlzRmllbGRBdmFpbGFibGUodHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy51c2VyPy5tb3ZlVHlwZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy51c2VyLm1vdmVUeXBlW3R5cGVdICYmIHRoaXMudXNlci5tb3ZlVHlwZVt0eXBlXSA9PT0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRQaG9uZU51bWJlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBob25lTnVtYmVyUGVuZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmRuc1NlcnZpY2UuZmV0Y2hQaG9uZU51bWJlcnModGhpcy5jdXN0b21lcklkLCBMT0NBVElPTilcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5waG9uZU51bWJlclBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgfSwgKCkgPT4gdGhpcy5waG9uZU51bWJlclBlbmRpbmcgPSBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBnb05leHRTdGVwKHN0ZXBwZXI6IE1hdFN0ZXBwZXIpIHtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IHN0ZXBwZXIuc2VsZWN0ZWRJbmRleDtcclxuXHJcbiAgICBpZiAoY3VycmVudFN0ZXAgPT09IDEpIHsgc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMzsgfVxyXG4gICAgLy8gZWxzZSBpZiAoY3VycmVudFN0ZXAgPT09IDMpIHsgc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDsgfVxyXG5cclxuICAgIFtcclxuICAgICAgc3RlcHBlci5zdGVwcy5nZXQoMSksXHJcbiAgICAgIHN0ZXBwZXIuc3RlcHMuZ2V0KDIpXHJcblxyXG4gICAgXS5tYXAoc3RlcCA9PiBzdGVwID8gc3RlcC5jb21wbGV0ZWQgPSB0cnVlIDogdW5kZWZpbmVkKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJtb3ZlVXNlclBlbmRpbmdcIj48L2FwcC1sb2FkZXI+XHJcbjxtYXQtc3RlcHBlciAqbmdJZj1cInVzZXI/Lm1vdmVUeXBlXCIgW2xpbmVhcl09XCJpc0xpbmVhclwiIGxhYmVsUG9zaXRpb249XCJib3R0b21cIiAjc3RlcHBlcj5cclxuICA8bWF0LXN0ZXA+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlN0ZXAgMTogU2VsZWN0IGxvY2F0aW9uPC9kaXY+XHJcbiAgICA8IS0tICAgICAgPGZvcm0+LS0+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlNlbGVjdCBsb2NhdGlvbjwvbmctdGVtcGxhdGU+XHJcbiAgICA8bWF0LWxhYmVsIGNsYXNzPVwibWF0LWxhYmVsXCI+UGhvbmUgbnVtYmVyPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgIGNsYXNzPVwicmFkaW8tZ3JvdXBcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInVzZXIubW92ZVR5cGUucGhvbmVOdW1iZXJcIlxyXG4gICAgICBuYW1lPVwicGhvbmVOdW1iZXJcIiAoY2hhbmdlKT1cInNlbGVjdFBob25lTnVtYmVyTWlncmF0aW9uVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwicmFkaW8tYnV0dG9uXCIgdmFsdWU9XCIxXCIgY29sb3I9XCJwcmltYXJ5XCI+S2VlcCBjdXJyZW50IG51bWJlciB7e2N1cnJlbnROdW1iZXJ9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJyYWRpby1idXR0b25cIiB2YWx1ZT1cIjJcIiBjb2xvcj1cInByaW1hcnlcIj5TZWxlY3QgYSBuZXcgbnVtYmVyPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cInVzZXIubW92ZVR5cGUucGhvbmVOdW1iZXIgPT09ICcyJ1wiIGNsYXNzPVwic2VsZWN0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cInBob25lTnVtYmVyUGVuZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3Bpbm5lclwiIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjMwXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuXHJcbiAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJzZWxlY3RcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBudW1iZXJcIiBbKG5nTW9kZWwpXT1cInVzZXIubmV3TnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uUGhvbmVOdW1iZXJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkbnNTZXJ2aWNlLnBob25lTnVtYmVyc1wiIHZhbHVlPVwib3B0aW9uXCI+e3tvcHRpb259fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJyYWRpby1idXR0b25cIiB2YWx1ZT1cIjNcIiBjb2xvcj1cInByaW1hcnlcIj5SZW1vdmUgbnVtYmVyPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICA8bWF0LWxhYmVsIGNsYXNzPVwibWF0LWxhYmVsXCI+RXh0ZW5zaW9uPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXJhZGlvLWdyb3VwIGNsYXNzPVwicmFkaW8tZ3JvdXBcIiBuYW1lPVwiZXh0ZW5zaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm1vdmVUeXBlLmV4dGVuc2lvblwiPlxyXG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiIHZhbHVlPVwiMVwiIGNvbG9yPVwicHJpbWFyeVwiPktlZXAgY3VycmVudCBleHRlbnNpb248L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwicmFkaW8tYnV0dG9uXCIgdmFsdWU9XCIyXCIgY29sb3I9XCJwcmltYXJ5XCI+U2VsZWN0IGEgbmV3IGV4dGVuc2lvbjwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidXNlci5tb3ZlVHlwZS5leHRlbnNpb24gPT09ICcyJ1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgKGNoYW5nZSk9XCJvbkV4dGVuc2lvbkNIYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm5ld0V4dGVuc2lvblwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgZXh0ZW5zaW9uJ1wiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiIHZhbHVlPVwiM1wiIGNvbG9yPVwicHJpbWFyeVwiPlJlbW92ZSBleHRlbnNpb248L21hdC1yYWRpby1idXR0b24+XHJcbiAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIDwhLS0gICAgICA8L2Zvcm0+LS0+XHJcbiAgICA8YnV0dG9uICNuZXh0QWZ0ZXJNb3ZlQnRuIG1hdC1idXR0b24gY2xhc3M9XCJpbnZpc2libGUtbmV4dC1idG5cIiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwiZ29OZXh0U3RlcChzdGVwcGVyKVwiPjwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInN0ZXAtYWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLW5leHRcIiAoY2xpY2spPVwib25Nb3ZlVXNlcihzdGVwcGVyKVwiPk1vdmU8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwid2ViZXgtYnRuIGJ0bi1jYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsLmVtaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8bWF0LXN0ZXAgW2FyaWEtbGFiZWxsZWRieV09XCInZGlzYWJsZWRfYWYnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlN0ZXAgMjogRGV2aWNlIGVsaWdpYmlsaXR5IGNoZWNrPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPkRldmljZSBlbGlnaWJpbGl0eSBjaGVjazwvbmctdGVtcGxhdGU+XHJcbiAgICA8Zm9ybT48L2Zvcm0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC1hY3Rpb25zXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIndlYmV4LWJ0biBidG4tbmV4dFwiIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJnb05leHRTdGVwKHN0ZXBwZXIpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWNhbmNlbFwiIG1hdFN0ZXBwZXJQcmV2aW91cz5QcmV2aW91czwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8bWF0LXN0ZXAgW2FyaWEtbGFiZWxsZWRieV09XCInZGlzYWJsZWRfYWYnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlN0ZXAgMzogVmFsaWRhdGlvbjwvZGl2PlxyXG4gICAgPGZvcm0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+VmFsaWRhdGlvbjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtYXQtbGFiZWxcIj5WYWxpZGF0aW9uIFN1Y2Nlc3MhPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxwIGNsYXNzPVwidmFsaWRhdGlvbi10ZXh0XCI+VGhlcmUgaXMgbm8gaXNzdWUgZm9yIG1vdmluZyB0aGlzIHVzZXIgdG8gdGhlIG5ldyBsb2NhdGlvbiwgJE1UbG9jYXRpb25uYW1lLiBQbGVhc2UgYmUgYXdhcmUgb2YgdGhlIGNoYW5nZXMgYmVsb3cgb25jZSB0aGUgdXNlciBpcyBiZWluZyBtb3ZlZCB0byB0aGUgbmV3IGxvY2F0aW9uLjwvcD5cclxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cIm1hdC1sYWJlbFwiPkV4cGVjdGVkIGNoYW5nZXM8L21hdC1sYWJlbD5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaT5UYWJsZXQgZGV2aWNlIChUQUJBVklDSykgbmVlZHMgdG8gYmUgcmVjb25maWd1cmVkIHdpdGggV2ViZXggQXBwLiBVc2VyIHdpbGwgcmVjZWl2ZSBhbiBlbWFpbCB3aXRoIGxpbmsgdG8gZG93bmxvYWQuPC9saT5cclxuICAgICAgICA8bGk+Q2lzY28gODg3NSAoU0VQNzUxRkM5QkFCODU0KSB3aWxsIG5vdCBiZSBtaWdyYXRlZC48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgdXNlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSBDYWxsIFBhcmsgR3JvdXAuPC9saT5cclxuICAgICAgICA8bGk+SWYgdGhlIGRldmljZSBpcyB1c2luZyB0aGUgbG9jYXRpb24gbGV2ZWwgZGV2aWNlIHNldHRpbmdzLCB0aGUgZGV2aWNlIHdpbGwgcGljayB1cCB0aGUgbmV3IGxvY2F0aW9uIGRldmljZSBzZXR0aW5ncyBvbmNlIHRoZSB1c2VyIGlzIG1vdmVkLiBJZiBzb21lIG9mIHRoZSBkZXZpY2Ugc2V0dGluZ3MgYXJlIG92ZXJ3cml0dGVuIGF0IHRoZSB1c2VyIGxldmVsLCB0aGVzZSB1c2VyIGxldmVsIHNldHRpbmdzIHdpbGwgYmUgcmV0YWluZWQgYW5kIHRoZSByZXN0IG9mIHRoZSBzZXR0aW5ncyB3aWxsIGJlIHBpY2tlZCB1cCBhdCB0aGUgaGlnaGVyIGxldmVsIChvcmdhbml6YXRpb24gb3IgbG9jYXRpb24pIHNldHRpbmdzLjwvbGk+XHJcbiAgICAgICAgPGxpPklmIHRoZSBjdXJyZW50IGxvY2F0aW9uIGhhcyBhIGRpZmZlcmVudCByZWNvcmRpbmcgc2VydmljZSBmcm9tIHRoZSBvbmUgb2YgdGhlIG5ldyBsb2NhdGlvbiwgdGhlIHJlY29yZGluZyBvZiB0aGlzIHVzZXIgbWF5IGJlIGxvc3QgYWZ0ZXIgbW92aW5nIGxvY2F0aW9uLjwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrYm94XCIgY2hlY2tlZD1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj5JIGNvbmZpcm0gdGhhdCBJIHVuZGVyc3RhbmQgdGhlc2UgY29uZGl0aW9ucy4gSSBhY2tub3dsZWRnZSB0aGUgY2hhbmdlcy48L21hdC1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC1hY3Rpb25zXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIndlYmV4LWJ0biBidG4tbmV4dFwiIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJnb05leHRTdGVwKHN0ZXBwZXIpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWNhbmNlbFwiIG1hdFN0ZXBwZXJQcmV2aW91cz5QcmV2aW91czwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuICA8bWF0LXN0ZXA+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlN0ZXAgNDogUmVzdWx0PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlJlc3VsdDwvbmctdGVtcGxhdGU+XHJcbiAgICA8Zm9ybT5cclxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cIm1hdC1sYWJlbFwiPk1vdmluZyB1c2VyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbml0aWF0ZWQhPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxwIGNsYXNzPVwidmFsaWRhdGlvbi10ZXh0XCI+XHJcbiAgICAgICAgVGhlIHVzZXIgd2lsbCBiZSBtb3ZlZCB0byB0aGUgbmV3IGxvY2F0aW9uLCAkTVRsb2NhdGlvbm5hbWUuXHJcbiAgICAgICAgPGJyPlxyXG4gICAgICAgIEZvciB0aGUgcHJvZ3Jlc3Mgb2YgbW92ZSwgcGxlYXNlIHZpc2l0IHRoZSA8YSBjbGFzcz1cImZvcm0tbGlua1wiIGhyZWY9XCIjXCI+dXNlciBkZXRhaWxzPC9hPi5cclxuICAgICAgPC9wPlxyXG4gICAgPC9mb3JtPlxyXG4gICAgPGRpdiBjbGFzcz1cInN0ZXAtYWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWRvbmVcIiAoY2xpY2spPVwiZG9uZS5lbWl0KHRydWUpXCI+RG9uZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD5cclxuPC9tYXQtc3RlcHBlcj5cclxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL21vdmUtdXNlci13aXphcmQvbW92ZS11c2VyLXN0ZXBwZXIvbW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL21vdmUtdXNlci13aXphcmQvbW92ZS11c2VyLXN0ZXBwZXIvbW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUM3RCxnQkFBZ0I7QUFDaEIsTUFBTSxRQUFRLEdBQUcsb0ZBQW9GLENBQUM7QUFPdEcsTUFBTSxPQUFPLHdCQUF3QjtJQW1CbkMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENB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d0I7a0JBTnBDLFNBQVM7K0JBQ0UsdUJBQXVCOzZKQU1GLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRTdCLElBQUk7c0JBREgsTUFBTTtnQkFHUCxJQUFJO3NCQURILEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBEbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG5zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXJcIjtcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBMb2NhdGlvbiB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYXBwLWxvY2F0aW9uJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbHRlck9wdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscy9jb21tb24tZnVuY3Rpb25zJztcclxuLy8gZm9yIHRlc3Qgb25seVxyXG5jb25zdCBMT0NBVElPTiA9ICdZMmx6WTI5emNHRnlhem92TDNWekwweFBRMEZVU1U5T0x6RTJZalkwTmpsakxUQmpabVF0TkRKak1TMWlPV0pqTFRVeU4yRmxaVE5oTjJSbE9RJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbW92ZS11c2VyLXN0ZXBwZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3ZlLXVzZXItc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW92ZS11c2VyLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIE1vdmVVc2VyU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbmV4dEFmdGVyTW92ZUJ0bicpIG5leHRBZnRlck1vdmVCdG46IGFueTtcclxuICBAT3V0cHV0KClcclxuICBkb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpXHJcbiAgdXNlcjogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgY3VzdG9tZXJJZCE6IG51bWJlcjtcclxuICBAT3V0cHV0KClcclxuICBydW5Nb3ZlVXNlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KClcclxuICBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgaXNMaW5lYXIgPSBmYWxzZTtcclxuICBwaG9uZU51bWJlclBlbmRpbmcgPSBmYWxzZTtcclxuICBzdGVwcGVyITogTWF0U3RlcHBlcjtcclxuICBmaWx0ZXJlZExvY2F0aW9uczogQXBwTG9jYXRpb25bXSA9IFtdO1xyXG4gIGZpbHRlcmVkUGhvbmVOdW1iZXJzOiBhbnk7XHJcbiAgZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IG1vdmVVc2VyUGVuZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLm1vdmVVc2VyUGVuZGluZztcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50TnVtYmVyKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy51c2VyPy5kZXZpY2VzPy5sZW5ndGggJiYgdGhpcy51c2VyLmRldmljZXNbMF0/LmxpbmVBc3NvY2lhdGlvbnMgJiYgdGhpcy51c2VyLmRldmljZXNbMF0ubGluZUFzc29jaWF0aW9uc1swXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy51c2VyLmRldmljZXNbMF0ubGluZUFzc29jaWF0aW9uc1swXS5kaXJlY3RvcnlOdW1iZXIuZGlyZWN0b3J5TnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxvY2F0aW9ucygpOiBBcHBMb2NhdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UubG9jYXRpb25zO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZG5zU2VydmljZTogRG5zU2VydmljZSxcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2l0ZVNldHRpbmdzU2VydmljZTogU2l0ZVNldHRpbmdzU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyKSB7XHJcbiAgICAgIHRoaXMudXNlci5tb3ZlVHlwZSA9IHtcclxuICAgICAgICBwaG9uZU51bWJlcjogJzEnLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJzEnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlck1vdmVkJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UubW92ZVVzZXJQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0aGlzLm5leHRBZnRlck1vdmVCdG4/Ll9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRBZnRlck1vdmVCdG4uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgZGlzcGxheUxvY2F0aW9uKGxvY2F0aW9uPzogQXBwTG9jYXRpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGxvY2F0aW9uPy5uYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgb25Mb2NhdGlvbkF1dG9jb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxvY2F0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSBmaWx0ZXJPcHRpb25zKHRoaXMubG9jYXRpb25zLCB0aGlzLnVzZXIubmV3TG9jYXRpb24sICcnLCAnbmFtZScpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnVzZXIubmV3TG9jYXRpb24pIHtcclxuICAgICAgdGhpcy5yZXNldE1vdmVUeXBlUGhvbmVOVW1iZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTnVtYmVyQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZG5zU2VydmljZS5waG9uZU51bWJlcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkUGhvbmVOdW1iZXJzID0gZmlsdGVyT3B0aW9ucyh0aGlzLmRuc1NlcnZpY2UucGhvbmVOdW1iZXJzLCB0aGlzLnVzZXIubmV3TnVtYmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy51c2VyLm5ld051bWJlciA9ICcnO1xyXG4gICAgaWYgKHRoaXMudXNlci5tb3ZlVHlwZS5waG9uZU51bWJlciA9PT0gJzInKSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZXIubmV3TG9jYXRpb24pIHtcclxuICAgICAgICB0aGlzLmdldFBob25lTnVtYmVycygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vdmVVc2VyKHN0ZXBwZXI6IE1hdFN0ZXBwZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RlcHBlciA9IHN0ZXBwZXI7XHJcbiAgICB0aGlzLnJ1bk1vdmVVc2VyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFBob25lTnVtYmVyTWlncmF0aW9uVHlwZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudmFsdWUgJiYgZXZlbnQudmFsdWUgPT09ICcyJykge1xyXG4gICAgICB0aGlzLmdldFBob25lTnVtYmVycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QaG9uZU51bWJlckNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXIubmV3TnVtYmVyXHJcbiAgfVxyXG5cclxuICBvbkV4dGVuc2lvbkNIYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXIubmV3RXh0ZW5zaW9uXHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkQXZhaWxhYmxlKHR5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMudXNlcj8ubW92ZVR5cGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudXNlci5tb3ZlVHlwZVt0eXBlXSAmJiB0aGlzLnVzZXIubW92ZVR5cGVbdHlwZV0gPT09IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGhvbmVOdW1iZXJzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnVzZXIubmV3TG9jYXRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waG9uZU51bWJlclBlbmRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5kbnNTZXJ2aWNlLmZldGNoUGhvbmVOdW1iZXJzKHRoaXMuY3VzdG9tZXJJZCwgdGhpcy51c2VyLm5ld0xvY2F0aW9uLmlkKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkUGhvbmVOdW1iZXJzID0gdGhpcy5kbnNTZXJ2aWNlLnBob25lTnVtYmVycy5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXJQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sICgpID0+IHRoaXMucGhvbmVOdW1iZXJQZW5kaW5nID0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZ29OZXh0U3RlcChzdGVwcGVyOiBNYXRTdGVwcGVyKSB7XHJcblxyXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwcGVyLnNlbGVjdGVkSW5kZXg7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRTdGVwID09PSAxKSB7IHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDM7IH1cclxuICAgIC8vIGVsc2UgaWYgKGN1cnJlbnRTdGVwID09PSAzKSB7IHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDA7IH1cclxuXHJcbiAgICBbXHJcbiAgICAgIHN0ZXBwZXIuc3RlcHMuZ2V0KDEpLFxyXG4gICAgICBzdGVwcGVyLnN0ZXBzLmdldCgyKVxyXG5cclxuICAgIF0ubWFwKHN0ZXAgPT4gc3RlcCA/IHN0ZXAuY29tcGxldGVkID0gdHJ1ZSA6IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnVzZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0TG9jYXRpb25zKHRoaXMuY3VzdG9tZXJJZClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRMb2NhdGlvbnMgPSB0aGlzLmxvY2F0aW9ucy5zbGljZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sICgpID0+IHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRNb3ZlVHlwZVBob25lTlVtYmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kbnNTZXJ2aWNlLnBob25lTnVtYmVycyA9IFtdO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWxvYWRlciAqbmdJZj1cIm1vdmVVc2VyUGVuZGluZyAgfHwgZGF0YVBlbmRpbmdcIj48L2FwcC1sb2FkZXI+XHJcbjxkaXYgaWQ9XCJtb3ZlLXVzZXItc3RlcHBlclwiPlxyXG5cclxuICA8bWF0LXN0ZXBwZXIgKm5nSWY9XCJ1c2VyPy5tb3ZlVHlwZVwiIFtsaW5lYXJdPVwiaXNMaW5lYXJcIiBsYWJlbFBvc2l0aW9uPVwiYm90dG9tXCIgI3N0ZXBwZXI+XHJcbiAgICA8bWF0LXN0ZXA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlXCI+U3RlcCAxOiBTZWxlY3QgbG9jYXRpb248L2Rpdj5cclxuICAgICAgPCEtLSAgICAgIDxmb3JtPi0tPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlNlbGVjdCBsb2NhdGlvbjwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bWF0LWxhYmVsIGNsYXNzPVwibWF0LWxhYmVsXCI+U2VsZWN0IGEgbmV3IGxvY2F0aW9uPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFwcC1hdXRvY29tcGxldGUtaW5wdXRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8aW5wdXQgcGxhY2Vob2xkZXI9XCJTZWxlY3QgbG9jYXRpb25cIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm5ld0xvY2F0aW9uXCJcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgKGlucHV0KT1cIm9uTG9jYXRpb25BdXRvY29tcGxldGUoKVwiPlxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxyXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUxvY2F0aW9uXCJcclxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25Mb2NhdGlvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxvY2F0aW9uIG9mIGZpbHRlcmVkTG9jYXRpb25zXCIgW3ZhbHVlXT1cImxvY2F0aW9uXCI+XHJcbiAgICAgICAgICB7eyBsb2NhdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YVBlbmRpbmcgJiYgIWxvY2F0aW9ucy5sZW5ndGhcIiBjbGFzcz1cIm1hdC1lcnJvclwiPkxvY2F0aW9ucyBhcmUgbm90IGF2YWlsYWJsZTwvZGl2PlxyXG5cclxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cIm1hdC1sYWJlbFwiPlBob25lIG51bWJlcjwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgY2xhc3M9XCJyYWRpby1ncm91cFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm1vdmVUeXBlLnBob25lTnVtYmVyXCJcclxuICAgICAgICBuYW1lPVwicGhvbmVOdW1iZXJcIiAoY2hhbmdlKT1cInNlbGVjdFBob25lTnVtYmVyTWlncmF0aW9uVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJyYWRpby1idXR0b25cIiB2YWx1ZT1cIjFcIiBjb2xvcj1cInByaW1hcnlcIj5LZWVwIGN1cnJlbnQgbnVtYmVyIHt7IGN1cnJlbnROdW1iZXIgfX1cclxuICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJyYWRpby1idXR0b25cIiB2YWx1ZT1cIjJcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdXNlci5uZXdMb2NhdGlvblwiPlNlbGVjdCBhIG5ldyBudW1iZXI8L21hdC1yYWRpby1idXR0b24+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyLm1vdmVUeXBlLnBob25lTnVtYmVyID09PSAnMidcIiBjbGFzcz1cInNlbGVjdC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cInBob25lTnVtYmVyUGVuZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1zcGlubmVyXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaWFtZXRlcl09XCIzMFwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcblxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYXBwLWF1dG9jb21wbGV0ZS1pbnB1dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm5ld051bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9QaFwiXHJcbiAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uTnVtYmVyQXV0b2NvbXBsZXRlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgICAjYXV0b1BoPVwibWF0QXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25QaG9uZU51bWJlckNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG51bWJlciBvZiBmaWx0ZXJlZFBob25lTnVtYmVyc1wiIFt2YWx1ZV09XCJudW1iZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IG51bWJlciB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcGhvbmVOdW1iZXJQZW5kaW5nICYmICFkbnNTZXJ2aWNlLnBob25lTnVtYmVycz8ubGVuZ3RoXCIgY2xhc3M9XCJtYXQtZXJyb3JcIj5QaG9uZSBudW1iZXJzIGFyZSBub3QgYXZhaWxhYmxlIGZvciB0aGlzIGxvY2F0aW9uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwicmFkaW8tYnV0dG9uXCIgdmFsdWU9XCIzXCIgY29sb3I9XCJwcmltYXJ5XCI+UmVtb3ZlIG51bWJlcjwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJtYXQtbGFiZWxcIj5FeHRlbnNpb248L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1yYWRpby1ncm91cCBjbGFzcz1cInJhZGlvLWdyb3VwXCIgbmFtZT1cImV4dGVuc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ1c2VyLm1vdmVUeXBlLmV4dGVuc2lvblwiPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwicmFkaW8tYnV0dG9uXCIgdmFsdWU9XCIxXCIgY29sb3I9XCJwcmltYXJ5XCI+S2VlcCBjdXJyZW50IGV4dGVuc2lvbjwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiIHZhbHVlPVwiMlwiIGNvbG9yPVwicHJpbWFyeVwiPlNlbGVjdCBhIG5ldyBleHRlbnNpb248L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidXNlci5tb3ZlVHlwZS5leHRlbnNpb24gPT09ICcyJ1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cIm9uRXh0ZW5zaW9uQ0hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidXNlci5uZXdFeHRlbnNpb25cIlxyXG4gICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgZXh0ZW5zaW9uJ1wiLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cInJhZGlvLWJ1dHRvblwiIHZhbHVlPVwiM1wiIGNvbG9yPVwicHJpbWFyeVwiPlJlbW92ZSBleHRlbnNpb248L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICA8IS0tICAgICAgPC9mb3JtPi0tPlxyXG4gICAgICA8YnV0dG9uICNuZXh0QWZ0ZXJNb3ZlQnRuIG1hdC1idXR0b24gY2xhc3M9XCJpbnZpc2libGUtbmV4dC1idG5cIiBtYXRTdGVwcGVyTmV4dFxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb05leHRTdGVwKHN0ZXBwZXIpXCI+PC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLW5leHRcIiAoY2xpY2spPVwib25Nb3ZlVXNlcihzdGVwcGVyKVwiPk1vdmU8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtc3RlcD5cclxuICAgIDxtYXQtc3RlcCBbYXJpYS1sYWJlbGxlZGJ5XT1cIidkaXNhYmxlZF9hZidcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtdGl0bGVcIj5TdGVwIDI6IERldmljZSBlbGlnaWJpbGl0eSBjaGVjazwvZGl2PlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPkRldmljZSBlbGlnaWJpbGl0eSBjaGVjazwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxmb3JtPjwvZm9ybT5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtYWN0aW9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIndlYmV4LWJ0biBidG4tbmV4dFwiIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJnb05leHRTdGVwKHN0ZXBwZXIpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIndlYmV4LWJ0biBidG4tY2FuY2VsXCIgbWF0U3RlcHBlclByZXZpb3VzPlByZXZpb3VzPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtc3RlcD5cclxuICAgIDxtYXQtc3RlcCBbYXJpYS1sYWJlbGxlZGJ5XT1cIidkaXNhYmxlZF9hZidcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtdGl0bGVcIj5TdGVwIDM6IFZhbGlkYXRpb248L2Rpdj5cclxuICAgICAgPGZvcm0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5WYWxpZGF0aW9uPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwibWF0LWxhYmVsXCI+VmFsaWRhdGlvbiBTdWNjZXNzITwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidmFsaWRhdGlvbi10ZXh0XCI+VGhlcmUgaXMgbm8gaXNzdWUgZm9yIG1vdmluZyB0aGlzIHVzZXIgdG8gdGhlIG5ldyBsb2NhdGlvbiwgJE1UbG9jYXRpb25uYW1lLiBQbGVhc2VcclxuICAgICAgICAgIGJlIGF3YXJlIG9mIHRoZSBjaGFuZ2VzIGJlbG93IG9uY2UgdGhlIHVzZXIgaXMgYmVpbmcgbW92ZWQgdG8gdGhlIG5ldyBsb2NhdGlvbi48L3A+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cIm1hdC1sYWJlbFwiPkV4cGVjdGVkIGNoYW5nZXM8L21hdC1sYWJlbD5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bGk+VGFibGV0IGRldmljZSAoVEFCQVZJQ0spIG5lZWRzIHRvIGJlIHJlY29uZmlndXJlZCB3aXRoIFdlYmV4IEFwcC4gVXNlciB3aWxsIHJlY2VpdmUgYW4gZW1haWwgd2l0aCBsaW5rIHRvXHJcbiAgICAgICAgICAgIGRvd25sb2FkLlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5DaXNjbyA4ODc1IChTRVA3NTFGQzlCQUI4NTQpIHdpbGwgbm90IGJlIG1pZ3JhdGVkLjwvbGk+XHJcbiAgICAgICAgICA8bGk+VGhlIHVzZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gQ2FsbCBQYXJrIEdyb3VwLjwvbGk+XHJcbiAgICAgICAgICA8bGk+SWYgdGhlIGRldmljZSBpcyB1c2luZyB0aGUgbG9jYXRpb24gbGV2ZWwgZGV2aWNlIHNldHRpbmdzLCB0aGUgZGV2aWNlIHdpbGwgcGljayB1cCB0aGUgbmV3IGxvY2F0aW9uIGRldmljZVxyXG4gICAgICAgICAgICBzZXR0aW5ncyBvbmNlIHRoZSB1c2VyIGlzIG1vdmVkLiBJZiBzb21lIG9mIHRoZSBkZXZpY2Ugc2V0dGluZ3MgYXJlIG92ZXJ3cml0dGVuIGF0IHRoZSB1c2VyIGxldmVsLCB0aGVzZVxyXG4gICAgICAgICAgICB1c2VyIGxldmVsIHNldHRpbmdzIHdpbGwgYmUgcmV0YWluZWQgYW5kIHRoZSByZXN0IG9mIHRoZSBzZXR0aW5ncyB3aWxsIGJlIHBpY2tlZCB1cCBhdCB0aGUgaGlnaGVyIGxldmVsXHJcbiAgICAgICAgICAgIChvcmdhbml6YXRpb24gb3IgbG9jYXRpb24pIHNldHRpbmdzLlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDxsaT5JZiB0aGUgY3VycmVudCBsb2NhdGlvbiBoYXMgYSBkaWZmZXJlbnQgcmVjb3JkaW5nIHNlcnZpY2UgZnJvbSB0aGUgb25lIG9mIHRoZSBuZXcgbG9jYXRpb24sIHRoZSByZWNvcmRpbmdcclxuICAgICAgICAgICAgb2YgdGhpcyB1c2VyIG1heSBiZSBsb3N0IGFmdGVyIG1vdmluZyBsb2NhdGlvbi5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrYm94XCIgY2hlY2tlZD1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj5JIGNvbmZpcm0gdGhhdCBJIHVuZGVyc3RhbmQgdGhlc2UgY29uZGl0aW9ucy4gSVxyXG4gICAgICAgICAgICBhY2tub3dsZWRnZSB0aGUgY2hhbmdlcy5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLW5leHRcIiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwiZ29OZXh0U3RlcChzdGVwcGVyKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWNhbmNlbFwiIG1hdFN0ZXBwZXJQcmV2aW91cz5QcmV2aW91czwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXN0ZXA+XHJcbiAgICA8bWF0LXN0ZXA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlXCI+U3RlcCA0OiBSZXN1bHQ8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5SZXN1bHQ8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8Zm9ybT5cclxuICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwibWF0LWxhYmVsXCI+TW92aW5nIHVzZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluaXRpYXRlZCE8L21hdC1sYWJlbD5cclxuICAgICAgICA8cCBjbGFzcz1cInZhbGlkYXRpb24tdGV4dFwiPlxyXG4gICAgICAgICAgVGhlIHVzZXIgd2lsbCBiZSBtb3ZlZCB0byB0aGUgbmV3IGxvY2F0aW9uLCAkTVRsb2NhdGlvbm5hbWUuXHJcbiAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICBGb3IgdGhlIHByb2dyZXNzIG9mIG1vdmUsIHBsZWFzZSB2aXNpdCB0aGUgPGEgY2xhc3M9XCJmb3JtLWxpbmtcIiBocmVmPVwiI1wiPnVzZXIgZGV0YWlsczwvYT4uXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLWFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ3ZWJleC1idG4gYnRuLWRvbmVcIiAoY2xpY2spPVwiZG9uZS5lbWl0KHRydWUpXCI+RG9uZTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXN0ZXA+XHJcbiAgPC9tYXQtc3RlcHBlcj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { API } from '../app.constants';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { AppLocation } from '../classes/app-location';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../services/api-webex.service";
|
|
7
|
+
export class SiteSettingsService {
|
|
8
|
+
constructor(apiWebexService) {
|
|
9
|
+
this.apiWebexService = apiWebexService;
|
|
10
|
+
this.locations = [];
|
|
11
|
+
}
|
|
12
|
+
getLocations(customerId) {
|
|
13
|
+
return this.apiWebexService.fetch(API.GET_LOCATIONS.replace(':customerId', String(customerId)), {})
|
|
14
|
+
.pipe(map((result) => {
|
|
15
|
+
if (result && result.length) {
|
|
16
|
+
this.locations = result.map((location) => new AppLocation(location));
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SiteSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SiteSettingsService, deps: [{ token: i1.ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
SiteSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SiteSettingsService });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SiteSettingsService, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i1.ApiWebexService }]; } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXJzLWxpc3Qvc3JjL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFJdEQsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUgxQyxjQUFTLEdBQWtCLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQWtCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUNoRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO2FBQzFFO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7O2lIQWpCVSxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcHBMb2NhdGlvbiB9IGZyb20gJy4uL2NsYXNzZXMvYXBwLWxvY2F0aW9uJztcclxuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBpLXdlYmV4LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2l0ZVNldHRpbmdzU2VydmljZSB7XHJcbiAgbG9jYXRpb25zOiBBcHBMb2NhdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZVxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIGdldExvY2F0aW9ucyhjdXN0b21lcklkOiBudW1iZXIpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLmZldGNoKEFQSS5HRVRfTE9DQVRJT05TLnJlcGxhY2UoJzpjdXN0b21lcklkJywgU3RyaW5nKGN1c3RvbWVySWQpKSwge30pXHJcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMubG9jYXRpb25zID0gcmVzdWx0Lm1hcCgobG9jYXRpb246IGFueSkgPT4gbmV3IEFwcExvY2F0aW9uKGxvY2F0aW9uKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|