@valtimo/dossier 11.0.0 → 11.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +98 -0
- package/esm2022/lib/{dossier-bulk-assign-modal → components/dossier-bulk-assign-modal}/dossier-bulk-assign-modal.component.mjs +2 -2
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +194 -0
- package/esm2022/lib/components/dossier-detail/tab/audit/audit.component.mjs +76 -0
- package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/contact-moments/contact-moments.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +146 -0
- package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/documents/documents.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +61 -0
- package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +166 -0
- package/esm2022/lib/components/dossier-detail/tab/object-type/object-type.component.mjs +121 -0
- package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/progress/progress.component.mjs +1 -1
- package/esm2022/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.mjs +136 -0
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +134 -0
- package/esm2022/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +112 -0
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +370 -0
- package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +84 -0
- package/esm2022/lib/{dossier-process-start-modal → components/dossier-process-start-modal}/dossier-process-start-modal.component.mjs +2 -3
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +123 -0
- package/esm2022/lib/components/dossier-update/dossier-update.component.mjs +113 -0
- package/esm2022/lib/constants/case-tab-token.mjs +19 -0
- package/esm2022/lib/constants/index.mjs +3 -0
- package/esm2022/lib/constants/tab.mjs +42 -0
- package/esm2022/lib/dossier-routing.module.mjs +14 -4
- package/esm2022/lib/dossier.module.mjs +33 -27
- package/esm2022/lib/models/dossier-detail-tab.model.mjs +27 -0
- package/esm2022/lib/models/index.mjs +3 -1
- package/esm2022/lib/models/tab-api.model.mjs +23 -0
- package/esm2022/lib/models/tabs.model.mjs +32 -28
- package/esm2022/lib/permissions/dossier-detail.permissions.mjs +55 -0
- package/esm2022/lib/permissions/index.mjs +2 -2
- package/esm2022/lib/pipes/index.mjs +17 -0
- package/esm2022/lib/pipes/tab-translate/index.mjs +18 -0
- package/esm2022/lib/pipes/tab-translate/tab-translate-pipe.module.mjs +33 -0
- package/esm2022/lib/pipes/tab-translate/tab-translate.pipe.mjs +41 -0
- package/esm2022/lib/services/dossier-list-pagination.service.mjs +2 -2
- package/esm2022/lib/services/dossier-tab-api.service.mjs +23 -0
- package/esm2022/lib/services/dossier-tab.service.mjs +130 -0
- package/esm2022/lib/services/dossier.service.mjs +58 -0
- package/esm2022/lib/services/index.mjs +4 -2
- package/esm2022/public_api.mjs +13 -15
- package/fesm2022/valtimo-dossier.mjs +1345 -1036
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-assign-user/dossier-assign-user.component.d.ts.map +1 -0
- package/lib/{dossier-bulk-assign-modal → components/dossier-bulk-assign-modal}/dossier-bulk-assign-modal.component.d.ts +1 -1
- package/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/dossier-detail.component.d.ts +11 -10
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/audit/audit.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/tab/documenten-api-documents/documenten-api-documents.component.d.ts +1 -1
- package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/documents/documents.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/formio/formio.component.d.ts +20 -0
- package/lib/components/dossier-detail/tab/formio/formio.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/tab/notes/notes.component.d.ts +3 -3
- package/lib/components/dossier-detail/tab/notes/notes.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/tab/object-type/object-type.component.d.ts +2 -2
- package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/tab/s3-documents/s3-documents.component.d.ts +1 -1
- package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -0
- package/lib/{dossier-detail → components/dossier-detail}/tab/zaakobjecten/zaakobjecten.component.d.ts +2 -2
- package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +1 -0
- package/lib/{dossier-list → components/dossier-list}/dossier-list.component.d.ts +1 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -0
- package/lib/{dossier-list-actions → components/dossier-list-actions}/dossier-list-actions.component.d.ts +1 -1
- package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -0
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -0
- package/lib/{dossier-supporting-process-start-modal → components/dossier-supporting-process-start-modal}/dossier-supporting-process-start-modal.component.d.ts +21 -26
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -0
- package/lib/{dossier-update → components/dossier-update}/dossier-update.component.d.ts +1 -1
- package/lib/components/dossier-update/dossier-update.component.d.ts.map +1 -0
- package/lib/constants/case-tab-token.d.ts +5 -0
- package/lib/constants/case-tab-token.d.ts.map +1 -0
- package/lib/constants/index.d.ts +3 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/tab.d.ts +7 -0
- package/lib/constants/tab.d.ts.map +1 -0
- package/lib/dossier-routing.module.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +33 -31
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/models/dossier-detail-tab.model.d.ts +18 -0
- package/lib/models/dossier-detail-tab.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/tab-api.model.d.ts +13 -0
- package/lib/models/tab-api.model.d.ts.map +1 -0
- package/lib/models/tabs.model.d.ts +11 -10
- package/lib/models/tabs.model.d.ts.map +1 -1
- package/lib/permissions/{dossier.permissions.d.ts → dossier-detail.permissions.d.ts} +1 -1
- package/lib/permissions/dossier-detail.permissions.d.ts.map +1 -0
- package/lib/permissions/index.d.ts +1 -1
- package/lib/permissions/index.d.ts.map +1 -1
- package/lib/pipes/index.d.ts +2 -0
- package/lib/pipes/index.d.ts.map +1 -0
- package/lib/pipes/tab-translate/index.d.ts +3 -0
- package/lib/pipes/tab-translate/index.d.ts.map +1 -0
- package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts +9 -0
- package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts.map +1 -0
- package/lib/pipes/tab-translate/tab-translate.pipe.d.ts +13 -0
- package/lib/pipes/tab-translate/tab-translate.pipe.d.ts.map +1 -0
- package/lib/services/dossier-list-pagination.service.d.ts +1 -1
- package/lib/services/dossier-list-pagination.service.d.ts.map +1 -1
- package/lib/services/dossier-tab-api.service.d.ts +15 -0
- package/lib/services/dossier-tab-api.service.d.ts.map +1 -0
- package/lib/services/dossier-tab.service.d.ts +31 -0
- package/lib/services/dossier-tab.service.d.ts.map +1 -0
- package/lib/{dossier.service.d.ts → services/dossier.service.d.ts} +1 -1
- package/lib/services/dossier.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +3 -1
- package/lib/services/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +12 -14
- package/public_api.d.ts.map +1 -1
- package/esm2022/lib/dossier-assign-user/dossier-assign-user.component.mjs +0 -98
- package/esm2022/lib/dossier-detail/dossier-detail.component.mjs +0 -175
- package/esm2022/lib/dossier-detail/tab/audit/audit.component.mjs +0 -76
- package/esm2022/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +0 -146
- package/esm2022/lib/dossier-detail/tab/notes/notes.component.mjs +0 -166
- package/esm2022/lib/dossier-detail/tab/object-type/object-type.component.mjs +0 -121
- package/esm2022/lib/dossier-detail/tab/s3-documents/s3-documents.component.mjs +0 -136
- package/esm2022/lib/dossier-detail/tab/summary/summary.component.mjs +0 -130
- package/esm2022/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +0 -112
- package/esm2022/lib/dossier-detail-tab-enum.mjs +0 -26
- package/esm2022/lib/dossier-list/dossier-list.component.mjs +0 -371
- package/esm2022/lib/dossier-list-actions/dossier-list-actions.component.mjs +0 -84
- package/esm2022/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +0 -116
- package/esm2022/lib/dossier-update/dossier-update.component.mjs +0 -113
- package/esm2022/lib/dossier.config.mjs +0 -29
- package/esm2022/lib/dossier.service.mjs +0 -58
- package/esm2022/lib/permissions/dossier.permissions.mjs +0 -55
- package/esm2022/lib/tab.service.mjs +0 -80
- package/lib/dossier-assign-user/dossier-assign-user.component.d.ts.map +0 -1
- package/lib/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts.map +0 -1
- package/lib/dossier-detail/dossier-detail.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/audit/audit.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/documents/documents.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/notes/notes.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/object-type/object-type.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/progress/progress.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/summary/summary.component.d.ts.map +0 -1
- package/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +0 -1
- package/lib/dossier-detail-tab-enum.d.ts +0 -10
- package/lib/dossier-detail-tab-enum.d.ts.map +0 -1
- package/lib/dossier-list/dossier-list.component.d.ts.map +0 -1
- package/lib/dossier-list-actions/dossier-list-actions.component.d.ts.map +0 -1
- package/lib/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +0 -1
- package/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +0 -1
- package/lib/dossier-update/dossier-update.component.d.ts.map +0 -1
- package/lib/dossier.config.d.ts +0 -4
- package/lib/dossier.config.d.ts.map +0 -1
- package/lib/dossier.service.d.ts.map +0 -1
- package/lib/permissions/dossier.permissions.d.ts.map +0 -1
- package/lib/tab.service.d.ts +0 -21
- package/lib/tab.service.d.ts.map +0 -1
- /package/lib/{dossier-assign-user → components/dossier-assign-user}/dossier-assign-user.component.d.ts +0 -0
- /package/lib/{dossier-detail → components/dossier-detail}/tab/audit/audit.component.d.ts +0 -0
- /package/lib/{dossier-detail → components/dossier-detail}/tab/contact-moments/contact-moments.component.d.ts +0 -0
- /package/lib/{dossier-detail → components/dossier-detail}/tab/documents/documents.component.d.ts +0 -0
- /package/lib/{dossier-detail → components/dossier-detail}/tab/progress/progress.component.d.ts +0 -0
- /package/lib/{dossier-detail → components/dossier-detail}/tab/summary/summary.component.d.ts +0 -0
- /package/lib/{dossier-process-start-modal → components/dossier-process-start-modal}/dossier-process-start-modal.component.d.ts +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 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, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
17
|
+
import { CAN_VIEW_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, } from '@valtimo/task';
|
|
18
|
+
import { FormioOptionsImpl } from '@valtimo/components';
|
|
19
|
+
import moment from 'moment';
|
|
20
|
+
import { BehaviorSubject, combineLatest, of, Subscription, switchMap } from 'rxjs';
|
|
21
|
+
import { catchError } from 'rxjs/operators';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@angular/router";
|
|
24
|
+
import * as i2 from "@valtimo/document";
|
|
25
|
+
import * as i3 from "@valtimo/task";
|
|
26
|
+
import * as i4 from "@valtimo/process";
|
|
27
|
+
import * as i5 from "@valtimo/form";
|
|
28
|
+
import * as i6 from "@valtimo/security";
|
|
29
|
+
import * as i7 from "@valtimo/access-control";
|
|
30
|
+
import * as i8 from "@angular/common";
|
|
31
|
+
import * as i9 from "@valtimo/components";
|
|
32
|
+
import * as i10 from "@ng-bootstrap/ng-bootstrap";
|
|
33
|
+
import * as i11 from "carbon-components-angular";
|
|
34
|
+
import * as i12 from "@ngx-translate/core";
|
|
35
|
+
moment.locale(localStorage.getItem('langKey') || '');
|
|
36
|
+
moment.defaultFormat = 'DD MMM YYYY HH:mm';
|
|
37
|
+
export class DossierDetailTabSummaryComponent {
|
|
38
|
+
constructor(router, documentService, taskService, processService, el, renderer, route, formService, userProviderService, permissionService) {
|
|
39
|
+
this.router = router;
|
|
40
|
+
this.documentService = documentService;
|
|
41
|
+
this.taskService = taskService;
|
|
42
|
+
this.processService = processService;
|
|
43
|
+
this.el = el;
|
|
44
|
+
this.renderer = renderer;
|
|
45
|
+
this.route = route;
|
|
46
|
+
this.formService = formService;
|
|
47
|
+
this.userProviderService = userProviderService;
|
|
48
|
+
this.permissionService = permissionService;
|
|
49
|
+
this.processDocumentInstances = [];
|
|
50
|
+
this.tasks = [];
|
|
51
|
+
this.formDefinition = null;
|
|
52
|
+
this.roles = [];
|
|
53
|
+
this.loadingTasks$ = new BehaviorSubject(true);
|
|
54
|
+
this._subscriptions = new Subscription();
|
|
55
|
+
this.snapshot = this.route.snapshot.paramMap;
|
|
56
|
+
this.documentDefinitionName = this.snapshot.get('documentDefinitionName') || '';
|
|
57
|
+
this.documentId = this.snapshot.get('documentId') || '';
|
|
58
|
+
this.options = new FormioOptionsImpl();
|
|
59
|
+
this.options.disableAlerts = true;
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
this.moment = moment;
|
|
63
|
+
this.init();
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this._subscriptions.unsubscribe();
|
|
67
|
+
}
|
|
68
|
+
init() {
|
|
69
|
+
this._subscriptions.add(this.documentService.getDocument(this.documentId).subscribe(document => {
|
|
70
|
+
this.document = document;
|
|
71
|
+
}));
|
|
72
|
+
this._subscriptions.add(this.formService
|
|
73
|
+
.getFormDefinitionByNamePreFilled(`${this.documentDefinitionName}.summary`, this.documentId)
|
|
74
|
+
.subscribe(formDefinition => {
|
|
75
|
+
this.formDefinition = formDefinition;
|
|
76
|
+
}));
|
|
77
|
+
this._subscriptions.add(this.userProviderService.getUserSubject().subscribe(user => {
|
|
78
|
+
this.roles = user.roles;
|
|
79
|
+
this.tasks = [];
|
|
80
|
+
this.loadProcessDocumentInstances(this.documentId);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
loadProcessDocumentInstances(documentId) {
|
|
84
|
+
this._subscriptions.add(this.documentService
|
|
85
|
+
.findProcessDocumentInstances(documentId)
|
|
86
|
+
.subscribe(processDocumentInstances => {
|
|
87
|
+
this.processDocumentInstances = processDocumentInstances;
|
|
88
|
+
this.processDocumentInstances.forEach(instance => {
|
|
89
|
+
this.loadProcessInstanceTasks(instance.id.processInstanceId);
|
|
90
|
+
});
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
rowTaskClick(task) {
|
|
94
|
+
this.taskDetail.openTaskDetails(task);
|
|
95
|
+
}
|
|
96
|
+
loadProcessInstanceTasks(processInstanceId) {
|
|
97
|
+
this._subscriptions.add(this.processService
|
|
98
|
+
.getProcessInstanceTasks(processInstanceId)
|
|
99
|
+
.pipe(switchMap(tasks => combineLatest([
|
|
100
|
+
of(tasks),
|
|
101
|
+
...tasks.map(task => this.permissionService.requestPermission(CAN_VIEW_TASK_PERMISSION, {
|
|
102
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
103
|
+
identifier: task.id,
|
|
104
|
+
})),
|
|
105
|
+
])), catchError(() => {
|
|
106
|
+
this.loadingTasks$.next(false);
|
|
107
|
+
return of(null);
|
|
108
|
+
}))
|
|
109
|
+
.subscribe(res => {
|
|
110
|
+
const tasks = res?.[0];
|
|
111
|
+
const permissions = res?.filter((_, index) => index !== 0);
|
|
112
|
+
if (!!tasks) {
|
|
113
|
+
tasks.forEach((task, taskIndex) => {
|
|
114
|
+
task.createdUnix = this.moment(task.created).unix();
|
|
115
|
+
task.created = this.moment(task.created).format('DD MMM YYYY HH:mm');
|
|
116
|
+
task.isLocked = !permissions[taskIndex];
|
|
117
|
+
});
|
|
118
|
+
this.tasks = this.tasks.concat(tasks);
|
|
119
|
+
this.tasks.sort((t1, t2) => t2.createdUnix - t1.createdUnix);
|
|
120
|
+
}
|
|
121
|
+
this.loadingTasks$.next(false);
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabSummaryComponent, deps: [{ token: i1.Router }, { token: i2.DocumentService }, { token: i3.TaskService }, { token: i4.ProcessService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ActivatedRoute }, { token: i5.FormService }, { token: i6.UserProviderService }, { token: i7.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabSummaryComponent, selector: "valtimo-dossier-detail-tab-summary", viewQueries: [{ propertyName: "taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"(tasks | isArray: 1) === false\">\n <valtimo-widget>\n <div class=\"p-3\">\n <img class=\"float-left\" src=\"assets/audit-2.png\" height=\"25\" />\n <span class=\"float-right\">{{ 'summary.userTasksDoneState' | translate }}</span>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </ng-container>\n\n <ng-container *ngIf=\"tasks | isArray: 1\">\n <valtimo-widget *ngFor=\"let task of tasks\">\n <div\n *ngIf=\"!task.isLocked\"\n class=\"p-3 clickable hoverable\"\n (click)=\"rowTaskClick(task)\"\n >\n <span class=\"float-right badge badge-pill badge-primary\">{{\n 'summary.taskOpen' | translate\n }}</span>\n <strong>{{ task.name }}</strong>\n <div class=\"mt-1\">{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n <div class=\"p-3 hoverable\" *ngIf=\"task.isLocked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ 'summary.taskLocked' | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n <strong>{{ task.name }}</strong>\n <div>{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"init()\"\n (assignmentOfTaskChanged)=\"init()\"\n ></valtimo-task-detail-modal>\n </div>\n </div>\n</div>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.hoverable:hover{background-color:#eee}.summaryForm .formio-component{margin-bottom:0!important}.summaryForm .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.summaryForm .formio-field div[ref=element] .form-control{font-weight:400}.summaryForm .formio-value div[ref=element] .form-control{font-weight:700}.user-tasks-title{margin-top:0;margin-bottom:12px;font-weight:400;color:#000;height:20px}.loading-container{display:flex;width:100%;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i9.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i3.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i11.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.IsArrayPipe, name: "isArray" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
126
|
+
}
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabSummaryComponent, decorators: [{
|
|
128
|
+
type: Component,
|
|
129
|
+
args: [{ selector: 'valtimo-dossier-detail-tab-summary', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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=\"container-fluid\" *ngIf=\"{loadingTasks: loadingTasks$ | async} as obs\">\n <div class=\"row py-4\">\n <div class=\"col-sm-12 col-md-8 col-xl-9\">\n <div *ngIf=\"document\">\n <div *ngIf=\"formDefinition\" class=\"summaryForm\">\n <div class=\"mb-4\">\n <valtimo-form-io [form]=\"formDefinition\" [options]=\"options\"></valtimo-form-io>\n </div>\n </div>\n </div>\n </div>\n\n <!--Current user tasks right side-->\n <div class=\"col-sm-12 col-md-4 col-xl-3\">\n <h4 class=\"user-tasks-title\">{{ 'summary.userTasks' | translate }}</h4>\n <ng-container *ngIf=\"!obs.loadingTasks; else loadingTasksTemplate\">\n <ng-container *ngIf=\"(tasks | isArray: 1) === false\">\n <valtimo-widget>\n <div class=\"p-3\">\n <img class=\"float-left\" src=\"assets/audit-2.png\" height=\"25\" />\n <span class=\"float-right\">{{ 'summary.userTasksDoneState' | translate }}</span>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </ng-container>\n\n <ng-container *ngIf=\"tasks | isArray: 1\">\n <valtimo-widget *ngFor=\"let task of tasks\">\n <div\n *ngIf=\"!task.isLocked\"\n class=\"p-3 clickable hoverable\"\n (click)=\"rowTaskClick(task)\"\n >\n <span class=\"float-right badge badge-pill badge-primary\">{{\n 'summary.taskOpen' | translate\n }}</span>\n <strong>{{ task.name }}</strong>\n <div class=\"mt-1\">{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n <div class=\"p-3 hoverable\" *ngIf=\"task.isLocked\">\n <span\n class=\"float-right badge badge-pill badge-secondary bg-grey\"\n ngbTooltip=\"{{ 'summary.taskLocked' | translate }}\"\n >\n <i class=\"icon mdi mdi-lock\"></i>\n </span>\n <strong>{{ task.name }}</strong>\n <div>{{ 'summary.taskCreated' | translate }} {{ task.created }}</div>\n </div>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"init()\"\n (assignmentOfTaskChanged)=\"init()\"\n ></valtimo-task-detail-modal>\n </div>\n </div>\n</div>\n\n<ng-template #loadingTasksTemplate>\n <div class=\"loading-container\">\n <cds-loading size=\"sm\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.hoverable:hover{background-color:#eee}.summaryForm .formio-component{margin-bottom:0!important}.summaryForm .formio-component div[ref=element] .form-control{height:24px!important;background-color:#fff;border:0px;margin:0;padding:0!important;font-size:13px}.summaryForm .formio-field div[ref=element] .form-control{font-weight:400}.summaryForm .formio-value div[ref=element] .form-control{font-weight:700}.user-tasks-title{margin-top:0;margin-bottom:12px;font-weight:400;color:#000;height:20px}.loading-container{display:flex;width:100%;justify-content:center}\n"] }]
|
|
130
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.DocumentService }, { type: i3.TaskService }, { type: i4.ProcessService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ActivatedRoute }, { type: i5.FormService }, { type: i6.UserProviderService }, { type: i7.PermissionService }]; }, propDecorators: { taskDetail: [{
|
|
131
|
+
type: ViewChild,
|
|
132
|
+
args: ['taskDetail']
|
|
133
|
+
}] } });
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi9zdW1tYXJ5L3N1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvc3VtbWFyeS9zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFLVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsK0JBQStCLEdBR2hDLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUxQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQztBQVEzQyxNQUFNLE9BQU8sZ0NBQWdDO0lBZTNDLFlBQ21CLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixjQUE4QixFQUM5QixFQUFjLEVBQ2Qs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OlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0luc3RhbmNlVGFzaywgUHJvY2Vzc1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnQsIERvY3VtZW50U2VydmljZSwgUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTixcbiAgVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbiAgVGFza0RldGFpbE1vZGFsQ29tcG9uZW50LFxuICBUYXNrU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vdGFzayc7XG5pbXBvcnQge0Zvcm1TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9mb3JtJztcbmltcG9ydCB7Rm9ybWlvT3B0aW9uc0ltcGwsIFZhbHRpbW9Gb3JtaW9PcHRpb25zfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9hY2Nlc3MtY29udHJvbCc7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcbm1vbWVudC5kZWZhdWx0Rm9ybWF0ID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItc3VtbWFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdW1tYXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VtbWFyeS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiU3VtbWFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndGFza0RldGFpbCcpIHRhc2tEZXRhaWw6IFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudDtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEb2N1bWVudEluc3RhbmNlczogUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VbXSA9IFtdO1xuICBwcml2YXRlIHNuYXBzaG90OiBQYXJhbU1hcDtcbiAgcHVibGljIHRhc2tzOiBQcm9jZXNzSW5zdGFuY2VUYXNrW10gPSBbXTtcbiAgcHVibGljIG1vbWVudDtcbiAgcHVibGljIGZvcm1EZWZpbml0aW9uOiBGb3JtaW9Gb3JtID0gbnVsbDtcbiAgcHVibGljIG9wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuICBwdWJsaWMgcm9sZXM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuc25hcHNob3QuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgfHwgJyc7XG4gICAgdGhpcy5kb2N1bWVudElkID0gdGhpcy5zbmFwc2hvdC5nZXQoJ2RvY3VtZW50SWQnKSB8fCAnJztcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgRm9ybWlvT3B0aW9uc0ltcGwoKTtcbiAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZUFsZXJ0cyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb21lbnQgPSBtb21lbnQ7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnQodGhpcy5kb2N1bWVudElkKS5zdWJzY3JpYmUoZG9jdW1lbnQgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2VcbiAgICAgICAgLmdldEZvcm1EZWZpbml0aW9uQnlOYW1lUHJlRmlsbGVkKGAke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX0uc3VtbWFyeWAsIHRoaXMuZG9jdW1lbnRJZClcbiAgICAgICAgLnN1YnNjcmliZShmb3JtRGVmaW5pdGlvbiA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiA9IGZvcm1EZWZpbml0aW9uO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZS5nZXRVc2VyU3ViamVjdCgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgdGhpcy5yb2xlcyA9IHVzZXIucm9sZXM7XG4gICAgICAgIHRoaXMudGFza3MgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzKHRoaXMuZG9jdW1lbnRJZCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyhkb2N1bWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAgIC5maW5kUHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzKGRvY3VtZW50SWQpXG4gICAgICAgIC5zdWJzY3JpYmUocHJvY2Vzc0RvY3VtZW50SW5zdGFuY2VzID0+IHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcyA9IHByb2Nlc3NEb2N1bWVudEluc3RhbmNlcztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudEluc3RhbmNlcy5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVRhc2tzKGluc3RhbmNlLmlkLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJvd1Rhc2tDbGljayh0YXNrOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJvY2Vzc0luc3RhbmNlVGFza3MocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5wcm9jZXNzU2VydmljZVxuICAgICAgICAuZ2V0UHJvY2Vzc0luc3RhbmNlVGFza3MocHJvY2Vzc0luc3RhbmNlSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCh0YXNrcyA9PlxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgIG9mKHRhc2tzKSxcbiAgICAgICAgICAgICAgLi4udGFza3MubWFwKHRhc2sgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IHRhc2suaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1Rhc2tzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBjb25zdCB0YXNrcyA9IHJlcz8uWzBdO1xuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gcmVzPy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG5cbiAgICAgICAgICBpZiAoISF0YXNrcykge1xuICAgICAgICAgICAgdGFza3MuZm9yRWFjaCgodGFzaywgdGFza0luZGV4KSA9PiB7XG4gICAgICAgICAgICAgIHRhc2suY3JlYXRlZFVuaXggPSB0aGlzLm1vbWVudCh0YXNrLmNyZWF0ZWQpLnVuaXgoKTtcbiAgICAgICAgICAgICAgdGFzay5jcmVhdGVkID0gdGhpcy5tb21lbnQodGFzay5jcmVhdGVkKS5mb3JtYXQoJ0REIE1NTSBZWVlZIEhIOm1tJyk7XG4gICAgICAgICAgICAgIHRhc2suaXNMb2NrZWQgPSAhcGVybWlzc2lvbnNbdGFza0luZGV4XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy50YXNrcyA9IHRoaXMudGFza3MuY29uY2F0KHRhc2tzKTtcbiAgICAgICAgICAgIHRoaXMudGFza3Muc29ydCgodDEsIHQyKSA9PiB0Mi5jcmVhdGVkVW5peCAtIHQxLmNyZWF0ZWRVbml4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJ7bG9hZGluZ1Rhc2tzOiBsb2FkaW5nVGFza3MkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8ZGl2IGNsYXNzPVwicm93IHB5LTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IGNvbC14bC05XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1EZWZpbml0aW9uXCIgY2xhc3M9XCJzdW1tYXJ5Rm9ybVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICA8dmFsdGltby1mb3JtLWlvIFtmb3JtXT1cImZvcm1EZWZpbml0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPjwvdmFsdGltby1mb3JtLWlvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLUN1cnJlbnQgdXNlciB0YXNrcyByaWdodCBzaWRlLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBjb2wteGwtM1wiPlxuICAgICAgPGg0IGNsYXNzPVwidXNlci10YXNrcy10aXRsZVwiPnt7ICdzdW1tYXJ5LnVzZXJUYXNrcycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvYnMubG9hZGluZ1Rhc2tzOyBlbHNlIGxvYWRpbmdUYXNrc1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGFza3MgfCBpc0FycmF5OiAxKSA9PT0gZmFsc2VcIj5cbiAgICAgICAgICA8dmFsdGltby13aWRnZXQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJmbG9hdC1sZWZ0XCIgc3JjPVwiYXNzZXRzL2F1ZGl0LTIucG5nXCIgaGVpZ2h0PVwiMjVcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCI+e3sgJ3N1bW1hcnkudXNlclRhc2tzRG9uZVN0YXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza3MgfCBpc0FycmF5OiAxXCI+XG4gICAgICAgICAgPHZhbHRpbW8td2lkZ2V0ICpuZ0Zvcj1cImxldCB0YXNrIG9mIHRhc2tzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiIXRhc2suaXNMb2NrZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtMyBjbGlja2FibGUgaG92ZXJhYmxlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJvd1Rhc2tDbGljayh0YXNrKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHQgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+e3tcbiAgICAgICAgICAgICAgICAnc3VtbWFyeS50YXNrT3BlbicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdGFzay5uYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCI+e3sgJ3N1bW1hcnkudGFza0NyZWF0ZWQnIHwgdHJhbnNsYXRlIH19IHt7IHRhc2suY3JlYXRlZCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIGhvdmVyYWJsZVwiICpuZ0lmPVwidGFzay5pc0xvY2tlZFwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxvYXQtcmlnaHQgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgYmctZ3JleVwiXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7ICdzdW1tYXJ5LnRhc2tMb2NrZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWxvY2tcIj48L2k+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0YXNrLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPGRpdj57eyAnc3VtbWFyeS50YXNrQ3JlYXRlZCcgfCB0cmFuc2xhdGUgfX0ge3sgdGFzay5jcmVhdGVkIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dmFsdGltby10YXNrLWRldGFpbC1tb2RhbFxuICAgICAgICAjdGFza0RldGFpbFxuICAgICAgICAoZm9ybVN1Ym1pdCk9XCJpbml0KClcIlxuICAgICAgICAoYXNzaWdubWVudE9mVGFza0NoYW5nZWQpPVwiaW5pdCgpXCJcbiAgICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1Rhc2tzVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgIDxjZHMtbG9hZGluZyBzaXplPVwic21cIj48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 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, ViewChild } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, map, of, switchMap } from 'rxjs';
|
|
18
|
+
import { take } from 'rxjs/operators';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "@angular/router";
|
|
21
|
+
import * as i2 from "../../../../services/zaakobjecten.service";
|
|
22
|
+
import * as i3 from "@valtimo/components";
|
|
23
|
+
import * as i4 from "@angular/common";
|
|
24
|
+
import * as i5 from "@ngx-translate/core";
|
|
25
|
+
export class DossierDetailTabZaakobjectenComponent {
|
|
26
|
+
constructor(route, zaakobjectenService, modalService) {
|
|
27
|
+
this.route = route;
|
|
28
|
+
this.zaakobjectenService = zaakobjectenService;
|
|
29
|
+
this.modalService = modalService;
|
|
30
|
+
this.documentId$ = this.route.params.pipe(map(params => params.documentId));
|
|
31
|
+
this.objecttypes$ = this.documentId$.pipe(switchMap(documentId => this.zaakobjectenService.getDocumentObjectTypes(documentId)));
|
|
32
|
+
this.objecttypeSelectItems$ = this.objecttypes$.pipe(map(objecttypes => objecttypes.map(type => ({ id: type.url, text: type.name || '-' }))));
|
|
33
|
+
this.selectedObjecttypeUrl$ = new BehaviorSubject(null);
|
|
34
|
+
this.objects$ = combineLatest([
|
|
35
|
+
this.documentId$,
|
|
36
|
+
this.selectedObjecttypeUrl$,
|
|
37
|
+
]).pipe(switchMap(([documentId, selectedObjecttypeUrl]) => documentId && selectedObjecttypeUrl
|
|
38
|
+
? this.zaakobjectenService
|
|
39
|
+
.getDocumentObjectsOfType(documentId, selectedObjecttypeUrl)
|
|
40
|
+
.pipe(map(objects => objects.map(object => ({ ...object, title: object.title || '-' }))))
|
|
41
|
+
: of(null)));
|
|
42
|
+
this.columns$ = new BehaviorSubject([
|
|
43
|
+
{
|
|
44
|
+
labelTranslationKey: 'dossier.zaakobjecten.index',
|
|
45
|
+
dataKey: 'index',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
labelTranslationKey: 'dossier.zaakobjecten.registrationAt',
|
|
49
|
+
dataKey: 'registrationAt',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
labelTranslationKey: 'dossier.zaakobjecten.title',
|
|
53
|
+
dataKey: 'title',
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
this.objectForm$ = new BehaviorSubject(null);
|
|
57
|
+
this.objectName$ = new BehaviorSubject('');
|
|
58
|
+
this.noFormDefinitionComponent$ = new BehaviorSubject(false);
|
|
59
|
+
}
|
|
60
|
+
selectObjectType(objectTypeUrl) {
|
|
61
|
+
this.selectedObjecttypeUrl$.next(objectTypeUrl);
|
|
62
|
+
}
|
|
63
|
+
rowClicked(object, objectTypeSelectItems) {
|
|
64
|
+
this.documentId$.pipe(take(1)).subscribe(documentId => {
|
|
65
|
+
this.zaakobjectenService.getObjectTypeForm(documentId, object.url).subscribe(res => {
|
|
66
|
+
const definition = res.formDefinition;
|
|
67
|
+
definition.components = definition.components.map(component => ({
|
|
68
|
+
...component,
|
|
69
|
+
disabled: true,
|
|
70
|
+
}));
|
|
71
|
+
this.setModalData(objectTypeSelectItems, definition);
|
|
72
|
+
}, () => {
|
|
73
|
+
this.setModalData(objectTypeSelectItems);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
hide() {
|
|
78
|
+
this.modalService.closeModal(() => {
|
|
79
|
+
this.objectName$.next('');
|
|
80
|
+
this.objectForm$.next(null);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
show() {
|
|
84
|
+
this.modalService.openModal(this.viewZaakobjectModal);
|
|
85
|
+
}
|
|
86
|
+
getObjectTypeName(objectTypeSelectItems) {
|
|
87
|
+
const selectedObjectTypeUrl = this.selectedObjecttypeUrl$.getValue();
|
|
88
|
+
const currentTypeSelectItem = objectTypeSelectItems.find(selectItem => selectItem.id === selectedObjectTypeUrl);
|
|
89
|
+
return currentTypeSelectItem.text;
|
|
90
|
+
}
|
|
91
|
+
setModalData(objectTypeSelectItems, definition) {
|
|
92
|
+
if (definition) {
|
|
93
|
+
this.objectForm$.next(definition);
|
|
94
|
+
this.noFormDefinitionComponent$.next(false);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.noFormDefinitionComponent$.next(true);
|
|
98
|
+
}
|
|
99
|
+
this.objectName$.next(this.getObjectTypeName(objectTypeSelectItems));
|
|
100
|
+
this.show();
|
|
101
|
+
}
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabZaakobjectenComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ZaakobjectenService }, { token: i3.ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabZaakobjectenComponent, selector: "valtimo-dossier-detail-tab-zaakobjecten", viewQueries: [{ propertyName: "viewZaakobjectModal", first: true, predicate: ["viewZaakobjectModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n *ngIf=\"{\n objecttypeSelectItems: objecttypeSelectItems$ | async,\n objects: objects$ | async,\n columns: columns$ | async,\n selectedObjectTypeUrl: selectedObjecttypeUrl$ | async\n } as obs\"\n>\n <v-select\n [items]=\"obs.objecttypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objecttypes\"\n [title]=\"'dossier.zaakobjecten.objecttype' | translate\"\n [placeholder]=\"'dossier.zaakobjecten.objecttypePlaceholder' | translate\"\n [loading]=\"!obs.objecttypeSelectItems\"\n (selectedChange)=\"selectObjectType($event)\"\n ></v-select>\n <v-input-label\n titleTranslationKey=\"dossier.zaakobjecten.objecten\"\n [largeMargin]=\"!!obs.selectedObjectTypeUrl\"\n ></v-input-label>\n <v-paragraph *ngIf=\"!obs.selectedObjectTypeUrl\">{{\n 'dossier.zaakobjecten.objectenPlaceholder' | translate\n }}</v-paragraph>\n <v-table\n *ngIf=\"obs.selectedObjectTypeUrl\"\n [loading]=\"!obs.objects\"\n [items]=\"obs.objects\"\n [columns]=\"obs.columns\"\n [showEditButtons]=\"true\"\n [amountOfLoadingRows]=\"2\"\n [itemsTranslationKey]=\"'pluginManagement.tableItemsText'\"\n [showPagination]=\"false\"\n editButtonTranslationKey=\"dossier.zaakobjecten.objectType.viewObject\"\n (editButtonClicked)=\"rowClicked($event, obs.objecttypeSelectItems)\"\n ></v-table>\n</ng-container>\n\n<v-modal #viewZaakobjectModal (closeEvent)=\"hide()\" [hideFooter]=\"true\" [maxWidthPx]=\"750\">\n <div role=\"header\">\n <v-title [margin]=\"false\" type=\"h2\" [fullWidth]=\"true\" [center]=\"true\">{{\n objectName$ | async\n }}</v-title>\n </div>\n\n <div role=\"content\">\n <valtimo-form-io\n *ngIf=\"(noFormDefinitionComponent$ | async) === false\"\n [form]=\"objectForm$ | async\"\n ></valtimo-form-io>\n <v-paragraph *ngIf=\"noFormDefinitionComponent$ | async\" [center]=\"true\">{{\n 'dossier.zaakobjecten.noFormDefinitionComponent' | translate\n }}</v-paragraph>\n </div>\n</v-modal>\n", styles: ["/*!\n * Copyright 2015-2023 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"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i3.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme"], outputs: ["selectedChange"] }, { kind: "component", type: i3.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: i3.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading"] }, { kind: "component", type: i3.TableComponent, selector: "v-table", inputs: ["items", "columns", "loading", "showEditButtons", "showPagination", "editButtonTranslationKey", "itemsTranslationKey", "noResultsTranslationKey", "mobileBreakpointPx", "amountOfLoadingRows", "collectionSize", "page", "size"], outputs: ["editButtonClicked", "paginationSizeSet", "paginationPageSet"] }, { kind: "component", type: i3.VModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { kind: "component", type: i3.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabZaakobjectenComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'valtimo-dossier-detail-tab-zaakobjecten', template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n *ngIf=\"{\n objecttypeSelectItems: objecttypeSelectItems$ | async,\n objects: objects$ | async,\n columns: columns$ | async,\n selectedObjectTypeUrl: selectedObjecttypeUrl$ | async\n } as obs\"\n>\n <v-select\n [items]=\"obs.objecttypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"objecttypes\"\n [title]=\"'dossier.zaakobjecten.objecttype' | translate\"\n [placeholder]=\"'dossier.zaakobjecten.objecttypePlaceholder' | translate\"\n [loading]=\"!obs.objecttypeSelectItems\"\n (selectedChange)=\"selectObjectType($event)\"\n ></v-select>\n <v-input-label\n titleTranslationKey=\"dossier.zaakobjecten.objecten\"\n [largeMargin]=\"!!obs.selectedObjectTypeUrl\"\n ></v-input-label>\n <v-paragraph *ngIf=\"!obs.selectedObjectTypeUrl\">{{\n 'dossier.zaakobjecten.objectenPlaceholder' | translate\n }}</v-paragraph>\n <v-table\n *ngIf=\"obs.selectedObjectTypeUrl\"\n [loading]=\"!obs.objects\"\n [items]=\"obs.objects\"\n [columns]=\"obs.columns\"\n [showEditButtons]=\"true\"\n [amountOfLoadingRows]=\"2\"\n [itemsTranslationKey]=\"'pluginManagement.tableItemsText'\"\n [showPagination]=\"false\"\n editButtonTranslationKey=\"dossier.zaakobjecten.objectType.viewObject\"\n (editButtonClicked)=\"rowClicked($event, obs.objecttypeSelectItems)\"\n ></v-table>\n</ng-container>\n\n<v-modal #viewZaakobjectModal (closeEvent)=\"hide()\" [hideFooter]=\"true\" [maxWidthPx]=\"750\">\n <div role=\"header\">\n <v-title [margin]=\"false\" type=\"h2\" [fullWidth]=\"true\" [center]=\"true\">{{\n objectName$ | async\n }}</v-title>\n </div>\n\n <div role=\"content\">\n <valtimo-form-io\n *ngIf=\"(noFormDefinitionComponent$ | async) === false\"\n [form]=\"objectForm$ | async\"\n ></valtimo-form-io>\n <v-paragraph *ngIf=\"noFormDefinitionComponent$ | async\" [center]=\"true\">{{\n 'dossier.zaakobjecten.noFormDefinitionComponent' | translate\n }}</v-paragraph>\n </div>\n</v-modal>\n", styles: ["/*!\n * Copyright 2015-2023 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"] }]
|
|
108
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.ZaakobjectenService }, { type: i3.ModalService }]; }, propDecorators: { viewZaakobjectModal: [{
|
|
109
|
+
type: ViewChild,
|
|
110
|
+
args: ['viewZaakobjectModal']
|
|
111
|
+
}] } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFha29iamVjdGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3phYWtvYmplY3Rlbi96YWFrb2JqZWN0ZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvemFha29iamVjdGVuL3phYWtvYmplY3Rlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3BGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVFwQyxNQUFNLE9BQU8scUNBQXFDO0lBaURoRCxZQUNtQixLQUFxQixFQUNyQixtQkFBd0MsRUFDeEMsWUFBMEI7UUFGMUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWpENUIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFdkUsaUJBQVksR0FBc0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3RGLFNBQVMsQ0FBQyxVQUFV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QUNkLENBQUM7K0dBN0dVLHFDQUFxQzttR0FBckMscUNBQXFDLDJNQzlCbEQsaW9GQXdFQTs7NEZEMUNhLHFDQUFxQztrQkFMakQsU0FBUzsrQkFDRSx5Q0FBeUM7a0tBS2pCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1phYWtvYmplY3RlblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3phYWtvYmplY3Rlbi5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtaYWFrT2JqZWN0LCBaYWFrT2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7Vk1vZGFsQ29tcG9uZW50LCBNb2RhbFNlcnZpY2UsIFNlbGVjdEl0ZW0sIFRhYmxlQ29sdW1ufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtaW9Gb3JtfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi16YWFrb2JqZWN0ZW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vemFha29iamVjdGVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vemFha29iamVjdGVuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxUYWJaYWFrb2JqZWN0ZW5Db21wb25lbnQge1xuICBAVmlld0NoaWxkKCd2aWV3WmFha29iamVjdE1vZGFsJykgdmlld1phYWtvYmplY3RNb2RhbDogVk1vZGFsQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRJZCQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKG1hcChwYXJhbXMgPT4gcGFyYW1zLmRvY3VtZW50SWQpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9iamVjdHR5cGVzJDogT2JzZXJ2YWJsZTxBcnJheTxaYWFrT2JqZWN0VHlwZT4+ID0gdGhpcy5kb2N1bWVudElkJC5waXBlKFxuICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+IHRoaXMuemFha29iamVjdGVuU2VydmljZS5nZXREb2N1bWVudE9iamVjdFR5cGVzKGRvY3VtZW50SWQpKVxuICApO1xuXG4gIHJlYWRvbmx5IG9iamVjdHR5cGVTZWxlY3RJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VsZWN0SXRlbT4+ID0gdGhpcy5vYmplY3R0eXBlcyQucGlwZShcbiAgICBtYXAob2JqZWN0dHlwZXMgPT4gb2JqZWN0dHlwZXMubWFwKHR5cGUgPT4gKHtpZDogdHlwZS51cmwsIHRleHQ6IHR5cGUubmFtZSB8fCAnLSd9KSkpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPYmplY3R0eXBlVXJsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgb2JqZWN0cyQ6IE9ic2VydmFibGU8QXJyYXk8WmFha09iamVjdD4gfCBudWxsPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgdGhpcy5zZWxlY3RlZE9iamVjdHR5cGVVcmwkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2RvY3VtZW50SWQsIHNlbGVjdGVkT2JqZWN0dHlwZVVybF0pID0+XG4gICAgICBkb2N1bWVudElkICYmIHNlbGVjdGVkT2JqZWN0dHlwZVVybFxuICAgICAgICA/IHRoaXMuemFha29iamVjdGVuU2VydmljZVxuICAgICAgICAgICAgLmdldERvY3VtZW50T2JqZWN0c09mVHlwZShkb2N1bWVudElkLCBzZWxlY3RlZE9iamVjdHR5cGVVcmwpXG4gICAgICAgICAgICAucGlwZShtYXAob2JqZWN0cyA9PiBvYmplY3RzLm1hcChvYmplY3QgPT4gKHsuLi5vYmplY3QsIHRpdGxlOiBvYmplY3QudGl0bGUgfHwgJy0nfSkpKSlcbiAgICAgICAgOiBvZihudWxsKVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSBjb2x1bW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8VGFibGVDb2x1bW4+PihbXG4gICAge1xuICAgICAgbGFiZWxUcmFuc2xhdGlvbktleTogJ2Rvc3NpZXIuemFha29iamVjdGVuLmluZGV4JyxcbiAgICAgIGRhdGFLZXk6ICdpbmRleCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbFRyYW5zbGF0aW9uS2V5OiAnZG9zc2llci56YWFrb2JqZWN0ZW4ucmVnaXN0cmF0aW9uQXQnLFxuICAgICAgZGF0YUtleTogJ3JlZ2lzdHJhdGlvbkF0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsVHJhbnNsYXRpb25LZXk6ICdkb3NzaWVyLnphYWtvYmplY3Rlbi50aXRsZScsXG4gICAgICBkYXRhS2V5OiAndGl0bGUnLFxuICAgIH0sXG4gIF0pO1xuXG4gIHJlYWRvbmx5IG9iamVjdEZvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtaW9Gb3JtIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgb2JqZWN0TmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHJlYWRvbmx5IG5vRm9ybURlZmluaXRpb25Db21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6YWFrb2JqZWN0ZW5TZXJ2aWNlOiBaYWFrb2JqZWN0ZW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIHNlbGVjdE9iamVjdFR5cGUob2JqZWN0VHlwZVVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE9iamVjdHR5cGVVcmwkLm5leHQob2JqZWN0VHlwZVVybCk7XG4gIH1cblxuICByb3dDbGlja2VkKG9iamVjdDogWmFha09iamVjdCwgb2JqZWN0VHlwZVNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRJZCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnRJZCA9PiB7XG4gICAgICB0aGlzLnphYWtvYmplY3RlblNlcnZpY2UuZ2V0T2JqZWN0VHlwZUZvcm0oZG9jdW1lbnRJZCwgb2JqZWN0LnVybCkuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSByZXMuZm9ybURlZmluaXRpb247XG5cbiAgICAgICAgICBkZWZpbml0aW9uLmNvbXBvbmVudHMgPSBkZWZpbml0aW9uLmNvbXBvbmVudHMubWFwKGNvbXBvbmVudCA9PiAoe1xuICAgICAgICAgICAgLi4uY29tcG9uZW50LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgdGhpcy5zZXRNb2RhbERhdGEob2JqZWN0VHlwZVNlbGVjdEl0ZW1zLCBkZWZpbml0aW9uKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0TW9kYWxEYXRhKG9iamVjdFR5cGVTZWxlY3RJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwoKCkgPT4ge1xuICAgICAgdGhpcy5vYmplY3ROYW1lJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMub2JqZWN0Rm9ybSQubmV4dChudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuTW9kYWwodGhpcy52aWV3WmFha29iamVjdE1vZGFsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2JqZWN0VHlwZU5hbWUob2JqZWN0VHlwZVNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPYmplY3RUeXBlVXJsID0gdGhpcy5zZWxlY3RlZE9iamVjdHR5cGVVcmwkLmdldFZhbHVlKCk7XG4gICAgY29uc3QgY3VycmVudFR5cGVTZWxlY3RJdGVtID0gb2JqZWN0VHlwZVNlbGVjdEl0ZW1zLmZpbmQoXG4gICAgICBzZWxlY3RJdGVtID0+IHNlbGVjdEl0ZW0uaWQgPT09IHNlbGVjdGVkT2JqZWN0VHlwZVVybFxuICAgICk7XG5cbiAgICByZXR1cm4gY3VycmVudFR5cGVTZWxlY3RJdGVtLnRleHQ7XG4gIH1cblxuICBwcml2YXRlIHNldE1vZGFsRGF0YShvYmplY3RUeXBlU2VsZWN0SXRlbXM6IEFycmF5PFNlbGVjdEl0ZW0+LCBkZWZpbml0aW9uPzogRm9ybWlvRm9ybSk6IHZvaWQge1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICB0aGlzLm9iamVjdEZvcm0kLm5leHQoZGVmaW5pdGlvbik7XG4gICAgICB0aGlzLm5vRm9ybURlZmluaXRpb25Db21wb25lbnQkLm5leHQoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vRm9ybURlZmluaXRpb25Db21wb25lbnQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5vYmplY3ROYW1lJC5uZXh0KHRoaXMuZ2V0T2JqZWN0VHlwZU5hbWUob2JqZWN0VHlwZVNlbGVjdEl0ZW1zKSk7XG4gICAgdGhpcy5zaG93KCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBvYmplY3R0eXBlU2VsZWN0SXRlbXM6IG9iamVjdHR5cGVTZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICBvYmplY3RzOiBvYmplY3RzJCB8IGFzeW5jLFxuICAgIGNvbHVtbnM6IGNvbHVtbnMkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRPYmplY3RUeXBlVXJsOiBzZWxlY3RlZE9iamVjdHR5cGVVcmwkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8di1zZWxlY3RcbiAgICBbaXRlbXNdPVwib2JzLm9iamVjdHR5cGVTZWxlY3RJdGVtc1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgbmFtZT1cIm9iamVjdHR5cGVzXCJcbiAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuemFha29iamVjdGVuLm9iamVjdHR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2Rvc3NpZXIuemFha29iamVjdGVuLm9iamVjdHR5cGVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgIFtsb2FkaW5nXT1cIiFvYnMub2JqZWN0dHlwZVNlbGVjdEl0ZW1zXCJcbiAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0T2JqZWN0VHlwZSgkZXZlbnQpXCJcbiAgPjwvdi1zZWxlY3Q+XG4gIDx2LWlucHV0LWxhYmVsXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuemFha29iamVjdGVuLm9iamVjdGVuXCJcbiAgICBbbGFyZ2VNYXJnaW5dPVwiISFvYnMuc2VsZWN0ZWRPYmplY3RUeXBlVXJsXCJcbiAgPjwvdi1pbnB1dC1sYWJlbD5cbiAgPHYtcGFyYWdyYXBoICpuZ0lmPVwiIW9icy5zZWxlY3RlZE9iamVjdFR5cGVVcmxcIj57e1xuICAgICdkb3NzaWVyLnphYWtvYmplY3Rlbi5vYmplY3RlblBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICB9fTwvdi1wYXJhZ3JhcGg+XG4gIDx2LXRhYmxlXG4gICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWRPYmplY3RUeXBlVXJsXCJcbiAgICBbbG9hZGluZ109XCIhb2JzLm9iamVjdHNcIlxuICAgIFtpdGVtc109XCJvYnMub2JqZWN0c1wiXG4gICAgW2NvbHVtbnNdPVwib2JzLmNvbHVtbnNcIlxuICAgIFtzaG93RWRpdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgW2Ftb3VudE9mTG9hZGluZ1Jvd3NdPVwiMlwiXG4gICAgW2l0ZW1zVHJhbnNsYXRpb25LZXldPVwiJ3BsdWdpbk1hbmFnZW1lbnQudGFibGVJdGVtc1RleHQnXCJcbiAgICBbc2hvd1BhZ2luYXRpb25dPVwiZmFsc2VcIlxuICAgIGVkaXRCdXR0b25UcmFuc2xhdGlvbktleT1cImRvc3NpZXIuemFha29iamVjdGVuLm9iamVjdFR5cGUudmlld09iamVjdFwiXG4gICAgKGVkaXRCdXR0b25DbGlja2VkKT1cInJvd0NsaWNrZWQoJGV2ZW50LCBvYnMub2JqZWN0dHlwZVNlbGVjdEl0ZW1zKVwiXG4gID48L3YtdGFibGU+XG48L25nLWNvbnRhaW5lcj5cblxuPHYtbW9kYWwgI3ZpZXdaYWFrb2JqZWN0TW9kYWwgKGNsb3NlRXZlbnQpPVwiaGlkZSgpXCIgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFttYXhXaWR0aFB4XT1cIjc1MFwiPlxuICA8ZGl2IHJvbGU9XCJoZWFkZXJcIj5cbiAgICA8di10aXRsZSBbbWFyZ2luXT1cImZhbHNlXCIgdHlwZT1cImgyXCIgW2Z1bGxXaWR0aF09XCJ0cnVlXCIgW2NlbnRlcl09XCJ0cnVlXCI+e3tcbiAgICAgIG9iamVjdE5hbWUkIHwgYXN5bmNcbiAgICB9fTwvdi10aXRsZT5cbiAgPC9kaXY+XG5cbiAgPGRpdiByb2xlPVwiY29udGVudFwiPlxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICpuZ0lmPVwiKG5vRm9ybURlZmluaXRpb25Db21wb25lbnQkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgICBbZm9ybV09XCJvYmplY3RGb3JtJCB8IGFzeW5jXCJcbiAgICA+PC92YWx0aW1vLWZvcm0taW8+XG4gICAgPHYtcGFyYWdyYXBoICpuZ0lmPVwibm9Gb3JtRGVmaW5pdGlvbkNvbXBvbmVudCQgfCBhc3luY1wiIFtjZW50ZXJdPVwidHJ1ZVwiPnt7XG4gICAgICAnZG9zc2llci56YWFrb2JqZWN0ZW4ubm9Gb3JtRGVmaW5pdGlvbkNvbXBvbmVudCcgfCB0cmFuc2xhdGVcbiAgICB9fTwvdi1wYXJhZ3JhcGg+XG4gIDwvZGl2PlxuPC92LW1vZGFsPlxuIl19
|