gamma-app-controller 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +24 -0
  2. package/esm2020/gamma-app-controller.mjs +2 -0
  3. package/esm2020/lib/application-controller/app.http.service.mjs +24 -0
  4. package/esm2020/lib/application-controller/application-content.service.mjs +482 -0
  5. package/esm2020/lib/application-controller/application-controller.module.mjs +324 -0
  6. package/esm2020/lib/application-controller/application-dataset-call.service.mjs +321 -0
  7. package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +390 -0
  8. package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +349 -0
  9. package/esm2020/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.mjs +148 -0
  10. package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +167 -0
  11. package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.mjs +17 -0
  12. package/esm2020/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.mjs +57 -0
  13. package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +409 -0
  14. package/esm2020/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.mjs +61 -0
  15. package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +186 -0
  16. package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +134 -0
  17. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +559 -0
  18. package/esm2020/lib/application-controller/common-header/common-header.component.mjs +33 -0
  19. package/esm2020/lib/application-controller/common.mjs +1207 -0
  20. package/esm2020/lib/application-controller/environment.mjs +26 -0
  21. package/esm2020/lib/application-controller/kpi-comon-service.mjs +537 -0
  22. package/esm2020/lib/application-controller/kpi-service.mjs +108 -0
  23. package/esm2020/lib/application-controller/loading/loading.component.mjs +16 -0
  24. package/esm2020/lib/application-controller/loading/loadingModule.mjs +28 -0
  25. package/esm2020/lib/application-controller/moment-helper.mjs +4 -0
  26. package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +977 -0
  27. package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +172 -0
  28. package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs +227 -0
  29. package/esm2020/lib/application-controller/page-templates/dynamic-route-service.mjs +22 -0
  30. package/esm2020/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +118 -0
  31. package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +181 -0
  32. package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +71 -0
  33. package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +266 -0
  34. package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +159 -0
  35. package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +144 -0
  36. package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +20 -0
  37. package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +168 -0
  38. package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +74 -0
  39. package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +118 -0
  40. package/esm2020/lib/application-controller/shared/api.service.mjs +117 -0
  41. package/esm2020/lib/application-controller/shared/app-title/app-title.component.mjs +67 -0
  42. package/esm2020/lib/application-controller/shared/gamam-widget/gamam-widget.component.mjs +37 -0
  43. package/esm2020/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +229 -0
  44. package/esm2020/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +144 -0
  45. package/esm2020/lib/application-controller/shared/kpi-comon-service.mjs +537 -0
  46. package/esm2020/lib/application-controller/shared/loader/loader.component.mjs +14 -0
  47. package/esm2020/lib/application-controller/shared/loading/loading.component.mjs +16 -0
  48. package/esm2020/lib/application-controller/shared/loading/loadingModule.mjs +28 -0
  49. package/esm2020/lib/application-controller/shared/safeHtmlPipe.mjs +20 -0
  50. package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +294 -0
  51. package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +287 -0
  52. package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +255 -0
  53. package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +269 -0
  54. package/esm2020/lib/gamma-app-controller.component.mjs +16 -0
  55. package/esm2020/lib/gamma-app-controller.module.mjs +43 -0
  56. package/esm2020/lib/gamma-app-controller.service.mjs +20 -0
  57. package/esm2020/lib/icons.module.mjs +23 -0
  58. package/esm2020/public-api.mjs +49 -0
  59. package/fesm2015/gamma-app-controller.mjs +10250 -0
  60. package/fesm2015/gamma-app-controller.mjs.map +1 -0
  61. package/fesm2020/gamma-app-controller.mjs +10248 -0
  62. package/fesm2020/gamma-app-controller.mjs.map +1 -0
  63. package/index.d.ts +2 -0
  64. package/lib/application-controller/app.http.service.d.ts +15 -0
  65. package/lib/application-controller/application-content.service.d.ts +79 -0
  66. package/lib/application-controller/application-controller.module.d.ts +51 -0
  67. package/lib/application-controller/application-dataset-call.service.d.ts +20 -0
  68. package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +55 -0
  69. package/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.d.ts +121 -0
  70. package/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.d.ts +38 -0
  71. package/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.d.ts +42 -0
  72. package/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.d.ts +7 -0
  73. package/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.d.ts +21 -0
  74. package/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.d.ts +62 -0
  75. package/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.d.ts +22 -0
  76. package/lib/application-controller/application-filter/application-filter.component.d.ts +36 -0
  77. package/lib/application-controller/application-view-components/application-views/application-views.component.d.ts +47 -0
  78. package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +73 -0
  79. package/lib/application-controller/common-header/common-header.component.d.ts +15 -0
  80. package/lib/application-controller/common.d.ts +148 -0
  81. package/lib/application-controller/environment.d.ts +25 -0
  82. package/lib/application-controller/kpi-comon-service.d.ts +14 -0
  83. package/lib/application-controller/kpi-service.d.ts +6 -0
  84. package/lib/application-controller/loading/loading.component.d.ts +9 -0
  85. package/lib/application-controller/loading/loadingModule.d.ts +10 -0
  86. package/lib/application-controller/moment-helper.d.ts +3 -0
  87. package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +188 -0
  88. package/lib/application-controller/page-controller/page-controller/page-controller.component.d.ts +47 -0
  89. package/lib/application-controller/page-templates/cdr-config/cdr-config.component.d.ts +44 -0
  90. package/lib/application-controller/page-templates/dynamic-route-service.d.ts +8 -0
  91. package/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.d.ts +33 -0
  92. package/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.d.ts +43 -0
  93. package/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +20 -0
  94. package/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.d.ts +51 -0
  95. package/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +32 -0
  96. package/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +31 -0
  97. package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.d.ts +10 -0
  98. package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +26 -0
  99. package/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +21 -0
  100. package/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.d.ts +29 -0
  101. package/lib/application-controller/shared/api.service.d.ts +26 -0
  102. package/lib/application-controller/shared/app-title/app-title.component.d.ts +28 -0
  103. package/lib/application-controller/shared/gamam-widget/gamam-widget.component.d.ts +20 -0
  104. package/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.d.ts +45 -0
  105. package/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.d.ts +32 -0
  106. package/lib/application-controller/shared/kpi-comon-service.d.ts +14 -0
  107. package/lib/application-controller/shared/loader/loader.component.d.ts +8 -0
  108. package/lib/application-controller/shared/loading/loading.component.d.ts +9 -0
  109. package/lib/application-controller/shared/loading/loadingModule.d.ts +10 -0
  110. package/lib/application-controller/shared/safeHtmlPipe.d.ts +10 -0
  111. package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +83 -0
  112. package/lib/application-controller/support-components/dash-table/dash-table.component.d.ts +67 -0
  113. package/lib/application-controller/support-components/geo-map/geo-map.component.d.ts +70 -0
  114. package/lib/application-controller/support-components/table-with-bar/table-with-bar.component.d.ts +70 -0
  115. package/lib/gamma-app-controller.component.d.ts +5 -0
  116. package/lib/gamma-app-controller.module.d.ts +10 -0
  117. package/lib/gamma-app-controller.service.d.ts +7 -0
  118. package/lib/icons.module.d.ts +11 -0
  119. package/package.json +33 -0
  120. package/public-api.d.ts +48 -0
@@ -0,0 +1,168 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import moment from './../../../moment-helper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../common";
5
+ import * as i2 from "ngx-toastr";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "devextreme-angular/core";
8
+ import * as i5 from "devextreme-angular/ui/nested";
9
+ import * as i6 from "devextreme-angular/ui/data-grid";
10
+ import * as i7 from "../../loader/loader.component";
11
+ import * as i8 from "./contentSafeHtml";
12
+ export class GammaTableWithPercentageComponent {
13
+ constructor(commonService, toastr) {
14
+ this.commonService = commonService;
15
+ this.toastr = toastr;
16
+ this.data = [
17
+ {
18
+ eventType: "Voice",
19
+ access_cost_sar: 767.7730000000023,
20
+ event_type: '1',
21
+ ict_cost_sar: 7232,
22
+ margin_sar: 2445.7730000000023,
23
+ revenue: 5232
24
+ },
25
+ {
26
+ eventType: "SMS",
27
+ access_cost_sar: 345.7730000000023,
28
+ event_type: '2',
29
+ ict_cost_sar: 35654,
30
+ margin_sar: 2445.7730000000023,
31
+ revenue: 55654
32
+ },
33
+ {
34
+ eventType: "GPRS",
35
+ access_cost_sar: 567.7730000000023,
36
+ event_type: '3',
37
+ ict_cost_sar: 89387,
38
+ margin_sar: 5445.7730000000023,
39
+ revenue: 99387
40
+ }
41
+ ];
42
+ this.tableDataSource = [];
43
+ }
44
+ set chartDataSource(value) {
45
+ if (value === undefined || value.length === 0) {
46
+ return;
47
+ }
48
+ else {
49
+ this.isLoader = true;
50
+ if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
51
+ const sortedData = value.kpiConfig.dataSource.sort((a, b) => {
52
+ return moment(b.recordDate, "YYYY-MM-DD").diff(moment(a.recordDate, "YYYY-MM-DD"));
53
+ });
54
+ value.kpiConfig.dataSource.forEach(item => item.recordDate = new Date(item.recordDate));
55
+ value.kpiConfig.dataSource.sort((a, b) => b.recordDate - a.recordDate);
56
+ const uniqueEvents = new Map();
57
+ value.kpiConfig.dataSource.forEach(item => {
58
+ if (!uniqueEvents.has(item.eventTypeKey)) {
59
+ uniqueEvents.set(item.eventTypeKey, item);
60
+ }
61
+ });
62
+ const result = Array.from(uniqueEvents.values());
63
+ this.loadDailyMscVoiceTable(result);
64
+ this.isLoader = false;
65
+ }
66
+ else {
67
+ }
68
+ }
69
+ }
70
+ ngOnInit() {
71
+ }
72
+ loadDailyMscVoiceTable(data) {
73
+ this.tableDataSource = [];
74
+ let dataset = [];
75
+ let column1Name = 'access_cost_sar';
76
+ let column2Name = 'ict_cost_sar';
77
+ let column3Name = 'margin_sar';
78
+ let column4Name = 'revenue';
79
+ let revenueArr = [], interConnectArr = [], accessCostArr = [], marginArr = [];
80
+ for (const [i, v] of Object.entries(data)) {
81
+ if (v[column1Name] == undefined) {
82
+ v[column1Name] = 0;
83
+ }
84
+ if (v[column2Name] == undefined) {
85
+ v[column2Name] = 0;
86
+ }
87
+ if (v[column3Name] == undefined) {
88
+ v[column3Name] = 0;
89
+ }
90
+ if (v[column4Name] == undefined) {
91
+ v[column4Name] = 0;
92
+ }
93
+ accessCostArr.push(v[column1Name]);
94
+ interConnectArr.push(v[column2Name]);
95
+ marginArr.push(v[column3Name]);
96
+ revenueArr.push(v[column4Name]);
97
+ }
98
+ let maxAccessCostVal = Math.max.apply(Math, accessCostArr);
99
+ let minAccessCostVal = Math.min.apply(Math, accessCostArr);
100
+ let maxinterConnectVal = Math.max.apply(Math, interConnectArr);
101
+ let mininterConnectVal = Math.min.apply(Math, interConnectArr);
102
+ let maxmarginVal = Math.max.apply(Math, marginArr);
103
+ let minmarginVal = Math.min.apply(Math, marginArr);
104
+ let maxRevenueVal = Math.max.apply(Math, revenueArr);
105
+ let minRevenueVal = Math.min.apply(Math, revenueArr);
106
+ for (const [i, v] of Object.entries(data)) {
107
+ let r = [];
108
+ let accessCostValue, interConnectValue, marginValue, revenueValue;
109
+ if (v[column1Name] > 0) {
110
+ accessCostValue = this.commonService.scaleNumber(parseFloat(v[column1Name]), maxAccessCostVal, minAccessCostVal, 10, 75);
111
+ }
112
+ else {
113
+ accessCostValue = 0;
114
+ }
115
+ if (v[column2Name] > 0) {
116
+ interConnectValue = this.commonService.scaleNumber(parseFloat(v[column2Name]), maxinterConnectVal, mininterConnectVal, 10, 75);
117
+ }
118
+ else {
119
+ interConnectValue = 0;
120
+ }
121
+ if (v[column3Name] > 0) {
122
+ marginValue = this.commonService.scaleNumber(parseFloat(v[column3Name]), maxmarginVal, minmarginVal, 10, 75);
123
+ }
124
+ else {
125
+ marginValue = 0;
126
+ }
127
+ if (v[column4Name] > 0) {
128
+ revenueValue = this.commonService.scaleNumber(parseFloat(v[column4Name]), maxRevenueVal, minRevenueVal, 10, 75);
129
+ }
130
+ else {
131
+ revenueValue = 0;
132
+ }
133
+ let accessCostBar = this.commonService.createHtml(accessCostValue, this.commonService.reformatNumberWithThousandSeparator(v[column1Name]), '#002E70');
134
+ let interconnectBar = this.commonService.createHtml(interConnectValue, this.commonService.reformatNumberWithThousandSeparator(v[column2Name]), '#F46604');
135
+ let marginBar = this.commonService.createHtml(marginValue, this.commonService.reformatNumberWithThousandSeparator(v[column3Name]), '#3d8706');
136
+ let revenueBar = this.commonService.createHtml(revenueValue, this.commonService.reformatNumberWithThousandSeparator(v[column4Name]), '#ffac42');
137
+ let node = {
138
+ 'eventType': this.getEventTypeName(v['eventTypeKey']),
139
+ 'access_cost_sar': accessCostBar,
140
+ 'margin_sar': marginBar,
141
+ 'ict_cost_sar': interconnectBar,
142
+ 'revenue': revenueBar,
143
+ };
144
+ this.tableDataSource.push(node);
145
+ }
146
+ }
147
+ getEventTypeName(key) {
148
+ if (key == "1") {
149
+ return "Voice";
150
+ }
151
+ else if (key == "2") {
152
+ return "SMS";
153
+ }
154
+ else {
155
+ return "GPRS";
156
+ }
157
+ }
158
+ }
159
+ GammaTableWithPercentageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GammaTableWithPercentageComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
160
+ GammaTableWithPercentageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GammaTableWithPercentageComponent, selector: "app-gamma-table-with-percentage", inputs: { chartDataSource: "chartDataSource" }, ngImport: i0, template: "<div class=\"mx-2\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"tableDataSource\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [height]=\"370\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-paging [pageSize]=\"7\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"false\">\n </dxo-pager>\n <dxo-selection mode=\"single\"></dxo-selection>\n <dxi-column dataField=\"eventType\"></dxi-column>\n <dxi-column dataField=\"access_cost_sar\" cellTemplate=\"cellTemplate1\"></dxi-column>\n <dxi-column dataField=\"margin_sar\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"ict_cost_sar\" cellTemplate=\"cellTemplate3\"></dxi-column>\n <dxi-column dataField=\"revenue\" cellTemplate=\"cellTemplate4\"></dxi-column>\n\n\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate3'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate4'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n\n </dx-data-grid>\n </ng-container>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { 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: i5.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: i5.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i5.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i5.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i5.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i7.LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i8.contentSafeHtml, name: "contentSafeHtml" }] });
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GammaTableWithPercentageComponent, decorators: [{
162
+ type: Component,
163
+ args: [{ selector: 'app-gamma-table-with-percentage', template: "<div class=\"mx-2\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"tableDataSource\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [height]=\"370\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-paging [pageSize]=\"7\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"false\">\n </dxo-pager>\n <dxo-selection mode=\"single\"></dxo-selection>\n <dxi-column dataField=\"eventType\"></dxi-column>\n <dxi-column dataField=\"access_cost_sar\" cellTemplate=\"cellTemplate1\"></dxi-column>\n <dxi-column dataField=\"margin_sar\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"ict_cost_sar\" cellTemplate=\"cellTemplate3\"></dxi-column>\n <dxi-column dataField=\"revenue\" cellTemplate=\"cellTemplate4\"></dxi-column>\n\n\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate3'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate4'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n\n </dx-data-grid>\n </ng-container>\n\n</div>" }]
164
+ }], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }]; }, propDecorators: { chartDataSource: [{
165
+ type: Input,
166
+ args: ['chartDataSource']
167
+ }] } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlL2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLE1BQU0sTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQVE5QyxNQUFNLE9BQU8saUNBQWlDO0lBeUU1QyxZQUNTLGFBQTRCLEVBQzNCLE1BQXFCO1FBRHRCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUExRS9CLFNBQUksR0FBRztZQUNMO2dCQUNFLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixlQUFlLEVBQUUsaUJBQWlCO2dCQUNsQyxVQUFVLEVBQUUsR0FBRztnQkFDZixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsT0FBTyxFQUFFLElBQUk7YUFFZDtZQUNEO2dCQUNFLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixlQUFlLEVBQUUsaUJBQWlCO2dCQUNsQyxVQUFV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QUMsV0FBVyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5SSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVoSixJQUFJLElBQUksR0FBRztnQkFDVCxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckQsaUJBQWlCLEVBQUUsYUFBYTtnQkFDaEMsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLGNBQWMsRUFBRSxlQUFlO2dCQUMvQixTQUFTLEVBQUUsVUFBVTthQUN0QixDQUFDO1lBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFFSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsR0FBRztRQUVsQixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDZCxPQUFPLE9BQU8sQ0FBQTtTQUNmO2FBQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBTTtZQUNMLE9BQU8sTUFBTSxDQUFBO1NBQ2Q7SUFDSCxDQUFDOzs4SEE5S1UsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsdUhDVjlDLDQxREFvQ007MkZEMUJPLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxpQ0FBaUM7Z0lBc0N2QyxlQUFlO3NCQURsQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLy4uLy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR2FtbWFUYWJsZVdpdGhQZXJjZW50YWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YSA9IFtcbiAgICB7XG4gICAgICBldmVudFR5cGU6IFwiVm9pY2VcIixcbiAgICAgIGFjY2Vzc19jb3N0X3NhcjogNzY3Ljc3MzAwMDAwMDAwMjMsXG4gICAgICBldmVudF90eXBlOiAnMScsXG4gICAgICBpY3RfY29zdF9zYXI6IDcyMzIsXG4gICAgICBtYXJnaW5fc2FyOiAyNDQ1Ljc3MzAwMDAwMDAwMjMsXG4gICAgICByZXZlbnVlOiA1MjMyXG5cbiAgICB9LFxuICAgIHtcbiAgICAgIGV2ZW50VHlwZTogXCJTTVNcIixcbiAgICAgIGFjY2Vzc19jb3N0X3NhcjogMzQ1Ljc3MzAwMDAwMDAwMjMsXG4gICAgICBldmVudF90eXBlOiAnMicsXG4gICAgICBpY3RfY29zdF9zYXI6IDM1NjU0LFxuICAgICAgbWFyZ2luX3NhcjogMjQ0NS43NzMwMDAwMDAwMDIzLFxuICAgICAgcmV2ZW51ZTogNTU2NTRcblxuICAgIH0sXG4gICAge1xuICAgICAgZXZlbnRUeXBlOiBcIkdQUlNcIixcbiAgICAgIGFjY2Vzc19jb3N0X3NhcjogNTY3Ljc3MzAwMDAwMDAwMjMsXG4gICAgICBldmVudF90eXBlOiAnMycsXG4gICAgICBpY3RfY29zdF9zYXI6IDg5Mzg3LFxuICAgICAgbWFyZ2luX3NhcjogNTQ0NS43NzMwMDAwMDAwMDIzLFxuICAgICAgcmV2ZW51ZTogOTkzODdcblxuICAgIH1cbiAgXVxuXG4gIGlzTG9hZGVyOiBib29sZWFuXG4gIGN1cnJlbnREYXRlRGF0YVxuICBASW5wdXQoJ2NoYXJ0RGF0YVNvdXJjZScpXG4gIHNldCBjaGFydERhdGFTb3VyY2UodmFsdWUpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuXG4gICAgICAvLyB0aGlzLmtleVRvcGFzcyA9IHZhbHVlLmtwaUNvbmZpZy5rZXlUb1Bhc3M7XG4gICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG1vbWVudChiLnJlY29yZERhdGUsIFwiWVlZWS1NTS1ERFwiKS5kaWZmKG1vbWVudChhLnJlY29yZERhdGUsIFwiWVlZWS1NTS1ERFwiKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5yZWNvcmREYXRlID0gbmV3IERhdGUoaXRlbS5yZWNvcmREYXRlKSk7XG4gICAgICAgIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLnNvcnQoKGEsIGIpID0+IGIucmVjb3JkRGF0ZSAtIGEucmVjb3JkRGF0ZSk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgbWFwIHRvIHN0b3JlIHRoZSBtb3N0IHJlY2VudCBlbnRyeSBmb3IgZWFjaCB1bmlxdWUgZXZlbnRUeXBlS2V5XG4gICAgICAgIGNvbnN0IHVuaXF1ZUV2ZW50cyA9IG5ldyBNYXAoKTtcblxuICAgICAgICB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmICghdW5pcXVlRXZlbnRzLmhhcyhpdGVtLmV2ZW50VHlwZUtleSkpIHtcbiAgICAgICAgICAgIHVuaXF1ZUV2ZW50cy5zZXQoaXRlbS5ldmVudFR5cGVLZXksIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29udmVydCB0aGUgbWFwIHZhbHVlcyB0byBhbiBhcnJheVxuICAgICAgICBjb25zdCByZXN1bHQgPSBBcnJheS5mcm9tKHVuaXF1ZUV2ZW50cy52YWx1ZXMoKSk7XG4gICAgICAgIC8vIFN0ZXAgMjogR2V0IHRoZSBtb3N0IHJlY2VudCBhbmQgcHJldmlvdXMgZGF0ZXNcbiAgICAgICAgdGhpcy5sb2FkRGFpbHlNc2NWb2ljZVRhYmxlKHJlc3VsdClcblxuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuXG4gIHRhYmxlRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gdGhpcy5sb2FkRGFpbHlNc2NWb2ljZVRhYmxlKHRoaXMuZGF0YSlcbiAgfVxuXG4gIGxvYWREYWlseU1zY1ZvaWNlVGFibGUoZGF0YSkge1xuXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UgPSBbXTtcblxuXG4gICAgbGV0IGRhdGFzZXQgPSBbXTtcbiAgICBsZXQgY29sdW1uMU5hbWUgPSAnYWNjZXNzX2Nvc3Rfc2FyJztcbiAgICBsZXQgY29sdW1uMk5hbWUgPSAnaWN0X2Nvc3Rfc2FyJztcbiAgICBsZXQgY29sdW1uM05hbWUgPSAnbWFyZ2luX3Nhcic7XG4gICAgbGV0IGNvbHVtbjROYW1lID0gJ3JldmVudWUnO1xuICAgIGxldCByZXZlbnVlQXJyID0gW10sIGludGVyQ29ubmVjdEFyciA9IFtdLCBhY2Nlc3NDb3N0QXJyID0gW10sIG1hcmdpbkFyciA9IFtdO1xuICAgIGZvciAoY29uc3QgW2ksIHZdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgICBpZiAodltjb2x1bW4xTmFtZV0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZbY29sdW1uMU5hbWVdID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh2W2NvbHVtbjJOYW1lXSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdltjb2x1bW4yTmFtZV0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHZbY29sdW1uM05hbWVdID09IHVuZGVmaW5lZCkge1xuICAgICAgICB2W2NvbHVtbjNOYW1lXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodltjb2x1bW40TmFtZV0gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZbY29sdW1uNE5hbWVdID0gMDtcbiAgICAgIH1cbiAgICAgIGFjY2Vzc0Nvc3RBcnIucHVzaCh2W2NvbHVtbjFOYW1lXSk7XG4gICAgICBpbnRlckNvbm5lY3RBcnIucHVzaCh2W2NvbHVtbjJOYW1lXSk7XG4gICAgICBtYXJnaW5BcnIucHVzaCh2W2NvbHVtbjNOYW1lXSk7XG4gICAgICByZXZlbnVlQXJyLnB1c2godltjb2x1bW40TmFtZV0pO1xuICAgIH1cbiAgICBsZXQgbWF4QWNjZXNzQ29zdFZhbCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIGFjY2Vzc0Nvc3RBcnIpO1xuICAgIGxldCBtaW5BY2Nlc3NDb3N0VmFsID0gTWF0aC5taW4uYXBwbHkoTWF0aCwgYWNjZXNzQ29zdEFycik7XG4gICAgbGV0IG1heGludGVyQ29ubmVjdFZhbCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIGludGVyQ29ubmVjdEFycik7XG4gICAgbGV0IG1pbmludGVyQ29ubmVjdFZhbCA9IE1hdGgubWluLmFwcGx5KE1hdGgsIGludGVyQ29ubmVjdEFycik7XG4gICAgbGV0IG1heG1hcmdpblZhbCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIG1hcmdpbkFycik7XG4gICAgbGV0IG1pbm1hcmdpblZhbCA9IE1hdGgubWluLmFwcGx5KE1hdGgsIG1hcmdpbkFycik7XG4gICAgbGV0IG1heFJldmVudWVWYWwgPSBNYXRoLm1heC5hcHBseShNYXRoLCByZXZlbnVlQXJyKTtcbiAgICBsZXQgbWluUmV2ZW51ZVZhbCA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHJldmVudWVBcnIpO1xuXG5cbiAgICBmb3IgKGNvbnN0IFtpLCB2XSBvZiBPYmplY3QuZW50cmllcyhkYXRhKSkge1xuICAgICAgbGV0IHIgPSBbXTtcbiAgICAgIGxldCBhY2Nlc3NDb3N0VmFsdWUsIGludGVyQ29ubmVjdFZhbHVlLCBtYXJnaW5WYWx1ZSwgcmV2ZW51ZVZhbHVlO1xuXG4gICAgICBpZiAodltjb2x1bW4xTmFtZV0gPiAwKSB7XG4gICAgICAgIGFjY2Vzc0Nvc3RWYWx1ZSA9IHRoaXMuY29tbW9uU2VydmljZS5zY2FsZU51bWJlcihwYXJzZUZsb2F0KHZbY29sdW1uMU5hbWVdKSwgbWF4QWNjZXNzQ29zdFZhbCwgbWluQWNjZXNzQ29zdFZhbCwgMTAsIDc1KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY2Vzc0Nvc3RWYWx1ZSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodltjb2x1bW4yTmFtZV0gPiAwKSB7XG4gICAgICAgIGludGVyQ29ubmVjdFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlLnNjYWxlTnVtYmVyKHBhcnNlRmxvYXQodltjb2x1bW4yTmFtZV0pLCBtYXhpbnRlckNvbm5lY3RWYWwsIG1pbmludGVyQ29ubmVjdFZhbCwgMTAsIDc1KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVyQ29ubmVjdFZhbHVlID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh2W2NvbHVtbjNOYW1lXSA+IDApIHtcbiAgICAgICAgbWFyZ2luVmFsdWUgPSB0aGlzLmNvbW1vblNlcnZpY2Uuc2NhbGVOdW1iZXIocGFyc2VGbG9hdCh2W2NvbHVtbjNOYW1lXSksIG1heG1hcmdpblZhbCwgbWlubWFyZ2luVmFsLCAxMCwgNzUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFyZ2luVmFsdWUgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHZbY29sdW1uNE5hbWVdID4gMCkge1xuICAgICAgICByZXZlbnVlVmFsdWUgPSB0aGlzLmNvbW1vblNlcnZpY2Uuc2NhbGVOdW1iZXIocGFyc2VGbG9hdCh2W2NvbHVtbjROYW1lXSksIG1heFJldmVudWVWYWwsIG1pblJldmVudWVWYWwsIDEwLCA3NSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZlbnVlVmFsdWUgPSAwO1xuICAgICAgfVxuXG4gICAgICBsZXQgYWNjZXNzQ29zdEJhciA9IHRoaXMuY29tbW9uU2VydmljZS5jcmVhdGVIdG1sKGFjY2Vzc0Nvc3RWYWx1ZSwgdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKHZbY29sdW1uMU5hbWVdKSwgJyMwMDJFNzAnKTtcbiAgICAgIGxldCBpbnRlcmNvbm5lY3RCYXIgPSB0aGlzLmNvbW1vblNlcnZpY2UuY3JlYXRlSHRtbChpbnRlckNvbm5lY3RWYWx1ZSwgdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKHZbY29sdW1uMk5hbWVdKSwgJyNGNDY2MDQnKTtcbiAgICAgIGxldCBtYXJnaW5CYXIgPSB0aGlzLmNvbW1vblNlcnZpY2UuY3JlYXRlSHRtbChtYXJnaW5WYWx1ZSwgdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yKHZbY29sdW1uM05hbWVdKSwgJyMzZDg3MDYnKTtcbiAgICAgIGxldCByZXZlbnVlQmFyID0gdGhpcy5jb21tb25TZXJ2aWNlLmNyZWF0ZUh0bWwocmV2ZW51ZVZhbHVlLCB0aGlzLmNvbW1vblNlcnZpY2UucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3Iodltjb2x1bW40TmFtZV0pLCAnI2ZmYWM0MicpO1xuXG4gICAgICBsZXQgbm9kZSA9IHtcbiAgICAgICAgJ2V2ZW50VHlwZSc6IHRoaXMuZ2V0RXZlbnRUeXBlTmFtZSh2WydldmVudFR5cGVLZXknXSksXG4gICAgICAgICdhY2Nlc3NfY29zdF9zYXInOiBhY2Nlc3NDb3N0QmFyLFxuICAgICAgICAnbWFyZ2luX3Nhcic6IG1hcmdpbkJhcixcbiAgICAgICAgJ2ljdF9jb3N0X3Nhcic6IGludGVyY29ubmVjdEJhcixcbiAgICAgICAgJ3JldmVudWUnOiByZXZlbnVlQmFyLFxuICAgICAgfTtcblxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UucHVzaChub2RlKTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgZ2V0RXZlbnRUeXBlTmFtZShrZXkpIHtcblxuICAgIGlmIChrZXkgPT0gXCIxXCIpIHtcbiAgICAgIHJldHVybiBcIlZvaWNlXCJcbiAgICB9IGVsc2UgaWYgKGtleSA9PSBcIjJcIikge1xuICAgICAgcmV0dXJuIFwiU01TXCJcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiR1BSU1wiXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVyXCI+XG4gICAgICAgIDxhcHAtbG9hZGVyPjwvYXBwLWxvYWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhU291cmNlXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiXG4gICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiIFtoZWlnaHRdPVwiMzcwXCI+XG4gICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIj48L2R4by1leHBvcnQ+XG4gICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiN1wiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgIDxkeG8tcGFnZXIgW3Nob3dJbmZvXT1cInRydWVcIiBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gbW9kZT1cInNpbmdsZVwiPjwvZHhvLXNlbGVjdGlvbj5cbiAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImV2ZW50VHlwZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjY2Vzc19jb3N0X3NhclwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTFcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJtYXJnaW5fc2FyXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlMlwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImljdF9jb3N0X3NhclwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTNcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJyZXZlbnVlXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlNFwiPjwvZHhpLWNvbHVtbj5cblxuXG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZTEnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGEudmFsdWUgfCBjb250ZW50U2FmZUh0bWxcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUyJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJkYXRhLnZhbHVlIHwgY29udGVudFNhZmVIdG1sXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlMydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGF0YS52YWx1ZSB8IGNvbnRlbnRTYWZlSHRtbFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZTQnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGEudmFsdWUgfCBjb250ZW50U2FmZUh0bWxcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj4iXX0=
@@ -0,0 +1,74 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import moment from './../../../moment-helper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../common";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "../../loader/loader.component";
7
+ export class GammaTodayPreviousComponent {
8
+ constructor(cdr, commonService) {
9
+ this.cdr = cdr;
10
+ this.commonService = commonService;
11
+ }
12
+ set chartDataSource(value) {
13
+ this.objectdataSource = value;
14
+ if (this.objectdataSource === undefined || this.objectdataSource.length === 0) {
15
+ this.isChartvisible = false;
16
+ return;
17
+ }
18
+ else {
19
+ this.isLoader = true;
20
+ if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
21
+ this.page_config = value;
22
+ const sortedData = value.kpiConfig.dataSource.sort((a, b) => {
23
+ return moment(b.recordDate, "YYYY-MM-DD").diff(moment(a.recordDate, "YYYY-MM-DD"));
24
+ });
25
+ this.currentDateData = sortedData[0];
26
+ this.prevousDaysData = sortedData[1];
27
+ let calValue = Math.abs((parseInt(this.getDynamicValue(this.currentDateData)) - parseInt(this.getDynamicValue(this.prevousDaysData))) / parseInt(this.getDynamicValue(this.currentDateData)));
28
+ this.calculatedValue = this.commonService.reformatNumberWithThousandSeparatorV4(calValue, 3);
29
+ this.isLoader = false;
30
+ }
31
+ else {
32
+ }
33
+ }
34
+ }
35
+ ngOnInit() {
36
+ }
37
+ getDynamicValue(data) {
38
+ const keys = Object.keys(data);
39
+ const dynamicKey = keys.find(key => !key.toLowerCase().includes('date'));
40
+ if (dynamicKey) {
41
+ let value = data[dynamicKey];
42
+ const numericValue = Number(value);
43
+ if (!isNaN(numericValue)) {
44
+ return this.commonService.abbreviateNumber(numericValue);
45
+ }
46
+ return value;
47
+ }
48
+ return null;
49
+ }
50
+ formatNumber(value) {
51
+ if (value >= 1e9) {
52
+ return (value / 1e9).toFixed(1) + 'B';
53
+ }
54
+ else if (value >= 1e6) {
55
+ return (value / 1e6).toFixed(1) + 'M';
56
+ }
57
+ else if (value >= 1e3) {
58
+ return (value / 1e3).toFixed(1) + 'K';
59
+ }
60
+ else {
61
+ return value.toString();
62
+ }
63
+ }
64
+ }
65
+ GammaTodayPreviousComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GammaTodayPreviousComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CommonService }], target: i0.ɵɵFactoryTarget.Component });
66
+ GammaTodayPreviousComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GammaTodayPreviousComponent, selector: "app-gamma-today-previous", inputs: { chartDataSource: "chartDataSource" }, ngImport: i0, template: "<div class=\"flex justify-center items-start bg-gray-800 p-3 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"w-full\">\n <div class=\"text-teal-400 text-5xl font-semibold\">{{ getDynamicValue(currentDateData) }}</div>\n <div class=\"text-gray-400 text-sm font-light m-2\">\n Prevous: {{ getDynamicValue(prevousDaysData) }}\n <span class=\"text-teal-400\">({{calculatedValue}}%)</span>\n </div>\n </div>\n\n </ng-container>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoaderComponent, selector: "app-loader" }] });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GammaTodayPreviousComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'app-gamma-today-previous', template: "<div class=\"flex justify-center items-start bg-gray-800 p-3 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"w-full\">\n <div class=\"text-teal-400 text-5xl font-semibold\">{{ getDynamicValue(currentDateData) }}</div>\n <div class=\"text-gray-400 text-sm font-light m-2\">\n Prevous: {{ getDynamicValue(prevousDaysData) }}\n <span class=\"text-teal-400\">({{calculatedValue}}%)</span>\n </div>\n </div>\n\n </ng-container>\n\n</div>" }]
70
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CommonService }]; }, propDecorators: { chartDataSource: [{
71
+ type: Input,
72
+ args: ['chartDataSource']
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQVE5QyxNQUFNLE9BQU8sMkJBQTJCO0lBU3RDLFlBQ1UsR0FBc0IsRUFDdkIsYUFBNEI7UUFEM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDakMsQ0FBQztJQUVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsT0FBTztTQUNSO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJ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O2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjtvSUFtQmhDLGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICcuLy4uLy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS10b2RheS1wcmV2aW91cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nYW1tYS10b2RheS1wcmV2aW91cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dhbW1hLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR2FtbWFUb2RheVByZXZpb3VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gY2hhcnRfYXR0ci5sZWdlbmRbMF1cbiAgb2JqZWN0ZGF0YVNvdXJjZTogYW55O1xuICBpc0NoYXJ0dmlzaWJsZTogYm9vbGVhbjtcbiAgaXNMb2FkZXI6IGJvb2xlYW47XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIGN1cnJlbnREYXRlRGF0YTogYW55O1xuICBwcmV2b3VzRGF5c0RhdGE6IGFueTtcbiAgY2FsY3VsYXRlZFZhbHVlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIHRoaXMub2JqZWN0ZGF0YVNvdXJjZSA9IHZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICBpZiAodGhpcy5vYmplY3RkYXRhU291cmNlID09PSB1bmRlZmluZWQgfHwgdGhpcy5vYmplY3RkYXRhU291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pc0NoYXJ0dmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIC8vIHRoaXMua2V5VG9wYXNzID0gdmFsdWUua3BpQ29uZmlnLmtleVRvUGFzcztcbiAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZSAmJiB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2Uuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBtb21lbnQoYi5yZWNvcmREYXRlLCBcIllZWVktTU0tRERcIikuZGlmZihtb21lbnQoYS5yZWNvcmREYXRlLCBcIllZWVktTU0tRERcIikpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdGVwIDI6IEdldCB0aGUgbW9zdCByZWNlbnQgYW5kIHByZXZpb3VzIGRhdGVzXG4gICAgICAgIHRoaXMuY3VycmVudERhdGVEYXRhID0gc29ydGVkRGF0YVswXTtcbiAgICAgICAgdGhpcy5wcmV2b3VzRGF5c0RhdGEgPSBzb3J0ZWREYXRhWzFdO1xuICAgICAgICBsZXQgY2FsVmFsdWUgPSBNYXRoLmFicygocGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5jdXJyZW50RGF0ZURhdGEpKSAtIHBhcnNlSW50KHRoaXMuZ2V0RHluYW1pY1ZhbHVlKHRoaXMucHJldm91c0RheXNEYXRhKSkpIC8gcGFyc2VJbnQodGhpcy5nZXREeW5hbWljVmFsdWUodGhpcy5jdXJyZW50RGF0ZURhdGEpKSk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlZFZhbHVlID0gdGhpcy5jb21tb25TZXJ2aWNlLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQoY2FsVmFsdWUsIDMpXG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBnZXREeW5hbWljVmFsdWUoZGF0YTogYW55KTogbnVtYmVyIHwgc3RyaW5nIHwgYW55IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gICAgY29uc3QgZHluYW1pY0tleSA9IGtleXMuZmluZChrZXkgPT4gIWtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkYXRlJykpO1xuICAgIGlmIChkeW5hbWljS2V5KSB7XG4gICAgICBsZXQgdmFsdWUgPSBkYXRhW2R5bmFtaWNLZXldO1xuICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4obnVtZXJpY1ZhbHVlKSkge1xuICAgICAgICAvLyBsZXQgY2FsX251bWJlciA9IE1hdGguYWJzKG51bWVyaWNWYWx1ZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5hYmJyZXZpYXRlTnVtYmVyKG51bWVyaWNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA+PSAxZTkpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTkpLnRvRml4ZWQoMSkgKyAnQic7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTYpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTYpLnRvRml4ZWQoMSkgKyAnTSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTMpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTMpLnRvRml4ZWQoMSkgKyAnSyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0zIG14LTIgdGV4dC1jZW50ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZXJcIj5cbiAgICAgICAgPGFwcC1sb2FkZXI+PC9hcHAtbG9hZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdGVhbC00MDAgdGV4dC01eGwgZm9udC1zZW1pYm9sZFwiPnt7IGdldER5bmFtaWNWYWx1ZShjdXJyZW50RGF0ZURhdGEpIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtIGZvbnQtbGlnaHQgbS0yXCI+XG4gICAgICAgICAgICAgICAgUHJldm91czoge3sgZ2V0RHluYW1pY1ZhbHVlKHByZXZvdXNEYXlzRGF0YSkgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdGVhbC00MDBcIj4oe3tjYWxjdWxhdGVkVmFsdWV9fSUpPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../common";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../../loader/loader.component";
6
+ export class GoogleGeoMapComponent {
7
+ constructor(commonService) {
8
+ this.commonService = commonService;
9
+ this.getTableConfigOutPut = new EventEmitter();
10
+ this.oRowClick = new EventEmitter();
11
+ this.onrightClickContextSelection = new EventEmitter();
12
+ this.rightClickEnable = true;
13
+ }
14
+ set chartDataSource(value) {
15
+ console.log(value, 'chartDataSource for geo chart');
16
+ if (value === undefined || value.length === 0) {
17
+ return;
18
+ }
19
+ else {
20
+ this.isLoader = true;
21
+ this.page_config = value;
22
+ this.page_parms = value.titleParams;
23
+ if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {
24
+ if (value.kpiConfig.formate == "monthly") {
25
+ this.tootTipColumn = value.kpiConfig.dataConfig.chart_config;
26
+ let data = value.kpiConfig.dataSource;
27
+ this.chartHeight = `${value.kpiConfig.dataConfig.size}px`;
28
+ this.chartType = value.kpiConfig.dataConfig.chartType;
29
+ this.bacgroundColor =
30
+ value.kpiConfig.dataConfig.backgroundColor;
31
+ this.mapColors = value.kpiConfig.dataConfig.colors;
32
+ const formattedData = [
33
+ [
34
+ value.kpiConfig.dataConfig["argumentField"],
35
+ value.kpiConfig.dataConfig["chartValueField"],
36
+ { type: 'string', role: 'tooltip', 'p': { 'html': true } }
37
+ ],
38
+ ].concat(data.map((item) => {
39
+ const tooltip = this.getTooltip(item);
40
+ return [
41
+ item[value.kpiConfig.dataConfig["argumentField"]],
42
+ item[value.kpiConfig.dataConfig["chartValueField"]],
43
+ tooltip
44
+ ];
45
+ }));
46
+ this.charData = formattedData;
47
+ setTimeout(() => {
48
+ this.isLoader = false;
49
+ this.loadGoogleCharts();
50
+ }, 200);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ngOnInit() { }
56
+ ngAfterViewInit() {
57
+ }
58
+ loadGoogleCharts() {
59
+ google.charts.load("current", {
60
+ packages: [this.chartType],
61
+ });
62
+ google.charts.setOnLoadCallback(this.drawChart.bind(this));
63
+ }
64
+ drawChart() {
65
+ const data = google.visualization.arrayToDataTable(this.charData);
66
+ const options = {
67
+ backgroundColor: this.bacgroundColor,
68
+ tooltip: { isHtml: true },
69
+ colorAxis: { colors: this.mapColors }
70
+ };
71
+ const chart = new google.visualization.GeoChart(this.inRoamerGeoChart.nativeElement);
72
+ this.inRoamerGeoChart.nativeElement.style.height = '250px';
73
+ chart.draw(data, options);
74
+ }
75
+ getTooltip(data) {
76
+ let toolTipData = "";
77
+ this.tootTipColumn.forEach((element) => {
78
+ if (typeof data[element.dataField] === 'number') {
79
+ toolTipData +=
80
+ "<div class='inline'><b>" +
81
+ element.caption +
82
+ ":</b></div> " +
83
+ this.commonService.roundOffTillTwo(data[element.dataField], 2) +
84
+ "<br />";
85
+ }
86
+ else {
87
+ toolTipData +=
88
+ "<div class='inline'><b>" +
89
+ element.caption +
90
+ ":</b></div> " +
91
+ data[element.dataField] +
92
+ "<br />";
93
+ }
94
+ });
95
+ return toolTipData;
96
+ }
97
+ }
98
+ GoogleGeoMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GoogleGeoMapComponent, deps: [{ token: i1.CommonService }], target: i0.ɵɵFactoryTarget.Component });
99
+ GoogleGeoMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GoogleGeoMapComponent, selector: "app-google-geo-map", inputs: { rightClickEnable: "rightClickEnable", chartDataSource: "chartDataSource" }, outputs: { getTableConfigOutPut: "getTableConfigOutPut", oRowClick: "oRowClick", onrightClickContextSelection: "onrightClickContextSelection" }, viewQueries: [{ propertyName: "inRoamerGeoChart", first: true, predicate: ["inRommerGeoChart"], descendants: true }], ngImport: i0, template: "\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\n <ng-container>\n <div id=\"regions_div\" #inRommerGeoChart style=\"width: 100%\" ></div> \n </ng-container>\n \n \n\n </div>\n\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoaderComponent, selector: "app-loader" }] });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GoogleGeoMapComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'app-google-geo-map', template: "\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\n <ng-container>\n <div id=\"regions_div\" #inRommerGeoChart style=\"width: 100%\" ></div> \n </ng-container>\n \n \n\n </div>\n\n\n</div>\n" }]
103
+ }], ctorParameters: function () { return [{ type: i1.CommonService }]; }, propDecorators: { inRoamerGeoChart: [{
104
+ type: ViewChild,
105
+ args: ["inRommerGeoChart"]
106
+ }], getTableConfigOutPut: [{
107
+ type: Output
108
+ }], oRowClick: [{
109
+ type: Output
110
+ }], onrightClickContextSelection: [{
111
+ type: Output
112
+ }], rightClickEnable: [{
113
+ type: Input
114
+ }], chartDataSource: [{
115
+ type: Input,
116
+ args: ["chartDataSource"]
117
+ }] } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ29vZ2xlLWdlby1tYXAvZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ29vZ2xlLWdlby1tYXAvZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3ZCLE1BQU0sT0FBTyxxQkFBcUI7SUFxRWhDLFlBQW1CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBN0Q5Qix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsaUNBQTRCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0UscUJBQWdCLEdBQVksSUFBSSxDQUFDO0lBMERTLENBQUM7SUF0RHBELElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0MsT0FBTztTQUNSO2FBQU07WUFFTCxJQUFJLENBQUMs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QkFPWixvQkFBb0I7c0JBQXBDLE1BQU07Z0JBQ1UsU0FBUztzQkFBekIsTUFBTTtnQkFDVSw0QkFBNEI7c0JBQTVDLE1BQU07Z0JBQ0UsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtGLGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb25cIjtcbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZ29vZ2xlLWdlby1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nb29nbGUtZ2VvLW1hcC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZUdlb01hcENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoXCJpblJvbW1lckdlb0NoYXJ0XCIpIGluUm9hbWVyR2VvQ2hhcnQ6IEVsZW1lbnRSZWY7XG4gIGNoYXJEYXRhOiBhbnk7XG4gIGNoYXJ0SGVpZ2h0OiBhbnk7XG4gIGJhY2dyb3VuZENvbG9yOiBhbnk7XG4gIG1hcENvbG9yczogYW55O1xuICBjaGFydFR5cGU6IGFueTtcbiAgdG9vdFRpcENvbHVtbjogYW55O1xuICBAT3V0cHV0KCkgcHVibGljIGdldFRhYmxlQ29uZmlnT3V0UHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9ucmlnaHRDbGlja0NvbnRleHRTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSByaWdodENsaWNrRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNMb2FkZXI6IGJvb2xlYW47XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIHBhZ2VfcGFybXM6IGFueTtcbiAgQElucHV0KFwiY2hhcnREYXRhU291cmNlXCIpXG4gIHNldCBjaGFydERhdGFTb3VyY2UodmFsdWUpIHtcbiAgICBjb25zb2xlLmxvZyh2YWx1ZSwgJ2NoYXJ0RGF0YVNvdXJjZSBmb3IgZ2VvIGNoYXJ0Jyk7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VfY29uZmlnID0gdmFsdWU7XG4gICAgICB0aGlzLnBhZ2VfcGFybXMgPSB2YWx1ZS50aXRsZVBhcmFtcztcbiAgICAgIC8vIHRoaXMuaW5Sb2FtZXJHZW9DaGFydC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmZvcm1hdGUgPT0gXCJtb250aGx5XCIpIHtcbiAgICAgICAgICB0aGlzLnRvb3RUaXBDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgbGV0IGRhdGEgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZTtcbiAgICAgICAgICB0aGlzLmNoYXJ0SGVpZ2h0ID0gYCR7dmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuc2l6ZX1weGA7XG4gICAgICAgICAgdGhpcy5jaGFydFR5cGUgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydFR5cGU7XG4gICAgICAgICAgdGhpcy5iYWNncm91bmRDb2xvciA9XG4gICAgICAgICAgICB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgdGhpcy5tYXBDb2xvcnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2xvcnM7XG4gICAgICAgICAgLy8gbGV0IGNvbmZpZyA9IHZhbHVlLmNoYXJ0Q29uZmlnO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGEgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnW1wiYXJndW1lbnRGaWVsZFwiXSxcbiAgICAgICAgICAgICAgdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJjaGFydFZhbHVlRmllbGRcIl0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJywgJ3AnOiB7ICdodG1sJzogdHJ1ZSB9IH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgXS5jb25jYXQoXG4gICAgICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5nZXRUb29sdGlwKGl0ZW0pO1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGl0ZW1bdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJhcmd1bWVudEZpZWxkXCJdXSxcbiAgICAgICAgICAgICAgICBpdGVtW3ZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnW1wiY2hhcnRWYWx1ZUZpZWxkXCJdXSxcbiAgICAgICAgICAgICAgICB0b29sdGlwXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coZm9ybWF0dGVkRGF0YSk7XG4gICAgICAgICAgdGhpcy5jaGFyRGF0YSA9IGZvcm1hdHRlZERhdGE7XG4gICAgICAgICAgLy8gdGhpcy5sb2FkR29vZ2xlQ2hhcnRzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxvYWRHb29nbGVDaGFydHMoKTtcbiAgICAgICAgICB9LCAyMDApO1xuXG4gICAgICAgIH1cblxuICAgICAgfVxuXG5cbiAgICB9XG5cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmxvYWRHb29nbGVDaGFydHMoKTtcbiAgfVxuXG4gIGxvYWRHb29nbGVDaGFydHMoKSB7XG4gICAgZ29vZ2xlLmNoYXJ0cy5sb2FkKFwiY3VycmVudFwiLCB7XG4gICAgICBwYWNrYWdlczogW3RoaXMuY2hhcnRUeXBlXSxcbiAgICB9KTtcbiAgICBnb29nbGUuY2hhcnRzLnNldE9uTG9hZENhbGxiYWNrKHRoaXMuZHJhd0NoYXJ0LmJpbmQodGhpcykpO1xuICB9XG5cbiAgZHJhd0NoYXJ0KCkge1xuICAgIGNvbnN0IGRhdGEgPSBnb29nbGUudmlzdWFsaXphdGlvbi5hcnJheVRvRGF0YVRhYmxlKHRoaXMuY2hhckRhdGEpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNncm91bmRDb2xvcixcbiAgICAgIHRvb2x0aXA6IHsgaXNIdG1sOiB0cnVlIH0sXG4gICAgICBjb2xvckF4aXM6IHsgY29sb3JzOiB0aGlzLm1hcENvbG9ycyB9XG4gICAgfTtcblxuICAgIGNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkdlb0NoYXJ0KFxuICAgICAgdGhpcy5pblJvYW1lckdlb0NoYXJ0Lm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMuaW5Sb2FtZXJHZW9DaGFydC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9ICcyNTBweCc7XG4gICAgY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRvb2x0aXAoZGF0YSkge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgbGV0IHRvb2xUaXBEYXRhID0gXCJcIjtcbiAgICB0aGlzLnRvb3RUaXBDb2x1bW4uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdG9vbFRpcERhdGEgKz1cbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2lubGluZSc+PGI+XCIgK1xuICAgICAgICAgIGVsZW1lbnQuY2FwdGlvbiArXG4gICAgICAgICAgXCI6PC9iPjwvZGl2PiBcIiArXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnJvdW5kT2ZmVGlsbFR3byhkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSwgMikgK1xuICAgICAgICAgIFwiPGJyIC8+XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b29sVGlwRGF0YSArPVxuICAgICAgICAgIFwiPGRpdiBjbGFzcz0naW5saW5lJz48Yj5cIiArXG4gICAgICAgICAgZWxlbWVudC5jYXB0aW9uICtcbiAgICAgICAgICBcIjo8L2I+PC9kaXY+IFwiICtcbiAgICAgICAgICBkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSArXG4gICAgICAgICAgXCI8YnIgLz5cIjtcbiAgICAgIH1cblxuXG4gICAgfSk7XG4gICAgLy8gY29uc29sZS5sb2codG9vbFRpcERhdGEpO1xuICAgIHJldHVybiB0b29sVGlwRGF0YTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwibXgtMiBiZy1ncmF5LTgwMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1zdGFydCBiZy1ncmF5LTgwMCBwLTJcIj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXgtMiBwYi0yXCI+XG5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgaWQ9XCJyZWdpb25zX2RpdlwiICNpblJvbW1lckdlb0NoYXJ0IHN0eWxlPVwid2lkdGg6IDEwMCVcIiA+PC9kaXY+ICAgIFxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICBcbiAgICAgICBcblxuICAgIDwvZGl2PlxuXG5cbjwvZGl2PlxuIl19
@@ -0,0 +1,117 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, catchError, map } from 'rxjs';
3
+ import { AppHttpService } from '../app.http.service';
4
+ import { environment } from '../environment';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class KpiApiService extends AppHttpService {
8
+ constructor(httpClient) {
9
+ super(httpClient);
10
+ this.httpClient = httpClient;
11
+ this.kpiFilter = new BehaviorSubject([]);
12
+ this.userkpiFilter$ = this.kpiFilter.asObservable();
13
+ }
14
+ getFilterForKpi(pins) {
15
+ this.kpiFilter.next(pins);
16
+ }
17
+ getCurrentKpiFilterValue() {
18
+ return this.kpiFilter.getValue();
19
+ }
20
+ getData(body, requestID) {
21
+ return this.http
22
+ .post(environment.appUrl + environment.apiVersion + requestID, JSON.stringify(body), this.options)
23
+ .pipe(map((response) => {
24
+ return response;
25
+ }), catchError(this.handleError));
26
+ }
27
+ getDataByAPI(requestID, body) {
28
+ return this.http
29
+ .post(environment.appUrl + environment.apiVersion + requestID, JSON.stringify(body), this.options)
30
+ .pipe(map((response) => {
31
+ return response;
32
+ }), catchError(this.handleError));
33
+ }
34
+ getUniqueData(api) {
35
+ return this.http
36
+ .get(environment.appUrl + environment.apiVersion + api, { withCredentials: true })
37
+ .pipe(map((response) => {
38
+ return response;
39
+ }), catchError(this.handleError));
40
+ }
41
+ getCdrData(api, url) {
42
+ return this.http
43
+ .get(environment.appUrl + environment.apiVersion + api + '?' + url)
44
+ .pipe(map((response) => {
45
+ return response;
46
+ }), catchError(this.handleError));
47
+ }
48
+ getMapData(body, requestID) {
49
+ const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/mapjson.json';
50
+ return this.http
51
+ .get(apiUrl, { withCredentials: true })
52
+ .pipe(map((response) => {
53
+ return response;
54
+ }), catchError(this.handleError));
55
+ }
56
+ getfilterData() {
57
+ return this.http
58
+ .get("/assets/api-data/filter-direction.json")
59
+ .pipe(map((response) => {
60
+ return response;
61
+ }), catchError(this.handleError));
62
+ }
63
+ getSrvTypeDataSource() {
64
+ const apiUrl = environment.appUrl + environment.apiVersion + '/kpi/srv-params';
65
+ return this.http
66
+ .get(apiUrl, { withCredentials: true })
67
+ .pipe(map((response) => {
68
+ return response;
69
+ }), catchError(this.handleError));
70
+ }
71
+ pagintedActivityLogs(parms, api) {
72
+ const apiUrl = environment.appUrl + environment.apiVersion + api;
73
+ return this.http
74
+ .post(apiUrl, JSON.stringify(parms), this.options)
75
+ .pipe(map((response) => {
76
+ return response;
77
+ }), catchError(this.handleError));
78
+ }
79
+ getApiData() {
80
+ const apiUrl = '/assets/api-data/api-service.json';
81
+ return this.http
82
+ .get(apiUrl, { withCredentials: true })
83
+ .pipe(map((response) => {
84
+ return response;
85
+ }), catchError(this.handleError));
86
+ }
87
+ getKpiBrowserConfigById(id) {
88
+ const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;
89
+ return this.http
90
+ .get(apiUrl, { withCredentials: true })
91
+ .pipe(map((response) => {
92
+ return response;
93
+ }), catchError(this.handleError));
94
+ }
95
+ getAppPageDetailConfig(pageId) {
96
+ return this.http
97
+ .get(environment.appUrl + environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
98
+ .pipe(map((response) => {
99
+ return response;
100
+ }), catchError(this.handleError));
101
+ }
102
+ getDashBoardJson() {
103
+ const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';
104
+ return this.http.get(apiUrl, { withCredentials: true }).pipe(map((response) => {
105
+ return response;
106
+ }), catchError(this.handleError));
107
+ }
108
+ }
109
+ KpiApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KpiApiService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
110
+ KpiApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KpiApiService, providedIn: 'root' });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: KpiApiService, decorators: [{
112
+ type: Injectable,
113
+ args: [{
114
+ providedIn: 'root'
115
+ }]
116
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUEwQixNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLN0MsTUFBTSxPQUFPLGFBQWMsU0FBUSxjQUFjO0lBRy9DLFlBQW9CLFVBQXNCO1FBQ3hDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQURDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFJbEMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUgvQyxDQUFDO0lBS0QsZUFBZSxDQUFDLElBQVM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUztRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2pHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFPLEVBQUU7WUFDcEMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0EsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUk7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNqRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUc7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEVBQU8sRUFBRTtZQUNwQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDQSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRztRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTO1FBRXhCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLE9BQU8sR0FBRywrQkFBK0IsQ0FBQztRQUU5RixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFPLEVBQUU7WUFDL0IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0EsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQzthQUU3QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUUvRSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUV0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ3BDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNBLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDN0IsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEVBQU8sRUFBRTtZQUNwQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDQSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVU7UUFFUixNQUFNLE1BQU0sR0FBRyxtQ0FBbUMsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQy9CLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsRUFBRTtRQUN4QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLEdBQUcseUNBQXlDLEdBQUcsRUFBRSxDQUFDO1FBQzVHLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFFLEVBQUU7WUFDL0IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRXRDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFNO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxHQUFHLGtEQUFrRCxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzVILElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFPLEVBQUU7WUFDcEMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0EsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFFZCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxPQUFPLEdBQUcsaUNBQWlDLENBQUM7UUFDaEcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEVBQUUsRUFBRTtZQUN6QixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM3QixDQUFDO0lBQ0osQ0FBQzs7MEdBdElVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLmh0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgS3BpQXBpU2VydmljZSBleHRlbmRzIEFwcEh0dHBTZXJ2aWNlIHtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xuICAgIHN1cGVyKGh0dHBDbGllbnQpXG4gIH1cblxuICBwcml2YXRlIGtwaUZpbHRlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gIHVzZXJrcGlGaWx0ZXIkID0gdGhpcy5rcGlGaWx0ZXIuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0RmlsdGVyRm9yS3BpKHBpbnM6IGFueSkge1xuICAgIHRoaXMua3BpRmlsdGVyLm5leHQocGlucyk7XG4gIH1cblxuICBnZXRDdXJyZW50S3BpRmlsdGVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMua3BpRmlsdGVyLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXREYXRhKGJvZHksIHJlcXVlc3RJRCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIHJlcXVlc3RJRCwgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG4gIGdldERhdGFCeUFQSShyZXF1ZXN0SUQsIGJvZHkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVudmlyb25tZW50LmFwcFVybCArIGVudmlyb25tZW50LmFwaVZlcnNpb24gKyByZXF1ZXN0SUQsIEpTT04uc3RyaW5naWZ5KGJvZHkpLCB0aGlzLm9wdGlvbnMpXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSk6IGFueSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIGdldFVuaXF1ZURhdGEoYXBpKTogT2JzZXJ2YWJsZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIGFwaSwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG5cbiAgZ2V0Q2RyRGF0YShhcGksIHVybCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChlbnZpcm9ubWVudC5hcHBVcmwgKyBlbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgYXBpICsgJz8nICsgdXJsKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICBnZXRNYXBEYXRhKGJvZHksIHJlcXVlc3RJRCk6IGFueSB7XG4gICAgLy8gY29uc3QgYXBpVXJsID0gJy9hc3NldHMvYXBpLWRhdGEvbWFwanNvbi5qc29uJztcbiAgICBjb25zdCBhcGlVcmwgPSBlbnZpcm9ubWVudC5nYXRld2F5VXJsICsgZW52aXJvbm1lbnQuYXBwTmFtZSArICcvYXNzZXRzL2FwaS1kYXRhL21hcGpzb24uanNvbic7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgfVxuXG4gIGdldGZpbHRlckRhdGEoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFwiL2Fzc2V0cy9hcGktZGF0YS9maWx0ZXItZGlyZWN0aW9uLmpzb25cIilcbiAgICAgIC8vIC5nZXQoZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIGFwaSArICc/JysgdXJsIClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICB9XG4gIGdldFNydlR5cGVEYXRhU291cmNlKCk6IGFueSB7XG4gICAgY29uc3QgYXBpVXJsID0gZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpL3Nydi1wYXJhbXMnO1xuICAgIC8vIGNvbnN0IGFwaVVybCA9IGVudmlyb25tZW50LmdhdGV3YXlVcmwgKyBlbnZpcm9ubWVudC5hcHBOYW1lICsgJy9hc3NldHMvYXBpLWRhdGEvc3J2X3R5cGVfcGFyYW1zLmpzb24nO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgLy8gLmdldChlbnZpcm9ubWVudC5hcHBVcmwgKyBlbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgYXBpICsgJz8nKyB1cmwgKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cbiAgcGFnaW50ZWRBY3Rpdml0eUxvZ3MocGFybXMsIGFwaSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYXBpVXJsID0gZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIGFwaTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChhcGlVcmwsIEpTT04uc3RyaW5naWZ5KHBhcm1zKSwgdGhpcy5vcHRpb25zKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICBnZXRBcGlEYXRhKCk6IGFueSB7XG4gICAgLy8gY29uc3QgYXBpVXJsID0gZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcvYXBwLXNldHRpbmcvZ2V0SW50ZWdyYXRlZEFwcHMnO1xuICAgIGNvbnN0IGFwaVVybCA9ICcvYXNzZXRzL2FwaS1kYXRhL2FwaS1zZXJ2aWNlLmpzb24nO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gIH1cblxuICBnZXRLcGlCcm93c2VyQ29uZmlnQnlJZChpZCk6IGFueSB7XG4gICAgY29uc3QgYXBpVXJsID0gZW52aXJvbm1lbnQuYXBwVXJsICsgZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpLWNvbmZpZy9nZXRLcGlCcm93c2VyQ29uZmlnQnlJZD9pZD0nICsgaWQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgfVxuXG4gIGdldEFwcFBhZ2VEZXRhaWxDb25maWcocGFnZUlkKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGVudmlyb25tZW50LmFwcFVybCArIGVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwUGFnZURldGFpbENvbmZpZz9wYWdlQ29uZmlnSWQ9JyArIHBhZ2VJZCwgdGhpcy5vcHRpb25zKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gIH1cblxuICBnZXREYXNoQm9hcmRKc29uKCk6IGFueSB7XG4gICAgLy8gY29uc3QgYXBpVXJsID0gJy9hc3NldHMvYXBpLWRhdGEvZGFzaGJvYXJkLmpzb24nO1xuICAgIGNvbnN0IGFwaVVybCA9IGVudmlyb25tZW50LmdhdGV3YXlVcmwgKyBlbnZpcm9ubWVudC5hcHBOYW1lICsgJy9hc3NldHMvYXBpLWRhdGEvZGFzaGJvYXJkLmpzb24nO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cblxufVxuIl19