@valtimo/task 4.21.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/assign-user-to-task/assign-user-to-task.component.mjs +125 -0
- package/esm2020/lib/models/index.mjs +21 -0
- package/esm2020/lib/models/task-definition.model.mjs +17 -0
- package/esm2020/lib/models/task-list.model.mjs +29 -0
- package/esm2020/lib/models/task.model.mjs +17 -0
- package/esm2020/lib/task-detail-modal/task-detail-modal.component.mjs +198 -0
- package/esm2020/lib/task-list/task-list.component.mjs +160 -0
- package/esm2020/lib/task-routing.module.mjs +45 -0
- package/esm2020/lib/task.module.mjs +107 -0
- package/esm2020/lib/task.service.mjs +59 -0
- package/esm2020/public_api.mjs +25 -0
- package/esm2020/valtimo-task.mjs +5 -0
- package/fesm2015/valtimo-task.mjs +724 -0
- package/fesm2015/valtimo-task.mjs.map +1 -0
- package/fesm2020/valtimo-task.mjs +758 -0
- package/fesm2020/valtimo-task.mjs.map +1 -0
- package/lib/assign-user-to-task/assign-user-to-task.component.d.ts +4 -0
- package/lib/assign-user-to-task/assign-user-to-task.component.d.ts.map +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -0
- package/lib/models/task-definition.model.d.ts +1 -0
- package/lib/models/task-definition.model.d.ts.map +1 -0
- package/lib/models/task-list.model.d.ts +1 -0
- package/lib/models/task-list.model.d.ts.map +1 -0
- package/lib/models/task.model.d.ts +10 -0
- package/lib/models/task.model.d.ts.map +1 -0
- package/lib/task-detail-modal/task-detail-modal.component.d.ts +31 -10
- package/lib/task-detail-modal/task-detail-modal.component.d.ts.map +1 -0
- package/lib/task-list/task-list.component.d.ts +4 -0
- package/lib/task-list/task-list.component.d.ts.map +1 -0
- package/lib/task-routing.module.d.ts +7 -0
- package/lib/task-routing.module.d.ts.map +1 -0
- package/lib/task.module.d.ts +16 -0
- package/lib/task.module.d.ts.map +1 -0
- package/lib/task.service.d.ts +6 -1
- package/lib/task.service.d.ts.map +1 -0
- package/package.json +23 -11
- package/public_api.d.ts +2 -0
- package/public_api.d.ts.map +1 -0
- package/valtimo-task.d.ts +2 -2
- package/valtimo-task.d.ts.map +1 -0
- package/bundles/valtimo-task.umd.js +0 -960
- package/bundles/valtimo-task.umd.js.map +0 -1
- package/bundles/valtimo-task.umd.min.js +0 -2
- package/bundles/valtimo-task.umd.min.js.map +0 -1
- package/esm2015/lib/assign-user-to-task/assign-user-to-task.component.js +0 -124
- package/esm2015/lib/models/index.js +0 -21
- package/esm2015/lib/models/task-definition.model.js +0 -16
- package/esm2015/lib/models/task-list.model.js +0 -29
- package/esm2015/lib/models/task.model.js +0 -16
- package/esm2015/lib/task-detail-modal/task-detail-modal.component.js +0 -127
- package/esm2015/lib/task-list/task-list.component.js +0 -166
- package/esm2015/lib/task-routing.module.js +0 -41
- package/esm2015/lib/task.module.js +0 -66
- package/esm2015/lib/task.service.js +0 -60
- package/esm2015/public_api.js +0 -24
- package/esm2015/valtimo-task.js +0 -7
- package/fesm2015/valtimo-task.js +0 -653
- package/fesm2015/valtimo-task.js.map +0 -1
- package/valtimo-task.metadata.json +0 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
18
|
+
import { take, tap } from 'rxjs/operators';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "../task.service";
|
|
21
|
+
import * as i2 from "@valtimo/components";
|
|
22
|
+
import * as i3 from "@angular/common";
|
|
23
|
+
import * as i4 from "@ngx-translate/core";
|
|
24
|
+
export class AssignUserToTaskComponent {
|
|
25
|
+
constructor(taskService) {
|
|
26
|
+
this.taskService = taskService;
|
|
27
|
+
this.assignmentOfTaskChanged = new EventEmitter();
|
|
28
|
+
this.candidateUsersForTask$ = new BehaviorSubject(undefined);
|
|
29
|
+
this.disabled$ = new BehaviorSubject(true);
|
|
30
|
+
this.assignedEmailOnServer$ = new BehaviorSubject(null);
|
|
31
|
+
this.userEmailToAssign = null;
|
|
32
|
+
this.assignedUserFullName$ = new BehaviorSubject(null);
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this.taskService.getCandidateUsers(this.taskId).subscribe(candidateUsers => {
|
|
36
|
+
this.candidateUsersForTask$.next(candidateUsers);
|
|
37
|
+
if (this.assigneeEmail) {
|
|
38
|
+
this.assignedEmailOnServer$.next(this.assigneeEmail);
|
|
39
|
+
this.userEmailToAssign = this.assigneeEmail;
|
|
40
|
+
this.assignedUserFullName$.next(this.getAssignedUserName(candidateUsers, this.assigneeEmail));
|
|
41
|
+
}
|
|
42
|
+
this.enable();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
ngOnChanges(changes) {
|
|
46
|
+
const assigneeEmail = changes.assigneeEmail;
|
|
47
|
+
if (assigneeEmail) {
|
|
48
|
+
this.candidateUsersForTask$.pipe(take(1)).subscribe(candidateUsers => {
|
|
49
|
+
const currentUserEmail = assigneeEmail.currentValue;
|
|
50
|
+
this.assignedEmailOnServer$.next(currentUserEmail || null);
|
|
51
|
+
this.userEmailToAssign = currentUserEmail || null;
|
|
52
|
+
this.assignedUserFullName$.next(this.getAssignedUserName(candidateUsers, currentUserEmail));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.clear();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
assignTask(userEmail) {
|
|
60
|
+
this.disable();
|
|
61
|
+
combineLatest([
|
|
62
|
+
this.candidateUsersForTask$,
|
|
63
|
+
this.taskService.assignTask(this.taskId, { assignee: userEmail }),
|
|
64
|
+
])
|
|
65
|
+
.pipe(take(1), tap(([candidateUsers]) => {
|
|
66
|
+
this.userEmailToAssign = userEmail;
|
|
67
|
+
this.assignedEmailOnServer$.next(userEmail);
|
|
68
|
+
this.assignedUserFullName$.next(this.getAssignedUserName(candidateUsers, userEmail));
|
|
69
|
+
this.emitChange();
|
|
70
|
+
this.enable();
|
|
71
|
+
}))
|
|
72
|
+
.subscribe();
|
|
73
|
+
}
|
|
74
|
+
unassignTask() {
|
|
75
|
+
this.disable();
|
|
76
|
+
this.taskService
|
|
77
|
+
.unassignTask(this.taskId)
|
|
78
|
+
.pipe(tap(() => {
|
|
79
|
+
this.clear();
|
|
80
|
+
this.emitChange();
|
|
81
|
+
this.enable();
|
|
82
|
+
}))
|
|
83
|
+
.subscribe();
|
|
84
|
+
}
|
|
85
|
+
getAssignedUserName(users, userEmail) {
|
|
86
|
+
if (users && userEmail) {
|
|
87
|
+
const findUser = users.find(user => user.email === userEmail);
|
|
88
|
+
return findUser ? findUser.fullName : '';
|
|
89
|
+
}
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
mapUsersForDropdown(users) {
|
|
93
|
+
return (users &&
|
|
94
|
+
users
|
|
95
|
+
.map(user => ({ ...user, lastName: user.lastName?.split(' ').splice(-1)[0] || '' }))
|
|
96
|
+
.sort((a, b) => a.lastName.localeCompare(b.lastName))
|
|
97
|
+
.map(user => ({ text: user.fullName, id: user.email })));
|
|
98
|
+
}
|
|
99
|
+
clear() {
|
|
100
|
+
this.assignedEmailOnServer$.next(null);
|
|
101
|
+
this.userEmailToAssign = null;
|
|
102
|
+
}
|
|
103
|
+
emitChange() {
|
|
104
|
+
this.assignmentOfTaskChanged.emit();
|
|
105
|
+
}
|
|
106
|
+
enable() {
|
|
107
|
+
this.disabled$.next(false);
|
|
108
|
+
}
|
|
109
|
+
disable() {
|
|
110
|
+
this.disabled$.next(true);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
AssignUserToTaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AssignUserToTaskComponent, deps: [{ token: i1.TaskService }], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
+
AssignUserToTaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AssignUserToTaskComponent, selector: "valtimo-assign-user-to-task", inputs: { taskId: "taskId", assigneeEmail: "assigneeEmail" }, outputs: { assignmentOfTaskChanged: "assignmentOfTaskChanged" }, usesOnChanges: true, ngImport: i0, template: "<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n emailOnServer: assignedEmailOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngIf=\"obs.candidateUsers; else loading\">\n <valtimo-searchable-dropdown-select\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userEmailToAssign === obs.emailOnServer && obs.emailOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5>\n <b>{{ 'assignTask.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n", styles: [".container-fluid{color:#959595}i{font-size:13px}\n"], components: [{ type: i2.SearchableDropdownSelectComponent, selector: "valtimo-searchable-dropdown-select", inputs: ["style", "items", "buttonText", "searchText", "noResultsText", "disabled", "selectedText", "selectedTextValue", "clearSelectionButtonTitle", "hasSelection", "width"], outputs: ["itemSelected", "clearSelection"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe } });
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AssignUserToTaskComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{ selector: 'valtimo-assign-user-to-task', template: "<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n emailOnServer: assignedEmailOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngIf=\"obs.candidateUsers; else loading\">\n <valtimo-searchable-dropdown-select\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userEmailToAssign === obs.emailOnServer && obs.emailOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5>\n <b>{{ 'assignTask.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n", styles: [".container-fluid{color:#959595}i{font-size:13px}\n"] }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.TaskService }]; }, propDecorators: { taskId: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], assigneeEmail: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], assignmentOfTaskChanged: [{
|
|
123
|
+
type: Output
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXVzZXItdG8tdGFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9hc3NpZ24tdXNlci10by10YXNrL2Fzc2lnbi11c2VyLXRvLXRhc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvYXNzaWduLXVzZXItdG8tdGFzay9hc3NpZ24tdXNlci10by10YXNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTekMsTUFBTSxPQUFPLHlCQUF5QjtJQVdwQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVJsQyw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZELDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMvQywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzRCxzQkFBaUIsR0FBVyxJQUFJLENBQUM7UUFDakMsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7SUFFWCxDQUFDO0lBRWhELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLElB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LFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOztzSEEzR1UseUJBQXlCOzBHQUF6Qix5QkFBeUIsdU5DcEN0QyxnOUNBc0NBOzJGREZhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSw2QkFBNkI7a0dBSzlCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtUYXNrU2VydmljZX0gZnJvbSAnLi4vdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7VXNlcn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1hc3NpZ24tdXNlci10by10YXNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2lnbi11c2VyLXRvLXRhc2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NpZ24tdXNlci10by10YXNrLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnblVzZXJUb1Rhc2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHRhc2tJZDogc3RyaW5nO1xuICBASW5wdXQoKSBhc3NpZ25lZUVtYWlsOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjYW5kaWRhdGVVc2Vyc0ZvclRhc2skID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyW10+KHVuZGVmaW5lZCk7XG4gIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIGFzc2lnbmVkRW1haWxPblNlcnZlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHVzZXJFbWFpbFRvQXNzaWduOiBzdHJpbmcgPSBudWxsO1xuICBhc3NpZ25lZFVzZXJGdWxsTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YXNrU2VydmljZS5nZXRDYW5kaWRhdGVVc2Vycyh0aGlzLnRhc2tJZCkuc3Vic2NyaWJlKGNhbmRpZGF0ZVVzZXJzID0+IHtcbiAgICAgIHRoaXMuY2FuZGlkYXRlVXNlcnNGb3JUYXNrJC5uZXh0KGNhbmRpZGF0ZVVzZXJzKTtcbiAgICAgIGlmICh0aGlzLmFzc2lnbmVlRW1haWwpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25lZEVtYWlsT25TZXJ2ZXIkLm5leHQodGhpcy5hc3NpZ25lZUVtYWlsKTtcbiAgICAgICAgdGhpcy51c2VyRW1haWxUb0Fzc2lnbiA9IHRoaXMuYXNzaWduZWVFbWFpbDtcbiAgICAgICAgdGhpcy5hc3NpZ25lZFVzZXJGdWxsTmFtZSQubmV4dChcbiAgICAgICAgICB0aGlzLmdldEFzc2lnbmVkVXNlck5hbWUoY2FuZGlkYXRlVXNlcnMsIHRoaXMuYXNzaWduZWVFbWFpbClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgYXNzaWduZWVFbWFpbCA9IGNoYW5nZXMuYXNzaWduZWVFbWFpbDtcbiAgICBpZiAoYXNzaWduZWVFbWFpbCkge1xuICAgICAgdGhpcy5jYW5kaWRhdGVVc2Vyc0ZvclRhc2skLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhbmRpZGF0ZVVzZXJzID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFVzZXJFbWFpbCA9IGFzc2lnbmVlRW1haWwuY3VycmVudFZhbHVlO1xuICAgICAgICB0aGlzLmFzc2lnbmVkRW1haWxPblNlcnZlciQubmV4dChjdXJyZW50VXNlckVtYWlsIHx8IG51bGwpO1xuICAgICAgICB0aGlzLnVzZXJFbWFpbFRvQXNzaWduID0gY3VycmVudFVzZXJFbWFpbCB8fCBudWxsO1xuICAgICAgICB0aGlzLmFzc2lnbmVkVXNlckZ1bGxOYW1lJC5uZXh0KHRoaXMuZ2V0QXNzaWduZWRVc2VyTmFtZShjYW5kaWRhdGVVc2VycywgY3VycmVudFVzZXJFbWFpbCkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBhc3NpZ25UYXNrKHVzZXJFbWFpbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNhbmRpZGF0ZVVzZXJzRm9yVGFzayQsXG4gICAgICB0aGlzLnRhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGhpcy50YXNrSWQsIHthc3NpZ25lZTogdXNlckVtYWlsfSksXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKFtjYW5kaWRhdGVVc2Vyc10pID0+IHtcbiAgICAgICAgICB0aGlzLnVzZXJFbWFpbFRvQXNzaWduID0gdXNlckVtYWlsO1xuICAgICAgICAgIHRoaXMuYXNzaWduZWRFbWFpbE9uU2VydmVyJC5uZXh0KHVzZXJFbWFpbCk7XG4gICAgICAgICAgdGhpcy5hc3NpZ25lZFVzZXJGdWxsTmFtZSQubmV4dCh0aGlzLmdldEFzc2lnbmVkVXNlck5hbWUoY2FuZGlkYXRlVXNlcnMsIHVzZXJFbWFpbCkpO1xuICAgICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB1bmFzc2lnblRhc2soKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgdGhpcy50YXNrU2VydmljZVxuICAgICAgLnVuYXNzaWduVGFzayh0aGlzLnRhc2tJZClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0QXNzaWduZWRVc2VyTmFtZSh1c2VyczogVXNlcltdLCB1c2VyRW1haWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVzZXJzICYmIHVzZXJFbWFpbCkge1xuICAgICAgY29uc3QgZmluZFVzZXIgPSB1c2Vycy5maW5kKHVzZXIgPT4gdXNlci5lbWFpbCA9PT0gdXNlckVtYWlsKTtcbiAgICAgIHJldHVybiBmaW5kVXNlciA/IGZpbmRVc2VyLmZ1bGxOYW1lIDogJyc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG1hcFVzZXJzRm9yRHJvcGRvd24odXNlcnM6IFVzZXJbXSk6IERyb3Bkb3duSXRlbVtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgdXNlcnMgJiZcbiAgICAgIHVzZXJzXG4gICAgICAgIC5tYXAodXNlciA9PiAoey4uLnVzZXIsIGxhc3ROYW1lOiB1c2VyLmxhc3ROYW1lPy5zcGxpdCgnICcpLnNwbGljZSgtMSlbMF0gfHwgJyd9KSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubGFzdE5hbWUubG9jYWxlQ29tcGFyZShiLmxhc3ROYW1lKSlcbiAgICAgICAgLm1hcCh1c2VyID0+ICh7dGV4dDogdXNlci5mdWxsTmFtZSwgaWQ6IHVzZXIuZW1haWx9KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lnbmVkRW1haWxPblNlcnZlciQubmV4dChudWxsKTtcbiAgICB0aGlzLnVzZXJFbWFpbFRvQXNzaWduID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lnbm1lbnRPZlRhc2tDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgY2FuZGlkYXRlVXNlcnM6IGNhbmRpZGF0ZVVzZXJzRm9yVGFzayQgfCBhc3luYyxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgZW1haWxPblNlcnZlcjogYXNzaWduZWRFbWFpbE9uU2VydmVyJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMiBtYi0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHBsLTAgZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmNhbmRpZGF0ZVVzZXJzOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgICAgICA8dmFsdGltby1zZWFyY2hhYmxlLWRyb3Bkb3duLXNlbGVjdFxuICAgICAgICAgICAgW3N0eWxlXT1cIid1bmRlcmxpbmVkVGV4dCdcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIm1hcFVzZXJzRm9yRHJvcGRvd24ob2JzLmNhbmRpZGF0ZVVzZXJzKVwiXG4gICAgICAgICAgICBbYnV0dG9uVGV4dF09XCInYXNzaWduVGFzay5oZWFkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cIidpbnRlcmZhY2UudHlwZVRvU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbbm9SZXN1bHRzVGV4dF09XCInaW50ZXJmYWNlLm5vU2VhcmNoUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRUZXh0XT1cIidhc3NpZ25UYXNrLmFzc2lnbmVkVG8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFRleHRWYWx1ZV09XCJhc3NpZ25lZFVzZXJGdWxsTmFtZSQgfCBhc3luY1wiXG4gICAgICAgICAgICBbY2xlYXJTZWxlY3Rpb25CdXR0b25UaXRsZV09XCInYXNzaWduVGFzay5yZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtoYXNTZWxlY3Rpb25dPVwidXNlckVtYWlsVG9Bc3NpZ24gPT09IG9icy5lbWFpbE9uU2VydmVyICYmIG9icy5lbWFpbE9uU2VydmVyICE9PSBudWxsXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIyNTBcIlxuICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJhc3NpZ25UYXNrKCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyU2VsZWN0aW9uKT1cInVuYXNzaWduVGFzaygpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC92YWx0aW1vLXNlYXJjaGFibGUtZHJvcGRvd24tc2VsZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxoNT5cbiAgICA8Yj57eyAnYXNzaWduVGFzay5mZXRjaGluZ1VzZXJzJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgPC9oNT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* * Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
4
|
+
* *
|
|
5
|
+
* * Licensed under EUPL, Version 1.2 (the "License");
|
|
6
|
+
* * you may not use this file except in compliance with the License.
|
|
7
|
+
* * You may obtain a copy of the License at
|
|
8
|
+
* *
|
|
9
|
+
* * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
10
|
+
* *
|
|
11
|
+
* * Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* * distributed under the License is distributed on an "AS IS" basis,
|
|
13
|
+
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* * See the License for the specific language governing permissions and
|
|
15
|
+
* * limitations under the License.
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export * from './task.model';
|
|
19
|
+
export * from './task-definition.model';
|
|
20
|
+
export * from './task-list.model';
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICpcbiAqICAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICogICpcbiAqICAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiAgKlxuICogICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICogICpcbiAqICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdGFzay5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stZGVmaW5pdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC5tb2RlbCc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1kZWZpbml0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvbW9kZWxzL3Rhc2stZGVmaW5pdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Rm9ybURlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbWFuYWdlbWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0RlZmluaXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbiB8IG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export class TaskList {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.tasks = [];
|
|
19
|
+
this.fields = [];
|
|
20
|
+
this.pagination = {
|
|
21
|
+
collectionSize: 0,
|
|
22
|
+
page: 1,
|
|
23
|
+
size: 10,
|
|
24
|
+
maxPaginationItemSize: 5,
|
|
25
|
+
};
|
|
26
|
+
this.page = 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvbW9kZWxzL3Rhc2stbGlzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ1MsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osZUFBVSxHQUFHO1lBQ1gsY0FBYyxFQUFFLENBQUM7WUFDakIsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtZQUNSLHFCQUFxQixFQUFFLENBQUM7U0FDekIsQ0FBQztRQUNGLFNBQUksR0FBRyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgY2xhc3MgVGFza0xpc3Qge1xuICBwdWJsaWMgdGFza3MgPSBbXTtcbiAgZmllbGRzID0gW107XG4gIHBhZ2luYXRpb24gPSB7XG4gICAgY29sbGVjdGlvblNpemU6IDAsXG4gICAgcGFnZTogMSxcbiAgICBzaXplOiAxMCxcbiAgICBtYXhQYWdpbmF0aW9uSXRlbVNpemU6IDUsXG4gIH07XG4gIHBhZ2UgPSAwO1xufVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL21vZGVscy90YXNrLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtVc2VyfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhc2sge1xuICBhc3NpZ25lZTogc3RyaW5nO1xuICBjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIGNhc2VFeGVjdXRpb25JZDogc3RyaW5nO1xuICBjYXNlSW5zdGFuY2VJZDogc3RyaW5nO1xuICBjcmVhdGVkOiBzdHJpbmc7XG4gIGRlbGVnYXRpb25TdGF0ZTogYW55O1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkdWU6IHN0cmluZztcbiAgZXhlY3V0aW9uSWQ6IHN0cmluZztcbiAgZm9sbG93VXA6IGFueTtcbiAgZm9ybUtleTogc3RyaW5nO1xuICBmb3JtbGVzczogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbiAgbGlzdEl0ZW1GaWVsZHM6IExpc3RJdGVtRmllbGRbXTtcbiAgbmFtZTogc3RyaW5nO1xuICBvd25lcjogc3RyaW5nO1xuICBwYXJlbnRUYXNrSWQ6IHN0cmluZztcbiAgcHJpb3JpdHk6IG51bWJlcjtcbiAgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICBzdXNwZW5kZWQ6IGJvb2xlYW47XG4gIHRhc2tEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIGZvcm1Mb2NhdGlvbjogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nO1xuICB2YWx0aW1vQXNzaWduZWU6IFVzZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1GaWVsZCB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lnbmVlUmVxdWVzdCB7XG4gIGFzc2lnbmVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRhc2tQcm9jZXNzTGlua1R5cGUgPSAnZm9ybScgfCAnZm9ybS1mbG93JztcblxuZXhwb3J0IGludGVyZmFjZSBUYXNrUHJvY2Vzc0xpbmtSZXN1bHQge1xuICB0eXBlOiBUYXNrUHJvY2Vzc0xpbmtUeXBlO1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgZm9ybUxpbmtJZD86IHN0cmluZztcbiAgICBmb3JtRmxvd0lkPzogc3RyaW5nO1xuICAgIGZvcm1GbG93SW5zdGFuY2VJZD86IHN0cmluZztcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
17
|
+
import { FormioOptionsImpl } from '@valtimo/components';
|
|
18
|
+
import moment from 'moment';
|
|
19
|
+
import { map, take } from 'rxjs/operators';
|
|
20
|
+
import { BehaviorSubject } from 'rxjs';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "ngx-toastr";
|
|
23
|
+
import * as i2 from "@valtimo/form-link";
|
|
24
|
+
import * as i3 from "@angular/router";
|
|
25
|
+
import * as i4 from "ngx-logger";
|
|
26
|
+
import * as i5 from "../task.service";
|
|
27
|
+
import * as i6 from "@valtimo/components";
|
|
28
|
+
import * as i7 from "../assign-user-to-task/assign-user-to-task.component";
|
|
29
|
+
import * as i8 from "@angular/common";
|
|
30
|
+
import * as i9 from "@ngx-translate/core";
|
|
31
|
+
moment.locale(localStorage.getItem('langKey') || '');
|
|
32
|
+
export class TaskDetailModalComponent {
|
|
33
|
+
constructor(toastr, formLinkService, formFlowService, router, logger, route, taskService) {
|
|
34
|
+
this.toastr = toastr;
|
|
35
|
+
this.formLinkService = formLinkService;
|
|
36
|
+
this.formFlowService = formFlowService;
|
|
37
|
+
this.router = router;
|
|
38
|
+
this.logger = logger;
|
|
39
|
+
this.route = route;
|
|
40
|
+
this.taskService = taskService;
|
|
41
|
+
this.formSubmit = new EventEmitter();
|
|
42
|
+
this.assignmentOfTaskChanged = new EventEmitter();
|
|
43
|
+
this.task = null;
|
|
44
|
+
this.page = null;
|
|
45
|
+
this.errorMessage = null;
|
|
46
|
+
this.taskProcessLinkType$ = new BehaviorSubject(null);
|
|
47
|
+
this.processLinkIsForm$ = this.taskProcessLinkType$.pipe(map(type => type === 'form'));
|
|
48
|
+
this.processLinkIsFormFlow$ = this.taskProcessLinkType$.pipe(map(type => type === 'form-flow'));
|
|
49
|
+
this.formFlowStepType$ = new BehaviorSubject(null);
|
|
50
|
+
this.formFlowStepTypeIsForm$ = this.formFlowStepType$.pipe(map(type => type === 'form'));
|
|
51
|
+
this.formioOptions = new FormioOptionsImpl();
|
|
52
|
+
this.formioOptions.disableAlerts = true;
|
|
53
|
+
}
|
|
54
|
+
openTaskDetails(task) {
|
|
55
|
+
this.resetTaskProcessLinkType();
|
|
56
|
+
this.resetFormDefinition();
|
|
57
|
+
this.getTaskProcessLink(task.id);
|
|
58
|
+
this.task = task;
|
|
59
|
+
this.page = {
|
|
60
|
+
title: task.name,
|
|
61
|
+
subtitle: `Created ${task.created}`,
|
|
62
|
+
};
|
|
63
|
+
this.formLinkService
|
|
64
|
+
.getPreFilledFormDefinitionByFormLinkId(task.processDefinitionKey, task.businessKey, task.taskDefinitionKey, task.id // taskInstanceId
|
|
65
|
+
)
|
|
66
|
+
.subscribe(formDefinition => {
|
|
67
|
+
this.formAssociation = formDefinition.formAssociation;
|
|
68
|
+
const className = this.formAssociation.formLink.className.split('.');
|
|
69
|
+
const linkType = className[className.length - 1];
|
|
70
|
+
switch (linkType) {
|
|
71
|
+
case 'BpmnElementFormIdLink':
|
|
72
|
+
this.setFormDefinitionAndOpenModal(formDefinition);
|
|
73
|
+
break;
|
|
74
|
+
case 'BpmnElementFormFlowIdLink':
|
|
75
|
+
// We can't use the formDefinition here because the form definition is provided per form flow step
|
|
76
|
+
// I'm still leaving this in here in case we want to add form flow specific code.
|
|
77
|
+
break;
|
|
78
|
+
case 'BpmnElementUrlLink':
|
|
79
|
+
this.openUrlLink(formDefinition);
|
|
80
|
+
break;
|
|
81
|
+
case 'BpmnElementAngularStateUrlLink':
|
|
82
|
+
this.openAngularStateUrlLink(task, formDefinition);
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
this.logger.fatal('Unsupported class name');
|
|
86
|
+
}
|
|
87
|
+
}, errors => {
|
|
88
|
+
if (errors?.error?.detail) {
|
|
89
|
+
this.errorMessage = errors.error.detail;
|
|
90
|
+
}
|
|
91
|
+
this.modal.show();
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
gotoFormLinkScreen() {
|
|
95
|
+
this.modal.hide();
|
|
96
|
+
this.router.navigate(['form-links']);
|
|
97
|
+
}
|
|
98
|
+
onSubmit(submission) {
|
|
99
|
+
if (this.taskProcessLinkType$.getValue() === 'form') {
|
|
100
|
+
this.formLinkService
|
|
101
|
+
.onSubmit(this.task.processDefinitionKey, this.formAssociation.formLink.id, submission.data, this.task.businessKey, this.task.id)
|
|
102
|
+
.subscribe((_) => {
|
|
103
|
+
this.completeTask();
|
|
104
|
+
}, errors => {
|
|
105
|
+
this.form.showErrors(errors);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (this.taskProcessLinkType$.getValue() === 'form-flow') {
|
|
109
|
+
if (submission.data.submit) {
|
|
110
|
+
this.formFlowService.submitStep(this.formFlowInstanceId, this.formFlowStepInstanceId, submission.data).subscribe((result) => this.handleFormFlowStep(result), errors => this.form.showErrors(errors));
|
|
111
|
+
}
|
|
112
|
+
else if (submission.data['back']) {
|
|
113
|
+
this.formFlowService.back(this.formFlowInstanceId).subscribe((result) => this.handleFormFlowStep(result), errors => this.form.showErrors(errors));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
resetFormDefinition() {
|
|
118
|
+
this.formDefinition = null;
|
|
119
|
+
}
|
|
120
|
+
getTaskProcessLink(taskId) {
|
|
121
|
+
this.taskService.getTaskProcessLink(taskId).subscribe(res => {
|
|
122
|
+
switch (res?.type) {
|
|
123
|
+
case 'form':
|
|
124
|
+
this.taskProcessLinkType$.next('form');
|
|
125
|
+
break;
|
|
126
|
+
case 'form-flow':
|
|
127
|
+
this.taskProcessLinkType$.next('form-flow');
|
|
128
|
+
this.getFormFlowStep(res?.properties.formFlowInstanceId);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
getFormFlowStep(formFlowInstanceId) {
|
|
134
|
+
this.formFlowService.getFormFlowStep(formFlowInstanceId).subscribe((result) => {
|
|
135
|
+
this.handleFormFlowStep(result);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
handleFormFlowStep(formFlowInstance) {
|
|
139
|
+
if (formFlowInstance.step === null) {
|
|
140
|
+
this.formFlowStepType$.next(null);
|
|
141
|
+
this.formFlowInstanceId = null;
|
|
142
|
+
this.formFlowStepInstanceId = null;
|
|
143
|
+
this.completeTask();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.formFlowStepType$.next(formFlowInstance.step.type);
|
|
147
|
+
this.formFlowInstanceId = formFlowInstance.id;
|
|
148
|
+
this.formFlowStepInstanceId = formFlowInstance.step.id;
|
|
149
|
+
this.setFormDefinitionAndOpenModal(formFlowInstance.step.typeProperties.definition);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
completeTask() {
|
|
153
|
+
this.toastr.success(this.task.name + ' has successfully been completed');
|
|
154
|
+
this.modal.hide();
|
|
155
|
+
this.task = null;
|
|
156
|
+
this.formSubmit.emit();
|
|
157
|
+
}
|
|
158
|
+
resetTaskProcessLinkType() {
|
|
159
|
+
this.taskProcessLinkType$.next(null);
|
|
160
|
+
}
|
|
161
|
+
setFormDefinitionAndOpenModal(formDefinition) {
|
|
162
|
+
this.formDefinition = formDefinition;
|
|
163
|
+
this.modal.show();
|
|
164
|
+
}
|
|
165
|
+
openUrlLink(formDefinition) {
|
|
166
|
+
const url = this.router.serializeUrl(this.router.createUrlTree([formDefinition.formAssociation.formLink.url]));
|
|
167
|
+
window.open(url, '_blank');
|
|
168
|
+
}
|
|
169
|
+
openAngularStateUrlLink(task, formDefinition) {
|
|
170
|
+
this.route.params.pipe(take(1)).subscribe(params => {
|
|
171
|
+
const taskId = task?.id;
|
|
172
|
+
const documentId = params?.documentId;
|
|
173
|
+
this.router.navigate([formDefinition.formAssociation.formLink.url], {
|
|
174
|
+
state: {
|
|
175
|
+
...(taskId && { taskId }),
|
|
176
|
+
...(documentId && { documentId }),
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
TaskDetailModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: TaskDetailModalComponent, deps: [{ token: i1.ToastrService }, { token: i2.FormLinkService }, { token: i2.FormFlowService }, { token: i3.Router }, { token: i4.NGXLogger }, { token: i3.ActivatedRoute }, { token: i5.TaskService }], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
TaskDetailModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: TaskDetailModalComponent, selector: "valtimo-task-detail-modal", outputs: { formSubmit: "formSubmit", assignmentOfTaskChanged: "assignmentOfTaskChanged" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "modal", first: true, predicate: ["taskDetailModal"], descendants: true }], ngImport: i0, 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<valtimo-modal\n #taskDetailModal\n elementId=\"taskDetailModal\"\n [title]=\"page?.title\"\n [subtitle]=\"page?.subtitle\"\n [templateBelowSubtitle]=\"assignUserToTask\"\n>\n <div body *ngIf=\"formDefinition && ((processLinkIsForm$ | async) || (formFlowStepTypeIsForm$ | async))\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition && !errorMessage\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFound'\"\n ></div>\n </div>\n <div body *ngIf=\"errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ errorMessage }}\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!formDefinition\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n\n<ng-template #assignUserToTask>\n <valtimo-assign-user-to-task\n *ngIf=\"task && assignmentOfTaskChanged\"\n [taskId]=\"task.id\"\n [assigneeEmail]=\"task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n</ng-template>\n", 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 */#taskDetailModal .formio-component-submit{text-align:right}\n"], components: [{ type: i6.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { type: i6.FormioComponent, selector: "valtimo-form-io", inputs: ["form", "options", "submission", "formRefresh$"], outputs: ["submit", "change"] }, { type: i7.AssignUserToTaskComponent, selector: "valtimo-assign-user-to-task", inputs: ["taskId", "assigneeEmail"], outputs: ["assignmentOfTaskChanged"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "async": i8.AsyncPipe, "translate": i9.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: TaskDetailModalComponent, decorators: [{
|
|
185
|
+
type: Component,
|
|
186
|
+
args: [{ selector: 'valtimo-task-detail-modal', encapsulation: ViewEncapsulation.None, 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<valtimo-modal\n #taskDetailModal\n elementId=\"taskDetailModal\"\n [title]=\"page?.title\"\n [subtitle]=\"page?.subtitle\"\n [templateBelowSubtitle]=\"assignUserToTask\"\n>\n <div body *ngIf=\"formDefinition && ((processLinkIsForm$ | async) || (formFlowStepTypeIsForm$ | async))\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition && !errorMessage\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFound'\"\n ></div>\n </div>\n <div body *ngIf=\"errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ errorMessage }}\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!formDefinition\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n\n<ng-template #assignUserToTask>\n <valtimo-assign-user-to-task\n *ngIf=\"task && assignmentOfTaskChanged\"\n [taskId]=\"task.id\"\n [assigneeEmail]=\"task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n</ng-template>\n", 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 */#taskDetailModal .formio-component-submit{text-align:right}\n"] }]
|
|
187
|
+
}], ctorParameters: function () { return [{ type: i1.ToastrService }, { type: i2.FormLinkService }, { type: i2.FormFlowService }, { type: i3.Router }, { type: i4.NGXLogger }, { type: i3.ActivatedRoute }, { type: i5.TaskService }]; }, propDecorators: { form: [{
|
|
188
|
+
type: ViewChild,
|
|
189
|
+
args: ['form']
|
|
190
|
+
}], modal: [{
|
|
191
|
+
type: ViewChild,
|
|
192
|
+
args: ['taskDetailModal']
|
|
193
|
+
}], formSubmit: [{
|
|
194
|
+
type: Output
|
|
195
|
+
}], assignmentOfTaskChanged: [{
|
|
196
|
+
type: Output
|
|
197
|
+
}] } });
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1kZXRhaWwtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvdGFzay1kZXRhaWwtbW9kYWwvdGFzay1kZXRhaWwtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvdGFzay1kZXRhaWwtbW9kYWwvdGFzay1kZXRhaWwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBa0IsaUJBQWlCLEVBQXlELE1BQU0scUJBQXFCLENBQUM7QUFXL0gsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFFckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBUXJELE1BQU0sT0FBTyx3QkFBd0I7SUF1Qm5DLFlBQ21CLE1BQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxNQUFpQixFQUNqQixLQUFxQixFQUNyQixXQUF3QjtRQU54QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FB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O1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEE3TVUsd0JBQXdCO3lHQUF4Qix3QkFBd0IscVZDNUNyQywybUVBZ0VBOzJGRHBCYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0UsMkJBQTJCLGlCQUd0QixpQkFBaUIsQ0FBQyxJQUFJO29RQUdsQixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ2EsS0FBSztzQkFBbEMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ2xCLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Rm9ybWlvQ29tcG9uZW50LCBGb3JtaW9PcHRpb25zSW1wbCwgRm9ybWlvU3VibWlzc2lvbiwgTW9kYWxDb21wb25lbnQsIFZhbHRpbW9Gb3JtaW9PcHRpb25zfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VGFzaywgVGFza1Byb2Nlc3NMaW5rVHlwZX0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEZvcm1Bc3NvY2lhdGlvbixcbiAgRm9ybUZsb3dJbnN0YW5jZSxcbiAgRm9ybUZsb3dTZXJ2aWNlLFxuICBGb3JtRmxvd1N0ZXBUeXBlLFxuICBGb3JtTGlua1NlcnZpY2UsXG4gIEZvcm1TdWJtaXNzaW9uUmVzdWx0XG59IGZyb20gJ0B2YWx0aW1vL2Zvcm0tbGluayc7XG5pbXBvcnQge0Zvcm1pb0Zvcm19IGZyb20gJ2FuZ3VsYXItZm9ybWlvJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7VG9hc3RyU2VydmljZX0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtUYXNrU2VydmljZX0gZnJvbSAnLi4vdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YXNrLWRldGFpbC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrLWRldGFpbC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBmb3JtOiBGb3JtaW9Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWxNb2RhbCcpIG1vZGFsOiBNb2RhbENvbXBvbmVudDtcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgdGFzazogVGFzayB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIHB1YmxpYyBmb3JtRmxvd0luc3RhbmNlSWQ6IHN0cmluZztcbiAgcHVibGljIGZvcm1GbG93U3RlcEluc3RhbmNlSWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBwYWdlOiBhbnkgPSBudWxsO1xuICBwdWJsaWMgZm9ybWlvT3B0aW9uczogVmFsdGltb0Zvcm1pb09wdGlvbnM7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XG5cbiAgcHJpdmF0ZSBmb3JtQXNzb2NpYXRpb246IEZvcm1Bc3NvY2lhdGlvbjtcbiAgcHJpdmF0ZSB0YXNrUHJvY2Vzc0xpbmtUeXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFza1Byb2Nlc3NMaW5rVHlwZSB8IG51bGw+KG51bGwpO1xuXG4gIHByb2Nlc3NMaW5rSXNGb3JtJCA9IHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQucGlwZShtYXAodHlwZSA9PiB0eXBlID09PSAnZm9ybScpKTtcbiAgcHJvY2Vzc0xpbmtJc0Zvcm1GbG93JCA9IHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQucGlwZShtYXAodHlwZSA9PiB0eXBlID09PSAnZm9ybS1mbG93JykpO1xuXG4gIHByaXZhdGUgZm9ybUZsb3dTdGVwVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1GbG93U3RlcFR5cGUgfCBudWxsPihudWxsKTtcbiAgZm9ybUZsb3dTdGVwVHlwZUlzRm9ybSQgPSB0aGlzLmZvcm1GbG93U3RlcFR5cGUkLnBpcGUobWFwKCB0eXBlID0+IHR5cGUgPT09ICdmb3JtJykpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUxpbmtTZXJ2aWNlOiBGb3JtTGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmxvd1NlcnZpY2U6IEZvcm1GbG93U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgb3BlblRhc2tEZXRhaWxzKHRhc2s6IFRhc2spIHtcbiAgICB0aGlzLnJlc2V0VGFza1Byb2Nlc3NMaW5rVHlwZSgpO1xuICAgIHRoaXMucmVzZXRGb3JtRGVmaW5pdGlvbigpO1xuICAgIHRoaXMuZ2V0VGFza1Byb2Nlc3NMaW5rKHRhc2suaWQpO1xuXG4gICAgdGhpcy50YXNrID0gdGFzaztcbiAgICB0aGlzLnBhZ2UgPSB7XG4gICAgICB0aXRsZTogdGFzay5uYW1lLFxuICAgICAgc3VidGl0bGU6IGBDcmVhdGVkICR7dGFzay5jcmVhdGVkfWAsXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybUxpbmtTZXJ2aWNlXG4gICAgICAuZ2V0UHJlRmlsbGVkRm9ybURlZmluaXRpb25CeUZvcm1MaW5rSWQoXG4gICAgICAgIHRhc2sucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgIHRhc2suYnVzaW5lc3NLZXksXG4gICAgICAgIHRhc2sudGFza0RlZmluaXRpb25LZXksXG4gICAgICAgIHRhc2suaWQgLy8gdGFza0luc3RhbmNlSWRcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIGZvcm1EZWZpbml0aW9uID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1Bc3NvY2lhdGlvbiA9IGZvcm1EZWZpbml0aW9uLmZvcm1Bc3NvY2lhdGlvbjtcblxuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmNsYXNzTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGxpbmtUeXBlID0gY2xhc3NOYW1lW2NsYXNzTmFtZS5sZW5ndGggLSAxXTtcblxuICAgICAgICAgIHN3aXRjaCAobGlua1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JwbW5FbGVtZW50Rm9ybUlkTGluayc6XG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybURlZmluaXRpb25BbmRPcGVuTW9kYWwoZm9ybURlZmluaXRpb24pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JwbW5FbGVtZW50Rm9ybUZsb3dJZExpbmsnOlxuICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB1c2UgdGhlIGZvcm1EZWZpbml0aW9uIGhlcmUgYmVjYXVzZSB0aGUgZm9ybSBkZWZpbml0aW9uIGlzIHByb3ZpZGVkIHBlciBmb3JtIGZsb3cgc3RlcFxuICAgICAgICAgICAgICAvLyBJJ20gc3RpbGwgbGVhdmluZyB0aGlzIGluIGhlcmUgaW4gY2FzZSB3ZSB3YW50IHRvIGFkZCBmb3JtIGZsb3cgc3BlY2lmaWMgY29kZS5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudFVybExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLm9wZW5VcmxMaW5rKGZvcm1EZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCcG1uRWxlbWVudEFuZ3VsYXJTdGF0ZVVybExpbmsnOlxuICAgICAgICAgICAgICB0aGlzLm9wZW5Bbmd1bGFyU3RhdGVVcmxMaW5rKHRhc2ssIGZvcm1EZWZpbml0aW9uKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5mYXRhbCgnVW5zdXBwb3J0ZWQgY2xhc3MgbmFtZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JzID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3JzPy5lcnJvcj8uZGV0YWlsKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9ycy5lcnJvci5kZXRhaWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ290b0Zvcm1MaW5rU2NyZWVuKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZm9ybS1saW5rcyddKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQuZ2V0VmFsdWUoKSA9PT0gJ2Zvcm0nKSB7XG4gICAgICB0aGlzLmZvcm1MaW5rU2VydmljZVxuICAgICAgICAub25TdWJtaXQoXG4gICAgICAgICAgdGhpcy50YXNrLnByb2Nlc3NEZWZpbml0aW9uS2V5LFxuICAgICAgICAgIHRoaXMuZm9ybUFzc29jaWF0aW9uLmZvcm1MaW5rLmlkLFxuICAgICAgICAgIHN1Ym1pc3Npb24uZGF0YSxcbiAgICAgICAgICB0aGlzLnRhc2suYnVzaW5lc3NLZXksXG4gICAgICAgICAgdGhpcy50YXNrLmlkXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoXzogRm9ybVN1Ym1pc3Npb25SZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVUYXNrKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcnMgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQuZ2V0VmFsdWUoKSA9PT0gJ2Zvcm0tZmxvdycpIHtcbiAgICAgIGlmIChzdWJtaXNzaW9uLmRhdGEuc3VibWl0KSB7XG4gICAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlLnN1Ym1pdFN0ZXAodGhpcy5mb3JtRmxvd0luc3RhbmNlSWQsIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCwgc3VibWlzc2lvbi5kYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4gdGhpcy5oYW5kbGVGb3JtRmxvd1N0ZXAocmVzdWx0KSxcbiAgICAgICAgICBlcnJvcnMgPT4gdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChzdWJtaXNzaW9uLmRhdGFbJ2JhY2snXSkge1xuICAgICAgICB0aGlzLmZvcm1GbG93U2VydmljZS5iYWNrKHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4gdGhpcy5oYW5kbGVGb3JtRmxvd1N0ZXAocmVzdWx0KSxcbiAgICAgICAgICBlcnJvcnMgPT4gdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGb3JtRGVmaW5pdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFza1Byb2Nlc3NMaW5rKHRhc2tJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50YXNrU2VydmljZS5nZXRUYXNrUHJvY2Vzc0xpbmsodGFza0lkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHN3aXRjaCAocmVzPy50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICAgIHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQubmV4dCgnZm9ybScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmb3JtLWZsb3cnOlxuICAgICAgICAgIHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQubmV4dCgnZm9ybS1mbG93Jyk7XG4gICAgICAgICAgdGhpcy5nZXRGb3JtRmxvd1N0ZXAocmVzPy5wcm9wZXJ0aWVzLmZvcm1GbG93SW5zdGFuY2VJZClcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybUZsb3dTdGVwKGZvcm1GbG93SW5zdGFuY2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRmxvd1NlcnZpY2UuZ2V0Rm9ybUZsb3dTdGVwKGZvcm1GbG93SW5zdGFuY2VJZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1GbG93U3RlcChyZXN1bHQpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRm9ybUZsb3dTdGVwKGZvcm1GbG93SW5zdGFuY2U6IEZvcm1GbG93SW5zdGFuY2UpIHtcbiAgICBpZiAoZm9ybUZsb3dJbnN0YW5jZS5zdGVwID09PSBudWxsKSB7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcFR5cGUkLm5leHQobnVsbCk7XG4gICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQgPSBudWxsO1xuICAgICAgdGhpcy5jb21wbGV0ZVRhc2soKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcFR5cGUkLm5leHQoZm9ybUZsb3dJbnN0YW5jZS5zdGVwLnR5cGUpO1xuICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQgPSBmb3JtRmxvd0luc3RhbmNlLmlkO1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkID0gZm9ybUZsb3dJbnN0YW5jZS5zdGVwLmlkO1xuICAgICAgdGhpcy5zZXRGb3JtRGVmaW5pdGlvbkFuZE9wZW5Nb2RhbChmb3JtRmxvd0luc3RhbmNlLnN0ZXAudHlwZVByb3BlcnRpZXMuZGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVRhc2soKSB7XG4gICAgdGhpcy50b2FzdHIuc3VjY2Vzcyh0aGlzLnRhc2submFtZSArICcgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNvbXBsZXRlZCcpO1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICAgIHRoaXMudGFzayA9IG51bGw7XG4gICAgdGhpcy5mb3JtU3VibWl0LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUYXNrUHJvY2Vzc0xpbmtUeXBlKCk6IHZvaWQge1xuICAgIHRoaXMudGFza1Byb2Nlc3NMaW5rVHlwZSQubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybURlZmluaXRpb25BbmRPcGVuTW9kYWwoZm9ybURlZmluaXRpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBmb3JtRGVmaW5pdGlvbjtcbiAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblVybExpbmsoZm9ybURlZmluaXRpb246IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybChcbiAgICAgIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW2Zvcm1EZWZpbml0aW9uLmZvcm1Bc3NvY2lhdGlvbi5mb3JtTGluay51cmxdKVxuICAgICk7XG5cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkFuZ3VsYXJTdGF0ZVVybExpbmsodGFzazogVGFzaywgZm9ybURlZmluaXRpb246IGFueSk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucGFyYW1zLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBjb25zdCB0YXNrSWQgPSB0YXNrPy5pZDtcbiAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJhbXM/LmRvY3VtZW50SWQ7XG5cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtmb3JtRGVmaW5pdGlvbi5mb3JtQXNzb2NpYXRpb24uZm9ybUxpbmsudXJsXSwge1xuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIC4uLih0YXNrSWQgJiYge3Rhc2tJZH0pLFxuICAgICAgICAgIC4uLihkb2N1bWVudElkICYmIHtkb2N1bWVudElkfSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48dmFsdGltby1tb2RhbFxuICAjdGFza0RldGFpbE1vZGFsXG4gIGVsZW1lbnRJZD1cInRhc2tEZXRhaWxNb2RhbFwiXG4gIFt0aXRsZV09XCJwYWdlPy50aXRsZVwiXG4gIFtzdWJ0aXRsZV09XCJwYWdlPy5zdWJ0aXRsZVwiXG4gIFt0ZW1wbGF0ZUJlbG93U3VidGl0bGVdPVwiYXNzaWduVXNlclRvVGFza1wiXG4+XG4gIDxkaXYgYm9keSAqbmdJZj1cImZvcm1EZWZpbml0aW9uICYmICgocHJvY2Vzc0xpbmtJc0Zvcm0kIHwgYXN5bmMpIHx8IChmb3JtRmxvd1N0ZXBUeXBlSXNGb3JtJCB8IGFzeW5jKSlcIj5cbiAgICA8dmFsdGltby1mb3JtLWlvXG4gICAgICAjZm9ybVxuICAgICAgW2Zvcm1dPVwiZm9ybURlZmluaXRpb25cIlxuICAgICAgKHN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgIFtvcHRpb25zXT1cImZvcm1pb09wdGlvbnNcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1pbz5cbiAgPC9kaXY+XG4gIDxkaXYgYm9keSAqbmdJZj1cIiFmb3JtRGVmaW5pdGlvbiAmJiAhZXJyb3JNZXNzYWdlXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJiZy13YXJuaW5nIHRleHQtYmxhY2sgbWItMCBwLTMgdGV4dC1jZW50ZXJcIlxuICAgICAgW3RyYW5zbGF0ZV09XCInZm9ybU1hbmFnZW1lbnQubm9Gb3JtRGVmaW5pdGlvbkZvdW5kJ1wiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBib2R5ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImJnLWRhbmdlciB0ZXh0LWJsYWNrIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgZm9vdGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0wIHAtMyB0ZXh0LWNlbnRlclwiICpuZ0lmPVwiIWZvcm1EZWZpbml0aW9uXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNwYWNlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb3RvRm9ybUxpbmtTY3JlZW4oKVwiXG4gICAgICAgIGlkPVwiZm9ybS1saW5rLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5nb3RvRm9ybUxpbmtzQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2Fzc2lnblVzZXJUb1Rhc2s+XG4gIDx2YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2tcbiAgICAqbmdJZj1cInRhc2sgJiYgYXNzaWdubWVudE9mVGFza0NoYW5nZWRcIlxuICAgIFt0YXNrSWRdPVwidGFzay5pZFwiXG4gICAgW2Fzc2lnbmVlRW1haWxdPVwidGFzay5hc3NpZ25lZVwiXG4gICAgKGFzc2lnbm1lbnRPZlRhc2tDaGFuZ2VkKT1cImFzc2lnbm1lbnRPZlRhc2tDaGFuZ2VkLmVtaXQoKVwiXG4gID48L3ZhbHRpbW8tYXNzaWduLXVzZXItdG8tdGFzaz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|