@valtimo/dossier 10.8.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +98 -0
  2. package/esm2022/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +75 -0
  3. package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +191 -0
  4. package/esm2022/lib/components/dossier-detail/tab/audit/audit.component.mjs +76 -0
  5. package/esm2022/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.mjs +86 -0
  6. package/esm2022/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +146 -0
  7. package/esm2022/lib/components/dossier-detail/tab/documents/documents.component.mjs +41 -0
  8. package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +61 -0
  9. package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +166 -0
  10. package/esm2022/lib/components/dossier-detail/tab/object-type/object-type.component.mjs +121 -0
  11. package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +52 -0
  12. package/esm2022/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.mjs +136 -0
  13. package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +134 -0
  14. package/esm2022/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +112 -0
  15. package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +370 -0
  16. package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +84 -0
  17. package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +132 -0
  18. package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +116 -0
  19. package/esm2022/lib/components/dossier-update/dossier-update.component.mjs +113 -0
  20. package/{esm2020 → esm2022}/lib/components/note-modal/note-modal.component.mjs +5 -5
  21. package/esm2022/lib/constants/case-tab-token.mjs +19 -0
  22. package/esm2022/lib/constants/index.mjs +3 -0
  23. package/esm2022/lib/constants/tab.mjs +42 -0
  24. package/esm2022/lib/dossier-routing.module.mjs +76 -0
  25. package/esm2022/lib/dossier.module.mjs +288 -0
  26. package/esm2022/lib/models/candidate-user.model.mjs +17 -0
  27. package/esm2022/lib/models/dossier-detail-tab.model.mjs +27 -0
  28. package/{esm2020 → esm2022}/lib/models/dossier-parameters.model.mjs +1 -1
  29. package/esm2022/lib/models/index.mjs +23 -0
  30. package/esm2022/lib/models/tab-api.model.mjs +23 -0
  31. package/esm2022/lib/models/tabs.model.mjs +116 -0
  32. package/esm2022/lib/permissions/dossier-detail.permissions.mjs +55 -0
  33. package/esm2022/lib/permissions/index.mjs +17 -0
  34. package/esm2022/lib/pipes/index.mjs +17 -0
  35. package/esm2022/lib/pipes/tab-translate/index.mjs +18 -0
  36. package/esm2022/lib/pipes/tab-translate/tab-translate-pipe.module.mjs +33 -0
  37. package/esm2022/lib/pipes/tab-translate/tab-translate.pipe.mjs +41 -0
  38. package/esm2022/lib/services/dossier-bulk-assign.service.mjs +35 -0
  39. package/esm2022/lib/services/dossier-column.service.mjs +98 -0
  40. package/esm2022/lib/services/dossier-list-assignee.service.mjs +89 -0
  41. package/esm2022/lib/services/dossier-list-pagination.service.mjs +119 -0
  42. package/esm2022/lib/services/dossier-list-search.service.mjs +59 -0
  43. package/esm2022/lib/services/dossier-list.service.mjs +74 -0
  44. package/esm2022/lib/services/dossier-parameter.service.mjs +165 -0
  45. package/esm2022/lib/services/dossier-tab-api.service.mjs +23 -0
  46. package/esm2022/lib/services/dossier-tab.service.mjs +130 -0
  47. package/esm2022/lib/services/dossier.service.mjs +58 -0
  48. package/{esm2020 → esm2022}/lib/services/file-sort.service.mjs +4 -4
  49. package/esm2022/lib/services/index.mjs +27 -0
  50. package/esm2022/lib/services/notes.service.mjs +76 -0
  51. package/{esm2020 → esm2022}/lib/services/zaakobjecten.service.mjs +4 -4
  52. package/esm2022/public_api.mjs +34 -0
  53. package/fesm2022/valtimo-dossier.mjs +3979 -0
  54. package/fesm2022/valtimo-dossier.mjs.map +1 -0
  55. package/lib/components/dossier-assign-user/dossier-assign-user.component.d.ts +28 -0
  56. package/lib/components/dossier-assign-user/dossier-assign-user.component.d.ts.map +1 -0
  57. package/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts +22 -0
  58. package/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts.map +1 -0
  59. package/lib/{dossier-detail → components/dossier-detail}/dossier-detail.component.d.ts +36 -33
  60. package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -0
  61. package/lib/{dossier-detail → components/dossier-detail}/tab/audit/audit.component.d.ts +1 -1
  62. package/lib/components/dossier-detail/tab/audit/audit.component.d.ts.map +1 -0
  63. package/lib/{dossier-detail → components/dossier-detail}/tab/contact-moments/contact-moments.component.d.ts +1 -1
  64. package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +1 -0
  65. package/lib/{dossier-detail → components/dossier-detail}/tab/documenten-api-documents/documenten-api-documents.component.d.ts +3 -4
  66. package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -0
  67. package/lib/{dossier-detail → components/dossier-detail}/tab/documents/documents.component.d.ts +1 -1
  68. package/lib/components/dossier-detail/tab/documents/documents.component.d.ts.map +1 -0
  69. package/lib/components/dossier-detail/tab/formio/formio.component.d.ts +20 -0
  70. package/lib/components/dossier-detail/tab/formio/formio.component.d.ts.map +1 -0
  71. package/lib/{dossier-detail → components/dossier-detail}/tab/notes/notes.component.d.ts +19 -12
  72. package/lib/components/dossier-detail/tab/notes/notes.component.d.ts.map +1 -0
  73. package/lib/{dossier-detail → components/dossier-detail}/tab/object-type/object-type.component.d.ts +5 -5
  74. package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts.map +1 -0
  75. package/lib/{dossier-detail → components/dossier-detail}/tab/progress/progress.component.d.ts +1 -1
  76. package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -0
  77. package/lib/{dossier-detail → components/dossier-detail}/tab/s3-documents/s3-documents.component.d.ts +3 -3
  78. package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +1 -0
  79. package/lib/{dossier-detail → components/dossier-detail}/tab/summary/summary.component.d.ts +8 -4
  80. package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -0
  81. package/lib/{dossier-detail → components/dossier-detail}/tab/zaakobjecten/zaakobjecten.component.d.ts +5 -5
  82. package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +1 -0
  83. package/lib/components/dossier-list/dossier-list.component.d.ts +94 -0
  84. package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -0
  85. package/lib/{dossier-list-actions → components/dossier-list-actions}/dossier-list-actions.component.d.ts +6 -7
  86. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -0
  87. package/lib/{dossier-process-start-modal → components/dossier-process-start-modal}/dossier-process-start-modal.component.d.ts +4 -7
  88. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -0
  89. package/lib/{dossier-supporting-process-start-modal → components/dossier-supporting-process-start-modal}/dossier-supporting-process-start-modal.component.d.ts +4 -7
  90. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -0
  91. package/lib/{dossier-update → components/dossier-update}/dossier-update.component.d.ts +2 -2
  92. package/lib/components/dossier-update/dossier-update.component.d.ts.map +1 -0
  93. package/lib/components/note-modal/note-modal.component.d.ts +3 -3
  94. package/lib/components/note-modal/note-modal.component.d.ts.map +1 -1
  95. package/lib/constants/case-tab-token.d.ts +5 -0
  96. package/lib/constants/case-tab-token.d.ts.map +1 -0
  97. package/lib/constants/index.d.ts +3 -0
  98. package/lib/constants/index.d.ts.map +1 -0
  99. package/lib/constants/tab.d.ts +7 -0
  100. package/lib/constants/tab.d.ts.map +1 -0
  101. package/lib/dossier-routing.module.d.ts.map +1 -1
  102. package/lib/dossier.module.d.ts +35 -33
  103. package/lib/dossier.module.d.ts.map +1 -1
  104. package/lib/models/candidate-user.model.d.ts +7 -0
  105. package/lib/models/candidate-user.model.d.ts.map +1 -0
  106. package/lib/models/dossier-detail-tab.model.d.ts +18 -0
  107. package/lib/models/dossier-detail-tab.model.d.ts.map +1 -0
  108. package/lib/models/dossier-parameters.model.d.ts +0 -1
  109. package/lib/models/dossier-parameters.model.d.ts.map +1 -1
  110. package/lib/models/index.d.ts +5 -2
  111. package/lib/models/index.d.ts.map +1 -1
  112. package/lib/models/search.model.d.ts +3 -3
  113. package/lib/models/search.model.d.ts.map +1 -1
  114. package/lib/models/tab-api.model.d.ts +13 -0
  115. package/lib/models/tab-api.model.d.ts.map +1 -0
  116. package/lib/models/tabs.model.d.ts +11 -10
  117. package/lib/models/tabs.model.d.ts.map +1 -1
  118. package/lib/permissions/dossier-detail.permissions.d.ts +14 -0
  119. package/lib/permissions/dossier-detail.permissions.d.ts.map +1 -0
  120. package/lib/permissions/index.d.ts +2 -0
  121. package/lib/permissions/index.d.ts.map +1 -0
  122. package/lib/pipes/index.d.ts +2 -0
  123. package/lib/pipes/index.d.ts.map +1 -0
  124. package/lib/pipes/tab-translate/index.d.ts +3 -0
  125. package/lib/pipes/tab-translate/index.d.ts.map +1 -0
  126. package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts +9 -0
  127. package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts.map +1 -0
  128. package/lib/pipes/tab-translate/tab-translate.pipe.d.ts +13 -0
  129. package/lib/pipes/tab-translate/tab-translate.pipe.d.ts.map +1 -0
  130. package/lib/services/dossier-bulk-assign.service.d.ts +17 -0
  131. package/lib/services/dossier-bulk-assign.service.d.ts.map +1 -0
  132. package/lib/services/dossier-column.service.d.ts +1 -1
  133. package/lib/services/dossier-column.service.d.ts.map +1 -1
  134. package/lib/services/dossier-list-assignee.service.d.ts +5 -4
  135. package/lib/services/dossier-list-assignee.service.d.ts.map +1 -1
  136. package/lib/services/dossier-list-pagination.service.d.ts +2 -2
  137. package/lib/services/dossier-list-pagination.service.d.ts.map +1 -1
  138. package/lib/services/dossier-list-search.service.d.ts +0 -3
  139. package/lib/services/dossier-list-search.service.d.ts.map +1 -1
  140. package/lib/services/dossier-list.service.d.ts +6 -0
  141. package/lib/services/dossier-list.service.d.ts.map +1 -1
  142. package/lib/services/dossier-parameter.service.d.ts.map +1 -1
  143. package/lib/services/dossier-tab-api.service.d.ts +15 -0
  144. package/lib/services/dossier-tab-api.service.d.ts.map +1 -0
  145. package/lib/services/dossier-tab.service.d.ts +31 -0
  146. package/lib/services/dossier-tab.service.d.ts.map +1 -0
  147. package/lib/{dossier.service.d.ts → services/dossier.service.d.ts} +5 -1
  148. package/lib/services/dossier.service.d.ts.map +1 -0
  149. package/lib/services/index.d.ts +4 -1
  150. package/lib/services/index.d.ts.map +1 -1
  151. package/lib/services/notes.service.d.ts.map +1 -1
  152. package/lib/services/zaakobjecten.service.d.ts.map +1 -1
  153. package/package.json +13 -19
  154. package/public_api.d.ts +13 -14
  155. package/public_api.d.ts.map +1 -1
  156. package/esm2020/lib/dossier-assign-user/dossier-assign-user.component.mjs +0 -126
  157. package/esm2020/lib/dossier-detail/dossier-detail.component.mjs +0 -175
  158. package/esm2020/lib/dossier-detail/tab/audit/audit.component.mjs +0 -76
  159. package/esm2020/lib/dossier-detail/tab/contact-moments/contact-moments.component.mjs +0 -86
  160. package/esm2020/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +0 -147
  161. package/esm2020/lib/dossier-detail/tab/documents/documents.component.mjs +0 -41
  162. package/esm2020/lib/dossier-detail/tab/notes/notes.component.mjs +0 -153
  163. package/esm2020/lib/dossier-detail/tab/object-type/object-type.component.mjs +0 -122
  164. package/esm2020/lib/dossier-detail/tab/progress/progress.component.mjs +0 -51
  165. package/esm2020/lib/dossier-detail/tab/s3-documents/s3-documents.component.mjs +0 -134
  166. package/esm2020/lib/dossier-detail/tab/summary/summary.component.mjs +0 -124
  167. package/esm2020/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +0 -113
  168. package/esm2020/lib/dossier-detail-tab-enum.mjs +0 -26
  169. package/esm2020/lib/dossier-list/dossier-list.component.mjs +0 -224
  170. package/esm2020/lib/dossier-list-actions/dossier-list-actions.component.mjs +0 -86
  171. package/esm2020/lib/dossier-process-start-modal/dossier-process-start-modal.component.mjs +0 -192
  172. package/esm2020/lib/dossier-routing.module.mjs +0 -66
  173. package/esm2020/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +0 -181
  174. package/esm2020/lib/dossier-update/dossier-update.component.mjs +0 -113
  175. package/esm2020/lib/dossier.config.mjs +0 -29
  176. package/esm2020/lib/dossier.module.mjs +0 -259
  177. package/esm2020/lib/dossier.service.mjs +0 -50
  178. package/esm2020/lib/models/index.mjs +0 -20
  179. package/esm2020/lib/models/tabs.model.mjs +0 -112
  180. package/esm2020/lib/services/dossier-column.service.mjs +0 -100
  181. package/esm2020/lib/services/dossier-list-assignee.service.mjs +0 -82
  182. package/esm2020/lib/services/dossier-list-pagination.service.mjs +0 -116
  183. package/esm2020/lib/services/dossier-list-search.service.mjs +0 -66
  184. package/esm2020/lib/services/dossier-list.service.mjs +0 -56
  185. package/esm2020/lib/services/dossier-parameter.service.mjs +0 -167
  186. package/esm2020/lib/services/index.mjs +0 -24
  187. package/esm2020/lib/services/notes.service.mjs +0 -76
  188. package/esm2020/lib/tab.service.mjs +0 -80
  189. package/esm2020/public_api.mjs +0 -35
  190. package/fesm2015/valtimo-dossier.mjs +0 -3348
  191. package/fesm2015/valtimo-dossier.mjs.map +0 -1
  192. package/fesm2020/valtimo-dossier.mjs +0 -3447
  193. package/fesm2020/valtimo-dossier.mjs.map +0 -1
  194. package/lib/dossier-assign-user/dossier-assign-user.component.d.ts +0 -34
  195. package/lib/dossier-assign-user/dossier-assign-user.component.d.ts.map +0 -1
  196. package/lib/dossier-detail/dossier-detail.component.d.ts.map +0 -1
  197. package/lib/dossier-detail/tab/audit/audit.component.d.ts.map +0 -1
  198. package/lib/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +0 -1
  199. package/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +0 -1
  200. package/lib/dossier-detail/tab/documents/documents.component.d.ts.map +0 -1
  201. package/lib/dossier-detail/tab/notes/notes.component.d.ts.map +0 -1
  202. package/lib/dossier-detail/tab/object-type/object-type.component.d.ts.map +0 -1
  203. package/lib/dossier-detail/tab/progress/progress.component.d.ts.map +0 -1
  204. package/lib/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +0 -1
  205. package/lib/dossier-detail/tab/summary/summary.component.d.ts.map +0 -1
  206. package/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +0 -1
  207. package/lib/dossier-detail-tab-enum.d.ts +0 -10
  208. package/lib/dossier-detail-tab-enum.d.ts.map +0 -1
  209. package/lib/dossier-list/dossier-list.component.d.ts +0 -66
  210. package/lib/dossier-list/dossier-list.component.d.ts.map +0 -1
  211. package/lib/dossier-list-actions/dossier-list-actions.component.d.ts.map +0 -1
  212. package/lib/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +0 -1
  213. package/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +0 -1
  214. package/lib/dossier-update/dossier-update.component.d.ts.map +0 -1
  215. package/lib/dossier.config.d.ts +0 -4
  216. package/lib/dossier.config.d.ts.map +0 -1
  217. package/lib/dossier.service.d.ts.map +0 -1
  218. package/lib/tab.service.d.ts +0 -21
  219. package/lib/tab.service.d.ts.map +0 -1
  220. /package/{esm2020 → esm2022}/lib/models/notes.model.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/models/search.model.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/models/zaakobjecten.model.mjs +0 -0
  223. /package/{esm2020 → esm2022}/valtimo-dossier.mjs +0 -0
@@ -1,175 +0,0 @@
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, ViewContainerRef, } from '@angular/core';
17
- import { TabLoaderImpl } from '../models';
18
- import moment from 'moment';
19
- import { BehaviorSubject, combineLatest, from, map, of, startWith, switchMap, take, tap, } from 'rxjs';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@ngx-translate/core";
22
- import * as i2 from "@valtimo/document";
23
- import * as i3 from "@valtimo/process";
24
- import * as i4 from "@angular/router";
25
- import * as i5 from "@angular/common";
26
- import * as i6 from "../tab.service";
27
- import * as i7 from "@valtimo/config";
28
- import * as i8 from "keycloak-angular";
29
- import * as i9 from "ngx-logger";
30
- import * as i10 from "@valtimo/components";
31
- import * as i11 from "@ng-bootstrap/ng-bootstrap";
32
- import * as i12 from "../dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component";
33
- import * as i13 from "../dossier-assign-user/dossier-assign-user.component";
34
- export class DossierDetailComponent {
35
- constructor(componentFactoryResolver, translateService, documentService, processService, route, router, location, tabService, configService, keyCloakService, logger, breadcrumbService, pageTitleService) {
36
- this.componentFactoryResolver = componentFactoryResolver;
37
- this.translateService = translateService;
38
- this.documentService = documentService;
39
- this.processService = processService;
40
- this.route = route;
41
- this.router = router;
42
- this.location = location;
43
- this.tabService = tabService;
44
- this.configService = configService;
45
- this.keyCloakService = keyCloakService;
46
- this.logger = logger;
47
- this.breadcrumbService = breadcrumbService;
48
- this.pageTitleService = pageTitleService;
49
- this.document = null;
50
- this.tabLoader = null;
51
- this.processDefinitionListFields = [];
52
- this.processDocumentDefinitions = [];
53
- this.customDossierHeaderItems = [];
54
- this.dossierStatusTabs = null;
55
- this.refreshDocument$ = new BehaviorSubject(null);
56
- this.assigneeId$ = new BehaviorSubject('');
57
- this.document$ = this.refreshDocument$.pipe(switchMap(() => this.route.params), map(params => params?.documentId), switchMap(documentId => documentId ? this.documentService.getDocument(this.documentId) : of(null)), tap(document => {
58
- if (document) {
59
- this.assigneeId$.next(document.assigneeId);
60
- this.document = document;
61
- if (this.configService.config.customDossierHeader?.hasOwnProperty(this.documentDefinitionName.toLowerCase()) &&
62
- this.customDossierHeaderItems.length === 0) {
63
- this.configService.config.customDossierHeader[this.documentDefinitionName.toLowerCase()]?.forEach(item => this.getCustomDossierHeaderItem(item));
64
- }
65
- }
66
- }));
67
- this.userId$ = from(this.keyCloakService.isLoggedIn()).pipe(switchMap(() => this.keyCloakService.loadUserProfile()), map(profile => profile?.id));
68
- this.isAssigning$ = new BehaviorSubject(false);
69
- this.isAssignedToCurrentUser$ = combineLatest([
70
- this.assigneeId$,
71
- this.userId$,
72
- ]).pipe(map(([assigneeId, userId]) => assigneeId && userId && assigneeId === userId), startWith(true));
73
- this.documentDefinitionName$ = this.route.params.pipe(map(params => params.documentDefinitionName || ''));
74
- this.canHaveAssignee$ = this.documentDefinitionName$.pipe(switchMap(documentDefinitionName => this.documentService.getCaseSettings(documentDefinitionName)), map(caseSettings => caseSettings?.canHaveAssignee));
75
- this.snapshot = this.route.snapshot.paramMap;
76
- this.documentDefinitionName = this.snapshot.get('documentDefinitionName') || '';
77
- this.documentId = this.snapshot.get('documentId') || '';
78
- this.tabService.getConfigurableTabs(this.documentDefinitionName);
79
- }
80
- ngOnInit() {
81
- this.tabLoader = new TabLoaderImpl(this.tabService.getTabs(), this.componentFactoryResolver, this.viewContainerRef, this.translateService, this.router, this.location);
82
- this.documentService
83
- .getDocumentDefinition(this.documentDefinitionName)
84
- .subscribe(definition => {
85
- this.documentDefinitionNameTitle = definition.schema.title;
86
- this.setBreadcrumb();
87
- });
88
- this.initialTabName = this.snapshot.get('tab');
89
- this.tabLoader.initial(this.initialTabName);
90
- this.getAllAssociatedProcessDefinitions();
91
- }
92
- ngOnDestroy() {
93
- this.breadcrumbService.clearSecondBreadcrumb();
94
- }
95
- getAllAssociatedProcessDefinitions() {
96
- this.documentService
97
- .findProcessDocumentDefinitions(this.documentDefinitionName)
98
- .subscribe(processDocumentDefinitions => {
99
- this.processDocumentDefinitions = processDocumentDefinitions.filter(processDocumentDefinition => processDocumentDefinition.startableByUser);
100
- this.processDefinitionListFields = [
101
- {
102
- key: 'processName',
103
- label: 'Proces',
104
- },
105
- ];
106
- });
107
- }
108
- startProcess(processDocumentDefinition) {
109
- this.supportingProcessStart.openModal(processDocumentDefinition, this.documentId);
110
- }
111
- claimAssignee() {
112
- this.isAssigning$.next(true);
113
- this.userId$
114
- .pipe(take(1), switchMap(userId => this.documentService.assignHandlerToDocument(this.documentId, userId)))
115
- .subscribe(() => {
116
- this.isAssigning$.next(false);
117
- this.refreshDocument$.next(null);
118
- }, () => {
119
- this.isAssigning$.next(false);
120
- this.logger.debug('Something went wrong while assigning user to case');
121
- });
122
- }
123
- assignmentOfDocumentChanged() {
124
- this.refreshDocument$.next(null);
125
- }
126
- getCustomDossierHeaderItem(item) {
127
- this.customDossierHeaderItems.push({
128
- label: item['labelTranslationKey'] || '',
129
- columnSize: item['columnSize'] || 3,
130
- textSize: item['textSize'] || 'md',
131
- customClass: item['customClass'] || '',
132
- modifier: item['modifier'] || '',
133
- value: item['propertyPaths']?.reduce((prev, curr) => prev + this.getStringFromDocumentPath(item, curr), ''),
134
- });
135
- }
136
- getStringFromDocumentPath(item, path) {
137
- const prefix = item['propertyPaths'].indexOf(path) > 0 ? ' ' : '';
138
- let string = path.split('.').reduce((o, i) => o[i], this.document.content) || item['noValueText'] || '';
139
- const dateFormats = [moment.ISO_8601, 'MM-DD-YYYY', 'DD-MM-YYYY', 'YYYY-MM-DD'];
140
- switch (item['modifier']) {
141
- case 'age': {
142
- if (moment(string, dateFormats, true).isValid()) {
143
- string = moment().diff(string, 'years');
144
- }
145
- break;
146
- }
147
- default: {
148
- if (moment(string, dateFormats, true).isValid()) {
149
- string = moment(string).format('DD-MM-YYYY');
150
- }
151
- }
152
- }
153
- return prefix + string;
154
- }
155
- setBreadcrumb() {
156
- this.breadcrumbService.setSecondBreadcrumb({
157
- route: [`/dossiers/${this.documentDefinitionName}`],
158
- content: this.documentDefinitionNameTitle,
159
- href: `/dossiers/${this.documentDefinitionName}`,
160
- });
161
- }
162
- }
163
- DossierDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.TranslateService }, { token: i2.DocumentService }, { token: i3.ProcessService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i5.Location }, { token: i6.TabService }, { token: i7.ConfigService }, { token: i8.KeycloakService }, { token: i9.NGXLogger }, { token: i10.BreadcrumbService }, { token: i10.PageTitleService }], target: i0.ɵɵFactoryTarget.Component });
164
- DossierDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DossierDetailComponent, selector: "valtimo-dossier-detail", viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], 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=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-header bg-light card-header-divider pb-2\">\n <div\n class=\"row\"\n *ngIf=\"{canHaveAssignee: canHaveAssignee$ | async, document: document$ | async} as obs\"\n >\n <div class=\"col\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailHeader;\n context: {canHaveAssignee: obs.canHaveAssignee, document: obs.document}\n \"\n ></ng-container>\n </div>\n <div class=\"btn-group mt-m3px mb-3 col-auto\">\n <valtimo-extension\n module=\"dossier\"\n page=\"dossier-detail\"\n section=\"card-header\"\n ></valtimo-extension>\n <ng-container\n *ngTemplateOutlet=\"claimButton; context: {canHaveAssignee: obs.canHaveAssignee}\"\n ></ng-container>\n <div class=\"dropdown\">\n <button\n class=\"btn btn-primary dropdown-toggle\"\n type=\"button\"\n id=\"startProcessDropdown\"\n placement=\"bottom\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n [disabled]=\"processDocumentDefinitions.length === 0\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span>{{ 'dossier.startSubProcess' | translate }}</span>\n <i class=\"ml-1 mdi mdi-chevron-down\"></i>\n </button>\n <div\n class=\"dropdown-menu dropdown-menu-right\"\n aria-labelledby=\"startProcessDropdown\"\n >\n <button\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n class=\"dropdown-item p\"\n href=\"#\"\n (click)=\"startProcess(processDocumentDefinition)\"\n >\n {{\n (processDocumentDefinition?.id?.processDefinitionKey | translate) !==\n processDocumentDefinition?.id?.processDefinitionKey\n ? (processDocumentDefinition.id.processDefinitionKey | translate)\n : processDocumentDefinition.processName\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\" *ngFor=\"let tab of tabLoader.tabs\">\n <a\n id=\"{{ tab.name }}-tab\"\n class=\"nav-link clickable\"\n [ngClass]=\"{active: tab.isActive()}\"\n data-toggle=\"tab\"\n (click)=\"tabLoader.load(tab)\"\n >\n {{ tabLoader.translateTabName(tab) }}\n </a>\n </li>\n </ul>\n <div class=\"card-body bg-white p-5 position-relative tab-container\">\n <ng-template #tabContainer>Loading...</ng-template>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </div>\n <valtimo-dossier-supporting-process-start-modal\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n </div>\n</div>\n\n<ng-template #caseDetailHeader let-canHaveAssignee=\"canHaveAssignee\" let-document=\"document\">\n <div class=\"row\" *ngIf=\"customDossierHeaderItems.length > 0; else defaultTitle\">\n <span\n class=\"mb-0 mt-0 pb-2 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs'\n }\"\n *ngFor=\"let item of customDossierHeaderItems\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n <span *ngIf=\"item.label && item.value\">: </span>\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #defaultTitle>\n <div class=\"row ml-0 mr-0\">{{ documentDefinitionNameTitle?.trim() }}</div>\n</ng-template>\n\n<ng-template #caseDetailAssignee let-canHaveAssignee=\"canHaveAssignee\" let-document=\"document\">\n <div class=\"row ml-0 mr-0 mt-1 mb-1\" *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n [documentId]=\"document.id\"\n [assigneeId]=\"document.assigneeId\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canHaveAssignee=\"canHaveAssignee\">\n <div class=\"user-full-name\" *ngIf=\"canHaveAssignee\">\n <button\n class=\"btn btn-space btn-primary mr-1\"\n type=\"button\"\n id=\"\"\n placement=\"bottom\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"claimAssignee()\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n >\n <span>{{ 'dossier.claimAssigneeCase' | translate }}</span>\n </button>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i10.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i7.ExtensionComponent, selector: "valtimo-extension", inputs: ["module", "page", "section"] }, { kind: "component", type: i12.DossierSupportingProcessStartModalComponent, selector: "valtimo-dossier-supporting-process-start-modal", outputs: ["formSubmit"] }, { kind: "component", type: i13.DossierAssignUserComponent, selector: "valtimo-dossier-assign-user", inputs: ["documentId", "assigneeId", "assigneeFullName", "hasPermission"], outputs: ["assignmentOfDocumentChanged"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailComponent, decorators: [{
166
- type: Component,
167
- args: [{ selector: 'valtimo-dossier-detail', 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=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-header bg-light card-header-divider pb-2\">\n <div\n class=\"row\"\n *ngIf=\"{canHaveAssignee: canHaveAssignee$ | async, document: document$ | async} as obs\"\n >\n <div class=\"col\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailHeader;\n context: {canHaveAssignee: obs.canHaveAssignee, document: obs.document}\n \"\n ></ng-container>\n </div>\n <div class=\"btn-group mt-m3px mb-3 col-auto\">\n <valtimo-extension\n module=\"dossier\"\n page=\"dossier-detail\"\n section=\"card-header\"\n ></valtimo-extension>\n <ng-container\n *ngTemplateOutlet=\"claimButton; context: {canHaveAssignee: obs.canHaveAssignee}\"\n ></ng-container>\n <div class=\"dropdown\">\n <button\n class=\"btn btn-primary dropdown-toggle\"\n type=\"button\"\n id=\"startProcessDropdown\"\n placement=\"bottom\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n [disabled]=\"processDocumentDefinitions.length === 0\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span>{{ 'dossier.startSubProcess' | translate }}</span>\n <i class=\"ml-1 mdi mdi-chevron-down\"></i>\n </button>\n <div\n class=\"dropdown-menu dropdown-menu-right\"\n aria-labelledby=\"startProcessDropdown\"\n >\n <button\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n class=\"dropdown-item p\"\n href=\"#\"\n (click)=\"startProcess(processDocumentDefinition)\"\n >\n {{\n (processDocumentDefinition?.id?.processDefinitionKey | translate) !==\n processDocumentDefinition?.id?.processDefinitionKey\n ? (processDocumentDefinition.id.processDefinitionKey | translate)\n : processDocumentDefinition.processName\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <ul class=\"nav nav-tabs\">\n <li class=\"nav-item\" *ngFor=\"let tab of tabLoader.tabs\">\n <a\n id=\"{{ tab.name }}-tab\"\n class=\"nav-link clickable\"\n [ngClass]=\"{active: tab.isActive()}\"\n data-toggle=\"tab\"\n (click)=\"tabLoader.load(tab)\"\n >\n {{ tabLoader.translateTabName(tab) }}\n </a>\n </li>\n </ul>\n <div class=\"card-body bg-white p-5 position-relative tab-container\">\n <ng-template #tabContainer>Loading...</ng-template>\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </div>\n <valtimo-dossier-supporting-process-start-modal\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n </div>\n</div>\n\n<ng-template #caseDetailHeader let-canHaveAssignee=\"canHaveAssignee\" let-document=\"document\">\n <div class=\"row\" *ngIf=\"customDossierHeaderItems.length > 0; else defaultTitle\">\n <span\n class=\"mb-0 mt-0 pb-2 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs'\n }\"\n *ngFor=\"let item of customDossierHeaderItems\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n <span *ngIf=\"item.label && item.value\">: </span>\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #defaultTitle>\n <div class=\"row ml-0 mr-0\">{{ documentDefinitionNameTitle?.trim() }}</div>\n</ng-template>\n\n<ng-template #caseDetailAssignee let-canHaveAssignee=\"canHaveAssignee\" let-document=\"document\">\n <div class=\"row ml-0 mr-0 mt-1 mb-1\" *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n [documentId]=\"document.id\"\n [assigneeId]=\"document.assigneeId\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canHaveAssignee=\"canHaveAssignee\">\n <div class=\"user-full-name\" *ngIf=\"canHaveAssignee\">\n <button\n class=\"btn btn-space btn-primary mr-1\"\n type=\"button\"\n id=\"\"\n placement=\"bottom\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"claimAssignee()\"\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n >\n <span>{{ 'dossier.claimAssigneeCase' | translate }}</span>\n </button>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}\n"] }]
168
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.TranslateService }, { type: i2.DocumentService }, { type: i3.ProcessService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i5.Location }, { type: i6.TabService }, { type: i7.ConfigService }, { type: i8.KeycloakService }, { type: i9.NGXLogger }, { type: i10.BreadcrumbService }, { type: i10.PageTitleService }]; }, propDecorators: { viewContainerRef: [{
169
- type: ViewChild,
170
- args: ['tabContainer', { read: ViewContainerRef, static: true }]
171
- }], supportingProcessStart: [{
172
- type: ViewChild,
173
- args: ['supportingProcessStartModal']
174
- }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1kZXRhaWwvZG9zc2llci1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1kZXRhaWwvZG9zc2llci1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUlULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQU94QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFFSCxFQUFFLEVBQ0YsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFVZCxNQUFNLE9BQU8sc0JBQXNCO0lBMEVqQyxZQUNtQix3QkFBa0QsRUFDbEQsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxRQUFrQixFQUNsQixVQUFzQixFQUN0QixhQUE0QixFQUM1QixlQUFnQyxFQUNoQyxNQUFpQixFQUNqQixpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBWmxDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlC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RjtRQUNELE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUM7WUFDekMsS0FBSyxFQUFFLENBQUMsYUFBYSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNuRCxPQUFPLEVBQUUsSUFBSSxDQUFDLDJCQUEyQjtZQUN6QyxJQUFJLEVBQUUsYUFBYSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUhBNU1VLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDJKQUNDLGdCQUFnQixtS0N4RHBELGsyTUFvS0E7MkZEN0dhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSx3QkFBd0I7OGJBTWxDLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQWdCakUsc0JBQXNCO3NCQURyQixTQUFTO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtTWFwLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0RvY3VtZW50LCBEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7VGFiTG9hZGVySW1wbH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtUYWJTZXJ2aWNlfSBmcm9tICcuLi90YWIuc2VydmljZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7RG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudH0gZnJvbSAnLi4vZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwvZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgRG9zc2llckxpc3RUYWJ9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtLZXljbG9ha1NlcnZpY2V9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtCcmVhZGNydW1iU2VydmljZSwgUGFnZVRpdGxlU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3RhYkNvbnRhaW5lcicsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWV9KVxuICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudCA9IG51bGw7XG4gIHB1YmxpYyB0YWJMb2FkZXI6IFRhYkxvYWRlckltcGwgPSBudWxsO1xuICBwcml2YXRlIHNuYXBzaG90OiBQYXJhbU1hcDtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25bXSA9IFtdO1xuICBwcml2YXRlIGluaXRpYWxUYWJOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXN0b21Eb3NzaWVySGVhZGVySXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIGRvc3NpZXJTdGF0dXNUYWJzOiBBcnJheTxEb3NzaWVyTGlzdFRhYj4gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWwnKVxuICBzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0OiBEb3NzaWVyU3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsQ29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IHJlZnJlc2hEb2N1bWVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8RG9jdW1lbnQgfCBudWxsPiA9IHRoaXMucmVmcmVzaERvY3VtZW50JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJvdXRlLnBhcmFtcyksXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+XG4gICAgICBkb2N1bWVudElkID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnQodGhpcy5kb2N1bWVudElkKSA6IG9mKG51bGwpXG4gICAgKSxcbiAgICB0YXAoZG9jdW1lbnQgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgIHRoaXMuYXNzaWduZWVJZCQubmV4dChkb2N1bWVudC5hc3NpZ25lZUlkKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmN1c3RvbURvc3NpZXJIZWFkZXI/Lmhhc093blByb3BlcnR5KFxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApICYmXG4gICAgICAgICAgdGhpcy5jdXN0b21Eb3NzaWVySGVhZGVySXRlbXMubGVuZ3RoID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuY3VzdG9tRG9zc2llckhlYWRlcltcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgXT8uZm9yRWFjaChpdGVtID0+IHRoaXMuZ2V0Q3VzdG9tRG9zc2llckhlYWRlckl0ZW0oaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSB1c2VySWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSBmcm9tKHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmlzTG9nZ2VkSW4oKSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5rZXlDbG9ha1NlcnZpY2UubG9hZFVzZXJQcm9maWxlKCkpLFxuICAgIG1hcChwcm9maWxlID0+IHByb2ZpbGU/LmlkKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzQXNzaWduaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGlzQXNzaWduZWRUb0N1cnJlbnRVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYXNzaWduZWVJZCQsXG4gICAgdGhpcy51c2VySWQkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Fzc2lnbmVlSWQsIHVzZXJJZF0pID0+IGFzc2lnbmVlSWQgJiYgdXNlcklkICYmIGFzc2lnbmVlSWQgPT09IHVzZXJJZCksXG4gICAgc3RhcnRXaXRoKHRydWUpXG4gICk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSB8fCAnJylcbiAgKTtcblxuICByZWFkb25seSBjYW5IYXZlQXNzaWduZWUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRDYXNlU2V0dGluZ3MoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICApLFxuICAgIG1hcChjYXNlU2V0dGluZ3MgPT4gY2FzZVNldHRpbmdzPy5jYW5IYXZlQXNzaWduZWUpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFiU2VydmljZTogVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlDbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcDtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLnNuYXBzaG90LmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpIHx8ICcnO1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IHRoaXMuc25hcHNob3QuZ2V0KCdkb2N1bWVudElkJykgfHwgJyc7XG4gICAgdGhpcy50YWJTZXJ2aWNlLmdldENvbmZpZ3VyYWJsZVRhYnModGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFiTG9hZGVyID0gbmV3IFRhYkxvYWRlckltcGwoXG4gICAgICB0aGlzLnRhYlNlcnZpY2UuZ2V0VGFicygpLFxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICB0aGlzLnJvdXRlcixcbiAgICAgIHRoaXMubG9jYXRpb25cbiAgICApO1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZ2V0RG9jdW1lbnREZWZpbml0aW9uKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoZGVmaW5pdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlID0gZGVmaW5pdGlvbi5zY2hlbWEudGl0bGU7XG4gICAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYigpO1xuICAgICAgfSk7XG4gICAgdGhpcy5pbml0aWFsVGFiTmFtZSA9IHRoaXMuc25hcHNob3QuZ2V0KCd0YWInKTtcbiAgICB0aGlzLnRhYkxvYWRlci5pbml0aWFsKHRoaXMuaW5pdGlhbFRhYk5hbWUpO1xuICAgIHRoaXMuZ2V0QWxsQXNzb2NpYXRlZFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5jbGVhclNlY29uZEJyZWFkY3J1bWIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPT4gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5zdGFydGFibGVCeVVzZXJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbkxpc3RGaWVsZHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncHJvY2Vzc05hbWUnLFxuICAgICAgICAgICAgbGFiZWw6ICdQcm9jZXMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0Lm9wZW5Nb2RhbChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLCB0aGlzLmRvY3VtZW50SWQpO1xuICB9XG5cbiAgY2xhaW1Bc3NpZ25lZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy51c2VySWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKHVzZXJJZCA9PiB0aGlzLmRvY3VtZW50U2VydmljZS5hc3NpZ25IYW5kbGVyVG9Eb2N1bWVudCh0aGlzLmRvY3VtZW50SWQsIHVzZXJJZCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Fzc2lnbmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoRG9jdW1lbnQkLm5leHQobnVsbCk7XG4gICAgICAgIH0sXG4gICAgICAgICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgYXNzaWduaW5nIHVzZXIgdG8gY2FzZScpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaERvY3VtZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21Eb3NzaWVySGVhZGVySXRlbShpdGVtKTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21Eb3NzaWVySGVhZGVySXRlbXMucHVzaCh7XG4gICAgICBsYWJlbDogaXRlbVsnbGFiZWxUcmFuc2xhdGlvbktleSddIHx8ICcnLFxuICAgICAgY29sdW1uU2l6ZTogaXRlbVsnY29sdW1uU2l6ZSddIHx8IDMsXG4gICAgICB0ZXh0U2l6ZTogaXRlbVsndGV4dFNpemUnXSB8fCAnbWQnLFxuICAgICAgY3VzdG9tQ2xhc3M6IGl0ZW1bJ2N1c3RvbUNsYXNzJ10gfHwgJycsXG4gICAgICBtb2RpZmllcjogaXRlbVsnbW9kaWZpZXInXSB8fCAnJyxcbiAgICAgIHZhbHVlOiBpdGVtWydwcm9wZXJ0eVBhdGhzJ10/LnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnIpID0+IHByZXYgKyB0aGlzLmdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgY3VyciksXG4gICAgICAgICcnXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHJpbmdGcm9tRG9jdW1lbnRQYXRoKGl0ZW0sIHBhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXS5pbmRleE9mKHBhdGgpID4gMCA/ICcgJyA6ICcnO1xuICAgIGxldCBzdHJpbmcgPVxuICAgICAgcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgobywgaSkgPT4gb1tpXSwgdGhpcy5kb2N1bWVudC5jb250ZW50KSB8fCBpdGVtWydub1ZhbHVlVGV4dCddIHx8ICcnO1xuICAgIGNvbnN0IGRhdGVGb3JtYXRzID0gW21vbWVudC5JU09fODYwMSwgJ01NLURELVlZWVknLCAnREQtTU0tWVlZWScsICdZWVlZLU1NLUREJ107XG4gICAgc3dpdGNoIChpdGVtWydtb2RpZmllciddKSB7XG4gICAgICBjYXNlICdhZ2UnOiB7XG4gICAgICAgIGlmIChtb21lbnQoc3RyaW5nLCBkYXRlRm9ybWF0cywgdHJ1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgc3RyaW5nID0gbW9tZW50KCkuZGlmZihzdHJpbmcsICd5ZWFycycpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAobW9tZW50KHN0cmluZywgZGF0ZUZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHN0cmluZyA9IG1vbWVudChzdHJpbmcpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXggKyBzdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIHNldEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRTZWNvbmRCcmVhZGNydW1iKHtcbiAgICAgIHJvdXRlOiBbYC9kb3NzaWVycy8ke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlLFxuICAgICAgaHJlZjogYC9kb3NzaWVycy8ke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gLFxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8dmFsdGltby13aWRnZXQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy1saWdodCBjYXJkLWhlYWRlci1kaXZpZGVyIHBiLTJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvd1wiXG4gICAgICAgICAgICAqbmdJZj1cIntjYW5IYXZlQXNzaWduZWU6IGNhbkhhdmVBc3NpZ25lZSQgfCBhc3luYywgZG9jdW1lbnQ6IGRvY3VtZW50JCB8IGFzeW5jfSBhcyBvYnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBjYXNlRGV0YWlsSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge2NhbkhhdmVBc3NpZ25lZTogb2JzLmNhbkhhdmVBc3NpZ25lZSwgZG9jdW1lbnQ6IG9icy5kb2N1bWVudH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbXQtbTNweCBtYi0zIGNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDx2YWx0aW1vLWV4dGVuc2lvblxuICAgICAgICAgICAgICAgIG1vZHVsZT1cImRvc3NpZXJcIlxuICAgICAgICAgICAgICAgIHBhZ2U9XCJkb3NzaWVyLWRldGFpbFwiXG4gICAgICAgICAgICAgICAgc2VjdGlvbj1cImNhcmQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgPjwvdmFsdGltby1leHRlbnNpb24+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNsYWltQnV0dG9uOyBjb250ZXh0OiB7Y2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlfVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFydFByb2Nlc3NEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwID8gJ05vIGFjdGlvbicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdkb3NzaWVyLnN0YXJ0U3ViUHJvY2VzcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1sLTEgbWRpIG1kaS1jaGV2cm9uLWRvd25cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic3RhcnRQcm9jZXNzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcFwiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleSB8IHRyYW5zbGF0ZSkgIT09XG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbj8uaWQ/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFic1wiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJMb2FkZXIudGFic1wiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaWQ9XCJ7eyB0YWIubmFtZSB9fS10YWJcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRhYi5pc0FjdGl2ZSgpfVwiXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRhYkxvYWRlci5sb2FkKHRhYilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0YWJMb2FkZXIudHJhbnNsYXRlVGFiTmFtZSh0YWIpIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBiZy13aGl0ZSBwLTUgcG9zaXRpb24tcmVsYXRpdmUgdGFiLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFiQ29udGFpbmVyPkxvYWRpbmcuLi48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgPC9kaXY+XG4gICAgPHZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWxcbiAgICAgIChmb3JtU3VibWl0KT1cInRhYkxvYWRlci5yZWZyZXNoVmlldygpXCJcbiAgICAgICNzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Nhc2VEZXRhaWxIZWFkZXIgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiIGxldC1kb2N1bWVudD1cImRvY3VtZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5sZW5ndGggPiAwOyBlbHNlIGRlZmF1bHRUaXRsZVwiPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cIm1iLTAgbXQtMCBwYi0yIGFsaWduLXNlbGYtZW5kIGNvbC14bC17eyBpdGVtLmNvbHVtblNpemUgfX0gY29sLWxnLXt7XG4gICAgICAgIGl0ZW0uY29sdW1uU2l6ZSAqIDJcbiAgICAgIH19IHt7IGl0ZW0uY3VzdG9tQ2xhc3MgfX1cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBoMTogaXRlbS50ZXh0U2l6ZSA9PT0gJ3hsJyxcbiAgICAgICAgaDI6IGl0ZW0udGV4dFNpemUgPT09ICdsZycsXG4gICAgICAgIGgzOiBpdGVtLnRleHRTaXplID09PSAnbWQnLFxuICAgICAgICBoNDogaXRlbS50ZXh0U2l6ZSA9PT0gJ3NtJyxcbiAgICAgICAgaDU6IGl0ZW0udGV4dFNpemUgPT09ICd4cydcbiAgICAgIH1cIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubGFiZWxcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmxhYmVsICYmIGl0ZW0udmFsdWVcIj46IDwvc3Bhbj5cbiAgICAgIDxzdHJvbmc+e3sgaXRlbS52YWx1ZSB9fTwvc3Ryb25nPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FzZURldGFpbEFzc2lnbmVlO1xuICAgICAgY29udGV4dDoge2NhbkhhdmVBc3NpZ25lZTogY2FuSGF2ZUFzc2lnbmVlLCBkb2N1bWVudDogZG9jdW1lbnR9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGl0bGU+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWwtMCBtci0wXCI+e3sgZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlPy50cmltKCkgfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FzZURldGFpbEFzc2lnbmVlIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIiBsZXQtZG9jdW1lbnQ9XCJkb2N1bWVudFwiPlxuICA8ZGl2IGNsYXNzPVwicm93IG1sLTAgbXItMCBtdC0xIG1iLTFcIiAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZSAmJiBkb2N1bWVudFwiPlxuICAgIDx2YWx0aW1vLWRvc3NpZXItYXNzaWduLXVzZXJcbiAgICAgIFtkb2N1bWVudElkXT1cImRvY3VtZW50LmlkXCJcbiAgICAgIFthc3NpZ25lZUlkXT1cImRvY3VtZW50LmFzc2lnbmVlSWRcIlxuICAgICAgW2Fzc2lnbmVlRnVsbE5hbWVdPVwiZG9jdW1lbnQ/LmFzc2lnbmVlRnVsbE5hbWVcIlxuICAgICAgKGFzc2lnbm1lbnRPZkRvY3VtZW50Q2hhbmdlZCk9XCJhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQoKVwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLWFzc2lnbi11c2VyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xhaW1CdXR0b24gbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1mdWxsLW5hbWVcIiAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeSBtci0xXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgaWQ9XCJcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAoY2xpY2spPVwiY2xhaW1Bc3NpZ25lZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCIoaXNBc3NpZ25pbmckIHwgYXN5bmMpIHx8IChpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQgfCBhc3luYylcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7ICdkb3NzaWVyLmNsYWltQXNzaWduZWVDYXNlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,76 +0,0 @@
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, EventEmitter, Output } from '@angular/core';
17
- import { TimelineItemImpl } from '@valtimo/components';
18
- import moment from 'moment';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/router";
21
- import * as i2 from "@valtimo/document";
22
- import * as i3 from "ngx-spinner";
23
- import * as i4 from "@angular/common";
24
- import * as i5 from "@valtimo/components";
25
- import * as i6 from "@ng-bootstrap/ng-bootstrap";
26
- import * as i7 from "@ngx-translate/core";
27
- moment.locale(localStorage.getItem('langKey') || '');
28
- moment.defaultFormat = 'DD MMM YYYY HH:mm';
29
- export class DossierDetailTabAuditComponent {
30
- constructor(route, documentService, spinnerService) {
31
- this.route = route;
32
- this.documentService = documentService;
33
- this.spinnerService = spinnerService;
34
- this.paginationClicked = new EventEmitter();
35
- this.defaultAuditPage = 0;
36
- this.spinnerService.show('auditSpinner');
37
- const snapshot = this.route.snapshot.paramMap;
38
- this.documentId = snapshot.get('documentId') || '';
39
- }
40
- static getTranslationKey(auditEvent) {
41
- const classNameArray = auditEvent.className.split('.');
42
- const eventName = classNameArray[classNameArray.length - 1];
43
- return 'events.' + eventName;
44
- }
45
- ngOnInit() {
46
- this.loadAuditPage(this.defaultAuditPage);
47
- }
48
- loadAuditPage(pageNumber) {
49
- this.documentService.getAuditLog(this.documentId, pageNumber).subscribe(page => {
50
- const timelineItems = [];
51
- page.content.forEach(auditRecord => {
52
- const occurredOn = moment(auditRecord.metaData.occurredOn);
53
- const fromNow = occurredOn.fromNow();
54
- timelineItems.push(new TimelineItemImpl(occurredOn.format('DD MMM YYYY'), occurredOn.format('HH:mm'), auditRecord.metaData.user, fromNow, DossierDetailTabAuditComponent.getTranslationKey(auditRecord.auditEvent), auditRecord.auditEvent));
55
- });
56
- this.timelineItems = timelineItems;
57
- this.spinnerService.hide('auditSpinner');
58
- this.pagination = page;
59
- this.pagination.number += 1;
60
- });
61
- }
62
- onChangePagination(page) {
63
- this.paginationClicked.emit(page);
64
- this.currentAuditPage = page - 1;
65
- this.loadAuditPage(this.currentAuditPage);
66
- }
67
- }
68
- DossierDetailTabAuditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailTabAuditComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DocumentService }, { token: i3.NgxSpinnerService }], target: i0.ɵɵFactoryTarget.Component });
69
- DossierDetailTabAuditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DossierDetailTabAuditComponent, selector: "valtimo-dossier-detail-tab-audit", outputs: { paginationClicked: "paginationClicked" }, 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 *ngIf=\"timelineItems\">\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n</div>\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n<div\n class=\"pagination-holder audit-pagination bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate : {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n <br />\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate : {number: pagination.content.length})\n : ('list.showingResults'\n | translate : {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n <div class=\"col-8\">\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n </div>\n</div>\n", styles: [".audit-pagination{margin:0 -1.923rem -1.923rem!important;border-top:1px solid #dee2e6}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TimelineComponent, selector: "valtimo-timeline", inputs: ["items", "actions"] }, { kind: "component", type: i5.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "component", type: i6.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailTabAuditComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'valtimo-dossier-detail-tab-audit', 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 *ngIf=\"timelineItems\">\n <valtimo-timeline [items]=\"timelineItems\"></valtimo-timeline>\n</div>\n<valtimo-spinner\n [useBootstrapSpinner]=\"false\"\n name=\"auditSpinner\"\n bdColor=\"rgba(125, 125, 125, 0.35)\"\n color=\"#264251\"\n type=\"square-jelly-box\"\n>\n</valtimo-spinner>\n<div\n class=\"pagination-holder audit-pagination bg-light px-4 pt-4 pb-2 overflow-auto row mr-0 ml-0\"\n *ngIf=\"pagination && pagination.totalElements > pagination.size\"\n>\n <div class=\"float-left page-count col-4\">\n <strong>{{\n 'list.currentPage' | translate : {current: pagination.number, total: pagination.totalPages}\n }}</strong>\n <br />\n {{\n pagination.totalElements === 1\n ? ('list.showingResult' | translate : {number: pagination.content.length})\n : ('list.showingResults'\n | translate : {number: pagination.content.length, total: pagination.totalElements})\n }}\n </div>\n <div class=\"col-8\">\n <ngb-pagination\n *ngIf=\"pagination.totalElements > pagination.size\"\n class=\"float-right\"\n [collectionSize]=\"pagination.totalElements\"\n [(page)]=\"pagination.number\"\n [pageSize]=\"pagination.size\"\n [maxSize]=\"pagination.size\"\n [rotate]=\"true\"\n (pageChange)=\"onChangePagination(pagination.number)\"\n ></ngb-pagination>\n </div>\n</div>\n", styles: [".audit-pagination{margin:0 -1.923rem -1.923rem!important;border-top:1px solid #dee2e6}\n"] }]
73
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.DocumentService }, { type: i3.NgxSpinnerService }]; }, propDecorators: { paginationClicked: [{
74
- type: Output
75
- }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1kZXRhaWwvdGFiL2F1ZGl0L2F1ZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItZGV0YWlsL3RhYi9hdWRpdC9hdWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7OztBQUs1QixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQztBQU8zQyxNQUFNLE9BQU8sOEJBQThCO0lBU3pDLFlBQ1UsS0FBcUIsRUFDckIsZUFBZ0MsRUFDaEMsY0FBaUM7UUFGakMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQVhqQyxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUs1RCxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFRM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFzQjtRQUNyRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0UsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxhQUFhLENBQUMsSUFBSSxDQUNoQixJQUFJLGdCQUFnQixDQUNsQixVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUNoQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUMxQixXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFDekIsT0FBTyxFQUNQLDhCQUE4QixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFDeEUsV0FBVyxDQUFDLFVBQVUsQ0FDdkIsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBSTtRQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsQ0FBQzs7MkhBekRVLDhCQUE4QjsrR0FBOUIsOEJBQThCLDZIQy9CM0MsaS9EQXdEQTsyRkR6QmEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLGtDQUFrQzttS0FLbEMsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUaW1lbGluZUl0ZW0sIFRpbWVsaW5lSXRlbUltcGx9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBBdWRpdEV2ZW50fSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge05neFNwaW5uZXJTZXJ2aWNlfSBmcm9tICduZ3gtc3Bpbm5lcic7XG5cbm1vbWVudC5sb2NhbGUobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmdLZXknKSB8fCAnJyk7XG5tb21lbnQuZGVmYXVsdEZvcm1hdCA9ICdERCBNTU0gWVlZWSBISDptbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWF1ZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXVkaXQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiQXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgcGFnaW5hdGlvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyB0aW1lbGluZUl0ZW1zOiBUaW1lbGluZUl0ZW1bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBwYWdpbmF0aW9uOiBhbnk7XG4gIHByaXZhdGUgZGVmYXVsdEF1ZGl0UGFnZSA9IDA7XG4gIHByaXZhdGUgY3VycmVudEF1ZGl0UGFnZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCdhdWRpdFNwaW5uZXInKTtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXA7XG4gICAgdGhpcy5kb2N1bWVudElkID0gc25hcHNob3QuZ2V0KCdkb2N1bWVudElkJykgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRUcmFuc2xhdGlvbktleShhdWRpdEV2ZW50OiBBdWRpdEV2ZW50KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lQXJyYXkgPSBhdWRpdEV2ZW50LmNsYXNzTmFtZS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IGNsYXNzTmFtZUFycmF5W2NsYXNzTmFtZUFycmF5Lmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiAnZXZlbnRzLicgKyBldmVudE5hbWU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRBdWRpdFBhZ2UodGhpcy5kZWZhdWx0QXVkaXRQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXVkaXRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldEF1ZGl0TG9nKHRoaXMuZG9jdW1lbnRJZCwgcGFnZU51bWJlcikuc3Vic2NyaWJlKHBhZ2UgPT4ge1xuICAgICAgY29uc3QgdGltZWxpbmVJdGVtcyA9IFtdO1xuICAgICAgcGFnZS5jb250ZW50LmZvckVhY2goYXVkaXRSZWNvcmQgPT4ge1xuICAgICAgICBjb25zdCBvY2N1cnJlZE9uID0gbW9tZW50KGF1ZGl0UmVjb3JkLm1ldGFEYXRhLm9jY3VycmVkT24pO1xuICAgICAgICBjb25zdCBmcm9tTm93ID0gb2NjdXJyZWRPbi5mcm9tTm93KCk7XG4gICAgICAgIHRpbWVsaW5lSXRlbXMucHVzaChcbiAgICAgICAgICBuZXcgVGltZWxpbmVJdGVtSW1wbChcbiAgICAgICAgICAgIG9jY3VycmVkT24uZm9ybWF0KCdERCBNTU0gWVlZWScpLFxuICAgICAgICAgICAgb2NjdXJyZWRPbi5mb3JtYXQoJ0hIOm1tJyksXG4gICAgICAgICAgICBhdWRpdFJlY29yZC5tZXRhRGF0YS51c2VyLFxuICAgICAgICAgICAgZnJvbU5vdyxcbiAgICAgICAgICAgIERvc3NpZXJEZXRhaWxUYWJBdWRpdENvbXBvbmVudC5nZXRUcmFuc2xhdGlvbktleShhdWRpdFJlY29yZC5hdWRpdEV2ZW50KSxcbiAgICAgICAgICAgIGF1ZGl0UmVjb3JkLmF1ZGl0RXZlbnRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGltZWxpbmVJdGVtcyA9IHRpbWVsaW5lSXRlbXM7XG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoJ2F1ZGl0U3Bpbm5lcicpO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0gcGFnZTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5udW1iZXIgKz0gMTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZVBhZ2luYXRpb24ocGFnZSkge1xuICAgIHRoaXMucGFnaW5hdGlvbkNsaWNrZWQuZW1pdChwYWdlKTtcbiAgICB0aGlzLmN1cnJlbnRBdWRpdFBhZ2UgPSBwYWdlIC0gMTtcbiAgICB0aGlzLmxvYWRBdWRpdFBhZ2UodGhpcy5jdXJyZW50QXVkaXRQYWdlKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2ICpuZ0lmPVwidGltZWxpbmVJdGVtc1wiPlxuICA8dmFsdGltby10aW1lbGluZSBbaXRlbXNdPVwidGltZWxpbmVJdGVtc1wiPjwvdmFsdGltby10aW1lbGluZT5cbjwvZGl2PlxuPHZhbHRpbW8tc3Bpbm5lclxuICBbdXNlQm9vdHN0cmFwU3Bpbm5lcl09XCJmYWxzZVwiXG4gIG5hbWU9XCJhdWRpdFNwaW5uZXJcIlxuICBiZENvbG9yPVwicmdiYSgxMjUsIDEyNSwgMTI1LCAwLjM1KVwiXG4gIGNvbG9yPVwiIzI2NDI1MVwiXG4gIHR5cGU9XCJzcXVhcmUtamVsbHktYm94XCJcbj5cbjwvdmFsdGltby1zcGlubmVyPlxuPGRpdlxuICBjbGFzcz1cInBhZ2luYXRpb24taG9sZGVyIGF1ZGl0LXBhZ2luYXRpb24gYmctbGlnaHQgcHgtNCBwdC00IHBiLTIgb3ZlcmZsb3ctYXV0byByb3cgbXItMCBtbC0wXCJcbiAgKm5nSWY9XCJwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24udG90YWxFbGVtZW50cyA+IHBhZ2luYXRpb24uc2l6ZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJmbG9hdC1sZWZ0IHBhZ2UtY291bnQgY29sLTRcIj5cbiAgICA8c3Ryb25nPnt7XG4gICAgICAnbGlzdC5jdXJyZW50UGFnZScgfCB0cmFuc2xhdGUgOiB7Y3VycmVudDogcGFnaW5hdGlvbi5udW1iZXIsIHRvdGFsOiBwYWdpbmF0aW9uLnRvdGFsUGFnZXN9XG4gICAgfX08L3N0cm9uZz5cbiAgICA8YnIgLz5cbiAgICB7e1xuICAgICAgcGFnaW5hdGlvbi50b3RhbEVsZW1lbnRzID09PSAxXG4gICAgICAgID8gKCdsaXN0LnNob3dpbmdSZXN1bHQnIHwgdHJhbnNsYXRlIDoge251bWJlcjogcGFnaW5hdGlvbi5jb250ZW50Lmxlbmd0aH0pXG4gICAgICAgIDogKCdsaXN0LnNob3dpbmdSZXN1bHRzJ1xuICAgICAgICAgIHwgdHJhbnNsYXRlIDoge251bWJlcjogcGFnaW5hdGlvbi5jb250ZW50Lmxlbmd0aCwgdG90YWw6IHBhZ2luYXRpb24udG90YWxFbGVtZW50c30pXG4gICAgfX1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxuICAgIDxuZ2ItcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJwYWdpbmF0aW9uLnRvdGFsRWxlbWVudHMgPiBwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodFwiXG4gICAgICBbY29sbGVjdGlvblNpemVdPVwicGFnaW5hdGlvbi50b3RhbEVsZW1lbnRzXCJcbiAgICAgIFsocGFnZSldPVwicGFnaW5hdGlvbi5udW1iZXJcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb24uc2l6ZVwiXG4gICAgICBbbWF4U2l6ZV09XCJwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgW3JvdGF0ZV09XCJ0cnVlXCJcbiAgICAgIChwYWdlQ2hhbmdlKT1cIm9uQ2hhbmdlUGFnaW5hdGlvbihwYWdpbmF0aW9uLm51bWJlcilcIlxuICAgID48L25nYi1wYWdpbmF0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,86 +0,0 @@
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 moment from 'moment';
18
- import { BehaviorSubject, combineLatest } from 'rxjs';
19
- import { TimelineItemImpl } from '@valtimo/components';
20
- import { map, switchMap, take } from 'rxjs/operators';
21
- import * as i0 from "@angular/core";
22
- import * as i1 from "@valtimo/contact-moment";
23
- import * as i2 from "@valtimo/components";
24
- import * as i3 from "@ngx-translate/core";
25
- import * as i4 from "@angular/common";
26
- import * as i5 from "@angular/forms";
27
- moment.locale(localStorage.getItem('langKey') || '');
28
- export class DossierDetailTabContactMomentsComponent {
29
- constructor(contactMomentService, alertService, translateService) {
30
- this.contactMomentService = contactMomentService;
31
- this.alertService = alertService;
32
- this.translateService = translateService;
33
- this.refetchContactMoments$ = new BehaviorSubject('');
34
- this.contactMoments$ = this.refetchContactMoments$.pipe(switchMap(() => this.contactMomentService.getContactMoments()), map(contactMoments => contactMoments.map(contactMoment => {
35
- const registratieDatum = moment(contactMoment.registratiedatum);
36
- return new TimelineItemImpl(registratieDatum.format('DD MMM YYYY'), registratieDatum.format('HH:mm'), contactMoment.medewerkerIdentificatie.achternaam, contactMoment.kanaal, contactMoment.tekst, null);
37
- })));
38
- this.text$ = new BehaviorSubject('');
39
- this.channel$ = new BehaviorSubject('MAIL');
40
- this.requestData$ = combineLatest([this.text$, this.channel$]);
41
- this.valid$ = this.requestData$.pipe(map(([text, channel]) => !!(text && channel)));
42
- this.disabled$ = new BehaviorSubject(false);
43
- }
44
- textChange(text) {
45
- this.text$.next(text);
46
- }
47
- buttonClick() {
48
- this.modal.show();
49
- }
50
- saveNote() {
51
- this.disable();
52
- this.requestData$.pipe(take(1)).subscribe(([text, channel]) => {
53
- this.contactMomentService.saveContactMoment({ kanaal: channel, tekst: text }).subscribe(() => {
54
- this.alertService.success(this.translateService.instant('dossier.contactMoments.saveSuccess'));
55
- this.enable();
56
- this.clear();
57
- this.modal.hide();
58
- this.refetchContactMoments();
59
- }, () => {
60
- this.enable();
61
- });
62
- });
63
- }
64
- disable() {
65
- this.disabled$.next(true);
66
- }
67
- enable() {
68
- this.disabled$.next(false);
69
- }
70
- clear() {
71
- this.text$.next('');
72
- }
73
- refetchContactMoments() {
74
- this.refetchContactMoments$.next('');
75
- }
76
- }
77
- DossierDetailTabContactMomentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailTabContactMomentsComponent, deps: [{ token: i1.ContactMomentService }, { token: i2.AlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
78
- DossierDetailTabContactMomentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DossierDetailTabContactMomentsComponent, selector: "valtimo-dossier-detail-tab-contact-moments", viewQueries: [{ propertyName: "modal", first: true, predicate: ["contactMomentsNoteModal"], 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=\"contact-moments-container\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n <ng-container *ngTemplateOutlet=\"moments\"></ng-container>\n</div>\n\n<valtimo-modal\n #contactMomentsNoteModal\n [title]=\"'dossier.contactMoments.popupTitle' | translate\"\n [showFooter]=\"true\"\n [elementId]=\"'contact-moments-modal'\"\n>\n <div class=\"mt-2\" body>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n</valtimo-modal>\n\n<ng-template #body>\n <form>\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"body\">\n {{ 'dossier.contactMoments.noteText' | translate }}\n </label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <textarea\n [disabled]=\"disabled$ | async\"\n class=\"form-control\"\n id=\"body\"\n name=\"body\"\n [ngModel]=\"text$ | async\"\n (ngModelChange)=\"textChange($event)\"\n ></textarea>\n </div>\n </div>\n </form>\n</ng-template>\n\n<ng-template #footer>\n <button\n *ngIf=\"(disabled$ | async) === false; else loading\"\n class=\"btn btn-primary\"\n [disabled]=\"(valid$ | async) === false || (disabled$ | async)\"\n (click)=\"saveNote()\"\n >\n {{ 'dossier.contactMoments.saveButtonText' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-spinner [noMarginTop]=\"true\"></valtimo-spinner>\n</ng-template>\n\n<ng-template #buttons>\n <div class=\"btn-group mt-m3px mb-3 button-container\">\n <button class=\"btn btn-primary btn-space\" (click)=\"buttonClick()\">\n <i class=\"icon mdi mdi-note-plus\"></i>\n &nbsp;{{ 'dossier.contactMoments.makeNoteButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #moments>\n <div *ngIf=\"contactMoments$ | async as contactMoments; else loading\">\n <valtimo-timeline [items]=\"contactMoments\"></valtimo-timeline>\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 */.contact-moments-container{display:flex;flex-direction:column}.button-container{display:inline;align-self:flex-end}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TimelineComponent, selector: "valtimo-timeline", inputs: ["items", "actions"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "component", type: i2.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DossierDetailTabContactMomentsComponent, decorators: [{
80
- type: Component,
81
- args: [{ selector: 'valtimo-dossier-detail-tab-contact-moments', 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=\"contact-moments-container\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n <ng-container *ngTemplateOutlet=\"moments\"></ng-container>\n</div>\n\n<valtimo-modal\n #contactMomentsNoteModal\n [title]=\"'dossier.contactMoments.popupTitle' | translate\"\n [showFooter]=\"true\"\n [elementId]=\"'contact-moments-modal'\"\n>\n <div class=\"mt-2\" body>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n</valtimo-modal>\n\n<ng-template #body>\n <form>\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"body\">\n {{ 'dossier.contactMoments.noteText' | translate }}\n </label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <textarea\n [disabled]=\"disabled$ | async\"\n class=\"form-control\"\n id=\"body\"\n name=\"body\"\n [ngModel]=\"text$ | async\"\n (ngModelChange)=\"textChange($event)\"\n ></textarea>\n </div>\n </div>\n </form>\n</ng-template>\n\n<ng-template #footer>\n <button\n *ngIf=\"(disabled$ | async) === false; else loading\"\n class=\"btn btn-primary\"\n [disabled]=\"(valid$ | async) === false || (disabled$ | async)\"\n (click)=\"saveNote()\"\n >\n {{ 'dossier.contactMoments.saveButtonText' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-spinner [noMarginTop]=\"true\"></valtimo-spinner>\n</ng-template>\n\n<ng-template #buttons>\n <div class=\"btn-group mt-m3px mb-3 button-container\">\n <button class=\"btn btn-primary btn-space\" (click)=\"buttonClick()\">\n <i class=\"icon mdi mdi-note-plus\"></i>\n &nbsp;{{ 'dossier.contactMoments.makeNoteButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #moments>\n <div *ngIf=\"contactMoments$ | async as contactMoments; else loading\">\n <valtimo-timeline [items]=\"contactMoments\"></valtimo-timeline>\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 */.contact-moments-container{display:flex;flex-direction:column}.button-container{display:inline;align-self:flex-end}\n"] }]
82
- }], ctorParameters: function () { return [{ type: i1.ContactMomentService }, { type: i2.AlertService }, { type: i3.TranslateService }]; }, propDecorators: { modal: [{
83
- type: ViewChild,
84
- args: ['contactMomentsNoteModal']
85
- }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItZGV0YWlsL3RhYi9jb250YWN0LW1vbWVudHMvY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2Rvc3NpZXItZGV0YWlsL3RhYi9jb250YWN0LW1vbWVudHMvY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQStCLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFJcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBT3JELE1BQU0sT0FBTyx1Q0FBdUM7SUE2QmxELFlBQ21CLG9CQUEwQyxFQUMxQyxZQUEwQixFQUMxQixnQkFBa0M7UUFGbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBN0I1QywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMs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QUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7b0lBOUVVLHVDQUF1Qzt3SEFBdkMsdUNBQXVDLG9NQ2hDcEQsaXNGQW9GQTsyRkRwRGEsdUNBQXVDO2tCQUxuRCxTQUFTOytCQUNFLDRDQUE0QztxS0FLaEIsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udGFjdE1vbWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbnRhY3QtbW9tZW50JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TW9kYWxDb21wb25lbnQsIFRpbWVsaW5lSXRlbSwgVGltZWxpbmVJdGVtSW1wbH0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykgfHwgJycpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1jb250YWN0LW1vbWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxUYWJDb250YWN0TW9tZW50c0NvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhY3RNb21lbnRzTm90ZU1vZGFsJykgbW9kYWw6IE1vZGFsQ29tcG9uZW50O1xuXG4gIHJlYWRvbmx5IHJlZmV0Y2hDb250YWN0TW9tZW50cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcmVhZG9ubHkgY29udGFjdE1vbWVudHMkOiBPYnNlcnZhYmxlPEFycmF5PFRpbWVsaW5lSXRlbT4+ID0gdGhpcy5yZWZldGNoQ29udGFjdE1vbWVudHMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29udGFjdE1vbWVudFNlcnZpY2UuZ2V0Q29udGFjdE1vbWVudHMoKSksXG4gICAgbWFwKGNvbnRhY3RNb21lbnRzID0+XG4gICAgICBjb250YWN0TW9tZW50cy5tYXAoY29udGFjdE1vbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJhdGllRGF0dW0gPSBtb21lbnQoY29udGFjdE1vbWVudC5yZWdpc3RyYXRpZWRhdHVtKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW1lbGluZUl0ZW1JbXBsKFxuICAgICAgICAgIHJlZ2lzdHJhdGllRGF0dW0uZm9ybWF0KCdERCBNTU0gWVlZWScpLFxuICAgICAgICAgIHJlZ2lzdHJhdGllRGF0dW0uZm9ybWF0KCdISDptbScpLFxuICAgICAgICAgIGNvbnRhY3RNb21lbnQubWVkZXdlcmtlcklkZW50aWZpY2F0aWUuYWNodGVybmFhbSxcbiAgICAgICAgICBjb250YWN0TW9tZW50LmthbmFhbCxcbiAgICAgICAgICBjb250YWN0TW9tZW50LnRla3N0LFxuICAgICAgICAgIG51bGxcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IHRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgY2hhbm5lbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ01BSUwnKTtcbiAgcmVhZG9ubHkgcmVxdWVzdERhdGEkOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+ID0gY29tYmluZUxhdGVzdChbdGhpcy50ZXh0JCwgdGhpcy5jaGFubmVsJF0pO1xuICByZWFkb25seSB2YWxpZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3REYXRhJC5waXBlKFxuICAgIG1hcCgoW3RleHQsIGNoYW5uZWxdKSA9PiAhISh0ZXh0ICYmIGNoYW5uZWwpKVxuICApO1xuICByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhY3RNb21lbnRTZXJ2aWNlOiBDb250YWN0TW9tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgdGV4dENoYW5nZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRleHQkLm5leHQodGV4dCk7XG4gIH1cblxuICBidXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgfVxuXG4gIHNhdmVOb3RlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5yZXF1ZXN0RGF0YSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKFt0ZXh0LCBjaGFubmVsXSkgPT4ge1xuICAgICAgdGhpcy5jb250YWN0TW9tZW50U2VydmljZS5zYXZlQ29udGFjdE1vbWVudCh7a2FuYWFsOiBjaGFubmVsLCB0ZWtzdDogdGV4dH0pLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZG9zc2llci5jb250YWN0TW9tZW50cy5zYXZlU3VjY2VzcycpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgICAgICB0aGlzLnJlZmV0Y2hDb250YWN0TW9tZW50cygpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMudGV4dCQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHJlZmV0Y2hDb250YWN0TW9tZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZmV0Y2hDb250YWN0TW9tZW50cyQubmV4dCgnJyk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBjbGFzcz1cImNvbnRhY3QtbW9tZW50cy1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vbWVudHNcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48dmFsdGltby1tb2RhbFxuICAjY29udGFjdE1vbWVudHNOb3RlTW9kYWxcbiAgW3RpdGxlXT1cIidkb3NzaWVyLmNvbnRhY3RNb21lbnRzLnBvcHVwVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgW3Nob3dGb290ZXJdPVwidHJ1ZVwiXG4gIFtlbGVtZW50SWRdPVwiJ2NvbnRhY3QtbW9tZW50cy1tb2RhbCdcIlxuPlxuICA8ZGl2IGNsYXNzPVwibXQtMlwiIGJvZHk+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgZm9vdGVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L3ZhbHRpbW8tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keT5cbiAgPGZvcm0+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgY29sLWZvcm0tbGFiZWwgdGV4dC1zbS1yaWdodFwiIGZvcj1cImJvZHlcIj5cbiAgICAgICAge3sgJ2Rvc3NpZXIuY29udGFjdE1vbWVudHMubm90ZVRleHQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tOCBjb2wtbGctNlwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cImJvZHlcIlxuICAgICAgICAgIG5hbWU9XCJib2R5XCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJ0ZXh0JCB8IGFzeW5jXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0ZXh0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Zvb3Rlcj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwiKGRpc2FibGVkJCB8IGFzeW5jKSA9PT0gZmFsc2U7IGVsc2UgbG9hZGluZ1wiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCIodmFsaWQkIHwgYXN5bmMpID09PSBmYWxzZSB8fCAoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAoY2xpY2spPVwic2F2ZU5vdGUoKVwiXG4gID5cbiAgICB7eyAnZG9zc2llci5jb250YWN0TW9tZW50cy5zYXZlQnV0dG9uVGV4dCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDx2YWx0aW1vLXNwaW5uZXIgW25vTWFyZ2luVG9wXT1cInRydWVcIj48L3ZhbHRpbW8tc3Bpbm5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9ucz5cbiAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtdC1tM3B4IG1iLTMgYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNwYWNlXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKClcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLW5vdGUtcGx1c1wiPjwvaT5cbiAgICAgICZuYnNwO3t7ICdkb3NzaWVyLmNvbnRhY3RNb21lbnRzLm1ha2VOb3RlQnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9tZW50cz5cbiAgPGRpdiAqbmdJZj1cImNvbnRhY3RNb21lbnRzJCB8IGFzeW5jIGFzIGNvbnRhY3RNb21lbnRzOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8dmFsdGltby10aW1lbGluZSBbaXRlbXNdPVwiY29udGFjdE1vbWVudHNcIj48L3ZhbHRpbW8tdGltZWxpbmU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==