ngx-techlify-checksheet 18.0.0 → 18.2.0
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/checksheet/checksheet-form/checksheet-form.component.mjs +88 -116
- package/esm2022/lib/checksheet/checksheet-form-button/checksheet-form-button.component.mjs +10 -12
- package/esm2022/lib/checksheet/checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component.mjs +56 -0
- package/esm2022/lib/checksheet/checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component.mjs +54 -0
- package/esm2022/lib/checksheet/checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component.mjs +68 -0
- package/esm2022/lib/checksheet/checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component.mjs +57 -0
- package/esm2022/lib/checksheet/checksheet-format/checksheet-format-view/checksheet-format-view.component.mjs +140 -0
- package/esm2022/lib/checksheet/checksheet-format-form/checksheet-format-form.component.mjs +139 -0
- package/esm2022/lib/checksheet/checksheet-format-list/checksheet-format-list.component.mjs +9 -67
- package/esm2022/lib/checksheet/checksheet-list/checksheet-list.component.mjs +28 -11
- package/esm2022/lib/checksheet/checksheet-list-widget/checksheet-list-widget.component.mjs +59 -0
- package/esm2022/lib/checksheet/checksheet-node-view/checksheet-node-view.component.mjs +24 -24
- package/esm2022/lib/checksheet/checksheet-question/checksheet-question.component.mjs +12 -13
- package/esm2022/lib/checksheet/checksheet-question-list/checksheet-question-list.component.mjs +7 -9
- package/esm2022/lib/checksheet/checksheet-report/checksheet-report.component.mjs +3 -3
- package/esm2022/lib/checksheet/checksheet-routing.module.mjs +6 -6
- package/esm2022/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.mjs +83 -17
- package/esm2022/lib/checksheet/checksheet-submission-list/checksheet-submission-list.component.mjs +5 -5
- package/esm2022/lib/checksheet/checksheet-submission-view/checksheet-submission-view.component.mjs +4 -4
- package/esm2022/lib/checksheet/checksheet.module.mjs +42 -20
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/ngx-techlify-checksheet.mjs +594 -378
- package/fesm2022/ngx-techlify-checksheet.mjs.map +1 -1
- package/lib/checksheet/checksheet-form/checksheet-form.component.d.ts +15 -34
- package/lib/checksheet/checksheet-form-button/checksheet-form-button.component.d.ts +3 -4
- package/lib/checksheet/checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component.d.ts +16 -0
- package/lib/checksheet/checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component.d.ts +16 -0
- package/lib/checksheet/checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component.d.ts +18 -0
- package/lib/checksheet/checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component.d.ts +16 -0
- package/lib/checksheet/{checksheet-view/checksheet-view.component.d.ts → checksheet-format/checksheet-format-view/checksheet-format-view.component.d.ts} +4 -4
- package/lib/checksheet/checksheet-format-form/checksheet-format-form.component.d.ts +39 -0
- package/lib/checksheet/checksheet-format-list/checksheet-format-list.component.d.ts +0 -3
- package/lib/checksheet/checksheet-list/checksheet-list.component.d.ts +5 -3
- package/lib/checksheet/checksheet-list-widget/checksheet-list-widget.component.d.ts +17 -0
- package/lib/checksheet/checksheet-node-view/checksheet-node-view.component.d.ts +2 -4
- package/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.d.ts +14 -4
- package/lib/checksheet/checksheet.module.d.ts +12 -7
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2022/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.mjs +0 -131
- package/esm2022/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.mjs +0 -58
- package/esm2022/lib/checksheet/checksheet-view/checksheet-view.component.mjs +0 -140
- package/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.d.ts +0 -27
- package/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.d.ts +0 -29
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { ActionPopupComponent } from 'ngx-techlify-core';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { NgIf } from '@angular/common';
|
|
5
|
+
import { MatIcon } from '@angular/material/icon';
|
|
6
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
import * as i2 from "ngx-techlify-core";
|
|
10
|
+
import * as i3 from "../../checksheet-format.service";
|
|
11
|
+
export class ChecksheetFormatPublishButtonComponent {
|
|
12
|
+
dialog;
|
|
13
|
+
alertService;
|
|
14
|
+
service;
|
|
15
|
+
checksheetFormat;
|
|
16
|
+
changed = new EventEmitter();
|
|
17
|
+
viewMode = 'button';
|
|
18
|
+
isSaving = false;
|
|
19
|
+
constructor(dialog, alertService, service) {
|
|
20
|
+
this.dialog = dialog;
|
|
21
|
+
this.alertService = alertService;
|
|
22
|
+
this.service = service;
|
|
23
|
+
}
|
|
24
|
+
publishChecksheet() {
|
|
25
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
26
|
+
width: '400px',
|
|
27
|
+
data: {
|
|
28
|
+
title: 'Publish Checksheet Format',
|
|
29
|
+
message: `Review the checksheet format completely before publishing, you cannot alter once it is published.
|
|
30
|
+
Are you sure to publish the Checksheet format?`
|
|
31
|
+
},
|
|
32
|
+
autoFocus: false
|
|
33
|
+
});
|
|
34
|
+
dialogRef.afterClosed().subscribe(async (result) => {
|
|
35
|
+
if (result) {
|
|
36
|
+
const model = { ...this.checksheetFormat };
|
|
37
|
+
model.is_published = true;
|
|
38
|
+
this.isSaving = true;
|
|
39
|
+
this.service.update(model).subscribe({
|
|
40
|
+
next: (response) => {
|
|
41
|
+
this.alertService.addAlert('Checksheet format published successfully.', 'success');
|
|
42
|
+
this.changed.emit(response?.item);
|
|
43
|
+
this.isSaving = false;
|
|
44
|
+
},
|
|
45
|
+
error: () => { this.isSaving = false; }
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatPublishButtonComponent, deps: [{ token: i1.MatDialog }, { token: i2.AlertService }, { token: i3.ChecksheetFormatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormatPublishButtonComponent, isStandalone: true, selector: "app-checksheet-format-publish-button", inputs: { checksheetFormat: "checksheetFormat", viewMode: "viewMode" }, outputs: { changed: "changed" }, ngImport: i0, template: "<button mat-raised-button [disabled]=\"isSaving\" color=\"accent\" type=\"button\" (click)=\"publishChecksheet()\"\n *ngIf=\"viewMode === 'button' && !checksheetFormat?.is_published\">\n Publish\n</button>\n<span matTooltip=\"Publish\" class=\"material-symbols-outlined cursor-pointer\" (click)=\"publishChecksheet()\"\n *ngIf=\"viewMode === 'icon' && !checksheetFormat?.is_published\">\n published_with_changes\n</span>\n", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatPublishButtonComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'app-checksheet-format-publish-button', standalone: true, imports: [
|
|
56
|
+
MatButton,
|
|
57
|
+
NgIf,
|
|
58
|
+
MatIcon,
|
|
59
|
+
MatTooltip
|
|
60
|
+
], template: "<button mat-raised-button [disabled]=\"isSaving\" color=\"accent\" type=\"button\" (click)=\"publishChecksheet()\"\n *ngIf=\"viewMode === 'button' && !checksheetFormat?.is_published\">\n Publish\n</button>\n<span matTooltip=\"Publish\" class=\"material-symbols-outlined cursor-pointer\" (click)=\"publishChecksheet()\"\n *ngIf=\"viewMode === 'icon' && !checksheetFormat?.is_published\">\n published_with_changes\n</span>\n" }]
|
|
61
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.AlertService }, { type: i3.ChecksheetFormatService }], propDecorators: { checksheetFormat: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], changed: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], viewMode: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtYXQtcHVibGlzaC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNoZWNrc2hlZXQvc3JjL2xpYi9jaGVja3NoZWV0L2NoZWNrc2hlZXQtZm9ybWF0L2NoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uL2NoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm1hdC9jaGVja3NoZWV0LWZvcm1hdC1wdWJsaXNoLWJ1dHRvbi9jaGVja3NoZWV0LWZvcm1hdC1wdWJsaXNoLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBYyxvQkFBb0IsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWxGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFjckQsTUFBTSxPQUFPLHNDQUFzQztJQU92QztJQUNBO0lBQ0E7SUFSRCxnQkFBZ0IsQ0FBTTtJQUNyQixPQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakQsUUFBUSxHQUF1QixRQUFRLENBQUM7SUFDakQsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixZQUNVLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzFCLE9BQWdDO1FBRmhDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7SUFDdkMsQ0FBQztJQUVKLGlCQUFpQjtRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3ZELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFlO2dCQUNqQixLQUFLLEVBQUUsMkJBQTJCO2dCQUNsQyxPQUFPLEVBQUU7dURBQ3NDO2FBQ2hEO1lBQ0QsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDakQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuQyxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCLDJDQUEyQyxFQUMzQyxTQUFTLENBQ1YsQ0FBQzt3QkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN4QixDQUFDO29CQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3hDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBekNVLHNDQUFzQzs0RkFBdEMsc0NBQXNDLHlNQ3JCbkQsdWJBUUEsMERES0ksU0FBUyxpTEFDVCxJQUFJLDZGQUVKLFVBQVU7OzRGQUtELHNDQUFzQztrQkFabEQsU0FBUzsrQkFDRSxzQ0FBc0MsY0FDcEMsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsSUFBSTt3QkFDSixPQUFPO3dCQUNQLFVBQVU7cUJBQ1g7K0lBS1EsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0FjdGlvblBvcHVwLCBBY3Rpb25Qb3B1cENvbXBvbmVudCwgQWxlcnRTZXJ2aWNlfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQge0NoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlfSBmcm9tICcuLi8uLi9jaGVja3NoZWV0LWZvcm1hdC5zZXJ2aWNlJztcbmltcG9ydCB7TWF0QnV0dG9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXRJY29ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVja3NoZWV0LWZvcm1hdC1wdWJsaXNoLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRCdXR0b24sXG4gICAgTmdJZixcbiAgICBNYXRJY29uLFxuICAgIE1hdFRvb2x0aXBcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrc2hlZXRGb3JtYXRQdWJsaXNoQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY2hlY2tzaGVldEZvcm1hdDogYW55O1xuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHZpZXdNb2RlIDogJ2J1dHRvbicgfCAnaWNvbicgPSAnYnV0dG9uJztcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBDaGVja3NoZWV0Rm9ybWF0U2VydmljZVxuICApIHt9XG5cbiAgcHVibGlzaENoZWNrc2hlZXQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3Rpb25Qb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBkYXRhOiA8QWN0aW9uUG9wdXA+e1xuICAgICAgICB0aXRsZTogJ1B1Ymxpc2ggQ2hlY2tzaGVldCBGb3JtYXQnLFxuICAgICAgICBtZXNzYWdlOiBgUmV2aWV3IHRoZSBjaGVja3NoZWV0IGZvcm1hdCBjb21wbGV0ZWx5IGJlZm9yZSBwdWJsaXNoaW5nLCB5b3UgY2Fubm90IGFsdGVyIG9uY2UgaXQgaXMgcHVibGlzaGVkLlxuICAgICAgICBBcmUgeW91IHN1cmUgdG8gcHVibGlzaCB0aGUgQ2hlY2tzaGVldCBmb3JtYXQ/YFxuICAgICAgfSxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0geyAuLi50aGlzLmNoZWNrc2hlZXRGb3JtYXQgfTtcbiAgICAgICAgbW9kZWwuaXNfcHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmljZS51cGRhdGUobW9kZWwpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KFxuICAgICAgICAgICAgICAnQ2hlY2tzaGVldCBmb3JtYXQgcHVibGlzaGVkIHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdChyZXNwb25zZT8uaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzU2F2aW5nID0gZmFsc2U7IH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgY29sb3I9XCJhY2NlbnRcIiAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJwdWJsaXNoQ2hlY2tzaGVldCgpXCJcbiAgICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2J1dHRvbicgJiYgIWNoZWNrc2hlZXRGb3JtYXQ/LmlzX3B1Ymxpc2hlZFwiPlxuICBQdWJsaXNoXG48L2J1dHRvbj5cbjxzcGFuIG1hdFRvb2x0aXA9XCJQdWJsaXNoXCIgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInB1Ymxpc2hDaGVja3NoZWV0KClcIlxuICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2ljb24nICYmICFjaGVja3NoZWV0Rm9ybWF0Py5pc19wdWJsaXNoZWRcIj5cbiAgcHVibGlzaGVkX3dpdGhfY2hhbmdlc1xuPC9zcGFuPlxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { ActionPopupComponent } from 'ngx-techlify-core';
|
|
3
|
+
import { MatIcon } from '@angular/material/icon';
|
|
4
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
5
|
+
import { NgIf } from '@angular/common';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/dialog";
|
|
8
|
+
import * as i2 from "ngx-techlify-core";
|
|
9
|
+
import * as i3 from "../../checksheet-format.service";
|
|
10
|
+
export class ChecksheetFormatUnpublishButtonComponent {
|
|
11
|
+
dialog;
|
|
12
|
+
alertService;
|
|
13
|
+
service;
|
|
14
|
+
checksheetFormat;
|
|
15
|
+
changed = new EventEmitter();
|
|
16
|
+
constructor(dialog, alertService, service) {
|
|
17
|
+
this.dialog = dialog;
|
|
18
|
+
this.alertService = alertService;
|
|
19
|
+
this.service = service;
|
|
20
|
+
}
|
|
21
|
+
unpublishChecksheet() {
|
|
22
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
23
|
+
width: '400px',
|
|
24
|
+
data: {
|
|
25
|
+
title: 'Unpublish Checksheet Format',
|
|
26
|
+
message: `Are you sure to unpublish the format ${this.checksheetFormat.title}?
|
|
27
|
+
This checksheet format would no longer be available to team members to create submissions for. `
|
|
28
|
+
},
|
|
29
|
+
autoFocus: false
|
|
30
|
+
});
|
|
31
|
+
dialogRef.afterClosed().subscribe(async (result) => {
|
|
32
|
+
if (result) {
|
|
33
|
+
this.service.unpublish(this.checksheetFormat).subscribe({
|
|
34
|
+
next: () => {
|
|
35
|
+
this.alertService.addAlert('Checksheet Format unpublished successfully!', 'success');
|
|
36
|
+
this.changed.emit();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatUnpublishButtonComponent, deps: [{ token: i1.MatDialog }, { token: i2.AlertService }, { token: i3.ChecksheetFormatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormatUnpublishButtonComponent, isStandalone: true, selector: "app-checksheet-format-unpublish-button", inputs: { checksheetFormat: "checksheetFormat" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-icon class=\"cursor-pointer\" *ngIf=\"checksheetFormat?.is_published\" matTooltip=\"Unpublish\"\n (click)=\"unpublishChecksheet()\">\n unpublished\n</mat-icon>\n", styles: [""], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatUnpublishButtonComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'app-checksheet-format-unpublish-button', standalone: true, imports: [
|
|
48
|
+
MatIcon,
|
|
49
|
+
MatTooltip,
|
|
50
|
+
NgIf
|
|
51
|
+
], template: "<mat-icon class=\"cursor-pointer\" *ngIf=\"checksheetFormat?.is_published\" matTooltip=\"Unpublish\"\n (click)=\"unpublishChecksheet()\">\n unpublished\n</mat-icon>\n" }]
|
|
52
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.AlertService }, { type: i3.ChecksheetFormatService }], propDecorators: { checksheetFormat: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], changed: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtYXQtdW5wdWJsaXNoLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1mb3JtYXQvY2hlY2tzaGVldC1mb3JtYXQtdW5wdWJsaXNoLWJ1dHRvbi9jaGVja3NoZWV0LWZvcm1hdC11bnB1Ymxpc2gtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm1hdC9jaGVja3NoZWV0LWZvcm1hdC11bnB1Ymxpc2gtYnV0dG9uL2NoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQWMsb0JBQW9CLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFhckMsTUFBTSxPQUFPLHdDQUF3QztJQUt6QztJQUNBO0lBQ0E7SUFORCxnQkFBZ0IsQ0FBTTtJQUNyQixPQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFMUQsWUFDVSxNQUFpQixFQUNqQixZQUEwQixFQUMxQixPQUFnQztRQUZoQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQ3ZDLENBQUM7SUFFSixtQkFBbUI7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQWU7Z0JBQ2pCLEtBQUssRUFBRSw2QkFBNkI7Z0JBQ3BDLE9BQU8sRUFBRSx3Q0FBd0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7Z0hBQzRCO2FBQ3pHO1lBQ0QsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDakQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3RELElBQUksRUFBRSxHQUFHLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsNkNBQTZDLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQ3JGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3RCLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0EvQlUsd0NBQXdDOzRGQUF4Qyx3Q0FBd0MscUxDbkJyRCxrTEFJQSwwRERRSSxPQUFPLDJJQUNQLFVBQVUsaVJBQ1YsSUFBSTs7NEZBS0ssd0NBQXdDO2tCQVhwRCxTQUFTOytCQUNFLHdDQUF3QyxjQUN0QyxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLElBQUk7cUJBQ0w7K0lBS1EsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtBY3Rpb25Qb3B1cCwgQWN0aW9uUG9wdXBDb21wb25lbnQsIEFsZXJ0U2VydmljZX0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHtDaGVja3NoZWV0Rm9ybWF0U2VydmljZX0gZnJvbSAnLi4vLi4vY2hlY2tzaGVldC1mb3JtYXQuc2VydmljZSc7XG5pbXBvcnQge01hdEljb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRUb29sdGlwfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBNYXRUb29sdGlwLFxuICAgIE5nSWZcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY2hlY2tzaGVldC1mb3JtYXQtdW5wdWJsaXNoLWJ1dHRvbi5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja3NoZWV0Rm9ybWF0VW5wdWJsaXNoQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY2hlY2tzaGVldEZvcm1hdDogYW55O1xuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VydmljZTogQ2hlY2tzaGVldEZvcm1hdFNlcnZpY2VcbiAgKSB7fVxuXG4gIHVucHVibGlzaENoZWNrc2hlZXQoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3Rpb25Qb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBkYXRhOiA8QWN0aW9uUG9wdXA+e1xuICAgICAgICB0aXRsZTogJ1VucHVibGlzaCBDaGVja3NoZWV0IEZvcm1hdCcsXG4gICAgICAgIG1lc3NhZ2U6IGBBcmUgeW91IHN1cmUgdG8gdW5wdWJsaXNoIHRoZSBmb3JtYXQgJHt0aGlzLmNoZWNrc2hlZXRGb3JtYXQudGl0bGV9P1xuICAgICAgICAgICAgICAgIFRoaXMgY2hlY2tzaGVldCBmb3JtYXQgd291bGQgbm8gbG9uZ2VyIGJlIGF2YWlsYWJsZSB0byB0ZWFtIG1lbWJlcnMgdG8gY3JlYXRlIHN1Ym1pc3Npb25zIGZvci4gYFxuICAgICAgfSxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMuc2VydmljZS51bnB1Ymxpc2godGhpcy5jaGVja3NoZWV0Rm9ybWF0KS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDaGVja3NoZWV0IEZvcm1hdCB1bnB1Ymxpc2hlZCBzdWNjZXNzZnVsbHkhJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdJZj1cImNoZWNrc2hlZXRGb3JtYXQ/LmlzX3B1Ymxpc2hlZFwiIG1hdFRvb2x0aXA9XCJVbnB1Ymxpc2hcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnB1Ymxpc2hDaGVja3NoZWV0KClcIj5cbiAgdW5wdWJsaXNoZWRcbjwvbWF0LWljb24+XG4iXX0=
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { DateValidator } from 'ngx-techlify-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngx-techlify-core";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "ngx-spinner";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/material/dialog";
|
|
10
|
+
import * as i6 from "@angular/router";
|
|
11
|
+
import * as i7 from "../../checksheet.service";
|
|
12
|
+
import * as i8 from "../../checksheet-format-form/checksheet-format-form.component";
|
|
13
|
+
const errorMessages = {
|
|
14
|
+
date: {
|
|
15
|
+
required: 'Date is required',
|
|
16
|
+
invalid: 'Invalid date'
|
|
17
|
+
},
|
|
18
|
+
model_id: {
|
|
19
|
+
required: 'Vehicle is required'
|
|
20
|
+
},
|
|
21
|
+
checksheet_format_id: {
|
|
22
|
+
required: 'Checksheet Format is required'
|
|
23
|
+
},
|
|
24
|
+
status_id: {
|
|
25
|
+
required: 'Status is required'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export class ChecksheetFormatViewComponent {
|
|
29
|
+
formValidatorService;
|
|
30
|
+
fb;
|
|
31
|
+
spinnerService;
|
|
32
|
+
alertService;
|
|
33
|
+
location;
|
|
34
|
+
errorHandler;
|
|
35
|
+
dataManager;
|
|
36
|
+
dialog;
|
|
37
|
+
route;
|
|
38
|
+
checksheetSubmissionService;
|
|
39
|
+
checksheetSubmissionForm;
|
|
40
|
+
submission;
|
|
41
|
+
selectedFormat;
|
|
42
|
+
submissionId;
|
|
43
|
+
constructor(formValidatorService, fb, spinnerService, alertService, location, errorHandler, dataManager, dialog, route, checksheetSubmissionService) {
|
|
44
|
+
this.formValidatorService = formValidatorService;
|
|
45
|
+
this.fb = fb;
|
|
46
|
+
this.spinnerService = spinnerService;
|
|
47
|
+
this.alertService = alertService;
|
|
48
|
+
this.location = location;
|
|
49
|
+
this.errorHandler = errorHandler;
|
|
50
|
+
this.dataManager = dataManager;
|
|
51
|
+
this.dialog = dialog;
|
|
52
|
+
this.route = route;
|
|
53
|
+
this.checksheetSubmissionService = checksheetSubmissionService;
|
|
54
|
+
this.submissionId = parseInt(this.route.snapshot.params['submissionId']);
|
|
55
|
+
this.createForm();
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
if (this.submissionId) {
|
|
59
|
+
const params = {
|
|
60
|
+
with: 'format.questions.type,format.questions.answers'
|
|
61
|
+
};
|
|
62
|
+
this.checksheetSubmissionService
|
|
63
|
+
.show(this.submissionId, params)
|
|
64
|
+
.subscribe({
|
|
65
|
+
next: (response) => {
|
|
66
|
+
this.submission = response?.item;
|
|
67
|
+
this.selectedFormat = this.submission?.format;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
createForm() {
|
|
73
|
+
this.checksheetSubmissionForm = this.fb.group({
|
|
74
|
+
id: [''],
|
|
75
|
+
date: ['', Validators.compose([Validators.required, DateValidator()])],
|
|
76
|
+
reviewer_id: [''],
|
|
77
|
+
model_id: ['', Validators.required],
|
|
78
|
+
model: ['vehicle'],
|
|
79
|
+
status_id: [''],
|
|
80
|
+
comments: [''],
|
|
81
|
+
checksheet_format_id: ['', Validators.required]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
redirectBack() {
|
|
85
|
+
this.location.back();
|
|
86
|
+
}
|
|
87
|
+
/**Method to evaluate form fields*/
|
|
88
|
+
isFieldValid(field) {
|
|
89
|
+
return this.formValidatorService.isFieldValid(field, this.checksheetSubmissionForm);
|
|
90
|
+
}
|
|
91
|
+
/**Method to find error in form fields*/
|
|
92
|
+
getErrorMessage(field) {
|
|
93
|
+
return this.formValidatorService.getErrorMessage(field, this.checksheetSubmissionForm, errorMessages);
|
|
94
|
+
}
|
|
95
|
+
async submit() {
|
|
96
|
+
if (this.checksheetSubmissionForm.valid) {
|
|
97
|
+
this.spinnerService.show();
|
|
98
|
+
let result;
|
|
99
|
+
const model = this.checksheetSubmissionForm.value;
|
|
100
|
+
const submission = (await this.dataManager.GET(`api/checksheets/${this.submission.id}`)).item;
|
|
101
|
+
//Submission Validation for MSQYN
|
|
102
|
+
let validSubmission = true;
|
|
103
|
+
(submission.format.questions || [])
|
|
104
|
+
.filter((question) => question.type_id === 7)
|
|
105
|
+
.forEach((question) => {
|
|
106
|
+
if (question?.submitted_answers == null ||
|
|
107
|
+
(question?.answers || []).length >
|
|
108
|
+
(question?.submitted_answer?.msq_answer || []).length) {
|
|
109
|
+
this.alertService.addAlert(`Answer all the required Yes/No Question`, 'warn');
|
|
110
|
+
validSubmission = false;
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
if (!validSubmission) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
result = await this.dataManager.PUT(`api/checksheets/${model.id}`, model);
|
|
119
|
+
this.alertService.addAlert('Checksheet saved successfully', 'success');
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.errorHandler.handleError(error, 'Unable to save Checksheet, try later');
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
this.spinnerService.hide();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
onSaved() {
|
|
130
|
+
this.alertService.addAlert('Checksheet saved successfully!', 'success');
|
|
131
|
+
this.redirectBack();
|
|
132
|
+
}
|
|
133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatViewComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.UntypedFormBuilder }, { token: i3.NgxSpinnerService }, { token: i1.AlertService }, { token: i4.Location }, { token: i1.ErrorHandlerService }, { token: i1.DataManager }, { token: i5.MatDialog }, { token: i6.ActivatedRoute }, { token: i7.ChecksheetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
134
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormatViewComponent, selector: "app-checksheet-format-view", ngImport: i0, template: "<app-checksheet-format-form [disableInput]=\"false\"></app-checksheet-format-form>\n", styles: [""], dependencies: [{ kind: "component", type: i8.ChecksheetFormatFormComponent, selector: "app-checksheet-format-form", inputs: ["disableInput"] }] });
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatViewComponent, decorators: [{
|
|
137
|
+
type: Component,
|
|
138
|
+
args: [{ selector: 'app-checksheet-format-view', template: "<app-checksheet-format-form [disableInput]=\"false\"></app-checksheet-format-form>\n" }]
|
|
139
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.UntypedFormBuilder }, { type: i3.NgxSpinnerService }, { type: i1.AlertService }, { type: i4.Location }, { type: i1.ErrorHandlerService }, { type: i1.DataManager }, { type: i5.MatDialog }, { type: i6.ActivatedRoute }, { type: i7.ChecksheetService }] });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtYXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1mb3JtYXQvY2hlY2tzaGVldC1mb3JtYXQtdmlldy9jaGVja3NoZWV0LWZvcm1hdC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm1hdC9jaGVja3NoZWV0LWZvcm1hdC12aWV3L2NoZWNrc2hlZXQtZm9ybWF0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBR0wsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBWWxELE1BQU0sYUFBYSxHQUFRO0lBQ3pCLElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsT0FBTyxFQUFFLGNBQWM7S0FDeEI7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUscUJBQXFCO0tBQ2hDO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsUUFBUSxFQUFFLCtCQUErQjtLQUMxQztJQUNELFNBQVMsRUFBRTtRQUNULFFBQVEsRUFBRSxvQkFBb0I7S0FDL0I7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLDZCQUE2QjtJQU85QjtJQUNBO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWZWLHdCQUF3QixDQUFvQjtJQUM1QyxVQUFVLENBQU07SUFDaEIsY0FBYyxDQUFN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QUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCLCtCQUErQixFQUMvQixTQUFTLENBQ1YsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUMzQixLQUFLLEVBQ0wsc0NBQXNDLENBQ3ZDLENBQUM7WUFDSixDQUFDO29CQUFTLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCLGdDQUFnQyxFQUNoQyxTQUFTLENBQ1YsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQWpJVSw2QkFBNkI7NEZBQTdCLDZCQUE2QixrRUMxQzFDLHNGQUNBOzs0RkR5Q2EsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0ZVZhbGlkYXRvciB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwaW5uZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uUG9wdXAsXG4gIEFjdGlvblBvcHVwQ29tcG9uZW50LFxuICBBbGVydFNlcnZpY2UsXG4gIERhdGFNYW5hZ2VyLFxuICBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgRXJyb3JIYW5kbGVyU2VydmljZVxufSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBDaGVja3NoZWV0U2VydmljZSB9IGZyb20gJy4uLy4uL2NoZWNrc2hlZXQuc2VydmljZSc7XG5cbmNvbnN0IGVycm9yTWVzc2FnZXM6IGFueSA9IHtcbiAgZGF0ZToge1xuICAgIHJlcXVpcmVkOiAnRGF0ZSBpcyByZXF1aXJlZCcsXG4gICAgaW52YWxpZDogJ0ludmFsaWQgZGF0ZSdcbiAgfSxcbiAgbW9kZWxfaWQ6IHtcbiAgICByZXF1aXJlZDogJ1ZlaGljbGUgaXMgcmVxdWlyZWQnXG4gIH0sXG4gIGNoZWNrc2hlZXRfZm9ybWF0X2lkOiB7XG4gICAgcmVxdWlyZWQ6ICdDaGVja3NoZWV0IEZvcm1hdCBpcyByZXF1aXJlZCdcbiAgfSxcbiAgc3RhdHVzX2lkOiB7XG4gICAgcmVxdWlyZWQ6ICdTdGF0dXMgaXMgcmVxdWlyZWQnXG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVja3NoZWV0LWZvcm1hdC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybWF0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja3NoZWV0LWZvcm1hdC12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tzaGVldEZvcm1hdFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjaGVja3NoZWV0U3VibWlzc2lvbkZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBzdWJtaXNzaW9uOiBhbnk7XG4gIHNlbGVjdGVkRm9ybWF0OiBhbnk7XG4gIHN1Ym1pc3Npb25JZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlcjogRGF0YU1hbmFnZXIsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNoZWNrc2hlZXRTdWJtaXNzaW9uU2VydmljZTogQ2hlY2tzaGVldFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJtaXNzaW9uSWQgPSBwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snc3VibWlzc2lvbklkJ10pO1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICAgICAgd2l0aDogJ2Zvcm1hdC5xdWVzdGlvbnMudHlwZSxmb3JtYXQucXVlc3Rpb25zLmFuc3dlcnMnXG4gICAgICB9O1xuICAgICAgdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvblNlcnZpY2VcbiAgICAgICAgLnNob3codGhpcy5zdWJtaXNzaW9uSWQsIHBhcmFtcylcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHJlc3BvbnNlPy5pdGVtO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvcm1hdCA9IHRoaXMuc3VibWlzc2lvbj8uZm9ybWF0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuY2hlY2tzaGVldFN1Ym1pc3Npb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogWycnXSxcbiAgICAgIGRhdGU6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBEYXRlVmFsaWRhdG9yKCldKV0sXG4gICAgICByZXZpZXdlcl9pZDogWycnXSxcbiAgICAgIG1vZGVsX2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbW9kZWw6IFsndmVoaWNsZSddLFxuICAgICAgc3RhdHVzX2lkOiBbJyddLFxuICAgICAgY29tbWVudHM6IFsnJ10sXG4gICAgICBjaGVja3NoZWV0X2Zvcm1hdF9pZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0pO1xuICB9XG5cbiAgcmVkaXJlY3RCYWNrKCkge1xuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgLyoqTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgaXNGaWVsZFZhbGlkKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5pc0ZpZWxkVmFsaWQoXG4gICAgICBmaWVsZCxcbiAgICAgIHRoaXMuY2hlY2tzaGVldFN1Ym1pc3Npb25Gb3JtXG4gICAgKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoXG4gICAgICBmaWVsZCxcbiAgICAgIHRoaXMuY2hlY2tzaGVldFN1Ym1pc3Npb25Gb3JtLFxuICAgICAgZXJyb3JNZXNzYWdlc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tzaGVldFN1Ym1pc3Npb25Gb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvbkZvcm0udmFsdWU7XG4gICAgICBjb25zdCBzdWJtaXNzaW9uID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmRhdGFNYW5hZ2VyLkdFVChcbiAgICAgICAgICBgYXBpL2NoZWNrc2hlZXRzLyR7dGhpcy5zdWJtaXNzaW9uLmlkfWBcbiAgICAgICAgKVxuICAgICAgKS5pdGVtO1xuICAgICAgLy9TdWJtaXNzaW9uIFZhbGlkYXRpb24gZm9yIE1TUVlOXG4gICAgICBsZXQgdmFsaWRTdWJtaXNzaW9uID0gdHJ1ZTtcbiAgICAgICgoc3VibWlzc2lvbi5mb3JtYXQucXVlc3Rpb25zIGFzIFtdKSB8fCBbXSlcbiAgICAgICAgLmZpbHRlcigocXVlc3Rpb246IGFueSkgPT4gcXVlc3Rpb24udHlwZV9pZCA9PT0gNylcbiAgICAgICAgLmZvckVhY2goKHF1ZXN0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBxdWVzdGlvbj8uc3VibWl0dGVkX2Fuc3dlcnMgPT0gbnVsbCB8fFxuICAgICAgICAgICAgKChxdWVzdGlvbj8uYW5zd2VycyBhcyBbXSkgfHwgW10pLmxlbmd0aCA+XG4gICAgICAgICAgICAgICgocXVlc3Rpb24/LnN1Ym1pdHRlZF9hbnN3ZXI/Lm1zcV9hbnN3ZXIgYXMgW10pIHx8IFtdKS5sZW5ndGhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KFxuICAgICAgICAgICAgICBgQW5zd2VyIGFsbCB0aGUgcmVxdWlyZWQgWWVzL05vIFF1ZXN0aW9uYCxcbiAgICAgICAgICAgICAgJ3dhcm4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFsaWRTdWJtaXNzaW9uID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGlmICghdmFsaWRTdWJtaXNzaW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuZGF0YU1hbmFnZXIuUFVUKFxuICAgICAgICAgIGBhcGkvY2hlY2tzaGVldHMvJHttb2RlbC5pZH1gLFxuICAgICAgICAgIG1vZGVsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KFxuICAgICAgICAgICdDaGVja3NoZWV0IHNhdmVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICAgICAgJ3N1Y2Nlc3MnXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAnVW5hYmxlIHRvIHNhdmUgQ2hlY2tzaGVldCwgdHJ5IGxhdGVyJ1xuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TYXZlZCgpIHtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcbiAgICAgICdDaGVja3NoZWV0IHNhdmVkIHN1Y2Nlc3NmdWxseSEnLFxuICAgICAgJ3N1Y2Nlc3MnXG4gICAgKTtcbiAgICB0aGlzLnJlZGlyZWN0QmFjaygpO1xuICB9XG59XG4iLCI8YXBwLWNoZWNrc2hlZXQtZm9ybWF0LWZvcm0gW2Rpc2FibGVJbnB1dF09XCJmYWxzZVwiPjwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWZvcm0+XG4iXX0=
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-techlify-core";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/router";
|
|
8
|
+
import * as i5 from "../checksheet-format.service";
|
|
9
|
+
import * as i6 from "@angular/flex-layout/flex";
|
|
10
|
+
import * as i7 from "@angular/material/button";
|
|
11
|
+
import * as i8 from "@angular/material/card";
|
|
12
|
+
import * as i9 from "@angular/material/form-field";
|
|
13
|
+
import * as i10 from "@angular/material/icon";
|
|
14
|
+
import * as i11 from "@angular/material/input";
|
|
15
|
+
import * as i12 from "@angular/material/progress-bar";
|
|
16
|
+
import * as i13 from "../checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component";
|
|
17
|
+
import * as i14 from "../checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component";
|
|
18
|
+
import * as i15 from "../checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component";
|
|
19
|
+
import * as i16 from "../checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component";
|
|
20
|
+
import * as i17 from "../checksheet-question-list/checksheet-question-list.component";
|
|
21
|
+
const errorMessages = {
|
|
22
|
+
title: {
|
|
23
|
+
required: 'The title is required.'
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export class ChecksheetFormatFormComponent {
|
|
27
|
+
formValidatorService;
|
|
28
|
+
fb;
|
|
29
|
+
alertService;
|
|
30
|
+
location;
|
|
31
|
+
route;
|
|
32
|
+
checksheetFormatService;
|
|
33
|
+
checksheetForm;
|
|
34
|
+
updateMode;
|
|
35
|
+
checksheetFormat;
|
|
36
|
+
isSaving = false;
|
|
37
|
+
id;
|
|
38
|
+
disableInput;
|
|
39
|
+
isLoading = false;
|
|
40
|
+
isShowChecksheetInfo = false;
|
|
41
|
+
constructor(formValidatorService, fb, alertService, location, route, checksheetFormatService) {
|
|
42
|
+
this.formValidatorService = formValidatorService;
|
|
43
|
+
this.fb = fb;
|
|
44
|
+
this.alertService = alertService;
|
|
45
|
+
this.location = location;
|
|
46
|
+
this.route = route;
|
|
47
|
+
this.checksheetFormatService = checksheetFormatService;
|
|
48
|
+
this.id = parseInt(this.route.snapshot.params?.['checksheetId']);
|
|
49
|
+
this.createForm();
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
if (this.disableInput) {
|
|
53
|
+
this.checksheetForm.disable();
|
|
54
|
+
}
|
|
55
|
+
if (this.id) {
|
|
56
|
+
this.updateMode = true;
|
|
57
|
+
this.loadChecksheetFormat();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a check-sheet form.
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
createForm() {
|
|
65
|
+
this.checksheetForm = this.fb.group({
|
|
66
|
+
id: [''],
|
|
67
|
+
title: ['', Validators.required]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**Method to evaluate form fields*/
|
|
71
|
+
isFieldValid(field) {
|
|
72
|
+
return this.formValidatorService.isFieldValid(field, this.checksheetForm);
|
|
73
|
+
}
|
|
74
|
+
/**Method to find error in form fields*/
|
|
75
|
+
getErrorMessage(field) {
|
|
76
|
+
return this.formValidatorService.getErrorMessage(field, this.checksheetForm, errorMessages);
|
|
77
|
+
}
|
|
78
|
+
submit() {
|
|
79
|
+
this.checksheetForm.markAllAsTouched();
|
|
80
|
+
if (this.checksheetForm.invalid) {
|
|
81
|
+
this.alertService.addAlert('Please check the form for errors.', 'error');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const model = { ...this.checksheetForm.value };
|
|
85
|
+
this.isSaving = true;
|
|
86
|
+
let request = this.updateMode
|
|
87
|
+
? this.checksheetFormatService.update(model)
|
|
88
|
+
: this.checksheetFormatService.store(model);
|
|
89
|
+
request.subscribe({
|
|
90
|
+
next: (result) => {
|
|
91
|
+
this.isSaving = false;
|
|
92
|
+
this.checksheetFormat = result?.item;
|
|
93
|
+
this.checksheetForm.patchValue({ ...this.checksheetFormat });
|
|
94
|
+
this.updateMode = true;
|
|
95
|
+
this.isShowChecksheetInfo = false;
|
|
96
|
+
this.alertService.addAlert('Checksheet format saved successfully', 'success');
|
|
97
|
+
},
|
|
98
|
+
error: () => {
|
|
99
|
+
this.isSaving = false;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
loadChecksheetFormat() {
|
|
104
|
+
this.isLoading = true;
|
|
105
|
+
const params = { with: 'questions.answers,questions.type,creator', withCount: 'submissions' };
|
|
106
|
+
const formatId = this.checksheetFormat ? this.checksheetFormat?.id : this.id;
|
|
107
|
+
if (!formatId) {
|
|
108
|
+
this.alertService.addAlert('Unable to load the checksheet format.', 'error');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.checksheetFormatService.show(formatId, params).subscribe({
|
|
112
|
+
next: (result) => {
|
|
113
|
+
this.isLoading = false;
|
|
114
|
+
this.checksheetForm.patchValue(result?.item);
|
|
115
|
+
this.checksheetFormat = result?.item;
|
|
116
|
+
},
|
|
117
|
+
error: () => {
|
|
118
|
+
this.isLoading = false;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
handleCancel() {
|
|
123
|
+
if (this.checksheetFormat) {
|
|
124
|
+
this.isShowChecksheetInfo = false;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.location.back();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.UntypedFormBuilder }, { token: i1.AlertService }, { token: i3.Location }, { token: i4.ActivatedRoute }, { token: i5.ChecksheetFormatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormatFormComponent, selector: "app-checksheet-format-form", inputs: { disableInput: "disableInput" }, ngImport: i0, template: "<div class=\"d-flex justify-content-start align-items-start gap-3 w-100\" *ngIf=\"!isLoading\">\n <div class=\"d-flex flex-column gap-3\" style=\"width: 80%\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined fs-1\">\n list_alt_check\n </span>\n <h2 class=\"mb-0\">{{ checksheetFormat ? 'Update' : 'Create' }} Checksheet Format</h2>\n </div>\n <span class=\"badge bg-secondary\" *ngIf=\"checksheetFormat?.questions\">\n {{ checksheetFormat?.questions?.length }} Questions\n </span>\n </mat-card-content>\n </mat-card>\n\n <app-checksheet-question-list class=\"w-100\" [(checksheet)]=\"checksheetFormat\" [disableInput]=\"disableInput\">\n </app-checksheet-question-list>\n </div>\n <div style=\"width: calc(20% - 1rem)\" class=\"d-flex flex-column gap-3\">\n <mat-card *ngIf=\"!checksheetFormat || isShowChecksheetInfo\">\n <mat-card-content>\n <h3>Checksheet Format Information</h3>\n <form [formGroup]=\"checksheetForm\" (submit)=\"submit()\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\">\n <mat-form-field>\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required/>\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{ getErrorMessage('title') }}\n </mat-error>\n </mat-form-field>\n\n <div class=\"my-2 d-flex justify-content-end align-items-center gap-1 flex-wrap\" *ngIf=\"!disableInput\">\n <button [disabled]=\"isSaving\" mat-raised-button type=\"submit\" color=\"primary\">\n Save\n </button>\n\n <app-checksheet-format-publish-button [checksheetFormat]=\"checksheetFormat\" *ngIf=\"updateMode\"\n (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-publish-button>\n\n <button [disabled]=\"isSaving\" mat-flat-button type=\"button\" (click)=\"handleCancel()\">\n Cancel\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"checksheetFormat && !isShowChecksheetInfo\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <h3 class=\"mb-0\">Information</h3>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-icon class=\"cursor-pointer\" (click)=\"isShowChecksheetInfo = true\">edit</mat-icon>\n <app-checksheet-format-delete-button [checksheetFormat]=\"checksheetFormat\" (deleted)=\"loadChecksheetFormat()\">\n </app-checksheet-format-delete-button>\n\n <app-checksheet-format-copy-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-copy-button>\n\n <app-checksheet-format-unpublish-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-unpublish-button>\n\n <app-checksheet-format-publish-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\" viewMode=\"icon\">\n </app-checksheet-format-publish-button>\n </div>\n </div>\n </mat-card-content>\n <mat-card-content class=\"mt-3 d-flex flex-column justify-content-center align-items-center gap-2\">\n <h2 class=\"mb-0\">{{ checksheetFormat?.title }}</h2>\n <div class=\"d-flex flex-wrap justify-content-center align-items-center gap-2\">\n <span class=\"badge bg-secondary\">{{ checksheetFormat?.submissions_count }} Checksheet Submissions</span>\n <span class=\"badge\" [class.bg-success]=\"checksheetFormat?.is_published\"\n [class.bg-danger]=\"!checksheetFormat?.is_published\">\n {{ checksheetFormat?.is_published ? 'Published' : 'Unpublished' }}\n </span>\n </div>\n <small class=\"text-secondary\">\n By {{ checksheetFormat?.creator?.name }} on {{ checksheetFormat?.created_at| date }}\n </small>\n </mat-card-content>\n </mat-card>\n\n <app-note-list *ngIf=\"checksheetFormat\" viewMode=\"timeline\" [relatedModelId]=\"checksheetFormat?.id\"\n modelType=\"ChecksheetFormat\"></app-note-list>\n </div>\n</div>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i1.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: i13.ChecksheetFormatCopyButtonComponent, selector: "app-checksheet-format-copy-button", inputs: ["checksheetFormat"], outputs: ["changed"] }, { kind: "component", type: i14.ChecksheetFormatDeleteButtonComponent, selector: "app-checksheet-format-delete-button", inputs: ["checksheetFormat"], outputs: ["deleted"] }, { kind: "component", type: i15.ChecksheetFormatUnpublishButtonComponent, selector: "app-checksheet-format-unpublish-button", inputs: ["checksheetFormat"], outputs: ["changed"] }, { kind: "component", type: i16.ChecksheetFormatPublishButtonComponent, selector: "app-checksheet-format-publish-button", inputs: ["checksheetFormat", "viewMode"], outputs: ["changed"] }, { kind: "component", type: i17.ChecksheetQuestionListComponent, selector: "app-checksheet-question-list", inputs: ["checksheet", "submission", "disableInput"], outputs: ["checksheetChange"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
132
|
+
}
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatFormComponent, decorators: [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'app-checksheet-format-form', template: "<div class=\"d-flex justify-content-start align-items-start gap-3 w-100\" *ngIf=\"!isLoading\">\n <div class=\"d-flex flex-column gap-3\" style=\"width: 80%\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined fs-1\">\n list_alt_check\n </span>\n <h2 class=\"mb-0\">{{ checksheetFormat ? 'Update' : 'Create' }} Checksheet Format</h2>\n </div>\n <span class=\"badge bg-secondary\" *ngIf=\"checksheetFormat?.questions\">\n {{ checksheetFormat?.questions?.length }} Questions\n </span>\n </mat-card-content>\n </mat-card>\n\n <app-checksheet-question-list class=\"w-100\" [(checksheet)]=\"checksheetFormat\" [disableInput]=\"disableInput\">\n </app-checksheet-question-list>\n </div>\n <div style=\"width: calc(20% - 1rem)\" class=\"d-flex flex-column gap-3\">\n <mat-card *ngIf=\"!checksheetFormat || isShowChecksheetInfo\">\n <mat-card-content>\n <h3>Checksheet Format Information</h3>\n <form [formGroup]=\"checksheetForm\" (submit)=\"submit()\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\">\n <mat-form-field>\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required/>\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{ getErrorMessage('title') }}\n </mat-error>\n </mat-form-field>\n\n <div class=\"my-2 d-flex justify-content-end align-items-center gap-1 flex-wrap\" *ngIf=\"!disableInput\">\n <button [disabled]=\"isSaving\" mat-raised-button type=\"submit\" color=\"primary\">\n Save\n </button>\n\n <app-checksheet-format-publish-button [checksheetFormat]=\"checksheetFormat\" *ngIf=\"updateMode\"\n (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-publish-button>\n\n <button [disabled]=\"isSaving\" mat-flat-button type=\"button\" (click)=\"handleCancel()\">\n Cancel\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"checksheetFormat && !isShowChecksheetInfo\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-2\">\n <h3 class=\"mb-0\">Information</h3>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <mat-icon class=\"cursor-pointer\" (click)=\"isShowChecksheetInfo = true\">edit</mat-icon>\n <app-checksheet-format-delete-button [checksheetFormat]=\"checksheetFormat\" (deleted)=\"loadChecksheetFormat()\">\n </app-checksheet-format-delete-button>\n\n <app-checksheet-format-copy-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-copy-button>\n\n <app-checksheet-format-unpublish-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\">\n </app-checksheet-format-unpublish-button>\n\n <app-checksheet-format-publish-button [checksheetFormat]=\"checksheetFormat\" (changed)=\"loadChecksheetFormat()\" viewMode=\"icon\">\n </app-checksheet-format-publish-button>\n </div>\n </div>\n </mat-card-content>\n <mat-card-content class=\"mt-3 d-flex flex-column justify-content-center align-items-center gap-2\">\n <h2 class=\"mb-0\">{{ checksheetFormat?.title }}</h2>\n <div class=\"d-flex flex-wrap justify-content-center align-items-center gap-2\">\n <span class=\"badge bg-secondary\">{{ checksheetFormat?.submissions_count }} Checksheet Submissions</span>\n <span class=\"badge\" [class.bg-success]=\"checksheetFormat?.is_published\"\n [class.bg-danger]=\"!checksheetFormat?.is_published\">\n {{ checksheetFormat?.is_published ? 'Published' : 'Unpublished' }}\n </span>\n </div>\n <small class=\"text-secondary\">\n By {{ checksheetFormat?.creator?.name }} on {{ checksheetFormat?.created_at| date }}\n </small>\n </mat-card-content>\n </mat-card>\n\n <app-note-list *ngIf=\"checksheetFormat\" viewMode=\"timeline\" [relatedModelId]=\"checksheetFormat?.id\"\n modelType=\"ChecksheetFormat\"></app-note-list>\n </div>\n</div>\n\n<mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n" }]
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.UntypedFormBuilder }, { type: i1.AlertService }, { type: i3.Location }, { type: i4.ActivatedRoute }, { type: i5.ChecksheetFormatService }], propDecorators: { disableInput: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtYXQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1mb3JtYXQtZm9ybS9jaGVja3NoZWV0LWZvcm1hdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm1hdC1mb3JtL2NoZWNrc2hlZXQtZm9ybWF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9oRixNQUFNLGFBQWEsR0FBUTtJQUN6QixLQUFLLEVBQUU7UUFDTCxRQUFRLEVBQUUsd0JBQXdCO0tBQ25DO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyw2QkFBNkI7SUFZOUI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBaEJWLGNBQWMsQ0FBb0I7SUFDbEMsVUFBVSxDQUFXO0lBQ3JCLGdCQUFnQixDQUFNO0lBQ3RCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsRUFBRSxDQUFVO0lBRUgsWUFBWSxDQUFXO0lBQ2hDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0Isb0JBQW9CLEdBQVksS0FBSyxDQUFDO0lBRXRDLFlBQ1Usb0JBQTBDLEVBQzFDLEVBQXNCLEVBQ3RCLFlBQTBCLEVBQzNCLFFBQWtCLEVBQ2pCLEtBQXFCLEVBQ3JCLHVCQUFnRDtRQUxoRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLE9BQUUsR0FB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Q0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzt3R0FoSFUsNkJBQTZCOzRGQUE3Qiw2QkFBNkIsNEdDbkIxQyxta0pBeUZBOzs0RkR0RWEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0QjsrT0FXN0IsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FsZXJ0U2VydmljZSwgRm9ybVZhbGlkYXRvclNlcnZpY2V9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGVja3NoZWV0Rm9ybWF0U2VydmljZX0gZnJvbSAnLi4vY2hlY2tzaGVldC1mb3JtYXQuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gIHRpdGxlOiB7XG4gICAgcmVxdWlyZWQ6ICdUaGUgdGl0bGUgaXMgcmVxdWlyZWQuJ1xuICB9XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2tzaGVldC1mb3JtYXQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja3NoZWV0LWZvcm1hdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tzaGVldC1mb3JtYXQtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrc2hlZXRGb3JtYXRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2hlY2tzaGVldEZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuICB1cGRhdGVNb2RlITogYm9vbGVhbjtcbiAgY2hlY2tzaGVldEZvcm1hdDogYW55O1xuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpZCE6IG51bWJlcjtcblxuICBASW5wdXQoKSBkaXNhYmxlSW5wdXQhOiBib29sZWFuO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTaG93Q2hlY2tzaGVldEluZm86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY2hlY2tzaGVldEZvcm1hdFNlcnZpY2U6IENoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWQgPSBwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcz8uWydjaGVja3NoZWV0SWQnXSk7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlSW5wdXQpIHtcbiAgICAgIHRoaXMuY2hlY2tzaGVldEZvcm0uZGlzYWJsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pZCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZENoZWNrc2hlZXRGb3JtYXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY2hlY2stc2hlZXQgZm9ybS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmNoZWNrc2hlZXRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogWycnXSxcbiAgICAgIHRpdGxlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG4gIH1cblxuICAvKipNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgdGhpcy5jaGVja3NoZWV0Rm9ybSk7XG4gIH1cblxuICAvKipNZXRob2QgdG8gZmluZCBlcnJvciBpbiBmb3JtIGZpZWxkcyovXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKFxuICAgICAgZmllbGQsXG4gICAgICB0aGlzLmNoZWNrc2hlZXRGb3JtLFxuICAgICAgZXJyb3JNZXNzYWdlc1xuICAgICk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5jaGVja3NoZWV0Rm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMuY2hlY2tzaGVldEZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1BsZWFzZSBjaGVjayB0aGUgZm9ybSBmb3IgZXJyb3JzLicsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0geyAuLi50aGlzLmNoZWNrc2hlZXRGb3JtLnZhbHVlIH07XG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMudXBkYXRlTW9kZVxuICAgICAgPyB0aGlzLmNoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlLnVwZGF0ZShtb2RlbClcbiAgICAgIDogdGhpcy5jaGVja3NoZWV0Rm9ybWF0U2VydmljZS5zdG9yZShtb2RlbCk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNoZWNrc2hlZXRGb3JtYXQgPSByZXN1bHQ/Lml0ZW07XG4gICAgICAgIHRoaXMuY2hlY2tzaGVldEZvcm0ucGF0Y2hWYWx1ZSh7IC4uLnRoaXMuY2hlY2tzaGVldEZvcm1hdCB9KTtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1Nob3dDaGVja3NoZWV0SW5mbyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnQ2hlY2tzaGVldCBmb3JtYXQgc2F2ZWQgc3VjY2Vzc2Z1bGx5JywgJ3N1Y2Nlc3MnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2FkQ2hlY2tzaGVldEZvcm1hdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7IHdpdGg6ICdxdWVzdGlvbnMuYW5zd2VycyxxdWVzdGlvbnMudHlwZSxjcmVhdG9yJywgd2l0aENvdW50OiAnc3VibWlzc2lvbnMnIH07XG4gICAgY29uc3QgZm9ybWF0SWQgPSB0aGlzLmNoZWNrc2hlZXRGb3JtYXQgPyB0aGlzLmNoZWNrc2hlZXRGb3JtYXQ/LmlkIDogdGhpcy5pZDtcbiAgICBpZiAoIWZvcm1hdElkKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnVW5hYmxlIHRvIGxvYWQgdGhlIGNoZWNrc2hlZXQgZm9ybWF0LicsICdlcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlLnNob3coZm9ybWF0SWQsIHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNoZWNrc2hlZXRGb3JtLnBhdGNoVmFsdWUocmVzdWx0Py5pdGVtKTtcbiAgICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybWF0ID0gcmVzdWx0Py5pdGVtO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2hlY2tzaGVldEZvcm1hdCkge1xuICAgICAgdGhpcy5pc1Nob3dDaGVja3NoZWV0SW5mbyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0zIHctMTAwXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiBzdHlsZT1cIndpZHRoOiA4MCVcIj5cbiAgICA8bWF0LWNhcmQ+XG4gICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZzLTFcIj5cbiAgICAgICAgICAgIGxpc3RfYWx0X2NoZWNrXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxoMiBjbGFzcz1cIm1iLTBcIj57eyBjaGVja3NoZWV0Rm9ybWF0ID8gJ1VwZGF0ZScgOiAnQ3JlYXRlJyB9fSBDaGVja3NoZWV0IEZvcm1hdDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLXNlY29uZGFyeVwiICpuZ0lmPVwiY2hlY2tzaGVldEZvcm1hdD8ucXVlc3Rpb25zXCI+XG4gICAgICAgICAge3sgY2hlY2tzaGVldEZvcm1hdD8ucXVlc3Rpb25zPy5sZW5ndGggfX0gUXVlc3Rpb25zXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuXG4gICAgPGFwcC1jaGVja3NoZWV0LXF1ZXN0aW9uLWxpc3QgY2xhc3M9XCJ3LTEwMFwiIFsoY2hlY2tzaGVldCldPVwiY2hlY2tzaGVldEZvcm1hdFwiIFtkaXNhYmxlSW5wdXRdPVwiZGlzYWJsZUlucHV0XCI+XG4gICAgPC9hcHAtY2hlY2tzaGVldC1xdWVzdGlvbi1saXN0PlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIndpZHRoOiBjYWxjKDIwJSAtIDFyZW0pXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cbiAgICA8bWF0LWNhcmQgKm5nSWY9XCIhY2hlY2tzaGVldEZvcm1hdCB8fCBpc1Nob3dDaGVja3NoZWV0SW5mb1wiPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxoMz5DaGVja3NoZWV0IEZvcm1hdCBJbmZvcm1hdGlvbjwvaDM+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2hlY2tzaGVldEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjAuMjVyZW1cIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiBwbGFjZWhvbGRlcj1cIlRpdGxlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWQvPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgndGl0bGUnKVwiPlxuICAgICAgICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ3RpdGxlJykgfX1cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZmxleC13cmFwXCIgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtcHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiICpuZ0lmPVwidXBkYXRlTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZUNhbmNlbCgpXCI+XG4gICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuXG4gICAgPG1hdC1jYXJkICpuZ0lmPVwiY2hlY2tzaGVldEZvcm1hdCAmJiAhaXNTaG93Q2hlY2tzaGVldEluZm9cIj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cIm1iLTBcIj5JbmZvcm1hdGlvbjwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiaXNTaG93Q2hlY2tzaGVldEluZm8gPSB0cnVlXCI+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8YXBwLWNoZWNrc2hlZXQtZm9ybWF0LWRlbGV0ZS1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChkZWxldGVkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWRlbGV0ZS1idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtY29weS1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWNvcHktYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXBwLWNoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtcHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIiB2aWV3TW9kZT1cImljb25cIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwibXQtMyBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwibWItMFwiPnt7IGNoZWNrc2hlZXRGb3JtYXQ/LnRpdGxlIH19PC9oMj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLXNlY29uZGFyeVwiPnt7IGNoZWNrc2hlZXRGb3JtYXQ/LnN1Ym1pc3Npb25zX2NvdW50IH19IENoZWNrc2hlZXQgU3VibWlzc2lvbnM8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiIFtjbGFzcy5iZy1zdWNjZXNzXT1cImNoZWNrc2hlZXRGb3JtYXQ/LmlzX3B1Ymxpc2hlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmJnLWRhbmdlcl09XCIhY2hlY2tzaGVldEZvcm1hdD8uaXNfcHVibGlzaGVkXCI+XG4gICAgICAgICAgICB7eyBjaGVja3NoZWV0Rm9ybWF0Py5pc19wdWJsaXNoZWQgPyAnUHVibGlzaGVkJyA6ICdVbnB1Ymxpc2hlZCcgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgIEJ5IHt7IGNoZWNrc2hlZXRGb3JtYXQ/LmNyZWF0b3I/Lm5hbWUgfX0gb24ge3sgY2hlY2tzaGVldEZvcm1hdD8uY3JlYXRlZF9hdHwgZGF0ZSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8YXBwLW5vdGUtbGlzdCAqbmdJZj1cImNoZWNrc2hlZXRGb3JtYXRcIiB2aWV3TW9kZT1cInRpbWVsaW5lXCIgW3JlbGF0ZWRNb2RlbElkXT1cImNoZWNrc2hlZXRGb3JtYXQ/LmlkXCJcbiAgICAgICAgICAgICAgICAgICBtb2RlbFR5cGU9XCJDaGVja3NoZWV0Rm9ybWF0XCI+PC9hcHAtbm90ZS1saXN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuIl19
|