gamma-app-controller 1.1.25 → 1.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/application-controller.module.mjs +20 -20
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-menu-controller/application-menus/application-menus.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-metric-config/all-metrics-config/all-metrics-config.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-metric-config/create-metrics/create-metrics.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +1 -1
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +11 -11
- package/esm2020/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.mjs +10 -10
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +2 -2
- package/esm2020/lib/application-controller/support-components/heat-map/heat-map.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/single-card/single-card.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +2 -2
- package/esm2020/lib/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +116 -0
- package/esm2020/lib/shared/advanced-component/app-advance-header/app-header.component.mjs +306 -0
- package/esm2020/lib/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +80 -0
- package/esm2020/lib/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +379 -0
- package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +188 -0
- package/esm2020/lib/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +435 -0
- package/esm2020/lib/shared/advanced-component/gamma-heatmap/gamma-heatmap.component.mjs +334 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +155 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +20 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +187 -0
- package/esm2020/lib/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +86 -0
- package/esm2020/lib/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +439 -0
- package/esm2020/lib/shared/app-title/app-title.component.mjs +67 -0
- package/esm2020/lib/shared/gamam-widget/gamam-widget.component.mjs +35 -0
- package/esm2020/lib/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +273 -0
- package/esm2020/lib/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +142 -0
- package/esm2020/lib/shared/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/{application-controller/shared → shared}/loader/loader.component.mjs +1 -1
- package/esm2020/lib/{application-controller/shared → shared}/loading/loading.component.mjs +1 -1
- package/esm2020/lib/shared/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/shared/safeHtmlPipe.mjs +20 -0
- package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +381 -0
- package/esm2020/lib/template-module/KpiCreationModule/createKpi.service.mjs +90 -0
- package/esm2020/lib/template-module/KpiCreationModule/kpiCreation.module.mjs +184 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animation.mjs +15 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/defaults.mjs +12 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.mjs +16 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/fade.mjs +160 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/shake.mjs +58 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/slide.mjs +116 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/zoom.mjs +36 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.mjs +85 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.mjs +118 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.mjs +159 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.mjs +27 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/group/group.component.mjs +37 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.mjs +27 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/moment-helper.mjs +4 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.mjs +2 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.mjs +16 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview.component.mjs +134 -0
- package/esm2020/lib/template-module/bookmarked-template/bookmarked-template.component.mjs +816 -0
- package/esm2020/lib/template-module/bookmarked-template/bookmarkedTemplate.module.mjs +149 -0
- package/esm2020/lib/template-module/cdrConfigModule/cdr-config.component.mjs +1 -1
- package/esm2020/lib/template-module/cdrConfigModule/cdrConfig.module.mjs +2 -2
- package/esm2020/lib/template-module/defaulLandingComponent/defaultLandingComponent.module.mjs +149 -0
- package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +870 -0
- package/esm2020/lib/template-module/exceptionConfigModule/exception-operation.component.mjs +1 -1
- package/esm2020/lib/template-module/exceptionConfigModule/exceptionConfig.module.mjs +2 -2
- package/esm2020/lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component.mjs +180 -0
- package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.mjs +992 -0
- package/esm2020/lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module.mjs +154 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/dynamin-modal.component.mjs +180 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +1046 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpiWithSingleLayout.module.mjs +154 -0
- package/esm2020/public-api.mjs +39 -20
- package/fesm2015/gamma-app-controller.mjs +6750 -475
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +6709 -475
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +19 -19
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +9 -9
- package/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.d.ts +8 -8
- package/lib/{application-controller/shared → shared}/advanced-component/app-advance-header/app-header.component.d.ts +18 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +3 -5
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-advance-chart/gamma-advance-chart.component.d.ts +3 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +4 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-geo-chart/gamma-geo-chart.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-heatmap/gamma-heatmap.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +6 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/google-geo-map/google-geo-map.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/app-title/app-title.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/gamam-widget/gamam-widget.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/gamma-advance-filter/gamma-advance-filter.component.d.ts +3 -2
- package/lib/{application-controller/shared → shared}/gamma-bread-crumbs/bread-crumbs.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/kpi-comon-service.d.ts +1 -1
- package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +75 -0
- package/lib/template-module/KpiCreationModule/createKpi.service.d.ts +32 -0
- package/lib/template-module/KpiCreationModule/kpiCreation.module.d.ts +23 -0
- package/lib/template-module/KpiCreationModule/treeview/animation.d.ts +1 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/defaults.d.ts +11 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.d.ts +2 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/fade.d.ts +11 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/shake.d.ts +2 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/slide.d.ts +9 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/zoom.d.ts +3 -0
- package/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.d.ts +26 -0
- package/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.d.ts +29 -0
- package/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.d.ts +37 -0
- package/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.d.ts +13 -0
- package/lib/template-module/KpiCreationModule/treeview/components/group/group.component.d.ts +17 -0
- package/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.d.ts +13 -0
- package/lib/template-module/KpiCreationModule/treeview/moment-helper.d.ts +3 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.d.ts +39 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.d.ts +8 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview.component.d.ts +52 -0
- package/lib/template-module/bookmarked-template/bookmarked-template.component.d.ts +109 -0
- package/lib/template-module/bookmarked-template/bookmarkedTemplate.module.d.ts +16 -0
- package/lib/template-module/cdrConfigModule/cdrConfig.module.d.ts +1 -1
- package/lib/template-module/defaulLandingComponent/defaultLandingComponent.module.d.ts +16 -0
- package/lib/template-module/defaulLandingComponent/landing-component.component.d.ts +109 -0
- package/lib/template-module/exceptionConfigModule/exceptionConfig.module.d.ts +1 -1
- package/lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component.d.ts +42 -0
- package/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.d.ts +117 -0
- package/lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module.d.ts +17 -0
- package/lib/template-module/kpiWithSingleLayout/dynamin-modal.component.d.ts +42 -0
- package/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.d.ts +122 -0
- package/lib/template-module/kpiWithSingleLayout/kpiWithSingleLayout.module.d.ts +17 -0
- package/package.json +1 -1
- package/public-api.d.ts +38 -19
- package/esm2020/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +0 -124
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +0 -220
- package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +0 -95
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +0 -362
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +0 -177
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +0 -441
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-heatmap/gamma-heatmap.component.mjs +0 -328
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +0 -155
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +0 -20
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +0 -157
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +0 -85
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +0 -439
- package/esm2020/lib/application-controller/shared/app-title/app-title.component.mjs +0 -67
- package/esm2020/lib/application-controller/shared/gamam-widget/gamam-widget.component.mjs +0 -35
- package/esm2020/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +0 -237
- package/esm2020/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +0 -142
- package/esm2020/lib/application-controller/shared/kpi-comon-service.mjs +0 -537
- package/esm2020/lib/application-controller/shared/loading/loadingModule.mjs +0 -28
- package/esm2020/lib/application-controller/shared/safeHtmlPipe.mjs +0 -20
- /package/lib/{application-controller/shared → shared}/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-with-percentage/contentSafeHtml.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loader/loader.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loading/loading.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loading/loadingModule.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/safeHtmlPipe.d.ts +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import moment from '../../../application-controller/moment-helper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../application-controller/common";
|
|
5
|
+
import * as i2 from "ngx-toastr";
|
|
6
|
+
import * as i3 from "@angular/platform-browser";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "devextreme-angular/core";
|
|
9
|
+
import * as i6 from "devextreme-angular/ui/data-grid";
|
|
10
|
+
import * as i7 from "devextreme-angular/ui/nested";
|
|
11
|
+
import * as i8 from "../../loader/loader.component";
|
|
12
|
+
import * as i9 from "../gamma-table-with-percentage/contentSafeHtml";
|
|
13
|
+
export class GammaTableClumnBarChartComponent {
|
|
14
|
+
constructor(commonService, toastr, sanitizer) {
|
|
15
|
+
this.commonService = commonService;
|
|
16
|
+
this.toastr = toastr;
|
|
17
|
+
this.sanitizer = sanitizer;
|
|
18
|
+
this.getTableConfigOutPut = new EventEmitter();
|
|
19
|
+
this.oRowClick = new EventEmitter();
|
|
20
|
+
this.onrightClickContextSelection = new EventEmitter();
|
|
21
|
+
this.rightClickEnable = true;
|
|
22
|
+
this.tableDataSource = [];
|
|
23
|
+
}
|
|
24
|
+
set chartDataSource(value) {
|
|
25
|
+
if (value === undefined || value.length === 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.isLoader = true;
|
|
30
|
+
this.page_config = value;
|
|
31
|
+
this.page_parms = value.titleParams;
|
|
32
|
+
this.tableHeight = (value.kpiConfig.dataConfig.tableHeight && value.kpiConfig.dataConfig.tableHeight !== "") ? this.setTableHeight(value.kpiConfig.dataConfig.tableHeight) : 'auto';
|
|
33
|
+
if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
|
|
34
|
+
this.tableConfig = value.kpiConfig.dataConfig;
|
|
35
|
+
const columns = value.kpiConfig.dataConfig.columns;
|
|
36
|
+
let mainDatasource;
|
|
37
|
+
let tableColumns = (value.kpiConfig.dataConfig.columns) ? value.kpiConfig.dataConfig.columns : [];
|
|
38
|
+
if (tableColumns && tableColumns.length !== 0) {
|
|
39
|
+
const dataSource = value.kpiConfig.dataSource.map(obj => {
|
|
40
|
+
const newObj = { ...obj };
|
|
41
|
+
Object.keys(newObj).forEach(key => {
|
|
42
|
+
if (key.toLowerCase().includes('date') && newObj[key]) {
|
|
43
|
+
newObj[key] = moment(newObj[key]).format("YYYY-MM-DD");
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return newObj;
|
|
47
|
+
});
|
|
48
|
+
this.percentageDataSource = this.loadDailyMscVoiceTable(dataSource, columns);
|
|
49
|
+
}
|
|
50
|
+
this.isLoader = false;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
}
|
|
58
|
+
loadDailyMscVoiceTable(data, datacolumns) {
|
|
59
|
+
this.argumentValue = datacolumns.filter((column) => column.isShowBar == false);
|
|
60
|
+
this.dataConfig = datacolumns.filter((column) => column.isShowBar == true);
|
|
61
|
+
let keys = this.dataConfig;
|
|
62
|
+
const result = {};
|
|
63
|
+
let finalDatasource = [];
|
|
64
|
+
data.forEach((elementOne) => {
|
|
65
|
+
keys.forEach((key) => {
|
|
66
|
+
const values = data.map((item) => parseFloat(item[key['dataField']]) || 0);
|
|
67
|
+
const maxValue = Math.max(...values);
|
|
68
|
+
const minValue = Math.min(...values);
|
|
69
|
+
result[key['dataField']] = { maxValue, minValue };
|
|
70
|
+
});
|
|
71
|
+
let obj = {};
|
|
72
|
+
keys.forEach((key) => {
|
|
73
|
+
let widthVal = this.commonService.scaleNumber(parseFloat(elementOne[key['dataField']]), result[key['dataField']]['minValue'], result[key['dataField']]['maxValue'], 10, 75);
|
|
74
|
+
let Bar = this.commonService.createHtml(widthVal, this.commonService.reformatNumberWithThousandSeparator(elementOne[key['dataField']]), key['color']);
|
|
75
|
+
obj[key['dataField']] = Bar;
|
|
76
|
+
});
|
|
77
|
+
this.argumentValue.forEach((element) => {
|
|
78
|
+
obj[element.dataField] = elementOne[element.dataField];
|
|
79
|
+
});
|
|
80
|
+
finalDatasource.push(obj);
|
|
81
|
+
});
|
|
82
|
+
return finalDatasource;
|
|
83
|
+
}
|
|
84
|
+
onRowClick(e) {
|
|
85
|
+
const title_params = e.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']];
|
|
86
|
+
let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;
|
|
87
|
+
let obj = {
|
|
88
|
+
data: e.data,
|
|
89
|
+
keyToPass: this.page_config.kpiConfig.keyToPass,
|
|
90
|
+
tableTitle: (this.page_parms) ? this.page_parms + title : title,
|
|
91
|
+
viewId: this.page_config.viewId,
|
|
92
|
+
drillDownType: "natural",
|
|
93
|
+
drilldownFrom: this.page_config.viewId,
|
|
94
|
+
drilldownTo: "",
|
|
95
|
+
};
|
|
96
|
+
this.oRowClick.emit(obj);
|
|
97
|
+
}
|
|
98
|
+
addMenuItems(e) {
|
|
99
|
+
const title_params = e.row.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']];
|
|
100
|
+
let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;
|
|
101
|
+
if (this.rightClickEnable && e.columnIndex == 0) {
|
|
102
|
+
if (e.target == 'content') {
|
|
103
|
+
if (!e.items)
|
|
104
|
+
e.items = [];
|
|
105
|
+
this.page_config.kpiConfig.contextMenu.forEach(element => {
|
|
106
|
+
if (!this.page_config.kpiConfig.keyToPass.some(key => element.displayKey.includes(key))) {
|
|
107
|
+
e.items.push({
|
|
108
|
+
text: element.displayKey,
|
|
109
|
+
onItemClick: () => {
|
|
110
|
+
let rightclickData = {
|
|
111
|
+
data: e.row.data,
|
|
112
|
+
keyToPass: this.page_config.kpiConfig.keyToPass,
|
|
113
|
+
tableTitle: (this.page_parms) ? this.page_parms + title : title,
|
|
114
|
+
viewId: this.page_config.viewId,
|
|
115
|
+
drillDownType: "context",
|
|
116
|
+
drilldownFrom: this.page_config.viewId,
|
|
117
|
+
drilldownTo: element.viewId,
|
|
118
|
+
};
|
|
119
|
+
this.onrightClickContextSelection.emit(rightclickData);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
setTableHeight(value) {
|
|
128
|
+
const tableHeight = value;
|
|
129
|
+
if (tableHeight === 'auto') {
|
|
130
|
+
return 'auto';
|
|
131
|
+
}
|
|
132
|
+
const parsedHeight = Number(tableHeight);
|
|
133
|
+
if (!isNaN(parsedHeight) && parsedHeight > 0) {
|
|
134
|
+
return parsedHeight;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
GammaTableClumnBarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaTableClumnBarChartComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
139
|
+
GammaTableClumnBarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaTableClumnBarChartComponent, selector: "app-gamma-table-clumn-bar-chart", inputs: { rightClickEnable: "rightClickEnable", chartDataSource: "chartDataSource" }, outputs: { getTableConfigOutPut: "getTableConfigOutPut", oRowClick: "oRowClick", onrightClickContextSelection: "onrightClickContextSelection" }, ngImport: i0, template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onRowClick)=\"onRowClick($event)\" [dataSource]=\"percentageDataSource\"\n (onContextMenuPreparing)=\"addMenuItems($event)\" [rowAlternationEnabled]=\"true\" [height]=\"tableHeight\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\"\n [customizeExportData]=\"commonService.removeHtmlContentFromData\">\n <!-- <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export> -->\n <!-- <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel> -->\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\" [caption]=\"item.caption\"\n [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ item.dataField }}\"\n alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div>", 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.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: i7.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: i8.LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i9.contentSafeHtml, name: "contentSafeHtml" }] });
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaTableClumnBarChartComponent, decorators: [{
|
|
141
|
+
type: Component,
|
|
142
|
+
args: [{ selector: 'app-gamma-table-clumn-bar-chart', template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onRowClick)=\"onRowClick($event)\" [dataSource]=\"percentageDataSource\"\n (onContextMenuPreparing)=\"addMenuItems($event)\" [rowAlternationEnabled]=\"true\" [height]=\"tableHeight\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\"\n [customizeExportData]=\"commonService.removeHtmlContentFromData\">\n <!-- <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export> -->\n <!-- <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel> -->\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\" [caption]=\"item.caption\"\n [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ item.dataField }}\"\n alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div>" }]
|
|
143
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }, { type: i3.DomSanitizer }]; }, propDecorators: { getTableConfigOutPut: [{
|
|
144
|
+
type: Output
|
|
145
|
+
}], oRowClick: [{
|
|
146
|
+
type: Output
|
|
147
|
+
}], onrightClickContextSelection: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}], rightClickEnable: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], chartDataSource: [{
|
|
152
|
+
type: Input,
|
|
153
|
+
args: ['chartDataSource']
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS1jbHVtbi1iYXItY2hhcnQvZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS1jbHVtbi1iYXItY2hhcnQvZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxNQUFNLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7O0FBT25FLE1BQU0sT0FBTyxnQ0FBZ0M7SUEyRTNDLFlBQ1MsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsU0FBdUI7UUFGeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBbkVoQix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsaUNBQTRCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0UscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBNEQxQyxvQkFBZSxHQUFRLEVBQUUsQ0FBQztJQUt0QixDQUFDO0lBaEVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFHdkIs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IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuLy8gaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbW9tZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLXRhYmxlLWNsdW1uLWJhci1jaGFydC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEdhbW1hVGFibGVDbHVtbkJhckNoYXJ0Q29tcG9uZW50IHtcbiAgZGF0YUNvbmZpZzogYW55O1xuICBhcmd1bWVudFZhbHVlOiBhbnk7XG4gIHBlcmNlbnRhZ2VEYXRhU291cmNlOiBhbnk7XG4gIHRhYmxlQ29uZmlnOiBhbnk7XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIHBhZ2VfcGFybXM6IGFueTtcbiAgdGFibGVIZWlnaHQ6IGFueTtcblxuICBpc0xvYWRlcjogYm9vbGVhblxuICBjdXJyZW50RGF0ZURhdGFcbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRUYWJsZUNvbmZpZ091dFB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb1Jvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvbnJpZ2h0Q2xpY2tDb250ZXh0U2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgcmlnaHRDbGlja0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgLy8gY29uc29sZS5sb2codmFsdWUpO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFnZV9jb25maWcgPSB2YWx1ZTtcbiAgICAgIHRoaXMucGFnZV9wYXJtcyA9IHZhbHVlLnRpdGxlUGFyYW1zO1xuICAgICAgdGhpcy50YWJsZUhlaWdodCA9ICh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy50YWJsZUhlaWdodCAmJiB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy50YWJsZUhlaWdodCAhPT0gXCJcIik/IHRoaXMuc2V0VGFibGVIZWlnaHQodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVIZWlnaHQpOidhdXRvJztcblxuICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmxlbmd0aCAhPT0gMCkge1xuXG5cblxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zO1xuXG5cblxuICAgICAgICBsZXQgbWFpbkRhdGFzb3VyY2U6IGFueTtcblxuICAgICAgICBsZXQgdGFibGVDb2x1bW5zID0gKHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnMpID8gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuY29sdW1ucyA6IFtdO1xuICAgICAgICBpZiAodGFibGVDb2x1bW5zICYmIHRhYmxlQ29sdW1ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubWFwKG9iaiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3T2JqKS5mb3JFYWNoKGtleSA9PiB7XG5cbiAgICAgICAgICAgICAgLy8gY29uc3QgZm91bmRNYXRjaE9iamVjdCA9IHRhYmxlQ29sdW1ucy5maW5kKG9iaiA9PiBvYmouZGF0YUZpZWxkID09PSBrZXkpO1xuICAgICAgICAgICAgICAvLyBpZiAoZm91bmRNYXRjaE9iamVjdCkge1xuICAgICAgICAgICAgICAvLyAgIGlmIChmb3VuZE1hdGNoT2JqZWN0LmVucmljaE5hbWUgJiYgZm91bmRNYXRjaE9iamVjdC5lbnJpY2hOYW1lICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhmb3VuZE1hdGNoT2JqZWN0LmVucmljaE5hbWUpO1xuICAgICAgICAgICAgICAvLyAgICAgbmV3T2JqW2tleV0gPSB0aGlzLmNhbGxTZXJ2aWNlRnVuY3Rpb24oZm91bmRNYXRjaE9iamVjdC5lbnJpY2hOYW1lLCBuZXdPYmpba2V5XSlcbiAgICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAgIC8vIH1cblxuXG4gICAgICAgICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpICYmIG5ld09ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBtb21lbnQobmV3T2JqW2tleV0pLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ld09iajtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBlcmNlbnRhZ2VEYXRhU291cmNlID0gdGhpcy5sb2FkRGFpbHlNc2NWb2ljZVRhYmxlKGRhdGFTb3VyY2UsIGNvbHVtbnMpXG4gICAgICAgIH1cblxuXG5cblxuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuXG4gIHRhYmxlRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cblxuXG4gIGxvYWREYWlseU1zY1ZvaWNlVGFibGUoZGF0YTogYW55W10sIGRhdGFjb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYXJndW1lbnRWYWx1ZSA9IGRhdGFjb2x1bW5zLmZpbHRlcihcbiAgICAgIChjb2x1bW46IGFueSkgPT4gY29sdW1uLmlzU2hvd0JhciA9PSBmYWxzZVxuICAgICk7XG4gICAgdGhpcy5kYXRhQ29uZmlnID0gZGF0YWNvbHVtbnMuZmlsdGVyKFxuICAgICAgKGNvbHVtbjogYW55KSA9PiBjb2x1bW4uaXNTaG93QmFyID09IHRydWVcbiAgICApO1xuICAgIGxldCBrZXlzID0gdGhpcy5kYXRhQ29uZmlnO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGxldCBmaW5hbERhdGFzb3VyY2UgPSBbXTtcbiAgICBkYXRhLmZvckVhY2goKGVsZW1lbnRPbmUpID0+IHtcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGRhdGEubWFwKFxuICAgICAgICAgIChpdGVtKSA9PiBwYXJzZUZsb2F0KGl0ZW1ba2V5WydkYXRhRmllbGQnXV0pIHx8IDBcbiAgICAgICAgKTsgLy8gUGFyc2UgbnVtYmVycyBzYWZlbHlcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG4gICAgICAgIHJlc3VsdFtrZXlbJ2RhdGFGaWVsZCddXSA9IHsgbWF4VmFsdWUsIG1pblZhbHVlIH07XG4gICAgICB9KTtcbiAgICAgIGxldCBvYmogPSB7fTtcbiAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGxldCB3aWR0aFZhbCA9IHRoaXMuY29tbW9uU2VydmljZS5zY2FsZU51bWJlcihcbiAgICAgICAgICBwYXJzZUZsb2F0KGVsZW1lbnRPbmVba2V5WydkYXRhRmllbGQnXV0pLFxuICAgICAgICAgIHJlc3VsdFtrZXlbJ2RhdGFGaWVsZCddXVsnbWluVmFsdWUnXSxcbiAgICAgICAgICByZXN1bHRba2V5WydkYXRhRmllbGQnXV1bJ21heFZhbHVlJ10sXG4gICAgICAgICAgMTAsXG4gICAgICAgICAgNzVcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IEJhciA9IHRoaXMuY29tbW9uU2VydmljZS5jcmVhdGVIdG1sKFxuICAgICAgICAgIHdpZHRoVmFsLFxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihcbiAgICAgICAgICAgIGVsZW1lbnRPbmVba2V5WydkYXRhRmllbGQnXV1cbiAgICAgICAgICApLFxuICAgICAgICAgIGtleVsnY29sb3InXVxuICAgICAgICApO1xuICAgICAgICBvYmpba2V5WydkYXRhRmllbGQnXV0gPSBCYXI7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXJndW1lbnRWYWx1ZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIG9ialtlbGVtZW50LmRhdGFGaWVsZF0gPSBlbGVtZW50T25lW2VsZW1lbnQuZGF0YUZpZWxkXTtcblxuXG4gICAgICB9KTtcbiAgICAgIGZpbmFsRGF0YXNvdXJjZS5wdXNoKG9iaik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbmFsRGF0YXNvdXJjZTtcbiAgfVxuXG5cbiAgb25Sb3dDbGljayhlKSB7XG5cbiAgICBjb25zdCB0aXRsZV9wYXJhbXMgPSBlLmRhdGFbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jb21tb25Db25maWdbJ2RhdGFGaWVsZCddXVxuICAgIGxldCB0aXRsZSA9IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWyd0aXRsZSddICsgdGl0bGVfcGFyYW1zO1xuICAgIGxldCBvYmogPSB7XG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICBrZXlUb1Bhc3M6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmtleVRvUGFzcyxcbiAgICAgIHRhYmxlVGl0bGU6ICh0aGlzLnBhZ2VfcGFybXMpID8gdGhpcy5wYWdlX3Bhcm1zICsgdGl0bGUgOiB0aXRsZSxcbiAgICAgIHZpZXdJZDogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICBkcmlsbERvd25UeXBlOiBcIm5hdHVyYWxcIixcbiAgICAgIGRyaWxsZG93bkZyb206IHRoaXMucGFnZV9jb25maWcudmlld0lkLFxuICAgICAgZHJpbGxkb3duVG86IFwiXCIsXG4gICAgfVxuICAgIHRoaXMub1Jvd0NsaWNrLmVtaXQob2JqKTtcbiAgfVxuXG4gIGFkZE1lbnVJdGVtcyhlKSB7XG5cbiAgICBjb25zdCB0aXRsZV9wYXJhbXMgPSBlLnJvdy5kYXRhW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWydkYXRhRmllbGQnXV1cbiAgICBsZXQgdGl0bGUgPSB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbW1vbkNvbmZpZ1sndGl0bGUnXSArIHRpdGxlX3BhcmFtcztcblxuICAgIGlmICh0aGlzLnJpZ2h0Q2xpY2tFbmFibGUgJiYgZS5jb2x1bW5JbmRleCA9PSAwKSB7XG4gICAgICBpZiAoZS50YXJnZXQgPT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIGlmICghZS5pdGVtcykgZS5pdGVtcyA9IFtdO1xuXG4gICAgICAgIHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmNvbnRleHRNZW51LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5rZXlUb1Bhc3Muc29tZShrZXkgPT4gZWxlbWVudC5kaXNwbGF5S2V5LmluY2x1ZGVzKGtleSkpKSB7XG4gICAgICAgICAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlLZXksXG4gICAgICAgICAgICAgIG9uSXRlbUNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJpZ2h0Y2xpY2tEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgZGF0YTogZS5yb3cuZGF0YSxcbiAgICAgICAgICAgICAgICAgIGtleVRvUGFzczogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzLFxuICAgICAgICAgICAgICAgICAgdGFibGVUaXRsZTogKHRoaXMucGFnZV9wYXJtcykgPyB0aGlzLnBhZ2VfcGFybXMgKyB0aXRsZSA6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgdmlld0lkOiB0aGlzLnBhZ2VfY29uZmlnLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgIGRyaWxsRG93blR5cGU6IFwiY29udGV4dFwiLFxuICAgICAgICAgICAgICAgICAgZHJpbGxkb3duRnJvbTogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICBkcmlsbGRvd25UbzogZWxlbWVudC52aWV3SWQsXG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbnJpZ2h0Q2xpY2tDb250ZXh0U2VsZWN0aW9uLmVtaXQocmlnaHRjbGlja0RhdGEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VGFibGVIZWlnaHQodmFsdWU6IGFueSk6IGFueSB7XG4gIFxuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdmFsdWU7XG4gICAgaWYgKHRhYmxlSGVpZ2h0ID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybiAnYXV0byc7XG4gICAgfVxuICAgICAgY29uc3QgcGFyc2VkSGVpZ2h0ID0gTnVtYmVyKHRhYmxlSGVpZ2h0KTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZEhlaWdodCkgJiYgcGFyc2VkSGVpZ2h0ID4gMCkge1xuICAgICAgcmV0dXJuIHBhcnNlZEhlaWdodDtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm14LTIgYmctZ3JheS04MDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0yXCI+XG4gICAgICAgICAgICA8YXBwLWxvYWRlcj48L2FwcC1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cIm14LTIgcGItMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIFtkYXRhU291cmNlXT1cInBlcmNlbnRhZ2VEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAob25Db250ZXh0TWVudVByZXBhcmluZyk9XCJhZGRNZW51SXRlbXMoJGV2ZW50KVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBpZD1cImdyaWRDb250YWluZXJcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21pemVFeHBvcnREYXRhXT1cImNvbW1vblNlcnZpY2UucmVtb3ZlSHRtbENvbnRlbnRGcm9tRGF0YVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4by1zZWFyY2gtcGFuZWwgW2hpZ2hsaWdodENhc2VTZW5zaXRpdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cInRhYmxlQ29uZmlnLnNlYXJjaFBhbmVsXCI+PC9keG8tc2VhcmNoLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cInt7dGFibGVDb25maWcuZmlsZV9uYW1lfX1cIj48L2R4by1leHBvcnQ+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLm51bWJlck9mUm93XCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnZXIgW3Nob3dJbmZvXT1cInRhYmxlQ29uZmlnLnBhZ2VJbmZvXCIgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJ0YWJsZUNvbmZpZy5hbGxvd2VkUGFnZVNpemVzXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tcGFnZXI+XG4gICAgICAgICAgICAgICAgPGR4by1sb2FkLXBhbmVsIFtlbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8L2R4by1sb2FkLXBhbmVsPiAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFyZ3VtZW50VmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJpdGVtLmRhdGFGaWVsZCA9PSAncmVjb3JkRGF0ZSdcIiBkYXRhRmllbGQ9XCJ7eyBpdGVtLmRhdGFGaWVsZCB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkICE9PSAncmVjb3JkRGF0ZSdcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50PVwibGVmdFwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIiBhbGlnbm1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyRm9yQmFyXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YUNvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgIGl0ZW0uZGF0YUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YS52YWx1ZSB8IGNvbnRlbnRTYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
export class contentSafeHtml {
|
|
5
|
+
constructor(sanitizer) {
|
|
6
|
+
this.sanitizer = sanitizer;
|
|
7
|
+
}
|
|
8
|
+
transform(html) {
|
|
9
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
contentSafeHtml.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: contentSafeHtml, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
13
|
+
contentSafeHtml.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: contentSafeHtml, name: "contentSafeHtml" });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: contentSafeHtml, decorators: [{
|
|
15
|
+
type: Pipe,
|
|
16
|
+
args: [{
|
|
17
|
+
name: 'contentSafeHtml',
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudFNhZmVIdG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS9jb250ZW50U2FmZUh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVdwRCxNQUFNLE9BQU8sZUFBZTtJQUV4QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQzNDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBSTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs0R0FQUSxlQUFlOzBHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFIM0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsaUJBQWlCO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG4vKipcbiAqIEdlbmVyYXRlZCBjbGFzcyBmb3IgdGhlIFNhZmVIdG1sUGlwZSBwaXBlLlxuICpcbiAqIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvUGlwZSBmb3IgbW9yZSBpbmZvIG9uIEFuZ3VsYXIgUGlwZXMuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnY29udGVudFNhZmVIdG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgY29udGVudFNhZmVIdG1sIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtKGh0bWwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import moment from '../../../application-controller/moment-helper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../application-controller/common";
|
|
5
|
+
import * as i2 from "ngx-toastr";
|
|
6
|
+
import * as i3 from "@angular/platform-browser";
|
|
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/data-grid";
|
|
11
|
+
import * as i8 from "../../loader/loader.component";
|
|
12
|
+
import * as i9 from "./contentSafeHtml";
|
|
13
|
+
export class GammaTableWithPercentageComponent {
|
|
14
|
+
constructor(commonService, toastr, sanitizer) {
|
|
15
|
+
this.commonService = commonService;
|
|
16
|
+
this.toastr = toastr;
|
|
17
|
+
this.sanitizer = sanitizer;
|
|
18
|
+
this.getTableConfigOutPut = new EventEmitter();
|
|
19
|
+
this.oRowClick = new EventEmitter();
|
|
20
|
+
this.onrightClickContextSelection = new EventEmitter();
|
|
21
|
+
this.rightClickEnable = true;
|
|
22
|
+
this.tableDataSource = [];
|
|
23
|
+
}
|
|
24
|
+
set chartDataSource(value) {
|
|
25
|
+
if (value === undefined || value.length === 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.isLoader = true;
|
|
30
|
+
this.page_config = value;
|
|
31
|
+
this.page_parms = value.titleParams;
|
|
32
|
+
this.tableHeight = (value.kpiConfig.dataConfig.tableHeight && value.kpiConfig.dataConfig.tableHeight !== "") ? this.setTableHeight(value.kpiConfig.dataConfig.tableHeight) : 'auto';
|
|
33
|
+
this.tableShortBy = (value.kpiConfig.dataConfig.tableSortBy) ? value.kpiConfig.dataConfig['tableSortBy'] : [];
|
|
34
|
+
if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
|
|
35
|
+
this.tableConfig = value.kpiConfig.dataConfig;
|
|
36
|
+
const columns = value.kpiConfig.dataConfig.columns;
|
|
37
|
+
let mainDatasource;
|
|
38
|
+
if (value.kpiConfig.formate == "daily") {
|
|
39
|
+
let tableColumns = (value.kpiConfig.dataConfig.columns) ? value.kpiConfig.dataConfig.columns : [];
|
|
40
|
+
const sortedData = value.kpiConfig.dataSource
|
|
41
|
+
.filter(record => record.recordDate)
|
|
42
|
+
.sort((a, b) => moment(b.recordDate).diff(moment(a.recordDate)));
|
|
43
|
+
const mostRecentRecord = sortedData[0];
|
|
44
|
+
let filteredObjects;
|
|
45
|
+
if (value.endDate) {
|
|
46
|
+
filteredObjects = sortedData.filter(data => data.recordDate === value.endDate);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
filteredObjects = sortedData.filter(data => data.recordDate === mostRecentRecord.recordDate);
|
|
50
|
+
}
|
|
51
|
+
this.percentageDataSource = this.loadDailyMscVoiceTable(filteredObjects, columns);
|
|
52
|
+
this.isLoader = false;
|
|
53
|
+
}
|
|
54
|
+
else if (value.kpiConfig.formate == "monthly") {
|
|
55
|
+
let tableColumns = (value.kpiConfig.dataConfig.columns) ? value.kpiConfig.dataConfig.columns : [];
|
|
56
|
+
if (tableColumns && tableColumns.length !== 0) {
|
|
57
|
+
const dataSource = value.kpiConfig.dataSource.map(obj => {
|
|
58
|
+
const newObj = { ...obj };
|
|
59
|
+
Object.keys(newObj).forEach(key => {
|
|
60
|
+
if (key.toLowerCase().includes('date') && newObj[key]) {
|
|
61
|
+
newObj[key] = moment(newObj[key]).format("YYYY-MM-DD");
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return newObj;
|
|
65
|
+
});
|
|
66
|
+
this.percentageDataSource = this.loadDailyMscVoiceTable(dataSource, columns);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
this.isLoader = false;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ngOnInit() {
|
|
76
|
+
}
|
|
77
|
+
loadDailyMscVoiceTable(data, datacolumns) {
|
|
78
|
+
this.argumentValue = datacolumns.filter((column) => column.isShowBar == false);
|
|
79
|
+
this.dataConfig = datacolumns.filter((column) => column.isShowBar == true);
|
|
80
|
+
let keys = this.dataConfig;
|
|
81
|
+
const result = {};
|
|
82
|
+
let finalDatasource = [];
|
|
83
|
+
data.forEach((elementOne) => {
|
|
84
|
+
keys.forEach((key) => {
|
|
85
|
+
const values = data.map((item) => parseFloat(item[key['dataField']]) || 0);
|
|
86
|
+
const maxValue = Math.max(...values);
|
|
87
|
+
const minValue = Math.min(...values);
|
|
88
|
+
result[key['dataField']] = { maxValue, minValue };
|
|
89
|
+
});
|
|
90
|
+
let obj = {};
|
|
91
|
+
keys.forEach((key) => {
|
|
92
|
+
const rawValue = parseFloat(elementOne[key['dataField']]) || 0;
|
|
93
|
+
const formattedValue = this.commonService.reformatNumberWithThousandSeparator(rawValue);
|
|
94
|
+
const baseWidth = this.commonService.scaleNumber(rawValue, result[key['dataField']]['minValue'], result[key['dataField']]['maxValue'], 10, 75);
|
|
95
|
+
const minWidth = formattedValue.length * 7;
|
|
96
|
+
const finalWidth = Math.max(baseWidth, minWidth);
|
|
97
|
+
const Bar = this.commonService.createHtml(finalWidth, formattedValue, key['color']);
|
|
98
|
+
obj[key['dataField']] = Bar;
|
|
99
|
+
});
|
|
100
|
+
this.argumentValue.forEach((element) => {
|
|
101
|
+
obj[element.dataField] = elementOne[element.dataField];
|
|
102
|
+
});
|
|
103
|
+
finalDatasource.push(obj);
|
|
104
|
+
});
|
|
105
|
+
return finalDatasource;
|
|
106
|
+
}
|
|
107
|
+
onRowClick(e) {
|
|
108
|
+
const title_params = e.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']];
|
|
109
|
+
let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;
|
|
110
|
+
let obj = {
|
|
111
|
+
data: e.data,
|
|
112
|
+
keyToPass: this.page_config.kpiConfig.keyToPass,
|
|
113
|
+
tableTitle: (this.page_parms) ? this.page_parms + title : title,
|
|
114
|
+
viewId: this.page_config.viewId,
|
|
115
|
+
drillDownType: "natural",
|
|
116
|
+
drilldownFrom: this.page_config.viewId,
|
|
117
|
+
drilldownTo: "",
|
|
118
|
+
};
|
|
119
|
+
this.oRowClick.emit(obj);
|
|
120
|
+
}
|
|
121
|
+
addMenuItems(e) {
|
|
122
|
+
const title_params = e.row.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']];
|
|
123
|
+
let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;
|
|
124
|
+
if (this.rightClickEnable && e.columnIndex == 0) {
|
|
125
|
+
if (e.target == 'content') {
|
|
126
|
+
if (!e.items)
|
|
127
|
+
e.items = [];
|
|
128
|
+
this.page_config.kpiConfig.contextMenu.forEach(element => {
|
|
129
|
+
if (!this.page_config.kpiConfig.keyToPass.some(key => element.displayKey.includes(key))) {
|
|
130
|
+
e.items.push({
|
|
131
|
+
text: element.displayKey,
|
|
132
|
+
onItemClick: () => {
|
|
133
|
+
let rightclickData = {
|
|
134
|
+
data: e.row.data,
|
|
135
|
+
keyToPass: this.page_config.kpiConfig.keyToPass,
|
|
136
|
+
tableTitle: (this.page_parms) ? this.page_parms + title : title,
|
|
137
|
+
viewId: this.page_config.viewId,
|
|
138
|
+
drillDownType: "context",
|
|
139
|
+
drilldownFrom: this.page_config.viewId,
|
|
140
|
+
drilldownTo: element.viewId,
|
|
141
|
+
};
|
|
142
|
+
this.onrightClickContextSelection.emit(rightclickData);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
setTableHeight(value) {
|
|
151
|
+
const tableHeight = value;
|
|
152
|
+
if (tableHeight === 'auto') {
|
|
153
|
+
return 'auto';
|
|
154
|
+
}
|
|
155
|
+
const parsedHeight = Number(tableHeight);
|
|
156
|
+
if (!isNaN(parsedHeight) && parsedHeight > 0) {
|
|
157
|
+
return parsedHeight;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
shouldShowColumn(field) {
|
|
161
|
+
let excludedFields = ['recordDate', 'record_date', 'eventDate', 'event_date'];
|
|
162
|
+
if (this.tableShortBy && this.tableShortBy.length !== 0) {
|
|
163
|
+
this.tableShortBy.forEach(element => {
|
|
164
|
+
excludedFields.push(element);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
return !excludedFields.includes(field);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
GammaTableWithPercentageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaTableWithPercentageComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
171
|
+
GammaTableWithPercentageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaTableWithPercentageComponent, selector: "app-gamma-table-with-percentage", inputs: { rightClickEnable: "rightClickEnable", chartDataSource: "chartDataSource" }, outputs: { getTableConfigOutPut: "getTableConfigOutPut", oRowClick: "oRowClick", onrightClickContextSelection: "onrightClickContextSelection" }, ngImport: i0, template: "<!-- <div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onFileSaving)=\"downloadTableData($event)\" [dataSource]=\"percentageDataSource\"\n (onRowClick)=\"onRowClick($event)\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\n [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\" [showRowLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\" (onContextMenuPreparing)=\"addMenuItems($event)\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export>\n <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel>\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\"\n [sortingMethod]=\"commonService.customValueSorter\" [caption]=\"item.caption\"\n dataField=\"{{ item.dataField }}\" alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div> -->\n\n<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onRowClick)=\"onRowClick($event)\" [dataSource]=\"percentageDataSource\" [height]=\"tableHeight\"\n (onContextMenuPreparing)=\"addMenuItems($event)\" [rowAlternationEnabled]=\"true\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\"\n [customizeExportData]=\"commonService.removeHtmlContentFromData\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export>\n <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel>\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"!shouldShowColumn(item.dataField)\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"shouldShowColumn(item.dataField)\" format=\"#,##0.##\" [caption]=\"item.caption\"\n [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ item.dataField }}\"\n alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div>\n\n<!-- (onFileSaving)=\"downloadTableData($event)\" -->", 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.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.DxoLoadPanelComponent, selector: "dxo-load-panel", inputs: ["enabled", "height", "indicatorSrc", "shading", "shadingColor", "showIndicator", "showPane", "text", "width"] }, { 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: i8.LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i9.contentSafeHtml, name: "contentSafeHtml" }] });
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaTableWithPercentageComponent, decorators: [{
|
|
173
|
+
type: Component,
|
|
174
|
+
args: [{ selector: 'app-gamma-table-with-percentage', template: "<!-- <div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onFileSaving)=\"downloadTableData($event)\" [dataSource]=\"percentageDataSource\"\n (onRowClick)=\"onRowClick($event)\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\n [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\" [showRowLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\" (onContextMenuPreparing)=\"addMenuItems($event)\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export>\n <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel>\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\"\n [sortingMethod]=\"commonService.customValueSorter\" [caption]=\"item.caption\"\n dataField=\"{{ item.dataField }}\" alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div> -->\n\n<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onRowClick)=\"onRowClick($event)\" [dataSource]=\"percentageDataSource\" [height]=\"tableHeight\"\n (onContextMenuPreparing)=\"addMenuItems($event)\" [rowAlternationEnabled]=\"true\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\"\n [customizeExportData]=\"commonService.removeHtmlContentFromData\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export>\n <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel>\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"!shouldShowColumn(item.dataField)\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"shouldShowColumn(item.dataField)\" format=\"#,##0.##\" [caption]=\"item.caption\"\n [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ item.dataField }}\"\n alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div>\n\n<!-- (onFileSaving)=\"downloadTableData($event)\" -->" }]
|
|
175
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }, { type: i3.DomSanitizer }]; }, propDecorators: { getTableConfigOutPut: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], oRowClick: [{
|
|
178
|
+
type: Output
|
|
179
|
+
}], onrightClickContextSelection: [{
|
|
180
|
+
type: Output
|
|
181
|
+
}], rightClickEnable: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], chartDataSource: [{
|
|
184
|
+
type: Input,
|
|
185
|
+
args: ['chartDataSource']
|
|
186
|
+
}] } });
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxNQUFNLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTyxpQ0FBaUM7SUE2RTVDLFlBQ1MsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsU0FBdUI7UUFGeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBcEVoQix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsaUNBQTRCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0UscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBNkQxQyxvQkFBZSxHQUFRLEVBQUUsQ0FBQztJQUt0QixDQUFDO0lBakVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFFdkIs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QVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtZQUM1QyxPQUFPLFlBQVksQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBRTVCLElBQUksY0FBYyxHQUFHLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbEMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM5QixDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7OEhBN09VLGlDQUFpQztrSEFBakMsaUNBQWlDLDhTQ1Y5QywyN0tBMkZtRDsyRkRqRnRDLGlDQUFpQztrQkFKN0MsU0FBUzsrQkFDRSxpQ0FBaUM7MkpBZTFCLG9CQUFvQjtzQkFBcEMsTUFBTTtnQkFDVSxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLDRCQUE0QjtzQkFBNUMsTUFBTTtnQkFDRSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUYsZUFBZTtzQkFEbEIsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbW9tZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR2FtbWFUYWJsZVdpdGhQZXJjZW50YWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YUNvbmZpZzogYW55O1xuICBhcmd1bWVudFZhbHVlOiBhbnk7XG4gIHBlcmNlbnRhZ2VEYXRhU291cmNlOiBhbnk7XG4gIHRhYmxlQ29uZmlnOiBhbnk7XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIHBhZ2VfcGFybXM6IGFueTtcbiAgdGFibGVIZWlnaHQ6IGFueTtcbiAgdGFibGVTaG9ydEJ5OiBhbnk7XG5cbiAgaXNMb2FkZXI6IGJvb2xlYW5cbiAgY3VycmVudERhdGVEYXRhXG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0VGFibGVDb25maWdPdXRQdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb25yaWdodENsaWNrQ29udGV4dFNlbGVjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHJpZ2h0Q2xpY2tFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ2NoYXJ0RGF0YVNvdXJjZScpXG4gIHNldCBjaGFydERhdGFTb3VyY2UodmFsdWUpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgdGhpcy5wYWdlX3Bhcm1zID0gdmFsdWUudGl0bGVQYXJhbXM7XG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gKHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnRhYmxlSGVpZ2h0ICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnRhYmxlSGVpZ2h0ICE9PSBcIlwiKSA/IHRoaXMuc2V0VGFibGVIZWlnaHQodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVIZWlnaHQpIDogJ2F1dG8nO1xuICAgICAgdGhpcy50YWJsZVNob3J0QnkgPSAodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVTb3J0QnkpID8gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbJ3RhYmxlU29ydEJ5J10gOiBbXTtcblxuICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zO1xuICAgICAgICBsZXQgbWFpbkRhdGFzb3VyY2U6IGFueTtcblxuICAgICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmZvcm1hdGUgPT0gXCJkYWlseVwiKSB7XG4gICAgICAgICAgbGV0IHRhYmxlQ29sdW1ucyA9ICh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zKSA/IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnMgOiBbXTtcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2VcbiAgICAgICAgICAgIC5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5yZWNvcmREYXRlKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IG1vbWVudChiLnJlY29yZERhdGUpLmRpZmYobW9tZW50KGEucmVjb3JkRGF0ZSkpKTtcbiAgICAgICAgICBjb25zdCBtb3N0UmVjZW50UmVjb3JkID0gc29ydGVkRGF0YVswXTtcbiAgICAgICAgICBsZXQgZmlsdGVyZWRPYmplY3RzOiBhbnk7XG4gICAgICAgICAgaWYgKHZhbHVlLmVuZERhdGUpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkT2JqZWN0cyA9IHNvcnRlZERhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5yZWNvcmREYXRlID09PSB2YWx1ZS5lbmREYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyZWRPYmplY3RzID0gc29ydGVkRGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLnJlY29yZERhdGUgPT09IG1vc3RSZWNlbnRSZWNvcmQucmVjb3JkRGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGVyY2VudGFnZURhdGFTb3VyY2UgPSB0aGlzLmxvYWREYWlseU1zY1ZvaWNlVGFibGUoZmlsdGVyZWRPYmplY3RzLCBjb2x1bW5zKVxuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5rcGlDb25maWcuZm9ybWF0ZSA9PSBcIm1vbnRobHlcIikge1xuICAgICAgICAgIGxldCB0YWJsZUNvbHVtbnMgPSAodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuY29sdW1ucykgPyB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zIDogW107XG4gICAgICAgICAgaWYgKHRhYmxlQ29sdW1ucyAmJiB0YWJsZUNvbHVtbnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubWFwKG9iaiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld09iaiA9IHsgLi4ub2JqIH07XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKG5ld09iaikuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpICYmIG5ld09ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG1vbWVudChuZXdPYmpba2V5XSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gbmV3T2JqO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnBlcmNlbnRhZ2VEYXRhU291cmNlID0gdGhpcy5sb2FkRGFpbHlNc2NWb2ljZVRhYmxlKGRhdGFTb3VyY2UsIGNvbHVtbnMpXG4gICAgICAgICAgfVxuXG5cblxuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuXG4gIHRhYmxlRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cblxuXG4gIC8vIGxvYWREYWlseU1zY1ZvaWNlVGFibGUoZGF0YTogYW55W10sIGRhdGFjb2x1bW5zOiBzdHJpbmdbXSkge1xuICAvLyAgIHRoaXMuYXJndW1lbnRWYWx1ZSA9IGRhdGFjb2x1bW5zLmZpbHRlcihcbiAgLy8gICAgIChjb2x1bW46IGFueSkgPT4gY29sdW1uLmlzU2hvd0JhciA9PSBmYWxzZVxuICAvLyAgICk7XG4gIC8vICAgdGhpcy5kYXRhQ29uZmlnID0gZGF0YWNvbHVtbnMuZmlsdGVyKChjb2x1bW46IGFueSkgPT4gY29sdW1uLmlzU2hvd0JhciA9PSB0cnVlKTtcbiAgLy8gICBsZXQga2V5cyA9IHRoaXMuZGF0YUNvbmZpZztcbiAgLy8gICBjb25zdCByZXN1bHQgPSB7fTtcbiAgLy8gICBsZXQgZmluYWxEYXRhc291cmNlID0gW107XG4gIC8vICAgZGF0YS5mb3JFYWNoKChlbGVtZW50T25lKSA9PiB7XG4gIC8vICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAvLyAgICAgICBjb25zdCB2YWx1ZXMgPSBkYXRhLm1hcCgoaXRlbSkgPT4gcGFyc2VGbG9hdChpdGVtW2tleVsnZGF0YUZpZWxkJ11dKSB8fCAwKTtcbiAgLy8gICAgICAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAvLyAgICAgICBjb25zdCBtaW5WYWx1ZSA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG4gIC8vICAgICAgIHJlc3VsdFtrZXlbJ2RhdGFGaWVsZCddXSA9IHsgbWF4VmFsdWUsIG1pblZhbHVlIH07XG4gIC8vICAgICB9KTtcbiAgLy8gICAgIGxldCBvYmogPSB7fTtcbiAgLy8gICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gIC8vICAgICAgIGxldCB3aWR0aFZhbCA9IHRoaXMuY29tbW9uU2VydmljZS5zY2FsZU51bWJlcihwYXJzZUZsb2F0KGVsZW1lbnRPbmVba2V5WydkYXRhRmllbGQnXV0pLCByZXN1bHRba2V5WydkYXRhRmllbGQnXV1bJ21pblZhbHVlJ10sIHJlc3VsdFtrZXlbJ2RhdGFGaWVsZCddXVsnbWF4VmFsdWUnXSwgMTAsIDc1KTtcbiAgLy8gICAgICAgbGV0IEJhciA9IHRoaXMuY29tbW9uU2VydmljZS5jcmVhdGVIdG1sKHdpZHRoVmFsLCB0aGlzLmNvbW1vblNlcnZpY2UucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoZWxlbWVudE9uZVtrZXlbJ2RhdGFGaWVsZCddXSksIGtleVsnY29sb3InXSk7XG4gIC8vICAgICAgIG9ialtrZXlbJ2RhdGFGaWVsZCddXSA9IEJhcjtcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgdGhpcy5hcmd1bWVudFZhbHVlLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgLy8gICAgICAgb2JqW2VsZW1lbnQuZGF0YUZpZWxkXSA9IGVsZW1lbnRPbmVbZWxlbWVudC5kYXRhRmllbGRdO1xuICAvLyAgICAgfSk7XG4gIC8vICAgICBmaW5hbERhdGFzb3VyY2UucHVzaChvYmopO1xuICAvLyAgIH0pO1xuICAvLyAgIHJldHVybiBmaW5hbERhdGFzb3VyY2U7XG4gIC8vIH1cblxuICBsb2FkRGFpbHlNc2NWb2ljZVRhYmxlKGRhdGE6IGFueVtdLCBkYXRhY29sdW1uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmFyZ3VtZW50VmFsdWUgPSBkYXRhY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBhbnkpID0+IGNvbHVtbi5pc1Nob3dCYXIgPT0gZmFsc2VcbiAgICApO1xuICAgIHRoaXMuZGF0YUNvbmZpZyA9IGRhdGFjb2x1bW5zLmZpbHRlcigoY29sdW1uOiBhbnkpID0+IGNvbHVtbi5pc1Nob3dCYXIgPT0gdHJ1ZSk7XG4gICAgbGV0IGtleXMgPSB0aGlzLmRhdGFDb25maWc7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgbGV0IGZpbmFsRGF0YXNvdXJjZSA9IFtdO1xuICAgIFxuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudE9uZSkgPT4ge1xuICAgICAgLy8gUHJlLWNvbXB1dGUgbWF4IGFuZCBtaW4gdmFsdWVzIGZvciBlYWNoIGNvbHVtblxuICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gZGF0YS5tYXAoKGl0ZW0pID0+IHBhcnNlRmxvYXQoaXRlbVtrZXlbJ2RhdGFGaWVsZCddXSkgfHwgMCk7XG4gICAgICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoLi4udmFsdWVzKTtcbiAgICAgICAgY29uc3QgbWluVmFsdWUgPSBNYXRoLm1pbiguLi52YWx1ZXMpO1xuICAgICAgICByZXN1bHRba2V5WydkYXRhRmllbGQnXV0gPSB7IG1heFZhbHVlLCBtaW5WYWx1ZSB9O1xuICAgICAgfSk7XG4gIFxuICAgICAgbGV0IG9iaiA9IHt9O1xuICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXJzZUZsb2F0KGVsZW1lbnRPbmVba2V5WydkYXRhRmllbGQnXV0pIHx8IDA7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKHJhd1ZhbHVlKTtcbiAgXG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgd2lkdGggZm9yIHRoZSBiYXJcbiAgICAgICAgY29uc3QgYmFzZVdpZHRoID0gdGhpcy5jb21tb25TZXJ2aWNlLnNjYWxlTnVtYmVyKFxuICAgICAgICAgIHJhd1ZhbHVlLCBcbiAgICAgICAgICByZXN1bHRba2V5WydkYXRhRmllbGQnXV1bJ21pblZhbHVlJ10sIFxuICAgICAgICAgIHJlc3VsdFtrZXlbJ2RhdGFGaWVsZCddXVsnbWF4VmFsdWUnXSwgXG4gICAgICAgICAgMTAsIFxuICAgICAgICAgIDc1XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoID0gZm9ybWF0dGVkVmFsdWUubGVuZ3RoICogNztcbiAgICAgICAgY29uc3QgZmluYWxXaWR0aCA9IE1hdGgubWF4KGJhc2VXaWR0aCwgbWluV2lkdGgpO1xuICAgICAgICBjb25zdCBCYXIgPSB0aGlzLmNvbW1vblNlcnZpY2UuY3JlYXRlSHRtbChmaW5hbFdpZHRoLCBmb3JtYXR0ZWRWYWx1ZSwga2V5Wydjb2xvciddKTtcbiAgICAgICAgb2JqW2tleVsnZGF0YUZpZWxkJ11dID0gQmFyO1xuICAgICAgfSk7XG4gIFxuICAgICAgLy8gQWRkIG90aGVyIGFyZ3VtZW50IHZhbHVlcyB0byB0aGUgb2JqZWN0XG4gICAgICB0aGlzLmFyZ3VtZW50VmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBvYmpbZWxlbWVudC5kYXRhRmllbGRdID0gZWxlbWVudE9uZVtlbGVtZW50LmRhdGFGaWVsZF07XG4gICAgICB9KTtcbiAgXG4gICAgICBmaW5hbERhdGFzb3VyY2UucHVzaChvYmopO1xuICAgIH0pO1xuICBcbiAgICByZXR1cm4gZmluYWxEYXRhc291cmNlO1xuICB9XG4gIFxuXG5cbiAgb25Sb3dDbGljayhlKSB7XG5cbiAgICBjb25zdCB0aXRsZV9wYXJhbXMgPSBlLmRhdGFbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jb21tb25Db25maWdbJ2RhdGFGaWVsZCddXVxuICAgIGxldCB0aXRsZSA9IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWyd0aXRsZSddICsgdGl0bGVfcGFyYW1zO1xuICAgIGxldCBvYmogPSB7XG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICBrZXlUb1Bhc3M6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmtleVRvUGFzcyxcbiAgICAgIHRhYmxlVGl0bGU6ICh0aGlzLnBhZ2VfcGFybXMpID8gdGhpcy5wYWdlX3Bhcm1zICsgdGl0bGUgOiB0aXRsZSxcbiAgICAgIHZpZXdJZDogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICBkcmlsbERvd25UeXBlOiBcIm5hdHVyYWxcIixcbiAgICAgIGRyaWxsZG93bkZyb206IHRoaXMucGFnZV9jb25maWcudmlld0lkLFxuICAgICAgZHJpbGxkb3duVG86IFwiXCIsXG4gICAgfVxuICAgIHRoaXMub1Jvd0NsaWNrLmVtaXQob2JqKTtcbiAgfVxuXG4gIGFkZE1lbnVJdGVtcyhlKSB7XG5cbiAgICBjb25zdCB0aXRsZV9wYXJhbXMgPSBlLnJvdy5kYXRhW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWydkYXRhRmllbGQnXV1cbiAgICBsZXQgdGl0bGUgPSB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbW1vbkNvbmZpZ1sndGl0bGUnXSArIHRpdGxlX3BhcmFtcztcblxuICAgIGlmICh0aGlzLnJpZ2h0Q2xpY2tFbmFibGUgJiYgZS5jb2x1bW5JbmRleCA9PSAwKSB7XG4gICAgICBpZiAoZS50YXJnZXQgPT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIGlmICghZS5pdGVtcykgZS5pdGVtcyA9IFtdO1xuXG4gICAgICAgIHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmNvbnRleHRNZW51LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5rZXlUb1Bhc3Muc29tZShrZXkgPT4gZWxlbWVudC5kaXNwbGF5S2V5LmluY2x1ZGVzKGtleSkpKSB7XG4gICAgICAgICAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICB0ZXh0OiBlbGVtZW50LmRpc3BsYXlLZXksXG4gICAgICAgICAgICAgIG9uSXRlbUNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJpZ2h0Y2xpY2tEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgZGF0YTogZS5yb3cuZGF0YSxcbiAgICAgICAgICAgICAgICAgIGtleVRvUGFzczogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzLFxuICAgICAgICAgICAgICAgICAgdGFibGVUaXRsZTogKHRoaXMucGFnZV9wYXJtcykgPyB0aGlzLnBhZ2VfcGFybXMgKyB0aXRsZSA6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgdmlld0lkOiB0aGlzLnBhZ2VfY29uZmlnLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgIGRyaWxsRG93blR5cGU6IFwiY29udGV4dFwiLFxuICAgICAgICAgICAgICAgICAgZHJpbGxkb3duRnJvbTogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICBkcmlsbGRvd25UbzogZWxlbWVudC52aWV3SWQsXG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbnJpZ2h0Q2xpY2tDb250ZXh0U2VsZWN0aW9uLmVtaXQocmlnaHRjbGlja0RhdGEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNldFRhYmxlSGVpZ2h0KHZhbHVlOiBhbnkpOiBhbnkge1xuXG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB2YWx1ZTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuICdhdXRvJztcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkSGVpZ2h0ID0gTnVtYmVyKHRhYmxlSGVpZ2h0KTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZEhlaWdodCkgJiYgcGFyc2VkSGVpZ2h0ID4gMCkge1xuICAgICAgcmV0dXJuIHBhcnNlZEhlaWdodDtcbiAgICB9XG4gIH1cblxuICBzaG91bGRTaG93Q29sdW1uKGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBcbiAgICBsZXQgZXhjbHVkZWRGaWVsZHMgPSBbJ3JlY29yZERhdGUnLCAncmVjb3JkX2RhdGUnLCAnZXZlbnREYXRlJywgJ2V2ZW50X2RhdGUnXTtcbiAgICBpZiAodGhpcy50YWJsZVNob3J0QnkgJiYgdGhpcy50YWJsZVNob3J0QnkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLnRhYmxlU2hvcnRCeS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBleGNsdWRlZEZpZWxkcy5wdXNoKGVsZW1lbnQpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICFleGNsdWRlZEZpZWxkcy5pbmNsdWRlcyhmaWVsZCk7XG4gIH1cblxufSIsIjwhLS0gPGRpdiBjbGFzcz1cIm14LTIgYmctZ3JheS04MDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0yXCI+XG4gICAgICAgICAgICA8YXBwLWxvYWRlcj48L2FwcC1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cIm14LTIgcGItMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIChvbkZpbGVTYXZpbmcpPVwiZG93bmxvYWRUYWJsZURhdGEoJGV2ZW50KVwiIFtkYXRhU291cmNlXT1cInBlcmNlbnRhZ2VEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAob25Sb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIiBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBpZD1cImdyaWRDb250YWluZXJcIiAob25Db250ZXh0TWVudVByZXBhcmluZyk9XCJhZGRNZW51SXRlbXMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbdmlzaWJsZV09XCJ0YWJsZUNvbmZpZy5zZWFyY2hQYW5lbFwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgZmlsZU5hbWU9XCJ7e3RhYmxlQ29uZmlnLmZpbGVfbmFtZX19XCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5udW1iZXJPZlJvd1wiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0YWJsZUNvbmZpZy5wYWdlSW5mb1wiIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRQYWdlU2l6ZXNdPVwidGFibGVDb25maWcuYWxsb3dlZFBhZ2VTaXplc1wiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgICAgIDxkeG8tbG9hZC1wYW5lbCBbZW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tbG9hZC1wYW5lbD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFyZ3VtZW50VmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJpdGVtLmRhdGFGaWVsZCA9PSAncmVjb3JkRGF0ZSdcIiBkYXRhRmllbGQ9XCJ7eyBpdGVtLmRhdGFGaWVsZCB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkICE9PSAncmVjb3JkRGF0ZSdcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCIgW2NhcHRpb25dPVwiaXRlbS5jYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgYWxpZ25tZW50PVwibGVmdFwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIiBhbGlnbm1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyRm9yQmFyXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YUNvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgIGl0ZW0uZGF0YUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YS52YWx1ZSB8IGNvbnRlbnRTYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvZGl2PlxuPC9kaXY+IC0tPlxuXG48ZGl2IGNsYXNzPVwibXgtMiBiZy1ncmF5LTgwMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1zdGFydCBiZy1ncmF5LTgwMCBwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXgtMiBwYi0yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgKG9uUm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCIgW2RhdGFTb3VyY2VdPVwicGVyY2VudGFnZURhdGFTb3VyY2VcIiBbaGVpZ2h0XT1cInRhYmxlSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAob25Db250ZXh0TWVudVByZXBhcmluZyk9XCJhZGRNZW51SXRlbXMoJGV2ZW50KVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbWl6ZUV4cG9ydERhdGFdPVwiY29tbW9uU2VydmljZS5yZW1vdmVIdG1sQ29udGVudEZyb21EYXRhXCI+XG4gICAgICAgICAgICAgICAgPGR4by1zZWFyY2gtcGFuZWwgW2hpZ2hsaWdodENhc2VTZW5zaXRpdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cInRhYmxlQ29uZmlnLnNlYXJjaFBhbmVsXCI+PC9keG8tc2VhcmNoLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cInt7dGFibGVDb25maWcuZmlsZV9uYW1lfX1cIj48L2R4by1leHBvcnQ+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLm51bWJlck9mUm93XCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnZXIgW3Nob3dJbmZvXT1cInRhYmxlQ29uZmlnLnBhZ2VJbmZvXCIgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJ0YWJsZUNvbmZpZy5hbGxvd2VkUGFnZVNpemVzXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tcGFnZXI+XG4gICAgICAgICAgICAgICAgPGR4by1sb2FkLXBhbmVsIFtlbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8L2R4by1sb2FkLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXJndW1lbnRWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIiFzaG91bGRTaG93Q29sdW1uKGl0ZW0uZGF0YUZpZWxkKVwiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwic2hvdWxkU2hvd0NvbHVtbihpdGVtLmRhdGFGaWVsZClcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50PVwibGVmdFwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIiBhbGlnbm1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyRm9yQmFyXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YUNvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgIGl0ZW0uZGF0YUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YS52YWx1ZSB8IGNvbnRlbnRTYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gKG9uRmlsZVNhdmluZyk9XCJkb3dubG9hZFRhYmxlRGF0YSgkZXZlbnQpXCIgLS0+Il19
|