mmhglobal-dynamicform 2.40.0 → 3.0.0-beta
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/README.md +0 -11
- package/fesm2022/mmhglobal-dynamicform.mjs +15336 -0
- package/fesm2022/mmhglobal-dynamicform.mjs.map +1 -0
- package/{mmhglobal-dynamicform.d.ts → index.d.ts} +5 -5
- package/lib/animations/component-animations.d.ts +3 -3
- package/lib/components/{buttonfieldbase.component.d.ts → base/buttonfieldbase.component.d.ts} +18 -26
- package/lib/components/{containerfieldbase.component.d.ts → base/containerfieldbase.component.d.ts} +20 -25
- package/lib/components/{datalistingfieldbase.component.d.ts → base/datalistingfieldbase.component.d.ts} +45 -51
- package/lib/components/{fieldbase.component.d.ts → base/fieldbase.component.d.ts} +49 -49
- package/lib/components/{inputfieldbase.component.d.ts → base/inputfieldbase.component.d.ts} +23 -27
- package/lib/{dropdown_buttons → components/button/dropdown_buttons}/dropdown_buttons.component.d.ts +15 -21
- package/lib/components/button/zbuttons/zbuttons.component.d.ts +19 -0
- package/lib/{zchip → components/button/zchip}/zchip.component.d.ts +22 -26
- package/lib/{zmfb → components/button/zmfb}/zmfb.component.d.ts +38 -43
- package/lib/components/button/zworkflowbuttons/zworkflowbuttons.component.d.ts +29 -0
- package/lib/{zchart → components/chart/zchart}/zchart.component.d.ts +73 -71
- package/lib/{zganttchart → components/chart/zganttchart}/zganttchart.component.d.ts +40 -40
- package/lib/{zgauge → components/chart/zgauge}/zgauge.component.d.ts +67 -63
- package/lib/{zprogressbar → components/chart/zprogressbar}/zprogressbar.component.d.ts +29 -30
- package/lib/{zreport → components/chart/zreport}/zreport.component.d.ts +47 -53
- package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.component.d.ts +53 -52
- package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.toolbar.component.d.ts +20 -20
- package/lib/{ztrendcard → components/chart/ztrendcard}/ztrendcard.component.d.ts +40 -36
- package/lib/components/container/kcard/kcard.component.d.ts +21 -0
- package/lib/{kscrollview → components/container/kscrollview}/kscrollview.component.d.ts +19 -20
- package/lib/{ksplitter → components/container/ksplitter}/ksplitter.component.d.ts +18 -19
- package/lib/{zcard → components/container/zcard}/zcard.component.d.ts +12 -17
- package/lib/components/container/zdiv/zdiv.component.d.ts +12 -0
- package/lib/{zdiv → components/container/zdiv}/zdiv.pipe.d.ts +7 -7
- package/lib/{zloop → components/container/zloop}/zloop.component.d.ts +21 -24
- package/lib/{ztab → components/container/ztab}/ztab.component.d.ts +34 -38
- package/lib/{ztab → components/container/ztab}/ztab.pipe.d.ts +7 -7
- package/lib/{zudf → components/container/zudf}/zudf.component.d.ts +208 -212
- package/lib/{virtual-scroll → components/data-listing/virtual-scroll}/virtual-scroll.component.d.ts +40 -45
- package/lib/{zgrid → components/data-listing/zgrid}/container/zgrid-container.component.d.ts +27 -31
- package/lib/{zgrid → components/data-listing/zgrid}/date-range-cell-filter.component.d.ts +20 -19
- package/lib/{zgrid → components/data-listing/zgrid}/zgrid.binding.directive.d.ts +174 -168
- package/lib/{zgrid → components/data-listing/zgrid}/zgrid.component.d.ts +187 -186
- package/lib/{zgrid → components/data-listing/zgrid}/zgrid.popup.anchor-target.directive.d.ts +8 -8
- package/lib/{zgrid → components/data-listing/zgrid}/zgrid.service.d.ts +27 -27
- package/lib/{ztree → components/data-listing/ztree}/ztree.component.d.ts +77 -78
- package/lib/{ztreelist → components/data-listing/ztreelist}/ztreelist.component.d.ts +100 -107
- package/lib/{sfdatetimepicker → components/input/sfdatetimepicker}/sfdatetimepicker.component.d.ts +26 -31
- package/lib/{sfquerybuilder → components/input/sfquerybuilder}/sfquerybuilder.component.d.ts +71 -73
- package/lib/{zcheckbox → components/input/zcheckbox}/zcheckbox.component.d.ts +18 -20
- package/lib/components/input/zcodeeditor/zcodeeditor.component.d.ts +43 -0
- package/lib/components/input/zcodeeditor/zcodeeditor.service.d.ts +32 -0
- package/lib/{zcolorpicker → components/input/zcolorpicker}/zcolorpicker.component.d.ts +19 -25
- package/lib/{zdatetime → components/input/zdatetime}/dateIonicFormatParser.pipe.d.ts +10 -10
- package/lib/{zdatetime → components/input/zdatetime}/dateIonicMinMaxDate.pipe.d.ts +7 -7
- package/lib/{zdatetime → components/input/zdatetime}/dateKendoFormatParser.pipe.d.ts +10 -10
- package/lib/{zdatetime → components/input/zdatetime}/dateParser.pipe.d.ts +11 -11
- package/lib/{zdatetime → components/input/zdatetime}/zdatetime.component.d.ts +32 -32
- package/lib/{zimg → components/input/zimg}/zimg.component.d.ts +16 -20
- package/lib/{zinput-container → components/input/zinput-container}/zinput-container.component.d.ts +31 -38
- package/lib/{zinput-container → components/input/zinput-container}/zinput-container.pipe.d.ts +25 -25
- package/lib/{zlabel → components/input/zlabel}/zlabel.component.d.ts +20 -26
- package/lib/{znumeric → components/input/znumeric}/znumeric.component.d.ts +29 -31
- package/lib/{znumeric → components/input/znumeric}/znumeric.component.pipe.d.ts +10 -10
- package/lib/{zpostselectinput → components/input/zpostselectinput}/zpostselectinput.component.d.ts +48 -65
- package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.component.d.ts +105 -123
- package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.directive.d.ts +12 -12
- package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.pipe.d.ts +11 -11
- package/lib/{ztext → components/input/ztext}/ztext.component.d.ts +33 -33
- package/lib/{ztextarea → components/input/ztextarea}/ztextarea.component.d.ts +21 -25
- package/lib/{ztexteditor → components/input/ztexteditor}/ztexteditor.component.d.ts +44 -42
- package/lib/{zupload → components/input/zupload}/zupload.component.d.ts +45 -50
- package/lib/{embed-components → components/menu}/context-menu/context-menu.component.d.ts +24 -28
- package/lib/{kmenu → components/menu/kmenu}/kmenu.component.d.ts +13 -14
- package/lib/components/others/zform/zform.component.d.ts +30 -0
- package/lib/components/others/zformcontrol/zformcontrol.component.d.ts +21 -0
- package/lib/components/others/zformcontrol/zformcontrol.service.d.ts +12 -0
- package/lib/components/others/zmodal/zmodal-component-helper.service.d.ts +15 -0
- package/lib/components/others/zmodal/zmodal.component.d.ts +24 -0
- package/lib/components/others/zmodal/zmodal.service.d.ts +25 -0
- package/lib/components/others/zunknown/zunknown.component.d.ts +10 -0
- package/lib/components/utility/e1-root/e1-root.component.d.ts +20 -0
- package/lib/components/utility/input-error-message/input-error-message.component.d.ts +14 -0
- package/lib/{embed-components → components/utility}/input-field-addons/input-field-addons.component.d.ts +18 -23
- package/lib/{embed-components → components/utility}/page-loader/page-loader.component.d.ts +8 -8
- package/lib/{embed-components → components/utility}/processing-record-loader/processing-record-loader.component.d.ts +8 -8
- package/lib/{embed-components → components/utility}/spinner/spinner.component.d.ts +12 -14
- package/lib/components/utility/uiappmenucontent/uiappmenucontent.component.d.ts +17 -0
- package/lib/{uibulletin → components/utility/uibulletin}/uibulletin.component.d.ts +31 -36
- package/lib/{uicontainer → components/utility/uicontainer}/uicontainer.component.d.ts +16 -19
- package/lib/components/utility/uicontent/uicontent.component.d.ts +21 -0
- package/lib/components/utility/uiheader/uiheader.component.d.ts +40 -0
- package/lib/{uipage → components/utility/uipage}/uipage.component.d.ts +18 -23
- package/lib/constants/constant.d.ts +3 -3
- package/lib/directives/elementcontainer.directive.d.ts +8 -8
- package/lib/interfaces/modal.interface.d.ts +4 -0
- package/lib/pipe/htmlSanitize.pipe.d.ts +10 -10
- package/lib/pipe/panel-area.pipe.d.ts +7 -7
- package/lib/services/main.service.d.ts +136 -142
- package/lib/services/zcomponent.debug.service.d.ts +289 -68
- package/lib/services/zcomponent.service.d.ts +31 -44
- package/package.json +6 -13
- package/public-api.d.ts +93 -100
- package/styles/all.scss +643 -0
- package/styles/component.scss +0 -0
- package/styles/notificationkit.scss +53 -0
- package/esm2020/lib/animations/component-animations.mjs +0 -39
- package/esm2020/lib/components/buttonfieldbase.component.mjs +0 -80
- package/esm2020/lib/components/containerfieldbase.component.mjs +0 -50
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +0 -277
- package/esm2020/lib/components/fieldbase.component.mjs +0 -178
- package/esm2020/lib/components/inputfieldbase.component.mjs +0 -202
- package/esm2020/lib/constants/constant.mjs +0 -4
- package/esm2020/lib/directives/elementcontainer.directive.mjs +0 -16
- package/esm2020/lib/directives/fieldelement.directive.mjs +0 -16
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +0 -45
- package/esm2020/lib/dropdown_buttons/dropdown_buttons.component.mjs +0 -109
- package/esm2020/lib/embed-components/context-menu/context-menu.component.mjs +0 -113
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +0 -93
- package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +0 -14
- package/esm2020/lib/embed-components/processing-record-loader/processing-record-loader.component.mjs +0 -14
- package/esm2020/lib/embed-components/spinner/spinner.component.mjs +0 -27
- package/esm2020/lib/ficon/ficon.component.mjs +0 -53
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +0 -53
- package/esm2020/lib/kcard/kcard.component.mjs +0 -90
- package/esm2020/lib/kmenu/kmenu.component.mjs +0 -46
- package/esm2020/lib/kscrollview/kscrollview.component.mjs +0 -77
- package/esm2020/lib/ksplitter/ksplitter.component.mjs +0 -67
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +0 -657
- package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +0 -18
- package/esm2020/lib/pipe/panel-area.pipe.mjs +0 -28
- package/esm2020/lib/services/main.service.mjs +0 -1307
- package/esm2020/lib/services/zcomponent.debug.service.mjs +0 -742
- package/esm2020/lib/services/zcomponent.service.mjs +0 -300
- package/esm2020/lib/sfdatetimepicker/sfdatetimepicker.component.mjs +0 -108
- package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +0 -501
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +0 -229
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +0 -55
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +0 -96
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +0 -41
- package/esm2020/lib/uicontent/uicontent.component.mjs +0 -63
- package/esm2020/lib/uiheader/uiheader.component.mjs +0 -116
- package/esm2020/lib/uiheader/uiheader.service.mjs +0 -27
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +0 -36
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +0 -38
- package/esm2020/lib/uipage/uipage.component.mjs +0 -160
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +0 -40
- package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +0 -249
- package/esm2020/lib/zbullet/zbullet.component.mjs +0 -77
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +0 -151
- package/esm2020/lib/zcard/zcard.component.mjs +0 -36
- package/esm2020/lib/zchart/zchart.component.mjs +0 -222
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +0 -42
- package/esm2020/lib/zchip/zchip.component.mjs +0 -119
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +0 -169
- package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +0 -60
- package/esm2020/lib/zcolorpicker/zcolorpicker.component.mjs +0 -47
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +0 -72
- package/esm2020/lib/zdatetime/dateIonicFormatParser.pipe.mjs +0 -40
- package/esm2020/lib/zdatetime/dateIonicMinMaxDate.pipe.mjs +0 -22
- package/esm2020/lib/zdatetime/dateKendoFormatParser.pipe.mjs +0 -41
- package/esm2020/lib/zdatetime/dateParser.pipe.mjs +0 -36
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +0 -134
- package/esm2020/lib/zdiv/zdiv.component.mjs +0 -79
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +0 -31
- package/esm2020/lib/zform/zform.component.mjs +0 -188
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +0 -51
- package/esm2020/lib/zganttchart/zganttchart.component.mjs +0 -160
- package/esm2020/lib/zgauge/zgauge.component.mjs +0 -122
- package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +0 -107
- package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +0 -146
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +0 -881
- package/esm2020/lib/zgrid/zgrid.component.mjs +0 -1131
- package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +0 -17
- package/esm2020/lib/zgrid/zgrid.service.mjs +0 -113
- package/esm2020/lib/zimg/zimg.component.mjs +0 -61
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +0 -91
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +0 -132
- package/esm2020/lib/zlabel/zlabel.component.mjs +0 -52
- package/esm2020/lib/zloop/zloop.component.mjs +0 -123
- package/esm2020/lib/zmfb/zmfb.component.mjs +0 -217
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +0 -124
- package/esm2020/lib/zmodal/zmodal.component.mjs +0 -129
- package/esm2020/lib/znumeric/znumeric.component.mjs +0 -110
- package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +0 -19
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +0 -315
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +0 -61
- package/esm2020/lib/zradiobutton/zradiobutton.component.mjs +0 -106
- package/esm2020/lib/zreport/zreport.component.mjs +0 -184
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +0 -271
- package/esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs +0 -150
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +0 -689
- package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +0 -35
- package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +0 -29
- package/esm2020/lib/ztab/ztab.component.mjs +0 -211
- package/esm2020/lib/ztab/ztab.pipe.mjs +0 -28
- package/esm2020/lib/ztext/ztext.component.mjs +0 -167
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +0 -66
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +0 -135
- package/esm2020/lib/ztree/ztree.component.mjs +0 -539
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +0 -546
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +0 -106
- package/esm2020/lib/zudf/zudf.component.mjs +0 -1016
- package/esm2020/lib/zunknown/zunknown.component.mjs +0 -20
- package/esm2020/lib/zupload/zupload.component.mjs +0 -403
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +0 -244
- package/esm2020/mmhglobal-dynamicform.mjs +0 -5
- package/esm2020/public-api.mjs +0 -107
- package/fesm2015/mmhglobal-dynamicform.mjs +0 -16119
- package/fesm2015/mmhglobal-dynamicform.mjs.map +0 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +0 -16079
- package/fesm2020/mmhglobal-dynamicform.mjs.map +0 -1
- package/lib/directives/fieldelement.directive.d.ts +0 -8
- package/lib/directives/scrollbar.theme.directive.d.ts +0 -10
- package/lib/ficon/ficon.component.d.ts +0 -34
- package/lib/input-error-message/input-error-message.component.d.ts +0 -19
- package/lib/kcard/kcard.component.d.ts +0 -25
- package/lib/mmhglobal-dynamicform.module.d.ts +0 -133
- package/lib/uiactionbutton/uiactionbutton.component.d.ts +0 -39
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +0 -27
- package/lib/uicontent/uicontent.component.d.ts +0 -29
- package/lib/uiheader/uiheader.component.d.ts +0 -39
- package/lib/uiheader/uiheader.service.d.ts +0 -11
- package/lib/uimenubutton/uimenubutton.component.d.ts +0 -20
- package/lib/uimenucontent/uimenucontent.component.d.ts +0 -24
- package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +0 -21
- package/lib/zbullet/zbullet.component.d.ts +0 -27
- package/lib/zbuttons/zbuttons.component.d.ts +0 -25
- package/lib/zcodeeditor/zcodeeditor.component.d.ts +0 -43
- package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +0 -12
- package/lib/zdaterange/zdaterange.component.d.ts +0 -29
- package/lib/zdiv/zdiv.component.d.ts +0 -22
- package/lib/zform/zform.component.d.ts +0 -38
- package/lib/zformcontrol/zformcontrol.component.d.ts +0 -25
- package/lib/zmodal/zmodal-mobile.component.d.ts +0 -38
- package/lib/zmodal/zmodal.component.d.ts +0 -44
- package/lib/zradiobutton/zradiobutton.component.d.ts +0 -34
- package/lib/zunknown/zunknown.component.d.ts +0 -17
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +0 -32
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component } from "@angular/core";
|
|
3
|
-
/********** Ionic **********/
|
|
4
|
-
/********** Plugin **********/
|
|
5
|
-
import { of } from "rxjs";
|
|
6
|
-
import { switchMap, tap } from "rxjs/operators";
|
|
7
|
-
import { ZGroup, FormType, TriggerFromType } from "mmhglobal-zcore";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../services/main.service";
|
|
10
|
-
import * as i2 from "@angular/router";
|
|
11
|
-
// import { IDeactivateComponent } from "src/app/services/candeactivate.guard";
|
|
12
|
-
export class UipageComponent {
|
|
13
|
-
constructor(
|
|
14
|
-
// public fieldService: FieldService,
|
|
15
|
-
mainService, activatedRoute) {
|
|
16
|
-
this.mainService = mainService;
|
|
17
|
-
this.activatedRoute = activatedRoute;
|
|
18
|
-
// ctrlName = "e1crm_bpactivity";
|
|
19
|
-
this.group = new ZGroup(true);
|
|
20
|
-
mainService.setGroup(this.group);
|
|
21
|
-
// console.log("At " + this.ctrlName + " (constructor)");
|
|
22
|
-
}
|
|
23
|
-
canExit() {
|
|
24
|
-
return this.mainService.canExit(this.group.form);
|
|
25
|
-
}
|
|
26
|
-
pageOnInit(ctrlName, pageName, isListForm, projectName) {
|
|
27
|
-
this.group._projectName = projectName;
|
|
28
|
-
this.group.isListForm = isListForm;
|
|
29
|
-
return this.mainService.getResourceServerData().pipe(tap(() => {
|
|
30
|
-
const routeParam = isListForm ? null : this.mainService.getNavigationCurrentParam();
|
|
31
|
-
this.mainService.initializeGroup(this.group, ctrlName, pageName, this);
|
|
32
|
-
if (routeParam) {
|
|
33
|
-
this.setupRouteParams(routeParam);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
console.warn("routeParam is undefined.");
|
|
37
|
-
}
|
|
38
|
-
}), switchMap(() => {
|
|
39
|
-
const formType = isListForm ? FormType.listField : FormType.formField;
|
|
40
|
-
const fieldElementName = this.group.fieldName ? this.group.fieldName : ctrlName;
|
|
41
|
-
this.group.fieldName = fieldElementName; // to be decprecated
|
|
42
|
-
this.group.fieldElementName = fieldElementName;
|
|
43
|
-
return this.mainService.getGroupFields(fieldElementName, formType, TriggerFromType.initialPageLoad, this.group, "fields");
|
|
44
|
-
//let formFieldName = this.group.fieldName ? this.group.fieldName : ctrlName;
|
|
45
|
-
//this.group.fieldName = formFieldName;
|
|
46
|
-
//if(UipageComponent.signalrEventSubscription){
|
|
47
|
-
// UipageComponent.signalrEventSubscription.unsubscribe();
|
|
48
|
-
//}
|
|
49
|
-
//UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(
|
|
50
|
-
// filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),
|
|
51
|
-
// map(async event => {
|
|
52
|
-
// let formFieldNameClone = ZComponentHelper.deepClone(formFieldName);
|
|
53
|
-
// if (event.payload.Name !== formFieldNameClone && formType === "ListField") {
|
|
54
|
-
// try {
|
|
55
|
-
// const listFieldName = await this.mainService.getListFieldName(formFieldNameClone).toPromise();
|
|
56
|
-
// formFieldNameClone = listFieldName;
|
|
57
|
-
// }
|
|
58
|
-
// catch (er) {
|
|
59
|
-
// }
|
|
60
|
-
// }
|
|
61
|
-
// if (event.payload.Name === formFieldNameClone) {
|
|
62
|
-
// this.mainService.clearFormListFields();
|
|
63
|
-
// (this as any).ngOnInit();
|
|
64
|
-
// }
|
|
65
|
-
// this.mainService.clearFormListFields()
|
|
66
|
-
// })
|
|
67
|
-
//).subscribe();
|
|
68
|
-
}), switchMap((fields) => {
|
|
69
|
-
return this.mainService.beforePageInitialise(this.group);
|
|
70
|
-
}), switchMap((fields) => {
|
|
71
|
-
if (this.group.actName === "new") {
|
|
72
|
-
this.mainService.getCloneNewCacheZModel(this.group);
|
|
73
|
-
return this.mainService.afterNewModel(this.group);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return of(fields);
|
|
77
|
-
}
|
|
78
|
-
}), switchMap(() => {
|
|
79
|
-
if (this.group.referenceId && this.group.referenceId !== "0") {
|
|
80
|
-
this.mainService.joinProjectSignalR();
|
|
81
|
-
if (this.group.subscribeToModificationAlert) {
|
|
82
|
-
this.mainService.handleSignalRModificationAlert(this.group.referenceId);
|
|
83
|
-
}
|
|
84
|
-
if (typeof this.group.getModel === "function") {
|
|
85
|
-
return this.group.getModel(this.group, this.group.referenceId);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return this.mainService.getModel$(this.group, this.group.referenceId, TriggerFromType.initialPageLoad);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
return of({});
|
|
93
|
-
}
|
|
94
|
-
}), switchMap((zmodel) => {
|
|
95
|
-
if (this.group.parentReferenceField) {
|
|
96
|
-
this.group.parentReferenceId = this.group.zModel[this.group.parentReferenceField];
|
|
97
|
-
}
|
|
98
|
-
return this.mainService.afterPageInitialise(this.group);
|
|
99
|
-
}), switchMap(() => {
|
|
100
|
-
return this.mainService.translationPageElement(this.group);
|
|
101
|
-
}));
|
|
102
|
-
// .subscribe(() => {
|
|
103
|
-
// console.log("At activity-one.page ngOnInit() completed");
|
|
104
|
-
// this.group.isLoading = false;
|
|
105
|
-
// });
|
|
106
|
-
}
|
|
107
|
-
setupRouteParams(routeParam) {
|
|
108
|
-
//let actName = routePath.get("act");
|
|
109
|
-
const routeParams = routeParam.split('/');
|
|
110
|
-
const formId = routeParams[routeParams.length - 2];
|
|
111
|
-
let actName = routeParams[routeParams.length - 1];
|
|
112
|
-
if (actName !== 'new' && actName !== 'edit') {
|
|
113
|
-
actName = 'new';
|
|
114
|
-
}
|
|
115
|
-
this.group.isNew = actName === "new" ? true : false;
|
|
116
|
-
this.group.isEdit = actName === "edit" ? true : false;
|
|
117
|
-
if (actName === "edit") {
|
|
118
|
-
this.group.referenceId = formId;
|
|
119
|
-
}
|
|
120
|
-
else if (actName === "new") {
|
|
121
|
-
this.group.parentReferenceId = formId;
|
|
122
|
-
if (this.group.parentReferenceId) {
|
|
123
|
-
if (this.group.parentReferenceField) {
|
|
124
|
-
this.group.zModel[this.group.parentReferenceField] = this.group.parentReferenceId.toString();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
console.log("group.parentReferenceId is undefined.");
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (actName) {
|
|
132
|
-
this.group.actName = actName;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
//signalrFeOnDestroy(): void {
|
|
136
|
-
// if (UipageComponent.signalrEventSubscription) {
|
|
137
|
-
// UipageComponent.signalrEventSubscription.unsubscribe();
|
|
138
|
-
// }
|
|
139
|
-
// UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(
|
|
140
|
-
// filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),
|
|
141
|
-
// map(event => this.mainService.clearFormListFields()))
|
|
142
|
-
// .subscribe()
|
|
143
|
-
//}
|
|
144
|
-
pageDestroy() {
|
|
145
|
-
console.log(this.group.pageName + " ngOnDestroy.");
|
|
146
|
-
if (this.subscription) {
|
|
147
|
-
this.subscription.unsubscribe();
|
|
148
|
-
}
|
|
149
|
-
//this.signalrFeOnDestroy();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
UipageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UipageComponent, deps: [{ token: i1.MainService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
-
UipageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UipageComponent, selector: "ng-component", ngImport: i0, template: ``, isInline: true });
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UipageComponent, decorators: [{
|
|
155
|
-
type: Component,
|
|
156
|
-
args: [{
|
|
157
|
-
template: ``,
|
|
158
|
-
}]
|
|
159
|
-
}], ctorParameters: function () { return [{ type: i1.MainService }, { type: i2.ActivatedRoute }]; } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlwYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3VpcGFnZS91aXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFnQixFQUFFLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBZSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLE1BQU0sRUFBaUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRW5JLCtFQUErRTtBQUsvRSxNQUFNLE9BQU8sZUFBZTtJQU8xQjtJQUNFLHFDQUFxQztJQUM5QixXQUF3QixFQUN4QixjQUE4QjtRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFUdkMsaUNBQWlDO1FBQ2pDLFVBQUssR0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVUvQixXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyx5REFBeUQ7SUFDM0QsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsVUFBbUIsRUFBRSxXQUFvQjtRQUN0RixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUss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Q0FBQyxDQUFDO2FBQ3REO1NBQ0Y7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsbURBQW1EO0lBQ25ELDZEQUE2RDtJQUM3RCxLQUFLO0lBRUwsdUZBQXVGO0lBQ3ZGLDBGQUEwRjtJQUMxRiwyREFBMkQ7SUFDM0Qsa0JBQWtCO0lBQ2xCLEdBQUc7SUFFSCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztRQUVELDRCQUE0QjtJQUM5QixDQUFDOzs0R0FoTFUsZUFBZTtnR0FBZixlQUFlLG9EQUZoQixFQUFFOzJGQUVELGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mLCBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL21haW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaR3JvdXAsIElEZWFjdGl2YXRlQ29tcG9uZW50LCBTdG9yYWdlU2Vzc2lvblNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIEZvcm1UeXBlLCBUcmlnZ2VyRnJvbVR5cGUgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVzdWx0LCBEaWFsb2dSZWYgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZGlhbG9nXCI7XHJcbi8vIGltcG9ydCB7IElEZWFjdGl2YXRlQ29tcG9uZW50IH0gZnJvbSBcInNyYy9hcHAvc2VydmljZXMvY2FuZGVhY3RpdmF0ZS5ndWFyZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6IGBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlwYWdlQ29tcG9uZW50IGltcGxlbWVudHMgSURlYWN0aXZhdGVDb21wb25lbnQge1xyXG4gIC8vIGN0cmxOYW1lID0gXCJlMWNybV9icGFjdGl2aXR5XCI7XHJcbiAgZ3JvdXA6IFpHcm91cCA9IG5ldyBaR3JvdXAodHJ1ZSk7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGlhbG9nOiBEaWFsb2dSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gcHVibGljIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1haW5TZXJ2aWNlOiBNYWluU2VydmljZSxcclxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIG1haW5TZXJ2aWNlLnNldEdyb3VwKHRoaXMuZ3JvdXApO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJBdCBcIiArIHRoaXMuY3RybE5hbWUgKyBcIiAoY29uc3RydWN0b3IpXCIpO1xyXG4gIH1cclxuXHJcbiAgY2FuRXhpdCgpOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWluU2VydmljZS5jYW5FeGl0KHRoaXMuZ3JvdXAuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBwYWdlT25Jbml0KGN0cmxOYW1lOiBzdHJpbmcsIHBhZ2VOYW1lOiBzdHJpbmcsIGlzTGlzdEZvcm06IGJvb2xlYW4sIHByb2plY3ROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuZ3JvdXAuX3Byb2plY3ROYW1lID0gcHJvamVjdE5hbWU7XHJcbiAgICB0aGlzLmdyb3VwLmlzTGlzdEZvcm0gPSBpc0xpc3RGb3JtO1xyXG5cclxuICAgIHJldHVybiB0aGlzLm1haW5TZXJ2aWNlLmdldFJlc291cmNlU2VydmVyRGF0YSgpLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVQYXJhbSA9IGlzTGlzdEZvcm0gPyBudWxsIDogdGhpcy5tYWluU2VydmljZS5nZXROYXZpZ2F0aW9uQ3VycmVudFBhcmFtKCk7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5pbml0aWFsaXplR3JvdXAodGhpcy5ncm91cCwgY3RybE5hbWUsIHBhZ2VOYW1lLCB0aGlzKTtcclxuXHJcbiAgICAgICAgaWYgKHJvdXRlUGFyYW0pIHtcclxuICAgICAgICAgIHRoaXMuc2V0dXBSb3V0ZVBhcmFtcyhyb3V0ZVBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJyb3V0ZVBhcmFtIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBmb3JtVHlwZSA9IGlzTGlzdEZvcm0gPyBGb3JtVHlwZS5saXN0RmllbGQgOiBGb3JtVHlwZS5mb3JtRmllbGQ7XHJcbiAgICAgICAgY29uc3QgZmllbGRFbGVtZW50TmFtZSA9IHRoaXMuZ3JvdXAuZmllbGROYW1lID8gdGhpcy5ncm91cC5maWVsZE5hbWUgOiBjdHJsTmFtZTtcclxuXHJcbiAgICAgICAgdGhpcy5ncm91cC5maWVsZE5hbWUgPSBmaWVsZEVsZW1lbnROYW1lOyAvLyB0byBiZSBkZWNwcmVjYXRlZCBcclxuICAgICAgICB0aGlzLmdyb3VwLmZpZWxkRWxlbWVudE5hbWUgPSBmaWVsZEVsZW1lbnROYW1lO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5tYWluU2VydmljZS5nZXRHcm91cEZpZWxkcyhcclxuICAgICAgICAgIGZpZWxkRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBmb3JtVHlwZSxcclxuICAgICAgICAgIFRyaWdnZXJGcm9tVHlwZS5pbml0aWFsUGFnZUxvYWQsXHJcbiAgICAgICAgICB0aGlzLmdyb3VwLFxyXG4gICAgICAgICAgXCJmaWVsZHNcIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy9sZXQgZm9ybUZpZWxkTmFtZSA9IHRoaXMuZ3JvdXAuZmllbGROYW1lID8gdGhpcy5ncm91cC5maWVsZE5hbWUgOiBjdHJsTmFtZTtcclxuICAgICAgICAvL3RoaXMuZ3JvdXAuZmllbGROYW1lID0gZm9ybUZpZWxkTmFtZTtcclxuXHJcbiAgICAgICAgLy9pZihVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uKXtcclxuICAgICAgICAvLyAgVWlwYWdlQ29tcG9uZW50LnNpZ25hbHJFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIC8vfVxyXG5cclxuICAgICAgICAvL1VpcGFnZUNvbXBvbmVudC5zaWduYWxyRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLm1haW5TZXJ2aWNlLnNpZ25hbHJHZXRFdmVudCgpLnBpcGUoXHJcbiAgICAgICAgLy8gIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSAnRmllbGRFbGVtZW50JyB8fCBldmVudC5uYW1lID09PSAnTGlzdEZpZWxkTWFwcGluZycpLFxyXG4gICAgICAgIC8vICBtYXAoYXN5bmMgZXZlbnQgPT4ge1xyXG4gICAgICAgIC8vICAgIGxldCBmb3JtRmllbGROYW1lQ2xvbmUgPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZShmb3JtRmllbGROYW1lKTtcclxuXHJcbiAgICAgICAgLy8gICAgaWYgKGV2ZW50LnBheWxvYWQuTmFtZSAhPT0gZm9ybUZpZWxkTmFtZUNsb25lICYmIGZvcm1UeXBlID09PSBcIkxpc3RGaWVsZFwiKSB7XHJcbiAgICAgICAgLy8gICAgICB0cnkge1xyXG4gICAgICAgIC8vICAgICAgICBjb25zdCBsaXN0RmllbGROYW1lID0gYXdhaXQgdGhpcy5tYWluU2VydmljZS5nZXRMaXN0RmllbGROYW1lKGZvcm1GaWVsZE5hbWVDbG9uZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgLy8gICAgICAgIGZvcm1GaWVsZE5hbWVDbG9uZSA9IGxpc3RGaWVsZE5hbWU7XHJcbiAgICAgICAgLy8gICAgICB9XHJcbiAgICAgICAgLy8gICAgICBjYXRjaCAoZXIpIHtcclxuICAgICAgICAvLyAgICAgIH1cclxuICAgICAgICAvLyAgICB9XHJcblxyXG4gICAgICAgIC8vICAgIGlmIChldmVudC5wYXlsb2FkLk5hbWUgPT09IGZvcm1GaWVsZE5hbWVDbG9uZSkge1xyXG4gICAgICAgIC8vICAgICAgdGhpcy5tYWluU2VydmljZS5jbGVhckZvcm1MaXN0RmllbGRzKCk7XHJcbiAgICAgICAgLy8gICAgICAodGhpcyBhcyBhbnkpLm5nT25Jbml0KCk7XHJcbiAgICAgICAgLy8gICAgfVxyXG5cclxuICAgICAgICAvLyAgIHRoaXMubWFpblNlcnZpY2UuY2xlYXJGb3JtTGlzdEZpZWxkcygpXHJcbiAgICAgICAgLy8gIH0pXHJcbiAgICAgICAgLy8pLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoZmllbGRzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuYmVmb3JlUGFnZUluaXRpYWxpc2UodGhpcy5ncm91cCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBzd2l0Y2hNYXAoKGZpZWxkcykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmFjdE5hbWUgPT09IFwibmV3XCIpIHtcclxuICAgICAgICAgIHRoaXMubWFpblNlcnZpY2UuZ2V0Q2xvbmVOZXdDYWNoZVpNb2RlbCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLm1haW5TZXJ2aWNlLmFmdGVyTmV3TW9kZWwodGhpcy5ncm91cCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBvZihmaWVsZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQgJiYgdGhpcy5ncm91cC5yZWZlcmVuY2VJZCAhPT0gXCIwXCIpIHtcclxuICAgICAgICAgIHRoaXMubWFpblNlcnZpY2Uuam9pblByb2plY3RTaWduYWxSKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cC5zdWJzY3JpYmVUb01vZGlmaWNhdGlvbkFsZXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpblNlcnZpY2UuaGFuZGxlU2lnbmFsUk1vZGlmaWNhdGlvbkFsZXJ0KHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5ncm91cC5nZXRNb2RlbCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyb3VwLmdldE1vZGVsKHRoaXMuZ3JvdXAsIHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuZ2V0TW9kZWwkKHRoaXMuZ3JvdXAsIHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQsIFRyaWdnZXJGcm9tVHlwZS5pbml0aWFsUGFnZUxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoem1vZGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlSWQgPSB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmdyb3VwLnBhcmVudFJlZmVyZW5jZUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuYWZ0ZXJQYWdlSW5pdGlhbGlzZSh0aGlzLmdyb3VwKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UudHJhbnNsYXRpb25QYWdlRWxlbWVudCh0aGlzLmdyb3VwKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIC8vIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIkF0IGFjdGl2aXR5LW9uZS5wYWdlIG5nT25Jbml0KCkgY29tcGxldGVkXCIpO1xyXG4gICAgLy8gICB0aGlzLmdyb3VwLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwUm91dGVQYXJhbXMocm91dGVQYXJhbTogc3RyaW5nKSB7XHJcbiAgICAvL2xldCBhY3ROYW1lID0gcm91dGVQYXRoLmdldChcImFjdFwiKTtcclxuICAgIGNvbnN0IHJvdXRlUGFyYW1zID0gcm91dGVQYXJhbS5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgZm9ybUlkID0gcm91dGVQYXJhbXNbcm91dGVQYXJhbXMubGVuZ3RoIC0gMl07XHJcbiAgICBsZXQgYWN0TmFtZSA9IHJvdXRlUGFyYW1zW3JvdXRlUGFyYW1zLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgIGlmIChhY3ROYW1lICE9PSAnbmV3JyAmJiBhY3ROYW1lICE9PSAnZWRpdCcpIHtcclxuICAgICAgYWN0TmFtZSA9ICduZXcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3JvdXAuaXNOZXcgPSBhY3ROYW1lID09PSBcIm5ld1wiID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5ncm91cC5pc0VkaXQgPSBhY3ROYW1lID09PSBcImVkaXRcIiA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICBpZiAoYWN0TmFtZSA9PT0gXCJlZGl0XCIpIHtcclxuICAgICAgdGhpcy5ncm91cC5yZWZlcmVuY2VJZCA9IGZvcm1JZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGFjdE5hbWUgPT09IFwibmV3XCIpIHtcclxuICAgICAgdGhpcy5ncm91cC5wYXJlbnRSZWZlcmVuY2VJZCA9IGZvcm1JZDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLnBhcmVudFJlZmVyZW5jZUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGRdID0gdGhpcy5ncm91cC5wYXJlbnRSZWZlcmVuY2VJZC50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImdyb3VwLnBhcmVudFJlZmVyZW5jZUlkIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0TmFtZSkge1xyXG4gICAgICB0aGlzLmdyb3VwLmFjdE5hbWUgPSBhY3ROYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zaWduYWxyRmVPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgLy8gIGlmIChVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uKSB7XHJcbiAgLy8gICAgVWlwYWdlQ29tcG9uZW50LnNpZ25hbHJFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIC8vICB9XHJcblxyXG4gIC8vICBVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5tYWluU2VydmljZS5zaWduYWxyR2V0RXZlbnQoKS5waXBlKFxyXG4gIC8vICAgIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSAnRmllbGRFbGVtZW50JyB8fCBldmVudC5uYW1lID09PSAnTGlzdEZpZWxkTWFwcGluZycpLFxyXG4gIC8vICAgIG1hcChldmVudCA9PiB0aGlzLm1haW5TZXJ2aWNlLmNsZWFyRm9ybUxpc3RGaWVsZHMoKSkpXHJcbiAgLy8gICAgLnN1YnNjcmliZSgpXHJcbiAgLy99XHJcblxyXG4gIHBhZ2VEZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5ncm91cC5wYWdlTmFtZSArIFwiIG5nT25EZXN0cm95LlwiKTtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdGhpcy5zaWduYWxyRmVPbkRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
/********** Ionic **********/
|
|
4
|
-
/********** Plugin **********/
|
|
5
|
-
/********** Component & Service **********/
|
|
6
|
-
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../services/zcomponent.service";
|
|
9
|
-
import * as i2 from "@angular/common";
|
|
10
|
-
import * as i3 from "@progress/kendo-angular-tooltip";
|
|
11
|
-
export class UivalidationmessageComponent {
|
|
12
|
-
constructor(componentService) {
|
|
13
|
-
this.componentService = componentService;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() { }
|
|
16
|
-
getValidationError(form, data) {
|
|
17
|
-
return ZComponentHelper.getValidationError(form, data);
|
|
18
|
-
}
|
|
19
|
-
getIconClass() {
|
|
20
|
-
if (!this.componentService.isMobileScreen()) {
|
|
21
|
-
return "k-icon k-i-warning validation_icon";
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return "k-icon k-i-warning";
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
UivalidationmessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UivalidationmessageComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
UivalidationmessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: { group: "group", data: "data", form: "form" }, ngImport: i0, template: "<div *ngIf=\"form.get(data.Value).invalid && (form.get(data.Value).dirty || form.get(data.Value).touched)\"\r\n class=\"divvalidation\">\r\n <div kendoTooltip\r\n position=\"left\"\r\n showOn=\"hover\">\r\n <span #warning\r\n [class]=\"getIconClass()\"\r\n [title]=\"getValidationError(form, data)\"></span>\r\n </div>\r\n</div>\r\n", styles: [".divvalidation{flex-basis:2rem;align-self:stretch;color:red}.validation_icon{padding-top:10px;padding-left:2px}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }] });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UivalidationmessageComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{ selector: 'app-uivalidationmessage', template: "<div *ngIf=\"form.get(data.Value).invalid && (form.get(data.Value).dirty || form.get(data.Value).touched)\"\r\n class=\"divvalidation\">\r\n <div kendoTooltip\r\n position=\"left\"\r\n showOn=\"hover\">\r\n <span #warning\r\n [class]=\"getIconClass()\"\r\n [title]=\"getValidationError(form, data)\"></span>\r\n </div>\r\n</div>\r\n", styles: [".divvalidation{flex-basis:2rem;align-self:stretch;color:red}.validation_icon{padding-top:10px;padding-left:2px}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}\n"] }]
|
|
33
|
-
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { group: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], data: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], form: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWl2YWxpZGF0aW9ubWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aXZhbGlkYXRpb25tZXNzYWdlL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWl2YWxpZGF0aW9ubWVzc2FnZS91aXZhbGlkYXRpb25tZXNzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVW5FLE1BQU0sT0FBTyw0QkFBNEI7SUFLdkMsWUFBb0IsZ0JBQW1DO1FBQW5DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7SUFDdkQsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDO0lBRWQsa0JBQWtCLENBQUMsSUFBZSxFQUFFLElBQVk7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzNDLE9BQU8sb0NBQW9DLENBQUE7U0FDNUM7YUFDSTtZQUNILE9BQU8sb0JBQW9CLENBQUE7U0FDNUI7SUFDSCxDQUFDOzt5SEFyQlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUhDbkJ6QyxxWEFVQTsyRkRTYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0UseUJBQXlCO3dHQU0xQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkdyb3VwLCBaRmllbGQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdWl2YWxpZGF0aW9ubWVzc2FnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIGdldFZhbGlkYXRpb25FcnJvcihmb3JtOiBGb3JtR3JvdXAsIGRhdGE6IFpGaWVsZCkge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0VmFsaWRhdGlvbkVycm9yKGZvcm0sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbkNsYXNzKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFNlcnZpY2UuaXNNb2JpbGVTY3JlZW4oKSkge1xyXG4gICAgICByZXR1cm4gXCJrLWljb24gay1pLXdhcm5pbmcgdmFsaWRhdGlvbl9pY29uXCJcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJrLWljb24gay1pLXdhcm5pbmdcIlxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkuaW52YWxpZCAmJiAoZm9ybS5nZXQoZGF0YS5WYWx1ZSkuZGlydHkgfHwgZm9ybS5nZXQoZGF0YS5WYWx1ZSkudG91Y2hlZClcIlxyXG4gICAgIGNsYXNzPVwiZGl2dmFsaWRhdGlvblwiPlxyXG4gIDxkaXYga2VuZG9Ub29sdGlwXHJcbiAgICAgICBwb3NpdGlvbj1cImxlZnRcIlxyXG4gICAgICAgc2hvd09uPVwiaG92ZXJcIj5cclxuICAgIDxzcGFuICN3YXJuaW5nXHJcbiAgICAgICAgICBbY2xhc3NdPVwiZ2V0SWNvbkNsYXNzKClcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cImdldFZhbGlkYXRpb25FcnJvcihmb3JtLCBkYXRhKVwiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
|
-
import { Component, ViewChild } from "@angular/core";
|
|
3
|
-
/********** Ionic **********/
|
|
4
|
-
/********** Plugin **********/
|
|
5
|
-
/********** Component & Service **********/
|
|
6
|
-
import { ContainerFieldBase } from "../components/containerfieldbase.component";
|
|
7
|
-
import { ZComponentHelper } from "mmhglobal-zcore";
|
|
8
|
-
import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
|
|
9
|
-
import { auditTime, delay, forkJoin, of, tap } from "rxjs";
|
|
10
|
-
import { collapseAnimation, rotateAnimation } from "../animations/component-animations";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../services/zcomponent.service";
|
|
13
|
-
import * as i2 from "mmhglobal-zcore";
|
|
14
|
-
import * as i3 from "@angular/cdk/scrolling";
|
|
15
|
-
import * as i4 from "@fortawesome/angular-fontawesome";
|
|
16
|
-
import * as i5 from "../embed-components/context-menu/context-menu.component";
|
|
17
|
-
import * as i6 from "../zformcontrol/zformcontrol.component";
|
|
18
|
-
import * as i7 from "@angular/common";
|
|
19
|
-
import * as i8 from "@angular/flex-layout/extended";
|
|
20
|
-
import * as i9 from "../pipe/htmlSanitize.pipe";
|
|
21
|
-
// Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)
|
|
22
|
-
// Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)
|
|
23
|
-
export class VirtualScrollComponent extends ContainerFieldBase {
|
|
24
|
-
constructor(componentService, fontAweSomeService) {
|
|
25
|
-
super(componentService);
|
|
26
|
-
this.fontAweSomeService = fontAweSomeService;
|
|
27
|
-
this.collapsedGroupBy = []; // Used to define animation status
|
|
28
|
-
this.groupByValueToExpand = ''; // Used to define animation status
|
|
29
|
-
this.collapsedGroupBy_FirstNodeIndexList = new Array(); // When collapse, need to retain the first node in the list so that the group by title will not be hidden
|
|
30
|
-
this.fullDataItems = [];
|
|
31
|
-
this.dataItems = [];
|
|
32
|
-
this.pageSize = 50;
|
|
33
|
-
this.pageFetched = [];
|
|
34
|
-
this.footerFields = [];
|
|
35
|
-
}
|
|
36
|
-
ngOnInit() {
|
|
37
|
-
this.setupComponent();
|
|
38
|
-
this.setupDataItems();
|
|
39
|
-
this.setupFooter();
|
|
40
|
-
super.initComponent().subscribe();
|
|
41
|
-
}
|
|
42
|
-
ngAfterViewInit() {
|
|
43
|
-
this.componentService.decrementComponentCounterForField(this.data);
|
|
44
|
-
this.viewPort.scrolledIndexChange.pipe(auditTime(this.data.ScrollIndexChangeTimeDelay || 300), tap((currIndex) => {
|
|
45
|
-
this.populateListData(currIndex);
|
|
46
|
-
})).subscribe();
|
|
47
|
-
}
|
|
48
|
-
scrollToTop() {
|
|
49
|
-
if (this.viewPort) {
|
|
50
|
-
this.viewPort.scrollToIndex(0);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
setupComponent() {
|
|
54
|
-
this.collapsedGroupBy = [];
|
|
55
|
-
if (this.data.Options) {
|
|
56
|
-
if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {
|
|
57
|
-
this.options = ZComponentHelper.getGroupValue(this.data.Options, this.group);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
this.options = this.data.Options;
|
|
61
|
-
}
|
|
62
|
-
this.pageSize = this.options.pageSize ?? 50;
|
|
63
|
-
this.options.loadingLabel = this.options.loadingLabel ?? '<div>Loading</div>';
|
|
64
|
-
this.options.itemSize = this.options.itemSize ?? 50;
|
|
65
|
-
this.options.minBufferPx = this.options.minBufferPx ?? (this.options.pageSize * this.options.itemSize);
|
|
66
|
-
this.options.maxBufferPx = this.options.maxBufferPx ?? (this.options.pageSize * this.options.itemSize);
|
|
67
|
-
this.options.isGroupByEnabled = this.options.isGroupByEnabled ?? !!this.options.groupBy;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
appendData(dataItems) {
|
|
71
|
-
this.fullDataItems = this.fullDataItems.concat(dataItems);
|
|
72
|
-
this.pageSize = this.fullDataItems.length;
|
|
73
|
-
this.computeDataItems();
|
|
74
|
-
}
|
|
75
|
-
setupDataItems() {
|
|
76
|
-
this.pageFetched = [];
|
|
77
|
-
if (this.data.DataSetResult) {
|
|
78
|
-
let dataSetResult = this.data.DataSetResult;
|
|
79
|
-
if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {
|
|
80
|
-
dataSetResult = ZComponentHelper.getGroupValue(dataSetResult, this.group);
|
|
81
|
-
}
|
|
82
|
-
this.setData(dataSetResult);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
this.dataItems = [];
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
setData(dataSetResult) {
|
|
89
|
-
if (!dataSetResult) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
this.pageFetched = [];
|
|
93
|
-
if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {
|
|
94
|
-
const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;
|
|
95
|
-
if (cnt < 0) {
|
|
96
|
-
console.error('DataItems cannot be more than total count.');
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));
|
|
100
|
-
const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;
|
|
101
|
-
for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
|
|
102
|
-
this.pageFetched.push(i);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else if (dataSetResult.totalCount) {
|
|
106
|
-
this.dataItems = Array(dataSetResult.totalCount).fill(false);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.dataItems = [];
|
|
110
|
-
}
|
|
111
|
-
this.fullDataItems = this.dataItems;
|
|
112
|
-
this.computeDataItems();
|
|
113
|
-
}
|
|
114
|
-
populateListData(currIndex) {
|
|
115
|
-
const renderRange = this.viewPort.getRenderedRange();
|
|
116
|
-
if (renderRange.start == renderRange.end && renderRange.end == 0) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const startPageNo = Math.floor(renderRange.start / this.pageSize);
|
|
120
|
-
const endPageNo = Math.floor((renderRange.end - 1) / this.pageSize);
|
|
121
|
-
const obs = new Array();
|
|
122
|
-
for (let i = startPageNo; i <= endPageNo; i++) {
|
|
123
|
-
if (!this.pageFetched.includes(i)) {
|
|
124
|
-
this.pageFetched.push(i);
|
|
125
|
-
obs.push(this.fetchData(i).pipe(tap(([data, pageNo]) => {
|
|
126
|
-
this.updateDataByIndex(pageNo * this.pageSize, data);
|
|
127
|
-
})));
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (obs.length > 0) {
|
|
131
|
-
forkJoin(obs).pipe(tap(res => {
|
|
132
|
-
this.updateViewPortData();
|
|
133
|
-
})).subscribe();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
fetchData(pageNo) {
|
|
137
|
-
if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {
|
|
138
|
-
const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnScroll);
|
|
139
|
-
if (typeof onScrollEvent === 'function') {
|
|
140
|
-
const callFunc = onScrollEvent.bind(this.group.ctrlScope);
|
|
141
|
-
return forkJoin([callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize }), of(pageNo)]);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return of(false);
|
|
145
|
-
}
|
|
146
|
-
updateDataByIndex(startingIndex, data) {
|
|
147
|
-
for (let i = 0; i < data.length; i++) {
|
|
148
|
-
this.dataItems[startingIndex + i] = data[i];
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
updateViewPortData() {
|
|
152
|
-
this.dataItems = [...this.dataItems];
|
|
153
|
-
}
|
|
154
|
-
setupFooter() {
|
|
155
|
-
if (this.data.Value && Array.isArray(this.data.Value)) {
|
|
156
|
-
this.footerFields = this.data.Value.filter(x => x.Section === 'footer');
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
getComponentOptions() {
|
|
160
|
-
return this.options;
|
|
161
|
-
}
|
|
162
|
-
//#region Group By
|
|
163
|
-
getGroupByLabelTemplate(dataItem, options) {
|
|
164
|
-
if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {
|
|
165
|
-
if (options.groupByLabelTemplate.startsWith('group.')) {
|
|
166
|
-
const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, options.groupByLabelTemplate);
|
|
167
|
-
if (getTemplateFunc) {
|
|
168
|
-
return getTemplateFunc({
|
|
169
|
-
dataItem,
|
|
170
|
-
options,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
return dataItem[options.groupByLabelTemplate];
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
groupByOnClick(groupByValue) {
|
|
180
|
-
if (!this.options.isGroupByCollapsible) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
// use collapse / expand to control animation sequence
|
|
184
|
-
const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);
|
|
185
|
-
const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);
|
|
186
|
-
if (isToCollapse) {
|
|
187
|
-
// to collapse (For animation: Change status, then append data)
|
|
188
|
-
this.collapsedGroupBy.push(groupByValue);
|
|
189
|
-
this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);
|
|
190
|
-
of({}).pipe(delay(400), tap(() => {
|
|
191
|
-
this.computeDataItems();
|
|
192
|
-
})).subscribe();
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
// to expand (For animation: Append data, then change status)
|
|
196
|
-
this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);
|
|
197
|
-
const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);
|
|
198
|
-
this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
|
|
199
|
-
this.groupByValueToExpand = groupByValue;
|
|
200
|
-
of({}).pipe(delay(0), tap(() => {
|
|
201
|
-
this.collapsedGroupBy = tempCollapsedGroupBy;
|
|
202
|
-
this.groupByValueToExpand = groupByValue;
|
|
203
|
-
})).subscribe();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
computeDataItems() {
|
|
207
|
-
this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
|
|
208
|
-
}
|
|
209
|
-
expandAll() {
|
|
210
|
-
this.groupByValueToExpand = '';
|
|
211
|
-
this.collapsedGroupBy = [];
|
|
212
|
-
this.collapsedGroupBy_FirstNodeIndexList = [];
|
|
213
|
-
this.computeDataItems();
|
|
214
|
-
}
|
|
215
|
-
expandByGroupByValues(groupByValue) {
|
|
216
|
-
this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));
|
|
217
|
-
this.computeDataItems();
|
|
218
|
-
}
|
|
219
|
-
//#endregion
|
|
220
|
-
//#region Selection
|
|
221
|
-
onClick(event, dataItem) {
|
|
222
|
-
if (!!this.data.SelectOptions || true) {
|
|
223
|
-
const targetValue = !dataItem.IsSelected;
|
|
224
|
-
if (this.data.SelectOptions == 'single' || true) {
|
|
225
|
-
for (const dt of this.dataItems) {
|
|
226
|
-
dt.IsSelected = false;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
dataItem.IsSelected = targetValue;
|
|
230
|
-
}
|
|
231
|
-
super.onClick(event, dataItem);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
235
|
-
VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: VirtualScrollComponent, selector: "app-virtual-scroll", viewQueries: [{ propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"], components: [{ type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.ContextMenuComponent, selector: "app-context-menu", inputs: ["target", "selectedData"] }, { type: i6.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": i9.HtmlSanitizePipe }, animations: [
|
|
236
|
-
collapseAnimation,
|
|
237
|
-
rotateAnimation
|
|
238
|
-
] });
|
|
239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: VirtualScrollComponent, decorators: [{
|
|
240
|
-
type: Component,
|
|
241
|
-
args: [{ selector: "app-virtual-scroll", animations: [
|
|
242
|
-
collapseAnimation,
|
|
243
|
-
rotateAnimation
|
|
244
|
-
], template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"] }]
|
|
245
|
-
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { viewPort: [{
|
|
246
|
-
type: ViewChild,
|
|
247
|
-
args: [CdkVirtualScrollViewport]
|
|
248
|
-
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFFOUIsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE9BQU8sRUFBc0UsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7O0FBWXhGLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFFNUcsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQVk1RCxZQUNFLGdCQUFtQyxFQUM1QixrQkFBc0M7UUFFN0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVp4QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7UUFDekQseUJBQW9CLEdBQUcs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SSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUMvQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQy9CLEVBQUUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDbkM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOzttSEE1UFUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb0dBQ3RCLHdCQUF3Qix1RUM3QnJDLDZnSUFtREEsMC9FRGhDYztRQUNWLGlCQUFpQjtRQUNqQixlQUFlO0tBQ2hCOzJGQU1VLHNCQUFzQjtrQkFibEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEI7d0JBQ1YsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjt5SUFPb0MsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb250YWluZXJGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jb250YWluZXJmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRhU2V0UmVzdWx0LCBGb250QXdlU29tZVNlcnZpY2UsIFZpcnR1YWxTY3JvbGxPcHRpb24sIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGF1ZGl0VGltZSwgZGVsYXksIGZvcmtKb2luLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29sbGFwc2VBbmltYXRpb24sIHJvdGF0ZUFuaW1hdGlvbiB9IGZyb20gXCIuLi9hbmltYXRpb25zL2NvbXBvbmVudC1hbmltYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdmlydHVhbC1zY3JvbGxcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIGNvbGxhcHNlQW5pbWF0aW9uLFxyXG4gICAgcm90YXRlQW5pbWF0aW9uXHJcbiAgXVxyXG59KVxyXG5cclxuLy8gQXBwcm9hY2ggMTogVG90YWwgQ291bnQgaXMga25vd24sIGdldCBuZXh0IHBhZ2UgdXBvbiBzY3JvbGwuIChXaWxsIG9ubHkgaGF2ZSBtdWx0aXBsZSBwYWdlcyAvIHBhZ2VhYmxlKVxyXG4vLyBBcHByb2FjaCAyOiBUb3RhbCBDb3VudCBpcyBub3Qga25vd24sIGFwcGVuZCBtb3JlIGRhdGEgYXQgcnVudGltZS4gKFdpbGwgb25seSBoYXZlIDEgcGFnZSAvIG5vdCBwYWdlYWJsZSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsQ29tcG9uZW50IGV4dGVuZHMgQ29udGFpbmVyRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICBwdWJsaWMgY29sbGFwc2VkR3JvdXBCeSA9IFtdOyAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gJyc7ICAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gbmV3IEFycmF5PG51bWJlcj4oKTsgLy8gV2hlbiBjb2xsYXBzZSwgbmVlZCB0byByZXRhaW4gdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGxpc3Qgc28gdGhhdCB0aGUgZ3JvdXAgYnkgdGl0bGUgd2lsbCBub3QgYmUgaGlkZGVuXHJcbiAgcHJpdmF0ZSBmdWxsRGF0YUl0ZW1zID0gW107XHJcbiAgcHVibGljIGRhdGFJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDUwO1xyXG4gIHB1YmxpYyBwYWdlRmV0Y2hlZCA9IFtdO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uO1xyXG4gIHB1YmxpYyBmb290ZXJGaWVsZHMgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBmb250QXdlU29tZVNlcnZpY2U6IEZvbnRBd2VTb21lU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgIHRoaXMuc2V0dXBGb290ZXIoKTtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKFxyXG4gICAgICBhdWRpdFRpbWUodGhpcy5kYXRhLlNjcm9sbEluZGV4Q2hhbmdlVGltZURlbGF5IHx8IDMwMCksXHJcbiAgICAgIHRhcCgoY3VyckluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4KTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3UG9ydCkge1xyXG4gICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuT3B0aW9ucyA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9wdGlvbnMuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk9wdGlvbnMsIHRoaXMuZ3JvdXApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5PcHRpb25zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5vcHRpb25zLnBhZ2VTaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubG9hZGluZ0xhYmVsID0gdGhpcy5vcHRpb25zLmxvYWRpbmdMYWJlbCA/PyAnPGRpdj5Mb2FkaW5nPC9kaXY+JztcclxuICAgICAgdGhpcy5vcHRpb25zLml0ZW1TaXplID0gdGhpcy5vcHRpb25zLml0ZW1TaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPSB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPz8gKHRoaXMub3B0aW9ucy5wYWdlU2l6ZSAqIHRoaXMub3B0aW9ucy5pdGVtU2l6ZSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA9IHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA/PyAodGhpcy5vcHRpb25zLnBhZ2VTaXplICogdGhpcy5vcHRpb25zLml0ZW1TaXplKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmlzR3JvdXBCeUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZCA/PyAhIXRoaXMub3B0aW9ucy5ncm91cEJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGVuZERhdGEoZGF0YUl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICB0aGlzLmZ1bGxEYXRhSXRlbXMgPSB0aGlzLmZ1bGxEYXRhSXRlbXMuY29uY2F0KGRhdGFJdGVtcyk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuY29tcHV0ZURhdGFJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFJdGVtcygpIHtcclxuICAgIHRoaXMucGFnZUZldGNoZWQgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGEuRGF0YVNldFJlc3VsdCkge1xyXG4gICAgICBsZXQgZGF0YVNldFJlc3VsdCA9IHRoaXMuZGF0YS5EYXRhU2V0UmVzdWx0O1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFTZXRSZXN1bHQgPT0gJ3N0cmluZycgJiYgZGF0YVNldFJlc3VsdC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIGRhdGFTZXRSZXN1bHQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoZGF0YVNldFJlc3VsdCwgdGhpcy5ncm91cCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXREYXRhKGRhdGFTZXRSZXN1bHQgYXMgRGF0YVNldFJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGRhdGFTZXRSZXN1bHQ6IERhdGFTZXRSZXN1bHQpIHtcclxuICAgIGlmICghZGF0YVNldFJlc3VsdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYWdlRmV0Y2hlZCA9IFtdO1xyXG4gICAgaWYgKGRhdGFTZXRSZXN1bHQuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KGRhdGFTZXRSZXN1bHQuZGF0YVNldCkgJiYgZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY250ID0gZGF0YVNldFJlc3VsdC50b3RhbENvdW50IC0gZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aDtcclxuICAgICAgaWYgKGNudCA8IDApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdEYXRhSXRlbXMgY2Fubm90IGJlIG1vcmUgdGhhbiB0b3RhbCBjb3VudC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gZGF0YVNldFJlc3VsdC5kYXRhU2V0LmNvbmNhdChBcnJheShjbnQpLmZpbGwoZmFsc2UpKTtcclxuICAgICAgY29uc3QgcGFnZU5vVG9NYXJrQXNGZXRjaCA9IE1hdGguY2VpbChkYXRhU2V0UmVzdWx0LmRhdGFTZXQubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgLSAxO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYWdlTm9Ub01hcmtBc0ZldGNoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkge1xyXG4gICAgICB0aGlzLmRhdGFJdGVtcyA9IEFycmF5KGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkuZmlsbChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZnVsbERhdGFJdGVtcyA9IHRoaXMuZGF0YUl0ZW1zO1xyXG4gICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlbmRlclJhbmdlID0gdGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCk7XHJcbiAgICBpZiAocmVuZGVyUmFuZ2Uuc3RhcnQgPT0gcmVuZGVyUmFuZ2UuZW5kICYmIHJlbmRlclJhbmdlLmVuZCA9PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydFBhZ2VObyA9IE1hdGguZmxvb3IocmVuZGVyUmFuZ2Uuc3RhcnQgLyB0aGlzLnBhZ2VTaXplKTtcclxuICAgIGNvbnN0IGVuZFBhZ2VObyA9IE1hdGguZmxvb3IoKHJlbmRlclJhbmdlLmVuZCAtIDEpIC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgY29uc3Qgb2JzID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2VObzsgaSA8PSBlbmRQYWdlTm87IGkrKykge1xyXG4gICAgICBpZiAoIXRoaXMucGFnZUZldGNoZWQuaW5jbHVkZXMoaSkpIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgICAgb2JzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmZldGNoRGF0YShpKS5waXBlKHRhcCgoW2RhdGEsIHBhZ2VOb10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhQnlJbmRleChwYWdlTm8gKiB0aGlzLnBhZ2VTaXplLCBkYXRhKTtcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ya0pvaW4ob2JzKS5waXBlKHRhcChyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlld1BvcnREYXRhKCk7XHJcbiAgICAgIH0pKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHBhZ2VObyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5kYXRhLk9uU2Nyb2xsICYmIHR5cGVvZiB0aGlzLmRhdGEuT25TY3JvbGwgPT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9uU2Nyb2xsLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIGNvbnN0IG9uU2Nyb2xsRXZlbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uU2Nyb2xsKTtcclxuICAgICAgaWYgKHR5cGVvZiBvblNjcm9sbEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbEZ1bmMgPSBvblNjcm9sbEV2ZW50LmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihbY2FsbEZ1bmModGhpcy5ncm91cCwgeyBwYWdlTm86IHBhZ2VObywgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSksIG9mKHBhZ2VObyldIGFzIEFycmF5PE9ic2VydmFibGU8YW55Pj4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YUJ5SW5kZXgoc3RhcnRpbmdJbmRleDogbnVtYmVyLCBkYXRhOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXNbc3RhcnRpbmdJbmRleCArIGldID0gZGF0YVtpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlld1BvcnREYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhSXRlbXMgPSBbLi4udGhpcy5kYXRhSXRlbXNdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldHVwRm9vdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5WYWx1ZSkpIHtcclxuICAgICAgdGhpcy5mb290ZXJGaWVsZHMgPSB0aGlzLmRhdGEuVmFsdWUuZmlsdGVyKHggPT4geC5TZWN0aW9uID09PSAnZm9vdGVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcG9uZW50T3B0aW9ucygpOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gR3JvdXAgQnlcclxuICBwdWJsaWMgZ2V0R3JvdXBCeUxhYmVsVGVtcGxhdGUoZGF0YUl0ZW0sIG9wdGlvbnMpOiBzdHJpbmcge1xyXG4gICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgJiYgdHlwZW9mIG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZSk7XHJcblxyXG4gICAgICAgIGlmIChnZXRUZW1wbGF0ZUZ1bmMpIHtcclxuICAgICAgICAgIHJldHVybiBnZXRUZW1wbGF0ZUZ1bmMoe1xyXG4gICAgICAgICAgICBkYXRhSXRlbSxcclxuICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBncm91cEJ5T25DbGljayhncm91cEJ5VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVzZSBjb2xsYXBzZSAvIGV4cGFuZCB0byBjb250cm9sIGFuaW1hdGlvbiBzZXF1ZW5jZVxyXG4gICAgY29uc3QgaXNUb0NvbGxhcHNlID0gIXRoaXMuY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhncm91cEJ5VmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0Tm9kZUluZGV4ID0gdGhpcy5mdWxsRGF0YUl0ZW1zLm1hcCh4ID0+IHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKS5pbmRleE9mKGdyb3VwQnlWYWx1ZSk7XHJcbiAgICBpZiAoaXNUb0NvbGxhcHNlKSB7XHJcbiAgICAgIC8vIHRvIGNvbGxhcHNlIChGb3IgYW5pbWF0aW9uOiBDaGFuZ2Ugc3RhdHVzLCB0aGVuIGFwcGVuZCBkYXRhKVxyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkucHVzaChncm91cEJ5VmFsdWUpO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LnB1c2goZmlyc3ROb2RlSW5kZXgpO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSg0MDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHRvIGV4cGFuZCAoRm9yIGFuaW1hdGlvbjogQXBwZW5kIGRhdGEsIHRoZW4gY2hhbmdlIHN0YXR1cylcclxuICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdCA9IHRoaXMuY29sbGFwc2VkR3JvdXBCeV9GaXJzdE5vZGVJbmRleExpc3QuZmlsdGVyKHggPT4geCAhPSBmaXJzdE5vZGVJbmRleCk7XHJcbiAgICAgIGNvbnN0IHRlbXBDb2xsYXBzZWRHcm91cEJ5ID0gdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmZpbHRlcih4ID0+IHggIT09IGdyb3VwQnlWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmZpbHRlcigoeCwgaW5kZXgpID0+ICF0ZW1wQ29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyh4W3RoaXMub3B0aW9ucy5ncm91cEJ5XSkgfHwgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdC5pbmNsdWRlcyhpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSgwKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gdGVtcENvbGxhcHNlZEdyb3VwQnk7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVEYXRhSXRlbXMoKSB7XHJcbiAgICB0aGlzLmRhdGFJdGVtcyA9IHRoaXMuZnVsbERhdGFJdGVtcy5maWx0ZXIoKHgsIGluZGV4KSA9PiAhdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmluY2x1ZGVzKHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKSB8fCB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LmluY2x1ZGVzKGluZGV4KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQWxsKCkge1xyXG4gICAgdGhpcy5ncm91cEJ5VmFsdWVUb0V4cGFuZCA9ICcnO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRCeUdyb3VwQnlWYWx1ZXMoZ3JvdXBCeVZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkgPSB0aGlzLmNvbGxhcHNlZEdyb3VwQnkuZmlsdGVyKHggPT4gIWdyb3VwQnlWYWx1ZS5pbmNsdWRlcyh4KSk7XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTZWxlY3Rpb25cclxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbGljayhldmVudDogYW55LCBkYXRhSXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyB8fCB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gIWRhdGFJdGVtLklzU2VsZWN0ZWQ7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyA9PSAnc2luZ2xlJyB8fCB0cnVlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkdCBvZiB0aGlzLmRhdGFJdGVtcykge1xyXG4gICAgICAgICAgZHQuSXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBkYXRhSXRlbS5Jc1NlbGVjdGVkID0gdGFyZ2V0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIub25DbGljayhldmVudCwgZGF0YUl0ZW0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIGUxdGFnLWNvbnRhaW5lci1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlXCJcclxuICBbbmdDbGFzc109XCIoZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgfHwgJycpICsgJyAnICsgKGRhdGEuQ2xhc3MgfHwgJycpXCI+XHJcbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25zLml0ZW1TaXplXCJcclxuICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtdmlld3BvcnQgZTF0YWctY29udGFpbmVyLXN0eWxlMVwiXHJcbiAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm9wdGlvbnMubWluQnVmZmVyUHhcIlxyXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJvcHRpb25zLm1heEJ1ZmZlclB4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IGRhdGFJdGVtIG9mIGRhdGFJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICA8ZGl2ICN2aXJ0dWFsc2Nyb2xsY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieSBlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCJcclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9ucy5pc0dyb3VwQnlFbmFibGVkICYmIG9wdGlvbnMuZ3JvdXBCeSAmJiAoIWRhdGFJdGVtc1tpLTFdIHx8IGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0gIT09IGRhdGFJdGVtc1tpLTFdW29wdGlvbnMuZ3JvdXBCeV0pXCJcclxuICAgICAgICAgIChjbGljayk9XCJncm91cEJ5T25DbGljayhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKVwiIFtjbGFzcy5ncm91cGJ5LWNvbGxhcHNpYmxlXT1cIm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGVcIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieS1hcnJvdy1pY29uIGUxdGFnLWNvbnRhaW5lci1zdHlsZTVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTVcIiAqbmdJZj1cIiEhb3B0aW9ucy5pc0dyb3VwQnlDb2xsYXBzaWJsZVwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKCdjYXJldC1kb3duJywgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiXHJcbiAgICAgICAgICAgIFtAcm90YXRlQW5pbWF0aW9uXT1cInt2YWx1ZTogY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdyb3RhdGUnIDogJ2RlZmF1bHQnLCBwYXJhbXM6IHtkZWdyZWU6IC05MH19XCI+XHJcbiAgICAgICAgICA8L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsLWdyb3VwYnktbGFiZWwgZTF0YWctY29udGFpbmVyLXN0eWxlNlwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPyBnZXRHcm91cEJ5TGFiZWxUZW1wbGF0ZShkYXRhSXRlbSwgb3B0aW9ucykgOiBkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbY2xhc3MudmlydHVhbC1zY3JvbGwtaXRlbS1zZWxlY3RlZF09XCIhIWRhdGFJdGVtLklzU2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YUl0ZW1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnMubG9hZGluZ0xhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YUl0ZW0uTGFiZWxcIiBbaW5uZXJIVE1MXT1cImRhdGFJdGVtLkxhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbQGNvbGxhcHNlQW5pbWF0aW9uXT1cInt2YWx1ZTogISFvcHRpb25zLmdyb3VwQnkgJiYgY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdjb2xsYXBzZScgOiAnZGVmYXVsdCd9XCJcclxuICAgICAgICAgIFtjbGFzcy5ncm91cGJ5LXZhbHVlLWV4cGFuZF09XCJncm91cEJ5VmFsdWVUb0V4cGFuZCA9PSAoZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5XSlcIlxyXG4gICAgICAgICAgW2NsYXNzLnZpcnR1YWwtc2Nyb2xsLWl0ZW0tc2VsZWN0ZWRdPVwiISFkYXRhSXRlbS5Jc1NlbGVjdGVkXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGFJdGVtXCIgW2lubmVySFRNTF09XCJvcHRpb25zLmxvYWRpbmdMYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFJdGVtLkxhYmVsXCIgW2lubmVySFRNTF09XCJkYXRhSXRlbS5MYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1jb250ZXh0LW1lbnUgKm5nSWY9XCJkYXRhLkNvbnRleHRNZW51U2V0dGluZ3NcIiBbZGF0YV09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFt0YXJnZXRdPVwidmlydHVhbHNjcm9sbGNvbnRlbnRcIiBbc2VsZWN0ZWREYXRhXT1cImRhdGFJdGVtXCI+PC9hcHAtY29udGV4dC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9vdGVyRmllbGRzXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2NvbnRhaW5lckZpZWxkXT1cImRhdGFcIiBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICBbZm9ybV09XCJmb3JtXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUzXCI+XHJcbiAgICA8L2FwcC16Zm9ybWNvbnRyb2w+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|