ngx-techlify-checksheet 18.0.0 → 18.1.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 +136 -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 +570 -359
- 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 +45 -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,136 @@
|
|
|
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 "ngx-spinner";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/material/dialog";
|
|
9
|
+
import * as i6 from "@angular/router";
|
|
10
|
+
import * as i7 from "../checksheet-format.service";
|
|
11
|
+
import * as i8 from "@angular/flex-layout/flex";
|
|
12
|
+
import * as i9 from "@angular/material/button";
|
|
13
|
+
import * as i10 from "@angular/material/card";
|
|
14
|
+
import * as i11 from "@angular/material/form-field";
|
|
15
|
+
import * as i12 from "@angular/material/icon";
|
|
16
|
+
import * as i13 from "@angular/material/input";
|
|
17
|
+
import * as i14 from "@angular/material/progress-bar";
|
|
18
|
+
import * as i15 from "../checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component";
|
|
19
|
+
import * as i16 from "../checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component";
|
|
20
|
+
import * as i17 from "../checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component";
|
|
21
|
+
import * as i18 from "../checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component";
|
|
22
|
+
import * as i19 from "../checksheet-question-list/checksheet-question-list.component";
|
|
23
|
+
const errorMessages = {
|
|
24
|
+
title: {
|
|
25
|
+
required: 'The title is required.'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export class ChecksheetFormatFormComponent {
|
|
29
|
+
formValidatorService;
|
|
30
|
+
fb;
|
|
31
|
+
spinnerService;
|
|
32
|
+
alertService;
|
|
33
|
+
location;
|
|
34
|
+
errorHandler;
|
|
35
|
+
dataManager;
|
|
36
|
+
dialog;
|
|
37
|
+
route;
|
|
38
|
+
checksheetFormatService;
|
|
39
|
+
checksheetForm;
|
|
40
|
+
updateMode;
|
|
41
|
+
checksheetFormat;
|
|
42
|
+
isSaving = false;
|
|
43
|
+
id;
|
|
44
|
+
disableInput;
|
|
45
|
+
isLoading = false;
|
|
46
|
+
showChecksheetInfo = false;
|
|
47
|
+
constructor(formValidatorService, fb, spinnerService, alertService, location, errorHandler, dataManager, dialog, route, checksheetFormatService) {
|
|
48
|
+
this.formValidatorService = formValidatorService;
|
|
49
|
+
this.fb = fb;
|
|
50
|
+
this.spinnerService = spinnerService;
|
|
51
|
+
this.alertService = alertService;
|
|
52
|
+
this.location = location;
|
|
53
|
+
this.errorHandler = errorHandler;
|
|
54
|
+
this.dataManager = dataManager;
|
|
55
|
+
this.dialog = dialog;
|
|
56
|
+
this.route = route;
|
|
57
|
+
this.checksheetFormatService = checksheetFormatService;
|
|
58
|
+
this.id = parseInt(this.route.snapshot.params?.['checksheetId']);
|
|
59
|
+
this.createForm();
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
if (this.disableInput) {
|
|
63
|
+
this.checksheetForm.disable();
|
|
64
|
+
}
|
|
65
|
+
if (this.id) {
|
|
66
|
+
this.updateMode = true;
|
|
67
|
+
this.loadChecksheetFormat();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a check-sheet form.
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
createForm() {
|
|
75
|
+
this.checksheetForm = this.fb.group({
|
|
76
|
+
id: [''],
|
|
77
|
+
title: ['', Validators.required]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**Method to evaluate form fields*/
|
|
81
|
+
isFieldValid(field) {
|
|
82
|
+
return this.formValidatorService.isFieldValid(field, this.checksheetForm);
|
|
83
|
+
}
|
|
84
|
+
/**Method to find error in form fields*/
|
|
85
|
+
getErrorMessage(field) {
|
|
86
|
+
return this.formValidatorService.getErrorMessage(field, this.checksheetForm, errorMessages);
|
|
87
|
+
}
|
|
88
|
+
submit() {
|
|
89
|
+
this.checksheetForm.markAllAsTouched();
|
|
90
|
+
if (this.checksheetForm.invalid) {
|
|
91
|
+
this.alertService.addAlert('Please check the form for errors.', 'error');
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const model = { ...this.checksheetForm.value };
|
|
95
|
+
this.isSaving = true;
|
|
96
|
+
let request = this.updateMode
|
|
97
|
+
? this.checksheetFormatService.update(model)
|
|
98
|
+
: this.checksheetFormatService.store(model);
|
|
99
|
+
request.subscribe({
|
|
100
|
+
next: (result) => {
|
|
101
|
+
this.isSaving = false;
|
|
102
|
+
this.checksheetFormat = result?.item;
|
|
103
|
+
this.checksheetForm.patchValue({ ...this.checksheetFormat });
|
|
104
|
+
this.updateMode = true;
|
|
105
|
+
this.showChecksheetInfo = false;
|
|
106
|
+
this.alertService.addAlert('Checksheet format saved successfully', 'success');
|
|
107
|
+
},
|
|
108
|
+
error: () => {
|
|
109
|
+
this.isSaving = false;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
loadChecksheetFormat() {
|
|
114
|
+
this.isLoading = true;
|
|
115
|
+
const params = { with: 'questions.answers,questions.type' };
|
|
116
|
+
this.checksheetFormatService.show(this.id, params).subscribe({
|
|
117
|
+
next: (result) => {
|
|
118
|
+
this.isLoading = false;
|
|
119
|
+
this.checksheetForm.patchValue(result?.item);
|
|
120
|
+
this.checksheetFormat = result?.item;
|
|
121
|
+
},
|
|
122
|
+
error: () => {
|
|
123
|
+
this.isLoading = false;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatFormComponent, 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.ChecksheetFormatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
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 || showChecksheetInfo\">\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\" fxLayout=\"row\" fxLayoutGap=\"15px\" fxLayoutAlign=\"end\" *ngIf=\"!disableInput\">\n <button [disabled]=\"isSaving\" mat-flat-button type=\"button\" (click)=\"showChecksheetInfo = false\">\n Cancel\n </button>\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 </div>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"checksheetFormat && !showChecksheetInfo\">\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)=\"showChecksheetInfo = 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 <span class=\"badge bg-secondary\">{{ checksheetFormat?.submissions_count }} Checksheet Submissions</span>\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: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.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: i8.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: "directive", type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i13.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: i14.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: i15.ChecksheetFormatCopyButtonComponent, selector: "app-checksheet-format-copy-button", inputs: ["checksheetFormat"], outputs: ["changed"] }, { kind: "component", type: i16.ChecksheetFormatDeleteButtonComponent, selector: "app-checksheet-format-delete-button", inputs: ["checksheetFormat"], outputs: ["deleted"] }, { kind: "component", type: i17.ChecksheetFormatUnpublishButtonComponent, selector: "app-checksheet-format-unpublish-button", inputs: ["checksheetFormat"], outputs: ["changed"] }, { kind: "component", type: i18.ChecksheetFormatPublishButtonComponent, selector: "app-checksheet-format-publish-button", inputs: ["checksheetFormat", "viewMode"], outputs: ["changed"] }, { kind: "component", type: i19.ChecksheetQuestionListComponent, selector: "app-checksheet-question-list", inputs: ["checksheet", "submission", "disableInput"], outputs: ["checksheetChange"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormatFormComponent, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
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 || showChecksheetInfo\">\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\" fxLayout=\"row\" fxLayoutGap=\"15px\" fxLayoutAlign=\"end\" *ngIf=\"!disableInput\">\n <button [disabled]=\"isSaving\" mat-flat-button type=\"button\" (click)=\"showChecksheetInfo = false\">\n Cancel\n </button>\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 </div>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"checksheetFormat && !showChecksheetInfo\">\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)=\"showChecksheetInfo = 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 <span class=\"badge bg-secondary\">{{ checksheetFormat?.submissions_count }} Checksheet Submissions</span>\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" }]
|
|
133
|
+
}], 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.ChecksheetFormatService }], propDecorators: { disableInput: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtYXQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1mb3JtYXQtZm9ybS9jaGVja3NoZWV0LWZvcm1hdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm1hdC1mb3JtL2NoZWNrc2hlZXQtZm9ybWF0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUdMLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQnhCLE1BQU0sYUFBYSxHQUFRO0lBQ3pCLEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRSx3QkFBd0I7S0FDbkM7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLDZCQUE2QjtJQVk5QjtJQUNBO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXBCVixjQUFjLENBQW9CO0lBQ2xDLFVBQVUsQ0FBVztJQUNyQixnQkFBZ0IsQ0FBTTtJQUN0QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEVBQUUsQ0FBVTtJQUVILFlBQVksQ0FBVztJQUNoQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUVwQyxZQUNVLG9CQUEwQyxFQUMxQyxFQUFzQixFQUN0QixjQUFpQyxFQUNqQyxZQUEwQixFQUMzQixRQUFrQixFQUNqQixZQUFpQyxFQUNqQyxXQUF3QixFQUN4QixNQUFpQixF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QUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxzQ0FBc0MsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNoRixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBUSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0QsSUFBSSxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXZHVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qiw0R0NoQzFDLHV0SUFrRkE7OzRGRGxEYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNEJBQTRCO21XQVc3QixZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gJ25neC1zcGlubmVyJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQWN0aW9uUG9wdXBDb21wb25lbnQsXG4gIEFjdGlvblBvcHVwLFxuICBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICBEYXRhTWFuYWdlclxufSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ2hlY2tzaGVldEZvcm1hdFNlcnZpY2UgfSBmcm9tICcuLi9jaGVja3NoZWV0LWZvcm1hdC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuY29uc3QgZXJyb3JNZXNzYWdlczogYW55ID0ge1xuICB0aXRsZToge1xuICAgIHJlcXVpcmVkOiAnVGhlIHRpdGxlIGlzIHJlcXVpcmVkLidcbiAgfVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tzaGVldC1mb3JtYXQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrc2hlZXQtZm9ybWF0LWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja3NoZWV0Rm9ybWF0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNoZWNrc2hlZXRGb3JtITogVW50eXBlZEZvcm1Hcm91cDtcbiAgdXBkYXRlTW9kZSE6IGJvb2xlYW47XG4gIGNoZWNrc2hlZXRGb3JtYXQ6IGFueTtcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaWQhOiBudW1iZXI7XG5cbiAgQElucHV0KCkgZGlzYWJsZUlucHV0ITogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dDaGVja3NoZWV0SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlcjogRGF0YU1hbmFnZXIsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlOiBDaGVja3NoZWV0Rm9ybWF0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmlkID0gcGFyc2VJbnQodGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM/LlsnY2hlY2tzaGVldElkJ10pO1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUlucHV0KSB7XG4gICAgICB0aGlzLmNoZWNrc2hlZXRGb3JtLmRpc2FibGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgIHRoaXMudXBkYXRlTW9kZSA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRDaGVja3NoZWV0Rm9ybWF0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNoZWNrLXNoZWV0IGZvcm0uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgdGhpcy5jaGVja3NoZWV0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgaWQ6IFsnJ10sXG4gICAgICB0aXRsZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH0pO1xuICB9XG5cbiAgLyoqTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cbiAgaXNGaWVsZFZhbGlkKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5pc0ZpZWxkVmFsaWQoZmllbGQsIHRoaXMuY2hlY2tzaGVldEZvcm0pO1xuICB9XG5cbiAgLyoqTWV0aG9kIHRvIGZpbmQgZXJyb3IgaW4gZm9ybSBmaWVsZHMqL1xuICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmdldEVycm9yTWVzc2FnZShcbiAgICAgIGZpZWxkLFxuICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybSxcbiAgICAgIGVycm9yTWVzc2FnZXNcbiAgICApO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuY2hlY2tzaGVldEZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmNoZWNrc2hlZXRGb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdQbGVhc2UgY2hlY2sgdGhlIGZvcm0gZm9yIGVycm9ycy4nLCAnZXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udGhpcy5jaGVja3NoZWV0Rm9ybS52YWx1ZSB9O1xuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnVwZGF0ZU1vZGVcbiAgICAgID8gdGhpcy5jaGVja3NoZWV0Rm9ybWF0U2VydmljZS51cGRhdGUobW9kZWwpXG4gICAgICA6IHRoaXMuY2hlY2tzaGVldEZvcm1hdFNlcnZpY2Uuc3RvcmUobW9kZWwpO1xuXG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybWF0ID0gcmVzdWx0Py5pdGVtO1xuICAgICAgICB0aGlzLmNoZWNrc2hlZXRGb3JtLnBhdGNoVmFsdWUoeyAuLi50aGlzLmNoZWNrc2hlZXRGb3JtYXQgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0NoZWNrc2hlZXRJbmZvID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDaGVja3NoZWV0IGZvcm1hdCBzYXZlZCBzdWNjZXNzZnVsbHknLCAnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRDaGVja3NoZWV0Rm9ybWF0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgd2l0aDogJ3F1ZXN0aW9ucy5hbnN3ZXJzLHF1ZXN0aW9ucy50eXBlJyB9O1xuICAgIHRoaXMuY2hlY2tzaGVldEZvcm1hdFNlcnZpY2Uuc2hvdyh0aGlzLmlkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybS5wYXRjaFZhbHVlKHJlc3VsdD8uaXRlbSk7XG4gICAgICAgIHRoaXMuY2hlY2tzaGVldEZvcm1hdCA9IHJlc3VsdD8uaXRlbTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMyB3LTEwMFwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+XG4gICAgPG1hdC1jYXJkPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmcy0xXCI+XG4gICAgICAgICAgICBsaXN0X2FsdF9jaGVja1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJtYi0wXCI+e3sgY2hlY2tzaGVldEZvcm1hdCA/ICdVcGRhdGUnIDogJ0NyZWF0ZScgfX0gQ2hlY2tzaGVldCBGb3JtYXQ8L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1zZWNvbmRhcnlcIiAqbmdJZj1cImNoZWNrc2hlZXRGb3JtYXQ/LnF1ZXN0aW9uc1wiPlxuICAgICAgICAgIHt7IGNoZWNrc2hlZXRGb3JtYXQ/LnF1ZXN0aW9ucz8ubGVuZ3RoIH19IFF1ZXN0aW9uc1xuICAgICAgICA8L3NwYW4+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cblxuICAgIDxhcHAtY2hlY2tzaGVldC1xdWVzdGlvbi1saXN0IGNsYXNzPVwidy0xMDBcIiBbKGNoZWNrc2hlZXQpXT1cImNoZWNrc2hlZXRGb3JtYXRcIiBbZGlzYWJsZUlucHV0XT1cImRpc2FibGVJbnB1dFwiPlxuICAgIDwvYXBwLWNoZWNrc2hlZXQtcXVlc3Rpb24tbGlzdD5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJ3aWR0aDogY2FsYygyMCUgLSAxcmVtKVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XG4gICAgPG1hdC1jYXJkICpuZ0lmPVwiIWNoZWNrc2hlZXRGb3JtYXQgfHwgc2hvd0NoZWNrc2hlZXRJbmZvXCI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGgzPkNoZWNrc2hlZXQgRm9ybWF0IEluZm9ybWF0aW9uPC9oMz5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjaGVja3NoZWV0Rm9ybVwiIChzdWJtaXQpPVwic3VibWl0KClcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMC4yNXJlbVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiByZXF1aXJlZC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCd0aXRsZScpXCI+XG4gICAgICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgndGl0bGUnKSB9fVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjE1cHhcIiBmeExheW91dEFsaWduPVwiZW5kXCIgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNob3dDaGVja3NoZWV0SW5mbyA9IGZhbHNlXCI+XG4gICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtcHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiICpuZ0lmPVwidXBkYXRlTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cblxuICAgIDxtYXQtY2FyZCAqbmdJZj1cImNoZWNrc2hlZXRGb3JtYXQgJiYgIXNob3dDaGVja3NoZWV0SW5mb1wiPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibWItMFwiPkluZm9ybWF0aW9uPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93Q2hlY2tzaGVldEluZm8gPSB0cnVlXCI+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8YXBwLWNoZWNrc2hlZXQtZm9ybWF0LWRlbGV0ZS1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChkZWxldGVkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWRlbGV0ZS1idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtY29weS1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LWNvcHktYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXBwLWNoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXVucHVibGlzaC1idXR0b24+XG5cbiAgICAgICAgICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtYXQtcHVibGlzaC1idXR0b24gW2NoZWNrc2hlZXRGb3JtYXRdPVwiY2hlY2tzaGVldEZvcm1hdFwiIChjaGFuZ2VkKT1cImxvYWRDaGVja3NoZWV0Rm9ybWF0KClcIiB2aWV3TW9kZT1cImljb25cIj5cbiAgICAgICAgICAgIDwvYXBwLWNoZWNrc2hlZXQtZm9ybWF0LXB1Ymxpc2gtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwibXQtMyBkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwibWItMFwiPnt7IGNoZWNrc2hlZXRGb3JtYXQ/LnRpdGxlIH19PC9oMj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiZy1zZWNvbmRhcnlcIj57eyBjaGVja3NoZWV0Rm9ybWF0Py5zdWJtaXNzaW9uc19jb3VudCB9fSBDaGVja3NoZWV0IFN1Ym1pc3Npb25zPC9zcGFuPlxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICAgIEJ5IHt7IGNoZWNrc2hlZXRGb3JtYXQ/LmNyZWF0b3I/Lm5hbWUgfX0gb24ge3sgY2hlY2tzaGVldEZvcm1hdD8uY3JlYXRlZF9hdHwgZGF0ZSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8YXBwLW5vdGUtbGlzdCAqbmdJZj1cImNoZWNrc2hlZXRGb3JtYXRcIiB2aWV3TW9kZT1cInRpbWVsaW5lXCIgW3JlbGF0ZWRNb2RlbElkXT1cImNoZWNrc2hlZXRGb3JtYXQ/LmlkXCJcbiAgICAgICAgICAgICAgICAgICBtb2RlbFR5cGU9XCJDaGVja3NoZWV0Rm9ybWF0XCI+PC9hcHAtbm90ZS1saXN0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuIl19
|