tango-app-ui-manage-settings 3.0.2 → 3.0.4
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/brand-details/billing-details/billing-details.component.mjs +69 -0
- package/esm2022/lib/components/brand-details/brand-details.component.mjs +147 -0
- package/esm2022/lib/components/brand-details/brand-info/brand-info.component.mjs +97 -0
- package/esm2022/lib/components/brand-details/signatory-details/signatory-details.component.mjs +52 -0
- package/esm2022/lib/components/configurations/audit-configuration/audit-configuration.component.mjs +156 -0
- package/esm2022/lib/components/configurations/configurations.component.mjs +166 -0
- package/esm2022/lib/components/configurations/domain-details/domain-details.component.mjs +81 -0
- package/esm2022/lib/components/configurations/feature-configuration/feature-configuration.component.mjs +101 -0
- package/esm2022/lib/components/configurations/report-configuration/add-report/add-report.component.mjs +78 -0
- package/esm2022/lib/components/configurations/report-configuration/report-configuration.component.mjs +136 -0
- package/esm2022/lib/components/configurations/ticket-configuration/ticket-configuration.component.mjs +59 -0
- package/esm2022/lib/components/configurations/user-configuration/user-configuration.component.mjs +84 -0
- package/esm2022/lib/components/contact-directory/contact-directory.component.mjs +207 -0
- package/esm2022/lib/components/contact-directory/detele-spoc/detele-spoc.component.mjs +37 -0
- package/esm2022/lib/components/contact-directory/edit-spoc/edit-spoc.component.mjs +82 -0
- package/esm2022/lib/components/documents/documents.component.mjs +130 -0
- package/esm2022/lib/components/payments-subscription/payments-subscription.component.mjs +296 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.mjs +40 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.mjs +173 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.mjs +83 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.mjs +36 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.mjs +11 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/suspended/suspended.component.mjs +11 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/trail-expired/trail-expired.component.mjs +11 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/update/update.component.mjs +51 -0
- package/esm2022/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.mjs +85 -0
- package/esm2022/lib/components/tango-manage-settings/tango-manage-settings.component.mjs +32 -6
- package/esm2022/lib/directives/dnd.directive.mjs +44 -0
- package/esm2022/lib/services/client-api.service.mjs +132 -0
- package/esm2022/lib/services/payment-subscription.service.mjs +35 -0
- package/esm2022/lib/tango-manage-settings-routing.module.mjs +34 -3
- package/esm2022/lib/tango-manage-settings.module.mjs +132 -6
- package/fesm2022/tango-app-ui-manage-settings.mjs +2689 -16
- package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
- package/lib/components/brand-details/billing-details/billing-details.component.d.ts +21 -0
- package/lib/components/brand-details/brand-details.component.d.ts +17 -0
- package/lib/components/brand-details/brand-info/brand-info.component.d.ts +23 -0
- package/lib/components/brand-details/signatory-details/signatory-details.component.d.ts +17 -0
- package/lib/components/configurations/audit-configuration/audit-configuration.component.d.ts +32 -0
- package/lib/components/configurations/configurations.component.d.ts +18 -0
- package/lib/components/configurations/domain-details/domain-details.component.d.ts +23 -0
- package/lib/components/configurations/feature-configuration/feature-configuration.component.d.ts +21 -0
- package/lib/components/configurations/report-configuration/add-report/add-report.component.d.ts +24 -0
- package/lib/components/configurations/report-configuration/report-configuration.component.d.ts +34 -0
- package/lib/components/configurations/ticket-configuration/ticket-configuration.component.d.ts +17 -0
- package/lib/components/configurations/user-configuration/user-configuration.component.d.ts +25 -0
- package/lib/components/contact-directory/contact-directory.component.d.ts +49 -0
- package/lib/components/contact-directory/detele-spoc/detele-spoc.component.d.ts +14 -0
- package/lib/components/contact-directory/edit-spoc/edit-spoc.component.d.ts +22 -0
- package/lib/components/documents/documents.component.d.ts +26 -0
- package/lib/components/payments-subscription/payments-subscription.component.d.ts +83 -0
- package/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.d.ts +11 -0
- package/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.d.ts +34 -0
- package/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.d.ts +25 -0
- package/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.d.ts +9 -0
- package/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.d.ts +5 -0
- package/lib/components/payments-subscription/subscription-popups/suspended/suspended.component.d.ts +5 -0
- package/lib/components/payments-subscription/subscription-popups/trail-expired/trail-expired.component.d.ts +5 -0
- package/lib/components/payments-subscription/subscription-popups/update/update.component.d.ts +19 -0
- package/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.d.ts +28 -0
- package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +5 -1
- package/lib/directives/dnd.directive.d.ts +11 -0
- package/lib/services/client-api.service.d.ts +46 -0
- package/lib/services/payment-subscription.service.d.ts +14 -0
- package/lib/tango-manage-settings.module.d.ts +38 -3
- package/package.json +1 -1
package/esm2022/lib/components/brand-details/signatory-details/signatory-details.component.mjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "../../../services/client-api.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
export class SignatoryDetailsComponent {
|
|
7
|
+
fb;
|
|
8
|
+
apiService;
|
|
9
|
+
cd;
|
|
10
|
+
signatoryDetailsForm;
|
|
11
|
+
constructor(fb, apiService, cd) {
|
|
12
|
+
this.fb = fb;
|
|
13
|
+
this.apiService = apiService;
|
|
14
|
+
this.cd = cd;
|
|
15
|
+
this.initForm();
|
|
16
|
+
this.apiService.clientFormData.subscribe((res) => {
|
|
17
|
+
if (res) {
|
|
18
|
+
if (res.type === 'input' && res.form === 'signatory-details') {
|
|
19
|
+
this.patchForm(res.value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
initForm() {
|
|
25
|
+
this.signatoryDetailsForm = this.fb.group({
|
|
26
|
+
name: [''],
|
|
27
|
+
email: [''],
|
|
28
|
+
number: [''],
|
|
29
|
+
designation: [''],
|
|
30
|
+
});
|
|
31
|
+
this.signatoryDetailsForm.disable();
|
|
32
|
+
}
|
|
33
|
+
patchForm(data) {
|
|
34
|
+
this.signatoryDetailsForm.patchValue({
|
|
35
|
+
...data
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
onCancel() {
|
|
39
|
+
this.signatoryDetailsForm.disable();
|
|
40
|
+
this.apiService.clientFormData.next({ value: null, type: 'cancel', form: 'signatory-details' });
|
|
41
|
+
}
|
|
42
|
+
onSubmit() {
|
|
43
|
+
this.apiService.clientFormData.next({ value: this.signatoryDetailsForm.value, type: 'submit', form: 'signatory-details' });
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SignatoryDetailsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ClientApiService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SignatoryDetailsComponent, selector: "lib-signatory-details", ngImport: i0, template: "<form [formGroup]=\"signatoryDetailsForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"signatoryDetailsForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"signatoryDetailsForm.disabled ? signatoryDetailsForm.enable() : signatoryDetailsForm.disable()\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"username\" class=\"form-label\">Username <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"name\" type=\"type\" class=\"form-control\" id=\"username\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"email\" type=\"type\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"number\" type=\"type\" class=\"form-control\" id=\"contactNumber\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"designation\" type=\"type\" class=\"form-control\" id=\"designation\"\r\n autocomplete=\"off\">\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"signatoryDetailsForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a (click)=\"onCancel()\" type=\"button\" class=\"btn btn-outline me-4\">Cancel</a>\r\n <a (click)=\" onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SignatoryDetailsComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'lib-signatory-details', template: "<form [formGroup]=\"signatoryDetailsForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"signatoryDetailsForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"signatoryDetailsForm.disabled ? signatoryDetailsForm.enable() : signatoryDetailsForm.disable()\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"username\" class=\"form-label\">Username <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"name\" type=\"type\" class=\"form-control\" id=\"username\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"email\" type=\"type\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"number\" type=\"type\" class=\"form-control\" id=\"contactNumber\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"designation\" type=\"type\" class=\"form-control\" id=\"designation\"\r\n autocomplete=\"off\">\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"signatoryDetailsForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a (click)=\"onCancel()\" type=\"button\" class=\"btn btn-outline me-4\">Cancel</a>\r\n <a (click)=\" onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}\n"] }]
|
|
51
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ClientApiService }, { type: i0.ChangeDetectorRef }] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0b3J5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9icmFuZC1kZXRhaWxzL3NpZ25hdG9yeS1kZXRhaWxzL3NpZ25hdG9yeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvYnJhbmQtZGV0YWlscy9zaWduYXRvcnktZGV0YWlscy9zaWduYXRvcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3BGLE1BQU0sT0FBTyx5QkFBeUI7SUFJaEI7SUFBeUI7SUFBc0M7SUFGbkYsb0JBQW9CLENBQVc7SUFFL0IsWUFBb0IsRUFBZSxFQUFVLFVBQTRCLEVBQVUsRUFBcUI7UUFBcEYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDdEcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBRyxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFDO29CQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtpQkFDeEI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1osV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FDbEM7WUFDQyxHQUFHLElBQUk7U0FDUCxDQUNGLENBQUE7SUFFSCxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUN2SCxDQUFDO3VHQTNDVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qiw2RENUdEMscWhIQWlEQTs7MkZEeENhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpZW50QXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NsaWVudC1hcGkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zaWduYXRvcnktZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25hdG9yeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc2lnbmF0b3J5LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduYXRvcnlEZXRhaWxzQ29tcG9uZW50IHtcclxuXHJcbiAgc2lnbmF0b3J5RGV0YWlsc0Zvcm06IEZvcm1Hcm91cFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5pbml0Rm9ybSgpXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykgeyAgICAgICAgXHJcbiAgICAgICAgaWYocmVzLnR5cGUgPT09ICdpbnB1dCcgJiYgcmVzLmZvcm0gPT09ICdzaWduYXRvcnktZGV0YWlscycpe1xyXG4gICAgICAgIHRoaXMucGF0Y2hGb3JtKHJlcy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLnNpZ25hdG9yeURldGFpbHNGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFsnJ10sXHJcbiAgICAgIGVtYWlsOiBbJyddLFxyXG4gICAgICBudW1iZXI6IFsnJ10sXHJcbiAgICAgIGRlc2lnbmF0aW9uOiBbJyddLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNpZ25hdG9yeURldGFpbHNGb3JtLmRpc2FibGUoKVxyXG4gIH1cclxuXHJcbiAgcGF0Y2hGb3JtKGRhdGE6IGFueSkgeyAgICBcclxuICAgIHRoaXMuc2lnbmF0b3J5RGV0YWlsc0Zvcm0ucGF0Y2hWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgLi4uZGF0YVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgICBcclxuICB9XHJcblxyXG5cclxuICBvbkNhbmNlbCgpe1xyXG4gICAgdGhpcy5zaWduYXRvcnlEZXRhaWxzRm9ybS5kaXNhYmxlKClcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5uZXh0KHt2YWx1ZTpudWxsLCB0eXBlOidjYW5jZWwnLCBmb3JtOidzaWduYXRvcnktZGV0YWlscyd9KVxyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKXsgICAgICAgXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEubmV4dCh7dmFsdWU6dGhpcy5zaWduYXRvcnlEZXRhaWxzRm9ybS52YWx1ZSwgdHlwZTonc3VibWl0JywgZm9ybTonc2lnbmF0b3J5LWRldGFpbHMnfSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm0uZGlzYWJsZWRcIiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaWduYXRvcnlEZXRhaWxzRm9ybS5kaXNhYmxlZCA/IHNpZ25hdG9yeURldGFpbHNGb3JtLmVuYWJsZSgpIDogc2lnbmF0b3J5RGV0YWlsc0Zvcm0uZGlzYWJsZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yNTc5XzI1MTI1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY3IDIuNDk5OTNDMTQuMzg1OSAyLjI4MTA2IDE0LjY0NTcgMi4xMDc0NCAxNC45MzE3IDEuOTg4OTlDMTUuMjE3NiAxLjg3MDU0IDE1LjUyNDEgMS44MDk1NyAxNS44MzM3IDEuODA5NTdDMTYuMTQzMiAxLjgwOTU3IDE2LjQ0OTcgMS44NzA1NCAxNi43MzU3IDEuOTg4OTlDMTcuMDIxNiAyLjEwNzQ0IDE3LjI4MTUgMi4yODEwNiAxNy41MDAzIDIuNDk5OTNDMTcuNzE5MiAyLjcxODggMTcuODkyOCAyLjk3ODYzIDE4LjAxMTMgMy4yNjQ2QzE4LjEyOTcgMy41NTA1NyAxOC4xOTA3IDMuODU3MDYgMTguMTkwNyA0LjE2NjU5QzE4LjE5MDcgNC40NzYxMiAxOC4xMjk3IDQuNzgyNjIgMTguMDExMyA1LjA2ODU5QzE3Ljg5MjggNS4zNTQ1NSAxNy43MTkyIDUuNjE0MzkgMTcuNTAwMyA1LjgzMzI2TDYuMjUwMzMgMTcuMDgzM0wxLjY2Njk5IDE4LjMzMzNMMi45MTY5OSAxMy43NDk5TDE0LjE2NyAyLjQ5OTkzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdCBEZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVzZXJuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VXNlcm5hbWUgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInVzZXJuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbCA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImVtYWlsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdE51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbnRhY3QgTnVtYmVyIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibnVtYmVyXCIgdHlwZT1cInR5cGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNpZ25hdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2lnbmF0aW9uIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25cIiB0eXBlPVwidHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkZXNpZ25hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm0uZW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi01IHctMTAwIGZvb3Rlci1zZXBlcmF0b3JcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtNFwiPkNhbmNlbDwvYT5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIiBvblN1Ym1pdCgpXCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgXCI+PHNwYW4+U2F2ZSBDaGFuZ2VzPC9zcGFuPjwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
|
package/esm2022/lib/components/configurations/audit-configuration/audit-configuration.component.mjs
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import * as XLSX from 'xlsx';
|
|
3
|
+
import { map } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "../../../services/client-api.service";
|
|
7
|
+
import * as i3 from "tango-app-ui-shared";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "../../../directives/dnd.directive";
|
|
10
|
+
export class AuditConfigurationComponent {
|
|
11
|
+
fb;
|
|
12
|
+
apiService;
|
|
13
|
+
cd;
|
|
14
|
+
toast;
|
|
15
|
+
auditConfigForm;
|
|
16
|
+
isMultiple = false;
|
|
17
|
+
bulkUploadInput;
|
|
18
|
+
bulkAddData;
|
|
19
|
+
fileName;
|
|
20
|
+
fileUploadTemplate;
|
|
21
|
+
storeList;
|
|
22
|
+
selectedStore;
|
|
23
|
+
constructor(fb, apiService, cd, toast) {
|
|
24
|
+
this.fb = fb;
|
|
25
|
+
this.apiService = apiService;
|
|
26
|
+
this.cd = cd;
|
|
27
|
+
this.toast = toast;
|
|
28
|
+
this.initForm();
|
|
29
|
+
this.apiService.clientFormData.subscribe((res) => {
|
|
30
|
+
if (res) {
|
|
31
|
+
if (res.type === 'input' && res.form === 'audit-configuration') {
|
|
32
|
+
this.patchForm(res.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
this.apiService.clientData.subscribe((e) => {
|
|
37
|
+
if (e) {
|
|
38
|
+
this.getStoresList(e.clientId);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
initForm() {
|
|
43
|
+
this.auditConfigForm = this.fb.group({
|
|
44
|
+
storeId: [''],
|
|
45
|
+
count: [''],
|
|
46
|
+
iteration: [''],
|
|
47
|
+
ratio: [''],
|
|
48
|
+
});
|
|
49
|
+
this.auditConfigForm.disable();
|
|
50
|
+
}
|
|
51
|
+
getStoresList(clientId) {
|
|
52
|
+
this.apiService.getStoreList(clientId).subscribe({
|
|
53
|
+
next: (res) => {
|
|
54
|
+
this.storeList = res.data.result;
|
|
55
|
+
this.selectedStore = this.storeList[0];
|
|
56
|
+
this.getAuditData(this.storeList[0]?.storeId);
|
|
57
|
+
},
|
|
58
|
+
error: (err) => {
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
getAuditData(storeId) {
|
|
63
|
+
this.apiService.getAuditConfig(storeId).pipe(map((val) => {
|
|
64
|
+
if (val?.data?.auditConfigs?.ratio) {
|
|
65
|
+
val.data.auditConfigs.ratio = this.normalizeNumber(val.data.auditConfigs.ratio);
|
|
66
|
+
}
|
|
67
|
+
return val;
|
|
68
|
+
})).subscribe({
|
|
69
|
+
next: (res) => {
|
|
70
|
+
this.patchForm({ ...res.data.auditConfigs, storeId: res.data.storeId });
|
|
71
|
+
this.fileUploadTemplate = res.data.templateUrl;
|
|
72
|
+
this.cd.detectChanges();
|
|
73
|
+
},
|
|
74
|
+
error: (err) => {
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
normalizeNumber(num) {
|
|
79
|
+
return Math.min(100, Math.max(0, Math.round(num * 100)));
|
|
80
|
+
}
|
|
81
|
+
patchForm(data) {
|
|
82
|
+
this.auditConfigForm.patchValue({
|
|
83
|
+
...data,
|
|
84
|
+
}, { emitEvent: false, onlySelf: true });
|
|
85
|
+
}
|
|
86
|
+
triggerBulkUploadInput() {
|
|
87
|
+
this.bulkUploadInput.nativeElement.click();
|
|
88
|
+
}
|
|
89
|
+
onBulkInputChange(event) {
|
|
90
|
+
let data = [];
|
|
91
|
+
const target = (event.target);
|
|
92
|
+
const reader = new FileReader();
|
|
93
|
+
reader.readAsBinaryString(target.files[0]);
|
|
94
|
+
reader.onload = (e) => {
|
|
95
|
+
const bstr = e.target.result;
|
|
96
|
+
const wb = XLSX.read(bstr, { type: 'binary' });
|
|
97
|
+
const wsname = wb.SheetNames[0];
|
|
98
|
+
const ws = wb.Sheets[wsname];
|
|
99
|
+
if (wb.SheetNames[0] != 'data') {
|
|
100
|
+
this.toast.getErrorToast('Invalid file');
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
data = XLSX.utils.sheet_to_json(ws);
|
|
104
|
+
data = data.slice(1);
|
|
105
|
+
this.fileName = event.target.files[0].name;
|
|
106
|
+
this.bulkAddData = data;
|
|
107
|
+
this.cd.detectChanges();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
onStoreChange(event) {
|
|
112
|
+
this.selectedStore = event;
|
|
113
|
+
this.getAuditData(event.storeId);
|
|
114
|
+
}
|
|
115
|
+
onCancel() {
|
|
116
|
+
this.apiService.clientFormData.next({ value: null, type: 'cancel', form: 'audit-configuration' });
|
|
117
|
+
this.auditConfigForm.disable();
|
|
118
|
+
}
|
|
119
|
+
onSubmit() {
|
|
120
|
+
if (!this.isMultiple) {
|
|
121
|
+
this.auditConfigForm.value.storeId = this.selectedStore.storeId;
|
|
122
|
+
this.apiService.updateauditConfiguration([this.auditConfigForm.value]).subscribe({
|
|
123
|
+
next: (e) => {
|
|
124
|
+
this.toast.getSuccessToast(e.data?.result);
|
|
125
|
+
},
|
|
126
|
+
error: (e) => {
|
|
127
|
+
this.toast.getErrorToast(e.error?.error);
|
|
128
|
+
this.getAuditData(this.selectedStore.storeId);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.apiService.updateauditConfiguration(this.bulkAddData).subscribe({
|
|
134
|
+
next: (e) => {
|
|
135
|
+
this.toast.getSuccessToast(e.data?.result);
|
|
136
|
+
},
|
|
137
|
+
error: (e) => {
|
|
138
|
+
this.toast.getErrorToast(e.error?.error);
|
|
139
|
+
this.fileName = null;
|
|
140
|
+
this.bulkAddData = null;
|
|
141
|
+
this.cd.detectChanges();
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditConfigurationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ClientApiService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AuditConfigurationComponent, selector: "lib-audit-configuration", viewQueries: [{ propertyName: "bulkUploadInput", first: true, predicate: ["bulkUploadInput"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"auditConfigForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"auditConfigForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button (click)=\"auditConfigForm.disabled ? auditConfigForm.enable() : auditConfigForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMultiple\" class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"storeId\" class=\"form-label\">Store ID</label>\r\n <!-- <select (change)=\"onStoreChange($event)\" formControlName=\"storeId\" id=\"storeId\" class=\"form-select \"\r\n aria-label=\"Default select example\">\r\n <option *ngFor=\"let store of storeList\" [value]=\"store.storeId\">{{store.storeName}}</option>\r\n </select> -->\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [label]=\"'Stores'\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" [disabled]=\"auditConfigForm.get('storeId')?.disabled\"\r\n [selectedValues]=\"[selectedStore]\" (selected)=\"onStoreChange($event)\"></lib-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"iteration\" class=\"form-label\">No of times for re-audit <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"iteration\" type=\"number\" class=\"form-control disabled-input\" id=\"iteration\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"ratio\" class=\"form-label\">Mapping Percentage <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"ratio\" type=\"number\" class=\"form-control disabled-input\" id=\"ratio\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"count\" class=\"form-label\">Audit Count / Store <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"count\" type=\"number\" class=\"form-control disabled-input\" id=\"count\"\r\n autocomplete=\"off\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"isMultiple\" class=\"row g-0\">\r\n <div class=\"col-5 mb-5 d-flex align-items-center\">\r\n <ul>\r\n <li class=\"mb-2\">\r\n 1. Use the template to upload multiple stores at once.\r\n </li>\r\n <li class=\"mb-2 d-flex\">\r\n 2. Download the template here - <a [href]=\"fileUploadTemplate\" class=\"d-flex\" href=\"\">\r\n <svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n Download Template\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n 3. Add your data to the Template File\r\n </li>\r\n <li class=\"mb-2\">\r\n 4. Upload it on the right for processing\r\n </li>\r\n </ul>\r\n\r\n </div>\r\n <div class=\"col-2 d-flex justify-content-center align-items-center mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"76\" viewBox=\"0 0 1 76\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 2.74181e-06L1 76H0L0 2.74181e-06H1Z\"\r\n fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-5 mb-5\">\r\n\r\n <div class=\"drop-zone\" libDnd (fileDropped)=\"triggerBulkUploadInput()\">\r\n <svg class=\"mb-2\" width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4213_43399)\">\r\n <path\r\n d=\"M26.3335 26.3332L23.0002 22.9999M23.0002 22.9999L19.6669 26.3332M23.0002 22.9999V30.4999M29.9919 28.3249C30.8047 27.8818 31.4467 27.1806 31.8168 26.3321C32.1868 25.4835 32.2637 24.5359 32.0354 23.6388C31.807 22.7417 31.2865 21.9462 30.5558 21.3778C29.8251 20.8094 28.9259 20.5005 28.0002 20.4999H26.9502C26.698 19.5243 26.2278 18.6185 25.5752 17.8507C24.9225 17.0829 24.1042 16.4731 23.182 16.0671C22.2597 15.661 21.2573 15.4694 20.2503 15.5065C19.2433 15.5436 18.2578 15.8085 17.3679 16.2813C16.4779 16.7541 15.7068 17.4225 15.1124 18.2362C14.518 19.05 14.1158 19.9879 13.936 20.9794C13.7563 21.9709 13.8036 22.9903 14.0746 23.961C14.3455 24.9316 14.8329 25.8281 15.5002 26.5832\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4213_43399\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"mb-2\">\r\n <a (click)=\"triggerBulkUploadInput()\">Click to upload</a> \r\n <span class=\"t1\">or drag and drop</span>\r\n </div>\r\n <div class=\"mb-2\">the data added template file for processing.</div>\r\n <ng-container *ngIf=\"fileName\">\r\n <div class=\"mb-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"1\" viewBox=\"0 0 320 1\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M320 1H0V0H320V1Z\" fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"mb-2 d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M19.167 11.333H14.5003C14.1467 11.333 13.8076 11.4735 13.5575 11.7235C13.3075 11.9736 13.167 12.3127 13.167 12.6663V23.333C13.167 23.6866 13.3075 24.0258 13.5575 24.2758C13.8076 24.5259 14.1467 24.6663 14.5003 24.6663H22.5003C22.8539 24.6663 23.1931 24.5259 23.4431 24.2758C23.6932 24.0258 23.8337 23.6866 23.8337 23.333V15.9997M19.167 11.333L23.8337 15.9997M19.167 11.333V15.9997H23.8337\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"t3\">{{fileName}}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <input [disabled]=\"auditConfigForm.disabled\" (change)=\"onBulkInputChange($event)\" class=\"d-none\"\r\n #bulkUploadInput type=\"file\"\r\n accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\">\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"auditConfigForm.enabled\">\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-start g-0 mb-2 mt-2\">\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n <div class=\"col-2 text-center\">\r\n Or\r\n </div>\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"switch-form-card\">\r\n <div class=\"d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M24 20V22.6667C24 23.0203 23.8595 23.3594 23.6095 23.6095C23.3594 23.8595 23.0203 24 22.6667 24H13.3333C12.9797 24 12.6406 23.8595 12.3905 23.6095C12.1405 23.3594 12 23.0203 12 22.6667V20M21.3333 15.3333L18 12M18 12L14.6667 15.3333M18 12V20\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"txt-one\">\r\n <ng-container *ngIf=\"!isMultiple\">Add single store for configuration</ng-container>\r\n <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container>\r\n </div>\r\n </div>\r\n <div>\r\n <button (click)=\"isMultiple = !isMultiple\" class=\"btn btn-outline\">Click Here</button>\r\n </div>\r\n\r\n\r\n</div>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.footer-seperator{border-top:1px solid #EAECF0}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}hr{opacity:.15}.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}ul{list-style:none}ul li{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px}ul li a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px}.drop-zone{padding:16px 24px;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);display:flex;flex-direction:column;align-items:center}.drop-zone a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;cursor:pointer}.drop-zone .t1{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.drop-zone .t2{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.drop-zone .t3{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i5.DndDirective, selector: "[libDnd]", outputs: ["fileDropped"] }] });
|
|
148
|
+
}
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditConfigurationComponent, decorators: [{
|
|
150
|
+
type: Component,
|
|
151
|
+
args: [{ selector: 'lib-audit-configuration', template: "<form [formGroup]=\"auditConfigForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"auditConfigForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button (click)=\"auditConfigForm.disabled ? auditConfigForm.enable() : auditConfigForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMultiple\" class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"storeId\" class=\"form-label\">Store ID</label>\r\n <!-- <select (change)=\"onStoreChange($event)\" formControlName=\"storeId\" id=\"storeId\" class=\"form-select \"\r\n aria-label=\"Default select example\">\r\n <option *ngFor=\"let store of storeList\" [value]=\"store.storeId\">{{store.storeName}}</option>\r\n </select> -->\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [label]=\"'Stores'\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" [disabled]=\"auditConfigForm.get('storeId')?.disabled\"\r\n [selectedValues]=\"[selectedStore]\" (selected)=\"onStoreChange($event)\"></lib-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"iteration\" class=\"form-label\">No of times for re-audit <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"iteration\" type=\"number\" class=\"form-control disabled-input\" id=\"iteration\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"ratio\" class=\"form-label\">Mapping Percentage <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"ratio\" type=\"number\" class=\"form-control disabled-input\" id=\"ratio\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"count\" class=\"form-label\">Audit Count / Store <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"count\" type=\"number\" class=\"form-control disabled-input\" id=\"count\"\r\n autocomplete=\"off\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"isMultiple\" class=\"row g-0\">\r\n <div class=\"col-5 mb-5 d-flex align-items-center\">\r\n <ul>\r\n <li class=\"mb-2\">\r\n 1. Use the template to upload multiple stores at once.\r\n </li>\r\n <li class=\"mb-2 d-flex\">\r\n 2. Download the template here - <a [href]=\"fileUploadTemplate\" class=\"d-flex\" href=\"\">\r\n <svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n Download Template\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n 3. Add your data to the Template File\r\n </li>\r\n <li class=\"mb-2\">\r\n 4. Upload it on the right for processing\r\n </li>\r\n </ul>\r\n\r\n </div>\r\n <div class=\"col-2 d-flex justify-content-center align-items-center mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"76\" viewBox=\"0 0 1 76\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 2.74181e-06L1 76H0L0 2.74181e-06H1Z\"\r\n fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-5 mb-5\">\r\n\r\n <div class=\"drop-zone\" libDnd (fileDropped)=\"triggerBulkUploadInput()\">\r\n <svg class=\"mb-2\" width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4213_43399)\">\r\n <path\r\n d=\"M26.3335 26.3332L23.0002 22.9999M23.0002 22.9999L19.6669 26.3332M23.0002 22.9999V30.4999M29.9919 28.3249C30.8047 27.8818 31.4467 27.1806 31.8168 26.3321C32.1868 25.4835 32.2637 24.5359 32.0354 23.6388C31.807 22.7417 31.2865 21.9462 30.5558 21.3778C29.8251 20.8094 28.9259 20.5005 28.0002 20.4999H26.9502C26.698 19.5243 26.2278 18.6185 25.5752 17.8507C24.9225 17.0829 24.1042 16.4731 23.182 16.0671C22.2597 15.661 21.2573 15.4694 20.2503 15.5065C19.2433 15.5436 18.2578 15.8085 17.3679 16.2813C16.4779 16.7541 15.7068 17.4225 15.1124 18.2362C14.518 19.05 14.1158 19.9879 13.936 20.9794C13.7563 21.9709 13.8036 22.9903 14.0746 23.961C14.3455 24.9316 14.8329 25.8281 15.5002 26.5832\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4213_43399\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"mb-2\">\r\n <a (click)=\"triggerBulkUploadInput()\">Click to upload</a> \r\n <span class=\"t1\">or drag and drop</span>\r\n </div>\r\n <div class=\"mb-2\">the data added template file for processing.</div>\r\n <ng-container *ngIf=\"fileName\">\r\n <div class=\"mb-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"1\" viewBox=\"0 0 320 1\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M320 1H0V0H320V1Z\" fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"mb-2 d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M19.167 11.333H14.5003C14.1467 11.333 13.8076 11.4735 13.5575 11.7235C13.3075 11.9736 13.167 12.3127 13.167 12.6663V23.333C13.167 23.6866 13.3075 24.0258 13.5575 24.2758C13.8076 24.5259 14.1467 24.6663 14.5003 24.6663H22.5003C22.8539 24.6663 23.1931 24.5259 23.4431 24.2758C23.6932 24.0258 23.8337 23.6866 23.8337 23.333V15.9997M19.167 11.333L23.8337 15.9997M19.167 11.333V15.9997H23.8337\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"t3\">{{fileName}}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <input [disabled]=\"auditConfigForm.disabled\" (change)=\"onBulkInputChange($event)\" class=\"d-none\"\r\n #bulkUploadInput type=\"file\"\r\n accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\">\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"auditConfigForm.enabled\">\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-start g-0 mb-2 mt-2\">\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n <div class=\"col-2 text-center\">\r\n Or\r\n </div>\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"switch-form-card\">\r\n <div class=\"d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M24 20V22.6667C24 23.0203 23.8595 23.3594 23.6095 23.6095C23.3594 23.8595 23.0203 24 22.6667 24H13.3333C12.9797 24 12.6406 23.8595 12.3905 23.6095C12.1405 23.3594 12 23.0203 12 22.6667V20M21.3333 15.3333L18 12M18 12L14.6667 15.3333M18 12V20\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"txt-one\">\r\n <ng-container *ngIf=\"!isMultiple\">Add single store for configuration</ng-container>\r\n <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container>\r\n </div>\r\n </div>\r\n <div>\r\n <button (click)=\"isMultiple = !isMultiple\" class=\"btn btn-outline\">Click Here</button>\r\n </div>\r\n\r\n\r\n</div>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.footer-seperator{border-top:1px solid #EAECF0}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}hr{opacity:.15}.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}ul{list-style:none}ul li{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px}ul li a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px}.drop-zone{padding:16px 24px;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);display:flex;flex-direction:column;align-items:center}.drop-zone a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;cursor:pointer}.drop-zone .t1{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.drop-zone .t2{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.drop-zone .t3{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
|
|
152
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ClientApiService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }], propDecorators: { bulkUploadInput: [{
|
|
153
|
+
type: ViewChild,
|
|
154
|
+
args: ['bulkUploadInput']
|
|
155
|
+
}] } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2F1ZGl0LWNvbmZpZ3VyYXRpb24vYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2F1ZGl0LWNvbmZpZ3VyYXRpb24vYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVMzQixNQUFNLE9BQU8sMkJBQTJCO0lBYWxCO0lBQXlCO0lBQXNDO0lBQStCO0lBWGxILGVBQWUsQ0FBVztJQUMxQixVQUFVLEdBQVksS0FBSyxDQUFBO0lBQ0csZUFBZSxDQUEwQjtJQUN2RSxXQUFXLENBQU07SUFDakIsUUFBUSxDQUFNO0lBQ2Qsa0JBQWtCLENBQVE7SUFDMUIsU0FBUyxDQUFNO0lBQ2YsYUFBYSxDQUFNO0lBSW5CLFlBQW9CLEVBQWUsRUFBVSxVQUE0QixFQUFVLEVBQXFCLEVBQVUsS0FBbUI7UUFBakgsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25JLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNmLElB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ZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgYXVkaXRDb25maWdGb3JtOiBGb3JtR3JvdXBcclxuICBpc011bHRpcGxlOiBib29sZWFuID0gZmFsc2VcclxuICBAVmlld0NoaWxkKCdidWxrVXBsb2FkSW5wdXQnKSBidWxrVXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIGJ1bGtBZGREYXRhOiBhbnk7XHJcbiAgZmlsZU5hbWU6IGFueTtcclxuICBmaWxlVXBsb2FkVGVtcGxhdGU6IHN0cmluZ1xyXG4gIHN0b3JlTGlzdDogYW55O1xyXG4gIHNlbGVjdGVkU3RvcmU6IGFueTtcclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmluaXRGb3JtKClcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSAnaW5wdXQnICYmIHJlcy5mb3JtID09PSAnYXVkaXQtY29uZmlndXJhdGlvbicpIHtcclxuICAgICAgICAgIHRoaXMucGF0Y2hGb3JtKHJlcy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudERhdGEuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZXNMaXN0KGUuY2xpZW50SWQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmF1ZGl0Q29uZmlnRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzdG9yZUlkOiBbJyddLFxyXG4gICAgICBjb3VudDogWycnXSxcclxuICAgICAgaXRlcmF0aW9uOiBbJyddLFxyXG4gICAgICByYXRpbzogWycnXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdWRpdENvbmZpZ0Zvcm0uZGlzYWJsZSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3RvcmVzTGlzdChjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0U3RvcmVMaXN0KGNsaWVudElkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmUgPSB0aGlzLnN0b3JlTGlzdFswXVxyXG4gICAgICAgIHRoaXMuZ2V0QXVkaXREYXRhKHRoaXMuc3RvcmVMaXN0WzBdPy5zdG9yZUlkKVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXREYXRhKHN0b3JlSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldEF1ZGl0Q29uZmlnKHN0b3JlSWQpLnBpcGUobWFwKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbD8uZGF0YT8uYXVkaXRDb25maWdzPy5yYXRpbykge1xyXG4gICAgICAgIHZhbC5kYXRhLmF1ZGl0Q29uZmlncy5yYXRpbyA9IHRoaXMubm9ybWFsaXplTnVtYmVyKHZhbC5kYXRhLmF1ZGl0Q29uZmlncy5yYXRpbylcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsXHJcbiAgICB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucGF0Y2hGb3JtKHsgLi4ucmVzLmRhdGEuYXVkaXRDb25maWdzLCBzdG9yZUlkOiByZXMuZGF0YS5zdG9yZUlkIH0pXHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkVGVtcGxhdGUgPSByZXMuZGF0YS50ZW1wbGF0ZVVybFxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBub3JtYWxpemVOdW1iZXIobnVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQobnVtICogMTAwKSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHBhdGNoRm9ybShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuYXVkaXRDb25maWdGb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICAuLi5kYXRhLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCdWxrVXBsb2FkSW5wdXQoKSB7XHJcbiAgICB0aGlzLmJ1bGtVcGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKClcclxuICB9XHJcblxyXG4gIG9uQnVsa0lucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj4oZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgIGlmICh3Yi5TaGVldE5hbWVzWzBdICE9ICdkYXRhJykge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnSW52YWxpZCBmaWxlJylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgxKVxyXG4gICAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZVxyXG4gICAgICAgIHRoaXMuYnVsa0FkZERhdGEgPSBkYXRhXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblN0b3JlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZSA9IGV2ZW50XHJcbiAgICB0aGlzLmdldEF1ZGl0RGF0YShldmVudC5zdG9yZUlkKVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdjYW5jZWwnLCBmb3JtOiAnYXVkaXQtY29uZmlndXJhdGlvbicgfSlcclxuICAgIHRoaXMuYXVkaXRDb25maWdGb3JtLmRpc2FibGUoKVxyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmF1ZGl0Q29uZmlnRm9ybS52YWx1ZS5zdG9yZUlkID0gdGhpcy5zZWxlY3RlZFN0b3JlLnN0b3JlSWRcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLnVwZGF0ZWF1ZGl0Q29uZmlndXJhdGlvbihbdGhpcy5hdWRpdENvbmZpZ0Zvcm0udmFsdWVdKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdERhdGEodGhpcy5zZWxlY3RlZFN0b3JlLnN0b3JlSWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLnVwZGF0ZWF1ZGl0Q29uZmlndXJhdGlvbih0aGlzLmJ1bGtBZGREYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxyXG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IG51bGxcclxuICAgICAgICAgIHRoaXMuYnVsa0FkZERhdGEgPSBudWxsXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYXVkaXRDb25maWdGb3JtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0Q29uZmlnRm9ybS5kaXNhYmxlZFwiIGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYXVkaXRDb25maWdGb3JtLmRpc2FibGVkID8gYXVkaXRDb25maWdGb3JtLmVuYWJsZSgpIDogYXVkaXRDb25maWdGb3JtLmRpc2FibGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NyAyLjQ5OTkzQzE0LjM4NTkgMi4yODEwNiAxNC42NDU3IDIuMTA3NDQgMTQuOTMxNyAxLjk4ODk5QzE1LjIxNzYgMS44NzA1NCAxNS41MjQxIDEuODA5NTcgMTUuODMzNyAxLjgwOTU3QzE2LjE0MzIgMS44MDk1NyAxNi40NDk3IDEuODcwNTQgMTYuNzM1NyAxLjk4ODk5QzE3LjAyMTYgMi4xMDc0NCAxNy4yODE1IDIuMjgxMDYgMTcuNTAwMyAyLjQ5OTkzQzE3LjcxOTIgMi43MTg4IDE3Ljg5MjggMi45Nzg2MyAxOC4wMTEzIDMuMjY0NkMxOC4xMjk3IDMuNTUwNTcgMTguMTkwNyAzLjg1NzA2IDE4LjE5MDcgNC4xNjY1OUMxOC4xOTA3IDQuNDc2MTIgMTguMTI5NyA0Ljc4MjYyIDE4LjAxMTMgNS4wNjg1OUMxNy44OTI4IDUuMzU0NTUgMTcuNzE5MiA1LjYxNDM5IDE3LjUwMDMgNS44MzMyNkw2LjI1MDMzIDE3LjA4MzNMMS42NjY5OSAxOC4zMzMzTDIuOTE2OTkgMTMuNzQ5OUwxNC4xNjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc011bHRpcGxlXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZUlkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgSUQ8L2xhYmVsPlxyXG4gICAgICAgICAgICA8IS0tIDxzZWxlY3QgKGNoYW5nZSk9XCJvblN0b3JlQ2hhbmdlKCRldmVudClcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZUlkXCIgaWQ9XCJzdG9yZUlkXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBcIlxyXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlTGlzdFwiIFt2YWx1ZV09XCJzdG9yZS5zdG9yZUlkXCI+e3tzdG9yZS5zdG9yZU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgIDxsaWItc2VsZWN0IFtpdGVtc109XCJzdG9yZUxpc3RcIiBbbXVsdGldPVwiZmFsc2VcIiBbbGFiZWxdPVwiJ1N0b3JlcydcIiBbc2VhcmNoRmllbGRdPVwiJ3N0b3JlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCIgW2Rpc2FibGVkXT1cImF1ZGl0Q29uZmlnRm9ybS5nZXQoJ3N0b3JlSWQnKT8uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cIltzZWxlY3RlZFN0b3JlXVwiIChzZWxlY3RlZCk9XCJvblN0b3JlQ2hhbmdlKCRldmVudClcIj48L2xpYi1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaXRlcmF0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tm8gb2YgdGltZXMgZm9yIHJlLWF1ZGl0IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXRlcmF0aW9uXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRpc2FibGVkLWlucHV0XCIgaWQ9XCJpdGVyYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwicmF0aW9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5NYXBwaW5nIFBlcmNlbnRhZ2UgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmF0aW9cIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZGlzYWJsZWQtaW5wdXRcIiBpZD1cInJhdGlvXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QXVkaXQgQ291bnQgLyBTdG9yZSA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb3VudFwiIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkaXNhYmxlZC1pbnB1dFwiIGlkPVwiY291bnRcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpcGxlXCIgY2xhc3M9XCJyb3cgZy0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IG1iLTUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgMS4gVXNlIHRoZSB0ZW1wbGF0ZSB0byB1cGxvYWQgbXVsdGlwbGUgc3RvcmVzIGF0IG9uY2UuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMiBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAyLiBEb3dubG9hZCB0aGUgdGVtcGxhdGUgaGVyZSAtICZuYnNwOyA8YSBbaHJlZl09XCJmaWxlVXBsb2FkVGVtcGxhdGVcIiBjbGFzcz1cImQtZmxleFwiIGhyZWY9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAzLiBBZGQgeW91ciBkYXRhIHRvIHRoZSBUZW1wbGF0ZSBGaWxlXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDQuIFVwbG9hZCBpdCBvbiB0aGUgcmlnaHQgZm9yIHByb2Nlc3NpbmdcclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCI3NlwiIHZpZXdCb3g9XCIwIDAgMSA3NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMSAyLjc0MTgxZS0wNkwxIDc2SDBMMCAyLjc0MTgxZS0wNkgxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgbWItNVwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Atem9uZVwiIGxpYkRuZCAoZmlsZURyb3BwZWQpPVwidHJpZ2dlckJ1bGtVcGxvYWRJbnB1dCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWItMlwiIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNGMkY0RjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiIHN0cm9rZS13aWR0aD1cIjZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDIxM180MzM5OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMzMzNSAyNi4zMzMyTDIzLjAwMDIgMjIuOTk5OU0yMy4wMDAyIDIyLjk5OTlMMTkuNjY2OSAyNi4zMzMyTTIzLjAwMDIgMjIuOTk5OVYzMC40OTk5TTI5Ljk5MTkgMjguMzI0OUMzMC44MDQ3IDI3Ljg4MTggMzEuNDQ2NyAyNy4xODA2IDMxLjgxNjggMjYuMzMyMUMzMi4xODY4IDI1LjQ4MzUgMzIuMjYzNyAyNC41MzU5IDMyLjAzNTQgMjMuNjM4OEMzMS44MDcgMjIuNzQxNyAzMS4yODY1IDIxLjk0NjIgMzAuNTU1OCAyMS4zNzc4QzI5LjgyNTEgMjAuODA5NCAyOC45MjU5IDIwLjUwMDUgMjguMDAwMiAyMC40OTk5SDI2Ljk1MDJDMjYuNjk4IDE5LjUyNDMgMjYuMjI3OCAxOC42MTg1IDI1LjU3NTIgMTcuODUwN0MyNC45MjI1IDE3LjA4MjkgMjQuMTA0MiAxNi40NzMxIDIzLjE4MiAxNi4wNjcxQzIyLjI1OTcgMTUuNjYxIDIxLjI1NzMgMTUuNDY5NCAyMC4yNTAzIDE1LjUwNjVDMTkuMjQzMyAxNS41NDM2IDE4LjI1NzggMTUuODA4NSAxNy4zNjc5IDE2LjI4MTNDMTYuNDc3OSAxNi43NTQxIDE1LjcwNjggMTcuNDIyNSAxNS4xMTI0IDE4LjIzNjJDMTQuNTE4IDE5LjA1IDE0LjExNTggMTkuOTg3OSAxMy45MzYgMjAuOTc5NEMxMy43NTYzIDIxLjk3MDkgMTMuODAzNiAyMi45OTAzIDE0LjA3NDYgMjMuOTYxQzE0LjM0NTUgMjQuOTMxNiAxNC44MzI5IDI1LjgyODEgMTUuNTAwMiAyNi41ODMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQyMTNfNDMzOTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMyAxMylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwidHJpZ2dlckJ1bGtVcGxvYWRJbnB1dCgpXCI+Q2xpY2sgdG8gdXBsb2FkPC9hPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidDFcIj5vciBkcmFnIGFuZCBkcm9wPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMyMFwiIGhlaWdodD1cIjFcIiB2aWV3Qm94PVwiMCAwIDMyMCAxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0zMjAgMUgwVjBIMzIwVjFaXCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtZS0yXCIgd2lkdGg9XCIzN1wiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNyAzNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjE2NyAxMS4zMzNIMTQuNTAwM0MxNC4xNDY3IDExLjMzMyAxMy44MDc2IDExLjQ3MzUgMTMuNTU3NSAxMS43MjM1QzEzLjMwNzUgMTEuOTczNiAxMy4xNjcgMTIuMzEyNyAxMy4xNjcgMTIuNjY2M1YyMy4zMzNDMTMuMTY3IDIzLjY4NjYgMTMuMzA3NSAyNC4wMjU4IDEzLjU1NzUgMjQuMjc1OEMxMy44MDc2IDI0LjUyNTkgMTQuMTQ2NyAyNC42NjYzIDE0LjUwMDMgMjQuNjY2M0gyMi41MDAzQzIyLjg1MzkgMjQuNjY2MyAyMy4xOTMxIDI0LjUyNTkgMjMuNDQzMSAyNC4yNzU4QzIzLjY5MzIgMjQuMDI1OCAyMy44MzM3IDIzLjY4NjYgMjMuODMzNyAyMy4zMzNWMTUuOTk5N00xOS4xNjcgMTEuMzMzTDIzLjgzMzcgMTUuOTk5N00xOS4xNjcgMTEuMzMzVjE1Ljk5OTdIMjMuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQzXCI+e3tmaWxlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGlucHV0IFtkaXNhYmxlZF09XCJhdWRpdENvbmZpZ0Zvcm0uZGlzYWJsZWRcIiAoY2hhbmdlKT1cIm9uQnVsa0lucHV0Q2hhbmdlKCRldmVudClcIiBjbGFzcz1cImQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAjYnVsa1VwbG9hZElucHV0IHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgIGFjY2VwdD1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhdWRpdENvbmZpZ0Zvcm0uZW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtNFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9hPlxyXG4gICAgICAgICAgICA8YSB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPjxzcGFuPlNhdmUgQ2hhbmdlczwvc3Bhbj48L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0IGctMCBtYi0yIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cclxuICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICBPclxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxyXG4gICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPGRpdiBjbGFzcz1cInN3aXRjaC1mb3JtLWNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjQgMjBWMjIuNjY2N0MyNCAyMy4wMjAzIDIzLjg1OTUgMjMuMzU5NCAyMy42MDk1IDIzLjYwOTVDMjMuMzU5NCAyMy44NTk1IDIzLjAyMDMgMjQgMjIuNjY2NyAyNEgxMy4zMzMzQzEyLjk3OTcgMjQgMTIuNjQwNiAyMy44NTk1IDEyLjM5MDUgMjMuNjA5NUMxMi4xNDA1IDIzLjM1OTQgMTIgMjMuMDIwMyAxMiAyMi42NjY3VjIwTTIxLjMzMzMgMTUuMzMzM0wxOCAxMk0xOCAxMkwxNC42NjY3IDE1LjMzMzNNMTggMTJWMjBcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0eHQtb25lXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNdWx0aXBsZVwiPkFkZCBzaW5nbGUgc3RvcmUgZm9yIGNvbmZpZ3VyYXRpb248L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTXVsdGlwbGVcIj5VcGxvYWQgbXVsdGlwbGUgc3RvcmVzIGZvciBjb25maWd1cmF0aW9uPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaXNNdWx0aXBsZSA9ICFpc011bHRpcGxlXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIj5DbGljayBIZXJlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj4iXX0=
|