gamma-app-controller 1.0.1
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/esm2020/gamma-app-controller.mjs +2 -0
- package/esm2020/lib/application-controller/app.http.service.mjs +24 -0
- package/esm2020/lib/application-controller/application-content.service.mjs +482 -0
- package/esm2020/lib/application-controller/application-controller.module.mjs +324 -0
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +321 -0
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +390 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +349 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.mjs +148 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +167 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.mjs +17 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.mjs +57 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +409 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.mjs +61 -0
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +186 -0
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +134 -0
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +559 -0
- package/esm2020/lib/application-controller/common-header/common-header.component.mjs +33 -0
- package/esm2020/lib/application-controller/common.mjs +1207 -0
- package/esm2020/lib/application-controller/environment.mjs +26 -0
- package/esm2020/lib/application-controller/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/application-controller/kpi-service.mjs +108 -0
- package/esm2020/lib/application-controller/loading/loading.component.mjs +16 -0
- package/esm2020/lib/application-controller/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/application-controller/moment-helper.mjs +4 -0
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +977 -0
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +172 -0
- package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs +227 -0
- package/esm2020/lib/application-controller/page-templates/dynamic-route-service.mjs +22 -0
- package/esm2020/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +118 -0
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +181 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +71 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +266 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +159 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +144 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +20 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +168 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +74 -0
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +118 -0
- package/esm2020/lib/application-controller/shared/api.service.mjs +117 -0
- package/esm2020/lib/application-controller/shared/app-title/app-title.component.mjs +67 -0
- package/esm2020/lib/application-controller/shared/gamam-widget/gamam-widget.component.mjs +37 -0
- package/esm2020/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +229 -0
- package/esm2020/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +144 -0
- package/esm2020/lib/application-controller/shared/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/application-controller/shared/loader/loader.component.mjs +14 -0
- package/esm2020/lib/application-controller/shared/loading/loading.component.mjs +16 -0
- package/esm2020/lib/application-controller/shared/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/application-controller/shared/safeHtmlPipe.mjs +20 -0
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +294 -0
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +287 -0
- package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +255 -0
- package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +269 -0
- package/esm2020/lib/gamma-app-controller.component.mjs +16 -0
- package/esm2020/lib/gamma-app-controller.module.mjs +43 -0
- package/esm2020/lib/gamma-app-controller.service.mjs +20 -0
- package/esm2020/lib/icons.module.mjs +23 -0
- package/esm2020/public-api.mjs +49 -0
- package/fesm2015/gamma-app-controller.mjs +10250 -0
- package/fesm2015/gamma-app-controller.mjs.map +1 -0
- package/fesm2020/gamma-app-controller.mjs +10248 -0
- package/fesm2020/gamma-app-controller.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/lib/application-controller/app.http.service.d.ts +15 -0
- package/lib/application-controller/application-content.service.d.ts +79 -0
- package/lib/application-controller/application-controller.module.d.ts +51 -0
- package/lib/application-controller/application-dataset-call.service.d.ts +20 -0
- package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +55 -0
- package/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.d.ts +121 -0
- package/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.d.ts +38 -0
- package/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.d.ts +42 -0
- package/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.d.ts +7 -0
- package/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.d.ts +21 -0
- package/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.d.ts +62 -0
- package/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.d.ts +22 -0
- package/lib/application-controller/application-filter/application-filter.component.d.ts +36 -0
- package/lib/application-controller/application-view-components/application-views/application-views.component.d.ts +47 -0
- package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +73 -0
- package/lib/application-controller/common-header/common-header.component.d.ts +15 -0
- package/lib/application-controller/common.d.ts +148 -0
- package/lib/application-controller/environment.d.ts +25 -0
- package/lib/application-controller/kpi-comon-service.d.ts +14 -0
- package/lib/application-controller/kpi-service.d.ts +6 -0
- package/lib/application-controller/loading/loading.component.d.ts +9 -0
- package/lib/application-controller/loading/loadingModule.d.ts +10 -0
- package/lib/application-controller/moment-helper.d.ts +3 -0
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +188 -0
- package/lib/application-controller/page-controller/page-controller/page-controller.component.d.ts +47 -0
- package/lib/application-controller/page-templates/cdr-config/cdr-config.component.d.ts +44 -0
- package/lib/application-controller/page-templates/dynamic-route-service.d.ts +8 -0
- package/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.d.ts +33 -0
- package/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.d.ts +43 -0
- package/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +20 -0
- package/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.d.ts +51 -0
- package/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +32 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +31 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.d.ts +10 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +26 -0
- package/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +21 -0
- package/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.d.ts +29 -0
- package/lib/application-controller/shared/api.service.d.ts +26 -0
- package/lib/application-controller/shared/app-title/app-title.component.d.ts +28 -0
- package/lib/application-controller/shared/gamam-widget/gamam-widget.component.d.ts +20 -0
- package/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.d.ts +45 -0
- package/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.d.ts +32 -0
- package/lib/application-controller/shared/kpi-comon-service.d.ts +14 -0
- package/lib/application-controller/shared/loader/loader.component.d.ts +8 -0
- package/lib/application-controller/shared/loading/loading.component.d.ts +9 -0
- package/lib/application-controller/shared/loading/loadingModule.d.ts +10 -0
- package/lib/application-controller/shared/safeHtmlPipe.d.ts +10 -0
- package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +83 -0
- package/lib/application-controller/support-components/dash-table/dash-table.component.d.ts +67 -0
- package/lib/application-controller/support-components/geo-map/geo-map.component.d.ts +70 -0
- package/lib/application-controller/support-components/table-with-bar/table-with-bar.component.d.ts +70 -0
- package/lib/gamma-app-controller.component.d.ts +5 -0
- package/lib/gamma-app-controller.module.d.ts +10 -0
- package/lib/gamma-app-controller.service.d.ts +7 -0
- package/lib/icons.module.d.ts +11 -0
- package/package.json +33 -0
- package/public-api.d.ts +48 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { confirm } from 'devextreme/ui/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../application-content.service";
|
|
5
|
+
import * as i2 from "ngx-toastr";
|
|
6
|
+
import * as i3 from "../../common";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "devextreme-angular/core";
|
|
9
|
+
import * as i6 from "devextreme-angular/ui/nested";
|
|
10
|
+
import * as i7 from "devextreme-angular/ui/check-box";
|
|
11
|
+
import * as i8 from "devextreme-angular/ui/data-grid";
|
|
12
|
+
import * as i9 from "devextreme-angular/ui/select-box";
|
|
13
|
+
import * as i10 from "devextreme-angular/ui/tag-box";
|
|
14
|
+
import * as i11 from "devextreme-angular/ui/text-box";
|
|
15
|
+
import * as i12 from "@angular/forms";
|
|
16
|
+
import * as i13 from "@angular/material/icon";
|
|
17
|
+
import * as i14 from "../../shared/loading/loading.component";
|
|
18
|
+
export class CdrConfigComponent {
|
|
19
|
+
constructor(service, toastr, commonService) {
|
|
20
|
+
this.service = service;
|
|
21
|
+
this.toastr = toastr;
|
|
22
|
+
this.commonService = commonService;
|
|
23
|
+
this.availableTableDatasource = [];
|
|
24
|
+
this.submitObject = {};
|
|
25
|
+
this.selectedColumnDatasource = [];
|
|
26
|
+
this.kpi_enrichment_name = [];
|
|
27
|
+
this.CdrBrowserAllowedDatasource = [];
|
|
28
|
+
this.selectedColumnName = [];
|
|
29
|
+
this.isCdrConfigCreate = false;
|
|
30
|
+
this.isEditDatasource = false;
|
|
31
|
+
this.filter_type = ['date', 'string', 'timestamp', 'int', 'double', 'boolean'];
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.getAvailableTabeName();
|
|
35
|
+
this.getFilterDataSet();
|
|
36
|
+
this.getCdrBrowserAllowedOperation();
|
|
37
|
+
this.searchDatasourceDetails();
|
|
38
|
+
}
|
|
39
|
+
getFilterDataSet() {
|
|
40
|
+
this.kpi_enrichment_name = [];
|
|
41
|
+
this.service.getKPIReferenceEndPoints().subscribe({
|
|
42
|
+
next: (data) => {
|
|
43
|
+
data.forEach(element => {
|
|
44
|
+
this.kpi_enrichment_name.push(element);
|
|
45
|
+
});
|
|
46
|
+
}, error: (err) => {
|
|
47
|
+
this.toastr.error("Unexpected Server Exception. Please contact System Admin.", "CDR Config");
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
searchDatasourceDetails() {
|
|
52
|
+
this.cdrTableDataSource = {};
|
|
53
|
+
this.allTablsDropDownData = [];
|
|
54
|
+
this.service.getSearchDatasourceDetails().subscribe({
|
|
55
|
+
next: (data) => {
|
|
56
|
+
this.cdrTableDataSource = data;
|
|
57
|
+
this.allTablsDropDownData = Object.keys(data).map(key => ({
|
|
58
|
+
name: key,
|
|
59
|
+
...data[key]
|
|
60
|
+
}));
|
|
61
|
+
}, error: (err) => {
|
|
62
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
getCdrBrowserAllowedOperation() {
|
|
67
|
+
this.service.getCdrBrowserOperations().subscribe(data => {
|
|
68
|
+
this.CdrBrowserAllowedDatasource = data;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
getAvailableTabeName() {
|
|
72
|
+
this.availableTableDatasource = [];
|
|
73
|
+
this.service.getAvailableTables().subscribe({
|
|
74
|
+
next: (data) => {
|
|
75
|
+
this.availableTableDatasource = data;
|
|
76
|
+
}, error: (err) => {
|
|
77
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
getSelectedTableMetaData(e) {
|
|
82
|
+
if (e.value) {
|
|
83
|
+
this.isProceed = false;
|
|
84
|
+
this.isTableSelected = false;
|
|
85
|
+
let tableName = e.value;
|
|
86
|
+
this.listOfColumns = [];
|
|
87
|
+
this.service.getTableMetadata(tableName).subscribe({
|
|
88
|
+
next: (data) => {
|
|
89
|
+
this.isTableSelected = true;
|
|
90
|
+
this.listOfColumns = data;
|
|
91
|
+
}, error: (err) => {
|
|
92
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
getSelectedColumnSource(e) {
|
|
98
|
+
this.selectedColumnDatasource = e.value;
|
|
99
|
+
}
|
|
100
|
+
getProcessForConfig() {
|
|
101
|
+
const filteredColumns = this.listOfColumns.filter(column => this.selectedColumnDatasource.includes(column.fieldName));
|
|
102
|
+
const columnDefList = [];
|
|
103
|
+
filteredColumns.forEach(element => {
|
|
104
|
+
const existingColumn = (this.submitObject['columnDefList']) ? this.submitObject['columnDefList'].find(col => col.columnName === element.fieldName) : false;
|
|
105
|
+
if (!existingColumn) {
|
|
106
|
+
let obj = {
|
|
107
|
+
"columnName": element.fieldName,
|
|
108
|
+
"containerType": "",
|
|
109
|
+
"datatype": "",
|
|
110
|
+
"allowedOperations": [],
|
|
111
|
+
"lookupName": ""
|
|
112
|
+
};
|
|
113
|
+
columnDefList.push(obj);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (this.submitObject['columnDefList'] && this.submitObject['columnDefList'].length !== 0) {
|
|
117
|
+
this.submitObject['columnDefList'] = [...this.submitObject['columnDefList'], ...columnDefList];
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.submitObject['columnDefList'] = columnDefList;
|
|
121
|
+
}
|
|
122
|
+
this.isProceed = true;
|
|
123
|
+
}
|
|
124
|
+
submitDatasource() {
|
|
125
|
+
this.loadingModal = true;
|
|
126
|
+
this.service.saveDatasourceConfig(this.submitObject).subscribe({
|
|
127
|
+
next: (data) => {
|
|
128
|
+
this.submitObject['columnDefList'] = [];
|
|
129
|
+
this.submitObject['active'] = false;
|
|
130
|
+
this.submitObject['endDateFunction'] = "";
|
|
131
|
+
this.submitObject['startDateFunction'] = "";
|
|
132
|
+
this.submitObject['tableName'] = "";
|
|
133
|
+
this.isProceed = false;
|
|
134
|
+
this.loadingModal = false;
|
|
135
|
+
this.isTableSelected = false;
|
|
136
|
+
this.isEditDatasource = false;
|
|
137
|
+
this.isCdrConfigCreate = false;
|
|
138
|
+
this.searchDatasourceDetails();
|
|
139
|
+
this.toastr.success('Config Created Successfully');
|
|
140
|
+
}, error: (err) => {
|
|
141
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
142
|
+
this.loadingModal = false;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
editCdrConfigConfig(data) {
|
|
147
|
+
this.isEditDatasource = true;
|
|
148
|
+
this.loadingModal = true;
|
|
149
|
+
this.isCdrConfigCreate = true;
|
|
150
|
+
this.submitObject = data;
|
|
151
|
+
this.service.getTableMetadata(this.submitObject.tableName).subscribe({
|
|
152
|
+
next: (colData) => {
|
|
153
|
+
this.isTableSelected = true;
|
|
154
|
+
this.listOfColumns = colData;
|
|
155
|
+
this.selectedColumnName = this.submitObject.columnDefList.map(item => item.columnName);
|
|
156
|
+
this.isProceed = true;
|
|
157
|
+
this.loadingModal = false;
|
|
158
|
+
}, error: (err) => {
|
|
159
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
updateDatasource() {
|
|
164
|
+
this.loadingModal = true;
|
|
165
|
+
this.service.editDatasourceConfig(this.submitObject).subscribe({
|
|
166
|
+
next: (data) => {
|
|
167
|
+
this.submitObject['columnDefList'] = [];
|
|
168
|
+
this.submitObject['active'] = false;
|
|
169
|
+
this.submitObject['endDateFunction'] = "";
|
|
170
|
+
this.submitObject['startDateFunction'] = "";
|
|
171
|
+
this.submitObject['tableName'] = "";
|
|
172
|
+
this.isProceed = false;
|
|
173
|
+
this.loadingModal = false;
|
|
174
|
+
this.isTableSelected = false;
|
|
175
|
+
this.isEditDatasource = false;
|
|
176
|
+
this.isCdrConfigCreate = false;
|
|
177
|
+
this.searchDatasourceDetails();
|
|
178
|
+
this.toastr.success('Config Update Successfully');
|
|
179
|
+
}, error: (err) => {
|
|
180
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
deleteCdrConfig(data) {
|
|
185
|
+
let result = confirm("<i>Are You Sure?</i>", "Delete Config");
|
|
186
|
+
result.then((dialogResult) => {
|
|
187
|
+
if (dialogResult) {
|
|
188
|
+
this.loadingModal = true;
|
|
189
|
+
this.service.deleteDatasourceConfig(data.tableName).subscribe({
|
|
190
|
+
next: (data) => {
|
|
191
|
+
this.searchDatasourceDetails();
|
|
192
|
+
this.toastr.success('Config Deleted Successfully');
|
|
193
|
+
this.loadingModal = false;
|
|
194
|
+
}, error: (err) => {
|
|
195
|
+
this.loadingModal = false;
|
|
196
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config Delete');
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
createCDRConfig() {
|
|
203
|
+
this.isCdrConfigCreate = true;
|
|
204
|
+
}
|
|
205
|
+
cancelCdrConfig() {
|
|
206
|
+
this.isCdrConfigCreate = false;
|
|
207
|
+
this.submitObject['columnDefList'] = [];
|
|
208
|
+
this.submitObject['active'] = false;
|
|
209
|
+
this.submitObject['endDateFunction'] = "";
|
|
210
|
+
this.submitObject['startDateFunction'] = "";
|
|
211
|
+
this.submitObject['tableName'] = "";
|
|
212
|
+
this.isProceed = false;
|
|
213
|
+
this.loadingModal = false;
|
|
214
|
+
this.isTableSelected = false;
|
|
215
|
+
this.isEditDatasource = false;
|
|
216
|
+
}
|
|
217
|
+
deleteColume(i) {
|
|
218
|
+
this.submitObject.columnDefList.splice(i, 1);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
CdrConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CdrConfigComponent, deps: [{ token: i1.ApplicationContentService }, { token: i2.ToastrService }, { token: i3.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
+
CdrConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: CdrConfigComponent, selector: "app-cdr-config", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i7.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i9.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i10.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i14.LoadingComponent, selector: "app-loading" }] });
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: CdrConfigComponent, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
|
+
args: [{ selector: 'app-cdr-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>" }]
|
|
226
|
+
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.ToastrService }, { type: i3.CommonService }]; } });
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RyLWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS10ZW1wbGF0ZXMvY2RyLWNvbmZpZy9jZHItY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLXRlbXBsYXRlcy9jZHItY29uZmlnL2Nkci1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTL0MsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0IsWUFBb0IsT0FBa0MsRUFBVSxNQUFxQixFQUFTLGFBQTRCO1FBQXRHLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkIxSCw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFLbkMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsNkJBQXdCLEdBQVEsRUFBRSxDQUFDO1FBQ25DLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixnQ0FBMkIsR0FBUSxFQUFFLENBQUM7UUFJdEMsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRTdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVB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LGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQzs7K0dBalBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQ1gvQixtcVNBb0xNOzJGRHpLTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IGNvbmZpcm0gfSBmcm9tICdkZXZleHRyZW1lL3VpL2RpYWxvZyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2RyLWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZHItY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2RyLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENkckNvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxvYWRpbmdNb2RhbDogYm9vbGVhbjtcbiAgYXZhaWxhYmxlVGFibGVEYXRhc291cmNlOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRUYWJsZU5hbWU6IGFueTtcbiAgaXNUYWJsZVNlbGVjdGVkOiBib29sZWFuO1xuICBpc1Byb2NlZWQ6IGJvb2xlYW47XG4gIGxpc3RPZkNvbHVtbnM6IGFueTtcbiAgc3VibWl0T2JqZWN0OiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRDb2x1bW5EYXRhc291cmNlOiBhbnkgPSBbXTtcbiAga3BpX2VucmljaG1lbnRfbmFtZTogYW55ID0gW107XG4gIENkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZTogYW55ID0gW107XG5cbiAgY2RyVGFibGVEYXRhU291cmNlOiBhbnk7XG4gIGFsbFRhYmxzRHJvcERvd25EYXRhOiBhbnk7XG4gIHNlbGVjdGVkQ29sdW1uTmFtZTogYW55ID0gW107XG5cbiAgaXNDZHJDb25maWdDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0RGF0YXNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJfdHlwZSA9IFsnZGF0ZScsICdzdHJpbmcnLCAndGltZXN0YW1wJywgJ2ludCcsICdkb3VibGUnLCAnYm9vbGVhbiddO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHtcblxuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2V0QXZhaWxhYmxlVGFiZU5hbWUoKTtcbiAgICB0aGlzLmdldEZpbHRlckRhdGFTZXQoKTtcbiAgICB0aGlzLmdldENkckJyb3dzZXJBbGxvd2VkT3BlcmF0aW9uKCk7XG4gICAgdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuXG4gIH1cblxuICBnZXRGaWx0ZXJEYXRhU2V0KCkge1xuICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRLUElSZWZlcmVuY2VFbmRQb2ludHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBkYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5rcGlfZW5yaWNobWVudF9uYW1lLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlVuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLlwiLCBcIkNEUiBDb25maWdcIilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cblxuXG4gIHNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCkge1xuICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0ge307XG4gICAgdGhpcy5hbGxUYWJsc0Ryb3BEb3duRGF0YSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRTZWFyY2hEYXRhc291cmNlRGV0YWlscygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2RyVGFibGVEYXRhU291cmNlID0gZGF0YTtcblxuICAgICAgICB0aGlzLmFsbFRhYmxzRHJvcERvd25EYXRhID0gT2JqZWN0LmtleXMoZGF0YSkubWFwKGtleSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAuLi5kYXRhW2tleV1cbiAgICAgICAgfSkpO1xuXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG5cbiAgZ2V0Q2RyQnJvd3NlckFsbG93ZWRPcGVyYXRpb24oKSB7XG5cbiAgICB0aGlzLnNlcnZpY2UuZ2V0Q2RyQnJvd3Nlck9wZXJhdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLkNkckJyb3dzZXJBbGxvd2VkRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVRhYmVOYW1lKCkge1xuICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gW107XG4gICAgdGhpcy5zZXJ2aWNlLmdldEF2YWlsYWJsZVRhYmxlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFNlbGVjdGVkVGFibGVNZXRhRGF0YShlKSB7XG4gICAgaWYgKGUudmFsdWUpIHtcbiAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgbGV0IHRhYmxlTmFtZSA9IGUudmFsdWU7XG4gICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VydmljZS5nZXRUYWJsZU1ldGFkYXRhKHRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxpc3RPZkNvbHVtbnMgPSBkYXRhO1xuICAgICAgICAgIC8vIHRoaXMuYXZhaWxhYmxlVGFibGVEYXRhc291cmNlID0gZGF0YTtcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldFNlbGVjdGVkQ29sdW1uU291cmNlKGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRGF0YXNvdXJjZSA9IGUudmFsdWU7XG5cbiAgfVxuXG4gIGdldFByb2Nlc3NGb3JDb25maWcoKSB7XG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5saXN0T2ZDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZWxlY3RlZENvbHVtbkRhdGFzb3VyY2UuaW5jbHVkZXMoY29sdW1uLmZpZWxkTmFtZSkpO1xuICAgIGNvbnN0IGNvbHVtbkRlZkxpc3QgPSBbXTtcblxuICAgIGZpbHRlcmVkQ29sdW1ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdDb2x1bW4gPSAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSkgPyB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmZpbmQoY29sID0+IGNvbC5jb2x1bW5OYW1lID09PSBlbGVtZW50LmZpZWxkTmFtZSkgOiBmYWxzZTtcblxuICAgICAgaWYgKCFleGlzdGluZ0NvbHVtbikge1xuICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgICAgICBcImNvbnRhaW5lclR5cGVcIjogXCJcIixcbiAgICAgICAgICBcImRhdGF0eXBlXCI6IFwiXCIsXG4gICAgICAgICAgXCJhbGxvd2VkT3BlcmF0aW9uc1wiOiBbXSxcbiAgICAgICAgICBcImxvb2t1cE5hbWVcIjogXCJcIlxuICAgICAgICB9O1xuICAgICAgICBjb2x1bW5EZWZMaXN0LnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSAmJiB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFsuLi50aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddLCAuLi5jb2x1bW5EZWZMaXN0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IGNvbHVtbkRlZkxpc3Q7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2NlZWQgPSB0cnVlO1xuICB9XG5cbiAgc3VibWl0RGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnNhdmVEYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGVkaXRDZHJDb25maWdDb25maWcoZGF0YSkge1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuaXNDZHJDb25maWdDcmVhdGUgPSB0cnVlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0ID0gZGF0YTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VGFibGVNZXRhZGF0YSh0aGlzLnN1Ym1pdE9iamVjdC50YWJsZU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY29sRGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5saXN0T2ZDb2x1bW5zID0gY29sRGF0YTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbk5hbWUgPSB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0Lm1hcChpdGVtID0+IGl0ZW0uY29sdW1uTmFtZSk7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcblxuICB9XG5cbiAgdXBkYXRlRGF0YXNvdXJjZSgpIHtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmVkaXREYXRhc291cmNlQ29uZmlnKHRoaXMuc3VibWl0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnY29sdW1uRGVmTGlzdCddID0gW107XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnc3RhcnREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIFVwZGF0ZSBTdWNjZXNzZnVsbHknKVxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0NEUiBDb25maWcnKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVsZXRlQ2RyQ29uZmlnKGRhdGEpIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIENvbmZpZ1wiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZVxuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlRGF0YXNvdXJjZUNvbmZpZyhkYXRhLnRhYmxlTmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdDb25maWcgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnIERlbGV0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUNEUkNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGNhbmNlbENkckNvbmZpZygpIHtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gZmFsc2U7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFtdO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydhY3RpdmUnXSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydlbmREYXRlRnVuY3Rpb24nXSA9IFwiXCI7XG4gICAgdGhpcy5zdWJtaXRPYmplY3RbJ3N0YXJ0RGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0Wyd0YWJsZU5hbWUnXSA9IFwiXCI7XG4gICAgLy8gdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuICAgIHRoaXMuaXNQcm9jZWVkID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGF0YXNvdXJjZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1lKGkpIHtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0LnNwbGljZShpLCAxKVxuICB9XG5cbn1cbiIsIjxhcHAtbG9hZGluZyAqbmdJZj1cImxvYWRpbmdNb2RhbFwiPjwvYXBwLWxvYWRpbmc+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPCEtLSBoZWFkZXIgc3RhcnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iIGRhcms6YmctdHJhbnNwYXJlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTEgcHktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtMlwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6dGVtcGxhdGUnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LTJ4bCBtZDp0ZXh0LTJ4bCBweS0yIGZvbnQtZXh0cmFib2xkIGl0ZW1zLWNlbnRlciBtbC0yIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctNSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ0RSIENvbmZpZyBDcmVhdGlvblxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWwtMiBwLTAgbS0wXCI+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEgaC1mdWxsIGJvcmRlci1sLTJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwLTFcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlQ0RSQ29uZmlnKClcIj5DcmVhdGUgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1iYXItY2hhcnQtbyBtci0yXCI+PC9pPiBUYWJsZSBDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgPC9oNj5cblxuICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbZGF0YVNvdXJjZV09XCJhbGxUYWJsc0Ryb3BEb3duRGF0YVwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIlxuICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIj5cblxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cImFsZXJ0X2RhdGFfYnlfc3RhdHVzXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0cnVlXCIgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIiBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTAsMjAsNTAsMTAwXVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInRhYmxlTmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGFydERhdGVGdW5jdGlvblwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJlbmREYXRlRnVuY3Rpb25cIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2FwdGlvbj1cIlN0YXR1c1wiIGRhdGFGaWVsZD1cImFjdGl2ZVwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTFcIj48L2R4aS1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5QcmltYXJ5Qmx1ZX19XCIgKGNsaWNrKT1cImVkaXRDZHJDb25maWdDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVDZHJDb25maWcoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLmRhdGEuYWN0aXZlID09IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuU3VjY2Vzc0dyZWVufX1cIj5BY3RpdmU8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEuZGF0YS5hY3RpdmUgPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuV2FybmluZ1llbGxvd319XCI+SW5hY3RpdmU8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NkckNvbmZpZ0NyZWF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIHB5LTMgYm9yZGVyLWIgYm9yZGVyLXRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHB4LTIgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgVGFibGUgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiYXZhaWxhYmxlVGFibGVEYXRhc291cmNlXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QudGFibGVOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRTZWxlY3RlZFRhYmxlTWV0YURhdGEoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzMgcHgtMlwiICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TZWxlY3QgQ29sdW1uczwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtkYXRhU291cmNlXT1cImxpc3RPZkNvbHVtbnNcIiB2YWx1ZUV4cHI9XCJmaWVsZE5hbWVcIiBkaXNwbGF5RXhwcj1cImZpZWxkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlsaW5lXT1cInRydWVcIiBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29sdW1uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRDb2x1bW5Tb3VyY2UoJGV2ZW50KVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMyBweC0yXCIgKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19IG10LTZcIiAoY2xpY2spPVwiZ2V0UHJvY2Vzc0ZvckNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsQ2RyQ29uZmlnKClcIj5DYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTIgYm9yZGVyLWJcIiAqbmdJZj1cImlzUHJvY2VlZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGF0YSBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImZpbHRlcl90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YXR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29udGFpbmVyIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2lucHV0Jywnc2VsZWN0JywnbXVsdGlzZWxlY3QnLCdkYXRlJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5jb250YWluZXJUeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+QWxsb3dlZCBPcGVyYXRpb25zPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJDZHJCcm93c2VyQWxsb3dlZERhdGFzb3VyY2VcIiB2YWx1ZUV4cHI9XCJ2YWx1ZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpc3BsYXllZFRhZ3NdPVwiM1wiIFttdWx0aWxpbmVdPVwidHJ1ZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmFsbG93ZWRPcGVyYXRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5Mb29rdXAgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCIgdmFsdWVFeHByPVwiYXBpVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cImFwaU5hbWVcIiBbKG5nTW9kZWwpXT1cIml0ZW0ubG9va3VwTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlciBtdC04XCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtZShpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMlwiICpuZ0lmPVwiaXNQcm9jZWVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U3RhcnREYXRlIEZ1bmN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ3N1YnRyYWN0J11cIiBbKG5nTW9kZWwpXT1cInN1Ym1pdE9iamVjdC5zdGFydERhdGVGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RW5kRGF0ZSBGdW5jdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydzdWJ0cmFjdCddXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3QuZW5kRGF0ZUZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwic3VibWl0T2JqZWN0LmFjdGl2ZVwiIHRleHQ9J0FjdGl2ZSc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC02XCIgKm5nSWY9XCIhaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdERhdGFzb3VyY2UoKVwiPlN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiICpuZ0lmPVwiaXNFZGl0RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZURhdGFzb3VyY2UoKVwiPlVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9kaXY+Il19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class DynamicRouteService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.routeConfigs = [];
|
|
6
|
+
}
|
|
7
|
+
setRouteConfigs(configs) {
|
|
8
|
+
this.routeConfigs = configs;
|
|
9
|
+
}
|
|
10
|
+
getRouteConfigs() {
|
|
11
|
+
return this.routeConfigs;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
DynamicRouteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: DynamicRouteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
|
+
DynamicRouteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: DynamicRouteService, providedIn: 'root' });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: DynamicRouteService, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yb3V0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtdGVtcGxhdGVzL2R5bmFtaWMtcm91dGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSVksaUJBQVksR0FBVSxFQUFFLENBQUM7S0FTcEM7SUFQRyxlQUFlLENBQUMsT0FBYztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDOztnSEFUUSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZoQixNQUFNOzJGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkeW5hbWljLXJvdXRlLnNlcnZpY2UudHNcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljUm91dGVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJvdXRlQ29uZmlnczogYW55W10gPSBbXTtcblxuICAgIHNldFJvdXRlQ29uZmlncyhjb25maWdzOiBhbnlbXSkge1xuICAgICAgICB0aGlzLnJvdXRlQ29uZmlncyA9IGNvbmZpZ3M7XG4gICAgfVxuXG4gICAgZ2V0Um91dGVDb25maWdzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZUNvbmZpZ3M7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import moment from './../../../moment-helper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "../../api.service";
|
|
6
|
+
import * as i3 from "devextreme-angular/core";
|
|
7
|
+
import * as i4 from "devextreme-angular/ui/popup";
|
|
8
|
+
import * as i5 from "@angular/material/icon";
|
|
9
|
+
import * as i6 from "../../gamma-advance-filter/gamma-advance-filter.component";
|
|
10
|
+
export class AdvanceWidgetHeaderFilterComponent {
|
|
11
|
+
constructor(activatedRoute, route, service) {
|
|
12
|
+
this.activatedRoute = activatedRoute;
|
|
13
|
+
this.route = route;
|
|
14
|
+
this.service = service;
|
|
15
|
+
this.toggleEvent = new EventEmitter();
|
|
16
|
+
this.autoload_button = true;
|
|
17
|
+
this.toolTipText = 'By Date Range';
|
|
18
|
+
this.daterange = {};
|
|
19
|
+
this.daterange_options = {
|
|
20
|
+
locale: { format: 'YYYY-MM-DD' },
|
|
21
|
+
alwaysShowCalendars: true,
|
|
22
|
+
showCustomRangeLabel: true,
|
|
23
|
+
ranges: {
|
|
24
|
+
Today: [moment(), moment()],
|
|
25
|
+
'Last 1 Month': [moment().subtract(30, 'days'), moment()],
|
|
26
|
+
'Last 3 Month': [moment().subtract(91, 'days'), moment()],
|
|
27
|
+
'Last 6 Month': [moment().subtract(182, 'days'), moment()],
|
|
28
|
+
'Last 12 Month': [moment().subtract(365, 'days'), moment()],
|
|
29
|
+
'Last 13 Months': [
|
|
30
|
+
moment().subtract(12, 'month').startOf('month'),
|
|
31
|
+
moment(),
|
|
32
|
+
],
|
|
33
|
+
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
this.getWidgetFilterConfig = new EventEmitter();
|
|
37
|
+
}
|
|
38
|
+
set filterItems(value) {
|
|
39
|
+
if (value === undefined || value.length === 0) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
let displayStartDate = '';
|
|
44
|
+
let displayEndDate = '';
|
|
45
|
+
this.filterItemsForFilter = value;
|
|
46
|
+
value.forEach(element => {
|
|
47
|
+
if (element.filterType === 'date' || element.filterType === 'datetime') {
|
|
48
|
+
if (element.defaultFilterType === "dynamic" && element.momentFunction !== "" && element.defaultFilterValue !== "" && element.momentFormat !== "") {
|
|
49
|
+
let [count, unit] = element.defaultFilterValue.split(',');
|
|
50
|
+
let formattedDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);
|
|
51
|
+
if (element.apiName === "startDate") {
|
|
52
|
+
if (element.display) {
|
|
53
|
+
displayStartDate = this.selectedDates[element.apiName];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (element.apiName === "endDate") {
|
|
57
|
+
if (element.display) {
|
|
58
|
+
displayEndDate = this.selectedDates[element.apiName];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ngOnInit() {
|
|
67
|
+
}
|
|
68
|
+
advanceFilterKpi() {
|
|
69
|
+
this.isAdvanceFilter = true;
|
|
70
|
+
}
|
|
71
|
+
getSerchFilter(filter) {
|
|
72
|
+
this.isAdvanceFilter = false;
|
|
73
|
+
let displayStartDate = '';
|
|
74
|
+
let displayEndDate = '';
|
|
75
|
+
this.filterItemsForFilter.forEach(element => {
|
|
76
|
+
if (element.filterType === 'date' || element.filterType === 'datetime') {
|
|
77
|
+
if (element.defaultFilterType === "dynamic" && element.momentFunction !== "" && element.defaultFilterValue !== "" && element.momentFormat !== "") {
|
|
78
|
+
let [count, unit] = element.defaultFilterValue.split(',');
|
|
79
|
+
if (element.apiName === "startDate") {
|
|
80
|
+
if (element.display) {
|
|
81
|
+
filter.startDate = moment(filter.startDate).format(element.momentFormat);
|
|
82
|
+
displayStartDate = filter.startDate;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
filter.startDate = moment(filter.endDate)[element.momentFunction](parseInt(count), unit).format(element.momentFormat);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (element.apiName === "endDate") {
|
|
89
|
+
filter.endDate = moment(filter.endDate).format(element.momentFormat);
|
|
90
|
+
if (element.display) {
|
|
91
|
+
displayEndDate = filter.endDate;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
filter['viewNodes'] = this.viewIds;
|
|
98
|
+
this.getWidgetFilterConfig.emit(filter);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
AdvanceWidgetHeaderFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AdvanceWidgetHeaderFilterComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.KpiApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
AdvanceWidgetHeaderFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: AdvanceWidgetHeaderFilterComponent, selector: "app-advance-widget-header-filter", inputs: { selectedDates: "selectedDates", viewIds: "viewIds", filterItems: "filterItems" }, outputs: { toggleEvent: "toggleEvent", getWidgetFilterConfig: "getWidgetFilterConfig" }, ngImport: i0, template: "<div class=\"flex flex-col m-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\" aria-haspopup=\"menu\"\n (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.GammaAdvanceFilterComponent, selector: "app-gamma-advance-filter", inputs: ["kpiId", "filterStartDate", "filterEndDate", "browser_api_config", "isButtonDesiable", "filterOperatorData"], outputs: ["filterDataObject"] }] });
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AdvanceWidgetHeaderFilterComponent, decorators: [{
|
|
104
|
+
type: Component,
|
|
105
|
+
args: [{ selector: 'app-advance-widget-header-filter', template: "<div class=\"flex flex-col m-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\" aria-haspopup=\"menu\"\n (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>" }]
|
|
106
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.KpiApiService }]; }, propDecorators: { selectedDates: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], viewIds: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], toggleEvent: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}], getWidgetFilterConfig: [{
|
|
113
|
+
type: Output
|
|
114
|
+
}], filterItems: [{
|
|
115
|
+
type: Input,
|
|
116
|
+
args: ['filterItems']
|
|
117
|
+
}] } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS13aWRnZXQtaGVhZGVyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyL2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvYWR2YW5jZS13aWRnZXQtaGVhZGVyLWZpbHRlci9hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxNQUFNLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7O0FBTzlDLE1BQU0sT0FBTyxrQ0FBa0M7SUFzRTdDLFlBQ1UsY0FBOEIsRUFDOUIsS0FBYSxFQUNiLE9BQXNCO1FBRnRCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQXJFdEIsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVN6RSxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUV2QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFRO1lBQzlCLE1BQU0sRUFBRSxFQUFFLE1BQU0s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QU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzt5QkFDdkg7cUJBQ0Y7b0JBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTt3QkFDakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQ3JFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTs0QkFDbkIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7eUJBQ2pDO3FCQUNGO2lCQUNGO2FBRUY7UUFFSCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsQ0FBQzs7K0hBekhVLGtDQUFrQzttSEFBbEMsa0NBQWtDLDZQQ1QvQyxpaENBbUJXOzJGRFZFLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxrQ0FBa0M7c0pBS25DLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBa0NVLHFCQUFxQjtzQkFBckMsTUFBTTtnQkFJSCxXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLy4uLy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgS3BpQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZVdpZGdldEhlYWRlckZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZXM6IGFueTtcbiAgQElucHV0KCkgdmlld0lkczogYW55O1xuXG4gIEBPdXRwdXQoKSB0b2dnbGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgaXNBZHZhbmNlRmlsdGVyOiBib29sZWFuO1xuICBicm93c2VyX2NvbmZpZzogYW55O1xuICBrcGlfaWQ6IGFueTtcblxuICBmaWx0ZXJTdGFydERhdGU7XG4gIGZpbHRlckVuZERhdGU7XG4gIGZpbHRlck9wdGlvbnM7XG5cbiAgYXV0b2xvYWRfYnV0dG9uID0gdHJ1ZTtcbiAgcHJpdmF0ZSB0aW1lX291dF9pZDtcbiAgdG9vbFRpcFRleHQgPSAnQnkgRGF0ZSBSYW5nZSc7XG5cbiAgcHVibGljIGRhdGVyYW5nZTogYW55ID0ge307XG4gIHB1YmxpYyBkYXRlcmFuZ2Vfb3B0aW9uczogYW55ID0ge1xuICAgIGxvY2FsZTogeyBmb3JtYXQ6ICdZWVlZLU1NLUREJyB9LFxuICAgIGFsd2F5c1Nob3dDYWxlbmRhcnM6IHRydWUsXG4gICAgc2hvd0N1c3RvbVJhbmdlTGFiZWw6IHRydWUsXG4gICAgcmFuZ2VzOiB7XG4gICAgICBUb2RheTogW21vbWVudCgpLCBtb21lbnQoKV0sXG4gICAgICAvLyBZZXN0ZXJkYXk6IFttb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSxcbiAgICAgICdMYXN0IDEgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoMzAsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICdMYXN0IDMgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoOTEsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICdMYXN0IDYgTW9udGgnOiBbbW9tZW50KCkuc3VidHJhY3QoMTgyLCAnZGF5cycpLCBtb21lbnQoKV0sXG4gICAgICAnTGFzdCAxMiBNb250aCc6IFttb21lbnQoKS5zdWJ0cmFjdCgzNjUsICdkYXlzJyksIG1vbWVudCgpXSxcbiAgICAgICdMYXN0IDEzIE1vbnRocyc6IFtcbiAgICAgICAgbW9tZW50KCkuc3VidHJhY3QoMTIsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJyksXG4gICAgICAgIG1vbWVudCgpLFxuICAgICAgXSxcbiAgICAgICdUaGlzIE1vbnRoJzogW21vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJyksIG1vbWVudCgpLmVuZE9mKCdtb250aCcpXSxcbiAgICB9LFxuICB9O1xuXG4gIHNlbGVjdGVkRGV0ZXNmb3JWaWV3OiBhbnk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0V2lkZ2V0RmlsdGVyQ29uZmlnOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBmaWx0ZXJJdGVtc0ZvckZpbHRlcjogYW55O1xuICBASW5wdXQoJ2ZpbHRlckl0ZW1zJylcbiAgc2V0IGZpbHRlckl0ZW1zKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkaXNwbGF5U3RhcnREYXRlID0gJyc7XG4gICAgICBsZXQgZGlzcGxheUVuZERhdGUgPSAnJztcbiAgICAgIHRoaXMuZmlsdGVySXRlbXNGb3JGaWx0ZXIgPSB2YWx1ZTtcbiAgICAgIHZhbHVlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT09ICdkYXRlJyB8fCBlbGVtZW50LmZpbHRlclR5cGUgPT09ICdkYXRldGltZScpIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5kZWZhdWx0RmlsdGVyVHlwZSA9PT0gXCJkeW5hbWljXCIgJiYgZWxlbWVudC5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBlbGVtZW50Lm1vbWVudEZvcm1hdCAhPT0gXCJcIikge1xuICAgICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5U3RhcnREYXRlID0gdGhpcy5zZWxlY3RlZERhdGVzW2VsZW1lbnQuYXBpTmFtZV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5RW5kRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlc1tlbGVtZW50LmFwaU5hbWVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBLcGlBcGlTZXJ2aWNlXG4gICkge1xuXG4gIH1cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG5cbiAgfVxuXG5cblxuICBhZHZhbmNlRmlsdGVyS3BpKCkge1xuICAgIHRoaXMuaXNBZHZhbmNlRmlsdGVyID0gdHJ1ZTtcbiAgfVxuXG4gIGdldFNlcmNoRmlsdGVyKGZpbHRlcikge1xuXG4gICAgdGhpcy5pc0FkdmFuY2VGaWx0ZXIgPSBmYWxzZTtcbiAgICBsZXQgZGlzcGxheVN0YXJ0RGF0ZSA9ICcnO1xuICAgIGxldCBkaXNwbGF5RW5kRGF0ZSA9ICcnO1xuXG4gICAgdGhpcy5maWx0ZXJJdGVtc0ZvckZpbHRlci5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZmlsdGVyVHlwZSA9PT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBpZiAoZWxlbWVudC5kZWZhdWx0RmlsdGVyVHlwZSA9PT0gXCJkeW5hbWljXCIgJiYgZWxlbWVudC5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBlbGVtZW50Lm1vbWVudEZvcm1hdCAhPT0gXCJcIikge1xuICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5hcGlOYW1lID09PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgIGZpbHRlci5zdGFydERhdGUgPSBtb21lbnQoZmlsdGVyLnN0YXJ0RGF0ZSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgZGlzcGxheVN0YXJ0RGF0ZSA9IGZpbHRlci5zdGFydERhdGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWx0ZXIuc3RhcnREYXRlID0gbW9tZW50KGZpbHRlci5lbmREYXRlKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICBmaWx0ZXIuZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXIuZW5kRGF0ZSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgZGlzcGxheUVuZERhdGUgPSBmaWx0ZXIuZW5kRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfSk7XG4gICAgZmlsdGVyWyd2aWV3Tm9kZXMnXSA9IHRoaXMudmlld0lkcztcbiAgICB0aGlzLmdldFdpZGdldEZpbHRlckNvbmZpZy5lbWl0KGZpbHRlcilcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbS0yXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm1hdC1mb2N1cy1pbmRpY2F0b3IgbWF0LW1lbnUtdHJpZ2dlciBtYXQtaWNvbi1idXR0b24gbWF0LWJ1dHRvbi1iYXNlXCIgYXJpYS1oYXNwb3B1cD1cIm1lbnVcIlxuICAgICAgICAoY2xpY2spPVwiYWR2YW5jZUZpbHRlcktwaSgpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIHRpdGxlPVwiRmlsdGVyc1wiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTphZGp1c3RtZW50cydcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPGR4LXBvcHVwIFsodmlzaWJsZSldPVwiaXNBZHZhbmNlRmlsdGVyXCIgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIiBbZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiNjAwXCJcbiAgICBbaGVpZ2h0XT1cIidhdXRvJ1wiIFtzaG93VGl0bGVdPVwidHJ1ZVwiIGNsYXNzPVwicG9wdXBcIiB0aXRsZT1cIkZpbHRlclwiPlxuICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cbiAgICAgICAgPGFwcC1nYW1tYS1hZHZhbmNlLWZpbHRlciBba3BpSWRdPVwiJzIzMTIxMidcIiBbZmlsdGVyT3BlcmF0b3JEYXRhXT1cImZpbHRlckl0ZW1zRm9yRmlsdGVyXCJcbiAgICAgICAgICAgIFtpc0J1dHRvbkRlc2lhYmxlXT1cImlzQWR2YW5jZUZpbHRlclwiIFtmaWx0ZXJTdGFydERhdGVdPVwiZmlsdGVyU3RhcnREYXRlXCIgW2ZpbHRlckVuZERhdGVdPVwiZmlsdGVyRW5kRGF0ZVwiXG4gICAgICAgICAgICAoZmlsdGVyRGF0YU9iamVjdCk9XCJnZXRTZXJjaEZpbHRlcigkZXZlbnQpXCI+PC9hcHAtZ2FtbWEtYWR2YW5jZS1maWx0ZXI+XG4gICAgPC9kaXY+XG48L2R4LXBvcHVwPiJdfQ==
|