@bnsights/bbsf-controls 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/bnsights-bbsf-controls.d.ts +26 -0
- package/bnsights-bbsf-controls.metadata.json +1 -0
- package/bundles/bnsights-bbsf-controls.umd.js +6375 -0
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
- package/esm2015/bnsights-bbsf-controls.js +27 -0
- package/esm2015/lib/Shared/Enums/CalendarView.js +8 -0
- package/esm2015/lib/Shared/Enums/ControlLayout.js +6 -0
- package/esm2015/lib/Shared/Enums/Countries.js +247 -0
- package/esm2015/lib/Shared/Enums/FileType.js +22 -0
- package/esm2015/lib/Shared/Enums/FilterType.js +11 -0
- package/esm2015/lib/Shared/Enums/FontSize.js +7 -0
- package/esm2015/lib/Shared/Enums/ForceDirection.js +6 -0
- package/esm2015/lib/Shared/Enums/IconPosition.js +6 -0
- package/esm2015/lib/Shared/Enums/ImageType.js +10 -0
- package/esm2015/lib/Shared/Enums/InputType.js +9 -0
- package/esm2015/lib/Shared/Enums/Insert.js +9 -0
- package/esm2015/lib/Shared/Enums/LanguageMode.js +11 -0
- package/esm2015/lib/Shared/Enums/Misc.js +7 -0
- package/esm2015/lib/Shared/Enums/PagingActionMode.js +6 -0
- package/esm2015/lib/Shared/Enums/Para.js +9 -0
- package/esm2015/lib/Shared/Enums/PickerType.js +7 -0
- package/esm2015/lib/Shared/Enums/SelectMode.js +6 -0
- package/esm2015/lib/Shared/Enums/StartView.js +7 -0
- package/esm2015/lib/Shared/Enums/Style.js +8 -0
- package/esm2015/lib/Shared/Enums/menu-list-enum.js +6 -0
- package/esm2015/lib/Shared/Models/Attribute.js +3 -0
- package/esm2015/lib/Shared/Models/AutocompleteDTO.js +7 -0
- package/esm2015/lib/Shared/Models/AutocompleteOptions.js +29 -0
- package/esm2015/lib/Shared/Models/CalendarEventDTO.js +3 -0
- package/esm2015/lib/Shared/Models/CalendarOptions.js +17 -0
- package/esm2015/lib/Shared/Models/CancelDTO.js +7 -0
- package/esm2015/lib/Shared/Models/CheckBoxOptions.js +12 -0
- package/esm2015/lib/Shared/Models/CustomValidation.js +14 -0
- package/esm2015/lib/Shared/Models/DropdownListItem.js +3 -0
- package/esm2015/lib/Shared/Models/DropdownOptions.js +18 -0
- package/esm2015/lib/Shared/Models/EditPersonalImage.js +7 -0
- package/esm2015/lib/Shared/Models/EnglishArabicDTO.js +3 -0
- package/esm2015/lib/Shared/Models/FileDTO.js +2 -0
- package/esm2015/lib/Shared/Models/FileUploadModel.js +3 -0
- package/esm2015/lib/Shared/Models/FileUploadOptions.js +15 -0
- package/esm2015/lib/Shared/Models/FilterItem.js +8 -0
- package/esm2015/lib/Shared/Models/FormOptions.js +26 -0
- package/esm2015/lib/Shared/Models/HtmlEditorOptions.js +16 -0
- package/esm2015/lib/Shared/Models/ImageUploadOptions.js +18 -0
- package/esm2015/lib/Shared/Models/MapAutoCompleteOptions.js +11 -0
- package/esm2015/lib/Shared/Models/MapAutocompleteDTO.js +3 -0
- package/esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js +19 -0
- package/esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js +19 -0
- package/esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js +22 -0
- package/esm2015/lib/Shared/Models/MultipleFileUploadModel.js +9 -0
- package/esm2015/lib/Shared/Models/PagingDTO.js +13 -0
- package/esm2015/lib/Shared/Models/PagingOptions.js +43 -0
- package/esm2015/lib/Shared/Models/PhoneOptions.js +15 -0
- package/esm2015/lib/Shared/Models/ProfileImageUploadOptions.js +15 -0
- package/esm2015/lib/Shared/Models/ProfilePictureDTO.js +3 -0
- package/esm2015/lib/Shared/Models/RadioButtonItem.js +3 -0
- package/esm2015/lib/Shared/Models/RadioButtonOptions.js +10 -0
- package/esm2015/lib/Shared/Models/RangeNumber.js +3 -0
- package/esm2015/lib/Shared/Models/SaveDTO.js +7 -0
- package/esm2015/lib/Shared/Models/TagsInputDTO.js +3 -0
- package/esm2015/lib/Shared/Models/TagsInputOptions.js +45 -0
- package/esm2015/lib/Shared/Models/TextAreaOptions.js +14 -0
- package/esm2015/lib/Shared/Models/TextBoxOptions.js +21 -0
- package/esm2015/lib/Shared/Models/ToggleslideOptions.js +9 -0
- package/esm2015/lib/Shared/Models/UploadPersonalImage.js +7 -0
- package/esm2015/lib/Shared/Models/datePickerOptions.js +24 -0
- package/esm2015/lib/Shared/config/environment.js +12 -0
- package/esm2015/lib/Shared/services/ControlUtility.js +114 -0
- package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +122 -0
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +236 -0
- package/esm2015/lib/controls/Calendar/Calendar.component.js +176 -0
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +111 -0
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +148 -0
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +172 -0
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +319 -0
- package/esm2015/lib/controls/Form/Form.component.js +82 -0
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +202 -0
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +304 -0
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +283 -0
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +383 -0
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +325 -0
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +326 -0
- package/esm2015/lib/controls/Paging/JwPagination.component.js +127 -0
- package/esm2015/lib/controls/Paging/Paging.component.js +215 -0
- package/esm2015/lib/controls/Phone/Phone.component.js +114 -0
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +326 -0
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +98 -0
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +205 -0
- package/esm2015/lib/controls/TextArea/TextArea.component.js +148 -0
- package/esm2015/lib/controls/TextBox/TextBox.component.js +217 -0
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +71 -0
- package/esm2015/lib/controls/bbsf-controls.module.js +208 -0
- package/esm2015/public-api.js +101 -0
- package/fesm2015/bnsights-bbsf-controls.js +5794 -0
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
- package/lib/Shared/Enums/CalendarView.d.ts +6 -0
- package/lib/Shared/Enums/ControlLayout.d.ts +4 -0
- package/lib/Shared/Enums/Countries.d.ts +245 -0
- package/lib/Shared/Enums/FileType.d.ts +20 -0
- package/lib/Shared/Enums/FilterType.d.ts +9 -0
- package/lib/Shared/Enums/FontSize.d.ts +5 -0
- package/lib/Shared/Enums/ForceDirection.d.ts +4 -0
- package/lib/Shared/Enums/IconPosition.d.ts +4 -0
- package/lib/Shared/Enums/ImageType.d.ts +8 -0
- package/lib/Shared/Enums/InputType.d.ts +7 -0
- package/lib/Shared/Enums/Insert.d.ts +7 -0
- package/lib/Shared/Enums/LanguageMode.d.ts +9 -0
- package/lib/Shared/Enums/Misc.d.ts +5 -0
- package/lib/Shared/Enums/PagingActionMode.d.ts +4 -0
- package/lib/Shared/Enums/Para.d.ts +7 -0
- package/lib/Shared/Enums/PickerType.d.ts +5 -0
- package/lib/Shared/Enums/SelectMode.d.ts +4 -0
- package/lib/Shared/Enums/StartView.d.ts +5 -0
- package/lib/Shared/Enums/Style.d.ts +6 -0
- package/lib/Shared/Enums/menu-list-enum.d.ts +4 -0
- package/lib/Shared/Models/Attribute.d.ts +4 -0
- package/lib/Shared/Models/AutocompleteDTO.d.ts +4 -0
- package/lib/Shared/Models/AutocompleteOptions.d.ts +74 -0
- package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -0
- package/lib/Shared/Models/CalendarOptions.d.ts +29 -0
- package/lib/Shared/Models/CancelDTO.d.ts +5 -0
- package/lib/Shared/Models/CheckBoxOptions.d.ts +38 -0
- package/lib/Shared/Models/CustomValidation.d.ts +10 -0
- package/lib/Shared/Models/DropdownListItem.d.ts +4 -0
- package/lib/Shared/Models/DropdownOptions.d.ts +67 -0
- package/lib/Shared/Models/EditPersonalImage.d.ts +5 -0
- package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -0
- package/lib/Shared/Models/FileDTO.d.ts +19 -0
- package/lib/Shared/Models/FileUploadModel.d.ts +4 -0
- package/lib/Shared/Models/FileUploadOptions.d.ts +56 -0
- package/lib/Shared/Models/FilterItem.d.ts +13 -0
- package/lib/Shared/Models/FormOptions.d.ts +15 -0
- package/lib/Shared/Models/HtmlEditorOptions.d.ts +66 -0
- package/lib/Shared/Models/ImageUploadOptions.d.ts +59 -0
- package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +44 -0
- package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -0
- package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +97 -0
- package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +85 -0
- package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +83 -0
- package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -0
- package/lib/Shared/Models/PagingDTO.d.ts +11 -0
- package/lib/Shared/Models/PagingOptions.d.ts +51 -0
- package/lib/Shared/Models/PhoneOptions.d.ts +56 -0
- package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +64 -0
- package/lib/Shared/Models/ProfilePictureDTO.d.ts +12 -0
- package/lib/Shared/Models/RadioButtonItem.d.ts +4 -0
- package/lib/Shared/Models/RadioButtonOptions.d.ts +44 -0
- package/lib/Shared/Models/RangeNumber.d.ts +4 -0
- package/lib/Shared/Models/SaveDTO.d.ts +5 -0
- package/lib/Shared/Models/TagsInputDTO.d.ts +4 -0
- package/lib/Shared/Models/TagsInputOptions.d.ts +91 -0
- package/lib/Shared/Models/TextAreaOptions.d.ts +60 -0
- package/lib/Shared/Models/TextBoxOptions.d.ts +70 -0
- package/lib/Shared/Models/ToggleslideOptions.d.ts +36 -0
- package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -0
- package/lib/Shared/Models/datePickerOptions.d.ts +65 -0
- package/lib/Shared/config/environment.d.ts +1 -0
- package/lib/Shared/services/ControlUtility.d.ts +23 -0
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +7 -0
- package/lib/Shared/services/validationErrorMassage.service.d.ts +13 -0
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +51 -0
- package/lib/controls/Calendar/Calendar.component.d.ts +40 -0
- package/lib/controls/CheckBox/CheckBox.component.d.ts +33 -0
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +41 -0
- package/lib/controls/DropdownList/DropdownList.component.d.ts +47 -0
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +49 -0
- package/lib/controls/Form/Form.component.d.ts +15 -0
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +44 -0
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +64 -0
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +52 -0
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +58 -0
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +59 -0
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +57 -0
- package/lib/controls/Paging/JwPagination.component.d.ts +24 -0
- package/lib/controls/Paging/Paging.component.d.ts +44 -0
- package/lib/controls/Phone/Phone.component.d.ts +37 -0
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +65 -0
- package/lib/controls/RadioButton/RadioButton.component.d.ts +31 -0
- package/lib/controls/TagsInput/TagsInput.component.d.ts +47 -0
- package/lib/controls/TextArea/TextArea.component.d.ts +41 -0
- package/lib/controls/TextBox/TextBox.component.d.ts +50 -0
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +26 -0
- package/lib/controls/bbsf-controls.module.d.ts +10 -0
- package/package.json +85 -0
- package/public-api.d.ts +66 -0
- package/src/lib/assets/Style.css +1149 -0
- package/src/lib/assets/i18n/ar.json +29 -0
- package/src/lib/assets/i18n/en.json +24 -0
- package/src/lib/assets/images/imagenotfound.png +0 -0
- package/src/lib/assets/images/uploadimg.png +0 -0
- package/src/lib/assets/images/userimg.png +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
4
|
+
import { PagingDTO } from '../../Shared/Models/PagingDTO';
|
|
5
|
+
import { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';
|
|
6
|
+
import { FilterType } from '../../Shared/Enums/FilterType';
|
|
7
|
+
import { RequestHandlerService } from '@bnsights/bbsf-utilities';
|
|
8
|
+
// tslint:disable-next-line: no-conflicting-lifecycle
|
|
9
|
+
export class PagingComponent {
|
|
10
|
+
constructor(http, router, onChangeService, requestHandlerService) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
this.router = router;
|
|
13
|
+
this.onChangeService = onChangeService;
|
|
14
|
+
this.requestHandlerService = requestHandlerService;
|
|
15
|
+
this.items = [];
|
|
16
|
+
this.result = [];
|
|
17
|
+
this.pagerConfig = null;
|
|
18
|
+
this.totalRow = 0;
|
|
19
|
+
this.pageSize = 10;
|
|
20
|
+
this.Pages = 0;
|
|
21
|
+
this.CurrentPage = 1;
|
|
22
|
+
this.ShowPageSizeOption = true;
|
|
23
|
+
this.ShowFirstAndLast = true;
|
|
24
|
+
this.hidePaginationWhenPageSizeEqualOne = true;
|
|
25
|
+
this.Sum = 0;
|
|
26
|
+
this.Throttle = 300;
|
|
27
|
+
this.ScrollDistance = 1;
|
|
28
|
+
this.ScrollUpDistance = 2;
|
|
29
|
+
this.direction = '';
|
|
30
|
+
this.IsFirstCall = true;
|
|
31
|
+
this.Items = new EventEmitter();
|
|
32
|
+
this.ReinitializePaging = () => {
|
|
33
|
+
this.IsFirstCall = true;
|
|
34
|
+
this.getItemList(1, true);
|
|
35
|
+
};
|
|
36
|
+
this.UpdatePaging = () => {
|
|
37
|
+
//this.IsFirstCall=true;
|
|
38
|
+
this.getItemList(this.CurrentPage);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
if (this.options.IsLoadMoreControl)
|
|
43
|
+
this.Sum = this.options.PageSize;
|
|
44
|
+
if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {
|
|
45
|
+
const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;
|
|
46
|
+
this.onChangeService.GetValue().subscribe((value) => {
|
|
47
|
+
let result = this.options.DropdownFiltersControlNames.filter((item) => item == value);
|
|
48
|
+
if (result.length > 0) {
|
|
49
|
+
this.IsFirstCall = true;
|
|
50
|
+
this.CurrentPage = 1;
|
|
51
|
+
this.getItemList(this.CurrentPage, true);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {
|
|
56
|
+
const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;
|
|
57
|
+
this.onChangeService.GetValue().subscribe((value) => {
|
|
58
|
+
let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value);
|
|
59
|
+
if (result.length > 0) {
|
|
60
|
+
this.IsFirstCall = true;
|
|
61
|
+
this.CurrentPage = 1;
|
|
62
|
+
this.getItemList(this.CurrentPage, true);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
this.IsFirstCall = true;
|
|
67
|
+
this.getItemList(this.CurrentPage, true);
|
|
68
|
+
}
|
|
69
|
+
ngAfterViewInit() {
|
|
70
|
+
if (this.options.OnClickFiltersControlNames != null && this.options.OnClickFiltersControlNames.length > 0) {
|
|
71
|
+
const OnClickFiltersControlNames = this.options.OnClickFiltersControlNames;
|
|
72
|
+
for (let index = 0; index < OnClickFiltersControlNames.length; index++) {
|
|
73
|
+
const OnClickFiltersControlName = OnClickFiltersControlNames[index];
|
|
74
|
+
document.getElementById(OnClickFiltersControlName).addEventListener("click", () => {
|
|
75
|
+
this.CurrentPage = 1;
|
|
76
|
+
this.IsFirstCall = true;
|
|
77
|
+
this.getItemList(this.CurrentPage, true);
|
|
78
|
+
}, false);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (this.options.OnKeyPressFiltersControlNames != null && this.options.OnKeyPressFiltersControlNames.length > 0) {
|
|
82
|
+
const OnKeyPressFiltersControlNames = this.options.OnKeyPressFiltersControlNames;
|
|
83
|
+
for (let index = 0; index < OnKeyPressFiltersControlNames.length; index++) {
|
|
84
|
+
const OnKeyPressFiltersControlName = OnKeyPressFiltersControlNames[index];
|
|
85
|
+
document.getElementById(OnKeyPressFiltersControlName).addEventListener("keypress", (e) => {
|
|
86
|
+
if (e.key == "Enter") {
|
|
87
|
+
this.CurrentPage = 1;
|
|
88
|
+
this.IsFirstCall = true;
|
|
89
|
+
this.getItemList(this.CurrentPage, true);
|
|
90
|
+
}
|
|
91
|
+
}, false);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (this.options.TypeaheadSearchControlNames != null && this.options.TypeaheadSearchControlNames.length > 0) {
|
|
95
|
+
const TypeaheadSearchControlNames = this.options.TypeaheadSearchControlNames;
|
|
96
|
+
for (let index = 0; index < TypeaheadSearchControlNames.length; index++) {
|
|
97
|
+
const TypeaheadSearchControlName = TypeaheadSearchControlNames[index];
|
|
98
|
+
document.getElementById(TypeaheadSearchControlName).addEventListener("keypress", (e) => {
|
|
99
|
+
if (e.key == "Enter") {
|
|
100
|
+
this.CurrentPage = 1;
|
|
101
|
+
this.IsFirstCall = true;
|
|
102
|
+
this.getItemList(this.CurrentPage, true);
|
|
103
|
+
}
|
|
104
|
+
}, false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
onDropDownChange(result) {
|
|
109
|
+
if (result) {
|
|
110
|
+
this.CurrentPage = 1;
|
|
111
|
+
this.IsFirstCall = true;
|
|
112
|
+
this.getItemList(this.CurrentPage, true);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
onChangePage(Page) {
|
|
116
|
+
if (Page == 0)
|
|
117
|
+
return;
|
|
118
|
+
if (Page > 0) {
|
|
119
|
+
if (this.IsFirstCall) {
|
|
120
|
+
this.IsFirstCall = false;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.CurrentPage = Page;
|
|
124
|
+
this.getItemList(Page);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
changePageSize(e) {
|
|
128
|
+
this.options.PageSize = e.target.value;
|
|
129
|
+
this.CurrentPage = 1;
|
|
130
|
+
this.IsFirstCall = true;
|
|
131
|
+
this.getItemList(this.CurrentPage, true);
|
|
132
|
+
}
|
|
133
|
+
onScrollDown() {
|
|
134
|
+
this.Sum += this.options.PageSize;
|
|
135
|
+
this.CurrentPage = 1;
|
|
136
|
+
this.IsFirstCall = true;
|
|
137
|
+
this.direction = 'down';
|
|
138
|
+
this.getItemList(this.CurrentPage, true);
|
|
139
|
+
}
|
|
140
|
+
getItemList(page, IsFilterUpdated = false) {
|
|
141
|
+
;
|
|
142
|
+
let pagingDTO = new PagingDTO();
|
|
143
|
+
let size = Number.parseInt(this.options.PageSize.toString());
|
|
144
|
+
if (this.options.IsLoadMoreControl)
|
|
145
|
+
pagingDTO.PageCount = this.Sum;
|
|
146
|
+
else
|
|
147
|
+
pagingDTO.PageCount = size;
|
|
148
|
+
pagingDTO.CurrentPageNumber = page;
|
|
149
|
+
pagingDTO.TotalCount = this.totalRow;
|
|
150
|
+
pagingDTO.IsFilterUpdated = IsFilterUpdated;
|
|
151
|
+
let params = new HttpParams();
|
|
152
|
+
if (this.options.Filters != null && this.options.Filters != []) {
|
|
153
|
+
for (let index = 0; index < this.options.Filters.length; index++) {
|
|
154
|
+
if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != "") {
|
|
155
|
+
const FormControlName = this.options.Filters[index].FormControlName;
|
|
156
|
+
let ControlValue = this.group.controls[FormControlName].value;
|
|
157
|
+
if (ControlValue != undefined && ControlValue != null) {
|
|
158
|
+
if (this.options.Filters[index].FilterType == FilterType.DatePicker) {
|
|
159
|
+
if (Array.isArray(ControlValue)) {
|
|
160
|
+
for (let element = 0; element < ControlValue.length; element++) {
|
|
161
|
+
const value = ControlValue[element];
|
|
162
|
+
params = params.append(this.options.Filters[index].ActionParameterName, value);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
params = params.append(this.options.Filters[index].ActionParameterName, ControlValue);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)
|
|
171
|
+
ControlValue = JSON.stringify(ControlValue);
|
|
172
|
+
params = params.append(this.options.Filters[index].ActionParameterName, ControlValue);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;
|
|
178
|
+
let ElementValue = document.querySelector(ElementjQuerySelector).value;
|
|
179
|
+
if (ElementValue != undefined && ElementValue != null)
|
|
180
|
+
params = params.append(this.options.Filters[index].ActionParameterName, ElementValue);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
this.requestHandlerService.post(this.options.ActionPostURL, pagingDTO, params)
|
|
185
|
+
.subscribe((responseData) => {
|
|
186
|
+
this.result = responseData.items;
|
|
187
|
+
this.Items.emit(this.result);
|
|
188
|
+
if (IsFilterUpdated) {
|
|
189
|
+
this.items = [];
|
|
190
|
+
this.totalRow = responseData.totalCount;
|
|
191
|
+
this.Pages = Math.ceil((this.totalRow / this.options.PageSize));
|
|
192
|
+
this.items = Array(this.totalRow);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
PagingComponent.decorators = [
|
|
198
|
+
{ type: Component, args: [{
|
|
199
|
+
selector: 'BBSF-Paging',
|
|
200
|
+
template: "<div class=\"b-control b-paging\" *ngIf=\"(result.length > 0)\">\r\n <div class=\"d-flex justify-content-between align-items-center\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <div class=\"b-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <div class=\"b-pages d-flex\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\" >\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"b-items ml-3\">\r\n <strong>{{totalRow}}</strong> Items in <strong> {{Pages}}</strong> Pages\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\" style=\"align-self:center; align-items: center; text-align: center;\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\"> Load More </button>\r\n </div>\r\n</div>\r\n",
|
|
201
|
+
styles: [".ngx-pager-container{text-align:center;padding:25px 0 0}.ngx-pager-container li{display:inline-block;margin:0 4px}.ngx-pager-container li a{display:block;width:26px;height:26px;border:1px solid #707070;text-align:center;color:#3e4e59;font-size:14px;line-height:24px;border-radius:5px;text-decoration:none}.ngx-pager-container li a:hover{color:#fff;background:#0a0e03}.ngx-pager-container li.invisible{display:none}.ngx-pager-container li.active{background:#0a0e03;border-radius:5px}.ngx-pager-container li.active a{border:none;color:#fff}\n"]
|
|
202
|
+
},] }
|
|
203
|
+
];
|
|
204
|
+
PagingComponent.ctorParameters = () => [
|
|
205
|
+
{ type: HttpClient },
|
|
206
|
+
{ type: Router },
|
|
207
|
+
{ type: OnPagingFiltersChangeService },
|
|
208
|
+
{ type: RequestHandlerService }
|
|
209
|
+
];
|
|
210
|
+
PagingComponent.propDecorators = {
|
|
211
|
+
Items: [{ type: Output }],
|
|
212
|
+
options: [{ type: Input }],
|
|
213
|
+
group: [{ type: Input }]
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFPLDBCQUEwQixDQUFDO0FBRWxFLHFEQUFxRDtBQU1yRCxNQUFNLE9BQU8sZUFBZTtJQXlCMUIsWUFBb0IsSUFBZ0IsRUFBVSxNQUFjLEVBQVUsZUFBNkMsRUFBUyxxQkFBMkM7UUFBbkosU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7UUFBUywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBeEJ2SyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixnQkFBVyxHQUFRLElBQUksQ0FBQztRQUN4QixhQUFRLEdBQVEsQ0FBQyxDQUFDO1FBQ2xCLGFBQVEsR0FBUSxFQUFFLENBQUE7UUFDbEIsVUFBSyxHQUFRLENBQUMsQ0FBQTtRQUNkLGdCQUFXLEdBQVEsQ0FBQyxDQUFBO1FBQ3BCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsdUNBQWtDLEdBQUcsSUFBSSxDQUFBO1FBQ3pDLFFBQUcsR0FBRyxDQUFDLENBQUM7UUFDUixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2YsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixnQkFBVyxHQUFTLElBQUksQ0FBQztRQUNmLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBMkw1Qyx1QkFBa0IsR0FBQyxHQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFBO1FBRUQsaUJBQVksR0FBQyxHQUFFLEVBQUU7WUFDZix3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFBO0lBM0xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQjtZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNHLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQztZQUM3RSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNsRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFBO2dCQUNyRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNyQixJQUFJLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNIO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkksTUFBTSx1Q0FBdUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDO1lBQ3JHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUE7Z0JBQ2pHLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUMsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELGVBQWU7UUFFYixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RyxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7WUFDM0UsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEUsTUFBTSx5QkFBeUIsR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEUsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ2hGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDWDtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0csTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1lBQ2pGLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pFLE1BQU0sNEJBQTRCLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdkYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUMsSUFBSSxDQUFDO3dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQzFDO2dCQUNILENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNYO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzRyxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUM7WUFDN0UsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkUsTUFBTSwwQkFBMEIsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEUsUUFBUSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyRixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFO3dCQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDMUM7Z0JBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBRVg7U0FDRjtJQUVILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFNO1FBQ3JCLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFJO1FBRWYsSUFBRyxJQUFJLElBQUUsQ0FBQztZQUNSLE9BQU87UUFFVCxJQUFJLElBQUksR0FBQyxDQUFDLEVBQ1Y7WUFDQSxJQUFHLElBQUksQ0FBQyxXQUFXLEVBQ25CO2dCQUNJLElBQUksQ0FBQyxXQUFXLEdBQUMsS0FBSyxDQUFDO2dCQUN2QixPQUFPO2FBQ1Y7WUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFLRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQTtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQTtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFM0MsQ0FBQztJQUlELFdBQVcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxHQUFHLEtBQUs7UUFDdEMsQ0FBQztRQUNGLElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7WUFDaEMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDOztZQUUvQixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM3QixTQUFTLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxTQUFTLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUM1QyxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUM5RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNoRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRTtvQkFDNUcsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDO29CQUNwRSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzlELElBQUksWUFBWSxJQUFJLFNBQVMsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFO3dCQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFOzRCQUNuRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0NBQy9CLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFO29DQUM5RCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7b0NBQ3BDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO2lDQUNoRjs2QkFDRjtpQ0FDSTtnQ0FDSCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQzs2QkFDdkY7eUJBQ0Y7NkJBQ0k7NEJBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLG1CQUFtQjtnQ0FDMUUsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQzlDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxDQUFDO3lCQUN2RjtxQkFDRjtpQkFDRjtxQkFDSTtvQkFDSCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQztvQkFDekUsSUFBSSxZQUFZLEdBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBc0IsQ0FBQyxLQUFLLENBQUM7b0JBQzdGLElBQUksWUFBWSxJQUFJLFNBQVMsSUFBSSxZQUFZLElBQUksSUFBSTt3QkFDbkQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7aUJBQ3pGO2FBQ0Y7U0FDRjtRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFDLE1BQU0sQ0FBRTthQUM3RSxTQUFTLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixJQUFJLGVBQWUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBak5GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsb3ZEQUFzQzs7YUFFdkM7OztZQWZRLFVBQVU7WUFEVixNQUFNO1lBT04sNEJBQTRCO1lBRTVCLHFCQUFxQjs7O29CQTJCM0IsTUFBTTtzQkFDTixLQUFLO29CQUVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQYWdpbmdEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ0RUTyc7XHJcbmltcG9ydCB7IFBhZ2luZ09wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ09wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgUmVzcG9uc2VDb250ZW50VHlwZSwgSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvRmlsdGVyVHlwZSc7XHJcbmltcG9ydCB7IFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25mbGljdGluZy1saWZlY3ljbGVcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLVBhZ2luZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL1BhZ2luZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vUGFnaW5nLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaXRlbXMgPSBbXTtcclxuICBwYWdlT2ZJdGVtczogQXJyYXk8YW55PjtcclxuICByZXN1bHQ6IGFueSA9IFtdO1xyXG4gIHBhZ2VyQ29uZmlnOiBhbnkgPSBudWxsO1xyXG4gIHRvdGFsUm93OiBhbnkgPSAwO1xyXG4gIHBhZ2VTaXplOiBhbnkgPSAxMFxyXG4gIFBhZ2VzOiBhbnkgPSAwXHJcbiAgQ3VycmVudFBhZ2U6IGFueSA9IDFcclxuICBTaG93UGFnZVNpemVPcHRpb24gPSB0cnVlO1xyXG4gIFNob3dGaXJzdEFuZExhc3QgPSB0cnVlO1xyXG4gIGhpZGVQYWdpbmF0aW9uV2hlblBhZ2VTaXplRXF1YWxPbmUgPSB0cnVlXHJcbiAgU3VtID0gMDtcclxuICBUaHJvdHRsZSA9IDMwMDtcclxuICBTY3JvbGxEaXN0YW5jZSA9IDE7XHJcbiAgU2Nyb2xsVXBEaXN0YW5jZSA9IDI7XHJcbiAgZGlyZWN0aW9uID0gJyc7XHJcbiAgSGVhZGVyczpIdHRwSGVhZGVycztcclxuICBJc0ZpcnN0Q2FsbDpib29sZWFuPXRydWU7XHJcbiAgQE91dHB1dCgpIEl0ZW1zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBQYWdpbmdPcHRpb25zO1xyXG5cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIG9uQ2hhbmdlU2VydmljZTogT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSxwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTpSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNMb2FkTW9yZUNvbnRyb2wpXHJcbiAgICB0aGlzLlN1bSA9IHRoaXMub3B0aW9ucy5QYWdlU2l6ZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBEcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT0gdmFsdWUpXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IEJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5Cb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkdldFZhbHVlKCkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PSB2YWx1ZSlcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgICAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZSA9IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZSA9IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLlR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5UeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWUgPSBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Ecm9wRG93bkNoYW5nZShyZXN1bHQpIHtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUGFnZShQYWdlKSB7XHJcbiAgXHJcbiAgICBpZihQYWdlPT0wKVxyXG4gICAgICByZXR1cm47XHJcbiAgICAgXHJcbiAgICBpZiAoUGFnZT4wKSBcclxuICAgIHsgICAgICAgIFxyXG4gICAgaWYodGhpcy5Jc0ZpcnN0Q2FsbClcclxuICAgIHtcclxuICAgICAgICB0aGlzLklzRmlyc3RDYWxsPWZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH0gXHJcbiAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gUGFnZTtcclxuICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VQYWdlU2l6ZShlKSB7XHJcbiAgICAgXHJcbiAgICB0aGlzLm9wdGlvbnMuUGFnZVNpemUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbD10cnVlO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIG9uU2Nyb2xsRG93bigpIHtcclxuICAgIHRoaXMuU3VtICs9IHRoaXMub3B0aW9ucy5QYWdlU2l6ZVxyXG4gICAgdGhpcy5DdXJyZW50UGFnZSA9IDFcclxuICAgIHRoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgIHRoaXMuZGlyZWN0aW9uID0gJ2Rvd24nO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldEl0ZW1MaXN0KHBhZ2UsIElzRmlsdGVyVXBkYXRlZCA9IGZhbHNlKSB7XHJcbiAgICAgO1xyXG4gICAgbGV0IHBhZ2luZ0RUTyA9IG5ldyBQYWdpbmdEVE8oKTtcclxuICAgIGxldCBzaXplID0gTnVtYmVyLnBhcnNlSW50KHRoaXMub3B0aW9ucy5QYWdlU2l6ZS50b1N0cmluZygpKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNMb2FkTW9yZUNvbnRyb2wpXHJcbiAgICAgIHBhZ2luZ0RUTy5QYWdlQ291bnQgPSB0aGlzLlN1bTtcclxuICAgIGVsc2VcclxuICAgICAgcGFnaW5nRFRPLlBhZ2VDb3VudCA9IHNpemU7XHJcbiAgICBwYWdpbmdEVE8uQ3VycmVudFBhZ2VOdW1iZXIgPSBwYWdlO1xyXG4gICAgcGFnaW5nRFRPLlRvdGFsQ291bnQgPSB0aGlzLnRvdGFsUm93O1xyXG4gICAgcGFnaW5nRFRPLklzRmlsdGVyVXBkYXRlZCA9IElzRmlsdGVyVXBkYXRlZDtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gW10pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBjb25zdCBGb3JtQ29udHJvbE5hbWUgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgICAgICAgbGV0IENvbnRyb2xWYWx1ZSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbRm9ybUNvbnRyb2xOYW1lXS52YWx1ZTtcclxuICAgICAgICAgIGlmIChDb250cm9sVmFsdWUgIT0gdW5kZWZpbmVkICYmIENvbnRyb2xWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRmlsdGVyVHlwZSA9PSBGaWx0ZXJUeXBlLkRhdGVQaWNrZXIpIHtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShDb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50ID0gMDsgZWxlbWVudCA8IENvbnRyb2xWYWx1ZS5sZW5ndGg7IGVsZW1lbnQrKykge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IENvbnRyb2xWYWx1ZVtlbGVtZW50XTtcclxuICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZSwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWUsIENvbnRyb2xWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRmlsdGVyVHlwZSA9PSBGaWx0ZXJUeXBlLkF1dG9jb21wbGV0ZVRleHRCb3gpXHJcbiAgICAgICAgICAgICAgICBDb250cm9sVmFsdWUgPSBKU09OLnN0cmluZ2lmeShDb250cm9sVmFsdWUpO1xyXG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWUsIENvbnRyb2xWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBFbGVtZW50alF1ZXJ5U2VsZWN0b3IgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0ualF1ZXJ5U2VsZWN0b3I7XHJcbiAgICAgICAgICBsZXQgRWxlbWVudFZhbHVlID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoRWxlbWVudGpRdWVyeVNlbGVjdG9yKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgICAgICAgIGlmIChFbGVtZW50VmFsdWUgIT0gdW5kZWZpbmVkICYmIEVsZW1lbnRWYWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lLCBFbGVtZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLnBvc3QodGhpcy5vcHRpb25zLkFjdGlvblBvc3RVUkwsIHBhZ2luZ0RUTyxwYXJhbXMgKVxyXG4gICAgLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3BvbnNlRGF0YS5pdGVtcztcclxuICAgICAgICB0aGlzLkl0ZW1zLmVtaXQodGhpcy5yZXN1bHQpO1xyXG4gICAgICAgIGlmIChJc0ZpbHRlclVwZGF0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgICAgIHRoaXMudG90YWxSb3cgPSByZXNwb25zZURhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgIHRoaXMuUGFnZXMgPSBNYXRoLmNlaWwoKHRoaXMudG90YWxSb3cgLyB0aGlzLm9wdGlvbnMuUGFnZVNpemUpKTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBBcnJheSh0aGlzLnRvdGFsUm93KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVpbml0aWFsaXplUGFnaW5nPSgpPT57XHJcbiAgICB0aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KDEsIHRydWUpO1xyXG4gIH1cclxuIFxyXG4gIFVwZGF0ZVBhZ2luZz0oKT0+e1xyXG4gICAgLy90aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UpO1xyXG4gIH1cclxuIFxyXG5cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
3
|
+
import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
|
|
4
|
+
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
5
|
+
import { SearchCountryField } from 'ngx-intl-tel-input';
|
|
6
|
+
import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
|
|
7
|
+
export class PhoneComponent {
|
|
8
|
+
// tslint:disable-next-line: max-line-length
|
|
9
|
+
constructor(ErrorHandler, controlUtility, controlContainer, PhoneControlHost, UtilityService, controlValidationService) {
|
|
10
|
+
this.ErrorHandler = ErrorHandler;
|
|
11
|
+
this.controlUtility = controlUtility;
|
|
12
|
+
this.controlContainer = controlContainer;
|
|
13
|
+
this.PhoneControlHost = PhoneControlHost;
|
|
14
|
+
this.UtilityService = UtilityService;
|
|
15
|
+
this.controlValidationService = controlValidationService;
|
|
16
|
+
this.OnChange = new EventEmitter();
|
|
17
|
+
this.SearchCountryField = SearchCountryField;
|
|
18
|
+
// TooltipLabel = TooltipLabel;
|
|
19
|
+
this.markAllAsTouched = false;
|
|
20
|
+
this.validationRules = [];
|
|
21
|
+
this.validationRulesasync = [];
|
|
22
|
+
this.separateDialCode = false;
|
|
23
|
+
this.resetError = () => {
|
|
24
|
+
this.controlValidationService.RemoveGlobalError();
|
|
25
|
+
};
|
|
26
|
+
//External Method
|
|
27
|
+
this.RemoveRequiredValidation = () => {
|
|
28
|
+
this.controlUtility.RemoveRequiredValidation(this.PhoneFormControl, this.validationRules, this.options);
|
|
29
|
+
};
|
|
30
|
+
//External Method
|
|
31
|
+
this.AddRequiredValidation = () => {
|
|
32
|
+
this.controlUtility.AddRequiredValidation(this.PhoneFormControl, this.validationRules, this.options);
|
|
33
|
+
};
|
|
34
|
+
//External Method
|
|
35
|
+
this.RemoveCustomValidation = (CustomValidation) => {
|
|
36
|
+
this.controlUtility.RemoveCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation);
|
|
37
|
+
};
|
|
38
|
+
//External Method
|
|
39
|
+
this.AddCustomValidation = (CustomValidation) => {
|
|
40
|
+
this.controlUtility.AddCustomValidation(this.PhoneFormControl, this.validationRules, CustomValidation);
|
|
41
|
+
};
|
|
42
|
+
//External Method
|
|
43
|
+
this.IsValid = () => {
|
|
44
|
+
this.controlUtility.IsValid(this.PhoneFormControl);
|
|
45
|
+
};
|
|
46
|
+
PhoneComponent.controlContainerstatic = this.controlContainer;
|
|
47
|
+
}
|
|
48
|
+
ngOnInit() {
|
|
49
|
+
this.controlValidationService.isCreatedBefor = false;
|
|
50
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
51
|
+
this.PhoneFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
52
|
+
if (this.options.IsRequired) {
|
|
53
|
+
this.validationRules.push(Validators.required);
|
|
54
|
+
}
|
|
55
|
+
this.PhoneFormControl.setValue(this.options.Value);
|
|
56
|
+
if (this.options.CustomValidation.length > 0) {
|
|
57
|
+
let Validations = this.options.CustomValidation;
|
|
58
|
+
for (let index = 0; index < Validations.length; index++) {
|
|
59
|
+
const Validation = Validations[index];
|
|
60
|
+
this.validationRules.push(Validation.functionBody);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
64
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
65
|
+
this.PhoneFormControl.setValidators(this.validationRules);
|
|
66
|
+
this.PhoneFormControl.setAsyncValidators(this.validationRulesasync);
|
|
67
|
+
if (this.options.IsDisabled) {
|
|
68
|
+
this.PhoneFormControl.disable();
|
|
69
|
+
}
|
|
70
|
+
this.PhoneControlHost.ngSubmit.subscribe((value) => {
|
|
71
|
+
this.group.markAllAsTouched();
|
|
72
|
+
this.markAllAsTouched = true;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
ngAfterViewInit() {
|
|
76
|
+
this.controlUtility.setAttributeForControl(this.options);
|
|
77
|
+
}
|
|
78
|
+
showGlobalError() {
|
|
79
|
+
this.controlUtility.showGlobalError();
|
|
80
|
+
}
|
|
81
|
+
getErrorValidation(ErrorList) {
|
|
82
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
83
|
+
this.showGlobalError();
|
|
84
|
+
this.markAllAsTouched = false;
|
|
85
|
+
}
|
|
86
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
87
|
+
}
|
|
88
|
+
onValueChanged() {
|
|
89
|
+
let Number = this.PhoneFormControl.value.internationalNumber;
|
|
90
|
+
this.OnChange.emit(Number.trim());
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
PhoneComponent.controlContainerstatic = null;
|
|
94
|
+
PhoneComponent.decorators = [
|
|
95
|
+
{ type: Component, args: [{
|
|
96
|
+
selector: 'BBSF-Phone',
|
|
97
|
+
template: "<div class=\"b-control b-phone\">\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\n [hidden]=\"options.HideLabel\">\n {{options.LabelValue}}\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\n aria-required=\"true\">*</span>\n </label>\n\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\n <ngx-intl-tel-input dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\n [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\" [searchCountryFlag]=\"options.AllowSearch\"\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\n [selectFirstCountry]=\"options.SelectFirstCountry\" [selectedCountryISO]=\"options.SelectedCountryISO\"\n \t\t\t\t[separateDialCode]=\"separateDialCode\"\n [maxLength]=\"15\" \n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\n (change)=\"onValueChanged()\"\n [class.is-invalid]=\"PhoneFormControl.invalid && PhoneFormControl.touched\" aria-invalid=\"true\">\n </ngx-intl-tel-input>\n\n <div class=\"text-danger Required-text\"\n *ngIf=\"(PhoneFormControl.invalid && PhoneFormControl.touched)\">\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\n </div>\n\n <div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\n </div>\n\n <!-- <div *ngIf=\"PhoneFormControl.valid\">{{resetError()}}</div> -->\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\n\n\n\n </div>\n\n </div>\n</div>",
|
|
98
|
+
styles: [".iti{width:100%}\n"]
|
|
99
|
+
},] }
|
|
100
|
+
];
|
|
101
|
+
PhoneComponent.ctorParameters = () => [
|
|
102
|
+
{ type: ErrorMassageValidation },
|
|
103
|
+
{ type: ControlUtility },
|
|
104
|
+
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
105
|
+
{ type: FormGroupDirective },
|
|
106
|
+
{ type: UtilityService },
|
|
107
|
+
{ type: ControlValidationService }
|
|
108
|
+
];
|
|
109
|
+
PhoneComponent.propDecorators = {
|
|
110
|
+
group: [{ type: Input }],
|
|
111
|
+
options: [{ type: Input }],
|
|
112
|
+
OnChange: [{ type: Output }]
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1Bob25lL1Bob25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBOEIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUosT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTywwQkFBMEIsQ0FBQztBQU9yRixNQUFNLE9BQU8sY0FBYztJQUl6Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsWUFBb0MsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyxnQkFBb0MsRUFBUyxjQUE2QixFQUFTLHdCQUFpRDtRQUFqUixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFTLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFLM1IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsK0JBQStCO1FBQy9CLHFCQUFn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QkFBeUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLE1BQU0sR0FBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLG1CQUE2QixDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O0FBN0VNLHFDQUFzQixHQUFHLElBQUksQ0FBQzs7WUFSdEMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0Qix3dkVBQXFDOzthQUV0Qzs7O1lBVlEsc0JBQXNCO1lBQ3RCLGNBQWM7WUFGdUMsZ0JBQWdCLHVCQWlCdUIsUUFBUTtZQWpCN0Isa0JBQWtCO1lBSy9ELGNBQWM7WUFBeEMsd0JBQXdCOzs7b0JBZTlCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgUGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9QaG9uZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICduZ3gtaW50bC10ZWwtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAgJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtUGhvbmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9QaG9uZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vUGhvbmUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGhvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBFcnJvckhhbmRsZXI6IEVycm9yTWFzc2FnZVZhbGlkYXRpb24sIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBQaG9uZUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUscHJpdmF0ZSBVdGlsaXR5U2VydmljZTpVdGlsaXR5U2VydmljZSxwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTpDb250cm9sVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgIFBob25lQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUGhvbmVPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBQaG9uZUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgU2VhcmNoQ291bnRyeUZpZWxkID0gU2VhcmNoQ291bnRyeUZpZWxkO1xyXG4gIC8vIFRvb2x0aXBMYWJlbCA9IFRvb2x0aXBMYWJlbDtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2VcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gICAgc2VwYXJhdGVEaWFsQ29kZSA9IGZhbHNlO1xyXG4gIFxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLlBob25lRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5QaG9uZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpO1xyXG5cclxuICAgIHRoaXMuUGhvbmVGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuUGhvbmVGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5QaG9uZUZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLlBob25lQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIGxldCBOdW1iZXI9IHRoaXMuUGhvbmVGb3JtQ29udHJvbC52YWx1ZS5pbnRlcm5hdGlvbmFsTnVtYmVyIGFzIHN0cmluZztcclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChOdW1iZXIudHJpbSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlBob25lRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuUGhvbmVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuUGhvbmVGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5QaG9uZUZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLlBob25lRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
|