raise-common-lib 0.0.205 → 0.0.207

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 (228) hide show
  1. package/bundles/raise-common-lib.umd.js +28147 -1277
  2. package/bundles/raise-common-lib.umd.js.map +1 -1
  3. package/bundles/raise-common-lib.umd.min.js +1 -1
  4. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/lib/dashboard/api.js +46 -0
  6. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +638 -0
  7. package/esm2015/lib/dashboard/bar-charts/utils.js +40 -0
  8. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +700 -0
  9. package/esm2015/lib/dashboard/dashboard.service.js +650 -0
  10. package/esm2015/lib/dashboard/dashboardPorlets.service.js +3107 -0
  11. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +358 -0
  12. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +67 -0
  13. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4443 -0
  14. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4293 -0
  15. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1553 -0
  16. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +857 -0
  17. package/esm2015/lib/dashboard/pane-group-new.component.js +2930 -0
  18. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1016 -0
  19. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1003 -0
  20. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +319 -0
  21. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1638 -0
  22. package/esm2015/lib/layout/rs-stepper/index.component.js +175 -9
  23. package/esm2015/lib/raise-common-lib.module.js +56 -3
  24. package/esm2015/lib/service/InjectionToken.js +13 -0
  25. package/esm2015/public-api.js +3 -1
  26. package/esm2015/raise-common-lib.js +22 -6
  27. package/esm5/lib/dashboard/api.js +48 -0
  28. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +733 -0
  29. package/esm5/lib/dashboard/bar-charts/utils.js +45 -0
  30. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +772 -0
  31. package/esm5/lib/dashboard/dashboard.service.js +846 -0
  32. package/esm5/lib/dashboard/dashboardPorlets.service.js +3536 -0
  33. package/esm5/lib/dashboard/dialog-group/download/index.component.js +441 -0
  34. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +78 -0
  35. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4940 -0
  36. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4751 -0
  37. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1683 -0
  38. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +931 -0
  39. package/esm5/lib/dashboard/pane-group-new.component.js +3307 -0
  40. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1138 -0
  41. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1184 -0
  42. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +354 -0
  43. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1792 -0
  44. package/esm5/lib/layout/rs-stepper/index.component.js +206 -12
  45. package/esm5/lib/raise-common-lib.module.js +56 -3
  46. package/esm5/lib/service/InjectionToken.js +13 -0
  47. package/esm5/public-api.js +3 -1
  48. package/esm5/raise-common-lib.js +22 -6
  49. package/fesm2015/raise-common-lib.js +24917 -1169
  50. package/fesm2015/raise-common-lib.js.map +1 -1
  51. package/fesm5/raise-common-lib.js +27944 -1267
  52. package/fesm5/raise-common-lib.js.map +1 -1
  53. package/lib/dashboard/api.d.ts +21 -0
  54. package/lib/dashboard/bar-charts/bar-charts.component.d.ts +60 -0
  55. package/lib/dashboard/bar-charts/utils.d.ts +1 -0
  56. package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +49 -0
  57. package/lib/dashboard/dashboard.service.d.ts +149 -0
  58. package/lib/dashboard/dashboardPorlets.service.d.ts +211 -0
  59. package/lib/dashboard/dialog-group/download/index.component.d.ts +33 -0
  60. package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +12 -0
  61. package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +125 -0
  62. package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +128 -0
  63. package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +74 -0
  64. package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +44 -0
  65. package/lib/dashboard/pane-group-new.component.d.ts +165 -0
  66. package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +53 -0
  67. package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +59 -0
  68. package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +27 -0
  69. package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +147 -0
  70. package/lib/layout/rs-stepper/index.component.d.ts +17 -4
  71. package/lib/service/InjectionToken.d.ts +4 -0
  72. package/package.json +1 -1
  73. package/public-api.d.ts +2 -0
  74. package/raise-common-lib.d.ts +20 -4
  75. package/raise-common-lib.metadata.json +1 -1
  76. package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
  77. package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
  78. package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
  79. package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
  80. package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
  81. package/src/assets/img/dashboard_icon/Close.svg +4 -0
  82. package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
  83. package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
  84. package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
  85. package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
  86. package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
  87. package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
  88. package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
  89. package/src/assets/img/dashboard_icon/area-white.svg +3 -0
  90. package/src/assets/img/dashboard_icon/area.svg +3 -0
  91. package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
  92. package/src/assets/img/dashboard_icon/bar.svg +14 -0
  93. package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
  94. package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
  95. package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
  96. package/src/assets/img/dashboard_icon/column-white.svg +14 -0
  97. package/src/assets/img/dashboard_icon/column.svg +26 -0
  98. package/src/assets/img/dashboard_icon/customize.png +0 -0
  99. package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
  100. package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
  101. package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
  102. package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
  103. package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
  104. package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
  105. package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
  106. package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
  107. package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
  108. package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
  109. package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
  110. package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
  111. package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
  112. package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
  113. package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
  114. package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
  115. package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
  116. package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
  117. package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
  118. package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
  119. package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
  120. package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
  121. package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
  122. package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
  123. package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
  124. package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
  125. package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
  126. package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
  127. package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
  128. package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
  129. package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
  130. package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
  131. package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
  132. package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
  133. package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
  134. package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
  135. package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
  136. package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
  137. package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
  138. package/src/assets/img/dashboard_icon/ftable.svg +24 -0
  139. package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
  140. package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
  141. package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
  142. package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
  143. package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
  144. package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
  145. package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
  146. package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
  147. package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
  148. package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
  149. package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
  150. package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
  151. package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
  152. package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
  153. package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
  154. package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
  155. package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
  156. package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
  157. package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
  158. package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
  159. package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
  160. package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
  161. package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
  162. package/src/assets/img/dashboard_icon/geo.svg +14 -0
  163. package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
  164. package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
  165. package/src/assets/img/dashboard_icon/information-1.png +0 -0
  166. package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
  167. package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
  168. package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
  169. package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
  170. package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
  171. package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
  172. package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
  173. package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
  174. package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
  175. package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
  176. package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
  177. package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
  178. package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
  179. package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
  180. package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
  181. package/src/assets/img/dashboard_icon/more_View.svg +3 -0
  182. package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
  183. package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
  184. package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
  185. package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
  186. package/src/assets/img/dashboard_icon/pie.svg +16 -0
  187. package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
  188. package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
  189. package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
  190. package/src/assets/img/dashboard_icon/pivot.svg +8 -0
  191. package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
  192. package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
  193. package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
  194. package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
  195. package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
  196. package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
  197. package/src/assets/img/dashboard_icon/radar.svg +19 -0
  198. package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
  199. package/src/assets/img/dashboard_icon/search_input.svg +4 -0
  200. package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
  201. package/src/assets/img/dashboard_icon/table-3.svg +16 -0
  202. package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
  203. package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
  204. package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
  205. package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
  206. package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
  207. package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
  208. package/src/assets/img/dashboard_icon/tick.svg +26 -0
  209. package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
  210. package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
  211. package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
  212. package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
  213. package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
  214. package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
  215. package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
  216. package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
  217. package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
  218. package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
  219. package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
  220. package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
  221. package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
  222. package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
  223. package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
  224. package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
  225. package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
  226. package/src/assets/img/dashboard_icon/transpose.svg +16 -0
  227. package/src/assets/style/reset/mat-dialog.scss +11 -5
  228. package/src/assets/style/style.scss +14 -4
@@ -0,0 +1,733 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/dashboard/bar-charts/bar-charts.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild, ViewEncapsulation, } from "@angular/core";
8
+ import { ChartComponent, } from "@syncfusion/ej2-angular-charts";
9
+ import ResizeObserver from "resize-observer-polyfill";
10
+ import { DashboardService } from "../dashboard.service";
11
+ import { DecimalPipe } from "@angular/common";
12
+ import { debounce } from "./utils";
13
+ var BarChartsComponent = /** @class */ (function () {
14
+ function BarChartsComponent(ref, dashboardService, decimalPipe) {
15
+ this.ref = ref;
16
+ this.dashboardService = dashboardService;
17
+ this.decimalPipe = decimalPipe;
18
+ this.dataColumn = []; // 柱状图数据源
19
+ // 柱状图数据源
20
+ this.dataLine = []; // 折线图数据源
21
+ // 折线图数据源
22
+ this.dataStackingColumn = []; // 堆积图数据源
23
+ // 堆积图数据源
24
+ this.columnType = "number";
25
+ this.lineType = "number";
26
+ this.themeColor = null;
27
+ this.portlet = null;
28
+ this.dashboard = null;
29
+ this.column = [];
30
+ this.columnLine = [];
31
+ this._dataStackingColumn = [];
32
+ this.specialKey = ["IRR", "DPI", "MOIC", "PIC", "RVPI", "TVPI"];
33
+ this.pageLoading = false;
34
+ this.zoomSettings = {
35
+ // enableMouseWheelZooming: true,
36
+ // enableSelectionZooming: true,
37
+ // toolbarItems: [],
38
+ // enablePan: true,
39
+ enable: false,
40
+ };
41
+ //Initializing Primary X Axis
42
+ this.primaryXAxis = {
43
+ valueType: "Category",
44
+ labelIntersectAction: "Rotate45",
45
+ majorGridLines: { width: 0 },
46
+ majorTickLines: { width: 0 },
47
+ edgeLabelPlacement: "Shift",
48
+ // enableScrollbar: true,
49
+ // enableTrim: true,
50
+ // enablePan: true,
51
+ // rotate: 0,
52
+ labelStyle: {
53
+ fontWeight: "normal",
54
+ color: "#44566c",
55
+ fontFamily: "Arial",
56
+ size: "13px",
57
+ },
58
+ };
59
+ //Initializing Primary Y Axis
60
+ this.primaryYAxis = {
61
+ title: "",
62
+ //First Y
63
+ lineStyle: { width: 0 },
64
+ majorTickLines: { width: 0 },
65
+ majorGridLines: { color: "#f2f2f2" },
66
+ // 设置主要网格线颜色
67
+ labelFormat: "n2",
68
+ };
69
+ this.chartArea = {
70
+ border: {
71
+ width: 0,
72
+ },
73
+ };
74
+ // 鼠标移到bar上面显示的box
75
+ this.tooltip = {
76
+ enable: true,
77
+ };
78
+ // 图例设置
79
+ this.legend = {
80
+ visible: true,
81
+ enableHighlight: true,
82
+ };
83
+ // custom code end
84
+ this.title = "";
85
+ this.height = "250px";
86
+ this.width = "100%";
87
+ this.customPalette = []; //默认颜色组
88
+ //默认颜色组
89
+ this.subscriptions = [];
90
+ this.markerFormat = "";
91
+ }
92
+ // custom code start
93
+ // custom code start
94
+ /**
95
+ * @param {?} args
96
+ * @return {?}
97
+ */
98
+ BarChartsComponent.prototype.load =
99
+ // custom code start
100
+ /**
101
+ * @param {?} args
102
+ * @return {?}
103
+ */
104
+ function (args) {
105
+ /** @type {?} */
106
+ var selectedTheme = location.hash.split("/")[1];
107
+ selectedTheme = selectedTheme ? selectedTheme : "Material";
108
+ args.chart.theme = (/** @type {?} */ (((selectedTheme.charAt(0).toUpperCase() + selectedTheme.slice(1))
109
+ .replace(/-dark/i, "Dark")
110
+ .replace(/contrast/i, "Contrast"))));
111
+ };
112
+ /**
113
+ * @return {?}
114
+ */
115
+ BarChartsComponent.prototype.ngOnInit = /**
116
+ * @return {?}
117
+ */
118
+ function () {
119
+ var _this = this;
120
+ this.config = this.portlet.config && JSON.parse(this.portlet.config);
121
+ this.initMarkerConfig();
122
+ this.initData();
123
+ this.subscriptions.push(this.dashboardService.getSwitchConfig().subscribe((/**
124
+ * @param {?} res
125
+ * @return {?}
126
+ */
127
+ function (res) {
128
+ if (_this.portlet.newId === res.id) {
129
+ _this.config.hasMarker = res.checked;
130
+ _this.portlet.config = JSON.stringify(_this.config);
131
+ _this.initMarkerConfig();
132
+ _this.chart.refresh();
133
+ }
134
+ })), this.dashboardService.getMarkerFormat().subscribe((/**
135
+ * @param {?} res
136
+ * @return {?}
137
+ */
138
+ function (res) {
139
+ if (_this.portlet.newId === res.newId) {
140
+ _this.config.markerFormat = res.markerFormat;
141
+ _this.portlet.config = JSON.stringify(_this.config);
142
+ _this.markerFormat = res.markerFormat;
143
+ _this.initMarkerConfig();
144
+ _this.chart.refresh();
145
+ }
146
+ })));
147
+ };
148
+ /**
149
+ * @private
150
+ * @return {?}
151
+ */
152
+ BarChartsComponent.prototype.initMarkerConfig = /**
153
+ * @private
154
+ * @return {?}
155
+ */
156
+ function () {
157
+ /** @type {?} */
158
+ var format = this.config.portletType === "historicalIRR" ? "p2" : "n2";
159
+ this.pageLoading = false;
160
+ /** @type {?} */
161
+ var hasMarker = this.config && this.config.hasMarker;
162
+ this.markerFormat = this.config && this.config.markerFormat;
163
+ this.marker = {
164
+ visible: hasMarker,
165
+ dataLabel: {
166
+ visible: hasMarker,
167
+ format: format,
168
+ },
169
+ };
170
+ };
171
+ /**
172
+ * @param {?} e
173
+ * @return {?}
174
+ */
175
+ BarChartsComponent.prototype.textRender = /**
176
+ * @param {?} e
177
+ * @return {?}
178
+ */
179
+ function (e) {
180
+ var _this = this;
181
+ this.dataLine.forEach((/**
182
+ * @param {?} data
183
+ * @return {?}
184
+ */
185
+ function (data) {
186
+ Object.keys(data).forEach((/**
187
+ * @param {?} key
188
+ * @return {?}
189
+ */
190
+ function (key) {
191
+ if (_this.specialKey.includes(key)) {
192
+ if (!e.text) {
193
+ return;
194
+ }
195
+ if (e.text != data[key]) {
196
+ return;
197
+ }
198
+ if (key === "IRR") {
199
+ e.text = (e.text * 100).toFixed(2) + "%";
200
+ }
201
+ else {
202
+ e.text = Number(e.text).toFixed(2) + "x";
203
+ }
204
+ }
205
+ }));
206
+ }));
207
+ this.dataColumn.forEach((/**
208
+ * @param {?} data
209
+ * @return {?}
210
+ */
211
+ function (data) {
212
+ Object.keys(data).forEach((/**
213
+ * @param {?} key
214
+ * @return {?}
215
+ */
216
+ function (key) {
217
+ if (_this.specialKey.includes(key)) {
218
+ if (!e.text) {
219
+ return;
220
+ }
221
+ if (e.text != data[key]) {
222
+ return;
223
+ }
224
+ if (key === "IRR") {
225
+ e.text = (e.text * 100).toFixed(2) + "%";
226
+ }
227
+ else {
228
+ e.text = Number(e.text).toFixed(2) + "x";
229
+ }
230
+ }
231
+ }));
232
+ }));
233
+ if (!isNaN(e.text)) {
234
+ if (e.text !== 0) {
235
+ switch (this.markerFormat) {
236
+ case "M":
237
+ e.text =
238
+ this.decimalPipe.transform(e.text / 1000000, "1.2-2") + "m";
239
+ return;
240
+ case "K":
241
+ e.text = this.decimalPipe.transform(e.text / 1000, "1.2-2") + "k";
242
+ return;
243
+ case "bn":
244
+ e.text =
245
+ this.decimalPipe.transform(e.text / 1000000000, "1.2-2") + "b";
246
+ return;
247
+ case "T":
248
+ e.text =
249
+ this.decimalPipe.transform(e.text / 1000000000000, "1.2-2") + "t";
250
+ return;
251
+ default:
252
+ return;
253
+ }
254
+ }
255
+ else {
256
+ e.text = "";
257
+ }
258
+ }
259
+ };
260
+ /**
261
+ * @return {?}
262
+ */
263
+ BarChartsComponent.prototype.initData = /**
264
+ * @return {?}
265
+ */
266
+ function () {
267
+ this.column = [];
268
+ this.columnLine = [];
269
+ if (this.dataColumn && this.dataColumn.length > 0) {
270
+ for (var i in this.dataColumn[0]) {
271
+ if (i != "period") {
272
+ this.column.push({
273
+ xName: "period",
274
+ yName: i,
275
+ name: i,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ if (this.dataLine && this.dataLine.length > 0) {
281
+ for (var i in this.dataLine[0]) {
282
+ if (i != "period") {
283
+ this.columnLine.push({
284
+ xName: "period",
285
+ yName: i,
286
+ name: i,
287
+ });
288
+ }
289
+ }
290
+ }
291
+ if (this.themeColor && this.themeColor.length > 0) {
292
+ this.customPalette = this.themeColor;
293
+ }
294
+ this.ref.markForCheck();
295
+ };
296
+ /**
297
+ * @param {?} changes
298
+ * @return {?}
299
+ */
300
+ BarChartsComponent.prototype.ngOnChanges = /**
301
+ * @param {?} changes
302
+ * @return {?}
303
+ */
304
+ function (changes) {
305
+ // if (
306
+ // (changes.dataColumn &&
307
+ // !this.arraysAreEqual(
308
+ // changes.dataColumn.currentValue,
309
+ // changes.dataColumn.previousValue
310
+ // )) ||
311
+ // (changes.dataLine &&
312
+ // !this.arraysAreEqual(
313
+ // changes.dataLine.currentValue,
314
+ // changes.dataLine.previousValue
315
+ // )) ||
316
+ // !this.arraysAreEqual(
317
+ // changes.themeColor ? changes.themeColor.currentValue : null,
318
+ // changes.themeColor ? changes.themeColor.previousValue : null
319
+ // )
320
+ // ) {
321
+ // this.initData();
322
+ // }
323
+ };
324
+ /**
325
+ * @return {?}
326
+ */
327
+ BarChartsComponent.prototype.refreshChart = /**
328
+ * @return {?}
329
+ */
330
+ function () {
331
+ var _this = this;
332
+ setTimeout((/**
333
+ * @return {?}
334
+ */
335
+ function () {
336
+ if (_this.chart)
337
+ _this.chart.refresh();
338
+ }), 0);
339
+ };
340
+ /**
341
+ * @return {?}
342
+ */
343
+ BarChartsComponent.prototype.ngAfterViewInit = /**
344
+ * @return {?}
345
+ */
346
+ function () {
347
+ var _this = this;
348
+ this.resizeObserver = new ResizeObserver((/**
349
+ * @param {?} entries
350
+ * @return {?}
351
+ */
352
+ function (entries) {
353
+ var e_1, _a;
354
+ try {
355
+ for (var entries_1 = tslib_1.__values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {
356
+ var entry = entries_1_1.value;
357
+ var _b = entry.contentRect, width = _b.width, height = _b.height;
358
+ // 在这里执行你想要的操作,比如更新图表或其他相关操作
359
+ _this.changeSize(width, height);
360
+ }
361
+ }
362
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
363
+ finally {
364
+ try {
365
+ if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);
366
+ }
367
+ finally { if (e_1) throw e_1.error; }
368
+ }
369
+ }));
370
+ if (this.content) {
371
+ this.resizeObserver.observe(this.content.nativeElement);
372
+ }
373
+ this.subscriptions.push(this.dashboardService.getStartRefresh().subscribe((/**
374
+ * @param {?} dashboardId
375
+ * @return {?}
376
+ */
377
+ function (dashboardId) {
378
+ if (dashboardId === _this.dashboard.id) {
379
+ _this.pageLoading = true;
380
+ _this.ref.markForCheck();
381
+ }
382
+ })));
383
+ this.subscriptions.push(this.dashboardService.getRefreshGadget().subscribe((/**
384
+ * @param {?} e
385
+ * @return {?}
386
+ */
387
+ function (e) {
388
+ if (!e) {
389
+ return;
390
+ }
391
+ /** @type {?} */
392
+ var newId = e["newId"];
393
+ if (newId === _this.portlet.newId || newId === _this.portlet.id) {
394
+ _this.initMarkerConfig();
395
+ _this.refreshChart();
396
+ }
397
+ })));
398
+ };
399
+ /**
400
+ * @return {?}
401
+ */
402
+ BarChartsComponent.prototype.ngOnDestroy = /**
403
+ * @return {?}
404
+ */
405
+ function () {
406
+ // 在组件销毁时取消监听
407
+ if (this.resizeObserver) {
408
+ this.resizeObserver.disconnect();
409
+ }
410
+ this.subscriptions.forEach((/**
411
+ * @param {?} ele
412
+ * @return {?}
413
+ */
414
+ function (ele) { return ele.unsubscribe(); }));
415
+ };
416
+ /**
417
+ * @param {?} width
418
+ * @param {?} height
419
+ * @return {?}
420
+ */
421
+ BarChartsComponent.prototype.changeSize = /**
422
+ * @param {?} width
423
+ * @param {?} height
424
+ * @return {?}
425
+ */
426
+ function (width, height) {
427
+ if (!width || !height) {
428
+ return;
429
+ }
430
+ this.width = width + "px";
431
+ this.height = height - 10 + "px";
432
+ this.ref.markForCheck();
433
+ };
434
+ /**
435
+ * @return {?}
436
+ */
437
+ BarChartsComponent.prototype.exportChart = /**
438
+ * @return {?}
439
+ */
440
+ function () {
441
+ this.chart.exportModule.export("PNG", "Chart");
442
+ };
443
+ /**
444
+ * @param {?} args
445
+ * @return {?}
446
+ */
447
+ BarChartsComponent.prototype.OnChartAxisLabeRender = /**
448
+ * @param {?} args
449
+ * @return {?}
450
+ */
451
+ function (args) {
452
+ if (args.axis.propName == "primaryYAxis") {
453
+ if (this.columnType == "percent" ||
454
+ (this.dataColumn &&
455
+ this.dataColumn.length <= 0 &&
456
+ this.lineType == "percent")) {
457
+ args.text = this.formatPercentage(args.text);
458
+ }
459
+ else {
460
+ if (isNaN(args.text)) {
461
+ return;
462
+ }
463
+ args.text =
464
+ Number(args.text) >= 0
465
+ ? this.getT(args.text)
466
+ : "-" + this.getT(args.text);
467
+ }
468
+ }
469
+ else if (args.axis.propName == "yAxis2") {
470
+ if (this.lineType == "percent" &&
471
+ this.dataColumn &&
472
+ this.dataColumn.length > 0) {
473
+ args.text = this.formatPercentage(args.text);
474
+ }
475
+ else {
476
+ if (isNaN(args.text)) {
477
+ return;
478
+ }
479
+ args.text =
480
+ Number(args.text) >= 0
481
+ ? this.getT(args.text)
482
+ : "-" + this.getT(args.text);
483
+ }
484
+ }
485
+ };
486
+ /**
487
+ * @param {?} value
488
+ * @return {?}
489
+ */
490
+ BarChartsComponent.prototype.getT = /**
491
+ * @param {?} value
492
+ * @return {?}
493
+ */
494
+ function (value) {
495
+ return String(value)
496
+ .replace(/[^0-9.]/g, "")
497
+ .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
498
+ // return this.decimalPipe.transform(Number(value), "1.2-2");
499
+ };
500
+ /**
501
+ * @param {?} decimal
502
+ * @return {?}
503
+ */
504
+ BarChartsComponent.prototype.formatPercentage = /**
505
+ * @param {?} decimal
506
+ * @return {?}
507
+ */
508
+ function (decimal) {
509
+ /** @type {?} */
510
+ var percentage = (decimal * 100).toFixed(2);
511
+ return percentage + "%";
512
+ };
513
+ /**
514
+ * @param {?} arr1
515
+ * @param {?} arr2
516
+ * @return {?}
517
+ */
518
+ BarChartsComponent.prototype.arraysAreEqual = /**
519
+ * @param {?} arr1
520
+ * @param {?} arr2
521
+ * @return {?}
522
+ */
523
+ function (arr1, arr2) {
524
+ if ((!arr1 && arr2) || (arr1 && !arr2)) {
525
+ return false;
526
+ }
527
+ if (!arr1 && !arr2) {
528
+ return true;
529
+ }
530
+ if (arr1.length !== arr2.length) {
531
+ return false;
532
+ }
533
+ for (var i = 0; i < arr1.length; i++) {
534
+ /** @type {?} */
535
+ var obj1 = arr1[i];
536
+ /** @type {?} */
537
+ var obj2 = arr2[i];
538
+ if (typeof obj1 !== "object" || typeof obj2 !== "object") {
539
+ if (obj1 !== obj2) {
540
+ return false;
541
+ }
542
+ }
543
+ else {
544
+ if (!this.objectsAreEqual(obj1, obj2)) {
545
+ return false;
546
+ }
547
+ }
548
+ }
549
+ return true;
550
+ };
551
+ /**
552
+ * @param {?} obj1
553
+ * @param {?} obj2
554
+ * @return {?}
555
+ */
556
+ BarChartsComponent.prototype.objectsAreEqual = /**
557
+ * @param {?} obj1
558
+ * @param {?} obj2
559
+ * @return {?}
560
+ */
561
+ function (obj1, obj2) {
562
+ var e_2, _a;
563
+ /** @type {?} */
564
+ var keys1 = Object.keys(obj1);
565
+ /** @type {?} */
566
+ var keys2 = Object.keys(obj2);
567
+ if (keys1.length !== keys2.length) {
568
+ return false;
569
+ }
570
+ try {
571
+ for (var keys1_1 = tslib_1.__values(keys1), keys1_1_1 = keys1_1.next(); !keys1_1_1.done; keys1_1_1 = keys1_1.next()) {
572
+ var key = keys1_1_1.value;
573
+ if (obj1[key] !== obj2[key]) {
574
+ return false;
575
+ }
576
+ }
577
+ }
578
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
579
+ finally {
580
+ try {
581
+ if (keys1_1_1 && !keys1_1_1.done && (_a = keys1_1.return)) _a.call(keys1_1);
582
+ }
583
+ finally { if (e_2) throw e_2.error; }
584
+ }
585
+ return true;
586
+ };
587
+ /**
588
+ * @param {?} e
589
+ * @return {?}
590
+ */
591
+ BarChartsComponent.prototype.onPointRender = /**
592
+ * @param {?} e
593
+ * @return {?}
594
+ */
595
+ function (e) {
596
+ if (e.point.y == 0) {
597
+ e.cancel = true;
598
+ }
599
+ };
600
+ /**
601
+ * @param {?} args
602
+ * @return {?}
603
+ */
604
+ BarChartsComponent.prototype.tooltipRender = /**
605
+ * @param {?} args
606
+ * @return {?}
607
+ */
608
+ function (args) {
609
+ if (isNaN(args.data.pointY)) {
610
+ return;
611
+ }
612
+ if (this.config.portletType === "historicalIRR") {
613
+ args.text = args.data.pointX + ": " + (args.data.pointY * 100).toFixed(2) + "%";
614
+ return;
615
+ }
616
+ args.text = args.data.pointX + ": " + this.decimalPipe.transform(args.data.pointY, "1.2-2");
617
+ };
618
+ BarChartsComponent.decorators = [
619
+ { type: Component, args: [{
620
+ selector: "kt-bar-charts",
621
+ template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n",
622
+ encapsulation: ViewEncapsulation.None,
623
+ providers: [DecimalPipe],
624
+ styles: ["#chartContent{width:100%;height:100%;padding-top:10px}#chartContent .full-screen-mask{width:100%;height:100%;background:rgba(0,0,0,.3);position:absolute;top:0;left:0;z-index:9999}#chartContent mat-spinner.mat-spinner.mat-progress-spinner.mat-primary.mat-progress-spinner-indeterminate-animation{position:absolute;top:45%;left:47.5%!important;transform:translate(-25%,-25%)}"]
625
+ }] }
626
+ ];
627
+ /** @nocollapse */
628
+ BarChartsComponent.ctorParameters = function () { return [
629
+ { type: ChangeDetectorRef },
630
+ { type: DashboardService },
631
+ { type: DecimalPipe }
632
+ ]; };
633
+ BarChartsComponent.propDecorators = {
634
+ content: [{ type: ViewChild, args: ["chartContent", { static: false },] }],
635
+ chart: [{ type: ViewChild, args: ["chart", { static: false },] }],
636
+ dataColumn: [{ type: Input }],
637
+ dataLine: [{ type: Input }],
638
+ dataStackingColumn: [{ type: Input }],
639
+ columnType: [{ type: Input }],
640
+ lineType: [{ type: Input }],
641
+ themeColor: [{ type: Input }],
642
+ portlet: [{ type: Input }],
643
+ dashboard: [{ type: Input }]
644
+ };
645
+ tslib_1.__decorate([
646
+ debounce(100),
647
+ tslib_1.__metadata("design:type", Function),
648
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
649
+ tslib_1.__metadata("design:returntype", void 0)
650
+ ], BarChartsComponent.prototype, "changeSize", null);
651
+ return BarChartsComponent;
652
+ }());
653
+ export { BarChartsComponent };
654
+ if (false) {
655
+ /** @type {?} */
656
+ BarChartsComponent.prototype.content;
657
+ /** @type {?} */
658
+ BarChartsComponent.prototype.chart;
659
+ /** @type {?} */
660
+ BarChartsComponent.prototype.dataColumn;
661
+ /** @type {?} */
662
+ BarChartsComponent.prototype.dataLine;
663
+ /** @type {?} */
664
+ BarChartsComponent.prototype.dataStackingColumn;
665
+ /** @type {?} */
666
+ BarChartsComponent.prototype.columnType;
667
+ /** @type {?} */
668
+ BarChartsComponent.prototype.lineType;
669
+ /** @type {?} */
670
+ BarChartsComponent.prototype.themeColor;
671
+ /** @type {?} */
672
+ BarChartsComponent.prototype.portlet;
673
+ /** @type {?} */
674
+ BarChartsComponent.prototype.dashboard;
675
+ /** @type {?} */
676
+ BarChartsComponent.prototype.column;
677
+ /** @type {?} */
678
+ BarChartsComponent.prototype.columnLine;
679
+ /** @type {?} */
680
+ BarChartsComponent.prototype.config;
681
+ /** @type {?} */
682
+ BarChartsComponent.prototype._dataStackingColumn;
683
+ /** @type {?} */
684
+ BarChartsComponent.prototype.marker;
685
+ /** @type {?} */
686
+ BarChartsComponent.prototype.specialKey;
687
+ /** @type {?} */
688
+ BarChartsComponent.prototype.pageLoading;
689
+ /** @type {?} */
690
+ BarChartsComponent.prototype.zoomSettings;
691
+ /** @type {?} */
692
+ BarChartsComponent.prototype.primaryXAxis;
693
+ /** @type {?} */
694
+ BarChartsComponent.prototype.primaryYAxis;
695
+ /** @type {?} */
696
+ BarChartsComponent.prototype.chartArea;
697
+ /** @type {?} */
698
+ BarChartsComponent.prototype.tooltip;
699
+ /** @type {?} */
700
+ BarChartsComponent.prototype.legend;
701
+ /** @type {?} */
702
+ BarChartsComponent.prototype.title;
703
+ /** @type {?} */
704
+ BarChartsComponent.prototype.height;
705
+ /** @type {?} */
706
+ BarChartsComponent.prototype.width;
707
+ /** @type {?} */
708
+ BarChartsComponent.prototype.customPalette;
709
+ /**
710
+ * @type {?}
711
+ * @private
712
+ */
713
+ BarChartsComponent.prototype.subscriptions;
714
+ /** @type {?} */
715
+ BarChartsComponent.prototype.exportType;
716
+ /** @type {?} */
717
+ BarChartsComponent.prototype.markerFormat;
718
+ /** @type {?} */
719
+ BarChartsComponent.prototype.resizeObserver;
720
+ /**
721
+ * @type {?}
722
+ * @private
723
+ */
724
+ BarChartsComponent.prototype.ref;
725
+ /** @type {?} */
726
+ BarChartsComponent.prototype.dashboardService;
727
+ /**
728
+ * @type {?}
729
+ * @private
730
+ */
731
+ BarChartsComponent.prototype.decimalPipe;
732
+ }
733
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbkM7SUFvR0UsNEJBQ1UsR0FBc0IsRUFDdkIsZ0JBQWtDLEVBQ2pDLFdBQXdCO1FBRnhCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE3RnpCLGVBQVUsR0FBUSxFQUFFLENBQUMsQ0FBQyxVQUFVOztRQUNoQyxhQUFRLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDOUIsdUJBQWtCLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDeEMsZUFBVSxHQUFRLFFBQVEsQ0FBQztRQUMzQixhQUFRLEdBQVEsUUFBUSxDQUFDO1FBQ3pCLGVBQVUsR0FBUSxJQUFJLENBQUM7UUFDdkIsWUFBTyxHQUFRLElBQUksQ0FBQztRQUNwQixjQUFTLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFVLEVB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MEI7O0lBRTFCLG9DQUF5Qjs7SUFDekIsbUNBQXVCOztJQUV2QiwyQ0FBb0M7Ozs7O0lBQ3BDLDJDQUEyQzs7SUFDM0Msd0NBQWdDOztJQUNoQywwQ0FBeUI7O0lBeUt6Qiw0Q0FBb0I7Ozs7O0lBdEtsQixpQ0FBOEI7O0lBQzlCLDhDQUF5Qzs7Ozs7SUFDekMseUNBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBJTG9hZGVkRXZlbnRBcmdzLFxyXG4gIENoYXJ0VGhlbWUsXHJcbiAgQ2hhcnRDb21wb25lbnQsXHJcbiAgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWJhci1jaGFydHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Jhci1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhckNoYXJ0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBASW5wdXQoKSBkYXRhQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOafseeKtuWbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFMaW5lOiBhbnkgPSBbXTsgLy8gIOaKmOe6v+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFTdGFja2luZ0NvbHVtbjogYW55ID0gW107IC8vICDloIbnp6/lm77mlbDmja7mupBcclxuICBASW5wdXQoKSBjb2x1bW5UeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIGxpbmVUeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIHRoZW1lQ29sb3I6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgcG9ydGxldDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIGNvbHVtbjogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uTGluZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBfZGF0YVN0YWNraW5nQ29sdW1uID0gW107XHJcbiAgcHVibGljIG1hcmtlcjtcclxuICBwdWJsaWMgc3BlY2lhbEtleSA9IFtcIklSUlwiLCBcIkRQSVwiLCBcIk1PSUNcIiwgXCJQSUNcIiwgXCJSVlBJXCIsIFwiVFZQSVwiXTtcclxuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgem9vbVNldHRpbmdzOiBPYmplY3QgPSB7XHJcbiAgICAvLyBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IHRydWUsXHJcbiAgICAvLyB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFggQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WEF4aXM6IE9iamVjdCA9IHtcclxuICAgIHZhbHVlVHlwZTogXCJDYXRlZ29yeVwiLFxyXG4gICAgbGFiZWxJbnRlcnNlY3RBY3Rpb246IFwiUm90YXRlNDVcIixcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgZWRnZUxhYmVsUGxhY2VtZW50OiBcIlNoaWZ0XCIsXHJcblxyXG4gICAgLy8gZW5hYmxlU2Nyb2xsYmFyOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlVHJpbTogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVBhbjogdHJ1ZSxcclxuICAgIC8vIHJvdGF0ZTogMCxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udFdlaWdodDogXCJub3JtYWxcIixcclxuICAgICAgY29sb3I6IFwiIzQ0NTY2Y1wiLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCIsXHJcbiAgICAgIHNpemU6IFwiMTNweFwiLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFkgQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WUF4aXM6IE9iamVjdCA9IHtcclxuICAgIHRpdGxlOiBcIlwiLCAvL0ZpcnN0IFlcclxuICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JUaWNrTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IGNvbG9yOiBcIiNmMmYyZjJcIiB9LCAvLyDorr7nva7kuLvopoHnvZHmoLznur/popzoibJcclxuICAgIGxhYmVsRm9ybWF0OiBcIm4yXCIsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNoYXJ0QXJlYTogT2JqZWN0ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvLyDpvKDmoIfnp7vliLBiYXLkuIrpnaLmmL7npLrnmoRib3hcclxuICBwdWJsaWMgdG9vbHRpcDogT2JqZWN0ID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIOWbvuS+i+iuvue9rlxyXG4gIHB1YmxpYyBsZWdlbmQ6IE9iamVjdCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBlbmFibGVIaWdobGlnaHQ6IHRydWUsXHJcbiAgfTtcclxuICAvLyBjdXN0b20gY29kZSBzdGFydFxyXG4gIHB1YmxpYyBsb2FkKGFyZ3M6IElMb2FkZWRFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZFRoZW1lOiBzdHJpbmcgPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiL1wiKVsxXTtcclxuICAgIHNlbGVjdGVkVGhlbWUgPSBzZWxlY3RlZFRoZW1lID8gc2VsZWN0ZWRUaGVtZSA6IFwiTWF0ZXJpYWxcIjtcclxuICAgIGFyZ3MuY2hhcnQudGhlbWUgPSA8Q2hhcnRUaGVtZT4oXHJcbiAgICAgIChzZWxlY3RlZFRoZW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VsZWN0ZWRUaGVtZS5zbGljZSgxKSlcclxuICAgICAgICAucmVwbGFjZSgvLWRhcmsvaSwgXCJEYXJrXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL2NvbnRyYXN0L2ksIFwiQ29udHJhc3RcIilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIGN1c3RvbSBjb2RlIGVuZFxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgaGVpZ2h0OiBzdHJpbmcgPSBcIjI1MHB4XCI7XHJcbiAgd2lkdGg6IHN0cmluZyA9IFwiMTAwJVwiO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tUGFsZXR0ZTogc3RyaW5nW10gPSBbXTsgLy/pu5jorqTpopzoibLnu4RcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGV4cG9ydFR5cGU6IERyb3BEb3duTGlzdDtcclxuICBwdWJsaWMgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5wb3J0bGV0LmNvbmZpZyAmJiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN3aXRjaENvbmZpZygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmhhc01hcmtlciA9IHJlcy5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldE1hcmtlckZvcm1hdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMubmV3SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSByZXMubWFya2VyRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TWFya2VyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiID8gXCJwMlwiIDogXCJuMlwiO1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaGFzTWFya2VyID0gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuaGFzTWFya2VyO1xyXG4gICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQ7XHJcbiAgICB0aGlzLm1hcmtlciA9IHtcclxuICAgICAgdmlzaWJsZTogaGFzTWFya2VyLFxyXG4gICAgICBkYXRhTGFiZWw6IHtcclxuICAgICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgICAgZm9ybWF0LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgdGV4dFJlbmRlcihlKSB7XHJcbiAgICB0aGlzLmRhdGFMaW5lLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICBpZiAoIWUudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50ZXh0ICE9IGRhdGFba2V5XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDb2x1bW4uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWlzTmFOKGUudGV4dCkpIHtcclxuICAgICAgaWYgKGUudGV4dCAhPT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXJrZXJGb3JtYXQpIHtcclxuICAgICAgICAgIGNhc2UgXCJNXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMCwgXCIxLjItMlwiKSArIFwibVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiS1wiOlxyXG4gICAgICAgICAgICBlLnRleHQgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwLCBcIjEuMi0yXCIpICsgXCJrXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJiblwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcImJcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcIlRcIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJ0XCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZS50ZXh0ID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5MaW5lID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhQ29sdW1uICYmIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhQ29sdW1uWzBdKSB7XHJcbiAgICAgICAgaWYgKGkgIT0gXCJwZXJpb2RcIikge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFMaW5lICYmIHRoaXMuZGF0YUxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YUxpbmVbMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbkxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRoZW1lQ29sb3IgJiYgdGhpcy50aGVtZUNvbG9yLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jdXN0b21QYWxldHRlID0gdGhpcy50aGVtZUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFDb2x1bW4gJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5jdXJyZW50VmFsdWUsXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFDb2x1bW4ucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFMaW5lICYmXHJcbiAgICAvLyBcdFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFMaW5lLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5jdXJyZW50VmFsdWUgOiBudWxsLFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5wcmV2aW91c1ZhbHVlIDogbnVsbFxyXG4gICAgLy8gXHQpXHJcbiAgICAvLyApIHtcclxuICAgIC8vIFx0dGhpcy5pbml0RGF0YSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENoYXJ0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplT2JzZXJ2ZXI6IGFueTtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xyXG4gICAgICAgIC8vIOWcqOi/memHjOaJp+ihjOS9oOaDs+imgeeahOaTjeS9nO+8jOavlOWmguabtOaWsOWbvuihqOaIluWFtuS7luebuOWFs+aTjeS9nFxyXG4gICAgICAgIHRoaXMuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN0YXJ0UmVmcmVzaCgpLnN1YnNjcmliZSgoZGFzaGJvYXJkSWQpID0+IHtcclxuICAgICAgICBpZiAoZGFzaGJvYXJkSWQgPT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRSZWZyZXNoR2FkZ2V0KCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gZVtcIm5ld0lkXCJdO1xyXG4gICAgICAgIGlmIChuZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkIHx8IG5ld0lkID09PSB0aGlzLnBvcnRsZXQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7blj5bmtojnm5HlkKxcclxuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGVsZSkgPT4gZWxlLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDEwMClcclxuICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtoZWlnaHQgLSAxMH1weGA7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENoYXJ0KCkge1xyXG4gICAgdGhpcy5jaGFydC5leHBvcnRNb2R1bGUuZXhwb3J0KFwiUE5HXCIsIFwiQ2hhcnRcIik7XHJcbiAgfVxyXG5cclxuICBPbkNoYXJ0QXhpc0xhYmVSZW5kZXIoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwicHJpbWFyeVlBeGlzXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29sdW1uVHlwZSA9PSBcInBlcmNlbnRcIiB8fFxyXG4gICAgICAgICh0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPD0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5saW5lVHlwZSA9PSBcInBlcmNlbnRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MuYXhpcy5wcm9wTmFtZSA9PSBcInlBeGlzMlwiKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgICAucmVwbGFjZSgvW14wLTkuXS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIiQxLFwiKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpLCBcIjEuMi0yXCIpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UGVyY2VudGFnZShkZWNpbWFsKSB7XHJcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKGRlY2ltYWwgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICByZXR1cm4gYCR7cGVyY2VudGFnZX0lYDtcclxuICB9XHJcblxyXG4gIGFycmF5c0FyZUVxdWFsKGFycjEsIGFycjIpIHtcclxuICAgIGlmICgoIWFycjEgJiYgYXJyMikgfHwgKGFycjEgJiYgIWFycjIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFycjEgJiYgIWFycjIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iajEgPSBhcnIxW2ldO1xyXG4gICAgICBjb25zdCBvYmoyID0gYXJyMltpXTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqMSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqMiAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChvYmoxICE9PSBvYmoyKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RzQXJlRXF1YWwob2JqMSwgb2JqMikpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XHJcbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuXHJcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzMSkge1xyXG4gICAgICBpZiAob2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUG9pbnRSZW5kZXIoZSkge1xyXG4gICAgaWYgKGUucG9pbnQueSA9PSAwKSB7XHJcbiAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwUmVuZGVyKGFyZ3M6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaXNOYU4oYXJncy5kYXRhLnBvaW50WSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICBhcmdzLnRleHQgPSBgJHthcmdzLmRhdGEucG9pbnRYfTogJHsoYXJncy5kYXRhLnBvaW50WSAqIDEwMCkudG9GaXhlZChcclxuICAgICAgICAyXHJcbiAgICAgICl9JWA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxyXG4gICAgICBhcmdzLmRhdGEucG9pbnRZLFxyXG4gICAgICBcIjEuMi0yXCJcclxuICAgICl9YDtcclxuICB9XHJcbn1cclxuIl19