@valtimo/milestone 4.15.2 → 4.16.0-next-main.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/bundles/valtimo-milestone.umd.js +146 -56
- package/bundles/valtimo-milestone.umd.js.map +1 -1
- package/bundles/valtimo-milestone.umd.min.js +1 -1
- package/bundles/valtimo-milestone.umd.min.js.map +1 -1
- package/esm2015/lib/milestone-create/milestone-create.component.js +15 -7
- package/esm2015/lib/milestone-edit/milestone-edit.component.js +19 -10
- package/esm2015/lib/milestone-list/milestone-list.component.js +8 -6
- package/esm2015/lib/milestone-routing.module.js +9 -12
- package/esm2015/lib/milestone-set-create/milestone-set-create.component.js +4 -4
- package/esm2015/lib/milestone-set-edit/milestone-set-edit.component.js +8 -6
- package/esm2015/lib/milestone.component.js +3 -5
- package/esm2015/lib/milestone.module.js +11 -5
- package/esm2015/lib/milestone.service.js +2 -2
- package/esm2015/lib/models/index.js +20 -0
- package/esm2015/lib/models/milestone-set.model.js +16 -0
- package/esm2015/lib/models/milestone.model.js +16 -0
- package/esm2015/public-api.js +2 -1
- package/esm2015/valtimo-milestone.js +1 -1
- package/fesm2015/valtimo-milestone.js +120 -49
- package/fesm2015/valtimo-milestone.js.map +1 -1
- package/lib/milestone-create/milestone-create.component.d.ts +2 -2
- package/lib/milestone-edit/milestone-edit.component.d.ts +2 -2
- package/lib/milestone-list/milestone-list.component.d.ts +1 -1
- package/lib/milestone.service.d.ts +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/milestone-set.model.d.ts +4 -0
- package/lib/models/milestone.model.d.ts +10 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/valtimo-milestone.metadata.json +1 -1
|
@@ -39,8 +39,14 @@ export class MilestoneCreateComponent {
|
|
|
39
39
|
title: new FormControl('', Validators.required),
|
|
40
40
|
processDefinitionKey: new FormControl('', Validators.required),
|
|
41
41
|
taskDefinitionKey: new FormControl('', Validators.required),
|
|
42
|
-
plannedIntervalInDays: new FormControl('', [
|
|
43
|
-
|
|
42
|
+
plannedIntervalInDays: new FormControl('', [
|
|
43
|
+
Validators.required,
|
|
44
|
+
Validators.pattern('^[0-9]*$'),
|
|
45
|
+
]),
|
|
46
|
+
color: new FormControl('', [
|
|
47
|
+
Validators.required,
|
|
48
|
+
Validators.pattern('^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$'),
|
|
49
|
+
]),
|
|
44
50
|
});
|
|
45
51
|
this.getMilestoneSets();
|
|
46
52
|
this.getMilestones();
|
|
@@ -52,7 +58,7 @@ export class MilestoneCreateComponent {
|
|
|
52
58
|
processDefinitionKey: '',
|
|
53
59
|
taskDefinitionKey: '',
|
|
54
60
|
plannedIntervalInDays: '',
|
|
55
|
-
color: ''
|
|
61
|
+
color: '',
|
|
56
62
|
});
|
|
57
63
|
}
|
|
58
64
|
getMilestoneSets() {
|
|
@@ -61,7 +67,9 @@ export class MilestoneCreateComponent {
|
|
|
61
67
|
});
|
|
62
68
|
}
|
|
63
69
|
getMilestones() {
|
|
64
|
-
this.processService
|
|
70
|
+
this.processService
|
|
71
|
+
.getProcessDefinitions()
|
|
72
|
+
.subscribe((processDefinitions) => {
|
|
65
73
|
this.processDefinitions = processDefinitions;
|
|
66
74
|
});
|
|
67
75
|
}
|
|
@@ -80,7 +88,7 @@ export class MilestoneCreateComponent {
|
|
|
80
88
|
this.milestoneService.createMilestone(milestone).subscribe(() => {
|
|
81
89
|
this.router.navigate(['/milestones']);
|
|
82
90
|
this.alertService.success('New Milestone has been created');
|
|
83
|
-
},
|
|
91
|
+
}, err => {
|
|
84
92
|
this.alertService.error('Error creating new milestone');
|
|
85
93
|
});
|
|
86
94
|
}
|
|
@@ -88,7 +96,7 @@ export class MilestoneCreateComponent {
|
|
|
88
96
|
MilestoneCreateComponent.decorators = [
|
|
89
97
|
{ type: Component, args: [{
|
|
90
98
|
selector: 'valtimo-milestone-create',
|
|
91
|
-
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"createMilestone()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Milestone set</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"milestoneSet\" formControlName=\"milestoneSet\"\n class=\"form-control\"\n [ngClass]=\"{'is-valid': formControls.milestoneSet.touched && formControls.milestoneSet.valid, 'is-invalid': formControls.milestoneSet.touched && formControls.milestoneSet.errors}\"\n required>\n <option value=\"\" selected disabled>Choose a Milestone set</option>\n <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">{{milestoneSet.title}} ({{milestoneSet.id}})</option>\n </select>\n <div *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.milestoneSet.errors.required\">Milestone set is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input type=\"text\" id=\"title\" formControlName=\"title\"\n class=\"form-control\" placeholder=\"Milestone title\"\n [ngClass]=\"{'is-valid': formControls.title.touched && formControls.title.valid, 'is-invalid': formControls.title.touched && formControls.title.errors}\"\n required/>\n <div *ngIf=\"formControls.title.touched && formControls.title.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Process definition</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"process\" formControlName=\"processDefinitionKey\"\n class=\"form-control\" (ngModelChange)=\"getFlownodes($event.id)\"\n [ngClass]=\"{'is-valid': formControls.processDefinitionKey.touched && formControls.processDefinitionKey.valid, 'is-invalid': formControls.processDefinitionKey.touched && formControls.processDefinitionKey.errors}\"\n required>\n <option value=\"\" selected disabled>Choose a process</option>\n <option *ngFor=\"let processDefinition of processDefinitions\" [ngValue]=\"processDefinition\">{{processDefinition.name}} ({{processDefinition.key}})</option>\n </select>\n <div *ngIf=\"formControls.processDefinitionKey.touched && formControls.processDefinitionKey.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.processDefinitionKey.errors.required\">Process is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"task\" formControlName=\"taskDefinitionKey\"\n class=\"form-control\"\n [ngClass]=\"{'is-valid': formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.valid, 'is-invalid': formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors}\"\n required>\n <option value=\"\" selected disabled>Choose a task</option>\n <option *ngFor=\"let taskDefinition of taskDefinitions |keyvalue\" [value]=\"taskDefinition.key\">{{taskDefinition.value}} ({{taskDefinition.key}})</option>\n </select>\n <div *ngIf=\"formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\">Interval (in days)</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input type=\"text\" id=\"interval\" formControlName=\"plannedIntervalInDays\"\n class=\"form-control\" placeholder=\"Interval (in days)\"\n [ngClass]=\"{'is-valid': formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.valid, 'is-invalid': formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.errors}\"\n required/>\n <div *ngIf=\"formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">Interval is required</div>\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">Interval is not a valid number</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n\n <input [colorPicker]=\"form.value.color\"\n (colorPickerChange)=\"form.controls.color.setValue($event)\"\n [style.background]=\"form.value.color\"\n type=\"text\" id=\"color\" formControlName=\"color\"\n class=\"form-control\" placeholder=\"Color\"\n [ngClass]=\"{'is-valid': formControls.color.touched && formControls.color.valid, 'is-invalid': formControls.color.touched && formControls.color.errors}\"\n required/>\n <div *ngIf=\"formControls.color.touched && formControls.color.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.color.errors.required\">Interval is required</div>\n <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">Reset\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n",
|
|
99
|
+
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"createMilestone()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\"\n >Milestone set</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"milestoneSet\"\n formControlName=\"milestoneSet\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid':\n formControls.milestoneSet.touched && formControls.milestoneSet.valid,\n 'is-invalid':\n formControls.milestoneSet.touched && formControls.milestoneSet.errors\n }\"\n required\n >\n <option value=\"\" selected disabled>Choose a Milestone set</option>\n <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">\n {{ milestoneSet.title }} ({{ milestoneSet.id }})\n </option>\n </select>\n <div\n *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.milestoneSet.errors.required\">\n Milestone set is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"title\"\n formControlName=\"title\"\n class=\"form-control\"\n placeholder=\"Milestone title\"\n [ngClass]=\"{\n 'is-valid': formControls.title.touched && formControls.title.valid,\n 'is-invalid': formControls.title.touched && formControls.title.errors\n }\"\n required\n />\n <div\n *ngIf=\"formControls.title.touched && formControls.title.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\"\n >Process definition</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"process\"\n formControlName=\"processDefinitionKey\"\n class=\"form-control\"\n (ngModelChange)=\"getFlownodes($event.id)\"\n [ngClass]=\"{\n 'is-valid':\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.valid,\n 'is-invalid':\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.errors\n }\"\n required\n >\n <option value=\"\" selected disabled>Choose a process</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n <div\n *ngIf=\"\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.processDefinitionKey.errors.required\">\n Process is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"task\"\n formControlName=\"taskDefinitionKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid':\n formControls.taskDefinitionKey.touched &&\n formControls.taskDefinitionKey.valid,\n 'is-invalid':\n formControls.taskDefinitionKey.touched &&\n formControls.taskDefinitionKey.errors\n }\"\n required\n >\n <option value=\"\" selected disabled>Choose a task</option>\n <option\n *ngFor=\"let taskDefinition of taskDefinitions | keyvalue\"\n [value]=\"taskDefinition.key\"\n >\n {{ taskDefinition.value }} ({{ taskDefinition.key }})\n </option>\n </select>\n <div\n *ngIf=\"\n formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\"\n >Interval (in days)</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"interval\"\n formControlName=\"plannedIntervalInDays\"\n class=\"form-control\"\n placeholder=\"Interval (in days)\"\n [ngClass]=\"{\n 'is-valid':\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.valid,\n 'is-invalid':\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.errors\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">\n Interval is required\n </div>\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">\n Interval is not a valid number\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n [colorPicker]=\"form.value.color\"\n (colorPickerChange)=\"form.controls.color.setValue($event)\"\n [style.background]=\"form.value.color\"\n type=\"text\"\n id=\"color\"\n formControlName=\"color\"\n class=\"form-control\"\n placeholder=\"Color\"\n [ngClass]=\"{\n 'is-valid': formControls.color.touched && formControls.color.valid,\n 'is-invalid': formControls.color.touched && formControls.color.errors\n }\"\n required\n />\n <div\n *ngIf=\"formControls.color.touched && formControls.color.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.color.errors.required\">Interval is required</div>\n <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n",
|
|
92
100
|
styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */"]
|
|
93
101
|
},] }
|
|
94
102
|
];
|
|
@@ -99,4 +107,4 @@ MilestoneCreateComponent.ctorParameters = () => [
|
|
|
99
107
|
{ type: AlertService },
|
|
100
108
|
{ type: ProcessService }
|
|
101
109
|
];
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLWNyZWF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL3RtcC9qZW5raW5zLWE3MzRhYWRjL3dvcmtzcGFjZS9WYWx0aW1vXy1fQW5ndWxhcl9MaWJyYXJpZXNfbWFpbi9wcm9qZWN0cy92YWx0aW1vL21pbGVzdG9uZS9zcmMvIiwic291cmNlcyI6WyJsaWIvbWlsZXN0b25lLWNyZWF0ZS9taWxlc3RvbmUtY3JlYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsY0FBYyxFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBT25FLE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsWUFDVSxnQkFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLGNBQThCO1FBSjlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVRqQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsdUJBQWtCLEdBQXdCLEVBQUUsQ0FBQztRQUM3QyxvQkFBZSxHQUFVLEVBQUUsQ0FBQztJQVFoQyxDQUFDO0lBRUosSUFBSSxZQUFZO1FBQ2QsT0FBTyxJ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QUMsZ0NBQWdDLENBQUMsQ0FBQztRQUM5RCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBekZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxzMFVBQWdEOzthQUVqRDs7O1lBVk8sZ0JBQWdCO1lBRGhCLFdBQVc7WUFFWCxNQUFNO1lBQ04sWUFBWTtZQUVaLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWlsZXN0b25lU2VydmljZX0gZnJvbSAnLi4vbWlsZXN0b25lLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge01pbGVzdG9uZSwgTWlsZXN0b25lU2V0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZSwgUHJvY2Vzc0RlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLW1pbGVzdG9uZS1jcmVhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWlsZXN0b25lLWNyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21pbGVzdG9uZS1jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWlsZXN0b25lQ3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIG1pbGVzdG9uZVNldHM6IE1pbGVzdG9uZVNldFtdID0gW107XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbnM6IFByb2Nlc3NEZWZpbml0aW9uW10gPSBbXTtcbiAgcHVibGljIHRhc2tEZWZpbml0aW9uczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1pbGVzdG9uZVNlcnZpY2U6IE1pbGVzdG9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlXG4gICkge31cblxuICBnZXQgZm9ybUNvbnRyb2xzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIG1pbGVzdG9uZVNldDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB0YXNrRGVmaW5pdGlvbktleTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIHBsYW5uZWRJbnRlcnZhbEluRGF5czogbmV3IEZvcm1Db250cm9sKCcnLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXlswLTldKiQnKSxcbiAgICAgIF0pLFxuICAgICAgY29sb3I6IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14jKFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezN9KSQnKSxcbiAgICAgIF0pLFxuICAgIH0pO1xuICAgIHRoaXMuZ2V0TWlsZXN0b25lU2V0cygpO1xuICAgIHRoaXMuZ2V0TWlsZXN0b25lcygpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbWlsZXN0b25lU2V0OiAnJyxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgIHRhc2tEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgIHBsYW5uZWRJbnRlcnZhbEluRGF5czogJycsXG4gICAgICBjb2xvcjogJycsXG4gICAgfSk7XG4gIH1cblxuICBnZXRNaWxlc3RvbmVTZXRzKCkge1xuICAgIHRoaXMubWlsZXN0b25lU2VydmljZS5nZXRNaWxlc3RvbmVTZXRzKCkuc3Vic2NyaWJlKChtaWxlc2V0b25lU2V0czogTWlsZXN0b25lU2V0W10pID0+IHtcbiAgICAgIHRoaXMubWlsZXN0b25lU2V0cyA9IG1pbGVzZXRvbmVTZXRzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWlsZXN0b25lcygpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb25zKClcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uczogUHJvY2Vzc0RlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9ucyA9IHByb2Nlc3NEZWZpbml0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0Rmxvd25vZGVzKHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmIChwcm9jZXNzRGVmaW5pdGlvbklkKSB7XG4gICAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuZ2V0Rmxvd25vZGVzKHByb2Nlc3NEZWZpbml0aW9uSWQpLnN1YnNjcmliZSgoZmxvd05vZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9ucyA9IGZsb3dOb2Rlc1snZmxvd05vZGVNYXAnXTtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRhc2tEZWZpbml0aW9uS2V5LnNldFZhbHVlKCcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU1pbGVzdG9uZSgpIHtcbiAgICBjb25zdCBtaWxlc3RvbmU6IE1pbGVzdG9uZSA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBtaWxlc3RvbmUucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBtaWxlc3RvbmUucHJvY2Vzc0RlZmluaXRpb25LZXlbJ2tleSddO1xuICAgIG1pbGVzdG9uZS5pZCA9IG51bGw7XG4gICAgdGhpcy5taWxlc3RvbmVTZXJ2aWNlLmNyZWF0ZU1pbGVzdG9uZShtaWxlc3RvbmUpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWlsZXN0b25lcyddKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnTmV3IE1pbGVzdG9uZSBoYXMgYmVlbiBjcmVhdGVkJyk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIG5ldyBtaWxlc3RvbmUnKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -42,8 +42,14 @@ export class MilestoneEditComponent {
|
|
|
42
42
|
title: new FormControl('', Validators.required),
|
|
43
43
|
processDefinitionKey: new FormControl('', Validators.required),
|
|
44
44
|
taskDefinitionKey: new FormControl('', Validators.required),
|
|
45
|
-
plannedIntervalInDays: new FormControl('', [
|
|
46
|
-
|
|
45
|
+
plannedIntervalInDays: new FormControl('', [
|
|
46
|
+
Validators.required,
|
|
47
|
+
Validators.pattern('^[0-9]*$'),
|
|
48
|
+
]),
|
|
49
|
+
color: new FormControl('', [
|
|
50
|
+
Validators.required,
|
|
51
|
+
Validators.pattern('^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$'),
|
|
52
|
+
]),
|
|
47
53
|
});
|
|
48
54
|
this.getMilestone();
|
|
49
55
|
this.getMilestoneSets();
|
|
@@ -56,12 +62,13 @@ export class MilestoneEditComponent {
|
|
|
56
62
|
processDefinitionKey: '',
|
|
57
63
|
taskDefinitionKey: '',
|
|
58
64
|
plannedIntervalInDays: '',
|
|
59
|
-
color: ''
|
|
65
|
+
color: '',
|
|
60
66
|
});
|
|
61
67
|
}
|
|
62
68
|
getMilestone() {
|
|
63
69
|
const milestoneId = this.route.snapshot.paramMap.get('id');
|
|
64
|
-
this.milestoneService
|
|
70
|
+
this.milestoneService
|
|
71
|
+
.getMilestone(+milestoneId)
|
|
65
72
|
.pipe(switchMap((milestone) => {
|
|
66
73
|
this.form.patchValue({
|
|
67
74
|
id: milestone.id,
|
|
@@ -75,7 +82,7 @@ export class MilestoneEditComponent {
|
|
|
75
82
|
}))
|
|
76
83
|
.subscribe((processDefinition) => {
|
|
77
84
|
this.form.patchValue({
|
|
78
|
-
processDefinitionKey: processDefinition
|
|
85
|
+
processDefinitionKey: processDefinition,
|
|
79
86
|
});
|
|
80
87
|
});
|
|
81
88
|
}
|
|
@@ -88,7 +95,9 @@ export class MilestoneEditComponent {
|
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
getProcessDefinitions() {
|
|
91
|
-
this.processService
|
|
98
|
+
this.processService
|
|
99
|
+
.getProcessDefinitions()
|
|
100
|
+
.subscribe((processDefinitions) => {
|
|
92
101
|
this.processDefinitions = processDefinitions;
|
|
93
102
|
});
|
|
94
103
|
}
|
|
@@ -107,7 +116,7 @@ export class MilestoneEditComponent {
|
|
|
107
116
|
this.milestoneService.deleteMilestone(this.form.getRawValue().id).subscribe(() => {
|
|
108
117
|
this.router.navigate(['/milestones']);
|
|
109
118
|
this.alertService.success('Milestone has been deleted');
|
|
110
|
-
},
|
|
119
|
+
}, err => {
|
|
111
120
|
this.router.navigate(['/milestones']);
|
|
112
121
|
this.alertService.error('Could not delete Milestone');
|
|
113
122
|
});
|
|
@@ -118,7 +127,7 @@ export class MilestoneEditComponent {
|
|
|
118
127
|
this.milestoneService.updateMilestone(milestone).subscribe(() => {
|
|
119
128
|
this.router.navigate(['/milestones']);
|
|
120
129
|
this.alertService.success('Milestone has been updated');
|
|
121
|
-
},
|
|
130
|
+
}, err => {
|
|
122
131
|
this.alertService.error('Error updating milestone');
|
|
123
132
|
});
|
|
124
133
|
}
|
|
@@ -126,7 +135,7 @@ export class MilestoneEditComponent {
|
|
|
126
135
|
MilestoneEditComponent.decorators = [
|
|
127
136
|
{ type: Component, args: [{
|
|
128
137
|
selector: 'valtimo-milestone-edit',
|
|
129
|
-
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-body bg-light\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>ID</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ form.getRawValue().id }}</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"updateMilestone()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Milestone set</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"milestoneSet\" formControlName=\"milestoneSet\"\n class=\"form-control\"\n [ngClass]=\"{'is-valid': formControls.milestoneSet.touched && formControls.milestoneSet.valid, 'is-invalid': formControls.milestoneSet.touched && formControls.milestoneSet.errors}\"\n required>\n <option value=\"\" selected disabled>Choose a Milestone set</option>\n <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">{{milestoneSet.title}} ({{milestoneSet.id}})</option>\n </select>\n <div *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.milestoneSet.errors.required\">Milestone set is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input type=\"text\" id=\"title\" formControlName=\"title\"\n class=\"form-control\" placeholder=\"Milestone title\"\n [ngClass]=\"{'is-valid': formControls.title.touched && formControls.title.valid, 'is-invalid': formControls.title.touched && formControls.title.errors}\"\n required/>\n <div *ngIf=\"formControls.title.touched && formControls.title.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Process definition</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"process\" formControlName=\"processDefinitionKey\"\n class=\"form-control\" (ngModelChange)=\"getFlownodes($event.id)\"\n [ngClass]=\"{'is-valid': formControls.processDefinitionKey.touched && formControls.processDefinitionKey.valid, 'is-invalid': formControls.processDefinitionKey.touched && formControls.processDefinitionKey.errors}\"\n required [compareWith]=\"compareProcessDefinitions\">\n <option value=\"\" disabled>Choose a process</option>\n <option *ngFor=\"let processDefinition of processDefinitions\" [ngValue]=\"processDefinition\">{{processDefinition.name}} ({{processDefinition.key}})</option>\n </select>\n <div *ngIf=\"formControls.processDefinitionKey.touched && formControls.processDefinitionKey.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.processDefinitionKey.errors.required\">Process is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select type=\"text\" id=\"task\" formControlName=\"taskDefinitionKey\"\n class=\"form-control\"\n [ngClass]=\"{'is-valid': formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.valid, 'is-invalid': formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors}\"\n required>\n <option value=\"\" disabled>Choose a task</option>\n <option *ngFor=\"let taskDefinition of taskDefinitions |keyvalue\" [value]=\"taskDefinition.key\">{{taskDefinition.value}} ({{taskDefinition.key}})</option>\n </select>\n <div *ngIf=\"formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\">Interval (in days)</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input type=\"text\" id=\"interval\" formControlName=\"plannedIntervalInDays\"\n class=\"form-control\" placeholder=\"Interval (in days)\"\n [ngClass]=\"{'is-valid': formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.valid, 'is-invalid': formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.errors}\"\n required/>\n <div *ngIf=\"formControls.plannedIntervalInDays.touched && formControls.plannedIntervalInDays.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">Interval is required</div>\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">Interval is not a valid number</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n\n <input [colorPicker]=\"form.value.color\"\n (colorPickerChange)=\"form.controls.color.setValue($event)\"\n [style.background]=\"form.value.color\"\n type=\"text\" id=\"color\" formControlName=\"color\"\n class=\"form-control\" placeholder=\"Color\"\n [ngClass]=\"{'is-valid': formControls.color.touched && formControls.color.valid, 'is-invalid': formControls.color.touched && formControls.color.errors}\"\n required/>\n <div *ngIf=\"formControls.color.touched && formControls.color.errors\"\n class=\"invalid-feedback\">\n <div *ngIf=\"formControls.color.errors.required\">Color is required</div>\n <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n <button type=\"button\" class=\"btn btn-space btn-danger\" (click)=\"delete()\">\n Delete\n </button>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">Reset\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n",
|
|
138
|
+
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-body bg-light\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>ID</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ form.getRawValue().id }}</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"updateMilestone()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\"\n >Milestone set</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"milestoneSet\"\n formControlName=\"milestoneSet\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid':\n formControls.milestoneSet.touched && formControls.milestoneSet.valid,\n 'is-invalid':\n formControls.milestoneSet.touched && formControls.milestoneSet.errors\n }\"\n required\n >\n <option value=\"\" selected disabled>Choose a Milestone set</option>\n <option *ngFor=\"let milestoneSet of milestoneSets\" [value]=\"milestoneSet.id\">\n {{ milestoneSet.title }} ({{ milestoneSet.id }})\n </option>\n </select>\n <div\n *ngIf=\"formControls.milestoneSet.touched && formControls.milestoneSet.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.milestoneSet.errors.required\">\n Milestone set is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"title\"\n formControlName=\"title\"\n class=\"form-control\"\n placeholder=\"Milestone title\"\n [ngClass]=\"{\n 'is-valid': formControls.title.touched && formControls.title.valid,\n 'is-invalid': formControls.title.touched && formControls.title.errors\n }\"\n required\n />\n <div\n *ngIf=\"formControls.title.touched && formControls.title.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\"\n >Process definition</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"process\"\n formControlName=\"processDefinitionKey\"\n class=\"form-control\"\n (ngModelChange)=\"getFlownodes($event.id)\"\n [ngClass]=\"{\n 'is-valid':\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.valid,\n 'is-invalid':\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.errors\n }\"\n required\n [compareWith]=\"compareProcessDefinitions\"\n >\n <option value=\"\" disabled>Choose a process</option>\n <option\n *ngFor=\"let processDefinition of processDefinitions\"\n [ngValue]=\"processDefinition\"\n >\n {{ processDefinition.name }} ({{ processDefinition.key }})\n </option>\n </select>\n <div\n *ngIf=\"\n formControls.processDefinitionKey.touched &&\n formControls.processDefinitionKey.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.processDefinitionKey.errors.required\">\n Process is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"process\">Task</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n type=\"text\"\n id=\"task\"\n formControlName=\"taskDefinitionKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid':\n formControls.taskDefinitionKey.touched &&\n formControls.taskDefinitionKey.valid,\n 'is-invalid':\n formControls.taskDefinitionKey.touched &&\n formControls.taskDefinitionKey.errors\n }\"\n required\n >\n <option value=\"\" disabled>Choose a task</option>\n <option\n *ngFor=\"let taskDefinition of taskDefinitions | keyvalue\"\n [value]=\"taskDefinition.key\"\n >\n {{ taskDefinition.value }} ({{ taskDefinition.key }})\n </option>\n </select>\n <div\n *ngIf=\"\n formControls.taskDefinitionKey.touched && formControls.taskDefinitionKey.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.taskDefinitionKey.errors.required\">Task is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"interval\"\n >Interval (in days)</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"interval\"\n formControlName=\"plannedIntervalInDays\"\n class=\"form-control\"\n placeholder=\"Interval (in days)\"\n [ngClass]=\"{\n 'is-valid':\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.valid,\n 'is-invalid':\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.errors\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.plannedIntervalInDays.touched &&\n formControls.plannedIntervalInDays.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.required\">\n Interval is required\n </div>\n <div *ngIf=\"formControls.plannedIntervalInDays.errors.pattern\">\n Interval is not a valid number\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"color\">Color</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n [colorPicker]=\"form.value.color\"\n (colorPickerChange)=\"form.controls.color.setValue($event)\"\n [style.background]=\"form.value.color\"\n type=\"text\"\n id=\"color\"\n formControlName=\"color\"\n class=\"form-control\"\n placeholder=\"Color\"\n [ngClass]=\"{\n 'is-valid': formControls.color.touched && formControls.color.valid,\n 'is-invalid': formControls.color.touched && formControls.color.errors\n }\"\n required\n />\n <div\n *ngIf=\"formControls.color.touched && formControls.color.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.color.errors.required\">Color is required</div>\n <div *ngIf=\"formControls.color.errors.pattern\">Color is not a valid hex code</div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n <button type=\"button\" class=\"btn btn-space btn-danger\" (click)=\"delete()\">\n Delete\n </button>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n",
|
|
130
139
|
styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */"]
|
|
131
140
|
},] }
|
|
132
141
|
];
|
|
@@ -138,4 +147,4 @@ MilestoneEditComponent.ctorParameters = () => [
|
|
|
138
147
|
{ type: ProcessService },
|
|
139
148
|
{ type: ActivatedRoute }
|
|
140
149
|
];
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9taWxlc3RvbmUvc3JjL2xpYi9taWxlc3RvbmUtZWRpdC9taWxlc3RvbmUtZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPekMsTUFBTSxPQUFPLHNCQUFzQjtJQU9qQyxZQUNVLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsS0FBcUI7UUFMckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBVnhCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyx1QkFBa0IsR0FBd0IsRUFBRSxDQUFDO1FBQzdDLG9CQUFlLEdBQVUsRUFBRSxDQUFDO0lBVW5DLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxFQUFFLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3JFLFlBQVksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN0RCxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDL0Msb0JBQW9CLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDOUQsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDM0QscUJBQXFCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDakcsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7U0FDNUcsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsS0FBSyxFQUFFLEVBQUU7WUFDVCxvQkFBb0IsRUFBRSxFQUFFO1lBQ3hCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDO2FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtnQkFDaEIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDdkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUN0QixxQkFBcUIsRUFBRSxTQUFTLENBQUMscUJBQXFCO2dCQUN0RCxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7YUFDL0MsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDO2FBQ0YsU0FBUyxDQUFDLENBQUMsaUJBQW9DLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbkIsb0JBQW9CLEVBQUUsaUJBQWlCO2FBQ3hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHlCQUF5QixDQUFDLGtCQUFxQyxFQUFFLGtCQUFxQztRQUNwRyxPQUFPLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQThCLEVBQUUsRUFBRTtZQUNwRixJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGtCQUF1QyxFQUFFLEVBQUU7WUFDaEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxtQkFBMkI7UUFDdEMsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBZ0IsRUFBRSxFQUFFO2dCQUNyRixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUQsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxTQUFTLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUMxRCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUF6SEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLHFuU0FBOEM7O2FBRS9DOzs7WUFWTyxnQkFBZ0I7WUFGaEIsV0FBVztZQUdLLE1BQU07WUFDdEIsWUFBWTtZQUNaLGNBQWM7WUFGZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01pbGVzdG9uZSwgTWlsZXN0b25lU2V0LCBQcm9jZXNzRGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuaW1wb3J0IHtNaWxlc3RvbmVTZXJ2aWNlfSBmcm9tICcuLi9taWxlc3RvbmUuc2VydmljZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7c3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbWlsZXN0b25lLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWlsZXN0b25lLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9taWxlc3RvbmUtZWRpdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1pbGVzdG9uZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBtaWxlc3RvbmVTZXRzOiBNaWxlc3RvbmVTZXRbXSA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25zOiBQcm9jZXNzRGVmaW5pdGlvbltdID0gW107XG4gIHB1YmxpYyB0YXNrRGVmaW5pdGlvbnM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtaWxlc3RvbmVTZXJ2aWNlOiBNaWxlc3RvbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgfVxuXG4gIGdldCBmb3JtQ29udHJvbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgbWlsZXN0b25lU2V0OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIHRhc2tEZWZpbml0aW9uS2V5OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgcGxhbm5lZEludGVydmFsSW5EYXlzOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSokJyldKSxcbiAgICAgIGNvbG9yOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oJ14jKFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezN9KSQnKV0pXG4gICAgfSk7XG4gICAgdGhpcy5nZXRNaWxlc3RvbmUoKTtcbiAgICB0aGlzLmdldE1pbGVzdG9uZVNldHMoKTtcbiAgICB0aGlzLmdldFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbWlsZXN0b25lU2V0OiAnJyxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgIHRhc2tEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgIHBsYW5uZWRJbnRlcnZhbEluRGF5czogJycsXG4gICAgICBjb2xvcjogJydcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1pbGVzdG9uZSgpIHtcbiAgICBjb25zdCBtaWxlc3RvbmVJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xuICAgIHRoaXMubWlsZXN0b25lU2VydmljZS5nZXRNaWxlc3RvbmUoK21pbGVzdG9uZUlkKVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKChtaWxlc3RvbmU6IE1pbGVzdG9uZSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgaWQ6IG1pbGVzdG9uZS5pZCxcbiAgICAgICAgICBtaWxlc3RvbmVTZXQ6IG1pbGVzdG9uZS5taWxlc3RvbmVTZXQuaWQsXG4gICAgICAgICAgdGl0bGU6IG1pbGVzdG9uZS50aXRsZSxcbiAgICAgICAgICBwbGFubmVkSW50ZXJ2YWxJbkRheXM6IG1pbGVzdG9uZS5wbGFubmVkSW50ZXJ2YWxJbkRheXMsXG4gICAgICAgICAgY29sb3I6IG1pbGVzdG9uZS5jb2xvcixcbiAgICAgICAgICB0YXNrRGVmaW5pdGlvbktleTogbWlsZXN0b25lLnRhc2tEZWZpbml0aW9uS2V5LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb24obWlsZXN0b25lLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICAgIH0pKVxuICAgICAgLnN1YnNjcmliZSgocHJvY2Vzc0RlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogcHJvY2Vzc0RlZmluaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbXBhcmVQcm9jZXNzRGVmaW5pdGlvbnMocHJvY2Vzc0RlZmluaXRpb24xOiBQcm9jZXNzRGVmaW5pdGlvbiwgcHJvY2Vzc0RlZmluaXRpb24yOiBQcm9jZXNzRGVmaW5pdGlvbikge1xuICAgIHJldHVybiBwcm9jZXNzRGVmaW5pdGlvbjEuaWQgPT09IHByb2Nlc3NEZWZpbml0aW9uMi5pZDtcbiAgfVxuXG4gIGdldE1pbGVzdG9uZVNldHMoKSB7XG4gICAgdGhpcy5taWxlc3RvbmVTZXJ2aWNlLmdldE1pbGVzdG9uZVNldHMoKS5zdWJzY3JpYmUoKG1pbGVzZXRvbmVTZXRzOiBNaWxlc3RvbmVTZXRbXSkgPT4ge1xuICAgICAgdGhpcy5taWxlc3RvbmVTZXRzID0gbWlsZXNldG9uZVNldHM7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvbnMoKS5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uczogUHJvY2Vzc0RlZmluaXRpb25bXSkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbnMgPSBwcm9jZXNzRGVmaW5pdGlvbnM7XG4gICAgfSk7XG4gIH1cblxuICBnZXRGbG93bm9kZXMocHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nKSB7XG4gICAgaWYgKHByb2Nlc3NEZWZpbml0aW9uSWQpIHtcbiAgICAgIHRoaXMubWlsZXN0b25lU2VydmljZS5nZXRGbG93bm9kZXMocHJvY2Vzc0RlZmluaXRpb25JZCkuc3Vic2NyaWJlKChmbG93Tm9kZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb25zID0gZmxvd05vZGVzWydmbG93Tm9kZU1hcCddO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIC8vIFRvZG86IGFkZCBjb25maXJtYXRpb24gZGlhbG9nIGFmdGVyIGl0J3MgZml4ZWRcbiAgICB0aGlzLmRlbGV0ZU1pbGVzdG9uZSgpO1xuICB9XG5cbiAgZGVsZXRlTWlsZXN0b25lKCkge1xuICAgIHRoaXMubWlsZXN0b25lU2VydmljZS5kZWxldGVNaWxlc3RvbmUodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9taWxlc3RvbmVzJ10pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnTWlsZXN0b25lIGhhcyBiZWVuIGRlbGV0ZWQnKTtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9taWxlc3RvbmVzJ10pO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0NvdWxkIG5vdCBkZWxldGUgTWlsZXN0b25lJyk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVNaWxlc3RvbmUoKSB7XG4gICAgY29uc3QgbWlsZXN0b25lOiBNaWxlc3RvbmUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBtaWxlc3RvbmUucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBtaWxlc3RvbmUucHJvY2Vzc0RlZmluaXRpb25LZXlbJ2tleSddO1xuICAgIHRoaXMubWlsZXN0b25lU2VydmljZS51cGRhdGVNaWxlc3RvbmUobWlsZXN0b25lKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWlsZXN0b25lcyddKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoJ01pbGVzdG9uZSBoYXMgYmVlbiB1cGRhdGVkJyk7XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0Vycm9yIHVwZGF0aW5nIG1pbGVzdG9uZScpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy1hNzM0YWFkYy93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9taWxlc3RvbmUvc3JjLyIsInNvdXJjZXMiOlsibGliL21pbGVzdG9uZS1lZGl0L21pbGVzdG9uZS1lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLGNBQWMsRUFBb0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPekMsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUNVLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsS0FBcUI7UUFMckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBVnhCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyx1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NEIsQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFNBQVMsR0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQ3hELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOzs7WUEzSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLDY1VkFBOEM7O2FBRS9DOzs7WUFWTyxnQkFBZ0I7WUFGaEIsV0FBVztZQUdLLE1BQU07WUFDdEIsWUFBWTtZQUNaLGNBQWM7WUFGZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01pbGVzdG9uZSwgTWlsZXN0b25lU2V0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtNaWxlc3RvbmVTZXJ2aWNlfSBmcm9tICcuLi9taWxlc3RvbmUuc2VydmljZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlLCBQcm9jZXNzRGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLW1pbGVzdG9uZS1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbGVzdG9uZS1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWlsZXN0b25lLWVkaXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWlsZXN0b25lRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBtaWxlc3RvbmVTZXRzOiBNaWxlc3RvbmVTZXRbXSA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25zOiBQcm9jZXNzRGVmaW5pdGlvbltdID0gW107XG4gIHB1YmxpYyB0YXNrRGVmaW5pdGlvbnM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtaWxlc3RvbmVTZXJ2aWNlOiBNaWxlc3RvbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHt9XG5cbiAgZ2V0IGZvcm1Db250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBpZDogbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBtaWxlc3RvbmVTZXQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB0aXRsZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgdGFza0RlZmluaXRpb25LZXk6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBwbGFubmVkSW50ZXJ2YWxJbkRheXM6IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSokJyksXG4gICAgICBdKSxcbiAgICAgIGNvbG9yOiBuZXcgRm9ybUNvbnRyb2woJycsIFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeIyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkJyksXG4gICAgICBdKSxcbiAgICB9KTtcbiAgICB0aGlzLmdldE1pbGVzdG9uZSgpO1xuICAgIHRoaXMuZ2V0TWlsZXN0b25lU2V0cygpO1xuICAgIHRoaXMuZ2V0UHJvY2Vzc0RlZmluaXRpb25zKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBtaWxlc3RvbmVTZXQ6ICcnLFxuICAgICAgdGl0bGU6ICcnLFxuICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6ICcnLFxuICAgICAgdGFza0RlZmluaXRpb25LZXk6ICcnLFxuICAgICAgcGxhbm5lZEludGVydmFsSW5EYXlzOiAnJyxcbiAgICAgIGNvbG9yOiAnJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1pbGVzdG9uZSgpIHtcbiAgICBjb25zdCBtaWxlc3RvbmVJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xuICAgIHRoaXMubWlsZXN0b25lU2VydmljZVxuICAgICAgLmdldE1pbGVzdG9uZSgrbWlsZXN0b25lSWQpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChtaWxlc3RvbmU6IE1pbGVzdG9uZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIGlkOiBtaWxlc3RvbmUuaWQsXG4gICAgICAgICAgICBtaWxlc3RvbmVTZXQ6IG1pbGVzdG9uZS5taWxlc3RvbmVTZXQuaWQsXG4gICAgICAgICAgICB0aXRsZTogbWlsZXN0b25lLnRpdGxlLFxuICAgICAgICAgICAgcGxhbm5lZEludGVydmFsSW5EYXlzOiBtaWxlc3RvbmUucGxhbm5lZEludGVydmFsSW5EYXlzLFxuICAgICAgICAgICAgY29sb3I6IG1pbGVzdG9uZS5jb2xvcixcbiAgICAgICAgICAgIHRhc2tEZWZpbml0aW9uS2V5OiBtaWxlc3RvbmUudGFza0RlZmluaXRpb25LZXksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb24obWlsZXN0b25lLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uOiBQcm9jZXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHByb2Nlc3NEZWZpbml0aW9uLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29tcGFyZVByb2Nlc3NEZWZpbml0aW9ucyhcbiAgICBwcm9jZXNzRGVmaW5pdGlvbjE6IFByb2Nlc3NEZWZpbml0aW9uLFxuICAgIHByb2Nlc3NEZWZpbml0aW9uMjogUHJvY2Vzc0RlZmluaXRpb25cbiAgKSB7XG4gICAgcmV0dXJuIHByb2Nlc3NEZWZpbml0aW9uMS5pZCA9PT0gcHJvY2Vzc0RlZmluaXRpb24yLmlkO1xuICB9XG5cbiAgZ2V0TWlsZXN0b25lU2V0cygpIHtcbiAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuZ2V0TWlsZXN0b25lU2V0cygpLnN1YnNjcmliZSgobWlsZXNldG9uZVNldHM6IE1pbGVzdG9uZVNldFtdKSA9PiB7XG4gICAgICB0aGlzLm1pbGVzdG9uZVNldHMgPSBtaWxlc2V0b25lU2V0cztcbiAgICB9KTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9ucygpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb25zKClcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uczogUHJvY2Vzc0RlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9ucyA9IHByb2Nlc3NEZWZpbml0aW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0Rmxvd25vZGVzKHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmIChwcm9jZXNzRGVmaW5pdGlvbklkKSB7XG4gICAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuZ2V0Rmxvd25vZGVzKHByb2Nlc3NEZWZpbml0aW9uSWQpLnN1YnNjcmliZSgoZmxvd05vZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLnRhc2tEZWZpbml0aW9ucyA9IGZsb3dOb2Rlc1snZmxvd05vZGVNYXAnXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICAvLyBUb2RvOiBhZGQgY29uZmlybWF0aW9uIGRpYWxvZyBhZnRlciBpdCdzIGZpeGVkXG4gICAgdGhpcy5kZWxldGVNaWxlc3RvbmUoKTtcbiAgfVxuXG4gIGRlbGV0ZU1pbGVzdG9uZSgpIHtcbiAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuZGVsZXRlTWlsZXN0b25lKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLmlkKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21pbGVzdG9uZXMnXSk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoJ01pbGVzdG9uZSBoYXMgYmVlbiBkZWxldGVkJyk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWlsZXN0b25lcyddKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0NvdWxkIG5vdCBkZWxldGUgTWlsZXN0b25lJyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1pbGVzdG9uZSgpIHtcbiAgICBjb25zdCBtaWxlc3RvbmU6IE1pbGVzdG9uZSA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIG1pbGVzdG9uZS5wcm9jZXNzRGVmaW5pdGlvbktleSA9IG1pbGVzdG9uZS5wcm9jZXNzRGVmaW5pdGlvbktleVsna2V5J107XG4gICAgdGhpcy5taWxlc3RvbmVTZXJ2aWNlLnVwZGF0ZU1pbGVzdG9uZShtaWxlc3RvbmUpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbWlsZXN0b25lcyddKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnTWlsZXN0b25lIGhhcyBiZWVuIHVwZGF0ZWQnKTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgbWlsZXN0b25lJyk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -38,8 +38,10 @@ export class MilestoneListComponent {
|
|
|
38
38
|
this.router.navigate(['milestones/milestone', milestone.id]);
|
|
39
39
|
}
|
|
40
40
|
ngOnInit() {
|
|
41
|
-
combineLatest([
|
|
42
|
-
.
|
|
41
|
+
combineLatest([
|
|
42
|
+
this.milestoneService.getMilestones(),
|
|
43
|
+
this.milestoneService.getMilestoneSets(),
|
|
44
|
+
]).subscribe(([milestones, milestoneSets]) => this.handleMilestoneResult(milestones, milestoneSets));
|
|
43
45
|
}
|
|
44
46
|
handleMilestoneResult(milestones, milestoneSets) {
|
|
45
47
|
const milestoneSetsMap = this.getMilestoneSetsMap(milestones, milestoneSets);
|
|
@@ -59,13 +61,13 @@ export class MilestoneListComponent {
|
|
|
59
61
|
return new Map();
|
|
60
62
|
}
|
|
61
63
|
addMilestoneSetsToMap(milestoneSets, map) {
|
|
62
|
-
milestoneSets.forEach(
|
|
64
|
+
milestoneSets.forEach(milestoneSet => {
|
|
63
65
|
map.set(JSON.stringify(milestoneSet), []);
|
|
64
66
|
});
|
|
65
67
|
return map;
|
|
66
68
|
}
|
|
67
69
|
addMilestonesToMap(milestones, map) {
|
|
68
|
-
milestones.forEach(
|
|
70
|
+
milestones.forEach(milestone => {
|
|
69
71
|
const milestoneSetString = JSON.stringify(milestone.milestoneSet);
|
|
70
72
|
const arr = map.get(milestoneSetString);
|
|
71
73
|
arr.push(milestone);
|
|
@@ -77,7 +79,7 @@ export class MilestoneListComponent {
|
|
|
77
79
|
MilestoneListComponent.decorators = [
|
|
78
80
|
{ type: Component, args: [{
|
|
79
81
|
selector: 'valtimo-milestone-list',
|
|
80
|
-
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let milestoneGroup of milestones\" class=\"mb-4\">\n <valtimo-widget>\n <h4 (click)=\"editMilestoneSet(milestoneGroup[0].id)\" class=\"milestone-title\"
|
|
82
|
+
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let milestoneGroup of milestones\" class=\"mb-4\">\n <valtimo-widget>\n <h4 (click)=\"editMilestoneSet(milestoneGroup[0].id)\" class=\"milestone-title\">\n {{ milestoneGroup[0].title }} ({{ milestoneGroup[0].id }})\n </h4>\n <valtimo-list\n [items]=\"milestoneGroup[1]\"\n [fields]=\"milestoneFields\"\n (rowClicked)=\"editMilestone($event)\"\n >\n </valtimo-list>\n </valtimo-widget>\n</div>\n",
|
|
81
83
|
styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.milestone-title{background-color:#f8f9f9;border-bottom:1px solid #dee2e6;cursor:pointer;margin:0;padding:1em}"]
|
|
82
84
|
},] }
|
|
83
85
|
];
|
|
@@ -85,4 +87,4 @@ MilestoneListComponent.ctorParameters = () => [
|
|
|
85
87
|
{ type: MilestoneService },
|
|
86
88
|
{ type: Router }
|
|
87
89
|
];
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy1hNzM0YWFkYy93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9taWxlc3RvbmUvc3JjLyIsInNvdXJjZXMiOlsibGliL21pbGVzdG9uZS1saXN0L21pbGVzdG9uZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFPbkMsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUFvQixnQkFBa0MsRUFBVSxNQUFjO1FBQTFELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVnZFLGVBQVUsR0FBMkQsRUFBRSxDQUFDO1FBQ3hFLG9CQUFlLEdBQUc7WUFDdkIsRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7WUFDeEIsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUM7WUFDOUIsRUFBQyxHQUFHLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQztZQUMvQyxFQUFDLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1lBQ3pDLEVBQUMsR0FBRyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBQztZQUMzRCxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8s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dCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWlsZXN0b25lU2VydmljZX0gZnJvbSAnLi4vbWlsZXN0b25lLnNlcnZpY2UnO1xuaW1wb3J0IHtNaWxlc3RvbmUsIE1pbGVzdG9uZVNldH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1taWxlc3RvbmUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9taWxlc3RvbmUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21pbGVzdG9uZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1pbGVzdG9uZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgbWlsZXN0b25lczogQXJyYXk8QXJyYXk8c3RyaW5nIHwgTWlsZXN0b25lU2V0IHwgQXJyYXk8TWlsZXN0b25lPj4+ID0gW107XG4gIHB1YmxpYyBtaWxlc3RvbmVGaWVsZHMgPSBbXG4gICAge2tleTogJ2lkJywgbGFiZWw6ICdJRCd9LFxuICAgIHtrZXk6ICd0aXRsZScsIGxhYmVsOiAnVGl0bGUnfSxcbiAgICB7a2V5OiAncHJvY2Vzc0RlZmluaXRpb25LZXknLCBsYWJlbDogJ1Byb2Nlc3MnfSxcbiAgICB7a2V5OiAndGFza0RlZmluaXRpb25LZXknLCBsYWJlbDogJ1Rhc2snfSxcbiAgICB7a2V5OiAncGxhbm5lZEludGVydmFsSW5EYXlzJywgbGFiZWw6ICdJbnRlcnZhbCAoaW4gZGF5cyknfSxcbiAgICB7a2V5OiAnY29sb3InLCBsYWJlbDogJ0NvbG9yJ30sXG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtaWxlc3RvbmVTZXJ2aWNlOiBNaWxlc3RvbmVTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIGVkaXRNaWxlc3RvbmVTZXQobWlsZXN0b25lU2V0SWQ6IG51bWJlcikge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbWlsZXN0b25lcy9zZXRzL3NldCcsIG1pbGVzdG9uZVNldElkXSk7XG4gIH1cblxuICBlZGl0TWlsZXN0b25lKG1pbGVzdG9uZTogTWlsZXN0b25lKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtaWxlc3RvbmVzL21pbGVzdG9uZScsIG1pbGVzdG9uZS5pZF0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuZ2V0TWlsZXN0b25lcygpLFxuICAgICAgdGhpcy5taWxlc3RvbmVTZXJ2aWNlLmdldE1pbGVzdG9uZVNldHMoKSxcbiAgICBdKS5zdWJzY3JpYmUoKFttaWxlc3RvbmVzLCBtaWxlc3RvbmVTZXRzXSkgPT5cbiAgICAgIHRoaXMuaGFuZGxlTWlsZXN0b25lUmVzdWx0KG1pbGVzdG9uZXMsIG1pbGVzdG9uZVNldHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWlsZXN0b25lUmVzdWx0KFxuICAgIG1pbGVzdG9uZXM6IEFycmF5PE1pbGVzdG9uZT4sXG4gICAgbWlsZXN0b25lU2V0czogQXJyYXk8TWlsZXN0b25lU2V0PlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBtaWxlc3RvbmVTZXRzTWFwID0gdGhpcy5nZXRNaWxlc3RvbmVTZXRzTWFwKG1pbGVzdG9uZXMsIG1pbGVzdG9uZVNldHMpO1xuXG4gICAgdGhpcy5zZXRNaWxlc3RvbmVzKG1pbGVzdG9uZVNldHNNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRNaWxlc3RvbmVzKG1pbGVzdG9uZVNldHNNYXA6IE1hcDxzdHJpbmcsIE1pbGVzdG9uZVtdPik6IHZvaWQge1xuICAgIHRoaXMubWlsZXN0b25lcyA9IEFycmF5LmZyb20obWlsZXN0b25lU2V0c01hcC5lbnRyaWVzKCkpLm1hcChlbnRyeSA9PiB7XG4gICAgICBlbnRyeVswXSA9IEpTT04ucGFyc2UoZW50cnlbMF0pO1xuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaWxlc3RvbmVTZXRzTWFwKFxuICAgIG1pbGVzdG9uZXM6IEFycmF5PE1pbGVzdG9uZT4sXG4gICAgbWlsZXN0b25lU2V0czogQXJyYXk8TWlsZXN0b25lU2V0PlxuICApOiBNYXA8c3RyaW5nLCBNaWxlc3RvbmVbXT4ge1xuICAgIGNvbnN0IG1hcFdpdGhTZXRzID0gdGhpcy5hZGRNaWxlc3RvbmVTZXRzVG9NYXAobWlsZXN0b25lU2V0cywgdGhpcy5nZXRFbXB0eU1hcCgpKTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1pbGVzdG9uZXNUb01hcChtaWxlc3RvbmVzLCBtYXBXaXRoU2V0cyk7XG4gIH1cblxuICBwcml2YXRlIGdldEVtcHR5TWFwKCk6IE1hcDxzdHJpbmcsIE1pbGVzdG9uZVtdPiB7XG4gICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBNaWxlc3RvbmVbXT4oKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTWlsZXN0b25lU2V0c1RvTWFwKFxuICAgIG1pbGVzdG9uZVNldHM6IEFycmF5PE1pbGVzdG9uZVNldD4sXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBNaWxlc3RvbmVbXT5cbiAgKTogTWFwPHN0cmluZywgTWlsZXN0b25lW10+IHtcbiAgICBtaWxlc3RvbmVTZXRzLmZvckVhY2gobWlsZXN0b25lU2V0ID0+IHtcbiAgICAgIG1hcC5zZXQoSlNPTi5zdHJpbmdpZnkobWlsZXN0b25lU2V0KSwgW10pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTWlsZXN0b25lc1RvTWFwKFxuICAgIG1pbGVzdG9uZXM6IEFycmF5PE1pbGVzdG9uZT4sXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBNaWxlc3RvbmVbXT5cbiAgKTogTWFwPHN0cmluZywgTWlsZXN0b25lW10+IHtcbiAgICBtaWxlc3RvbmVzLmZvckVhY2gobWlsZXN0b25lID0+IHtcbiAgICAgIGNvbnN0IG1pbGVzdG9uZVNldFN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG1pbGVzdG9uZS5taWxlc3RvbmVTZXQpO1xuICAgICAgY29uc3QgYXJyID0gbWFwLmdldChtaWxlc3RvbmVTZXRTdHJpbmcpO1xuICAgICAgYXJyLnB1c2gobWlsZXN0b25lKTtcbiAgICAgIG1hcC5zZXQobWlsZXN0b25lU2V0U3RyaW5nLCBhcnIpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfVxufVxuIl19
|
|
@@ -22,38 +22,38 @@ import { MilestoneSetCreateComponent } from './milestone-set-create/milestone-se
|
|
|
22
22
|
import { MilestoneCreateComponent } from './milestone-create/milestone-create.component';
|
|
23
23
|
import { MilestoneSetEditComponent } from './milestone-set-edit/milestone-set-edit.component';
|
|
24
24
|
import { MilestoneEditComponent } from './milestone-edit/milestone-edit.component';
|
|
25
|
-
import { ROLE_ADMIN } from '@valtimo/
|
|
25
|
+
import { ROLE_ADMIN } from '@valtimo/config';
|
|
26
26
|
const ɵ0 = { title: 'Milestones', roles: [ROLE_ADMIN] }, ɵ1 = { title: 'Create new Milestone Set', roles: [ROLE_ADMIN] }, ɵ2 = { title: 'Create new Milestone', roles: [ROLE_ADMIN] }, ɵ3 = { title: 'Milestone Set details', roles: [ROLE_ADMIN] }, ɵ4 = { title: 'Milestone details', roles: [ROLE_ADMIN] };
|
|
27
27
|
const routes = [
|
|
28
28
|
{
|
|
29
29
|
path: 'milestones',
|
|
30
30
|
component: MilestoneComponent,
|
|
31
31
|
canActivate: [AuthGuardService],
|
|
32
|
-
data: ɵ0
|
|
32
|
+
data: ɵ0,
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
path: 'milestones/sets/create',
|
|
36
36
|
component: MilestoneSetCreateComponent,
|
|
37
37
|
canActivate: [AuthGuardService],
|
|
38
|
-
data: ɵ1
|
|
38
|
+
data: ɵ1,
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
path: 'milestones/create',
|
|
42
42
|
component: MilestoneCreateComponent,
|
|
43
43
|
canActivate: [AuthGuardService],
|
|
44
|
-
data: ɵ2
|
|
44
|
+
data: ɵ2,
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
path: 'milestones/sets/set/:id',
|
|
48
48
|
component: MilestoneSetEditComponent,
|
|
49
49
|
canActivate: [AuthGuardService],
|
|
50
|
-
data: ɵ3
|
|
50
|
+
data: ɵ3,
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
path: 'milestones/milestone/:id',
|
|
54
54
|
component: MilestoneEditComponent,
|
|
55
55
|
canActivate: [AuthGuardService],
|
|
56
|
-
data: ɵ4
|
|
56
|
+
data: ɵ4,
|
|
57
57
|
},
|
|
58
58
|
];
|
|
59
59
|
export class MilestoneRoutingModule {
|
|
@@ -61,12 +61,9 @@ export class MilestoneRoutingModule {
|
|
|
61
61
|
MilestoneRoutingModule.decorators = [
|
|
62
62
|
{ type: NgModule, args: [{
|
|
63
63
|
declarations: [],
|
|
64
|
-
imports: [
|
|
65
|
-
|
|
66
|
-
RouterModule.forChild(routes),
|
|
67
|
-
],
|
|
68
|
-
exports: [RouterModule]
|
|
64
|
+
imports: [CommonModule, RouterModule.forChild(routes)],
|
|
65
|
+
exports: [RouterModule],
|
|
69
66
|
},] }
|
|
70
67
|
];
|
|
71
68
|
export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4 };
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy1hNzM0YWFkYy93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9taWxlc3RvbmUvc3JjLyIsInNvdXJjZXMiOlsibGliL21pbGVzdG9uZS1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7V0FPakMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BTTFDLEVBQUMsS0FBSyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BTXhELEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BTXBELEVBQUMsS0FBSyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDLE9BTXJELEVBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDO0FBN0IzRCxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxrQkFBa0I7UUFDN0IsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxJQUE0QztLQUNqRDtJQUNEO1FBQ0UsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLElBQUksSUFBMEQ7S0FDL0Q7SUFDRDtRQUNFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsU0FBUyxFQUFFLHdCQUF3QjtRQUNuQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLElBQXNEO0tBQzNEO0lBQ0Q7UUFDRSxJQUFJLEVBQUUseUJBQXlCO1FBQy9CLFNBQVMsRUFBRSx5QkFBeUI7UUFDcEMsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxJQUF1RDtLQUM1RDtJQUNEO1FBQ0UsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLElBQUksSUFBbUQ7S0FDeEQ7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLHNCQUFzQjs7O1lBTGxDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBdXRoR3VhcmRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge01pbGVzdG9uZUNvbXBvbmVudH0gZnJvbSAnLi9taWxlc3RvbmUuY29tcG9uZW50JztcbmltcG9ydCB7TWlsZXN0b25lU2V0Q3JlYXRlQ29tcG9uZW50fSBmcm9tICcuL21pbGVzdG9uZS1zZXQtY3JlYXRlL21pbGVzdG9uZS1zZXQtY3JlYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge01pbGVzdG9uZUNyZWF0ZUNvbXBvbmVudH0gZnJvbSAnLi9taWxlc3RvbmUtY3JlYXRlL21pbGVzdG9uZS1jcmVhdGUuY29tcG9uZW50JztcbmltcG9ydCB7TWlsZXN0b25lU2V0RWRpdENvbXBvbmVudH0gZnJvbSAnLi9taWxlc3RvbmUtc2V0LWVkaXQvbWlsZXN0b25lLXNldC1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge01pbGVzdG9uZUVkaXRDb21wb25lbnR9IGZyb20gJy4vbWlsZXN0b25lLWVkaXQvbWlsZXN0b25lLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7Uk9MRV9BRE1JTn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnbWlsZXN0b25lcycsXG4gICAgY29tcG9uZW50OiBNaWxlc3RvbmVDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdNaWxlc3RvbmVzJywgcm9sZXM6IFtST0xFX0FETUlOXX0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnbWlsZXN0b25lcy9zZXRzL2NyZWF0ZScsXG4gICAgY29tcG9uZW50OiBNaWxlc3RvbmVTZXRDcmVhdGVDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdDcmVhdGUgbmV3IE1pbGVzdG9uZSBTZXQnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdtaWxlc3RvbmVzL2NyZWF0ZScsXG4gICAgY29tcG9uZW50OiBNaWxlc3RvbmVDcmVhdGVDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdDcmVhdGUgbmV3IE1pbGVzdG9uZScsIHJvbGVzOiBbUk9MRV9BRE1JTl19LFxuICB9LFxuICB7XG4gICAgcGF0aDogJ21pbGVzdG9uZXMvc2V0cy9zZXQvOmlkJyxcbiAgICBjb21wb25lbnQ6IE1pbGVzdG9uZVNldEVkaXRDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdNaWxlc3RvbmUgU2V0IGRldGFpbHMnLCByb2xlczogW1JPTEVfQURNSU5dfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdtaWxlc3RvbmVzL21pbGVzdG9uZS86aWQnLFxuICAgIGNvbXBvbmVudDogTWlsZXN0b25lRWRpdENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGRhdGE6IHt0aXRsZTogJ01pbGVzdG9uZSBkZXRhaWxzJywgcm9sZXM6IFtST0xFX0FETUlOXX0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBNaWxlc3RvbmVSb3V0aW5nTW9kdWxlIHt9XG4iXX0=
|
|
@@ -30,12 +30,12 @@ export class MilestoneSetCreateComponent {
|
|
|
30
30
|
}
|
|
31
31
|
ngOnInit() {
|
|
32
32
|
this.form = this.formBuilder.group({
|
|
33
|
-
title: new FormControl('', Validators.required)
|
|
33
|
+
title: new FormControl('', Validators.required),
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
reset() {
|
|
37
37
|
this.form.setValue({
|
|
38
|
-
title: ''
|
|
38
|
+
title: '',
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
createMilestoneSet() {
|
|
@@ -48,7 +48,7 @@ export class MilestoneSetCreateComponent {
|
|
|
48
48
|
MilestoneSetCreateComponent.decorators = [
|
|
49
49
|
{ type: Component, args: [{
|
|
50
50
|
selector: 'valtimo-milestone-set-create',
|
|
51
|
-
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n
|
|
51
|
+
template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"createMilestoneSet()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"title\">Title</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"title\"\n formControlName=\"title\"\n class=\"form-control\"\n placeholder=\"Milestone set title\"\n [ngClass]=\"{\n 'is-valid': formControls.title.touched && formControls.title.valid,\n 'is-invalid': formControls.title.touched && formControls.title.errors\n }\"\n required\n />\n <div\n *ngIf=\"formControls.title.touched && formControls.title.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.title.errors.required\">Title is required</div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/milestones'\" class=\"btn btn-space btn-default\">Back</a>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n",
|
|
52
52
|
styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */"]
|
|
53
53
|
},] }
|
|
54
54
|
];
|
|
@@ -58,4 +58,4 @@ MilestoneSetCreateComponent.ctorParameters = () => [
|
|
|
58
58
|
{ type: Router },
|
|
59
59
|
{ type: AlertService }
|
|
60
60
|
];
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsZXN0b25lLXNldC1jcmVhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy1hNzM0YWFkYy93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9taWxlc3RvbmUvc3JjLyIsInNvdXJjZXMiOlsibGliL21pbGVzdG9uZS1zZXQtY3JlYXRlL21pbGVzdG9uZS1zZXQtY3JlYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQU92QyxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDLFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxZQUEwQjtRQUgxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNqQyxDQUFDO0lBRUosSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2hELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFwQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLHduRkFBb0Q7O2FBRXJEOzs7WUFUTyxnQkFBZ0I7WUFDaEIsV0FBVztZQUVYLE1BQU07WUFETixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01pbGVzdG9uZVNlcnZpY2V9IGZyb20gJy4uL21pbGVzdG9uZS5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWxlcnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLW1pbGVzdG9uZS1zZXQtY3JlYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbGVzdG9uZS1zZXQtY3JlYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWlsZXN0b25lLXNldC1jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWlsZXN0b25lU2V0Q3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1pbGVzdG9uZVNlcnZpY2U6IE1pbGVzdG9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBnZXQgZm9ybUNvbnRyb2xzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgIHRpdGxlOiAnJyxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZU1pbGVzdG9uZVNldCgpIHtcbiAgICB0aGlzLm1pbGVzdG9uZVNlcnZpY2UuY3JlYXRlTWlsZXN0b25lU2V0KHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21pbGVzdG9uZXMnXSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdOZXcgTWlsZXN0b25lIHNldCBoYXMgYmVlbiBjcmVhdGVkJyk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|