tango-app-ui-analyse-trax 3.0.0-dev → 3.3.1-alpha-task.63
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/esm2022/lib/components/action-centre/action-centre.component.mjs +303 -0
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +94 -0
- package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +1439 -0
- package/esm2022/lib/components/add-task/add-task.component.mjs +85 -0
- package/esm2022/lib/components/checklist/checklist.component.mjs +252 -0
- package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +1954 -0
- package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +12 -0
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +84 -0
- package/esm2022/lib/components/create-task/create-task.component.mjs +367 -0
- package/esm2022/lib/components/create-task/create-task.data.mjs +306 -0
- package/esm2022/lib/components/create-task/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/custom-select/custom-select.component.mjs +236 -0
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +600 -0
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +635 -0
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +172 -0
- package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
- package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +119 -0
- package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
- package/esm2022/lib/components/flags/flags.component.mjs +257 -0
- package/esm2022/lib/components/flags/flags.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +388 -0
- package/esm2022/lib/components/flags-info/flags-info.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +71 -0
- package/esm2022/lib/components/gallery/gallery.component.mjs +1202 -0
- package/esm2022/lib/components/group-select/group-select.component.mjs +155 -0
- package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +172 -0
- package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +117 -0
- package/esm2022/lib/components/orders/orders.component.mjs +171 -0
- package/esm2022/lib/components/pagination/pagination.component.mjs +62 -0
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +105 -0
- package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +60 -0
- package/esm2022/lib/components/reports/reports.component.mjs +299 -0
- package/esm2022/lib/components/reports/reports.interface.mjs +2 -0
- package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +27 -6
- package/esm2022/lib/components/task/task.component.mjs +271 -0
- package/esm2022/lib/components/task-configure/task-configure.component.mjs +504 -0
- package/esm2022/lib/components/task-configure/task-configure.interface.mjs +2 -0
- package/esm2022/lib/components/task-info/task-info.component.mjs +300 -0
- package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +203 -0
- package/esm2022/lib/components/task-layout/task-layout.component.mjs +12 -0
- package/esm2022/lib/components/trax-store/trax-store.component.mjs +153 -0
- package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +67 -0
- package/esm2022/lib/services/trax.service.mjs +334 -0
- package/esm2022/lib/tango-analyse-trax-routing.module.mjs +124 -6
- package/esm2022/lib/tango-analyse-trax.module.mjs +147 -9
- package/fesm2022/tango-app-ui-analyse-trax.mjs +11512 -21
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
- package/lib/components/action-centre/action-centre.component.d.ts +56 -0
- package/lib/components/activity-log/activity-log.component.d.ts +30 -0
- package/lib/components/add-checklist/add-checklist.component.d.ts +99 -0
- package/lib/components/add-task/add-task.component.d.ts +38 -0
- package/lib/components/checklist/checklist.component.d.ts +39 -0
- package/lib/components/checklist-configure/checklist-configure.component.d.ts +160 -0
- package/lib/components/checklistlayout/checklistlayout.component.d.ts +5 -0
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +24 -0
- package/lib/components/create-task/create-task.component.d.ts +58 -0
- package/lib/components/create-task/create-task.data.d.ts +244 -0
- package/lib/components/create-task/create-task.interface.d.ts +147 -0
- package/lib/components/custom-select/custom-select.component.d.ts +35 -0
- package/lib/components/dashboard/dashboard.component.d.ts +77 -0
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +102 -0
- package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +40 -0
- package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
- package/lib/components/export-gallery/export-gallery.component.d.ts +33 -0
- package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
- package/lib/components/flags/flags.component.d.ts +51 -0
- package/lib/components/flags/flags.interface.d.ts +64 -0
- package/lib/components/flags-info/flags-info.component.d.ts +62 -0
- package/lib/components/flags-info/flags-info.interface.d.ts +212 -0
- package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +13 -0
- package/lib/components/gallery/gallery.component.d.ts +126 -0
- package/lib/components/group-select/group-select.component.d.ts +33 -0
- package/lib/components/managechecklist/managechecklist.component.d.ts +32 -0
- package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +27 -0
- package/lib/components/orders/orders.component.d.ts +38 -0
- package/lib/components/pagination/pagination.component.d.ts +16 -0
- package/lib/components/reactive-select/reactive-select.component.d.ts +32 -0
- package/lib/components/reports/date-picker/date-picker.component.d.ts +23 -0
- package/lib/components/reports/reports.component.d.ts +55 -0
- package/lib/components/reports/reports.interface.d.ts +46 -0
- package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +10 -1
- package/lib/components/task/task.component.d.ts +59 -0
- package/lib/components/task-configure/task-configure.component.d.ts +69 -0
- package/lib/components/task-configure/task-configure.interface.d.ts +124 -0
- package/lib/components/task-info/task-info.component.d.ts +68 -0
- package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +60 -0
- package/lib/components/task-layout/task-layout.component.d.ts +5 -0
- package/lib/components/trax-store/trax-store.component.d.ts +44 -0
- package/lib/components/traxpopup/traxpopup.component.d.ts +23 -0
- package/lib/services/trax.service.d.ts +107 -0
- package/lib/tango-analyse-trax.module.d.ts +43 -3
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
+
import * as i2 from "@angular/platform-browser";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@angular/forms";
|
|
7
|
+
export class TraxpopupComponent {
|
|
8
|
+
dialogRef;
|
|
9
|
+
sanitizer;
|
|
10
|
+
requestText = '';
|
|
11
|
+
data;
|
|
12
|
+
constructor(dialogRef, sanitizer) {
|
|
13
|
+
this.dialogRef = dialogRef;
|
|
14
|
+
this.sanitizer = sanitizer;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
if (this.data?.user) {
|
|
18
|
+
this.data.user.forEach((item) => {
|
|
19
|
+
item.invite = true;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
this.data.imagesrc = this.sanitizer.bypassSecurityTrustHtml(this.data.imagesrc);
|
|
23
|
+
}
|
|
24
|
+
closepopup() {
|
|
25
|
+
this.dialogRef.close();
|
|
26
|
+
}
|
|
27
|
+
deletepopup() {
|
|
28
|
+
this.dialogRef.close('delete');
|
|
29
|
+
}
|
|
30
|
+
duplicatepopup() {
|
|
31
|
+
this.dialogRef.close('duplicate');
|
|
32
|
+
}
|
|
33
|
+
confirmpopup() {
|
|
34
|
+
let res = (this.data.resType && this.data.resType == 'custom') ?
|
|
35
|
+
{ status: 'confirm', data: { requestText: this.requestText } } :
|
|
36
|
+
'confirm';
|
|
37
|
+
this.dialogRef.close(res);
|
|
38
|
+
}
|
|
39
|
+
confirmStorepopup() {
|
|
40
|
+
this.dialogRef.close('confirmStore');
|
|
41
|
+
}
|
|
42
|
+
activeStorepopup() {
|
|
43
|
+
this.dialogRef.close('activeStore');
|
|
44
|
+
}
|
|
45
|
+
skipEntries() {
|
|
46
|
+
this.dialogRef.close('skip');
|
|
47
|
+
}
|
|
48
|
+
invitepopup() {
|
|
49
|
+
let data = {
|
|
50
|
+
message: 'confirm',
|
|
51
|
+
user: this.data.user
|
|
52
|
+
};
|
|
53
|
+
this.dialogRef.close(data);
|
|
54
|
+
}
|
|
55
|
+
updateCheck(event, index) {
|
|
56
|
+
this.data.user[index].invite = event.target.checked;
|
|
57
|
+
}
|
|
58
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxpopupComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxpopupComponent, selector: "lib-traxpopup", inputs: { data: "data" }, ngImport: i0, template: "\r\n<div class=\"text-start p-9\">\r\n <div [innerHTML]=\"data.imagesrc\"></div>\r\n <div class=\"customtitle mt-4\">\r\n {{data.title}}\r\n </div>\r\n <div class=\"content mt-4\" [innerHtml]=\"data.content\">\r\n </div>\r\n <div class=\"error mt-5 p-5 pt-0 h-auto mh-200px overflow-scroll\" *ngIf=\"data?.error\">\r\n <div class=\"mt-5\" *ngFor=\"let error of data?.error;let i =index\">\r\n <span>{{i + 1}}.) {{error}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-4\">\r\n {{data.subtitle}}\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-3\" *ngIf=\"data?.location?.length\">\r\n <div class=\"content mb-2\">Location is required on below stores</div>\r\n {{data.location}}\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-3\" *ngIf=\"data?.inactiveStores?.length\">\r\n <div class=\"content mb-2\">Inactive stores found in the csv.</div>\r\n {{data.inactiveStores}}\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Invite'\" class=\"content\" [ngClass]=\"data.user.length > 4 ? 'addScroll' : ''\">\r\n <div class=\"d-flex align-items-center position-relative mb-5\" *ngFor=\"let user of data.user;let i= index\">\r\n <div class=\"form-check form-check-custom form-check-solid mx-2 me-4\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" [checked]=\"user.invite\"\r\n (change)=\"updateCheck($event,i)\">\r\n </div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{user.userName.slice(0,2)}} </span>\r\n </div>\r\n <div>\r\n <a class=\"invitemain\">{{user.userName}}</a>\r\n <div class=\"invitesub\">\r\n {{user.userEmail}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"data.input1\" class=\"mt-5\">\r\n <label *ngIf=\"data.inputlabel2\" for=\"inputmodel\" class=\"label\">{{data.inputlabel1}}</label><br>\r\n <input class=\"inputlabel\" id=\"inputmodel\" placeholder=\"{{data.placeholder1}}\" type=\"{{data.inputtype1}}\"\r\n disabled>\r\n </div>\r\n <div *ngIf=\"data.input2\" class=\"mt-5\">\r\n <label *ngIf=\"data.inputlabel2\" for=\"inputmodel\" class=\"label\">{{data.inputlabel2}}</label>\r\n <input class=\"inputlabel\" id=\"inputmodel\" placeholder=\"{{data.placeholder2}}\" [(ngModel)]=\"requestText\"\r\n type=\"{{data.inputtype2}}\">\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'delete'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\" (click)=\"deletepopup()\">Delete</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'duplicate'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"duplicatepopup()\">Duplicate</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'draft'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"confirmpopup()\">Save As\r\n Draft</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Request'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Request</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'confirm'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Confirm</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Reinitiate'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Reinitiate</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Remove'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"confirmpopup()\">Remove</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Reupload'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Reupload</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Invite'\" class=\"d-flex text-center justify-content-between mt-8\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"invitepopup()\">Invite\r\n Selected</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Addstore'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"confirmStorepopup()\">Add\r\n Store</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Activestore'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"activeStorepopup()\">Active\r\n Store</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'error'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"dialogRef.close('reupload')\">Reupload</button>\r\n </div>\r\n</div>", styles: [".Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.form-check.form-check-solid .form-check-input:checked{background-color:var(--primary-50, #EAF8FF)!important}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.min-width-popup{min-width:47%!important}.content{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;padding:0!important;font-style:normal;font-weight:400}.label{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input{font-size:16px;color:var(--gray-900, #101828)}.inputlabel{width:100%;margin-top:5px;padding:10px 14px;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.inputlabel:focus{outline:1px solid var(--gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d!important;border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF)!important;box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d!important;color:#101828}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.fw-600{font-weight:600!important}::ng-deep .mat-dialog-container{box-shadow:none;background:#fff;color:#000000de}.symbol-label{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.invitemain{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.invitesub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.subtitle{color:var(--Black, #101828);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.customtitle{color:var(--gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.addScroll{height:300px;overflow-y:scroll}.storesubtitle{word-break:break-all;padding-top:.5em}::ng-deep .mat-dialog-container{display:block;padding:24px;border-radius:12px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.error{color:var(--Error-700, #B42318);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;border-radius:8px;border:1px solid var(--Error-300, #FDA29B);background:var(--Error-25, #FFFBFA)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxpopupComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'lib-traxpopup', template: "\r\n<div class=\"text-start p-9\">\r\n <div [innerHTML]=\"data.imagesrc\"></div>\r\n <div class=\"customtitle mt-4\">\r\n {{data.title}}\r\n </div>\r\n <div class=\"content mt-4\" [innerHtml]=\"data.content\">\r\n </div>\r\n <div class=\"error mt-5 p-5 pt-0 h-auto mh-200px overflow-scroll\" *ngIf=\"data?.error\">\r\n <div class=\"mt-5\" *ngFor=\"let error of data?.error;let i =index\">\r\n <span>{{i + 1}}.) {{error}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-4\">\r\n {{data.subtitle}}\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-3\" *ngIf=\"data?.location?.length\">\r\n <div class=\"content mb-2\">Location is required on below stores</div>\r\n {{data.location}}\r\n </div>\r\n <div class=\"subtitle storesubtitle mb-3\" *ngIf=\"data?.inactiveStores?.length\">\r\n <div class=\"content mb-2\">Inactive stores found in the csv.</div>\r\n {{data.inactiveStores}}\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Invite'\" class=\"content\" [ngClass]=\"data.user.length > 4 ? 'addScroll' : ''\">\r\n <div class=\"d-flex align-items-center position-relative mb-5\" *ngFor=\"let user of data.user;let i= index\">\r\n <div class=\"form-check form-check-custom form-check-solid mx-2 me-4\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" [checked]=\"user.invite\"\r\n (change)=\"updateCheck($event,i)\">\r\n </div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{user.userName.slice(0,2)}} </span>\r\n </div>\r\n <div>\r\n <a class=\"invitemain\">{{user.userName}}</a>\r\n <div class=\"invitesub\">\r\n {{user.userEmail}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"data.input1\" class=\"mt-5\">\r\n <label *ngIf=\"data.inputlabel2\" for=\"inputmodel\" class=\"label\">{{data.inputlabel1}}</label><br>\r\n <input class=\"inputlabel\" id=\"inputmodel\" placeholder=\"{{data.placeholder1}}\" type=\"{{data.inputtype1}}\"\r\n disabled>\r\n </div>\r\n <div *ngIf=\"data.input2\" class=\"mt-5\">\r\n <label *ngIf=\"data.inputlabel2\" for=\"inputmodel\" class=\"label\">{{data.inputlabel2}}</label>\r\n <input class=\"inputlabel\" id=\"inputmodel\" placeholder=\"{{data.placeholder2}}\" [(ngModel)]=\"requestText\"\r\n type=\"{{data.inputtype2}}\">\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'delete'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\" (click)=\"deletepopup()\">Delete</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'duplicate'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"duplicatepopup()\">Duplicate</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'draft'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"confirmpopup()\">Save As\r\n Draft</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Request'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Request</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'confirm'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Confirm</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Reinitiate'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Reinitiate</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Remove'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"confirmpopup()\">Remove</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Reupload'\" class=\"d-flex text-center justify-content-between mt-5\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\"\r\n (click)=\"confirmpopup()\">Reupload</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Invite'\" class=\"d-flex text-center justify-content-between mt-8\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"invitepopup()\">Invite\r\n Selected</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Addstore'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"confirmStorepopup()\">Add\r\n Store</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'Activestore'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"skipEntries()\">Skip New Entries</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-primary\" (click)=\"activeStorepopup()\">Active\r\n Store</button>\r\n </div>\r\n <div *ngIf=\"data.buttontype === 'error'\" class=\"d-flex text-center justify-content-between\">\r\n <button class=\"btn min-width-popup btn-outline\" (click)=\"closepopup()\">Cancel</button>\r\n <button class=\"btn min-width-popup btn-outline active btn-active-danger\"\r\n (click)=\"dialogRef.close('reupload')\">Reupload</button>\r\n </div>\r\n</div>", styles: [".Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.form-check.form-check-solid .form-check-input:checked{background-color:var(--primary-50, #EAF8FF)!important}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.min-width-popup{min-width:47%!important}.content{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;padding:0!important;font-style:normal;font-weight:400}.label{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input{font-size:16px;color:var(--gray-900, #101828)}.inputlabel{width:100%;margin-top:5px;padding:10px 14px;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);box-shadow:0 1px 2px #1018280d}.inputlabel:focus{outline:1px solid var(--gray-300, #D0D5DD)!important;box-shadow:0 1px 2px #1018280d!important;border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF)!important;box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d!important;color:#101828}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.fw-600{font-weight:600!important}::ng-deep .mat-dialog-container{box-shadow:none;background:#fff;color:#000000de}.symbol-label{color:var(--primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.invitemain{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.invitesub{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.subtitle{color:var(--Black, #101828);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.customtitle{color:var(--gray-900, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.addScroll{height:300px;overflow-y:scroll}.storesubtitle{word-break:break-all;padding-top:.5em}::ng-deep .mat-dialog-container{display:block;padding:24px;border-radius:12px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.error{color:var(--Error-700, #B42318);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;border-radius:8px;border:1px solid var(--Error-300, #FDA29B);background:var(--Error-25, #FFFBFA)}\n"] }]
|
|
64
|
+
}], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.DomSanitizer }], propDecorators: { data: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}] } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheHBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvdHJheHBvcHVwL3RyYXhwb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3RyYXhwb3B1cC90cmF4cG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVN6RCxNQUFNLE9BQU8sa0JBQWtCO0lBR1Q7SUFBa0M7SUFGdEQsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUNoQixJQUFJLENBQUs7SUFDbEIsWUFBb0IsU0FBeUIsRUFBUyxTQUF1QjtRQUF6RCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBSSxDQUFDO0lBRWxGLFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtZQUNuQixDQUFDLENBQUMsQ0FBQTtTQUNKO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLEdBQUcsR0FDUCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEQsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLElBQUksRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQzNELFNBQVMsQ0FBQztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxHQUFHO1lBQ1QsT0FBTyxFQUFDLFNBQVM7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUNyQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFTLEVBQUMsS0FBUztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDdEQsQ0FBQzt3R0F4RFUsa0JBQWtCOzRGQUFsQixrQkFBa0IsK0VDVC9CLDRqT0FnSE07OzRGRHZHTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTs4R0FNaEIsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10cmF4cG9wdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmF4cG9wdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90cmF4cG9wdXAuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmF4cG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlcXVlc3RUZXh0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkYXRhOmFueTtcclxuICBjb25zdHJ1Y3RvciggcHVibGljIGRpYWxvZ1JlZjogTmdiQWN0aXZlTW9kYWwscHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5kYXRhPy51c2VyKSB7XHJcbiAgICAgIHRoaXMuZGF0YS51c2VyLmZvckVhY2goKGl0ZW06YW55KSA9PntcclxuICAgICAgIGl0ZW0uaW52aXRlID0gdHJ1ZVxyXG4gICAgICB9KVxyXG4gICB9XHJcbiAgICB0aGlzLmRhdGEuaW1hZ2VzcmMgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmRhdGEuaW1hZ2VzcmMpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2Vwb3B1cCgpe1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZXBvcHVwKCl7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnZGVsZXRlJyk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVwb3B1cCgpe1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ2R1cGxpY2F0ZScpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybXBvcHVwKCkge1xyXG4gICAgbGV0IHJlczogYW55ID0gXHJcbiAgICAodGhpcy5kYXRhLnJlc1R5cGUgJiYgdGhpcy5kYXRhLnJlc1R5cGUgPT0gJ2N1c3RvbScpID8gXHJcbiAgICAgIHtzdGF0dXM6ICdjb25maXJtJyxkYXRhOiB7cmVxdWVzdFRleHQ6IHRoaXMucmVxdWVzdFRleHR9fSA6IFxyXG4gICAgICAnY29uZmlybSc7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXMpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybVN0b3JlcG9wdXAoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnY29uZmlybVN0b3JlJyk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVTdG9yZXBvcHVwKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ2FjdGl2ZVN0b3JlJyk7XHJcbiAgfVxyXG5cclxuICBza2lwRW50cmllcygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdza2lwJyk7XHJcbiAgfVxyXG5cclxuICBpbnZpdGVwb3B1cCgpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBtZXNzYWdlOidjb25maXJtJyxcclxuICAgICAgdXNlcjogdGhpcy5kYXRhLnVzZXJcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRhdGEpXHJcbiAgfVxyXG4gIFxyXG4gIHVwZGF0ZUNoZWNrKGV2ZW50OmFueSxpbmRleDphbnkpIHtcclxuICAgIHRoaXMuZGF0YS51c2VyW2luZGV4XS5pbnZpdGUgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHAtOVwiPlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGEuaW1hZ2VzcmNcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b210aXRsZSAgbXQtNFwiPlxyXG4gICAgICAgIHt7ZGF0YS50aXRsZX19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50IG10LTRcIiBbaW5uZXJIdG1sXT1cImRhdGEuY29udGVudFwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3IgbXQtNSBwLTUgcHQtMCBoLWF1dG8gbWgtMjAwcHggb3ZlcmZsb3ctc2Nyb2xsXCIgKm5nSWY9XCJkYXRhPy5lcnJvclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC01XCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIGRhdGE/LmVycm9yO2xldCBpID1pbmRleFwiPlxyXG4gICAgICAgICAgICA8c3Bhbj57e2kgKyAxfX0uJiM0MTsge3tlcnJvcn19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgc3RvcmVzdWJ0aXRsZSBtYi00XCI+XHJcbiAgICAgICAge3tkYXRhLnN1YnRpdGxlfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIHN0b3Jlc3VidGl0bGUgbWItM1wiICpuZ0lmPVwiZGF0YT8ubG9jYXRpb24/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50IG1iLTJcIj5Mb2NhdGlvbiBpcyByZXF1aXJlZCBvbiBiZWxvdyBzdG9yZXM8L2Rpdj5cclxuICAgICAgICB7e2RhdGEubG9jYXRpb259fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgc3RvcmVzdWJ0aXRsZSBtYi0zXCIgKm5nSWY9XCJkYXRhPy5pbmFjdGl2ZVN0b3Jlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQgbWItMlwiPkluYWN0aXZlIHN0b3JlcyBmb3VuZCBpbiB0aGUgY3N2LjwvZGl2PlxyXG4gICAgICAgIHt7ZGF0YS5pbmFjdGl2ZVN0b3Jlc319XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmJ1dHRvbnR5cGUgPT09ICdJbnZpdGUnXCIgY2xhc3M9XCJjb250ZW50XCIgW25nQ2xhc3NdPVwiZGF0YS51c2VyLmxlbmd0aCA+IDQgPyAnYWRkU2Nyb2xsJyA6ICcnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbWItNVwiICpuZ0Zvcj1cImxldCB1c2VyIG9mIGRhdGEudXNlcjtsZXQgaT0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZCBteC0yIG1lLTRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIFtjaGVja2VkXT1cInVzZXIuaW52aXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUNoZWNrKCRldmVudCxpKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1c2VyLnVzZXJOYW1lLnNsaWNlKDAsMil9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJpbnZpdGVtYWluXCI+e3t1c2VyLnVzZXJOYW1lfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52aXRlc3ViXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1c2VyLnVzZXJFbWFpbH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5pbnB1dDFcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICA8bGFiZWwgKm5nSWY9XCJkYXRhLmlucHV0bGFiZWwyXCIgZm9yPVwiaW5wdXRtb2RlbFwiIGNsYXNzPVwibGFiZWxcIj57e2RhdGEuaW5wdXRsYWJlbDF9fTwvbGFiZWw+PGJyPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0bGFiZWxcIiBpZD1cImlucHV0bW9kZWxcIiBwbGFjZWhvbGRlcj1cInt7ZGF0YS5wbGFjZWhvbGRlcjF9fVwiIHR5cGU9XCJ7e2RhdGEuaW5wdXR0eXBlMX19XCJcclxuICAgICAgICAgICAgZGlzYWJsZWQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmlucHV0MlwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICAgIDxsYWJlbCAqbmdJZj1cImRhdGEuaW5wdXRsYWJlbDJcIiBmb3I9XCJpbnB1dG1vZGVsXCIgY2xhc3M9XCJsYWJlbFwiPnt7ZGF0YS5pbnB1dGxhYmVsMn19PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dGxhYmVsXCIgaWQ9XCJpbnB1dG1vZGVsXCIgcGxhY2Vob2xkZXI9XCJ7e2RhdGEucGxhY2Vob2xkZXIyfX1cIiBbKG5nTW9kZWwpXT1cInJlcXVlc3RUZXh0XCJcclxuICAgICAgICAgICAgdHlwZT1cInt7ZGF0YS5pbnB1dHR5cGUyfX1cIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ2RlbGV0ZSdcIiBjbGFzcz1cImQtZmxleCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lIGFjdGl2ZSBidG4tYWN0aXZlLWRhbmdlclwiIChjbGljayk9XCJkZWxldGVwb3B1cCgpXCI+RGVsZXRlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmJ1dHRvbnR5cGUgPT09ICdkdXBsaWNhdGUnXCIgY2xhc3M9XCJkLWZsZXggdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lIGFjdGl2ZSBidG4tYWN0aXZlLWRhbmdlclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkdXBsaWNhdGVwb3B1cCgpXCI+RHVwbGljYXRlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmJ1dHRvbnR5cGUgPT09ICdkcmFmdCdcIiBjbGFzcz1cImQtZmxleCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtaW4td2lkdGgtcG9wdXAgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2Vwb3B1cCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtaW4td2lkdGgtcG9wdXAgYnRuLW91dGxpbmUgYWN0aXZlIGJ0bi1hY3RpdmUtcHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtcG9wdXAoKVwiPlNhdmUgQXNcclxuICAgICAgICAgICAgRHJhZnQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ1JlcXVlc3QnXCIgY2xhc3M9XCJkLWZsZXggdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lIGFjdGl2ZSBidG4tYWN0aXZlLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybXBvcHVwKClcIj5SZXF1ZXN0PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmJ1dHRvbnR5cGUgPT09ICdjb25maXJtJ1wiIGNsYXNzPVwiZC1mbGV4IHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1wb3B1cCgpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5idXR0b250eXBlID09PSAnUmVpbml0aWF0ZSdcIiBjbGFzcz1cImQtZmxleCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWluLXdpZHRoLXBvcHVwIGJ0bi1vdXRsaW5lIGFjdGl2ZSBidG4tYWN0aXZlLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybXBvcHVwKClcIj5SZWluaXRpYXRlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLmJ1dHRvbnR5cGUgPT09ICdSZW1vdmUnXCIgY2xhc3M9XCJkLWZsZXggdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1kYW5nZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybXBvcHVwKClcIj5SZW1vdmU8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ1JldXBsb2FkJ1wiIGNsYXNzPVwiZC1mbGV4IHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1wb3B1cCgpXCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ0ludml0ZSdcIiBjbGFzcz1cImQtZmxleCB0ZXh0LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC04XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtaW4td2lkdGgtcG9wdXAgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwic2tpcEVudHJpZXMoKVwiPlNraXAgTmV3IEVudHJpZXM8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5XCIgKGNsaWNrKT1cImludml0ZXBvcHVwKClcIj5JbnZpdGVcclxuICAgICAgICAgICAgU2VsZWN0ZWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ0FkZHN0b3JlJ1wiIGNsYXNzPVwiZC1mbGV4IHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtaW4td2lkdGgtcG9wdXAgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwic2tpcEVudHJpZXMoKVwiPlNraXAgTmV3IEVudHJpZXM8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm1TdG9yZXBvcHVwKClcIj5BZGRcclxuICAgICAgICAgICAgU3RvcmU8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEuYnV0dG9udHlwZSA9PT0gJ0FjdGl2ZXN0b3JlJ1wiIGNsYXNzPVwiZC1mbGV4IHRleHQtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtaW4td2lkdGgtcG9wdXAgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwic2tpcEVudHJpZXMoKVwiPlNraXAgTmV3IEVudHJpZXM8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1wcmltYXJ5XCIgKGNsaWNrKT1cImFjdGl2ZVN0b3JlcG9wdXAoKVwiPkFjdGl2ZVxyXG4gICAgICAgICAgICBTdG9yZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5idXR0b250eXBlID09PSAnZXJyb3InXCIgY2xhc3M9XCJkLWZsZXggdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZXBvcHVwKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1pbi13aWR0aC1wb3B1cCBidG4tb3V0bGluZSBhY3RpdmUgYnRuLWFjdGl2ZS1kYW5nZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKCdyZXVwbG9hZCcpXCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import { Injectable, } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import * as FileSaver from 'file-saver';
|
|
5
|
+
import * as XLSX from 'xlsx';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "tango-app-ui-global";
|
|
9
|
+
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
|
|
10
|
+
const EXCEL_EXTENSION = '.xlsx';
|
|
11
|
+
const CSV_TYPE = 'text/csv;charset=utf-8';
|
|
12
|
+
const CSV_EXTENSION = '.csv';
|
|
13
|
+
export class TraxService {
|
|
14
|
+
http;
|
|
15
|
+
gs;
|
|
16
|
+
traxUrl;
|
|
17
|
+
storeUrl;
|
|
18
|
+
galleryApiUrl;
|
|
19
|
+
dropDownTrigger = new BehaviorSubject(null);
|
|
20
|
+
reloadDataSubject = new BehaviorSubject(false);
|
|
21
|
+
reloadData$ = this.reloadDataSubject.asObservable();
|
|
22
|
+
// openedDropdowns:string[] = []
|
|
23
|
+
dropdownCloseTrigger = new BehaviorSubject('');
|
|
24
|
+
clientAPiUrl;
|
|
25
|
+
trafficApiUrl;
|
|
26
|
+
traxTaskUrl;
|
|
27
|
+
constructor(http, gs) {
|
|
28
|
+
this.http = http;
|
|
29
|
+
this.gs = gs;
|
|
30
|
+
this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {
|
|
31
|
+
if (env) {
|
|
32
|
+
this.traxUrl = env.traxUrl;
|
|
33
|
+
this.storeUrl = env.storeApiUrl;
|
|
34
|
+
this.galleryApiUrl = env.galleryApiUrl;
|
|
35
|
+
this.clientAPiUrl = env.clientApiUrl;
|
|
36
|
+
this.trafficApiUrl = env.trafficApiUrl;
|
|
37
|
+
this.traxTaskUrl = env.traxTaskUrl;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
triggerReload() {
|
|
42
|
+
this.reloadDataSubject.next(true);
|
|
43
|
+
}
|
|
44
|
+
exportAsExcelFile(json, excelFileName) {
|
|
45
|
+
const worksheet = XLSX.utils.json_to_sheet(json);
|
|
46
|
+
const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
|
|
47
|
+
const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
|
|
48
|
+
this.saveAsExcelFile(excelBuffer, excelFileName);
|
|
49
|
+
}
|
|
50
|
+
saveAsExcelFile(buffer, fileName) {
|
|
51
|
+
const data = new Blob([buffer], {
|
|
52
|
+
type: EXCEL_TYPE
|
|
53
|
+
});
|
|
54
|
+
FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION);
|
|
55
|
+
}
|
|
56
|
+
saveAsTemplate(buffer, fileName) {
|
|
57
|
+
const data = new Blob([buffer], {
|
|
58
|
+
type: EXCEL_TYPE
|
|
59
|
+
});
|
|
60
|
+
FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);
|
|
61
|
+
}
|
|
62
|
+
destroy$ = new Subject();
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
this.destroy$.next(true);
|
|
65
|
+
this.destroy$.complete();
|
|
66
|
+
}
|
|
67
|
+
getSummaryTableData(data) {
|
|
68
|
+
return this.http.post(`${this.traxUrl}/zoneSummaryTable_v2`, data);
|
|
69
|
+
}
|
|
70
|
+
getchecklist(data) {
|
|
71
|
+
return this.http.post(`${this.galleryApiUrl}/getchecklist`, data);
|
|
72
|
+
}
|
|
73
|
+
getMobUsagelist(data) {
|
|
74
|
+
return this.http.post(`${this.galleryApiUrl}/getMobileUseagelist`, data);
|
|
75
|
+
}
|
|
76
|
+
getcustomerunattendedlist(data) {
|
|
77
|
+
return this.http.post(`${this.galleryApiUrl}/getcustomerunattendedlist`, data);
|
|
78
|
+
}
|
|
79
|
+
storeOpencloselist(data) {
|
|
80
|
+
return this.http.post(`${this.galleryApiUrl}/storeOpencloselist`, data);
|
|
81
|
+
}
|
|
82
|
+
getSummaryTableExport(data) {
|
|
83
|
+
return this.http.post(`${this.traxUrl}/zoneSummaryTable_v2`, data, { responseType: 'arraybuffer' });
|
|
84
|
+
}
|
|
85
|
+
checklist(obj) {
|
|
86
|
+
return this.http.get(`${this.traxUrl}/checklist?limit=${obj.limit}&offset=${obj.offset}&sortColumnName=${obj.sortColumn}&search=${obj.search}&sortBy=${obj.sortBy}&clientId=${obj.clientId}`);
|
|
87
|
+
}
|
|
88
|
+
imageupload(users) {
|
|
89
|
+
return this.http.post(`${this.traxUrl}/upload`, users);
|
|
90
|
+
}
|
|
91
|
+
validateUser(users) {
|
|
92
|
+
return this.http.post(`${this.traxUrl}/validateUser`, users);
|
|
93
|
+
}
|
|
94
|
+
getupdatechecklist(id, data) {
|
|
95
|
+
return this.http.put(`${this.traxUrl}/checklist/update/${id}`, data);
|
|
96
|
+
}
|
|
97
|
+
createchecklist(data) {
|
|
98
|
+
return this.http.post(`${this.traxUrl}/checklist/create`, data);
|
|
99
|
+
}
|
|
100
|
+
configUpdate(obj) {
|
|
101
|
+
return this.http.post(`${this.traxUrl}/checklistConfigure`, obj);
|
|
102
|
+
}
|
|
103
|
+
getconfig(obj) {
|
|
104
|
+
let key = Object.keys(obj)[0];
|
|
105
|
+
let value = obj[Object.keys(obj)[0]];
|
|
106
|
+
return this.http.get(`${this.traxUrl}/getConfigDetails?${key}=${value}&clientId=${obj[Object.keys(obj)[1]]}`);
|
|
107
|
+
}
|
|
108
|
+
runAIInsert(data) {
|
|
109
|
+
return this.http.post(`${this.traxUrl}/runAIInsert`, data);
|
|
110
|
+
}
|
|
111
|
+
duplicatechecklist(data) {
|
|
112
|
+
return this.http.get(`${this.traxUrl}/duplicateChecklist/${data.checklistId}?clientId=${data.clientId}`);
|
|
113
|
+
}
|
|
114
|
+
getUserDetails(obj) {
|
|
115
|
+
return this.http.get(`${this.traxUrl}/userDetails/${obj.id}?offset=${obj.offset}&limit=${obj.limit}&search=${obj.search}&clientId=${obj.clientId}`);
|
|
116
|
+
}
|
|
117
|
+
getStoreList(data) {
|
|
118
|
+
return this.http.post(`${this.storeUrl}/storeInfraList`, data);
|
|
119
|
+
}
|
|
120
|
+
deleteChecklist(data) {
|
|
121
|
+
return this.http.delete(`${this.traxUrl}/deleteChecklist/${data.id}?clientId=${data.clientId}`);
|
|
122
|
+
}
|
|
123
|
+
publish(data) {
|
|
124
|
+
return this.http.put(`${this.traxUrl}/publish`, data);
|
|
125
|
+
}
|
|
126
|
+
getStores(data) {
|
|
127
|
+
return this.http
|
|
128
|
+
.post(`${this.galleryApiUrl}/get-stores`, data);
|
|
129
|
+
}
|
|
130
|
+
getChecklists(data) {
|
|
131
|
+
return this.http
|
|
132
|
+
.post(`${this.galleryApiUrl}/checklistDropdown`, data);
|
|
133
|
+
}
|
|
134
|
+
viewChecklists(data) {
|
|
135
|
+
return this.http
|
|
136
|
+
.post(`${this.galleryApiUrl}/viewchecklist`, data);
|
|
137
|
+
}
|
|
138
|
+
overallFlagMetrics(body) {
|
|
139
|
+
return this.http
|
|
140
|
+
.post(`${this.traxUrl}/flag/flagCardsV1`, body);
|
|
141
|
+
}
|
|
142
|
+
overallFlagMetricsComparison(body) {
|
|
143
|
+
return this.http
|
|
144
|
+
.post(`${this.traxUrl}/flag/flagComparisonCardsV1`, body);
|
|
145
|
+
}
|
|
146
|
+
flagsTable(body) {
|
|
147
|
+
return this.http
|
|
148
|
+
.post(`${this.traxUrl}/flag/flagTablesV1`, body);
|
|
149
|
+
}
|
|
150
|
+
exportFlagsTable(body) {
|
|
151
|
+
return this.http.post(`${this.traxUrl}/flag/flagTablesV1`, body, { responseType: 'arraybuffer' });
|
|
152
|
+
}
|
|
153
|
+
getOverallCardsData(data) {
|
|
154
|
+
return this.http.post(`${this.traxUrl}/dashboard/overallCardsV1`, data);
|
|
155
|
+
}
|
|
156
|
+
getChecklistPerformanceData(data) {
|
|
157
|
+
return this.http.post(`${this.traxUrl}/dashboard/checklistPerformance`, data);
|
|
158
|
+
}
|
|
159
|
+
getChecklistPerformanceDataExport(data) {
|
|
160
|
+
return this.http.post(`${this.traxUrl}/dashboard/checklistPerformance`, data, { responseType: 'arraybuffer' });
|
|
161
|
+
}
|
|
162
|
+
getStorePerformanceData(data) {
|
|
163
|
+
return this.http.post(`${this.traxUrl}/dashboard/storePerformance`, data);
|
|
164
|
+
}
|
|
165
|
+
getStorePerformanceDataExport(data) {
|
|
166
|
+
return this.http.post(`${this.traxUrl}/dashboard/storePerformance`, data, { responseType: 'arraybuffer' });
|
|
167
|
+
}
|
|
168
|
+
getUserPerformanceData(data) {
|
|
169
|
+
return this.http.post(`${this.traxUrl}/dashboard/userPerformance`, data);
|
|
170
|
+
}
|
|
171
|
+
getUserPerformanceDataExport(data) {
|
|
172
|
+
return this.http.post(`${this.traxUrl}/dashboard/userPerformance`, data, { responseType: 'arraybuffer' });
|
|
173
|
+
}
|
|
174
|
+
getChecklistDropdownData(data) {
|
|
175
|
+
return this.http.post(`${this.traxUrl}/flag/flagChecklistDropDownV1`, data);
|
|
176
|
+
}
|
|
177
|
+
getChecklistDropdownDashboardData(data) {
|
|
178
|
+
return this.http.post(`${this.traxUrl}/dashboard/checklistDropdown`, data);
|
|
179
|
+
}
|
|
180
|
+
getInfoCardsData(data) {
|
|
181
|
+
return this.http.post(`${this.traxUrl}/dashboard/infoCardsV1`, data);
|
|
182
|
+
}
|
|
183
|
+
checklistFlagTable(body) {
|
|
184
|
+
return this.http
|
|
185
|
+
.post(`${this.traxUrl}/flag/flagChecklistTableV1`, body);
|
|
186
|
+
}
|
|
187
|
+
exportChecklistFlagTable(body) {
|
|
188
|
+
return this.http
|
|
189
|
+
.post(`${this.traxUrl}/flag/flagChecklistTableV1`, body, { responseType: 'arraybuffer' });
|
|
190
|
+
}
|
|
191
|
+
reportTable(body) {
|
|
192
|
+
return this.http
|
|
193
|
+
.post(`${this.traxUrl}/dashboard/reportChecklistDatav1`, body);
|
|
194
|
+
}
|
|
195
|
+
flagCardValues(body) {
|
|
196
|
+
return this.http
|
|
197
|
+
.post(`${this.traxUrl}/flag/flagChecklistCardsV1`, body);
|
|
198
|
+
}
|
|
199
|
+
flagCardTerend(body) {
|
|
200
|
+
return this.http
|
|
201
|
+
.post(`${this.traxUrl}/flag/flagChecklistComparisonCardsV1`, body);
|
|
202
|
+
}
|
|
203
|
+
getChecklistInfoData(data) {
|
|
204
|
+
return this.http.post(`${this.traxUrl}/dashboard/checklistInfo`, data);
|
|
205
|
+
}
|
|
206
|
+
getUserlistDropdownData(data) {
|
|
207
|
+
return this.http.post(`${this.traxUrl}/dashboard/userlistDropdown`, data);
|
|
208
|
+
}
|
|
209
|
+
getMonthlyPeformanceData(data) {
|
|
210
|
+
return this.http.post(`${this.traxUrl}/dashboard/monthlyGraphV1`, data);
|
|
211
|
+
}
|
|
212
|
+
getClientUser(clientId) {
|
|
213
|
+
return this.http.get(`${this.traxUrl}/userList?clientId=${clientId}`);
|
|
214
|
+
}
|
|
215
|
+
getZoneList(clientId) {
|
|
216
|
+
return this.http.get(`${this.traxUrl}/zoneList?clientId=${clientId}`);
|
|
217
|
+
}
|
|
218
|
+
getInfoComparisonCardsData(data) {
|
|
219
|
+
return this.http.post(`${this.traxUrl}/dashboard/infoComparisonCardsV1`, data);
|
|
220
|
+
}
|
|
221
|
+
getOverallComparisonCardsData(data) {
|
|
222
|
+
return this.http.post(`${this.traxUrl}/dashboard/overallComparisonCardsV1`, data);
|
|
223
|
+
}
|
|
224
|
+
getaichecklist(data) {
|
|
225
|
+
return this.http.get(`${this.traxUrl}/aichecklist?clientId=${data}`);
|
|
226
|
+
}
|
|
227
|
+
reportTableExport(body) {
|
|
228
|
+
return this.http
|
|
229
|
+
.post(`${this.traxUrl}/downloads/downloadInsert`, body);
|
|
230
|
+
}
|
|
231
|
+
getpredefinedchecklist(data) {
|
|
232
|
+
return this.http.get(`${this.traxUrl}/predefinedChecklist?clientId=${data}`);
|
|
233
|
+
}
|
|
234
|
+
getclient(data) {
|
|
235
|
+
return this.http.get(`${this.clientAPiUrl}/detailed-client-count?clientId=${data.clientId}`);
|
|
236
|
+
}
|
|
237
|
+
getGroups(data) {
|
|
238
|
+
return this.http.post(`${this.trafficApiUrl}/headerGroups_v1`, data);
|
|
239
|
+
}
|
|
240
|
+
getclusters(data) {
|
|
241
|
+
return this.http.post(`${this.trafficApiUrl}/headercluster_v2`, data);
|
|
242
|
+
}
|
|
243
|
+
getStoreslist(data) {
|
|
244
|
+
return this.http.post(`${this.trafficApiUrl}/headerStores_v2`, data);
|
|
245
|
+
}
|
|
246
|
+
getOrdersByDate(data) {
|
|
247
|
+
return this.http.post(`${this.traxUrl}/locusorder/get`, data);
|
|
248
|
+
}
|
|
249
|
+
orderUpdate(data) {
|
|
250
|
+
return this.http.post(`${this.traxUrl}/locusorder/update`, data);
|
|
251
|
+
}
|
|
252
|
+
orderDelete(data) {
|
|
253
|
+
return this.http.post(`${this.traxUrl}/locusorder/delete`, data);
|
|
254
|
+
}
|
|
255
|
+
isLocusAuthorized() {
|
|
256
|
+
return this.http.get(`${this.traxUrl}/locusorder/user-allowed`);
|
|
257
|
+
}
|
|
258
|
+
reinitiateChecklist(data) {
|
|
259
|
+
return this.http.post(`${this.traxUrl}/dashboard/reinitiatechecklist`, data);
|
|
260
|
+
}
|
|
261
|
+
exportAsCSVFile(json, excelFileName, identifier) {
|
|
262
|
+
const worksheet = XLSX.utils.json_to_sheet(json);
|
|
263
|
+
const csvOutput = XLSX.utils.sheet_to_csv(worksheet);
|
|
264
|
+
this.saveAsCSVFile(csvOutput, excelFileName);
|
|
265
|
+
}
|
|
266
|
+
saveAsCSVFile(buffer, fileName) {
|
|
267
|
+
const data = new Blob([buffer], {
|
|
268
|
+
type: CSV_TYPE
|
|
269
|
+
});
|
|
270
|
+
FileSaver.saveAs(data, fileName + CSV_EXTENSION);
|
|
271
|
+
}
|
|
272
|
+
reInitiate(body) {
|
|
273
|
+
return this.http
|
|
274
|
+
.post(`${this.traxUrl}/dashboard/reinitiatechecklist`, body);
|
|
275
|
+
}
|
|
276
|
+
createTask(data) {
|
|
277
|
+
return this.http.post(`${this.traxTaskUrl}/create`, data);
|
|
278
|
+
}
|
|
279
|
+
getTaskconfig(id, clientId) {
|
|
280
|
+
return this.http.get(`${this.traxTaskUrl}/details?taskId=${id}&clientId=${clientId}`);
|
|
281
|
+
}
|
|
282
|
+
configTask(data) {
|
|
283
|
+
return this.http.post(`${this.traxTaskUrl}/config`, data);
|
|
284
|
+
}
|
|
285
|
+
getTaskUserDetails(data) {
|
|
286
|
+
const params = new HttpParams({ fromObject: data });
|
|
287
|
+
return this.http.get(`${this.traxTaskUrl}/userDetails`, { params });
|
|
288
|
+
}
|
|
289
|
+
uploadTaskAssignees(data) {
|
|
290
|
+
return this.http.post(`${this.traxTaskUrl}/upload`, data);
|
|
291
|
+
}
|
|
292
|
+
getOverallTasksData(data) {
|
|
293
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/overallcardsV1`, data);
|
|
294
|
+
}
|
|
295
|
+
getTaskTableData(data) {
|
|
296
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskTableV1`, data);
|
|
297
|
+
}
|
|
298
|
+
getTaskTableDataExport(data) {
|
|
299
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskTableV1`, data, { responseType: 'arraybuffer' });
|
|
300
|
+
}
|
|
301
|
+
getTaskInfoTableData(data) {
|
|
302
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskInfoTableV1`, data);
|
|
303
|
+
}
|
|
304
|
+
getTaskInfoTableDataExport(data) {
|
|
305
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskInfoTableV1`, data, { responseType: 'arraybuffer' });
|
|
306
|
+
}
|
|
307
|
+
getOverallActionCenterData(data) {
|
|
308
|
+
return this.http.post(`${this.traxTaskUrl}/actionCenter/overallcards`, data);
|
|
309
|
+
}
|
|
310
|
+
getApprovalData(data) {
|
|
311
|
+
return this.http.post(`${this.traxTaskUrl}/actionCenter/approvalTable`, data);
|
|
312
|
+
}
|
|
313
|
+
getActivityLog(data) {
|
|
314
|
+
return this.http.post(`${this.traxTaskUrl}/actionCenter/activityLog`, data);
|
|
315
|
+
}
|
|
316
|
+
getTaskDropdownList(data) {
|
|
317
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskDropdownListV1`, data);
|
|
318
|
+
}
|
|
319
|
+
getTaskDelete(data) {
|
|
320
|
+
return this.http.post(`${this.traxTaskUrl}/dashboard/taskDeleteV1`, data);
|
|
321
|
+
}
|
|
322
|
+
getTaskUpdate(data) {
|
|
323
|
+
return this.http.post(`${this.traxTaskUrl}/reinitiate`, data);
|
|
324
|
+
}
|
|
325
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxService, deps: [{ token: i1.HttpClient }, { token: i2.GlobalStateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
326
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxService, providedIn: 'root' });
|
|
327
|
+
}
|
|
328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxService, decorators: [{
|
|
329
|
+
type: Injectable,
|
|
330
|
+
args: [{
|
|
331
|
+
providedIn: 'root'
|
|
332
|
+
}]
|
|
333
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJheC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvc2VydmljZXMvdHJheC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsR0FBYyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7O0FBRTdCLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUNoQyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFLN0IsTUFBTSxPQUFPLFdBQVc7SUFlRjtJQUEwQjtJQWQ5QyxPQUFPLENBQUs7SUFDWixRQUFRLENBQUs7SUFDYixhQUFhLENBQUs7SUFDbEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFBO0lBRXhDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEQsZ0NBQWdDO0lBQ2hDLG9CQUFvQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELFlBQVksQ0FBTTtJQUNsQixhQUFhLENBQU07SUFDbkIsV0FBVyxDQUFPO0lBRWxCLFlBQW9CLElBQWdCLEVBQVUsRUFBc0I7UUFBaEQsU0FBSSxHQUFKLElBQUks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LEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDakYsQ0FBQztJQUNELGFBQWEsQ0FBRSxJQUFRO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBQ0QsYUFBYSxDQUFFLElBQVE7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMvRCxDQUFDO3dHQXRYVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCwgY2F0Y2hFcnJvciwgbWFwLHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuXHJcbmNvbnN0IEVYQ0VMX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XHJcbmNvbnN0IEVYQ0VMX0VYVEVOU0lPTiA9ICcueGxzeCc7XHJcbmNvbnN0IENTVl9UWVBFID0gJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnO1xyXG5jb25zdCBDU1ZfRVhURU5TSU9OID0gJy5jc3YnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJheFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHRyYXhVcmw6YW55O1xyXG4gIHN0b3JlVXJsOmFueTtcclxuICBnYWxsZXJ5QXBpVXJsOmFueTtcclxuICBkcm9wRG93blRyaWdnZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbClcclxuXHJcbiAgcHJpdmF0ZSByZWxvYWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlbG9hZERhdGEkID0gdGhpcy5yZWxvYWREYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgLy8gb3BlbmVkRHJvcGRvd25zOnN0cmluZ1tdID0gW11cclxuICBkcm9wZG93bkNsb3NlVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcclxuICBjbGllbnRBUGlVcmw6IGFueTtcclxuICB0cmFmZmljQXBpVXJsOiBhbnk7XHJcbiAgdHJheFRhc2tVcmw6c3RyaW5nXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy50cmF4VXJsID0gZW52LnRyYXhVcmw7XHJcbiAgICAgICAgdGhpcy5zdG9yZVVybCA9IGVudi5zdG9yZUFwaVVybFxyXG4gICAgICAgIHRoaXMuZ2FsbGVyeUFwaVVybCA9IGVudi5nYWxsZXJ5QXBpVXJsXHJcbiAgICAgICAgdGhpcy5jbGllbnRBUGlVcmwgPSAgZW52LmNsaWVudEFwaVVybFxyXG4gICAgICAgIHRoaXMudHJhZmZpY0FwaVVybCA9ICBlbnYudHJhZmZpY0FwaVVybFxyXG4gICAgICAgIHRoaXMudHJheFRhc2tVcmwgPSBlbnYudHJheFRhc2tVcmxcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlclJlbG9hZCgpIHtcclxuICAgIHRoaXMucmVsb2FkRGF0YVN1YmplY3QubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBvcnRBc0V4Y2VsRmlsZShqc29uOiBhbnlbXSwgZXhjZWxGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB3b3Jrc2hlZXQ6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb24pO1xyXG4gICAgY29uc3Qgd29ya2Jvb2s6IFhMU1guV29ya0Jvb2sgPSB7IFNoZWV0czogeyAnZGF0YSc6IHdvcmtzaGVldCB9LCBTaGVldE5hbWVzOiBbJ2RhdGEnXSB9O1xyXG4gICAgY29uc3QgZXhjZWxCdWZmZXI6IGFueSA9IFhMU1gud3JpdGUod29ya2Jvb2ssIHsgYm9va1R5cGU6ICd4bHN4JywgdHlwZTogJ2FycmF5JyB9KTtcclxuICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGV4Y2VsQnVmZmVyLCBleGNlbEZpbGVOYW1lKTtcclxuICB9XHJcbiBcclxuICBwdWJsaWMgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgJ2xpc3QnKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gIH1cclxuIFxyXG4gIHB1YmxpYyBzYXZlQXNUZW1wbGF0ZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6IEVYQ0VMX1RZUEVcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldFN1bW1hcnlUYWJsZURhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS96b25lU3VtbWFyeVRhYmxlX3YyYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0Y2hlY2tsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vZ2V0Y2hlY2tsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0TW9iVXNhZ2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vZ2V0TW9iaWxlVXNlYWdlbGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldGN1c3RvbWVydW5hdHRlbmRlZGxpc3QoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5nYWxsZXJ5QXBpVXJsfS9nZXRjdXN0b21lcnVuYXR0ZW5kZWRsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgc3RvcmVPcGVuY2xvc2VsaXN0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vc3RvcmVPcGVuY2xvc2VsaXN0YCwgZGF0YSlcclxuICB9XHJcbiAgXHJcbiAgZ2V0U3VtbWFyeVRhYmxlRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vem9uZVN1bW1hcnlUYWJsZV92MmAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0KG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vY2hlY2tsaXN0P2xpbWl0PSR7b2JqLmxpbWl0fSZvZmZzZXQ9JHtvYmoub2Zmc2V0fSZzb3J0Q29sdW1uTmFtZT0ke29iai5zb3J0Q29sdW1ufSZzZWFyY2g9JHtvYmouc2VhcmNofSZzb3J0Qnk9JHtvYmouc29ydEJ5fSZjbGllbnRJZD0ke29iai5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgaW1hZ2V1cGxvYWQodXNlcnM6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS91cGxvYWRgLHVzZXJzKVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVVc2VyKHVzZXJzOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vdmFsaWRhdGVVc2VyYCx1c2VycylcclxuICB9XHJcblxyXG4gIGdldHVwZGF0ZWNoZWNrbGlzdChpZDphbnksZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMudHJheFVybH0vY2hlY2tsaXN0L3VwZGF0ZS8ke2lkfWAsZGF0YSlcclxuICB9XHJcblxyXG4gIGNyZWF0ZWNoZWNrbGlzdChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vY2hlY2tsaXN0L2NyZWF0ZWAsIGRhdGEgKVxyXG4gIH1cclxuXHJcbiAgY29uZmlnVXBkYXRlKG9iajphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2NoZWNrbGlzdENvbmZpZ3VyZWAsb2JqKVxyXG4gIH1cclxuXHJcbiAgZ2V0Y29uZmlnKG9iajphbnkpIHtcclxuICAgIGxldCBrZXkgPSBPYmplY3Qua2V5cyhvYmopWzBdO1xyXG4gICAgbGV0IHZhbHVlID0gb2JqW09iamVjdC5rZXlzKG9iailbMF1dO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9nZXRDb25maWdEZXRhaWxzPyR7a2V5fT0ke3ZhbHVlfSZjbGllbnRJZD0ke29ialtPYmplY3Qua2V5cyhvYmopWzFdXX1gKVxyXG4gIH1cclxuXHJcbiAgcnVuQUlJbnNlcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9ydW5BSUluc2VydGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVjaGVja2xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L2R1cGxpY2F0ZUNoZWNrbGlzdC8ke2RhdGEuY2hlY2tsaXN0SWR9P2NsaWVudElkPSR7ZGF0YS5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckRldGFpbHMob2JqOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS91c2VyRGV0YWlscy8ke29iai5pZH0/b2Zmc2V0PSR7b2JqLm9mZnNldH0mbGltaXQ9JHtvYmoubGltaXR9JnNlYXJjaD0ke29iai5zZWFyY2h9JmNsaWVudElkPSR7b2JqLmNsaWVudElkfWApXHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUxpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlVXJsfS9zdG9yZUluZnJhTGlzdGAsZGF0YSlcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNoZWNrbGlzdChkYXRhOiBhbnksKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLnRyYXhVcmx9L2RlbGV0ZUNoZWNrbGlzdC8ke2RhdGEuaWR9P2NsaWVudElkPSR7ZGF0YS5jbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgcHVibGlzaChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMudHJheFVybH0vcHVibGlzaGAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldFN0b3JlcyhkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuZ2FsbGVyeUFwaVVybH0vZ2V0LXN0b3Jlc2AsICBkYXRhIClcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdHMoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L2NoZWNrbGlzdERyb3Bkb3duYCwgZGF0YSlcclxuICB9XHJcbiAgdmlld0NoZWNrbGlzdHMoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmdhbGxlcnlBcGlVcmx9L3ZpZXdjaGVja2xpc3RgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgb3ZlcmFsbEZsYWdNZXRyaWNzKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy50cmF4VXJsfS9mbGFnL2ZsYWdDYXJkc1YxYCwgYm9keSlcclxuICB9XHJcblxyXG4gIG92ZXJhbGxGbGFnTWV0cmljc0NvbXBhcmlzb24oYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ0NvbXBhcmlzb25DYXJkc1YxYCwgYm9keSlcclxuICB9XHJcblxyXG4gIGZsYWdzVGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ1RhYmxlc1YxYCwgYm9keSlcclxuICB9XHJcblxyXG4gIGV4cG9ydEZsYWdzVGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ1RhYmxlc1YxYCwgYm9keSwge3Jlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ30pXHJcbiAgfVxyXG5cclxuICBnZXRPdmVyYWxsQ2FyZHNEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL292ZXJhbGxDYXJkc1YxYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdFBlcmZvcm1hbmNlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9jaGVja2xpc3RQZXJmb3JtYW5jZWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RQZXJmb3JtYW5jZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvY2hlY2tsaXN0UGVyZm9ybWFuY2VgLCBkYXRhLCB7cmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInfSlcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUGVyZm9ybWFuY2VEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3N0b3JlUGVyZm9ybWFuY2VgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVQZXJmb3JtYW5jZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvc3RvcmVQZXJmb3JtYW5jZWAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclBlcmZvcm1hbmNlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC91c2VyUGVyZm9ybWFuY2VgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclBlcmZvcm1hbmNlRGF0YUV4cG9ydCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC91c2VyUGVyZm9ybWFuY2VgLCBkYXRhLCB7cmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInfSlcclxuICB9XHJcblxyXG4gIGdldENoZWNrbGlzdERyb3Bkb3duRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ0NoZWNrbGlzdERyb3BEb3duVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRDaGVja2xpc3REcm9wZG93bkRhc2hib2FyZERhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvY2hlY2tsaXN0RHJvcGRvd25gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0SW5mb0NhcmRzRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9pbmZvQ2FyZHNWMWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBjaGVja2xpc3RGbGFnVGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ0NoZWNrbGlzdFRhYmxlVjFgLCBib2R5KVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q2hlY2tsaXN0RmxhZ1RhYmxlKGJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KGAke3RoaXMudHJheFVybH0vZmxhZy9mbGFnQ2hlY2tsaXN0VGFibGVWMWAsIGJvZHksIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuXHJcbiAgcmVwb3J0VGFibGUoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9yZXBvcnRDaGVja2xpc3REYXRhdjFgLCBib2R5KVxyXG4gIH1cclxuXHJcbiAgZmxhZ0NhcmRWYWx1ZXMoYm9keTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ0NoZWNrbGlzdENhcmRzVjFgLCBib2R5KVxyXG4gIH1cclxuXHJcbiAgZmxhZ0NhcmRUZXJlbmQoYm9keTphbnkpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2ZsYWcvZmxhZ0NoZWNrbGlzdENvbXBhcmlzb25DYXJkc1YxYCwgYm9keSlcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGVja2xpc3RJbmZvRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9jaGVja2xpc3RJbmZvYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldFVzZXJsaXN0RHJvcGRvd25EYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3VzZXJsaXN0RHJvcGRvd25gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL21vbnRobHlHcmFwaFYxYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldENsaWVudFVzZXIoIGNsaWVudElkOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS91c2VyTGlzdD9jbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG5cclxuICBnZXRab25lTGlzdCggY2xpZW50SWQ6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L3pvbmVMaXN0P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcbiAgZ2V0SW5mb0NvbXBhcmlzb25DYXJkc0RhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvaW5mb0NvbXBhcmlzb25DYXJkc1YxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0T3ZlcmFsbENvbXBhcmlzb25DYXJkc0RhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9kYXNoYm9hcmQvb3ZlcmFsbENvbXBhcmlzb25DYXJkc1YxYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldGFpY2hlY2tsaXN0KGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhVcmx9L2FpY2hlY2tsaXN0P2NsaWVudElkPSR7ZGF0YX1gKVxyXG4gIH1cclxuXHJcbiAgcmVwb3J0VGFibGVFeHBvcnQoYm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLnRyYXhVcmx9L2Rvd25sb2Fkcy9kb3dubG9hZEluc2VydGAsIGJvZHkpXHJcbiAgfVxyXG4gIGdldHByZWRlZmluZWRjaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHJheFVybH0vcHJlZGVmaW5lZENoZWNrbGlzdD9jbGllbnRJZD0ke2RhdGF9YClcclxuICB9XHJcbiAgZ2V0Y2xpZW50KGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFQaVVybH0vZGV0YWlsZWQtY2xpZW50LWNvdW50P2NsaWVudElkPSR7ZGF0YS5jbGllbnRJZH1gKVxyXG4gIH1cclxuICBnZXRHcm91cHMoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlckdyb3Vwc192MWAsZGF0YSlcclxuICB9XHJcbiAgZ2V0Y2x1c3RlcnMoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlcmNsdXN0ZXJfdjJgLGRhdGEpXHJcbiAgfVxyXG4gIGdldFN0b3Jlc2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlclN0b3Jlc192MmAsZGF0YSlcclxuICB9XHJcbiAgZ2V0T3JkZXJzQnlEYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFVybH0vbG9jdXNvcmRlci9nZXRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgb3JkZXJVcGRhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VXJsfS9sb2N1c29yZGVyL3VwZGF0ZWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBvcmRlckRlbGV0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2xvY3Vzb3JkZXIvZGVsZXRlYCwgZGF0YSlcclxuICAgICBcclxuICB9XHJcblxyXG4gIGlzTG9jdXNBdXRob3JpemVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VXJsfS9sb2N1c29yZGVyL3VzZXItYWxsb3dlZGApXHJcbiAgfVxyXG4gIHJlaW5pdGlhdGVDaGVja2xpc3QoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhVcmx9L2Rhc2hib2FyZC9yZWluaXRpYXRlY2hlY2tsaXN0YCxkYXRhKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzQ1NWRmlsZShqc29uOiBhbnlbXSwgZXhjZWxGaWxlTmFtZTogc3RyaW5nLGlkZW50aWZpZXI/OiBhbnlbXSk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NoZWV0OiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChqc29uKTtcclxuXHJcbiAgICBjb25zdCBjc3ZPdXRwdXQ6IHN0cmluZyA9IFhMU1gudXRpbHMuc2hlZXRfdG9fY3N2KHdvcmtzaGVldCk7XHJcbiAgICB0aGlzLnNhdmVBc0NTVkZpbGUoY3N2T3V0cHV0LCBleGNlbEZpbGVOYW1lKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzYXZlQXNDU1ZGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogQ1NWX1RZUEVcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIENTVl9FWFRFTlNJT04pO1xyXG4gIH1cclxuXHJcbiAgcmVJbml0aWF0ZShib2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMudHJheFVybH0vZGFzaGJvYXJkL3JlaW5pdGlhdGVjaGVja2xpc3RgLCBib2R5KVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlVGFzayhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2NyZWF0ZWAsIGRhdGEgKVxyXG4gIH1cclxuXHJcbiAgZ2V0VGFza2NvbmZpZyhpZDpzdHJpbmcsIGNsaWVudElkOnN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50cmF4VGFza1VybH0vZGV0YWlscz90YXNrSWQ9JHtpZH0mY2xpZW50SWQ9JHtjbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgY29uZmlnVGFzayhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2NvbmZpZ2AsIGRhdGEgKVxyXG4gIH1cclxuXHJcbiAgZ2V0VGFza1VzZXJEZXRhaWxzKGRhdGE6YW55KSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IGRhdGEgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnRyYXhUYXNrVXJsfS91c2VyRGV0YWlsc2AsIHtwYXJhbXN9KVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkVGFza0Fzc2lnbmVlcyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L3VwbG9hZGAsIGRhdGEgKVxyXG5cclxuICB9XHJcblxyXG4gIFxyXG4gIGdldE92ZXJhbGxUYXNrc0RhdGEoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZGFzaGJvYXJkL292ZXJhbGxjYXJkc1YxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza1RhYmxlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza1RhYmxlVjFgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRUYXNrVGFibGVEYXRhRXhwb3J0KCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2Rhc2hib2FyZC90YXNrVGFibGVWMWAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuICBnZXRUYXNrSW5mb1RhYmxlRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0luZm9UYWJsZVYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza0luZm9UYWJsZURhdGFFeHBvcnQoIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vZGFzaGJvYXJkL3Rhc2tJbmZvVGFibGVWMWAsIGRhdGEsIHtyZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcid9KVxyXG4gIH1cclxuICBnZXRPdmVyYWxsQWN0aW9uQ2VudGVyRGF0YSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9hY3Rpb25DZW50ZXIvb3ZlcmFsbGNhcmRzYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QXBwcm92YWxEYXRhKCBkYXRhOmFueSk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJheFRhc2tVcmx9L2FjdGlvbkNlbnRlci9hcHByb3ZhbFRhYmxlYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2coIGRhdGE6YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmF4VGFza1VybH0vYWN0aW9uQ2VudGVyL2FjdGl2aXR5TG9nYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza0Ryb3Bkb3duTGlzdCggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0Ryb3Bkb3duTGlzdFYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza0RlbGV0ZSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9kYXNoYm9hcmQvdGFza0RlbGV0ZVYxYCwgZGF0YSlcclxuICB9XHJcbiAgZ2V0VGFza1VwZGF0ZSggZGF0YTphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYXhUYXNrVXJsfS9yZWluaXRpYXRlYCwgZGF0YSlcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|