@ieeesa-npm/groups 0.4.6 → 0.4.8
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/esm2022/lib/assets/constants.json +45 -0
- package/esm2022/lib/assets/form-validations.mjs +3 -2
- package/esm2022/lib/components/add-user-roster/add-user-roster.component.mjs +344 -0
- package/esm2022/lib/components/create-group/create-group.component.mjs +2 -2
- package/esm2022/lib/components/tree-view/tree-view.component.mjs +2 -2
- package/esm2022/lib/components/view-roster/view-roster.component.mjs +11 -4
- package/esm2022/lib/groups.component.mjs +59 -2
- package/esm2022/lib/models/add-new-user.model.mjs +2 -0
- package/esm2022/lib/models/group-function-type.model.mjs +2 -1
- package/esm2022/lib/models/user-info.model.mjs +2 -0
- package/esm2022/lib/services/groups.service.mjs +66 -2
- package/fesm2022/ieeesa-npm-groups.mjs +510 -7
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/assets/form-validations.d.ts +1 -0
- package/lib/components/add-user-roster/add-user-roster.component.d.ts +108 -0
- package/lib/components/view-roster/view-roster.component.d.ts +5 -0
- package/lib/groups.component.d.ts +7 -0
- package/lib/models/add-new-user.model.d.ts +30 -0
- package/lib/models/group-function-type.model.d.ts +1 -0
- package/lib/models/user-info.model.d.ts +5 -0
- package/lib/services/groups.service.d.ts +55 -2
- package/package.json +4 -4
|
@@ -1,4 +1,42 @@
|
|
|
1
1
|
{
|
|
2
|
+
"addUserRoster": {
|
|
3
|
+
"heading": "New User",
|
|
4
|
+
"label": {
|
|
5
|
+
"email": "Email Address",
|
|
6
|
+
"rightButtonLabel": "Search & Continue",
|
|
7
|
+
"leftButtonLabel": "Cancel",
|
|
8
|
+
"saveButtonLabel": "Save",
|
|
9
|
+
"fullName": "Name",
|
|
10
|
+
"role": "Role",
|
|
11
|
+
"ariaLabel": {
|
|
12
|
+
"email": "Email Address",
|
|
13
|
+
"fullName": "Full name",
|
|
14
|
+
"role": "Role"
|
|
15
|
+
},
|
|
16
|
+
"ariaDescribedById": {
|
|
17
|
+
"email": "ariaEmailAddress",
|
|
18
|
+
"fullName": "ariaFullName",
|
|
19
|
+
"role": "ariaRole"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"message": {
|
|
23
|
+
"error": {
|
|
24
|
+
"required": "This field is required.",
|
|
25
|
+
"roleRequired": "Selection of role is required.",
|
|
26
|
+
"pattern": {
|
|
27
|
+
"email": "Please enter valid email."
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"success": {
|
|
31
|
+
"submission": "New user added successfully."
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"supportText": {
|
|
35
|
+
"emailAddress": "Please enter valid email address which includes @ symbol, dot (.) and domain. For example, user@ieee.org",
|
|
36
|
+
"fullName": "Enter user full name.",
|
|
37
|
+
"role": "<strong>Note:</strong> Removal of all roles shall result in removal of user from group."
|
|
38
|
+
}
|
|
39
|
+
},
|
|
2
40
|
"createGroup": {
|
|
3
41
|
"heading": "New Group",
|
|
4
42
|
"label": {
|
|
@@ -169,7 +207,13 @@
|
|
|
169
207
|
"1016": "Group Name must not be greater than 500 characters long.",
|
|
170
208
|
"1017": "Group Short Name must not be greater than 15 characters long.",
|
|
171
209
|
"1018": "Group Short Name contains invalid characters. Please enter '.',',', '/'', '-', '_' only.",
|
|
210
|
+
"1019": "Email address is required.",
|
|
172
211
|
"1020": "Role id is required.",
|
|
212
|
+
"1021": "User id is required.",
|
|
213
|
+
"1022": "User has already been added to this group.",
|
|
214
|
+
"1023": "Role doesn't exists for the systems user group.",
|
|
215
|
+
"1024": "No user(s) found!",
|
|
216
|
+
"1025": "User has already been added to this group.",
|
|
173
217
|
"1026": "User does not belong to the selected group.",
|
|
174
218
|
"1027": "No users found for the selected role.",
|
|
175
219
|
"1028": "Search by Name or Email address.",
|
|
@@ -177,6 +221,7 @@
|
|
|
177
221
|
"1030": "No record found!",
|
|
178
222
|
"1031": "No record found!",
|
|
179
223
|
"1032": "No record found!",
|
|
224
|
+
"2001": "Email does not exists.",
|
|
180
225
|
"2002": "Role does not belong to the group type."
|
|
181
226
|
},
|
|
182
227
|
"ariaLabel": {
|
|
@@ -5,6 +5,7 @@ export const GroupsValidationPatterns = {
|
|
|
5
5
|
// Group Short Name field regular expression which accept letters, numbers and ".","," , "/", "-" , "_" characters.
|
|
6
6
|
shortName: /^(?=[a-zA-Z0-9])[a-zA-Z0-9.,\/\-_]+$/,
|
|
7
7
|
// Group Scope field regular expression which accept Alpha Numeric, Special Characters and whitespace.
|
|
8
|
-
groupScope: /^(?=.*[a-zA-Z])[\w\s!"#$%&'()*+,-.\/\:;<=>?@[\]^_`{|}~\\]+$/i
|
|
8
|
+
groupScope: /^(?=.*[a-zA-Z])[\w\s!"#$%&'()*+,-.\/\:;<=>?@[\]^_`{|}~\\]+$/i,
|
|
9
|
+
email: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/,
|
|
9
10
|
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0Qyw4R0FBOEc7SUFDOUcsU0FBUyxFQUFFLDhEQUE4RDtJQUN6RSxtSEFBbUg7SUFDbkgsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxzR0FBc0c7SUFDdEcsVUFBVSxFQUFFLDhEQUE4RDtJQUMxRSxLQUFLLEVBQUUsa0NBQWtDO0NBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11c2VsZXNzLWVzY2FwZSAqL1xyXG5leHBvcnQgY29uc3QgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zID0ge1xyXG4gIC8vIEdyb3VwIE5hbWUgZmllbGQgcmVndWxhciBleHByZXNzaW9uLCB3aGljaCBhY2NlcHQgQWxwaGEgTnVtZXJpYywgU3BlY2lhbCBDaGFyYWN0ZXJzIChBU0NJSSkgYW5kIHdoaXRlc3BhY2UuXHJcbiAgZ3JvdXBOYW1lOiAvXig/PS4qW2EtekEtWl0pW1xcd1xccyFcIiMkJSYnKCkqKywtLlxcL1xcOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0rJC9pLFxyXG4gIC8vIEdyb3VwIFNob3J0IE5hbWUgZmllbGQgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIGFjY2VwdCBsZXR0ZXJzLCBudW1iZXJzIGFuZCBcIi5cIixcIixcIiAsIFwiL1wiLCBcIi1cIiAsIFwiX1wiIGNoYXJhY3RlcnMuXHJcbiAgc2hvcnROYW1lOiAvXig/PVthLXpBLVowLTldKVthLXpBLVowLTkuLFxcL1xcLV9dKyQvLFxyXG4gIC8vIEdyb3VwIFNjb3BlIGZpZWxkIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBhY2NlcHQgQWxwaGEgTnVtZXJpYywgU3BlY2lhbCBDaGFyYWN0ZXJzIGFuZCB3aGl0ZXNwYWNlLlxyXG4gIGdyb3VwU2NvcGU6IC9eKD89LipbYS16QS1aXSlbXFx3XFxzIVwiIyQlJicoKSorLC0uXFwvXFw6Ozw9Pj9AW1xcXV5fYHt8fX5cXFxcXSskL2ksXHJcbiAgZW1haWw6IC9eW1xcdy1cXC5dK0AoW1xcdy1dK1xcLikrW1xcdy1dezIsNH0kLyxcclxufTsiXX0=
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { AlertsService, AlertType, } from '@ieeesa-npm/utility';
|
|
8
|
+
import { DynamicFormComponent, FormControlType, AlignType, SearchType, } from '@ieeesa-npm/presentation';
|
|
9
|
+
import * as screenTexts from '../../assets/constants.json';
|
|
10
|
+
import { GroupsValidationPatterns } from '../../assets/form-validations';
|
|
11
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
12
|
+
import { FormStatus } from '../../models/form-status.model';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../../services/groups.service";
|
|
15
|
+
import * as i2 from "@ieeesa-npm/utility";
|
|
16
|
+
import * as i3 from "@angular/common";
|
|
17
|
+
/**
|
|
18
|
+
* Component implements the view and functionalities to add group users to roster.
|
|
19
|
+
* @export
|
|
20
|
+
* @class AddUserRosterComponent
|
|
21
|
+
* @implements {OnInit}
|
|
22
|
+
* @implements {OnDestroy}
|
|
23
|
+
*/
|
|
24
|
+
export class AddUserRosterComponent {
|
|
25
|
+
constructor(
|
|
26
|
+
// eslint-disable-next-line no-unused-vars
|
|
27
|
+
groupService,
|
|
28
|
+
// eslint-disable-next-line no-unused-vars
|
|
29
|
+
globalErrorHandlerService,
|
|
30
|
+
// eslint-disable-next-line no-unused-vars
|
|
31
|
+
alertService // eslint-disable-next-line no-empty-function
|
|
32
|
+
) {
|
|
33
|
+
this.groupService = groupService;
|
|
34
|
+
this.globalErrorHandlerService = globalErrorHandlerService;
|
|
35
|
+
this.alertService = alertService;
|
|
36
|
+
this.destroy$ = new Subject();
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
this.constants = screenTexts;
|
|
39
|
+
this.addUserRosterTexts = this.constants?.addUserRoster;
|
|
40
|
+
this.leftButtonLabel = this.addUserRosterTexts?.label?.leftButtonLabel;
|
|
41
|
+
this.rightButtonLabel = this.addUserRosterTexts?.label?.rightButtonLabel;
|
|
42
|
+
this.isSubmitButtonDisabled = false;
|
|
43
|
+
this.colWidth = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };
|
|
44
|
+
this.actionButtonAlign = AlignType.LEFT;
|
|
45
|
+
this.isSearchUserForm = true;
|
|
46
|
+
this.userRoles = [];
|
|
47
|
+
this.selectedUserRoles = [];
|
|
48
|
+
this.isAddUserFormEmailSearch = false;
|
|
49
|
+
this.submitFormResponse = new EventEmitter();
|
|
50
|
+
this.formCancel = new EventEmitter();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Initializes user roles and searchUserFormGroup.
|
|
54
|
+
* @memberof AddUserRosterComponent
|
|
55
|
+
*/
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
this.userRoles = this.groupService.getGroupTypeUserRoles();
|
|
58
|
+
this.createSearchUserFormGroup();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates search user form group
|
|
62
|
+
* @memberof AddUserRosterComponent
|
|
63
|
+
*/
|
|
64
|
+
createSearchUserFormGroup() {
|
|
65
|
+
this.searchUserFormGroup = {
|
|
66
|
+
formGroup: [
|
|
67
|
+
{
|
|
68
|
+
legend: '',
|
|
69
|
+
controls: [
|
|
70
|
+
{
|
|
71
|
+
type: FormControlType.INPUT,
|
|
72
|
+
label: this.addUserRosterTexts?.label?.email + '*',
|
|
73
|
+
controlName: 'emailAddress',
|
|
74
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
|
|
75
|
+
isEmail: true,
|
|
76
|
+
supportMessage: this.addUserRosterTexts?.supportText?.emailAddress,
|
|
77
|
+
patternErrorMessage: this.addUserRosterTexts?.message?.error?.pattern?.email,
|
|
78
|
+
validation: [
|
|
79
|
+
Validators.required,
|
|
80
|
+
Validators.pattern(GroupsValidationPatterns.email),
|
|
81
|
+
],
|
|
82
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.email,
|
|
83
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById?.email,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Checks form validity and searches the user by entered email.
|
|
92
|
+
* @param {FormGroup[]} form
|
|
93
|
+
* @memberof AddUserRosterComponent
|
|
94
|
+
*/
|
|
95
|
+
onSearchUserFormSubmit(form) {
|
|
96
|
+
this.isAddUserFormEmailSearch = false;
|
|
97
|
+
if (form[0]?.status === FormStatus.VALID) {
|
|
98
|
+
this.searchUserByEmail(form[0].getRawValue()?.emailAddress);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Searches the user by entered email and gets the user details when the email id is found.
|
|
103
|
+
* @param {string} email
|
|
104
|
+
* @memberof AddUserRosterComponent
|
|
105
|
+
*/
|
|
106
|
+
searchUserByEmail(email) {
|
|
107
|
+
this.groupService
|
|
108
|
+
.getUserByEmail(email)
|
|
109
|
+
.pipe(takeUntil(this.destroy$))
|
|
110
|
+
.subscribe({
|
|
111
|
+
next: (res) => {
|
|
112
|
+
if (res?.status) {
|
|
113
|
+
this.userInfo = res?.body;
|
|
114
|
+
this.validateUserExistence();
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
118
|
+
error: (error) => {
|
|
119
|
+
this.handleErrors(error);
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validates whether the user is exists in the selected group and then creates add user form when the user does not exist in the selected group.
|
|
125
|
+
* @memberof AddUserRosterComponent
|
|
126
|
+
*/
|
|
127
|
+
validateUserExistence() {
|
|
128
|
+
const payload = {
|
|
129
|
+
payload: {
|
|
130
|
+
groupId: this.groupService.getSelectedGroupInfo()?.groupId,
|
|
131
|
+
userId: this.userInfo?.userId,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
this.groupService
|
|
135
|
+
.getGroupUserDetails(payload)
|
|
136
|
+
.pipe(takeUntil(this.destroy$))
|
|
137
|
+
?.subscribe({
|
|
138
|
+
next: () => {
|
|
139
|
+
this.alertService.showMessage({
|
|
140
|
+
status: 'custom',
|
|
141
|
+
message: this.constants?.errors?.['1022'],
|
|
142
|
+
alertType: AlertType.ERROR,
|
|
143
|
+
isCloseNeeded: true,
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
+
error: (error) => {
|
|
148
|
+
const errorCodes = error?.error?.body?.errorCodes;
|
|
149
|
+
if (errorCodes?.includes('1026')) {
|
|
150
|
+
this.isSearchUserForm = false;
|
|
151
|
+
this.rightButtonLabel =
|
|
152
|
+
this.addUserRosterTexts?.label?.saveButtonLabel;
|
|
153
|
+
if (!this.isAddUserFormEmailSearch) {
|
|
154
|
+
this.selectedUserRoles = [];
|
|
155
|
+
this.isSubmitButtonDisabled = true;
|
|
156
|
+
this.addUserFormGroup = {
|
|
157
|
+
formGroup: [
|
|
158
|
+
{
|
|
159
|
+
legend: '',
|
|
160
|
+
controls: [
|
|
161
|
+
{
|
|
162
|
+
type: FormControlType.SEARCH,
|
|
163
|
+
label: this.addUserRosterTexts?.label?.email + '*',
|
|
164
|
+
controlName: 'emailSearch',
|
|
165
|
+
value: this.userInfo?.email,
|
|
166
|
+
searchType: SearchType.ON_CLICK,
|
|
167
|
+
validation: [
|
|
168
|
+
Validators.required,
|
|
169
|
+
Validators.pattern(GroupsValidationPatterns.email),
|
|
170
|
+
],
|
|
171
|
+
supportMessage: this.addUserRosterTexts?.supportText?.emailAddress,
|
|
172
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
|
|
173
|
+
patternErrorMessage: this.addUserRosterTexts?.message?.error?.pattern
|
|
174
|
+
?.email,
|
|
175
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.email,
|
|
176
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
|
|
177
|
+
?.email,
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
type: FormControlType.TEXT_AREA,
|
|
181
|
+
label: this.addUserRosterTexts?.label?.fullName + '*',
|
|
182
|
+
controlName: 'fullName',
|
|
183
|
+
value: this.userInfo?.name,
|
|
184
|
+
validation: [Validators.required],
|
|
185
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
|
|
186
|
+
isReadonly: true,
|
|
187
|
+
ariaMultiline: false,
|
|
188
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.fullName,
|
|
189
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
|
|
190
|
+
?.fullName,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
type: FormControlType.CHECKBOX,
|
|
194
|
+
label: this.addUserRosterTexts?.label?.role + '*',
|
|
195
|
+
controlName: 'roles',
|
|
196
|
+
checkboxOptions: this.userRoles,
|
|
197
|
+
minSelectionRequired: 1,
|
|
198
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.role,
|
|
199
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
|
|
200
|
+
?.role,
|
|
201
|
+
supportMessage: this.addUserRosterTexts?.supportText?.role,
|
|
202
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.roleRequired,
|
|
203
|
+
validation: [Validators.required],
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this.addUserFormGroupRef
|
|
212
|
+
?.get('emailSearch')
|
|
213
|
+
?.setValue(this.userInfo?.email);
|
|
214
|
+
this.addUserFormGroupRef
|
|
215
|
+
?.get('fullName')
|
|
216
|
+
?.setValue(this.userInfo?.name);
|
|
217
|
+
this.isSubmitButtonDisabled =
|
|
218
|
+
this.selectedUserRoles?.length === 0;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else
|
|
222
|
+
this.handleErrors(error);
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Handles add user form email search
|
|
228
|
+
* @param {string} email
|
|
229
|
+
* @memberof AddUserRosterComponent
|
|
230
|
+
*/
|
|
231
|
+
formSearchApply(email) {
|
|
232
|
+
this.isAddUserFormEmailSearch = true;
|
|
233
|
+
if (email.trim())
|
|
234
|
+
this.searchUserByEmail(email.trim());
|
|
235
|
+
else {
|
|
236
|
+
this.userInfo.name = '';
|
|
237
|
+
this.addUserFormGroupRef?.get('fullName')?.setValue('');
|
|
238
|
+
this.isSubmitButtonDisabled = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Assigns role to user on form submission.
|
|
243
|
+
* @param {FormGroup[]} form
|
|
244
|
+
* @memberof AddUserRosterComponent
|
|
245
|
+
*/
|
|
246
|
+
onAddUserFormSubmit(form) {
|
|
247
|
+
form[0]?.markAllAsTouched();
|
|
248
|
+
if (form[0].status === FormStatus.VALID) {
|
|
249
|
+
const payload = {
|
|
250
|
+
payload: {
|
|
251
|
+
email: this.userInfo?.email,
|
|
252
|
+
roles: this.selectedUserRoles,
|
|
253
|
+
userId: this.userInfo?.userId,
|
|
254
|
+
groupId: this.groupService.selectedGroupInfo?.groupId,
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
this.groupService
|
|
258
|
+
.addNewGroupUser(payload)
|
|
259
|
+
.pipe(takeUntil(this.destroy$))
|
|
260
|
+
.subscribe({
|
|
261
|
+
next: (res) => {
|
|
262
|
+
if (res?.status) {
|
|
263
|
+
this.submitFormResponse.emit(res);
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
267
|
+
error: (error) => {
|
|
268
|
+
this.handleErrors(error);
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get add user form group reference.
|
|
275
|
+
* @param {FormGroup[]} form
|
|
276
|
+
* @memberof AddUserRosterComponent
|
|
277
|
+
*/
|
|
278
|
+
getAddUserFormGroupRef(form) {
|
|
279
|
+
this.addUserFormGroupRef = form[0];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Handles user role selection in add user form.
|
|
283
|
+
* @param {CheckboxOption} event
|
|
284
|
+
* @memberof AddUserRosterComponent
|
|
285
|
+
*/
|
|
286
|
+
onUserRoleSelection(event) {
|
|
287
|
+
if (event?.checked) {
|
|
288
|
+
this.selectedUserRoles?.push(event.id);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
this.selectedUserRoles = this.selectedUserRoles.filter((value) => value !== event.id);
|
|
292
|
+
}
|
|
293
|
+
this.isSubmitButtonDisabled = this.selectedUserRoles?.length === 0;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Emits form cancel event.
|
|
297
|
+
* @memberof AddUserRosterComponent
|
|
298
|
+
*/
|
|
299
|
+
onFormCancel() {
|
|
300
|
+
this.formCancel.emit();
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Handles the custom errors while searching user by email, validating user existence and adding new user to roster.
|
|
304
|
+
* @param {*} error
|
|
305
|
+
* @memberof AddUserRosterComponent
|
|
306
|
+
*/
|
|
307
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
308
|
+
handleErrors(error) {
|
|
309
|
+
const errorCodes = error?.error?.body?.errorCodes;
|
|
310
|
+
if (Array.isArray(errorCodes) && !error?.error?.status) {
|
|
311
|
+
const errorMessage = this.groupService.parseErrorMessage(errorCodes);
|
|
312
|
+
this.alertService.showMessage({
|
|
313
|
+
status: 'custom',
|
|
314
|
+
message: errorMessage,
|
|
315
|
+
alertType: AlertType.ERROR,
|
|
316
|
+
isCloseNeeded: true,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
else if (error && error instanceof HttpErrorResponse) {
|
|
320
|
+
this.globalErrorHandlerService.handleError(error);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
|
|
325
|
+
* @memberof AddUserRosterComponent
|
|
326
|
+
*/
|
|
327
|
+
ngOnDestroy() {
|
|
328
|
+
if (this.destroy$) {
|
|
329
|
+
this.destroy$.next(true);
|
|
330
|
+
this.destroy$.unsubscribe();
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AddUserRosterComponent, deps: [{ token: i1.GroupsService }, { token: i2.GlobalErrorHandlerService }, { token: i2.AlertsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
334
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: AddUserRosterComponent, isStandalone: true, selector: "ieeesa-add-user-roster", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, providers: [AlertsService], ngImport: i0, template: "<ieeesa-dynamic-form\r\n *ngIf=\"searchUserFormGroup && isSearchUserForm\"\r\n class=\"ieeesa-search-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"searchUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onSearchUserFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n></ieeesa-dynamic-form>\r\n\r\n<ieeesa-dynamic-form\r\n *ngIf=\"addUserFormGroup && !isSearchUserForm\"\r\n class=\"ieeesa-add-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"addUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onAddUserFormSubmit($event)\"\r\n (formSearchApply)=\"formSearchApply($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getAddUserFormGroupRef($event)\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:97vw!important}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-search-user-form .ieeesa-dynamic-form__actions,.ieeesa-add-user-form .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em 0}.ieeesa-search-user-form .ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning{position:relative;bottom:10px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__button,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__button{position:relative;top:2px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__content{position:relative;bottom:15px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{width:100%;font-size:1em;border-bottom:2px solid #918f90;border-radius:4px 4px 0 0;height:40px;align-items:center;background:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid{border-bottom:2px solid #ba0c2f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid),.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid){border-bottom:2px solid #00629b}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field{margin-bottom:.4em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#ffffff;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-search-user-form .ieeesa-dynamic-form__actions--right-btn{min-width:175px!important}.mdc-checkbox__background{border-color:unset;background-color:unset}.ieeesa-form-error--text{padding:.25em 1em 0}.mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-search-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-search-field .mat-mdc-form-field{width:32%}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:80vw!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "actionButtonAlign"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange"], exportAs: ["dynamicForm"] }, { kind: "ngmodule", type: MatDialogModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
335
|
+
}
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AddUserRosterComponent, decorators: [{
|
|
337
|
+
type: Component,
|
|
338
|
+
args: [{ selector: 'ieeesa-add-user-roster', standalone: true, imports: [CommonModule, DynamicFormComponent, MatDialogModule], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<ieeesa-dynamic-form\r\n *ngIf=\"searchUserFormGroup && isSearchUserForm\"\r\n class=\"ieeesa-search-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"searchUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onSearchUserFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n></ieeesa-dynamic-form>\r\n\r\n<ieeesa-dynamic-form\r\n *ngIf=\"addUserFormGroup && !isSearchUserForm\"\r\n class=\"ieeesa-add-user-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"addUserFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onAddUserFormSubmit($event)\"\r\n (formSearchApply)=\"formSearchApply($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getAddUserFormGroupRef($event)\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:97vw!important}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-add-user-roster .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-add-user-roster .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-search-user-form .ieeesa-dynamic-form__actions,.ieeesa-add-user-form .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em 0}.ieeesa-search-user-form .ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__support-text,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__label,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__support-text{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__content,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-input-field__icon--warning{position:relative;bottom:10px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__search-icon{color:#49454f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__button,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__button{position:relative;top:2px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field__content,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field__content{position:relative;bottom:15px}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field{width:100%;font-size:1em;border-bottom:2px solid #918f90;border-radius:4px 4px 0 0;height:40px;align-items:center;background:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid,.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-form-field-invalid{border-bottom:2px solid #ba0c2f}.ieeesa-search-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid),.ieeesa-add-user-form .ieeesa-dynamic-form .ieeesa-search-field .mat-mdc-form-field.mat-focused:not(.mat-form-field-invalid){border-bottom:2px solid #00629b}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field{margin-bottom:.4em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#ffffff;padding:0}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-search-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-add-user-form .ieeesa-dynamic-form .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-search-user-form .ieeesa-dynamic-form__actions--right-btn{min-width:175px!important}.mdc-checkbox__background{border-color:unset;background-color:unset}.ieeesa-form-error--text{padding:.25em 1em 0}.mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-search-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-search-user-form .email-address .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-search .ieeesa-search-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-input-field .mat-mdc-form-field,.ieeesa-add-user-form .email-address .ieeesa-search-field .mat-mdc-form-field{width:32%}.ieeesa-modal-dialog.ieeesa-add-user-roster{max-width:80vw!important}}\n"] }]
|
|
339
|
+
}], ctorParameters: function () { return [{ type: i1.GroupsService }, { type: i2.GlobalErrorHandlerService }, { type: i2.AlertsService }]; }, propDecorators: { submitFormResponse: [{
|
|
340
|
+
type: Output
|
|
341
|
+
}], formCancel: [{
|
|
342
|
+
type: Output
|
|
343
|
+
}] } });
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvYWRkLXVzZXItcm9zdGVyL2FkZC11c2VyLXJvc3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2FkZC11c2VyLXJvc3Rlci9hZGQtdXNlci1yb3N0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsR0FFVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxvQkFBb0IsRUFHcEIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBRVgsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFLNUQ7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QUU7WUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJO2FBQ3BCLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxLQUFLLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFO1lBQ3RELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs4R0E3VVUsc0JBQXNCO2tHQUF0QixzQkFBc0Isc0pBRnRCLENBQUMsYUFBYSxDQUFDLDBCQ2pENUIsa3ZDQStCQSx3bGREY1ksWUFBWSxtSUFBRSxvQkFBb0IsaW9CQUFFLGVBQWU7OzJGQU1sRCxzQkFBc0I7a0JBVGxDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMsaUJBRy9DLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxhQUFhLENBQUM7d0tBb0JoQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIEZvcm1HcmlkLFxyXG4gIEZvcm1Nb2RlbCxcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgQWxpZ25UeXBlLFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZE5ld1VzZXJQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZC1uZXctdXNlci5tb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItaW5mby5tb2RlbCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IGltcGxlbWVudHMgdGhlIHZpZXcgYW5kIGZ1bmN0aW9uYWxpdGllcyB0byBhZGQgZ3JvdXAgdXNlcnMgdG8gcm9zdGVyLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1hZGQtdXNlci1yb3N0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnQsIE1hdERpYWxvZ01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC11c2VyLXJvc3Rlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtBbGVydHNTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFVzZXJSb3N0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBsZWZ0QnV0dG9uTGFiZWwgPSB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yaWdodEJ1dHRvbkxhYmVsO1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgc2VhcmNoVXNlckZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBhZGRVc2VyRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgYWRkVXNlckZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICBpc1NlYXJjaFVzZXJGb3JtID0gdHJ1ZTtcclxuICB1c2VyUm9sZXM6IENoZWNrYm94T3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZFVzZXJSb2xlczogc3RyaW5nW10gPSBbXTtcclxuICB1c2VySW5mbyE6IFVzZXJJbmZvO1xyXG4gIGlzQWRkVXNlckZvcm1FbWFpbFNlYXJjaCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3VwU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdXNlciByb2xlcyBhbmQgc2VhcmNoVXNlckZvcm1Hcm91cC5cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51c2VyUm9sZXMgPSB0aGlzLmdyb3VwU2VydmljZS5nZXRHcm91cFR5cGVVc2VyUm9sZXMoKTtcclxuICAgIHRoaXMuY3JlYXRlU2VhcmNoVXNlckZvcm1Hcm91cCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBzZWFyY2ggdXNlciBmb3JtIGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVTZWFyY2hVc2VyRm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hVc2VyRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5lbWFpbCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2VtYWlsQWRkcmVzcycsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5lbWFpbCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5lbWFpbCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5lbWFpbCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmVtYWlsLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBmb3JtIHZhbGlkaXR5IGFuZCBzZWFyY2hlcyB0aGUgdXNlciBieSBlbnRlcmVkIGVtYWlsLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VhcmNoVXNlckZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBZGRVc2VyRm9ybUVtYWlsU2VhcmNoID0gZmFsc2U7XHJcbiAgICBpZiAoZm9ybVswXT8uc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVXNlckJ5RW1haWwoZm9ybVswXS5nZXRSYXdWYWx1ZSgpPy5lbWFpbEFkZHJlc3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoZXMgdGhlIHVzZXIgYnkgZW50ZXJlZCBlbWFpbCBhbmQgZ2V0cyB0aGUgdXNlciBkZXRhaWxzIHdoZW4gdGhlIGVtYWlsIGlkIGlzIGZvdW5kLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VhcmNoVXNlckJ5RW1haWwoZW1haWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldFVzZXJCeUVtYWlsKGVtYWlsKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzPy5ib2R5O1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlckV4aXN0ZW5jZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIHVzZXIgaXMgZXhpc3RzIGluIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgdGhlbiBjcmVhdGVzIGFkZCB1c2VyIGZvcm0gd2hlbiB0aGUgdXNlciBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZVVzZXJFeGlzdGVuY2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cFNlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJJbmZvPy51c2VySWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVXNlckRldGFpbHMocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbnN0YW50cz8uZXJyb3JzPy5bJzEwMjInXSxcclxuICAgICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDI2JykpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1NlYXJjaFVzZXJGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmlnaHRCdXR0b25MYWJlbCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5zYXZlQnV0dG9uTGFiZWw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0FkZFVzZXJGb3JtRW1haWxTZWFyY2gpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVzID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJGb3JtR3JvdXAgPSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZ2VuZDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFQVJDSCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uZW1haWwgKyAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW1haWxTZWFyY2gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy51c2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUuT05fQ0xJQ0ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMuZW1haWwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5mdWxsTmFtZSArICcqJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yb2xlICsgJyonLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3JvbGVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLnVzZXJSb2xlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucm9sZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5yb2xlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LnJvbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucm9sZVJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmXHJcbiAgICAgICAgICAgICAgICA/LmdldCgnZW1haWxTZWFyY2gnKVxyXG4gICAgICAgICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnVzZXJJbmZvPy5lbWFpbCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmXHJcbiAgICAgICAgICAgICAgICA/LmdldCgnZnVsbE5hbWUnKVxyXG4gICAgICAgICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnVzZXJJbmZvPy5uYW1lKTtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8ubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhZGQgdXNlciBmb3JtIGVtYWlsIHNlYXJjaFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZm9ybVNlYXJjaEFwcGx5KGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNBZGRVc2VyRm9ybUVtYWlsU2VhcmNoID0gdHJ1ZTtcclxuICAgIGlmIChlbWFpbC50cmltKCkpIHRoaXMuc2VhcmNoVXNlckJ5RW1haWwoZW1haWwudHJpbSgpKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJJbmZvLm5hbWUgPSAnJztcclxuICAgICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmPy5nZXQoJ2Z1bGxOYW1lJyk/LnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFzc2lnbnMgcm9sZSB0byB1c2VyIG9uIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkFkZFVzZXJGb3JtU3VibWl0KGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBmb3JtWzBdPy5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAoZm9ybVswXS5zdGF0dXMgPT09IEZvcm1TdGF0dXMuVkFMSUQpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZDogQWRkTmV3VXNlclBheWxvYWQgPSB7XHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgZW1haWw6IHRoaXMudXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXMsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMudXNlckluZm8/LnVzZXJJZCxcclxuICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5ncm91cFNlcnZpY2VcclxuICAgICAgICAuYWRkTmV3R3JvdXBVc2VyKHBheWxvYWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZS5lbWl0KHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWRkIHVzZXIgZm9ybSBncm91cCByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QWRkVXNlckZvcm1Hcm91cFJlZihmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5hZGRVc2VyRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdXNlciByb2xlIHNlbGVjdGlvbiBpbiBhZGQgdXNlciBmb3JtLlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb259IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvblVzZXJSb2xlU2VsZWN0aW9uKGV2ZW50OiBDaGVja2JveE9wdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXM/LnB1c2goZXZlbnQuaWQgYXMgc3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXMgPSB0aGlzLnNlbGVjdGVkVXNlclJvbGVzLmZpbHRlcihcclxuICAgICAgICAodmFsdWUpID0+IHZhbHVlICE9PSBldmVudC5pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8ubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZm9ybSBjYW5jZWwgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY3VzdG9tIGVycm9ycyB3aGlsZSBzZWFyY2hpbmcgdXNlciBieSBlbWFpbCwgdmFsaWRhdGluZyB1c2VyIGV4aXN0ZW5jZSBhbmQgYWRkaW5nIG5ldyB1c2VyIHRvIHJvc3Rlci5cclxuICAgKiBAcGFyYW0geyp9IGVycm9yXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykgJiYgIWVycm9yPy5lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ3JvdXBTZXJ2aWNlLnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVzdHJveSQpIHtcclxuICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJzZWFyY2hVc2VyRm9ybUdyb3VwICYmIGlzU2VhcmNoVXNlckZvcm1cIlxyXG4gIGNsYXNzPVwiaWVlZXNhLXNlYXJjaC11c2VyLWZvcm1cIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwic2VhcmNoVXNlckZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvblNlYXJjaFVzZXJGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25Gb3JtQ2FuY2VsKClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG5cclxuPGllZWVzYS1keW5hbWljLWZvcm1cclxuICAqbmdJZj1cImFkZFVzZXJGb3JtR3JvdXAgJiYgIWlzU2VhcmNoVXNlckZvcm1cIlxyXG4gIGNsYXNzPVwiaWVlZXNhLWFkZC11c2VyLWZvcm1cIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwiYWRkVXNlckZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvbkFkZFVzZXJGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtU2VhcmNoQXBwbHkpPVwiZm9ybVNlYXJjaEFwcGx5KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25Gb3JtQ2FuY2VsKClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldEFkZFVzZXJGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgKGZvcm1DaGVja2JveFNlbGVjdGlvbik9XCJvblVzZXJSb2xlU2VsZWN0aW9uKCRldmVudClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG4iXX0=
|