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.
- package/bundles/raise-common-lib.umd.js +28147 -1277
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/dashboard/api.js +46 -0
- package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +638 -0
- package/esm2015/lib/dashboard/bar-charts/utils.js +40 -0
- package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +700 -0
- package/esm2015/lib/dashboard/dashboard.service.js +650 -0
- package/esm2015/lib/dashboard/dashboardPorlets.service.js +3107 -0
- package/esm2015/lib/dashboard/dialog-group/download/index.component.js +358 -0
- package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +67 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4443 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4293 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1553 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +857 -0
- package/esm2015/lib/dashboard/pane-group-new.component.js +2930 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1016 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1003 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +319 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1638 -0
- package/esm2015/lib/layout/rs-stepper/index.component.js +175 -9
- package/esm2015/lib/raise-common-lib.module.js +56 -3
- package/esm2015/lib/service/InjectionToken.js +13 -0
- package/esm2015/public-api.js +3 -1
- package/esm2015/raise-common-lib.js +22 -6
- package/esm5/lib/dashboard/api.js +48 -0
- package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +733 -0
- package/esm5/lib/dashboard/bar-charts/utils.js +45 -0
- package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +772 -0
- package/esm5/lib/dashboard/dashboard.service.js +846 -0
- package/esm5/lib/dashboard/dashboardPorlets.service.js +3536 -0
- package/esm5/lib/dashboard/dialog-group/download/index.component.js +441 -0
- package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +78 -0
- package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4940 -0
- package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4751 -0
- package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1683 -0
- package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +931 -0
- package/esm5/lib/dashboard/pane-group-new.component.js +3307 -0
- package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1138 -0
- package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1184 -0
- package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +354 -0
- package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1792 -0
- package/esm5/lib/layout/rs-stepper/index.component.js +206 -12
- package/esm5/lib/raise-common-lib.module.js +56 -3
- package/esm5/lib/service/InjectionToken.js +13 -0
- package/esm5/public-api.js +3 -1
- package/esm5/raise-common-lib.js +22 -6
- package/fesm2015/raise-common-lib.js +24917 -1169
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +27944 -1267
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/dashboard/api.d.ts +21 -0
- package/lib/dashboard/bar-charts/bar-charts.component.d.ts +60 -0
- package/lib/dashboard/bar-charts/utils.d.ts +1 -0
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +49 -0
- package/lib/dashboard/dashboard.service.d.ts +149 -0
- package/lib/dashboard/dashboardPorlets.service.d.ts +211 -0
- package/lib/dashboard/dialog-group/download/index.component.d.ts +33 -0
- package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +12 -0
- package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +125 -0
- package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +128 -0
- package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +74 -0
- package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +44 -0
- package/lib/dashboard/pane-group-new.component.d.ts +165 -0
- package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +53 -0
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +59 -0
- package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +27 -0
- package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +147 -0
- package/lib/layout/rs-stepper/index.component.d.ts +17 -4
- package/lib/service/InjectionToken.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/raise-common-lib.d.ts +20 -4
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
- package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
- package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
- package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
- package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
- package/src/assets/img/dashboard_icon/Close.svg +4 -0
- package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
- package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
- package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
- package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
- package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
- package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
- package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
- package/src/assets/img/dashboard_icon/area-white.svg +3 -0
- package/src/assets/img/dashboard_icon/area.svg +3 -0
- package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
- package/src/assets/img/dashboard_icon/bar.svg +14 -0
- package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
- package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
- package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
- package/src/assets/img/dashboard_icon/column-white.svg +14 -0
- package/src/assets/img/dashboard_icon/column.svg +26 -0
- package/src/assets/img/dashboard_icon/customize.png +0 -0
- package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
- package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
- package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
- package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
- package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
- package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
- package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
- package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
- package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
- package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
- package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
- package/src/assets/img/dashboard_icon/ftable.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
- package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
- package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
- package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
- package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
- package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
- package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
- package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
- package/src/assets/img/dashboard_icon/geo.svg +14 -0
- package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
- package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
- package/src/assets/img/dashboard_icon/information-1.png +0 -0
- package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
- package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
- package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
- package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
- package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
- package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
- package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
- package/src/assets/img/dashboard_icon/more_View.svg +3 -0
- package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
- package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
- package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
- package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
- package/src/assets/img/dashboard_icon/pie.svg +16 -0
- package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
- package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
- package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
- package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
- package/src/assets/img/dashboard_icon/radar.svg +19 -0
- package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
- package/src/assets/img/dashboard_icon/search_input.svg +4 -0
- package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
- package/src/assets/img/dashboard_icon/table-3.svg +16 -0
- package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
- package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tick.svg +26 -0
- package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
- package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
- package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
- package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
- package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
- package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
- package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
- package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
- package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
- package/src/assets/img/dashboard_icon/transpose.svg +16 -0
- package/src/assets/style/reset/mat-dialog.scss +11 -5
- 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
|