gamma-app-controller 1.1.25 → 1.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/application-controller.module.mjs +20 -20
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-menu-controller/application-menus/application-menus.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-metric-config/all-metrics-config/all-metrics-config.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-metric-config/create-metrics/create-metrics.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +1 -1
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +11 -11
- package/esm2020/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.mjs +10 -10
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +2 -2
- package/esm2020/lib/application-controller/support-components/heat-map/heat-map.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/single-card/single-card.component.mjs +1 -1
- package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +2 -2
- package/esm2020/lib/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +116 -0
- package/esm2020/lib/shared/advanced-component/app-advance-header/app-header.component.mjs +306 -0
- package/esm2020/lib/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +80 -0
- package/esm2020/lib/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +379 -0
- package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +188 -0
- package/esm2020/lib/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +435 -0
- package/esm2020/lib/shared/advanced-component/gamma-heatmap/gamma-heatmap.component.mjs +334 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +155 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +20 -0
- package/esm2020/lib/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +187 -0
- package/esm2020/lib/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +86 -0
- package/esm2020/lib/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +439 -0
- package/esm2020/lib/shared/app-title/app-title.component.mjs +67 -0
- package/esm2020/lib/shared/gamam-widget/gamam-widget.component.mjs +35 -0
- package/esm2020/lib/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +273 -0
- package/esm2020/lib/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +142 -0
- package/esm2020/lib/shared/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/{application-controller/shared → shared}/loader/loader.component.mjs +1 -1
- package/esm2020/lib/{application-controller/shared → shared}/loading/loading.component.mjs +1 -1
- package/esm2020/lib/shared/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/shared/safeHtmlPipe.mjs +20 -0
- package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +381 -0
- package/esm2020/lib/template-module/KpiCreationModule/createKpi.service.mjs +90 -0
- package/esm2020/lib/template-module/KpiCreationModule/kpiCreation.module.mjs +184 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animation.mjs +15 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/defaults.mjs +12 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.mjs +16 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/fade.mjs +160 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/shake.mjs +58 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/slide.mjs +116 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/zoom.mjs +36 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.mjs +85 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.mjs +118 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.mjs +159 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.mjs +27 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/group/group.component.mjs +37 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.mjs +27 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/moment-helper.mjs +4 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.mjs +2 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.mjs +16 -0
- package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview.component.mjs +134 -0
- package/esm2020/lib/template-module/bookmarked-template/bookmarked-template.component.mjs +816 -0
- package/esm2020/lib/template-module/bookmarked-template/bookmarkedTemplate.module.mjs +149 -0
- package/esm2020/lib/template-module/cdrConfigModule/cdr-config.component.mjs +1 -1
- package/esm2020/lib/template-module/cdrConfigModule/cdrConfig.module.mjs +2 -2
- package/esm2020/lib/template-module/defaulLandingComponent/defaultLandingComponent.module.mjs +149 -0
- package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +870 -0
- package/esm2020/lib/template-module/exceptionConfigModule/exception-operation.component.mjs +1 -1
- package/esm2020/lib/template-module/exceptionConfigModule/exceptionConfig.module.mjs +2 -2
- package/esm2020/lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component.mjs +180 -0
- package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.mjs +992 -0
- package/esm2020/lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module.mjs +154 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/dynamin-modal.component.mjs +180 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +1046 -0
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpiWithSingleLayout.module.mjs +154 -0
- package/esm2020/public-api.mjs +39 -20
- package/fesm2015/gamma-app-controller.mjs +6750 -475
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +6709 -475
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +19 -19
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +9 -9
- package/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.d.ts +8 -8
- package/lib/{application-controller/shared → shared}/advanced-component/app-advance-header/app-header.component.d.ts +18 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +3 -5
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-advance-chart/gamma-advance-chart.component.d.ts +3 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +4 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-geo-chart/gamma-geo-chart.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-heatmap/gamma-heatmap.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +6 -2
- package/lib/{application-controller/shared → shared}/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/advanced-component/google-geo-map/google-geo-map.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/app-title/app-title.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/gamam-widget/gamam-widget.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/gamma-advance-filter/gamma-advance-filter.component.d.ts +3 -2
- package/lib/{application-controller/shared → shared}/gamma-bread-crumbs/bread-crumbs.component.d.ts +1 -1
- package/lib/{application-controller/shared → shared}/kpi-comon-service.d.ts +1 -1
- package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +75 -0
- package/lib/template-module/KpiCreationModule/createKpi.service.d.ts +32 -0
- package/lib/template-module/KpiCreationModule/kpiCreation.module.d.ts +23 -0
- package/lib/template-module/KpiCreationModule/treeview/animation.d.ts +1 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/defaults.d.ts +11 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.d.ts +2 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/fade.d.ts +11 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/shake.d.ts +2 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/slide.d.ts +9 -0
- package/lib/template-module/KpiCreationModule/treeview/animations/zoom.d.ts +3 -0
- package/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.d.ts +26 -0
- package/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.d.ts +29 -0
- package/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.d.ts +37 -0
- package/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.d.ts +13 -0
- package/lib/template-module/KpiCreationModule/treeview/components/group/group.component.d.ts +17 -0
- package/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.d.ts +13 -0
- package/lib/template-module/KpiCreationModule/treeview/moment-helper.d.ts +3 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.d.ts +39 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.d.ts +8 -0
- package/lib/template-module/KpiCreationModule/treeview/treeview.component.d.ts +52 -0
- package/lib/template-module/bookmarked-template/bookmarked-template.component.d.ts +109 -0
- package/lib/template-module/bookmarked-template/bookmarkedTemplate.module.d.ts +16 -0
- package/lib/template-module/cdrConfigModule/cdrConfig.module.d.ts +1 -1
- package/lib/template-module/defaulLandingComponent/defaultLandingComponent.module.d.ts +16 -0
- package/lib/template-module/defaulLandingComponent/landing-component.component.d.ts +109 -0
- package/lib/template-module/exceptionConfigModule/exceptionConfig.module.d.ts +1 -1
- package/lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component.d.ts +42 -0
- package/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.d.ts +117 -0
- package/lib/template-module/kpiWithMultiLayout/kpiWithMultiayout.module.d.ts +17 -0
- package/lib/template-module/kpiWithSingleLayout/dynamin-modal.component.d.ts +42 -0
- package/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.d.ts +122 -0
- package/lib/template-module/kpiWithSingleLayout/kpiWithSingleLayout.module.d.ts +17 -0
- package/package.json +1 -1
- package/public-api.d.ts +38 -19
- package/esm2020/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +0 -124
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +0 -220
- package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +0 -95
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +0 -362
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +0 -177
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +0 -441
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-heatmap/gamma-heatmap.component.mjs +0 -328
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +0 -155
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +0 -20
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +0 -157
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +0 -85
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +0 -439
- package/esm2020/lib/application-controller/shared/app-title/app-title.component.mjs +0 -67
- package/esm2020/lib/application-controller/shared/gamam-widget/gamam-widget.component.mjs +0 -35
- package/esm2020/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +0 -237
- package/esm2020/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +0 -142
- package/esm2020/lib/application-controller/shared/kpi-comon-service.mjs +0 -537
- package/esm2020/lib/application-controller/shared/loading/loadingModule.mjs +0 -28
- package/esm2020/lib/application-controller/shared/safeHtmlPipe.mjs +0 -20
- /package/lib/{application-controller/shared → shared}/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/advanced-component/gamma-table-with-percentage/contentSafeHtml.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loader/loader.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loading/loading.component.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/loading/loadingModule.d.ts +0 -0
- /package/lib/{application-controller/shared → shared}/safeHtmlPipe.d.ts +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../application-controller/common";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "devextreme-angular/core";
|
|
6
|
+
import * as i4 from "devextreme-angular/ui/popup";
|
|
7
|
+
export class AppTitleComponent {
|
|
8
|
+
constructor(commonService) {
|
|
9
|
+
this.commonService = commonService;
|
|
10
|
+
this.title = undefined;
|
|
11
|
+
this.multiple = false;
|
|
12
|
+
this.icon = false;
|
|
13
|
+
this.onOperatorClick = new EventEmitter();
|
|
14
|
+
this.isSearchModal = false;
|
|
15
|
+
}
|
|
16
|
+
set operators(value) {
|
|
17
|
+
if (value === undefined || value.length === 0) {
|
|
18
|
+
this.isOperatorsvisible = false;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.operatorsDatasource = value.operators;
|
|
23
|
+
this.operator_display = value.display;
|
|
24
|
+
this.fixoperationValue = value.filterOperatorData;
|
|
25
|
+
this.isOperatorsvisible = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
}
|
|
30
|
+
getCapitalize(item) {
|
|
31
|
+
return this.commonService.convertToSpaceSeparatedCapitalized(item);
|
|
32
|
+
}
|
|
33
|
+
getOperator(item) {
|
|
34
|
+
this.onOperatorClick.emit(item);
|
|
35
|
+
}
|
|
36
|
+
openSearchFilter() {
|
|
37
|
+
this.isSearchModal = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
AppTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppTitleComponent, deps: [{ token: i1.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
AppTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AppTitleComponent, selector: "app-title", inputs: { title: "title", multiple: "multiple", isFilterDisplay: "isFilterDisplay", icon: "icon", iconName: "iconName", displayType: "displayType", keyToPass: "keyToPass", fixOperationLevles: "fixOperationLevles", operators: "operators" }, outputs: { onOperatorClick: "onOperatorClick" }, ngImport: i0, template: "<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType == 'chart'\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:border-b dark:pb-2 dark:border-gray-700 \">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n</div>\n\n<!-- <app-card-header [title]=\"'Administration Highlights'\"></app-card-header>\n<div class=\"flex bg-white dark:bg-gray-800 p-4 rounded-b-lg mx-2 mb-2 \">\n</div> -->\n\n<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType !== 'chart'\">\n <div class=\"flex justify-between dark:border-b\">\n <div class=\"flex items-center float-start\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:pb-2\">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n </div>\n <div class=\"flex items-center float-end mb-2\" *ngIf=\"operator_display\">\n <!-- <div class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">Advance Search</div> -->\n <ng-container *ngIf=\"isFilterDisplay\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"openSearchFilter()\">Search Filter</div>\n </ng-container>\n <ng-container *ngFor=\"let item of operatorsDatasource\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">\n {{getCapitalize(item)}}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n\n\n<dx-popup [(visible)]=\"isSearchModal\" [closeOnOutsideClick]=\"true\" [dragEnabled]=\"false\" [height]=\"'32rem'\"\n [showTitle]=\"true\" [width]=\"1100\" class=\"popup \" title=\"Search\">\n <div *dxTemplate=\"let data of 'content' \">\n <!-- <app-gamma-filter-component [operators]=\"operatorsDatasource\"\n [fixOperationLevles]=\"fixoperationValue\"></app-gamma-filter-component> -->\n\n </div>\n</dx-popup>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppTitleComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ selector: 'app-title', template: "<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType == 'chart'\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:border-b dark:pb-2 dark:border-gray-700 \">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n</div>\n\n<!-- <app-card-header [title]=\"'Administration Highlights'\"></app-card-header>\n<div class=\"flex bg-white dark:bg-gray-800 p-4 rounded-b-lg mx-2 mb-2 \">\n</div> -->\n\n<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType !== 'chart'\">\n <div class=\"flex justify-between dark:border-b\">\n <div class=\"flex items-center float-start\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:pb-2\">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n </div>\n <div class=\"flex items-center float-end mb-2\" *ngIf=\"operator_display\">\n <!-- <div class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">Advance Search</div> -->\n <ng-container *ngIf=\"isFilterDisplay\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"openSearchFilter()\">Search Filter</div>\n </ng-container>\n <ng-container *ngFor=\"let item of operatorsDatasource\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">\n {{getCapitalize(item)}}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n\n\n<dx-popup [(visible)]=\"isSearchModal\" [closeOnOutsideClick]=\"true\" [dragEnabled]=\"false\" [height]=\"'32rem'\"\n [showTitle]=\"true\" [width]=\"1100\" class=\"popup \" title=\"Search\">\n <div *dxTemplate=\"let data of 'content' \">\n <!-- <app-gamma-filter-component [operators]=\"operatorsDatasource\"\n [fixOperationLevles]=\"fixoperationValue\"></app-gamma-filter-component> -->\n\n </div>\n</dx-popup>" }]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }]; }, propDecorators: { title: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], multiple: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], isFilterDisplay: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], icon: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], iconName: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], displayType: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], keyToPass: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], fixOperationLevles: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], onOperatorClick: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}], operators: [{
|
|
64
|
+
type: Input,
|
|
65
|
+
args: ['operators']
|
|
66
|
+
}] } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FwcC10aXRsZS9hcHAtdGl0bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvYXBwLXRpdGxlL2FwcC10aXRsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUF5QixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXRHLE1BQU0sT0FBTyxpQkFBaUI7SUF3QzVCLFlBQ1MsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0QzVCLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBTWQsb0JBQWUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUt6RSxrQkFBYSxHQUFZLEtBQUssQ0FBQztJQTRCL0IsQ0FBQztJQTFCRCxJQUNJLFNBQVMsQ0FBQyxLQUFLO1FBQ2pCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLE9BQU87U0FDUjthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQTtZQU1qRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1NBRWhDO0lBRUgsQ0FBQztJQVVELFFBQVE7SUFDUixDQUFDO0lBeUJELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBR0QsV0FBVyxDQUFDLElBQUk7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzs7OEdBcEZVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtWQ1I5QixtOERBd0NXOzJGRGhDRSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsV0FBVztvR0FNWixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRVcsZUFBZTtzQkFBL0IsTUFBTTtnQkFRSCxTQUFTO3NCQURaLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGl0bGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwVGl0bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBpc09wZXJhdG9yc3Zpc2libGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdGl0bGUgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzRmlsdGVyRGlzcGxheTogYm9vbGVhbjtcbiAgQElucHV0KCkgaWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpY29uTmFtZTtcbiAgQElucHV0KCkgZGlzcGxheVR5cGU6IHN0cmluZztcbiAgQElucHV0KCkga2V5VG9QYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpeE9wZXJhdGlvbkxldmxlczogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25PcGVyYXRvckNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvcGVyYXRvcnNEYXRhc291cmNlO1xuICBvcGVyYXRvcl9kaXNwbGF5O1xuICBmaXhvcGVyYXRpb25WYWx1ZTtcbiAgaXNTZWFyY2hNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnb3BlcmF0b3JzJylcbiAgc2V0IG9wZXJhdG9ycyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pc09wZXJhdG9yc3Zpc2libGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVyYXRvcnNEYXRhc291cmNlID0gdmFsdWUub3BlcmF0b3JzO1xuICAgICAgdGhpcy5vcGVyYXRvcl9kaXNwbGF5ID0gdmFsdWUuZGlzcGxheVxuICAgICAgdGhpcy5maXhvcGVyYXRpb25WYWx1ZSA9IHZhbHVlLmZpbHRlck9wZXJhdG9yRGF0YVxuICAgICAgLy8gdGhpcy5vcGVyYXRvcnNEYXRhc291cmNlID0gdmFsdWUuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgLy8gICBjb25zdCBrZXlzVG9SZW1vdmUgPSBPYmplY3Qua2V5cyhpdGVtKS5maWx0ZXIoa2V5ID0+IHRoaXMua2V5VG9QYXNzLmluY2x1ZGVzKGtleSkpO1xuICAgICAgLy8gICByZXR1cm4ga2V5c1RvUmVtb3ZlLmxlbmd0aCA9PT0gMDtcbiAgICAgIC8vIH0pO1xuXG4gICAgICB0aGlzLmlzT3BlcmF0b3JzdmlzaWJsZSA9IHRydWU7XG5cbiAgICB9XG5cbiAgfVxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2VcbiAgKSB7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy50aXRsZSk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgLy8gZ2V0T2JqZWN0S2V5cyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgLy8gICBsZXQga2V5cyA9ICBPYmplY3Qua2V5cyhvYmopO1xuICAvLyAgIGNvbnN0IGZpbHRlcmVkQXJyYXkgPSBrZXlzLmZpbHRlcihpdGVtID0+ICF0aGlzLmtleVRvUGFzcy5pbmNsdWRlcyhpdGVtKSk7XG5cbiAgLy8gICByZXR1cm4gZmlsdGVyZWRBcnJheTtcbiAgLy8gfVxuXG4gIC8vIGdldE9iamVjdEtleXMob2JqKSB7XG4gIC8vICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gIC8vICAgY29uc3QgZmlsdGVyZWRBcnJheSA9IGtleXMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMua2V5VG9QYXNzLmluY2x1ZGVzKGl0ZW0pKTtcblxuICAvLyAgIC8vIENoZWNrIGlmIGFueSBrZXkncyB2YWx1ZSBpcyBudWxsXG4gIC8vICAgZm9yIChsZXQga2V5IG9mIGtleXMpIHtcbiAgLy8gICAgIGlmIChvYmpba2V5XSA9PT0gbnVsbCkge1xuICAvLyAgICAgICByZXR1cm4gZmlsdGVyZWRBcnJheTsgIC8vIFJldHVybiB0aGUgZmlsdGVyZWQgYXJyYXkgaWYgYW55IGtleSdzIHZhbHVlIGlzIG51bGxcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gW107ICAvLyBSZXR1cm4gZmFsc2UgaWYgbm8ga2V5J3MgdmFsdWUgaXMgbnVsbFxuICAvLyB9XG5cblxuICBnZXRDYXBpdGFsaXplKGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFRvU3BhY2VTZXBhcmF0ZWRDYXBpdGFsaXplZChpdGVtKVxuICB9XG5cblxuICBnZXRPcGVyYXRvcihpdGVtKSB7XG4gICAgdGhpcy5vbk9wZXJhdG9yQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxuXG4gIG9wZW5TZWFyY2hGaWx0ZXIoKSB7XG4gICAgdGhpcy5pc1NlYXJjaE1vZGFsID0gdHJ1ZTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLTQgcm91bmRlZC10LWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwICBteC0yIG10LTIgYmctc2t5LTkwMFwiICpuZ0lmPVwiZGlzcGxheVR5cGUgPT0gJ2NoYXJ0J1wiPlxuICA8aDUgY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWIgZGFyazpwYi0yIGRhcms6Ym9yZGVyLWdyYXktNzAwIFwiPlxuICAgIDxpIGNsYXNzPVwie3tpY29uTmFtZX19XCIgKm5nSWY9XCJpY29uXCI+PC9pPiAmbmJzcDt7e3RpdGxlfX1cbiAgPC9oNT5cbjwvZGl2PlxuXG48IS0tIDxhcHAtY2FyZC1oZWFkZXIgW3RpdGxlXT1cIidBZG1pbmlzdHJhdGlvbiBIaWdobGlnaHRzJ1wiPjwvYXBwLWNhcmQtaGVhZGVyPlxuPGRpdiBjbGFzcz1cImZsZXggYmctd2hpdGUgZGFyazpiZy1ncmF5LTgwMCBwLTQgcm91bmRlZC1iLWxnIG14LTIgbWItMiBcIj5cbjwvZGl2PiAtLT5cblxuPGRpdiBjbGFzcz1cInAtNCByb3VuZGVkLXQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgIG14LTIgbXQtMiBiZy1za3ktOTAwXCIgKm5nSWY9XCJkaXNwbGF5VHlwZSAhPT0gJ2NoYXJ0J1wiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gZGFyazpib3JkZXItYlwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbG9hdC1zdGFydFwiPlxuICAgICAgPGg1IGNsYXNzPVwidGV4dC1tZCBmb250LWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC13aGl0ZSBkYXJrOnBiLTJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJ7e2ljb25OYW1lfX1cIiAqbmdJZj1cImljb25cIj48L2k+ICZuYnNwO3t7dGl0bGV9fVxuICAgICAgPC9oNT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZmxvYXQtZW5kIG1iLTJcIiAqbmdJZj1cIm9wZXJhdG9yX2Rpc3BsYXlcIj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImdldE9wZXJhdG9yKGl0ZW0pXCI+QWR2YW5jZSBTZWFyY2g8L2Rpdj4gLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaWx0ZXJEaXNwbGF5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYmFkZ2VfcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9wZW5TZWFyY2hGaWx0ZXIoKVwiPlNlYXJjaCBGaWx0ZXI8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcGVyYXRvcnNEYXRhc291cmNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYmFkZ2VfcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImdldE9wZXJhdG9yKGl0ZW0pXCI+XG4gICAgICAgICAge3tnZXRDYXBpdGFsaXplKGl0ZW0pfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG5cbjxkeC1wb3B1cCBbKHZpc2libGUpXT1cImlzU2VhcmNoTW9kYWxcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJ0cnVlXCIgW2RyYWdFbmFibGVkXT1cImZhbHNlXCIgW2hlaWdodF09XCInMzJyZW0nXCJcbiAgW3Nob3dUaXRsZV09XCJ0cnVlXCIgW3dpZHRoXT1cIjExMDBcIiBjbGFzcz1cInBvcHVwIFwiIHRpdGxlPVwiU2VhcmNoXCI+XG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCcgXCI+XG4gICAgPCEtLSA8YXBwLWdhbW1hLWZpbHRlci1jb21wb25lbnQgW29wZXJhdG9yc109XCJvcGVyYXRvcnNEYXRhc291cmNlXCJcbiAgICAgIFtmaXhPcGVyYXRpb25MZXZsZXNdPVwiZml4b3BlcmF0aW9uVmFsdWVcIj48L2FwcC1nYW1tYS1maWx0ZXItY29tcG9uZW50PiAtLT5cblxuICA8L2Rpdj5cbjwvZHgtcG9wdXA+Il19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../application-controller/common";
|
|
4
|
+
import * as i2 from "ngx-toastr";
|
|
5
|
+
import * as i3 from "../kpi-comon-service";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i5 from "../loader/loader.component";
|
|
8
|
+
export class GamamWidgetComponent {
|
|
9
|
+
constructor(commonService, toastr, kpiService) {
|
|
10
|
+
this.commonService = commonService;
|
|
11
|
+
this.toastr = toastr;
|
|
12
|
+
this.kpiService = kpiService;
|
|
13
|
+
this.isLoader = true;
|
|
14
|
+
}
|
|
15
|
+
set widgetConfigSource(value) {
|
|
16
|
+
if (value === undefined || value.length === 0) {
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.page_config = value;
|
|
20
|
+
this.isLoader = false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
GamamWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GamamWidgetComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }, { token: i3.kpicommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
GamamWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GamamWidgetComponent, selector: "app-gamam-widget", inputs: { widgetConfigSource: "widgetConfigSource" }, ngImport: i0, template: "<div class=\"w-full my-1\">\n <div class=\"block mx-1 rounded-lg shadow-lg bg-white border border-gray-200 rounded-lg shadow-md\n dark:bg-gray-800 dark:border-gray-700 max-w-sm\">\n <div\n class=\"py-3 px-6 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <div class=\"flex justify-between\">\n <div class=\"flex items-center float-start\">\n {{page_config.title}}\n </div>\n <div class=\"flex items-center float-end\">\n <i class=\"{{page_config.icon}}\"></i>\n </div>\n\n </div>\n </div>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n\n <div class=\"p-2\" *ngIf=\"!isLoader\">\n <div class=\"flex flex-row items-center justify-center m-0\">\n <div class=\"w-full px-2 \">\n <div class=\"flex justify-center items-center text-4xl font-bold text-{{page_config.color}} p-2\">\n {{page_config.count}}\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.LoaderComponent, selector: "app-loader" }] });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GamamWidgetComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'app-gamam-widget', template: "<div class=\"w-full my-1\">\n <div class=\"block mx-1 rounded-lg shadow-lg bg-white border border-gray-200 rounded-lg shadow-md\n dark:bg-gray-800 dark:border-gray-700 max-w-sm\">\n <div\n class=\"py-3 px-6 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <div class=\"flex justify-between\">\n <div class=\"flex items-center float-start\">\n {{page_config.title}}\n </div>\n <div class=\"flex items-center float-end\">\n <i class=\"{{page_config.icon}}\"></i>\n </div>\n\n </div>\n </div>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n\n <div class=\"p-2\" *ngIf=\"!isLoader\">\n <div class=\"flex flex-row items-center justify-center m-0\">\n <div class=\"w-full px-2 \">\n <div class=\"flex justify-center items-center text-4xl font-bold text-{{page_config.color}} p-2\">\n {{page_config.count}}\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>" }]
|
|
31
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }, { type: i3.kpicommonService }]; }, propDecorators: { widgetConfigSource: [{
|
|
32
|
+
type: Input,
|
|
33
|
+
args: ['widgetConfigSource']
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtYW0td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2dhbWFtLXdpZGdldC9nYW1hbS13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtYW0td2lkZ2V0L2dhbWFtLXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVV6RCxNQUFNLE9BQU8sb0JBQW9CO0lBTS9CLFlBQ1MsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsVUFBNEI7UUFGN0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUx0QyxhQUFRLEdBQVksSUFBSSxDQUFDO0lBTXJCLENBQUM7SUFFTCxJQUNJLGtCQUFrQixDQUFDLEtBQUs7UUFJMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1NBRTlDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQVd2QjtJQUVILENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7aUhBckNVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDhHQ1ZqQyxtckNBMkJNOzJGRGpCTyxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCOytKQWdCeEIsa0JBQWtCO3NCQURyQixLQUFLO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsga3BpY29tbW9uU2VydmljZSB9IGZyb20gJy4uL2twaS1jb21vbi1zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbWFtLXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9nYW1hbS13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHYW1hbVdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgc3Vic2NyaWJlcl9jb3VudDtcbiAgcGFnZV9jb25maWc7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIGtwaVNlcnZpY2U6IGtwaWNvbW1vblNlcnZpY2VcbiAgKSB7IH1cblxuICBASW5wdXQoJ3dpZGdldENvbmZpZ1NvdXJjZScpXG4gIHNldCB3aWRnZXRDb25maWdTb3VyY2UodmFsdWUpIHtcblxuICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuXG4gICAgICAvLyB0aGlzLnNlcnZpY2UuZ2V0VW5pcXVlRGF0YSh2YWx1ZS5rcGlDb25maWcuYXBpKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgLy8gICB0aGlzLnN1YnNjcmliZXJfY291bnQgPSB0aGlzLmNvbW1vblNlcnZpY2UucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWMihkYXRhLCAwKTtcbiAgICAgIC8vICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgLy8gfSwgZXJyb3IgPT4ge1xuICAgICAgLy8gICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1VuaXF1ZSBTdWJzY3JpYmVyJyk7XG4gICAgICAvLyB9KVxuXG4gICAgICAvLyB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ2Vycm9yJyk7XG5cbiAgICB9XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgbXktMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJibG9jayBteC0xIHJvdW5kZWQtbGcgc2hhZG93LWxnIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWRcbiAgICAgICAgICAgICAgICAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMCBtYXgtdy1zbVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInB5LTMgcHgtNiBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICB7e3BhZ2VfY29uZmlnLnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZmxvYXQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3twYWdlX2NvbmZpZy5pY29ufX1cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBtLTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHB4LTIgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LTR4bCBmb250LWJvbGQgdGV4dC17e3BhZ2VfY29uZmlnLmNvbG9yfX0gcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3BhZ2VfY29uZmlnLmNvdW50fX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { Component, Input, EventEmitter, Output, ViewChild, HostListener } from '@angular/core';
|
|
2
|
+
import moment from '../../application-controller/moment-helper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../application-controller/application-content.service";
|
|
5
|
+
import * as i2 from "../kpi-comon-service";
|
|
6
|
+
import * as i3 from "ngx-toastr";
|
|
7
|
+
import * as i4 from "../../application-controller/common";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
9
|
+
import * as i6 from "devextreme-angular/ui/date-box";
|
|
10
|
+
import * as i7 from "devextreme-angular/ui/select-box";
|
|
11
|
+
import * as i8 from "devextreme-angular/ui/tag-box";
|
|
12
|
+
import * as i9 from "devextreme-angular/ui/text-box";
|
|
13
|
+
import * as i10 from "@angular/forms";
|
|
14
|
+
import * as i11 from "../loader/loader.component";
|
|
15
|
+
export class GammaAdvanceFilterComponent {
|
|
16
|
+
constructor(service, kpiService, toastr, commonService) {
|
|
17
|
+
this.service = service;
|
|
18
|
+
this.kpiService = kpiService;
|
|
19
|
+
this.toastr = toastr;
|
|
20
|
+
this.commonService = commonService;
|
|
21
|
+
this.filterDataObject = new EventEmitter();
|
|
22
|
+
this.quickDateSelector = false;
|
|
23
|
+
this.isLoader = true;
|
|
24
|
+
this.ranges = [
|
|
25
|
+
{ name: "Today", value: [moment(), moment()] },
|
|
26
|
+
{ name: "Yesterday", value: [moment().subtract(1, 'days'), moment().subtract(1, 'days')] },
|
|
27
|
+
{ name: "Last 7 Days", value: [moment().subtract(7, 'days'), moment().subtract(1, 'days')] },
|
|
28
|
+
{ name: "Last 15 Days", value: [moment().subtract(15, 'days'), moment().subtract(1, 'days')] },
|
|
29
|
+
{ name: 'This Month', value: [moment().startOf('month'), moment().endOf('month')] },
|
|
30
|
+
{ name: 'Last 1 Month', value: [moment().subtract(30, 'days'), moment()] },
|
|
31
|
+
{ name: 'Last 3 Month', value: [moment().subtract(91, 'days'), moment()] },
|
|
32
|
+
{ name: 'Last 6 Month', value: [moment().subtract(182, 'days'), moment()] },
|
|
33
|
+
{ name: 'Last 1 Year', value: [moment().subtract(365, 'days'), moment()] }
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
set filterOperatorData(value) {
|
|
37
|
+
if (value === undefined || value.length === 0) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.kpiFilterData = [];
|
|
42
|
+
this.kpiFilterData = value;
|
|
43
|
+
this.kpiFilterData.forEach(item => {
|
|
44
|
+
if (item.hasOwnProperty('momentFormate')) {
|
|
45
|
+
item.momentFormat = item.momentFormate;
|
|
46
|
+
delete item.momentFormate;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
this.processFilterForData();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.defaultEndDate = moment().subtract('1', 'days').format('YYYY-MM-DD');
|
|
54
|
+
this.defaultStartDate = moment(this.defaultEndDate).subtract('5', 'days').format('YYYY-MM-DD');
|
|
55
|
+
}
|
|
56
|
+
async processFilterForData() {
|
|
57
|
+
for (const filter of this.kpiFilterData) {
|
|
58
|
+
this.isLoader = true;
|
|
59
|
+
const startDateFilter = this.kpiFilterData.find(filter => filter.apiName === 'startDate' && (filter.display !== undefined ? filter.display : true));
|
|
60
|
+
const endDateFilter = this.kpiFilterData.find(filter => filter.apiName === 'endDate' && (filter.display !== undefined ? filter.display : true));
|
|
61
|
+
if (startDateFilter && endDateFilter) {
|
|
62
|
+
this.quickDateSelector = true;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
if (filter.apiName !== 'startDate' && filter.apiName !== 'endDate') {
|
|
66
|
+
if (filter.apiName.includes('/reference/')) {
|
|
67
|
+
const data = await this.service.getFilterDataByDrillDown(filter.apiName).toPromise();
|
|
68
|
+
filter['filterDataSource'] = data;
|
|
69
|
+
if (filter.defaultFilterType == "dynamic" && filter.defaultFilterValue !== "") {
|
|
70
|
+
filter['filterDataSourceValue'] = this.parseContentValue(filter.defaultFilterValue);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
filter['filterDataSourceValue'] = "";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
filter['filterDataSource'] = [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (filter.filterType == 'date' || filter.filterType == 'datetime') {
|
|
81
|
+
if (filter.display == undefined) {
|
|
82
|
+
filter.display = true;
|
|
83
|
+
}
|
|
84
|
+
if (filter.defaultFilterType == "dynamic" && filter.momentFunction !== "" && filter.defaultFilterValue !== "" && filter.momentFormat !== "") {
|
|
85
|
+
if (filter.momentFunction == "monthPicker") {
|
|
86
|
+
if (filter.apiName == "startDate") {
|
|
87
|
+
filter['filterDataSourceValue'] = moment().startOf('month').format(filter.momentFormat);
|
|
88
|
+
}
|
|
89
|
+
if (filter.apiName == "endDate") {
|
|
90
|
+
filter['filterDataSourceValue'] = moment().endOf('month').format(filter.momentFormat);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (filter.momentFunction == "weekPicker") {
|
|
94
|
+
if (filter.apiName == "startDate") {
|
|
95
|
+
filter['filterDataSourceValue'] = moment().startOf('week').format(filter.momentFormat);
|
|
96
|
+
}
|
|
97
|
+
if (filter.apiName == "endDate") {
|
|
98
|
+
filter['filterDataSourceValue'] = moment().endOf('week').format(filter.momentFormat);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
if (filter.apiName == "startDate") {
|
|
103
|
+
let [count, unit] = filter.defaultFilterValue.split(',');
|
|
104
|
+
filter['filterDataSourceValue'] = moment()[filter.momentFunction](parseInt(count), unit).format(filter.momentFormat);
|
|
105
|
+
}
|
|
106
|
+
if (filter.apiName == "endDate") {
|
|
107
|
+
let [count, unit] = filter.defaultFilterValue.split(',');
|
|
108
|
+
filter['filterDataSourceValue'] = moment()[filter.momentFunction](parseInt(count), unit).format(filter.momentFormat);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if ((filter.defaultFilterType == "static" && filter.defaultFilterValue !== "")) {
|
|
113
|
+
if (filter.apiName == "startDate") {
|
|
114
|
+
filter['filterDataSourceValue'] = filter.defaultFilterValue;
|
|
115
|
+
}
|
|
116
|
+
if (filter.apiName == "endDate") {
|
|
117
|
+
filter['filterDataSourceValue'] = filter.defaultFilterValue;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
this.toastr.error("Unexpected Server Exception. Please contact System Admin.", filter.type);
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
this.isLoader = false;
|
|
127
|
+
console.log(this.kpiFilterData);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
parseContentValue(contentvalue) {
|
|
132
|
+
return contentvalue.split(',').map(item => item.trim());
|
|
133
|
+
}
|
|
134
|
+
getIsMsisdn(context) {
|
|
135
|
+
let key = context.toLowerCase();
|
|
136
|
+
if (key.includes('msisdn')) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
startDateChangeForMonthPicker(e, format) {
|
|
144
|
+
if (e.event) {
|
|
145
|
+
this.kpiFilterData.forEach(element => {
|
|
146
|
+
if (element.filterType == 'date' || element.filterType == 'datetime') {
|
|
147
|
+
let [count, unit] = element.defaultFilterValue.split(',');
|
|
148
|
+
if (element.apiName == "startDate") {
|
|
149
|
+
element['filterDataSourceValue'] = moment(e.value).subtract(parseInt(count), unit).startOf(unit).format(element.momentFormat);
|
|
150
|
+
}
|
|
151
|
+
if (element.apiName == "endDate") {
|
|
152
|
+
element['filterDataSourceValue'] = moment(e.value).subtract(parseInt(count), unit).endOf(unit).format(element.momentFormat);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
startDateChange(e) {
|
|
159
|
+
this.defaultStartDate = e.value;
|
|
160
|
+
}
|
|
161
|
+
endDateChange(e) {
|
|
162
|
+
this.defaultEndDate = e.value;
|
|
163
|
+
}
|
|
164
|
+
searchByFilter() {
|
|
165
|
+
let apiJsonObject = {};
|
|
166
|
+
let operationFilter = {};
|
|
167
|
+
this.kpiFilterData.forEach(element => {
|
|
168
|
+
if (element.filterType == 'date' || element.filterType == 'datetime') {
|
|
169
|
+
apiJsonObject[element.apiName] = moment(element.filterDataSourceValue).format(element.momentFormat);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
if ((typeof element.filterDataSourceValue === "string" && element.filterDataSourceValue !== "") ||
|
|
173
|
+
(Array.isArray(element.filterDataSourceValue) && element.filterDataSourceValue.length > 0)) {
|
|
174
|
+
if (element.operatorName !== "") {
|
|
175
|
+
if (element.filterType == "content") {
|
|
176
|
+
operationFilter[element.operatorName] = element.filterDataSourceValue;
|
|
177
|
+
}
|
|
178
|
+
if (element.filterType == "single") {
|
|
179
|
+
operationFilter[element.operatorName] = element.filterDataSourceValue;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
operationFilter[element.operatorName] = Array.isArray(element.filterDataSourceValue) ? element.filterDataSourceValue : [element.filterDataSourceValue];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
apiJsonObject[element.apiName] = element.filterDataSourceValue;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
apiJsonObject['operationFilter'] = operationFilter;
|
|
192
|
+
console.log(apiJsonObject);
|
|
193
|
+
this.filterDataObject.emit(apiJsonObject);
|
|
194
|
+
}
|
|
195
|
+
reseteFilter() {
|
|
196
|
+
this.defaultEndDate = this.filterEndDate;
|
|
197
|
+
this.defaultStartDate = this.filterStartDate;
|
|
198
|
+
this.kpiFilterData.forEach(element => {
|
|
199
|
+
element['filterDataSourceValue'] = "";
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
getDrildownDimentions(apiName) {
|
|
203
|
+
let dimentions = {
|
|
204
|
+
"/api/v1/reference/getServedTypes": "srvType",
|
|
205
|
+
"/api/v1/reference/getOutRoamingServedTypes": "srvType",
|
|
206
|
+
"/api/v1/reference/getMSCDirections": "direction",
|
|
207
|
+
"/api/v1/reference/getCBSVoiceDirections": "direction",
|
|
208
|
+
"/api/v1/reference/getCBSmsDirections": "direction",
|
|
209
|
+
"/api/v1/reference/getCBSGprsDirections": "direction",
|
|
210
|
+
"/api/v1/reference/getNetworkTypeKeys": "nw_call_type",
|
|
211
|
+
"/api/v1/reference/getGGSNRatingGroups": "ratingGroup",
|
|
212
|
+
"/api/v1/reference/getGGSNAccessPointNames": "apn",
|
|
213
|
+
"/api/v1/reference/getMainAccountBalanceTypes": "balanceTypeId",
|
|
214
|
+
"/api/v1/reference/getDialDigitCountries": "other_party_iso"
|
|
215
|
+
};
|
|
216
|
+
return dimentions[apiName];
|
|
217
|
+
}
|
|
218
|
+
getCapitalize(item) {
|
|
219
|
+
return this.commonService.convertToSpaceSeparatedCapitalized(item);
|
|
220
|
+
}
|
|
221
|
+
getQuickDateClick(item) {
|
|
222
|
+
let startDate = item.value[0];
|
|
223
|
+
let endDate = item.value[1];
|
|
224
|
+
for (const filter of this.kpiFilterData) {
|
|
225
|
+
if (filter.filterType == 'date' || filter.filterType == 'datetime') {
|
|
226
|
+
if (filter.apiName == "startDate") {
|
|
227
|
+
filter['filterDataSourceValue'] = moment(startDate).format(filter.momentFormat);
|
|
228
|
+
}
|
|
229
|
+
if (filter.apiName == "endDate") {
|
|
230
|
+
filter['filterDataSourceValue'] = moment(endDate).format(filter.momentFormat);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
onDocumentClick(event) {
|
|
236
|
+
if (this.isDatesDropDown) {
|
|
237
|
+
const menuElement = this.menuIcon.nativeElement;
|
|
238
|
+
if (!menuElement.contains(event.target)) {
|
|
239
|
+
if (event.target['innerText'] !== "Quick Dates") {
|
|
240
|
+
this.isDatesDropDown = false;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
GammaAdvanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAdvanceFilterComponent, deps: [{ token: i1.ApplicationContentService }, { token: i2.kpicommonService }, { token: i3.ToastrService }, { token: i4.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
+
GammaAdvanceFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaAdvanceFilterComponent, selector: "app-gamma-advance-filter", inputs: { kpiId: "kpiId", filterStartDate: "filterStartDate", filterEndDate: "filterEndDate", browser_api_config: "browser_api_config", isButtonDesiable: "isButtonDesiable", filterOperatorData: "filterOperatorData" }, outputs: { filterDataObject: "filterDataObject" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuIcon", first: true, predicate: ["menuIcon"], descendants: true }], ngImport: i0, template: "<app-loader *ngIf=\"isLoader\"></app-loader>\n\n\n<ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-col border-b\">\n <div class=\"flex flex-row justify-end mb-4\" *ngIf=\"quickDateSelector\">\n <div class=\"w-1/4\">\n <dx-select-box [dataSource]=\"ranges\" valueExpr=\"value\" displayExpr=\"name\"\n (onValueChanged)=\"getQuickDateClick($event)\" placeholder=\"Quick Dates\">\n </dx-select-box>\n </div>\n </div>\n\n <ng-container *ngFor=\"let filter of kpiFilterData\">\n\n <div class=\"flex flex-row justify-between\">\n <ng-container *ngIf=\"filter.filterType == 'date'\">\n <ng-container *ngIf=\"filter.display\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'monthPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChangeForMonthPicker($event,filter.momentFormat)\"\n displayFormat=\"monthAndYear\" placeholder=\"Select Month\"\n [calendarOptions]=\"{maxZoomLevel: 'year', minZoomLevel: 'century'}\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\"\n *ngIf=\"filter.momentFunction !== 'monthPicker' && filter.momentFunction !== 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n\n\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'datetime'\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd HH:mm:ss\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType !== 'date' && filter.filterType !== 'datetime'\">\n <div class=\"mb-2\">\n {{getCapitalize(filter.label)}}\n </div>\n <div class=\"mb-2\">\n <ng-container *ngIf=\"filter.filterType == 'multiple'\">\n <div class=\"w-80\">\n <dx-tag-box [dataSource]=\"filter.filterDataSource\" valueExpr=\"value\" displayExpr=\"name\"\n [searchEnabled]=\"true\" [multiline]=\"true\" [maxDisplayedTags]=\"6\"\n [(ngModel)]=\"filter.filterDataSourceValue\" [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'single'\">\n <div class=\"w-80\">\n <dx-select-box [items]=\"filter.filterDataSource\"\n [(ngModel)]=\"filter.filterDataSourceValue\" displayExpr=\"name\"\n valueExpr=\"value\"></dx-select-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'content'\">\n <div class=\"w-80\">\n <dx-text-box [(ngModel)]=\"filter.filterDataSourceValue\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"flex flex-row justify-end pl-3\">\n\n\n <button class=\"{{commonService.BtnLightWhite}} cursor-pointer mt-2\" (click)=\"reseteFilter()\">Reset</button>\n <button class=\"{{commonService.btnPrimaryBlue}} cursor-pointer mt-2\" (click)=\"searchByFilter()\"\n *ngIf=\"isButtonDesiable\">Search</button>\n </div>\n</ng-container>", styles: ["::ng-deep .dx-timeview{width:250px!important}::ng-deep .dx-timeview-field .dx-numberbox{width:70px!important}::ng-deep .dx-timeview-format12{width:70px!important}::ng-deep .dx-numberbox-spin-container{width:18px!important}::ng-deep .dx-texteditor{margin-bottom:10px}.floating-menu{position:absolute;display:none;background:white;border:1px solid #ccc;box-shadow:0 4px 8px #0000001a;z-index:1000;min-width:150px}.floating-menu.show{display:block;z-index:99999}.floating-menu ul{list-style:none;padding:0;margin:0}.floating-menu ul li{padding:10px;cursor:pointer}.floating-menu ul li:hover{background:#f0f0f0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DxDateBoxComponent, selector: "dx-date-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "adaptivityEnabled", "applyButtonText", "applyValueMode", "buttons", "calendarOptions", "cancelButtonText", "dateOutOfRangeMessage", "dateSerializationFormat", "deferRendering", "disabled", "disabledDates", "displayFormat", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "interval", "invalidDateMessage", "isValid", "label", "labelMode", "max", "maxLength", "min", "name", "opened", "openOnFieldClick", "pickerType", "placeholder", "readOnly", "rtlEnabled", "showAnalogClock", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "type", "useMaskBehavior", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "adaptivityEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "calendarOptionsChange", "cancelButtonTextChange", "dateOutOfRangeMessageChange", "dateSerializationFormatChange", "deferRenderingChange", "disabledChange", "disabledDatesChange", "displayFormatChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "intervalChange", "invalidDateMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "maxLengthChange", "minChange", "nameChange", "openedChange", "openOnFieldClickChange", "pickerTypeChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showAnalogClockChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "typeChange", "useMaskBehaviorChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i9.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.LoaderComponent, selector: "app-loader" }] });
|
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAdvanceFilterComponent, decorators: [{
|
|
249
|
+
type: Component,
|
|
250
|
+
args: [{ selector: 'app-gamma-advance-filter', template: "<app-loader *ngIf=\"isLoader\"></app-loader>\n\n\n<ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-col border-b\">\n <div class=\"flex flex-row justify-end mb-4\" *ngIf=\"quickDateSelector\">\n <div class=\"w-1/4\">\n <dx-select-box [dataSource]=\"ranges\" valueExpr=\"value\" displayExpr=\"name\"\n (onValueChanged)=\"getQuickDateClick($event)\" placeholder=\"Quick Dates\">\n </dx-select-box>\n </div>\n </div>\n\n <ng-container *ngFor=\"let filter of kpiFilterData\">\n\n <div class=\"flex flex-row justify-between\">\n <ng-container *ngIf=\"filter.filterType == 'date'\">\n <ng-container *ngIf=\"filter.display\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'monthPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChangeForMonthPicker($event,filter.momentFormat)\"\n displayFormat=\"monthAndYear\" placeholder=\"Select Month\"\n [calendarOptions]=\"{maxZoomLevel: 'year', minZoomLevel: 'century'}\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\"\n *ngIf=\"filter.momentFunction !== 'monthPicker' && filter.momentFunction !== 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n\n\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'datetime'\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd HH:mm:ss\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType !== 'date' && filter.filterType !== 'datetime'\">\n <div class=\"mb-2\">\n {{getCapitalize(filter.label)}}\n </div>\n <div class=\"mb-2\">\n <ng-container *ngIf=\"filter.filterType == 'multiple'\">\n <div class=\"w-80\">\n <dx-tag-box [dataSource]=\"filter.filterDataSource\" valueExpr=\"value\" displayExpr=\"name\"\n [searchEnabled]=\"true\" [multiline]=\"true\" [maxDisplayedTags]=\"6\"\n [(ngModel)]=\"filter.filterDataSourceValue\" [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'single'\">\n <div class=\"w-80\">\n <dx-select-box [items]=\"filter.filterDataSource\"\n [(ngModel)]=\"filter.filterDataSourceValue\" displayExpr=\"name\"\n valueExpr=\"value\"></dx-select-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'content'\">\n <div class=\"w-80\">\n <dx-text-box [(ngModel)]=\"filter.filterDataSourceValue\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"flex flex-row justify-end pl-3\">\n\n\n <button class=\"{{commonService.BtnLightWhite}} cursor-pointer mt-2\" (click)=\"reseteFilter()\">Reset</button>\n <button class=\"{{commonService.btnPrimaryBlue}} cursor-pointer mt-2\" (click)=\"searchByFilter()\"\n *ngIf=\"isButtonDesiable\">Search</button>\n </div>\n</ng-container>", styles: ["::ng-deep .dx-timeview{width:250px!important}::ng-deep .dx-timeview-field .dx-numberbox{width:70px!important}::ng-deep .dx-timeview-format12{width:70px!important}::ng-deep .dx-numberbox-spin-container{width:18px!important}::ng-deep .dx-texteditor{margin-bottom:10px}.floating-menu{position:absolute;display:none;background:white;border:1px solid #ccc;box-shadow:0 4px 8px #0000001a;z-index:1000;min-width:150px}.floating-menu.show{display:block;z-index:99999}.floating-menu ul{list-style:none;padding:0;margin:0}.floating-menu ul li{padding:10px;cursor:pointer}.floating-menu ul li:hover{background:#f0f0f0}\n"] }]
|
|
251
|
+
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.kpicommonService }, { type: i3.ToastrService }, { type: i4.CommonService }]; }, propDecorators: { kpiId: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], filterStartDate: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], filterEndDate: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], browser_api_config: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], isButtonDesiable: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], filterDataObject: [{
|
|
262
|
+
type: Output
|
|
263
|
+
}], menuIcon: [{
|
|
264
|
+
type: ViewChild,
|
|
265
|
+
args: ['menuIcon', { static: false }]
|
|
266
|
+
}], filterOperatorData: [{
|
|
267
|
+
type: Input,
|
|
268
|
+
args: ['filterOperatorData']
|
|
269
|
+
}], onDocumentClick: [{
|
|
270
|
+
type: HostListener,
|
|
271
|
+
args: ['document:click', ['$event']]
|
|
272
|
+
}] } });
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sTUFBTSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBVWhFLE1BQU0sT0FBTywyQkFBMkI7SUFnRHRDLFlBQ1UsT0FBa0MsRUFDbEMsVUFBNEIsRUFDNUIsTUFBcUIsRUFDdEIsYUFBNEI7UUFIM0IsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTlDcEIscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUUsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBTW5DLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsV0FBTSxHQUFHO1lBQ1AsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDOUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQzFGLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUM1RixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDOUYsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUNuRixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQzFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDMUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUMzRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1NBQzNFLENBQUE7SUF5QkcsQ0FBQztJQXZCTCxJQUNJLGtCQUFrQixDQUFDLEtBQUs7UUFDMUIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLE9BQU87U0FDUjthQUFNO1lBRUwsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUN2QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFXRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUdqRyxDQUFDO0lBR0QsS0FBSyxDQUFDLG9CQUFvQjtRQUN4QixLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFFdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BKLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoSixJQUFJLGVBQWUsSUFBSSxhQUFhLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDL0I7WUFDRCxJQUFJO2dCQUNGLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7b0JBQ2xFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7d0JBQzFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBRXJGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbEMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLEVBQUU7NEJBQzdFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt5QkFDckY7NkJBQU07NEJBQ0wsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDO3lCQUN0QztxQkFDRjt5QkFBTTt3QkFDTCxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7cUJBQ2pDO2lCQUVGO3FCQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7b0JBQ3pFLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7d0JBQy9CLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3FCQUN2QjtvQkFDRCxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLGtCQUFrQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTt3QkFDM0ksSUFBSSxNQUFNLENBQUMsY0FBYyxJQUFJLGFBQWEsRUFBRTs0QkFDMUMsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLFdBQVcsRUFBRTtnQ0FDakMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7NkJBQ3pGOzRCQUNELElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0NBQy9CLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDOzZCQUN2Rjt5QkFDRjs2QkFBTSxJQUFJLE1BQU0sQ0FBQyxjQUFjLElBQUksWUFBWSxFQUFFOzRCQUNoRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksV0FBVyxFQUFFO2dDQUNqQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzs2QkFDeEY7NEJBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtnQ0FDL0IsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7NkJBQ3RGO3lCQUVGOzZCQUFNOzRCQUNMLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxXQUFXLEVBQUU7Z0NBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDekQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDOzZCQUN0SDs0QkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFO2dDQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQ3pELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzs2QkFDdEg7eUJBQ0Y7cUJBS0Y7eUJBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxFQUFFO3dCQUNyRixJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksV0FBVyxFQUFFOzRCQUNqQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUM7eUJBQzdEO3dCQUNELElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7NEJBQy9CLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDN0Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUM1RjtvQkFBUztnQkFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDakM7U0FDRjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFZO1FBQzVCLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBR0QsV0FBVyxDQUFDLE9BQU87UUFDakIsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQy9CLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELDZCQUE2QixDQUFDLENBQUMsRUFBRSxNQUFNO1FBRXJDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFO29CQUNwRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxXQUFXLEVBQUU7d0JBQ2xDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDL0g7b0JBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTt3QkFDaEMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUM3SDtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0g7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7UUFFWixJQUFJLGFBQWEsR0FBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxlQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25DLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7Z0JBQ3BFLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDckc7aUJBQU07Z0JBQ0wsSUFDRSxDQUFDLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMscUJBQXFCLEtBQUssRUFBRSxDQUFDO29CQUMzRixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDMUY7b0JBQ0EsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTt3QkFDL0IsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLFNBQVMsRUFBRTs0QkFDbkMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7eUJBQ3ZFO3dCQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxRQUFRLEVBQUU7NEJBQ3BDLGVBQWUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDO3lCQUN2RTs2QkFBTTs0QkFDTCxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQzt5QkFDeEo7cUJBQ0Y7eUJBQU07d0JBQ0wsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7cUJBRWhFO2lCQUNGO2FBQ0Y7UUFFSCxDQUFDLENBQUMsQ0FBQztRQUVILGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGVBQWUsQ0FBQztRQVFuRCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFNUMsQ0FBQztJQUlELFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELHFCQUFxQixDQUFDLE9BQU87UUFDM0IsSUFBSSxVQUFVLEdBQUc7WUFDZixrQ0FBa0MsRUFBRSxTQUFTO1lBQzdDLDRDQUE0QyxFQUFFLFNBQVM7WUFDdkQsb0NBQW9DLEVBQUUsV0FBVztZQUNqRCx5Q0FBeUMsRUFBRSxXQUFXO1lBQ3RELHNDQUFzQyxFQUFFLFdBQVc7WUFDbkQsd0NBQXdDLEVBQUUsV0FBVztZQUNyRCxzQ0FBc0MsRUFBRSxjQUFjO1lBQ3RELHVDQUF1QyxFQUFFLGFBQWE7WUFDdEQsMkNBQTJDLEVBQUUsS0FBSztZQUNsRCw4Q0FBOEMsRUFBRSxlQUFlO1lBQy9ELHlDQUF5QyxFQUFFLGlCQUFpQjtTQUM3RCxDQUFBO1FBQ0QsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBSUQsaUJBQWlCLENBQUMsSUFBSTtRQUNwQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7Z0JBQ2xFLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxXQUFXLEVBQUU7b0JBQ2pDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNqRjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFO29CQUMvQixNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDL0U7YUFFRjtTQUNGO0lBRUgsQ0FBQztJQUdELGVBQWUsQ0FBQyxLQUFpQjtRQUUvQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssYUFBYSxFQUFFO29CQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztpQkFDOUI7YUFFRjtTQUNGO0lBQ0gsQ0FBQzs7d0hBN1JVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHlmQ1p4Qyx5dktBMkZlOzJGRC9FRiwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCO3VNQUszQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ1csZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNtQyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBd0JwQyxrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQW9QM0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9rcGktY29tb24tc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbW1hLWFkdmFuY2UtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLWFkdmFuY2UtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUFkdmFuY2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBrcGlJZDogYW55O1xuICBASW5wdXQoKSBmaWx0ZXJTdGFydERhdGU6IGFueTtcbiAgQElucHV0KCkgZmlsdGVyRW5kRGF0ZTogYW55O1xuICBASW5wdXQoKSBicm93c2VyX2FwaV9jb25maWc6IGFueTtcbiAgQElucHV0KCkgaXNCdXR0b25EZXNpYWJsZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJEYXRhT2JqZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnbWVudUljb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudUljb246IEVsZW1lbnRSZWY7XG5cbiAgaXNEYXRlc0Ryb3BEb3duOiBib29sZWFuO1xuICBxdWlja0RhdGVTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBrcGlGaWx0ZXJEYXRhOiBhbnk7XG4gIC8vIHN0YXJ0X2RhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCg1LCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAvLyBlbmRfZGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBkZWZhdWx0U3RhcnREYXRlOiBhbnk7XG4gIGRlZmF1bHRFbmREYXRlOiBhbnk7XG4gIGlzTG9hZGVyID0gdHJ1ZTtcblxuICByYW5nZXMgPSBbXG4gICAgeyBuYW1lOiBcIlRvZGF5XCIsIHZhbHVlOiBbbW9tZW50KCksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogXCJZZXN0ZXJkYXlcIiwgdmFsdWU6IFttb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogXCJMYXN0IDcgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJyksIG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJyldIH0sXG4gICAgeyBuYW1lOiBcIkxhc3QgMTUgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDE1LCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogJ1RoaXMgTW9udGgnLCB2YWx1ZTogW21vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJyksIG1vbWVudCgpLmVuZE9mKCdtb250aCcpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMSBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzAsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMyBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoOTEsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgNiBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMTgyLCAnZGF5cycpLCBtb21lbnQoKV0gfSxcbiAgICB7IG5hbWU6ICdMYXN0IDEgWWVhcicsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzY1LCAnZGF5cycpLCBtb21lbnQoKV0gfVxuICBdXG5cbiAgQElucHV0KCdmaWx0ZXJPcGVyYXRvckRhdGEnKVxuICBzZXQgZmlsdGVyT3BlcmF0b3JEYXRhKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5rcGlGaWx0ZXJEYXRhID0gW107XG4gICAgICB0aGlzLmtwaUZpbHRlckRhdGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMua3BpRmlsdGVyRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnbW9tZW50Rm9ybWF0ZScpKSB7XG4gICAgICAgICAgaXRlbS5tb21lbnRGb3JtYXQgPSBpdGVtLm1vbWVudEZvcm1hdGU7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0ubW9tZW50Rm9ybWF0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJGb3JEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUga3BpU2VydmljZToga3BpY29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRlZmF1bHRFbmREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoJzEnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgIHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLmRlZmF1bHRFbmREYXRlKS5zdWJ0cmFjdCgnNScsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG5cblxuICB9XG5cblxuICBhc3luYyBwcm9jZXNzRmlsdGVyRm9yRGF0YSgpIHtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiB0aGlzLmtwaUZpbHRlckRhdGEpIHtcblxuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICBjb25zdCBzdGFydERhdGVGaWx0ZXIgPSB0aGlzLmtwaUZpbHRlckRhdGEuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmFwaU5hbWUgPT09ICdzdGFydERhdGUnICYmIChmaWx0ZXIuZGlzcGxheSAhPT0gdW5kZWZpbmVkID8gZmlsdGVyLmRpc3BsYXkgOiB0cnVlKSk7XG4gICAgICBjb25zdCBlbmREYXRlRmlsdGVyID0gdGhpcy5rcGlGaWx0ZXJEYXRhLmZpbmQoZmlsdGVyID0+IGZpbHRlci5hcGlOYW1lID09PSAnZW5kRGF0ZScgJiYgKGZpbHRlci5kaXNwbGF5ICE9PSB1bmRlZmluZWQgPyBmaWx0ZXIuZGlzcGxheSA6IHRydWUpKTtcbiAgICAgIGlmIChzdGFydERhdGVGaWx0ZXIgJiYgZW5kRGF0ZUZpbHRlcikge1xuICAgICAgICB0aGlzLnF1aWNrRGF0ZVNlbGVjdG9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSAhPT0gJ3N0YXJ0RGF0ZScgJiYgZmlsdGVyLmFwaU5hbWUgIT09ICdlbmREYXRlJykge1xuICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZS5pbmNsdWRlcygnL3JlZmVyZW5jZS8nKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRGaWx0ZXJEYXRhQnlEcmlsbERvd24oZmlsdGVyLmFwaU5hbWUpLnRvUHJvbWlzZSgpO1xuXG4gICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2UnXSA9IGRhdGE7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmRlZmF1bHRGaWx0ZXJUeXBlID09IFwiZHluYW1pY1wiICYmIGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IHRoaXMucGFyc2VDb250ZW50VmFsdWUoZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlJ10gPSBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICAgIGlmIChmaWx0ZXIuZGlzcGxheSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpbHRlci5kaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpbHRlci5kZWZhdWx0RmlsdGVyVHlwZSA9PSBcImR5bmFtaWNcIiAmJiBmaWx0ZXIubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBmaWx0ZXIubW9tZW50Rm9ybWF0ICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09IFwibW9udGhQaWNrZXJcIikge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gbW9tZW50KCkuZW5kT2YoJ21vbnRoJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5tb21lbnRGdW5jdGlvbiA9PSBcIndlZWtQaWNrZXJcIikge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5zdGFydE9mKCd3ZWVrJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5lbmRPZignd2VlaycpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKVtmaWx0ZXIubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKVtmaWx0ZXIubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgICB9IGVsc2UgaWYgKChmaWx0ZXIuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJzdGF0aWNcIiAmJiBmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlICE9PSBcIlwiKSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwic3RhcnREYXRlXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uXCIsIGZpbHRlci50eXBlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmtwaUZpbHRlckRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlQ29udGVudFZhbHVlKGNvbnRlbnR2YWx1ZSkge1xuICAgIHJldHVybiBjb250ZW50dmFsdWUuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gIH1cblxuXG4gIGdldElzTXNpc2RuKGNvbnRleHQpIHtcbiAgICBsZXQga2V5ID0gY29udGV4dC50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGtleS5pbmNsdWRlcygnbXNpc2RuJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhcnREYXRlQ2hhbmdlRm9yTW9udGhQaWNrZXIoZSwgZm9ybWF0KSB7XG5cbiAgICBpZiAoZS5ldmVudCkge1xuICAgICAgdGhpcy5rcGlGaWx0ZXJEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgZWxlbWVudFsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoZS52YWx1ZSkuc3VidHJhY3QocGFyc2VJbnQoY291bnQpLCB1bml0KS5zdGFydE9mKHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gbW9tZW50KGUudmFsdWUpLnN1YnRyYWN0KHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZW5kT2YodW5pdCkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgc3RhcnREYXRlQ2hhbmdlKGUpIHtcbiAgICB0aGlzLmRlZmF1bHRTdGFydERhdGUgPSBlLnZhbHVlO1xuICB9XG4gIGVuZERhdGVDaGFuZ2UoZSkge1xuICAgIHRoaXMuZGVmYXVsdEVuZERhdGUgPSBlLnZhbHVlO1xuICB9XG5cbiAgc2VhcmNoQnlGaWx0ZXIoKSB7XG5cbiAgICBsZXQgYXBpSnNvbk9iamVjdDogYW55ID0ge307XG4gICAgbGV0IG9wZXJhdGlvbkZpbHRlcjogYW55ID0ge307XG4gICAgdGhpcy5rcGlGaWx0ZXJEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09ICdkYXRlJyB8fCBlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBhcGlKc29uT2JqZWN0W2VsZW1lbnQuYXBpTmFtZV0gPSBtb21lbnQoZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHR5cGVvZiBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSAhPT0gXCJcIikgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSkgJiYgZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUubGVuZ3RoID4gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQub3BlcmF0b3JOYW1lICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09IFwiY29udGVudFwiKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZTtcbiAgICAgICAgICAgIH0gaWYgKGVsZW1lbnQuZmlsdGVyVHlwZSA9PSBcInNpbmdsZVwiKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlKSA/IGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlIDogW2VsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBpSnNvbk9iamVjdFtlbGVtZW50LmFwaU5hbWVdID0gZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWU7XG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgYXBpSnNvbk9iamVjdFsnb3BlcmF0aW9uRmlsdGVyJ10gPSBvcGVyYXRpb25GaWx0ZXI7XG4gICAgLy8gbGV0IGZpbHRlcl9jb25maWcgPSB7XG4gICAgLy8gICBzdGFydERhdGU6IHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSxcbiAgICAvLyAgIGVuZERhdGU6IHRoaXMuZGVmYXVsdEVuZERhdGUsXG4gICAgLy8gICBvcGVyYXRpb25GaWx0ZXI6IGFwaUpzb25PYmplY3RcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5pc0J1dHRvbkRlc2lhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zb2xlLmxvZyhhcGlKc29uT2JqZWN0KTtcbiAgICB0aGlzLmZpbHRlckRhdGFPYmplY3QuZW1pdChhcGlKc29uT2JqZWN0KTtcblxuICB9XG5cblxuXG4gIHJlc2V0ZUZpbHRlcigpIHtcbiAgICB0aGlzLmRlZmF1bHRFbmREYXRlID0gdGhpcy5maWx0ZXJFbmREYXRlO1xuICAgIHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSA9IHRoaXMuZmlsdGVyU3RhcnREYXRlO1xuICAgIHRoaXMua3BpRmlsdGVyRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgZWxlbWVudFsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBcIlwiXG4gICAgfSk7XG4gIH1cblxuXG4gIGdldERyaWxkb3duRGltZW50aW9ucyhhcGlOYW1lKSB7XG4gICAgbGV0IGRpbWVudGlvbnMgPSB7XG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldFNlcnZlZFR5cGVzXCI6IFwic3J2VHlwZVwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRPdXRSb2FtaW5nU2VydmVkVHlwZXNcIjogXCJzcnZUeXBlXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE1TQ0RpcmVjdGlvbnNcIjogXCJkaXJlY3Rpb25cIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0Q0JTVm9pY2VEaXJlY3Rpb25zXCI6IFwiZGlyZWN0aW9uXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldENCU21zRGlyZWN0aW9uc1wiOiBcImRpcmVjdGlvblwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRDQlNHcHJzRGlyZWN0aW9uc1wiOiBcImRpcmVjdGlvblwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXROZXR3b3JrVHlwZUtleXNcIjogXCJud19jYWxsX3R5cGVcIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0R0dTTlJhdGluZ0dyb3Vwc1wiOiBcInJhdGluZ0dyb3VwXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldEdHU05BY2Nlc3NQb2ludE5hbWVzXCI6IFwiYXBuXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE1haW5BY2NvdW50QmFsYW5jZVR5cGVzXCI6IFwiYmFsYW5jZVR5cGVJZFwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXREaWFsRGlnaXRDb3VudHJpZXNcIjogXCJvdGhlcl9wYXJ0eV9pc29cIlxuICAgIH1cbiAgICByZXR1cm4gZGltZW50aW9uc1thcGlOYW1lXTtcbiAgfVxuICBnZXRDYXBpdGFsaXplKGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFRvU3BhY2VTZXBhcmF0ZWRDYXBpdGFsaXplZChpdGVtKVxuICB9XG5cblxuXG4gIGdldFF1aWNrRGF0ZUNsaWNrKGl0ZW0pIHtcbiAgICBsZXQgc3RhcnREYXRlID0gaXRlbS52YWx1ZVswXTtcbiAgICBsZXQgZW5kRGF0ZSA9IGl0ZW0udmFsdWVbMV07XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiB0aGlzLmtwaUZpbHRlckRhdGEpIHtcbiAgICAgIGlmIChmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoc3RhcnREYXRlKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudChlbmREYXRlKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblxuICAgIGlmICh0aGlzLmlzRGF0ZXNEcm9wRG93bikge1xuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSB0aGlzLm1lbnVJY29uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoIW1lbnVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldFsnaW5uZXJUZXh0J10gIT09IFwiUXVpY2sgRGF0ZXNcIikge1xuICAgICAgICAgIHRoaXMuaXNEYXRlc0Ryb3BEb3duID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cblxufVxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cblxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbWItNFwiICpuZ0lmPVwicXVpY2tEYXRlU2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvNFwiPlxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtkYXRhU291cmNlXT1cInJhbmdlc1wiIHZhbHVlRXhwcj1cInZhbHVlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFF1aWNrRGF0ZUNsaWNrKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlF1aWNrIERhdGVzXCI+XG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBrcGlGaWx0ZXJEYXRhXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5kaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnt7Z2V0Q2FwaXRhbGl6ZShmaWx0ZXIubGFiZWwpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIiAqbmdJZj1cImZpbHRlci5tb21lbnRGdW5jdGlvbiA9PSAnbW9udGhQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlRm9yTW9udGhQaWNrZXIoJGV2ZW50LGZpbHRlci5tb21lbnRGb3JtYXQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJtb250aEFuZFllYXJcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJPcHRpb25zXT1cInttYXhab29tTGV2ZWw6ICd5ZWFyJywgbWluWm9vbUxldmVsOiAnY2VudHVyeSd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiICpuZ0lmPVwiZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09ICd3ZWVrUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCIgZGlzcGxheUZvcm1hdD1cInl5eXktTU0tZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7ZmlsdGVyLmZpbHRlclR5cGV9fVwiIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXIubW9tZW50RnVuY3Rpb24gIT09ICdtb250aFBpY2tlcicgJiYgZmlsdGVyLm1vbWVudEZ1bmN0aW9uICE9PSAnd2Vla1BpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IChvblZhbHVlQ2hhbmdlZCk9XCJzdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIGRpc3BsYXlGb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdkYXRldGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj57e2dldENhcGl0YWxpemUoZmlsdGVyLmxhYmVsKX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlKCRldmVudClcIiBkaXNwbGF5Rm9ybWF0PVwieXl5eS1NTS1kZCBISDptbTpzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSAhPT0gJ2RhdGUnICYmIGZpbHRlci5maWx0ZXJUeXBlICE9PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2dldENhcGl0YWxpemUoZmlsdGVyLmxhYmVsKX19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdtdWx0aXBsZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJmaWx0ZXIuZmlsdGVyRGF0YVNvdXJjZVwiIHZhbHVlRXhwcj1cInZhbHVlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbbXVsdGlsaW5lXT1cInRydWVcIiBbbWF4RGlzcGxheWVkVGFnc109XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdzaW5nbGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJ2YWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdjb250ZW50J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHBsLTNcIj5cblxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuQnRuTGlnaHRXaGl0ZX19IGN1cnNvci1wb2ludGVyIG10LTJcIiAoY2xpY2spPVwicmVzZXRlRmlsdGVyKClcIj5SZXNldDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0blByaW1hcnlCbHVlfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJzZWFyY2hCeUZpbHRlcigpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNCdXR0b25EZXNpYWJsZVwiPlNlYXJjaDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
|