@loxia/mst-viewer 8.1.3-202512031128 → 8.1.3-202512032157

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 (165) hide show
  1. package/esm2022/generated/openapi/api/api.mjs +5 -2
  2. package/esm2022/generated/openapi/api/appConfigController.service.mjs +4 -4
  3. package/esm2022/generated/openapi/api/bewegingController.service.mjs +4 -4
  4. package/esm2022/generated/openapi/api/class0BuildProperties.service.mjs +4 -4
  5. package/esm2022/generated/openapi/api/connectorController.service.mjs +4 -4
  6. package/esm2022/generated/openapi/api/logController.service.mjs +4 -4
  7. package/esm2022/generated/openapi/api/p21Controller.service.mjs +4 -4
  8. package/esm2022/generated/openapi/api/sbController.service.mjs +20 -19
  9. package/esm2022/generated/openapi/api/sbController.serviceInterface.mjs +1 -1
  10. package/esm2022/generated/openapi/api/svgController.service.mjs +155 -0
  11. package/esm2022/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
  12. package/esm2022/generated/openapi/api.module.mjs +5 -5
  13. package/esm2022/generated/openapi/model/algemeneRitDto.mjs +1 -1
  14. package/esm2022/generated/openapi/model/kilometrering.mjs +13 -0
  15. package/esm2022/generated/openapi/model/models.mjs +10 -2
  16. package/esm2022/generated/openapi/model/sein.mjs +10 -0
  17. package/esm2022/generated/openapi/model/signaleringsElement.mjs +13 -0
  18. package/esm2022/generated/openapi/model/spoornummer.mjs +13 -0
  19. package/esm2022/generated/openapi/model/spoortakFragment.mjs +2 -0
  20. package/esm2022/generated/openapi/model/svgInfoDto.mjs +2 -0
  21. package/esm2022/generated/openapi/model/svgTopology.mjs +2 -0
  22. package/esm2022/generated/openapi/model/topologyElement.mjs +2 -0
  23. package/esm2022/generated/openapi/model/wissel.mjs +2 -0
  24. package/esm2022/lib/atomic-components/message/message.component.mjs +6 -6
  25. package/esm2022/lib/atomic-components/messages/messages.component.mjs +4 -4
  26. package/esm2022/lib/atomic-components/overlay/overlay.component.mjs +4 -4
  27. package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.component.mjs +4 -4
  28. package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.entity.mjs +7 -4
  29. package/esm2022/lib/atomic-components/services/messages.service.mjs +4 -4
  30. package/esm2022/lib/components/carousel-controls/carousel-controls.component.mjs +7 -8
  31. package/esm2022/lib/components/mstviewer/mstviewer.component.mjs +15 -9
  32. package/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +21 -15
  33. package/esm2022/lib/components/ritdelen-view/ritdelen-view.component.mjs +4 -4
  34. package/esm2022/lib/components/rpe/rpe.component.mjs +9 -5
  35. package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +13 -11
  36. package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +19 -16
  37. package/esm2022/lib/model/km-range.mjs +2 -2
  38. package/esm2022/lib/model/nieuwe-route.mjs +2 -2
  39. package/esm2022/lib/model/ritdeel.mjs +10 -10
  40. package/esm2022/lib/mst-viewer.module.mjs +10 -9
  41. package/esm2022/lib/resources/mstlogging.resource.mjs +4 -4
  42. package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +18 -14
  43. package/esm2022/lib/services/base-rest.service.mjs +6 -4
  44. package/esm2022/lib/services/beweging-utils.service.mjs +9 -9
  45. package/esm2022/lib/services/beweging-verrijker.service.mjs +4 -4
  46. package/esm2022/lib/services/connector.service.mjs +4 -4
  47. package/esm2022/lib/services/debug.service.mjs +6 -6
  48. package/esm2022/lib/services/editor.service.mjs +6 -4
  49. package/esm2022/lib/services/print-beweging.service.mjs +26 -23
  50. package/esm2022/lib/services/rit-lezer.service.mjs +7 -7
  51. package/esm2022/lib/services/signalerings-beeld-manager.service.mjs +4 -4
  52. package/esm2022/lib/services/viewer-control.service.mjs +11 -31
  53. package/esm2022/lib/state/actions/actions.mjs +7 -4
  54. package/esm2022/lib/state/actions/ritdelen.actions.mjs +4 -4
  55. package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +11 -10
  56. package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +4 -4
  57. package/esm2022/lib/state/effect/beweging-invoegen.effect.mjs +4 -4
  58. package/esm2022/lib/state/effect/delete-ongeplande-actie.effect.mjs +4 -4
  59. package/esm2022/lib/state/effect/focus-effect.mjs +5 -5
  60. package/esm2022/lib/state/effect/laad-route-files.effect.mjs +11 -11
  61. package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +28 -30
  62. package/esm2022/lib/state/effect/rit-goedkeuren.effect.mjs +4 -4
  63. package/esm2022/lib/state/effect/ritdelen.effect.mjs +29 -28
  64. package/esm2022/lib/state/effect/svg-view.effect.mjs +60 -19
  65. package/esm2022/lib/state/mst-editor-state.mjs +12 -13
  66. package/esm2022/lib/state/reducer/rit-delen.reducer.mjs +1 -1
  67. package/esm2022/lib/util/actie-helper.mjs +29 -25
  68. package/esm2022/lib/util/actie-popover-bepaler.mjs +2 -2
  69. package/esm2022/lib/util/date.service.mjs +4 -4
  70. package/esm2022/lib/util/logging-helper.mjs +34 -36
  71. package/esm2022/lib/util/multi-map.mjs +2 -3
  72. package/esm2022/lib/util/utils.mjs +5 -5
  73. package/esm2022/lib/util/zone-util.mjs +5 -4
  74. package/esm2022/src/generated/openapi/api/api.mjs +5 -2
  75. package/esm2022/src/generated/openapi/api/appConfigController.service.mjs +4 -4
  76. package/esm2022/src/generated/openapi/api/bewegingController.service.mjs +4 -4
  77. package/esm2022/src/generated/openapi/api/class0BuildProperties.service.mjs +4 -4
  78. package/esm2022/src/generated/openapi/api/connectorController.service.mjs +4 -4
  79. package/esm2022/src/generated/openapi/api/logController.service.mjs +4 -4
  80. package/esm2022/src/generated/openapi/api/p21Controller.service.mjs +4 -4
  81. package/esm2022/src/generated/openapi/api/sbController.service.mjs +20 -19
  82. package/esm2022/src/generated/openapi/api/sbController.serviceInterface.mjs +1 -1
  83. package/esm2022/src/generated/openapi/api/svgController.service.mjs +155 -0
  84. package/esm2022/src/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
  85. package/esm2022/src/generated/openapi/api.module.mjs +5 -5
  86. package/esm2022/src/generated/openapi/model/algemeneRitDto.mjs +1 -1
  87. package/esm2022/src/generated/openapi/model/kilometrering.mjs +13 -0
  88. package/esm2022/src/generated/openapi/model/models.mjs +10 -2
  89. package/esm2022/src/generated/openapi/model/sein.mjs +10 -0
  90. package/esm2022/src/generated/openapi/model/signaleringsElement.mjs +13 -0
  91. package/esm2022/src/generated/openapi/model/spoornummer.mjs +13 -0
  92. package/esm2022/src/generated/openapi/model/spoortakFragment.mjs +2 -0
  93. package/esm2022/src/generated/openapi/model/svgInfoDto.mjs +2 -0
  94. package/esm2022/src/generated/openapi/model/svgTopology.mjs +2 -0
  95. package/esm2022/src/generated/openapi/model/topologyElement.mjs +2 -0
  96. package/esm2022/src/generated/openapi/model/wissel.mjs +2 -0
  97. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +224 -43
  98. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +1 -1
  99. package/fesm2022/loxia-mst-viewer.mjs +767 -526
  100. package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
  101. package/generated/openapi/api/api.d.ts +4 -1
  102. package/generated/openapi/api/sbController.service.d.ts +8 -8
  103. package/generated/openapi/api/sbController.serviceInterface.d.ts +3 -3
  104. package/generated/openapi/api/svgController.service.d.ts +40 -0
  105. package/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
  106. package/generated/openapi/model/algemeneRitDto.d.ts +0 -8
  107. package/generated/openapi/model/{signaleringsbeeldRequestDto.d.ts → kilometrering.d.ts} +3 -4
  108. package/generated/openapi/model/models.d.ts +9 -1
  109. package/generated/openapi/model/sein.d.ts +46 -0
  110. package/{src/generated/openapi/model/signaleringsbeeldRequestDto.d.ts → generated/openapi/model/signaleringsElement.d.ts} +4 -4
  111. package/generated/openapi/model/spoornummer.d.ts +17 -0
  112. package/generated/openapi/model/spoortakFragment.d.ts +26 -0
  113. package/generated/openapi/model/svgInfoDto.d.ts +16 -0
  114. package/generated/openapi/model/svgTopology.d.ts +21 -0
  115. package/generated/openapi/model/topologyElement.d.ts +18 -0
  116. package/generated/openapi/model/wissel.d.ts +31 -0
  117. package/lib/atomic-components/message/message.component.d.ts +2 -2
  118. package/lib/atomic-components/progress-indicator/progress-indicator.entity.d.ts +1 -1
  119. package/lib/components/carousel-controls/carousel-controls.component.d.ts +1 -3
  120. package/lib/components/mstviewer/mstviewer.component.d.ts +2 -2
  121. package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +2 -2
  122. package/lib/components/rpe/rpe.component.d.ts +1 -1
  123. package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +2 -1
  124. package/lib/components/viewer-controls/viewer-controls.component.d.ts +3 -4
  125. package/lib/model/km-range.d.ts +1 -1
  126. package/lib/model/nieuwe-route.d.ts +2 -2
  127. package/lib/model/ritdeel.d.ts +11 -10
  128. package/lib/resources/signaleringsbeeldinfo.resource.d.ts +10 -15
  129. package/lib/services/editor.service.d.ts +2 -2
  130. package/lib/services/print-beweging.service.d.ts +4 -6
  131. package/lib/services/rit-lezer.service.d.ts +1 -1
  132. package/lib/services/signalerings-beeld-manager.service.d.ts +2 -2
  133. package/lib/services/viewer-control.service.d.ts +0 -5
  134. package/lib/state/actions/actions.d.ts +23 -22
  135. package/lib/state/actions/ritdelen.actions.d.ts +3 -7
  136. package/lib/state/effect/bepaal-ongeplande-acties.effect.d.ts +2 -1
  137. package/lib/state/effect/delete-ongeplande-actie.effect.d.ts +1 -1
  138. package/lib/state/effect/laad-route-files.effect.d.ts +4 -5
  139. package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +13 -13
  140. package/lib/state/effect/ritdelen.effect.d.ts +7 -6
  141. package/lib/state/effect/svg-view.effect.d.ts +12 -6
  142. package/lib/state/mst-editor-state.d.ts +29 -91
  143. package/lib/util/actie-helper.d.ts +4 -4
  144. package/lib/util/logging-helper.d.ts +2 -1
  145. package/lib/util/utils.d.ts +0 -1
  146. package/package.json +1 -1
  147. package/src/generated/openapi/api/api.d.ts +4 -1
  148. package/src/generated/openapi/api/sbController.service.d.ts +8 -8
  149. package/src/generated/openapi/api/sbController.serviceInterface.d.ts +3 -3
  150. package/src/generated/openapi/api/svgController.service.d.ts +40 -0
  151. package/src/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
  152. package/src/generated/openapi/model/algemeneRitDto.d.ts +0 -8
  153. package/src/generated/openapi/model/kilometrering.d.ts +15 -0
  154. package/src/generated/openapi/model/models.d.ts +9 -1
  155. package/src/generated/openapi/model/sein.d.ts +46 -0
  156. package/src/generated/openapi/model/signaleringsElement.d.ts +16 -0
  157. package/src/generated/openapi/model/spoornummer.d.ts +17 -0
  158. package/src/generated/openapi/model/spoortakFragment.d.ts +26 -0
  159. package/src/generated/openapi/model/svgInfoDto.d.ts +16 -0
  160. package/src/generated/openapi/model/svgTopology.d.ts +21 -0
  161. package/src/generated/openapi/model/topologyElement.d.ts +18 -0
  162. package/src/generated/openapi/model/wissel.d.ts +31 -0
  163. package/tailwind.scss +1 -1
  164. package/esm2022/generated/openapi/model/signaleringsbeeldRequestDto.mjs +0 -13
  165. package/esm2022/src/generated/openapi/model/signaleringsbeeldRequestDto.mjs +0 -13
@@ -1,23 +1,23 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { EventEmitter, Output, Input, Component, Injectable, ChangeDetectionStrategy, ViewChild, InjectionToken, Optional, Inject, SkipSelf, NgModule, HostListener } from '@angular/core';
4
+ import { EventEmitter, Component, Input, Output, Injectable, ChangeDetectionStrategy, ViewChild, InjectionToken, Optional, Inject, NgModule, SkipSelf, HostListener } from '@angular/core';
5
5
  import * as i7 from '@loxia/imx-viewer';
6
- import { SelectieInfo, PopoverInfo, Point, SvgInfo, ImxViewerComponent, ImxViewerModule } from '@loxia/imx-viewer';
7
- import * as i4 from '@loxia/rijwegen';
6
+ import { PopoverInfo, Point, SvgInfo, ImxViewerComponent, SelectieInfo, ImxViewerModule } from '@loxia/imx-viewer';
7
+ import * as i3 from '@loxia/rijwegen';
8
8
  import { JsJavaUtil, RijwegenModule } from '@loxia/rijwegen';
9
9
  import * as i1$2 from '@ngrx/effects';
10
10
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
11
11
  import * as i2$1 from '@ngrx/store';
12
12
  import { createAction, union, select, createReducer, on, StoreModule } from '@ngrx/store';
13
13
  import { ResourceModule } from '@ngx-resource/handler-ngx-http';
14
- import { BehaviorSubject, from, Subscription, combineLatest, of, throwError } from 'rxjs';
15
- import { take, filter, map, catchError, withLatestFrom, switchMap, tap } from 'rxjs/operators';
14
+ import { BehaviorSubject, from, Subscription, combineLatest, forkJoin, of, throwError } from 'rxjs';
15
+ import { filter, map, take, tap, catchError, withLatestFrom, switchMap } from 'rxjs/operators';
16
16
  import * as i1 from '@angular/common/http';
17
17
  import { HttpHeaders, HttpContext, HttpParams } from '@angular/common/http';
18
18
  import { __decorate } from 'tslib';
19
19
  import * as i1$1 from '@ngx-resource/core';
20
- import { Resource, ResourceAction, ResourceRequestMethod, ResourceParams, ResourceModel } from '@ngx-resource/core';
20
+ import { Resource, ResourceAction, ResourceParams, ResourceModel } from '@ngx-resource/core';
21
21
 
22
22
  class Message {
23
23
  constructor(severity, text, timeout = 0) {
@@ -41,7 +41,7 @@ class MessageComponent {
41
41
  this.onClearMessage = new EventEmitter();
42
42
  }
43
43
  ngOnInit() {
44
- if (this.message.timeout > 0) {
44
+ if (this.message && this.message.timeout > 0) {
45
45
  setTimeout(() => {
46
46
  this.closeMessage({ stopPropagation: () => null });
47
47
  }, this.message.timeout);
@@ -53,12 +53,12 @@ class MessageComponent {
53
53
  this.message = undefined;
54
54
  }
55
55
  get severity() {
56
- return this.message.severity;
56
+ return this.message?.severity ?? '?';
57
57
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: MessageComponent, selector: "loxia-message", inputs: { message: "message" }, outputs: { onClearMessage: "onClearMessage" }, ngImport: i0, template: "<div id=\"alert-1\" *ngIf=\"message\"\n [ngClass]=\"severity\"\n class=\" loxia-message flex items-center p-4 text-white\" role=\"alert\">\n <svg class=\"flex-shrink-0 size-4 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"></path>\n <path d=\"M12 9v4\"></path>\n <path d=\"M12 17h.01\"></path>\n </svg>\n <span class=\"sr-only\">Info</span>\n <div class=\"ms-3 text-sm font-medium\">\n {{message.text}}\n </div>\n <button type=\"button\"\n (click)=\"closeMessage($event)\"\n class=\"ms-auto -mx-1.5 -my-1.5 rounded-lg inline-flex items-center justify-center h-8 w-8\" data-dismiss-target=\"#alert-1\" aria-label=\"Close\">\n <span class=\"sr-only\">Close</span>\n <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"/>\n </svg>\n </button>\n</div>\n", styles: ["svg{background-color:transparent;stroke-width:unset}.loxia-message.information{background-color:#0288d1}.loxia-message.warning{background-color:#ff6a00}.loxia-message.notification{background-color:#f3ed38}.loxia-message.error{background-color:#b5061b}.loxia-message.success{background-color:#297d03}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MessageComponent, selector: "loxia-message", inputs: { message: "message" }, outputs: { onClearMessage: "onClearMessage" }, ngImport: i0, template: "<div id=\"alert-1\" *ngIf=\"message\"\n [ngClass]=\"severity\"\n class=\" loxia-message flex items-center p-4 text-white\" role=\"alert\">\n <svg class=\"flex-shrink-0 size-4 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"></path>\n <path d=\"M12 9v4\"></path>\n <path d=\"M12 17h.01\"></path>\n </svg>\n <span class=\"sr-only\">Info</span>\n <div class=\"ms-3 text-sm font-medium\">\n {{message.text}}\n </div>\n <button type=\"button\"\n (click)=\"closeMessage($event)\"\n class=\"ms-auto -mx-1.5 -my-1.5 rounded-lg inline-flex items-center justify-center h-8 w-8\" data-dismiss-target=\"#alert-1\" aria-label=\"Close\">\n <span class=\"sr-only\">Close</span>\n <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"/>\n </svg>\n </button>\n</div>\n", styles: ["svg{background-color:transparent;stroke-width:unset}.loxia-message.information{background-color:#0288d1}.loxia-message.warning{background-color:#ff6a00}.loxia-message.notification{background-color:#f3ed38}.loxia-message.error{background-color:#b5061b}.loxia-message.success{background-color:#297d03}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessageComponent, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'loxia-message', template: "<div id=\"alert-1\" *ngIf=\"message\"\n [ngClass]=\"severity\"\n class=\" loxia-message flex items-center p-4 text-white\" role=\"alert\">\n <svg class=\"flex-shrink-0 size-4 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"></path>\n <path d=\"M12 9v4\"></path>\n <path d=\"M12 17h.01\"></path>\n </svg>\n <span class=\"sr-only\">Info</span>\n <div class=\"ms-3 text-sm font-medium\">\n {{message.text}}\n </div>\n <button type=\"button\"\n (click)=\"closeMessage($event)\"\n class=\"ms-auto -mx-1.5 -my-1.5 rounded-lg inline-flex items-center justify-center h-8 w-8\" data-dismiss-target=\"#alert-1\" aria-label=\"Close\">\n <span class=\"sr-only\">Close</span>\n <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"/>\n </svg>\n </button>\n</div>\n", styles: ["svg{background-color:transparent;stroke-width:unset}.loxia-message.information{background-color:#0288d1}.loxia-message.warning{background-color:#ff6a00}.loxia-message.notification{background-color:#f3ed38}.loxia-message.error{background-color:#b5061b}.loxia-message.success{background-color:#297d03}\n"] }]
64
64
  }], propDecorators: { message: [{
@@ -83,10 +83,10 @@ class MessagesService {
83
83
  get messages$() {
84
84
  return this._messages$;
85
85
  }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessagesService, providedIn: 'root' }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesService, providedIn: 'root' }); }
88
88
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessagesService, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesService, decorators: [{
90
90
  type: Injectable,
91
91
  args: [{ providedIn: 'root' }]
92
92
  }] });
@@ -98,32 +98,109 @@ class MessagesComponent {
98
98
  trackbyIndex(index) {
99
99
  return index;
100
100
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessagesComponent, deps: [{ token: MessagesService }], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: MessagesComponent, selector: "loxia-messages", ngImport: i0, template: "<div class=\"messages w-full\">\n <div *ngFor=\"let message of (messagesService.messages$ | async); let i = index; trackBy: trackbyIndex\">\n <loxia-message [message]=\"message\" (onClearMessage)=\"messagesService.clearMessage($event)\"></loxia-message>\n </div>\n</div>\n", styles: [".messages{position:fixed;top:0;left:0;z-index:2000;flex-direction:column;display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MessageComponent, selector: "loxia-message", inputs: ["message"], outputs: ["onClearMessage"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesComponent, deps: [{ token: MessagesService }], target: i0.ɵɵFactoryTarget.Component }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MessagesComponent, selector: "loxia-messages", ngImport: i0, template: "<div class=\"messages w-full\">\n <div *ngFor=\"let message of (messagesService.messages$ | async); let i = index; trackBy: trackbyIndex\">\n <loxia-message [message]=\"message\" (onClearMessage)=\"messagesService.clearMessage($event)\"></loxia-message>\n </div>\n</div>\n", styles: [".messages{position:fixed;top:0;left:0;z-index:2000;flex-direction:column;display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MessageComponent, selector: "loxia-message", inputs: ["message"], outputs: ["onClearMessage"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
103
103
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MessagesComponent, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesComponent, decorators: [{
105
105
  type: Component,
106
106
  args: [{ selector: 'loxia-messages', template: "<div class=\"messages w-full\">\n <div *ngFor=\"let message of (messagesService.messages$ | async); let i = index; trackBy: trackbyIndex\">\n <loxia-message [message]=\"message\" (onClearMessage)=\"messagesService.clearMessage($event)\"></loxia-message>\n </div>\n</div>\n", styles: [".messages{position:fixed;top:0;left:0;z-index:2000;flex-direction:column;display:flex}\n"] }]
107
107
  }], ctorParameters: () => [{ type: MessagesService }] });
108
108
 
109
109
  class OverlayComponent {
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: OverlayComponent, selector: "loxia-overlay", ngImport: i0, template: "<div class=\"overlay\">\n <div class=\"centered-content\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{width:100vw;height:0;opacity:1}.centered-content{position:relative;width:100%;height:100%}.content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.overlay{position:absolute;background-color:#1f2528db;width:100%;height:100%;z-index:1001}\n"] }); }
110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OverlayComponent, selector: "loxia-overlay", ngImport: i0, template: "<div class=\"overlay\">\n <div class=\"centered-content\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{width:100vw;height:0;opacity:1}.centered-content{position:relative;width:100%;height:100%}.content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.overlay{position:absolute;background-color:#1f2528db;width:100%;height:100%;z-index:1001}\n"] }); }
112
112
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: OverlayComponent, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OverlayComponent, decorators: [{
114
114
  type: Component,
115
115
  args: [{ selector: 'loxia-overlay', template: "<div class=\"overlay\">\n <div class=\"centered-content\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{width:100vw;height:0;opacity:1}.centered-content{position:relative;width:100%;height:100%}.content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.overlay{position:absolute;background-color:#1f2528db;width:100%;height:100%;z-index:1001}\n"] }]
116
116
  }] });
117
117
 
118
118
  class ProgressIndicatorComponent {
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProgressIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ProgressIndicatorComponent, selector: "loxia-progress-indicator", ngImport: i0, template: "<div class=\"inline-block h-16 w-16 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-surface motion-reduce:animate-[spin_1.5s_linear_infinite] dark:text-warning\"\n role=\"status\">\n <span class=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\">\n Loading...\n </span>\n</div>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProgressIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProgressIndicatorComponent, selector: "loxia-progress-indicator", ngImport: i0, template: "<div class=\"inline-block h-16 w-16 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-surface motion-reduce:animate-[spin_1.5s_linear_infinite] dark:text-warning\"\n role=\"status\">\n <span class=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\">\n Loading...\n </span>\n</div>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProgressIndicatorComponent, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProgressIndicatorComponent, decorators: [{
123
123
  type: Component,
124
124
  args: [{ selector: 'loxia-progress-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block h-16 w-16 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-surface motion-reduce:animate-[spin_1.5s_linear_infinite] dark:text-warning\"\n role=\"status\">\n <span class=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\">\n Loading...\n </span>\n</div>\n" }]
125
125
  }] });
126
126
 
127
+ const SET_RIT_DELEN = '[mst] SetRitDelen';
128
+ const SET_RIT_DELEN_AFTER_UPDATE = '[mst] SetRitDelenAfterUpdate';
129
+ const UPDATE_RIT_DELEN = '[mst] UpdateRitDelen';
130
+ const TOGGLE_RITDEEL_ZICHTBAAR = '[mst] ToggleRitdeelZichtbaar';
131
+ const SET_RITDEEL_ZICHTBAAR = '[mst] ZetRitdeelZichtbaar';
132
+ const SET_ZICHTBAARHEID_ALLE_RITDELEN = '[mst] SetZichtbaarheidAlleRitdelen';
133
+ const TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN = '[mst] ToggleZichtbaarheidVoorBewegingen';
134
+ const SET_ALTERNATIEVE_RIT_DELEN = '[mst] SetAlternatieveRitDelen';
135
+ const RITDEEL_INVOEGEN = '[mst] RitdeelInvoegen';
136
+ const DELETE_RITDEEL = '[mst] DeleteRitdeel';
137
+ const DELETE_RITDEEL_ACTIE = '[mst] DeleteRitdeelActie';
138
+ const ADD_RITDEEL_ACTIE = '[mst] AddRitdeelActie';
139
+ const NAVIGEER = '[mst] Navigeer';
140
+ const NAVIGEER_VANAF = '[mst] NavigeerVanaf';
141
+ const setRitDelen = createAction(SET_RIT_DELEN, (ritDelen, paginationSize) => ({ ritDelen, paginationSize }));
142
+ const setRitdelenAfterUpdate = createAction(SET_RIT_DELEN_AFTER_UPDATE, (ritDelen) => ({ ritDelen }));
143
+ const navigeer = createAction(NAVIGEER, (stapSize, paginationSize) => ({ stapSize, paginationSize }));
144
+ const navigeerVanaf = createAction(NAVIGEER_VANAF, (paginationSize, ritdeel) => ({ paginationSize, ritdeel }));
145
+ const updateRitDelen = createAction(UPDATE_RIT_DELEN, (ritDelen) => ({ ritDelen }));
146
+ const toggleRitdeelZichtbaar = createAction(TOGGLE_RITDEEL_ZICHTBAAR, (ritDeel) => ({ ritDeel }));
147
+ const setRitdeelZichtbaar = createAction(SET_RITDEEL_ZICHTBAAR, (ritDeel, zichtbaar) => ({ ritDeel, zichtbaar }));
148
+ const deleteRitdeel = createAction(DELETE_RITDEEL, (ritDeel) => ({ ritDeel }));
149
+ const deleteRitdeelActie = createAction(DELETE_RITDEEL_ACTIE, (ritDeel, actie) => ({ ritDeel, actie }));
150
+ const addRitdeelActie = createAction(ADD_RITDEEL_ACTIE, (ritDeel, actie) => ({ ritDeel, actie }));
151
+ const setZichtbaarheidAlleRitdelen = createAction(SET_ZICHTBAARHEID_ALLE_RITDELEN, (zichtbaarheid) => ({ zichtbaarheid }));
152
+ const toggleZichtbaarheidVoorBewegingen = createAction(TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN, (bewegingIds) => ({ bewegingIds }));
153
+ const setAlternatieveRitDelen = createAction(SET_ALTERNATIEVE_RIT_DELEN, (alternatieveRitDeel) => ({ alternatieveRitDeel }));
154
+ const ritdeelInvoegen = createAction(RITDEEL_INVOEGEN, (nieuweRoute) => ({ nieuweRoute }));
155
+ // do not export return value
156
+ const ritdeelActions = union({
157
+ setRitDelen,
158
+ updateRitDelen,
159
+ setRitdelenAfterUpdate,
160
+ toggleRitdeelZichtbaar,
161
+ setRitdeelZichtbaar,
162
+ deleteRitdeel,
163
+ deleteRitdeelActie,
164
+ addRitdeelActie,
165
+ setZichtbaarheidAlleRitdelen,
166
+ toggleZichtbaarheidVoorBewegingen,
167
+ setAlternatieveRitDelen,
168
+ ritdeelInvoegen
169
+ });
170
+
171
+ class CarouselControlsComponent {
172
+ constructor(store) {
173
+ this.store = store;
174
+ this.paginationSize = 4;
175
+ this.sideNavOpen = false;
176
+ this.ritdelen$ = this.store.select('ritDelen').pipe(filter(r => r?.length > 0));
177
+ this.kanLinks$ = this.ritdelen$.pipe(map(r => this.kanLinksNavigeren(r)));
178
+ this.kanRechts$ = this.ritdelen$.pipe(map(r => this.kanRechtsNavigeren(r)));
179
+ }
180
+ kanLinksNavigeren(ritDelen) {
181
+ return ritDelen.length > this.paginationSize && !ritDelen[0].isBinnenWindow();
182
+ }
183
+ kanRechtsNavigeren(ritDelen) {
184
+ return ritDelen.length > this.paginationSize && !ritDelen[ritDelen.length - 1].isBinnenWindow();
185
+ }
186
+ navigeerNaarLinks(event) {
187
+ this.store.dispatch(navigeer(event?.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize));
188
+ }
189
+ navigeerNaarRechts(event) {
190
+ this.store.dispatch(navigeer(event?.ctrlKey ? 1 : this.paginationSize - 1, this.paginationSize));
191
+ }
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CarouselControlsComponent, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CarouselControlsComponent, selector: "carousel-controls", inputs: { paginationSize: "paginationSize", sideNavOpen: "sideNavOpen" }, ngImport: i0, template: "<div *ngIf=\"ritdelen$ | async\">\n <a class=\"loxia-carousel-control-prev\" [ngClass]=\"(sideNavOpen)?'carousel-sidebar-open':'carousel-sidebar'\" role=\"button\"\n data-slide=\"prev\" (click)=\"navigeerNaarLinks($event)\" [hidden]=\"(kanLinks$ | async) === false\">\n <span id=\"previous-page\" class=\"loxia-carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Previous</span>\n</a>\n <a class=\"loxia-carousel-control-next\" style=\"width: 2%;\" role=\"button\" data-slide=\"next\" (click)=\"navigeerNaarRechts($event)\"\n [hidden]=\"(kanRechts$ | async) === false\">\n <span id=\"next-page\" class=\"loxia-carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Next</span>\n </a>\n</div>\n", styles: [".loxia-carousel-control-prev{left:0}.loxia-carousel-control-next{right:0}.loxia-carousel-control-next-icon,.loxia-carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.loxia-carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next:focus,.loxia-carousel-control-next:hover,.loxia-carousel-control-prev:focus,.loxia-carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.loxia-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loxia-carousel-control-next,.loxia-carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}.carousel-sidebar{width:2%}.carousel-sidebar-open{width:2%;transition:all .3s;left:470px}[hidden]{display:none!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
194
+ }
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CarouselControlsComponent, decorators: [{
196
+ type: Component,
197
+ args: [{ selector: 'carousel-controls', template: "<div *ngIf=\"ritdelen$ | async\">\n <a class=\"loxia-carousel-control-prev\" [ngClass]=\"(sideNavOpen)?'carousel-sidebar-open':'carousel-sidebar'\" role=\"button\"\n data-slide=\"prev\" (click)=\"navigeerNaarLinks($event)\" [hidden]=\"(kanLinks$ | async) === false\">\n <span id=\"previous-page\" class=\"loxia-carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Previous</span>\n</a>\n <a class=\"loxia-carousel-control-next\" style=\"width: 2%;\" role=\"button\" data-slide=\"next\" (click)=\"navigeerNaarRechts($event)\"\n [hidden]=\"(kanRechts$ | async) === false\">\n <span id=\"next-page\" class=\"loxia-carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Next</span>\n </a>\n</div>\n", styles: [".loxia-carousel-control-prev{left:0}.loxia-carousel-control-next{right:0}.loxia-carousel-control-next-icon,.loxia-carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.loxia-carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next:focus,.loxia-carousel-control-next:hover,.loxia-carousel-control-prev:focus,.loxia-carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.loxia-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loxia-carousel-control-next,.loxia-carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}.carousel-sidebar{width:2%}.carousel-sidebar-open{width:2%;transition:all .3s;left:470px}[hidden]{display:none!important}\n"] }]
198
+ }], ctorParameters: () => [{ type: i2$1.Store }], propDecorators: { paginationSize: [{
199
+ type: Input
200
+ }], sideNavOpen: [{
201
+ type: Input
202
+ }] } });
203
+
127
204
  const version = '8.1.3-SNAPSHOT';
128
205
 
129
206
  const SET_EDITABLE = '[mst] SetEditable';
@@ -169,7 +246,8 @@ const LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO = '[mst] laadEnVerwerkSignaleringsb
169
246
  const FOCUS_OP_RITDEEL = '[mst] focusOpRitdeel';
170
247
  const FOCUS_OP_IDS = '[mst] focusOpIds';
171
248
  const BEPAAL_SB_INFOS = '[mst] bepaalSbInfos';
172
- const SET_SELECTED_RITDEEL = '[mst] SetSelectedRitdeel';
249
+ const TRIGGER_SELECTIE_UPDATE = '[mst] TriggerSelectieUpdate';
250
+ const SET_SELECTIE_INFOS = '[mst] SetSelectieInfos';
173
251
  const setEditable = createAction(SET_EDITABLE, (editable) => ({ editable }));
174
252
  const SetRitSelectieIds = createAction(SET_RIT_SELECTIE_IDS, (ids) => ({ ids }));
175
253
  const SetGeplandeActies = createAction(SET_GEPLANDE_ACTIES, (geplandeActiesMap) => ({ geplandeActiesMap }));
@@ -213,7 +291,8 @@ const navigeerBuitenRit = createAction(NAVIGEER_BUITEN_RIT, (randPuic) => ({ ran
213
291
  const focusOpRitdeel = createAction(FOCUS_OP_RITDEEL, (ritdeel, paginationSize, iaVersieInfo) => ({ ritdeel, paginationSize, iaVersieInfo }));
214
292
  const focusOpIds = createAction(FOCUS_OP_IDS, (puics) => ({ puics }));
215
293
  const bepaalSbInfos = createAction(BEPAAL_SB_INFOS, (rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize) => ({ rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize }));
216
- const SetSelectedRitdeel = createAction(SET_SELECTED_RITDEEL, (id) => ({ id }));
294
+ const svgUpdateFinished = createAction(TRIGGER_SELECTIE_UPDATE);
295
+ const setSelectieInfos = createAction(SET_SELECTIE_INFOS, (selectieInfos) => ({ selectieInfos }));
217
296
  // do not export return value
218
297
  const mstActions = union({
219
298
  setEditable,
@@ -252,88 +331,10 @@ const mstActions = union({
252
331
  BewegingInvoegen,
253
332
  KeurAlleActiesGoed,
254
333
  UpdateRit,
255
- setSelectedRitdeel: SetSelectedRitdeel
334
+ svgUpdateFinished,
335
+ setSelectieInfos
256
336
  });
257
337
 
258
- const SET_RIT_DELEN = '[mst] SetRitDelen';
259
- const SET_RIT_DELEN_AFTER_UPDATE = '[mst] SetRitDelenAfterUpdate';
260
- const UPDATE_RIT_DELEN = '[mst] UpdateRitDelen';
261
- const TOGGLE_RITDEEL_ZICHTBAAR = '[mst] ToggleRitdeelZichtbaar';
262
- const SET_RITDEEL_ZICHTBAAR = '[mst] ZetRitdeelZichtbaar';
263
- const SET_ZICHTBAARHEID_ALLE_RITDELEN = '[mst] SetZichtbaarheidAlleRitdelen';
264
- const TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN = '[mst] ToggleZichtbaarheidVoorBewegingen';
265
- const SET_ALTERNATIEVE_RIT_DELEN = '[mst] SetAlternatieveRitDelen';
266
- const RITDEEL_INVOEGEN = '[mst] RitdeelInvoegen';
267
- const DELETE_RITDEEL = '[mst] DeleteRitdeel';
268
- const DELETE_RITDEEL_ACTIE = '[mst] DeleteRitdeelActie';
269
- const ADD_RITDEEL_ACTIE = '[mst] AddRitdeelActie';
270
- const NAVIGEER = '[mst] Navigeer';
271
- const NAVIGEER_VANAF = '[mst] NavigeerVanaf';
272
- const setRitDelen = createAction(SET_RIT_DELEN, (ritDelen, paginationSize, iaversieinfo) => ({ ritDelen, paginationSize, iaversieinfo }));
273
- const setRitdelenAfterUpdate = createAction(SET_RIT_DELEN_AFTER_UPDATE, (ritDelen) => ({ ritDelen }));
274
- const navigeer = createAction(NAVIGEER, (stapSize, paginationSize, iaversieinfo) => ({ stapSize, paginationSize, iaversieinfo }));
275
- const navigeerVanaf = createAction(NAVIGEER_VANAF, (paginationSize, iaversieinfo, ritdeel) => ({ paginationSize, iaversieinfo, ritdeel }));
276
- const updateRitDelen = createAction(UPDATE_RIT_DELEN, (ritDelen) => ({ ritDelen }));
277
- const toggleRitdeelZichtbaar = createAction(TOGGLE_RITDEEL_ZICHTBAAR, (ritDeel) => ({ ritDeel }));
278
- const setRitdeelZichtbaar = createAction(SET_RITDEEL_ZICHTBAAR, (ritDeel, zichtbaar) => ({ ritDeel, zichtbaar }));
279
- const deleteRitdeel = createAction(DELETE_RITDEEL, (ritDeel) => ({ ritDeel }));
280
- const deleteRitdeelActie = createAction(DELETE_RITDEEL_ACTIE, (ritDeel, actie) => ({ ritDeel, actie }));
281
- const addRitdeelActie = createAction(ADD_RITDEEL_ACTIE, (ritDeel, actie) => ({ ritDeel, actie }));
282
- const setZichtbaarheidAlleRitdelen = createAction(SET_ZICHTBAARHEID_ALLE_RITDELEN, (zichtbaarheid) => ({ zichtbaarheid }));
283
- const toggleZichtbaarheidVoorBewegingen = createAction(TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN, (bewegingIds) => ({ bewegingIds }));
284
- const setAlternatieveRitDelen = createAction(SET_ALTERNATIEVE_RIT_DELEN, (alternatieveRitDeel) => ({ alternatieveRitDeel }));
285
- const ritdeelInvoegen = createAction(RITDEEL_INVOEGEN, (nieuweRoute) => ({ nieuweRoute }));
286
- // do not export return value
287
- const ritdeelActions = union({
288
- setRitDelen,
289
- updateRitDelen,
290
- setRitdelenAfterUpdate,
291
- toggleRitdeelZichtbaar,
292
- setRitdeelZichtbaar,
293
- deleteRitdeel,
294
- deleteRitdeelActie,
295
- addRitdeelActie,
296
- setZichtbaarheidAlleRitdelen,
297
- toggleZichtbaarheidVoorBewegingen,
298
- setAlternatieveRitDelen,
299
- ritdeelInvoegen
300
- });
301
-
302
- class Utils {
303
- static flatMap(xs, f) {
304
- return xs.reduce((acc, x) => acc.concat(f(x)), []);
305
- }
306
- static getValidErorrMessage(err) {
307
- let errorMsg = '';
308
- if (err.msg) {
309
- errorMsg += err.msg;
310
- }
311
- if (Array.isArray(err.body)) {
312
- err.body.forEach(x => errorMsg += x);
313
- }
314
- else if (err.body) {
315
- if (err.body instanceof ProgressEvent) {
316
- errorMsg = 'Kon geen verbinding maken met de server';
317
- }
318
- else if (err.body.text) {
319
- errorMsg += err.body.text;
320
- }
321
- else {
322
- errorMsg += err.body;
323
- }
324
- }
325
- if (err.message) {
326
- errorMsg += err.message;
327
- }
328
- if (typeof err === 'string' || err instanceof String) {
329
- errorMsg += err;
330
- }
331
- if (errorMsg !== '') {
332
- return errorMsg;
333
- }
334
- }
335
- }
336
-
337
338
  /**
338
339
  * https://gist.github.com/jordanluyke/609a4fffb69d1ebafdadd313ee2ee804
339
340
  *
@@ -397,7 +398,7 @@ class ArrayMultimap {
397
398
  return Array.from(new Set(this._entries.map(entry => entry.key)));
398
399
  }
399
400
  values() {
400
- return Utils.flatMap(this._entries, x => x.value);
401
+ return this._entries.reduce((acc, x) => acc.concat(x.value), []);
401
402
  }
402
403
  put(key, value) {
403
404
  this._entries.push(new MultimapEntry(key, value));
@@ -491,10 +492,10 @@ class SignaleringsBeeldManagerService {
491
492
  getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam, kantcode) {
492
493
  return this.signaleringsBeeldManager.getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam, kantcode);
493
494
  }
494
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsBeeldManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
495
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsBeeldManagerService }); }
495
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsBeeldManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
496
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsBeeldManagerService }); }
496
497
  }
497
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsBeeldManagerService, decorators: [{
498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsBeeldManagerService, decorators: [{
498
499
  type: Injectable
499
500
  }] });
500
501
 
@@ -503,6 +504,7 @@ class EditorService {
503
504
  this.signaleringsBeeldManagerService = signaleringsBeeldManagerService;
504
505
  this.initReadyPromise();
505
506
  }
507
+ // Called from GWT only, can be removed when GWT is gone. any is used because it will be removed with GWT
506
508
  setEditor(editor) {
507
509
  this.editor = editor;
508
510
  this.resolveReadyPromise();
@@ -510,6 +512,7 @@ class EditorService {
510
512
  isReady() {
511
513
  return this.promise;
512
514
  }
515
+ // Called from GWT only, can be removed when GWT is gone
513
516
  setSignaleringsBeeldManager(signaleringsBeeldManager) {
514
517
  this.signaleringsBeeldManagerService.set(signaleringsBeeldManager);
515
518
  }
@@ -535,10 +538,10 @@ class EditorService {
535
538
  that.resolveReadyPromise = resolve;
536
539
  }) : this.promise;
537
540
  }
538
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EditorService, deps: [{ token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
539
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EditorService }); }
541
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditorService, deps: [{ token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
542
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditorService }); }
540
543
  }
541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EditorService, decorators: [{
544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditorService, decorators: [{
542
545
  type: Injectable
543
546
  }], ctorParameters: () => [{ type: SignaleringsBeeldManagerService }] });
544
547
 
@@ -555,7 +558,7 @@ class BewegingUtils {
555
558
  const retval = [];
556
559
  retval.length = ritDelen.length;
557
560
  const origineleBewegingMap = this.bepaalOrigineleBewegingMap(origineleBewegingen);
558
- let vorigeBeweging = null;
561
+ let vorigeBeweging = undefined;
559
562
  for (let i = 0; i < ritDelen.length; i++) {
560
563
  const ritdeel = ritDelen[i];
561
564
  if (ritdeel.beweging) {
@@ -585,7 +588,7 @@ class BewegingUtils {
585
588
  }
586
589
  static bewegingenZijnGewijzigd(ritDelen, origineleBewegingen) {
587
590
  const ritDelenArray = ritDelen
588
- .filter(r => r.beweging)
591
+ .filter(r => r.beweging?.id)
589
592
  .map(r => r.beweging.id)
590
593
  .sort((a, b) => a - b);
591
594
  const bewegingenIdArray = origineleBewegingen.map(b => b.id).sort((a, b) => a - b);
@@ -601,9 +604,9 @@ class BewegingUtils {
601
604
  return stringToCheck.indexOf(match) !== -1;
602
605
  }
603
606
  static isGewijzigd(ritdeel, nieuwDwangNummer, origineleBewegingenMap) {
604
- const dwangGewijzigd = ritdeel.beweging.dwangNummer !== nieuwDwangNummer;
607
+ const dwangGewijzigd = ritdeel.beweging?.dwangNummer !== nieuwDwangNummer;
605
608
  let gewijzigd = false;
606
- if (ritdeel.beweging.wijzigStatus === this.NORMAAL) {
609
+ if (ritdeel.beweging?.wijzigStatus === this.NORMAAL) {
607
610
  const origineleBewegingActies = origineleBewegingenMap.get(ritdeel.beweging.id);
608
611
  const huidigeActies = this.createSortedActieIdList(ritdeel.acties);
609
612
  gewijzigd = JSON.stringify(huidigeActies) !== JSON.stringify(origineleBewegingActies);
@@ -627,7 +630,7 @@ class BewegingUtils {
627
630
  let naarSeinPplg;
628
631
  let naarSpoor = newRitdeel.getNaarPrlSpoor();
629
632
  if (eindSein.getTypeAlsString() === BewegingUtils.SEIN_TYPE_FICTIEF) {
630
- if (newRitdeel.heeftVrijebaanInfo()) {
633
+ if (newRitdeel.heeftVrijebaanInfo() && newRitdeel.getVrijebaanRijweg()) {
631
634
  const vbEindSein = newRitdeel.getVrijebaanRijweg().getEindSein();
632
635
  naarSeinNaam = vbEindSein.getName();
633
636
  naarSeinPplg = vbEindSein.getPPLG();
@@ -670,10 +673,10 @@ class BewegingUtils {
670
673
  static toRouteFileDwangNummer(dwangNummer) {
671
674
  return (dwangNummer === 0) ? -1 : dwangNummer;
672
675
  }
673
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingUtils, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
674
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingUtils }); }
676
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingUtils, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
677
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingUtils }); }
675
678
  }
676
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingUtils, decorators: [{
679
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingUtils, decorators: [{
677
680
  type: Injectable
678
681
  }], ctorParameters: () => [{ type: EditorService }] });
679
682
 
@@ -681,43 +684,23 @@ class ViewerControlService {
681
684
  constructor(store, bewegingUtils) {
682
685
  this.store = store;
683
686
  this.bewegingUtils = bewegingUtils;
684
- this.subscriptions = new Subscription();
685
687
  this.valideRit$ = new BehaviorSubject(false);
686
688
  this.printing$ = new BehaviorSubject(false);
687
689
  this.sideNavOpen = false;
688
690
  this.sideNavOpen$ = new BehaviorSubject(this.sideNavOpen);
689
- this.subscriptions.add(combineLatest([
690
- store.select('ritSelectieIds'),
691
- store.select('actieOpRitSelectieIds'),
692
- store.select('ongeplandeActieSelectieIds'),
693
- store.select('gebrokenRitSelectieIds'),
694
- store.select('alternatievenSelectieIds'),
695
- store.select('beginSeinSelectieIds'),
696
- store.select('eindSeinSelectieIds')
697
- ]).subscribe(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenrit, alternatieven, begin, eind]) => {
698
- const selectie = [];
699
- selectie.push(new SelectieInfo(rit, 'rit'));
700
- selectie.push(new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'));
701
- selectie.push(new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'));
702
- selectie.push(new SelectieInfo(gebrokenrit, 'gebrokenrit'));
703
- selectie.push(new SelectieInfo(alternatieven, 'alternatieveRoute'));
704
- selectie.push(new SelectieInfo(begin, 'zigzagVan'));
705
- selectie.push(new SelectieInfo(eind, 'zigzagNaar'));
706
- this.selectieInfos = selectie;
707
- }));
708
- this.subscriptions.add(store.select('ritDelen').subscribe(ritdelen => this.ritdelen = ritdelen));
691
+ this.origineelTreinPad = {};
709
692
  }
710
693
  toggleSideNavVisible() {
711
694
  this.sideNavOpen = !this.sideNavOpen;
712
695
  this.sideNavOpen$.next(this.sideNavOpen);
713
696
  }
714
697
  keurAlleActiesGoed(ongeplandeActies) {
715
- if (this.ritdelen) {
698
+ this.store.select('ritDelen').pipe(take(1), filter(ritdelen => !!ritdelen), tap(ritdelen => {
716
699
  this.store.dispatch(ShowProgress());
717
- const bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(this.ritdelen, this.origineelTreinPad.bewegingen);
718
- const alleActies = this.verzamelAlleActies(this.ritdelen, ongeplandeActies);
700
+ const bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritdelen, this.origineelTreinPad.bewegingen);
701
+ const alleActies = this.verzamelAlleActies(ritdelen, ongeplandeActies);
719
702
  this.store.dispatch(KeurAlleActiesGoed(this.getBewegingenZonderActies(bewegingen), alleActies));
720
- }
703
+ })).subscribe();
721
704
  }
722
705
  setValideRit(valideRit) {
723
706
  this.valideRit$.next(valideRit);
@@ -764,10 +747,10 @@ class ViewerControlService {
764
747
  isPrinting$() {
765
748
  return this.printing$;
766
749
  }
767
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlService, deps: [{ token: i2$1.Store }, { token: BewegingUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
768
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlService, providedIn: 'root' }); }
750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlService, deps: [{ token: i2$1.Store }, { token: BewegingUtils }], target: i0.ɵɵFactoryTarget.Injectable }); }
751
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlService, providedIn: 'root' }); }
769
752
  }
770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlService, decorators: [{
753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlService, decorators: [{
771
754
  type: Injectable,
772
755
  args: [{
773
756
  providedIn: 'root'
@@ -783,10 +766,10 @@ class DebugService {
783
766
  setDebugFlag(debug) {
784
767
  this.store.dispatch(SetDebug(debug));
785
768
  if (debug) {
786
- document.getElementById('svgContainer').addEventListener('mouseover', this.listener);
769
+ document.getElementById('svgContainer')?.addEventListener('mouseover', this.listener);
787
770
  }
788
771
  else {
789
- document.getElementById('svgContainer').removeEventListener('mouseover', this.listener);
772
+ document.getElementById('svgContainer')?.removeEventListener('mouseover', this.listener);
790
773
  }
791
774
  }
792
775
  debugEventListener() {
@@ -817,10 +800,10 @@ class DebugService {
817
800
  console.log(logline);
818
801
  }
819
802
  }
820
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DebugService, deps: [{ token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
821
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DebugService, providedIn: 'root' }); }
803
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DebugService, deps: [{ token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
804
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DebugService, providedIn: 'root' }); }
822
805
  }
823
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DebugService, decorators: [{
806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DebugService, decorators: [{
824
807
  type: Injectable,
825
808
  args: [{
826
809
  providedIn: 'root'
@@ -832,26 +815,28 @@ class PrintBewegingService {
832
815
  this.store = store;
833
816
  this.viewerControlService = viewerControlService;
834
817
  this.sbmService = sbmService;
835
- this.store.select(s => s.ritDelen).subscribe(ritdelen => this.ritdelen = ritdelen);
836
- }
837
- printBeweging(bewegingId, paginationSize, iaVersieInfo) {
838
- const gevondenRitdeel = this.ritdelen.filter(r => parseInt(r.getBewegingId(), 10) === bewegingId);
839
- // hide/show de knoppen
840
- const printing = !!bewegingId && gevondenRitdeel.length === 1;
841
- this.viewerControlService.setPrinting(printing);
842
- if (!printing) {
843
- return Promise.reject(new Error('Geen beweging gevonden voor ' + bewegingId));
844
- }
845
- return new Promise((resolve) => {
846
- const ritdeel = gevondenRitdeel[0];
847
- if (ritdeel.isNietBeschikbaar()) {
848
- this.store.dispatch(navigeerVanaf(paginationSize, iaVersieInfo, ritdeel));
849
- this.store.dispatch(ShowProgress());
850
- setTimeout(() => this.focusOpBeweging(ritdeel, resolve), 1000);
851
- }
852
- else {
853
- this.focusOpBeweging(ritdeel, resolve);
854
- }
818
+ }
819
+ printBeweging(bewegingId, paginationSize) {
820
+ return new Promise((resolve, reject) => {
821
+ this.store.select('ritDelen').pipe(take(1), tap(ritdelen => {
822
+ const gevondenRitdeel = ritdelen.filter(r => Number.parseInt(r.getBewegingId(), 10) === bewegingId);
823
+ // hide/show de knoppen
824
+ const printing = !!bewegingId && gevondenRitdeel.length === 1;
825
+ this.viewerControlService.setPrinting(printing);
826
+ if (!printing) {
827
+ reject(new Error('Geen beweging gevonden voor ' + bewegingId));
828
+ return;
829
+ }
830
+ const ritdeel = gevondenRitdeel[0];
831
+ if (ritdeel.isNietBeschikbaar()) {
832
+ this.store.dispatch(navigeerVanaf(paginationSize, ritdeel));
833
+ this.store.dispatch(ShowProgress());
834
+ setTimeout(() => this.focusOpBeweging(ritdeel, resolve), 1000);
835
+ }
836
+ else {
837
+ this.focusOpBeweging(ritdeel, resolve);
838
+ }
839
+ })).subscribe();
855
840
  });
856
841
  }
857
842
  focusOpBeweging(ritdeel, resolve) {
@@ -875,10 +860,10 @@ class PrintBewegingService {
875
860
  getPuics(topoElementen) {
876
861
  return topoElementen.map(e => e.getPuic());
877
862
  }
878
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrintBewegingService, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
879
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrintBewegingService, providedIn: 'root' }); }
863
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrintBewegingService, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
864
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrintBewegingService, providedIn: 'root' }); }
880
865
  }
881
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrintBewegingService, decorators: [{
866
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PrintBewegingService, decorators: [{
882
867
  type: Injectable,
883
868
  args: [{
884
869
  providedIn: 'root'
@@ -886,8 +871,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
886
871
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: ViewerControlService }, { type: SignaleringsBeeldManagerService }] });
887
872
 
888
873
  class RpeComponent {
874
+ constructor() {
875
+ this.baseurl = '';
876
+ this.path = '';
877
+ }
889
878
  convertToScript() {
890
- const element = this.script.nativeElement;
879
+ const element = this.script?.nativeElement;
891
880
  const script = document.createElement('script');
892
881
  script.type = 'text/javascript';
893
882
  if (this.baseurl && this.path) {
@@ -901,10 +890,10 @@ class RpeComponent {
901
890
  ngAfterViewInit() {
902
891
  this.convertToScript();
903
892
  }
904
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RpeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
905
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: RpeComponent, selector: "rpe-component", inputs: { baseurl: "baseurl", path: "path" }, viewQueries: [{ propertyName: "script", first: true, predicate: ["rpescript"], descendants: true }], ngImport: i0, template: "<div #rpescript style.display=\"none\">\n <ng-content></ng-content>\n</div>\n" }); }
893
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RpeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
894
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RpeComponent, selector: "rpe-component", inputs: { baseurl: "baseurl", path: "path" }, viewQueries: [{ propertyName: "script", first: true, predicate: ["rpescript"], descendants: true }], ngImport: i0, template: "<div #rpescript style.display=\"none\">\n <ng-content></ng-content>\n</div>\n" }); }
906
895
  }
907
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RpeComponent, decorators: [{
896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RpeComponent, decorators: [{
908
897
  type: Component,
909
898
  args: [{ selector: 'rpe-component', template: "<div #rpescript style.display=\"none\">\n <ng-content></ng-content>\n</div>\n" }]
910
899
  }], propDecorators: { baseurl: [{
@@ -940,7 +929,7 @@ class KmRange {
940
929
  if (result.length >= 1) {
941
930
  return result[0];
942
931
  }
943
- return null;
932
+ return undefined;
944
933
  }
945
934
  heeftOverlap(kilometrering1, kilometrering2) {
946
935
  const vanKilometrering = KmRange.getKilometrering(kilometrering1.getKmLint(), this.vanKilometreringen);
@@ -987,6 +976,41 @@ class MeldingBuilder {
987
976
  }
988
977
  }
989
978
 
979
+ class Utils {
980
+ static getValidErorrMessage(err) {
981
+ let errorMsg = '';
982
+ if (err.msg) {
983
+ errorMsg += err.msg;
984
+ }
985
+ if (Array.isArray(err.body)) {
986
+ err.body.forEach((x) => errorMsg += x);
987
+ }
988
+ else if (err.body) {
989
+ if (err.body instanceof ProgressEvent) {
990
+ errorMsg = 'Kon geen verbinding maken met de server';
991
+ }
992
+ else if (err.body.text) {
993
+ errorMsg += err.body.text;
994
+ }
995
+ else {
996
+ errorMsg += err.body;
997
+ }
998
+ }
999
+ if (err.message) {
1000
+ errorMsg += err.message;
1001
+ }
1002
+ if (typeof err === 'string' || err instanceof String) {
1003
+ errorMsg += err;
1004
+ }
1005
+ if (errorMsg !== '') {
1006
+ return errorMsg;
1007
+ }
1008
+ else {
1009
+ return 'Er is een onbekende fout opgetreden';
1010
+ }
1011
+ }
1012
+ }
1013
+
990
1014
  class MessageBuilder {
991
1015
  static rwpDataNietGevonden(err) {
992
1016
  return new Message(Severity.ERROR, 'Error bij ophalen van rijwegplan data: ' + err);
@@ -1257,10 +1281,10 @@ class AppConfigControllerService {
1257
1281
  reportProgress: reportProgress
1258
1282
  });
1259
1283
  }
1260
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppConfigControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1261
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppConfigControllerService, providedIn: 'root' }); }
1284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppConfigControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1285
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppConfigControllerService, providedIn: 'root' }); }
1262
1286
  }
1263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppConfigControllerService, decorators: [{
1287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppConfigControllerService, decorators: [{
1264
1288
  type: Injectable,
1265
1289
  args: [{
1266
1290
  providedIn: 'root'
@@ -1403,10 +1427,10 @@ class BewegingControllerService {
1403
1427
  reportProgress: reportProgress
1404
1428
  });
1405
1429
  }
1406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1407
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingControllerService, providedIn: 'root' }); }
1430
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1431
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingControllerService, providedIn: 'root' }); }
1408
1432
  }
1409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingControllerService, decorators: [{
1433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingControllerService, decorators: [{
1410
1434
  type: Injectable,
1411
1435
  args: [{
1412
1436
  providedIn: 'root'
@@ -1534,10 +1558,10 @@ class Class0BuildPropertiesService {
1534
1558
  reportProgress: reportProgress
1535
1559
  });
1536
1560
  }
1537
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Class0BuildPropertiesService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1538
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Class0BuildPropertiesService, providedIn: 'root' }); }
1561
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Class0BuildPropertiesService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1562
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Class0BuildPropertiesService, providedIn: 'root' }); }
1539
1563
  }
1540
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: Class0BuildPropertiesService, decorators: [{
1564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Class0BuildPropertiesService, decorators: [{
1541
1565
  type: Injectable,
1542
1566
  args: [{
1543
1567
  providedIn: 'root'
@@ -1671,10 +1695,10 @@ class ConnectorControllerService {
1671
1695
  reportProgress: reportProgress
1672
1696
  });
1673
1697
  }
1674
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1675
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorControllerService, providedIn: 'root' }); }
1698
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1699
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorControllerService, providedIn: 'root' }); }
1676
1700
  }
1677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorControllerService, decorators: [{
1701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorControllerService, decorators: [{
1678
1702
  type: Injectable,
1679
1703
  args: [{
1680
1704
  providedIn: 'root'
@@ -1812,10 +1836,10 @@ class LogControllerService {
1812
1836
  reportProgress: reportProgress
1813
1837
  });
1814
1838
  }
1815
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1816
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogControllerService, providedIn: 'root' }); }
1839
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LogControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1840
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LogControllerService, providedIn: 'root' }); }
1817
1841
  }
1818
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogControllerService, decorators: [{
1842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LogControllerService, decorators: [{
1819
1843
  type: Injectable,
1820
1844
  args: [{
1821
1845
  providedIn: 'root'
@@ -2039,10 +2063,10 @@ class P21ControllerService {
2039
2063
  reportProgress: reportProgress
2040
2064
  });
2041
2065
  }
2042
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: P21ControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2043
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: P21ControllerService, providedIn: 'root' }); }
2066
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: P21ControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2067
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: P21ControllerService, providedIn: 'root' }); }
2044
2068
  }
2045
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: P21ControllerService, decorators: [{
2069
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: P21ControllerService, decorators: [{
2046
2070
  type: Injectable,
2047
2071
  args: [{
2048
2072
  providedIn: 'root'
@@ -2126,16 +2150,25 @@ class SbControllerService {
2126
2150
  }
2127
2151
  return httpParams;
2128
2152
  }
2129
- getSignaleringsbeelden(signaleringsbeeldRequestDto, observe = 'body', reportProgress = false, options) {
2130
- if (signaleringsbeeldRequestDto === null || signaleringsbeeldRequestDto === undefined) {
2131
- throw new Error('Required parameter signaleringsbeeldRequestDto was null or undefined when calling getSignaleringsbeelden.');
2153
+ getSignaleringsbeelden(iaVersie, pplg, observe = 'body', reportProgress = false, options) {
2154
+ if (iaVersie === null || iaVersie === undefined) {
2155
+ throw new Error('Required parameter iaVersie was null or undefined when calling getSignaleringsbeelden.');
2156
+ }
2157
+ if (pplg === null || pplg === undefined) {
2158
+ throw new Error('Required parameter pplg was null or undefined when calling getSignaleringsbeelden.');
2159
+ }
2160
+ let localVarQueryParameters = new HttpParams({ encoder: this.encoder });
2161
+ if (pplg) {
2162
+ pplg.forEach((element) => {
2163
+ localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, element, 'pplg');
2164
+ });
2132
2165
  }
2133
2166
  let localVarHeaders = this.defaultHeaders;
2134
2167
  let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
2135
2168
  if (localVarHttpHeaderAcceptSelected === undefined) {
2136
2169
  // to determine the Accept header
2137
2170
  const httpHeaderAccepts = [
2138
- '*/*'
2171
+ 'application/json'
2139
2172
  ];
2140
2173
  localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
2141
2174
  }
@@ -2150,14 +2183,6 @@ class SbControllerService {
2150
2183
  if (localVarTransferCache === undefined) {
2151
2184
  localVarTransferCache = true;
2152
2185
  }
2153
- // to determine the Content-Type header
2154
- const consumes = [
2155
- 'application/json'
2156
- ];
2157
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
2158
- if (httpContentTypeSelected !== undefined) {
2159
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
2160
- }
2161
2186
  let responseType_ = 'json';
2162
2187
  if (localVarHttpHeaderAcceptSelected) {
2163
2188
  if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
@@ -2170,10 +2195,10 @@ class SbControllerService {
2170
2195
  responseType_ = 'blob';
2171
2196
  }
2172
2197
  }
2173
- let localVarPath = `/rest/signaleringsbeeldeninfo`;
2174
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
2198
+ let localVarPath = `/rest/${this.configuration.encodeParam({ name: "iaVersie", value: iaVersie, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/SignaleringsbeeldAndPplgs`;
2199
+ return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
2175
2200
  context: localVarHttpContext,
2176
- body: signaleringsbeeldRequestDto,
2201
+ params: localVarQueryParameters,
2177
2202
  responseType: responseType_,
2178
2203
  withCredentials: this.configuration.withCredentials,
2179
2204
  headers: localVarHeaders,
@@ -2232,10 +2257,156 @@ class SbControllerService {
2232
2257
  reportProgress: reportProgress
2233
2258
  });
2234
2259
  }
2235
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SbControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2236
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SbControllerService, providedIn: 'root' }); }
2260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2261
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbControllerService, providedIn: 'root' }); }
2262
+ }
2263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbControllerService, decorators: [{
2264
+ type: Injectable,
2265
+ args: [{
2266
+ providedIn: 'root'
2267
+ }]
2268
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
2269
+ type: Optional
2270
+ }, {
2271
+ type: Inject,
2272
+ args: [BASE_PATH]
2273
+ }] }, { type: Configuration, decorators: [{
2274
+ type: Optional
2275
+ }] }] });
2276
+
2277
+ /**
2278
+ * MST
2279
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
2280
+ *
2281
+ * The version of the OpenAPI document: 1
2282
+ *
2283
+ *
2284
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2285
+ * https://openapi-generator.tech
2286
+ * Do not edit the class manually.
2287
+ */
2288
+ /* tslint:disable:no-unused-variable member-ordering */
2289
+ class SvgControllerService {
2290
+ constructor(httpClient, basePath, configuration) {
2291
+ this.httpClient = httpClient;
2292
+ this.basePath = 'http://localhost:8080/mst';
2293
+ this.defaultHeaders = new HttpHeaders();
2294
+ this.configuration = new Configuration();
2295
+ if (configuration) {
2296
+ this.configuration = configuration;
2297
+ }
2298
+ if (typeof this.configuration.basePath !== 'string') {
2299
+ if (Array.isArray(basePath) && basePath.length > 0) {
2300
+ basePath = basePath[0];
2301
+ }
2302
+ if (typeof basePath !== 'string') {
2303
+ basePath = this.basePath;
2304
+ }
2305
+ this.configuration.basePath = basePath;
2306
+ }
2307
+ this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
2308
+ }
2309
+ // @ts-ignore
2310
+ addToHttpParams(httpParams, value, key) {
2311
+ if (typeof value === "object" && value instanceof Date === false) {
2312
+ httpParams = this.addToHttpParamsRecursive(httpParams, value);
2313
+ }
2314
+ else {
2315
+ httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
2316
+ }
2317
+ return httpParams;
2318
+ }
2319
+ addToHttpParamsRecursive(httpParams, value, key) {
2320
+ if (value == null) {
2321
+ return httpParams;
2322
+ }
2323
+ if (typeof value === "object") {
2324
+ if (Array.isArray(value)) {
2325
+ value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
2326
+ }
2327
+ else if (value instanceof Date) {
2328
+ if (key != null) {
2329
+ httpParams = httpParams.append(key, value.toISOString().substring(0, 10));
2330
+ }
2331
+ else {
2332
+ throw Error("key may not be null if value is Date");
2333
+ }
2334
+ }
2335
+ else {
2336
+ Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
2337
+ }
2338
+ }
2339
+ else if (key != null) {
2340
+ httpParams = httpParams.append(key, value);
2341
+ }
2342
+ else {
2343
+ throw Error("key may not be null if value is not object or array");
2344
+ }
2345
+ return httpParams;
2346
+ }
2347
+ getSvgInfo(iaVersie, signaleringsbeeldDto, observe = 'body', reportProgress = false, options) {
2348
+ if (iaVersie === null || iaVersie === undefined) {
2349
+ throw new Error('Required parameter iaVersie was null or undefined when calling getSvgInfo.');
2350
+ }
2351
+ if (signaleringsbeeldDto === null || signaleringsbeeldDto === undefined) {
2352
+ throw new Error('Required parameter signaleringsbeeldDto was null or undefined when calling getSvgInfo.');
2353
+ }
2354
+ let localVarHeaders = this.defaultHeaders;
2355
+ let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
2356
+ if (localVarHttpHeaderAcceptSelected === undefined) {
2357
+ // to determine the Accept header
2358
+ const httpHeaderAccepts = [
2359
+ 'application/json'
2360
+ ];
2361
+ localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
2362
+ }
2363
+ if (localVarHttpHeaderAcceptSelected !== undefined) {
2364
+ localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
2365
+ }
2366
+ let localVarHttpContext = options && options.context;
2367
+ if (localVarHttpContext === undefined) {
2368
+ localVarHttpContext = new HttpContext();
2369
+ }
2370
+ let localVarTransferCache = options && options.transferCache;
2371
+ if (localVarTransferCache === undefined) {
2372
+ localVarTransferCache = true;
2373
+ }
2374
+ // to determine the Content-Type header
2375
+ const consumes = [
2376
+ 'application/json'
2377
+ ];
2378
+ const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
2379
+ if (httpContentTypeSelected !== undefined) {
2380
+ localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
2381
+ }
2382
+ let responseType_ = 'json';
2383
+ if (localVarHttpHeaderAcceptSelected) {
2384
+ if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
2385
+ responseType_ = 'text';
2386
+ }
2387
+ else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
2388
+ responseType_ = 'json';
2389
+ }
2390
+ else {
2391
+ responseType_ = 'blob';
2392
+ }
2393
+ }
2394
+ let localVarPath = `/rest/${this.configuration.encodeParam({ name: "iaVersie", value: iaVersie, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/svgs`;
2395
+ return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
2396
+ context: localVarHttpContext,
2397
+ body: signaleringsbeeldDto,
2398
+ responseType: responseType_,
2399
+ withCredentials: this.configuration.withCredentials,
2400
+ headers: localVarHeaders,
2401
+ observe: observe,
2402
+ transferCache: localVarTransferCache,
2403
+ reportProgress: reportProgress
2404
+ });
2405
+ }
2406
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgControllerService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2407
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgControllerService, providedIn: 'root' }); }
2237
2408
  }
2238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SbControllerService, decorators: [{
2409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgControllerService, decorators: [{
2239
2410
  type: Injectable,
2240
2411
  args: [{
2241
2412
  providedIn: 'root'
@@ -2249,7 +2420,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
2249
2420
  type: Optional
2250
2421
  }] }] });
2251
2422
 
2252
- const APIS = [AppConfigControllerService, BewegingControllerService, Class0BuildPropertiesService, ConnectorControllerService, LogControllerService, P21ControllerService, SbControllerService];
2423
+ const APIS = [AppConfigControllerService, BewegingControllerService, Class0BuildPropertiesService, ConnectorControllerService, LogControllerService, P21ControllerService, SbControllerService, SvgControllerService];
2424
+
2425
+ /**
2426
+ * MST
2427
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
2428
+ *
2429
+ * The version of the OpenAPI document: 1
2430
+ *
2431
+ *
2432
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2433
+ * https://openapi-generator.tech
2434
+ * Do not edit the class manually.
2435
+ */
2253
2436
 
2254
2437
  /**
2255
2438
  * MST
@@ -2275,6 +2458,28 @@ const APIS = [AppConfigControllerService, BewegingControllerService, Class0Build
2275
2458
  * Do not edit the class manually.
2276
2459
  */
2277
2460
 
2461
+ /**
2462
+ * MST
2463
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
2464
+ *
2465
+ * The version of the OpenAPI document: 1
2466
+ *
2467
+ *
2468
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2469
+ * https://openapi-generator.tech
2470
+ * Do not edit the class manually.
2471
+ */
2472
+
2473
+ var Sein;
2474
+ (function (Sein) {
2475
+ Sein.DirectionEnum = {
2476
+ LeftToRight: 'LEFT_TO_RIGHT',
2477
+ RightToLeft: 'RIGHT_TO_LEFT',
2478
+ TopToBottom: 'TOP_TO_BOTTOM',
2479
+ BottomToTop: 'BOTTOM_TO_TOP'
2480
+ };
2481
+ })(Sein || (Sein = {}));
2482
+
2278
2483
  /**
2279
2484
  * MST
2280
2485
  * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
@@ -2327,11 +2532,11 @@ class ApiModule {
2327
2532
  'See also https://github.com/angular/angular/issues/20575');
2328
2533
  }
2329
2534
  }
2330
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApiModule, deps: [{ token: ApiModule, optional: true, skipSelf: true }, { token: i1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
2331
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ApiModule }); }
2332
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApiModule }); }
2535
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiModule, deps: [{ token: ApiModule, optional: true, skipSelf: true }, { token: i1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
2536
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ApiModule }); }
2537
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiModule }); }
2333
2538
  }
2334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApiModule, decorators: [{
2539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiModule, decorators: [{
2335
2540
  type: NgModule,
2336
2541
  args: [{
2337
2542
  imports: [],
@@ -2360,10 +2565,10 @@ class MstLoggingResource {
2360
2565
  logMessages(logDto) {
2361
2566
  this.controller.log(logDto).subscribe();
2362
2567
  }
2363
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstLoggingResource, deps: [{ token: LogControllerService }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2364
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstLoggingResource }); }
2568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstLoggingResource, deps: [{ token: LogControllerService }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2569
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstLoggingResource }); }
2365
2570
  }
2366
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstLoggingResource, decorators: [{
2571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstLoggingResource, decorators: [{
2367
2572
  type: Injectable
2368
2573
  }], ctorParameters: () => [{ type: LogControllerService }, { type: i2$1.Store }] });
2369
2574
 
@@ -2372,38 +2577,35 @@ class LoggingHelper {
2372
2577
  this.store = store;
2373
2578
  }
2374
2579
  maakLogDTO(melding, actie) {
2375
- let iaVersie = '';
2376
- let algemeneRitInfoDto = null;
2377
- let actieDto = null;
2378
- this.store.select('algemeneRitInfoDto').pipe(take(1)).subscribe(dto => {
2379
- algemeneRitInfoDto = dto;
2380
- });
2381
- this.store.select('iaVersie').pipe(take(1)).subscribe(ia => {
2382
- iaVersie = ia.versie;
2383
- });
2384
- if (actie) {
2385
- actieDto = {
2386
- pplgNaam: actie.pplgNaam,
2387
- ritActieTypeOmschrijving: actie.ritActieTypeOmschrijving,
2388
- ritActieStatus: actie.ritActieStatus,
2389
- bewegingId: actie.bewegingId,
2390
- wisselType: actie.wisselType,
2391
- wisselNaam: actie.wisselNaam,
2392
- wisselKantCode: actie.wisselKantCode,
2393
- vanKilometerlint: actie.vanKilometerlint,
2394
- vanKilometrering: actie.vanKilometrering,
2395
- totKilometerlint: actie.totKilometerlint,
2396
- totKilometrering: actie.totKilometrering
2580
+ return combineLatest([
2581
+ this.store.select('algemeneRitInfoDto'),
2582
+ this.store.select('iaVersie')
2583
+ ]).pipe(take(1), map(([algemeneRitInfoDto, iaVersie]) => {
2584
+ let actieDto = null;
2585
+ if (actie) {
2586
+ actieDto = {
2587
+ pplgNaam: actie.pplgNaam,
2588
+ ritActieTypeOmschrijving: actie.ritActieTypeOmschrijving,
2589
+ ritActieStatus: actie.ritActieStatus,
2590
+ bewegingId: actie.bewegingId,
2591
+ wisselType: actie.wisselType,
2592
+ wisselNaam: actie.wisselNaam,
2593
+ wisselKantCode: actie.wisselKantCode,
2594
+ vanKilometerlint: actie.vanKilometerlint,
2595
+ vanKilometrering: actie.vanKilometrering,
2596
+ totKilometerlint: actie.totKilometerlint,
2597
+ totKilometrering: actie.totKilometrering
2598
+ };
2599
+ }
2600
+ return {
2601
+ iaVersie: iaVersie.versie,
2602
+ meldingLevel: melding.meldingLevel,
2603
+ meldingMessage: melding.meldingMessage,
2604
+ actieDto,
2605
+ algemeneRitInfoDto,
2606
+ sbinfoDtos: this.getSbInfoDtos()
2397
2607
  };
2398
- }
2399
- return {
2400
- iaVersie,
2401
- meldingLevel: melding.meldingLevel,
2402
- meldingMessage: melding.meldingMessage,
2403
- actieDto,
2404
- algemeneRitInfoDto,
2405
- sbinfoDtos: this.getSbInfoDtos()
2406
- };
2608
+ }));
2407
2609
  }
2408
2610
  getSbInfoDtos() {
2409
2611
  const sbInfoDtos = [];
@@ -2414,10 +2616,10 @@ class LoggingHelper {
2414
2616
  });
2415
2617
  return sbInfoDtos;
2416
2618
  }
2417
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoggingHelper, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2418
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoggingHelper }); }
2619
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoggingHelper, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
2620
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoggingHelper }); }
2419
2621
  }
2420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoggingHelper, decorators: [{
2622
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoggingHelper, decorators: [{
2421
2623
  type: Injectable
2422
2624
  }], ctorParameters: () => [{ type: i2$1.Store }] });
2423
2625
 
@@ -2515,6 +2717,7 @@ class ActieHelper {
2515
2717
  this.messagesService = messagesService;
2516
2718
  this.store = store;
2517
2719
  this.loggingHelper = loggingHelper;
2720
+ this.debug = false;
2518
2721
  this.store.select('debug').subscribe(debug => this.debug = debug);
2519
2722
  }
2520
2723
  static getActieTopoElements(ritDeel, sbmService) {
@@ -2548,10 +2751,10 @@ class ActieHelper {
2548
2751
  }
2549
2752
  }
2550
2753
  static actieComparator(actie1, actie2) {
2551
- if (actie1.vanKilometrering !== actie2.vanKilometrering) {
2754
+ if (actie1.vanKilometrering && actie2.vanKilometrering && actie1.vanKilometrering !== actie2.vanKilometrering) {
2552
2755
  return actie1.vanKilometrering > actie2.vanKilometrering ? 1 : -1;
2553
2756
  }
2554
- if (actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {
2757
+ if (actie1.ritActieTypeOmschrijving && actie2.ritActieTypeOmschrijving && actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {
2555
2758
  return actie1.ritActieTypeOmschrijving > actie2.ritActieTypeOmschrijving ? 1 : -1;
2556
2759
  }
2557
2760
  if (actie1.wisselNaam !== actie2.wisselNaam) {
@@ -2591,9 +2794,9 @@ class ActieHelper {
2591
2794
  // make sure the elems are sorted in ascending order
2592
2795
  static sorteerTopoElementen(topoElems) {
2593
2796
  const topoElementen = topoElems.slice();
2594
- let lint = null;
2595
- let first = null;
2596
- let second = null;
2797
+ let lint = undefined;
2798
+ let first;
2799
+ let second;
2597
2800
  for (const topoElement of topoElementen) {
2598
2801
  let kilometreringen = null;
2599
2802
  const kms = JsJavaUtil.listToArray(topoElement.getKilometreringen());
@@ -2625,11 +2828,11 @@ class ActieHelper {
2625
2828
  if (!totKilometreringen && vanKilometreringen) {
2626
2829
  totKilometreringen = [new MstKilometrering(vanKilometreringen[0].getKmLint(), 100000)];
2627
2830
  }
2628
- if (vanKilometreringen[0] > totKilometreringen[0]) {
2831
+ if (vanKilometreringen && totKilometreringen && vanKilometreringen[0] > totKilometreringen[0]) {
2629
2832
  kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, -1), this.addKm(totKilometreringen, 1)));
2630
2833
  }
2631
2834
  else {
2632
- kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, 1), this.addKm(totKilometreringen, -1)));
2835
+ kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen ?? [], 1), this.addKm(totKilometreringen ?? [], -1)));
2633
2836
  }
2634
2837
  });
2635
2838
  }
@@ -2720,21 +2923,23 @@ class ActieHelper {
2720
2923
  else {
2721
2924
  const puics = [];
2722
2925
  kmRanges.forEach(kmRange => {
2723
- let vanKilometrering = new MstKilometrering(actie.vanKilometerlint, actie.vanKilometrering);
2724
- let totKilometrering = new MstKilometrering(actie.totKilometerlint, actie.totKilometrering);
2725
- if (actie.vanKilometrering > actie.totKilometrering) {
2726
- const temp = { van: vanKilometrering, tot: totKilometrering };
2727
- vanKilometrering = temp.tot;
2728
- totKilometrering = temp.van;
2729
- }
2730
- if (kmRange.heeftOverlap(vanKilometrering, totKilometrering)) {
2731
- puics.push(kmRange.topologyElement.getPuic());
2926
+ if (actie.vanKilometrering && actie.vanKilometerlint && actie.totKilometrering && actie.totKilometerlint) {
2927
+ let vanKilometrering = new MstKilometrering(actie.vanKilometerlint, actie.vanKilometrering);
2928
+ let totKilometrering = new MstKilometrering(actie.totKilometerlint, actie.totKilometrering);
2929
+ if (actie.vanKilometrering > actie.totKilometrering) {
2930
+ const temp = { van: vanKilometrering, tot: totKilometrering };
2931
+ vanKilometrering = temp.tot;
2932
+ totKilometrering = temp.van;
2933
+ }
2934
+ if (kmRange.heeftOverlap(vanKilometrering, totKilometrering)) {
2935
+ puics.push(kmRange.topologyElement.getPuic());
2936
+ }
2732
2937
  }
2733
2938
  });
2734
2939
  if (puics.length === 0) {
2735
2940
  actieZonderElementen.push(actie.id);
2736
2941
  const melding = MeldingBuilder.actieHighlightError(actieZonderElementen);
2737
- logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));
2942
+ this.loggingHelper.maakLogDTO(melding, actie).pipe(tap(dto => logMeldingDTOs.push(dto))).subscribe();
2738
2943
  }
2739
2944
  retval.putAll(actie, puics);
2740
2945
  }
@@ -2750,7 +2955,7 @@ class ActieHelper {
2750
2955
  verwerkTopoElementen(topoElementen) {
2751
2956
  const kmRanges = [];
2752
2957
  let topoElementenZonderKms = [];
2753
- let laatstePuntKms = null;
2958
+ let laatstePuntKms = undefined;
2754
2959
  topoElementen.forEach(elem => {
2755
2960
  const kms = JsJavaUtil.listToArray(elem.getKilometreringen());
2756
2961
  if (kms.length > 0) {
@@ -2764,7 +2969,7 @@ class ActieHelper {
2764
2969
  }
2765
2970
  });
2766
2971
  if (topoElementenZonderKms.length > 0 && laatstePuntKms) {
2767
- ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, null, kmRanges);
2972
+ ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, undefined, kmRanges);
2768
2973
  }
2769
2974
  return kmRanges;
2770
2975
  }
@@ -2827,21 +3032,21 @@ class ActieHelper {
2827
3032
  if (ActieHelper.isKantCodeLinks(kantcode)) {
2828
3033
  return wissel.getLeft();
2829
3034
  }
2830
- return null;
3035
+ return undefined;
2831
3036
  }
2832
3037
  bepaalPuicVoorWisselSlijpenActie(actie) {
2833
3038
  const storingsSymboolPuic = this.sbmService.getSBWissel(actie.wisselNaam, actie.pplgNaam)?.getStoringSymboolPuic();
2834
3039
  if (!storingsSymboolPuic && this.debug) {
2835
3040
  const melding = MeldingBuilder.actieHighlightError([actie.id]);
2836
3041
  this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));
2837
- this.mstLogResource.logMessages([this.loggingHelper.maakLogDTO(melding, actie)]);
3042
+ this.loggingHelper.maakLogDTO(melding, actie).pipe(tap(logDto => this.mstLogResource.logMessages([logDto]))).subscribe();
2838
3043
  }
2839
3044
  return storingsSymboolPuic ? [storingsSymboolPuic] : [];
2840
3045
  }
2841
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActieHelper, deps: [{ token: SignaleringsBeeldManagerService }, { token: MstLoggingResource }, { token: MessagesService }, { token: i2$1.Store }, { token: LoggingHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
2842
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActieHelper }); }
3046
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActieHelper, deps: [{ token: SignaleringsBeeldManagerService }, { token: MstLoggingResource }, { token: MessagesService }, { token: i2$1.Store }, { token: LoggingHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
3047
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActieHelper }); }
2843
3048
  }
2844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActieHelper, decorators: [{
3049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ActieHelper, decorators: [{
2845
3050
  type: Injectable
2846
3051
  }], ctorParameters: () => [{ type: SignaleringsBeeldManagerService }, { type: MstLoggingResource }, { type: MessagesService }, { type: i2$1.Store }, { type: LoggingHelper }] });
2847
3052
 
@@ -2849,10 +3054,16 @@ class RitdelenLijstComponent {
2849
3054
  constructor(store, sbmService) {
2850
3055
  this.store = store;
2851
3056
  this.sbmService = sbmService;
3057
+ this.nietGeplandeActies = [];
2852
3058
  this.focusEmitter = new EventEmitter();
2853
3059
  this.keurAlleActiesGoed = new EventEmitter();
3060
+ this.ritdeelViewModels = [];
2854
3061
  this.selectedRitdeelActies = [];
2855
3062
  this.selectedRitdeelOngeplandeActies = [];
3063
+ this.disableActieKnoppenVanRitdeel = true;
3064
+ this.editable = false;
3065
+ this.ongeplandeActiesMap = new ArrayMultimap();
3066
+ this.geplandeActies = new ArrayMultimap();
2856
3067
  this.NG_ACTIE_PREFIX = '* ';
2857
3068
  this.subscriptions = [];
2858
3069
  this.subscriptions.push(store.select('ritDelen').subscribe((ritdelen) => {
@@ -2863,9 +3074,6 @@ class RitdelenLijstComponent {
2863
3074
  this.subscriptions.push(store.select('ongeplandeActies').subscribe(acties => this.ongeplandeActiesMap = acties));
2864
3075
  this.subscriptions.push(store.select('geplandeActies').subscribe(acties => this.geplandeActies = acties));
2865
3076
  this.subscriptions.push(store.select('editable').subscribe(editable => this.editable = editable));
2866
- // listen to changes from svg-viewer-component, saving ritdeel in store isn't cool because of all the gwt in it. This is
2867
- // just to make changes within the angular lifecycle.
2868
- this.subscriptions.push(store.select('selectedRitdeelId').pipe(filter(id => !id)).subscribe(this.deselectRitdeel));
2869
3077
  this.subscriptions.push(combineLatest([
2870
3078
  this.store.select('ritDelen'),
2871
3079
  this.store.select('ongeplandeActies')
@@ -2902,12 +3110,14 @@ class RitdelenLijstComponent {
2902
3110
  this.store.dispatch(deleteRitdeel(ritdeel));
2903
3111
  }
2904
3112
  deleteActiesUitRit() {
2905
- this.selectedRitdeel.acties.slice().forEach(actie => {
3113
+ this.selectedRitdeel?.acties.slice().forEach(actie => {
2906
3114
  this.deleteActieUitRit(actie);
2907
3115
  });
2908
3116
  }
2909
3117
  deleteActieUitRit(actie) {
2910
- const acties = this.selectedRitdeel.acties;
3118
+ if (!this.selectedRitdeel)
3119
+ return;
3120
+ const acties = this.selectedRitdeel.acties ?? [];
2911
3121
  const idx = acties.indexOf(actie);
2912
3122
  if (idx >= 0) {
2913
3123
  this.verhuisActieNaarOngepland(actie);
@@ -2933,7 +3143,7 @@ class RitdelenLijstComponent {
2933
3143
  }
2934
3144
  voegActieToeAanRit(ongeplandeActie) {
2935
3145
  const idx = this.selectedRitdeelOngeplandeActies.indexOf(ongeplandeActie);
2936
- if (idx >= 0) {
3146
+ if (idx >= 0 && this.selectedRitdeel) {
2937
3147
  this.store.dispatch(addRitdeelActie(this.selectedRitdeel, this.selectedRitdeelOngeplandeActies[idx].actie));
2938
3148
  this.store.dispatch(AddGeplandeActie(ongeplandeActie.actie, ongeplandeActie.puics));
2939
3149
  this.store.dispatch(DeleteOngeplandeActie(ongeplandeActie));
@@ -3035,13 +3245,13 @@ class RitdelenLijstComponent {
3035
3245
  return `${prefix}${ActieHelper.getVSTActieOmschrijving(actie)}`;
3036
3246
  }
3037
3247
  bepaalPrefixVoorActieOmschrijving(actie) {
3038
- const prefix = '';
3039
- if (this.selectedRitdeel.acties.includes(actie)) {
3248
+ const noPrefix = '';
3249
+ if (this.selectedRitdeel?.acties.includes(actie)) {
3040
3250
  // Afwijkende naam bij niet gevisualiseerde actie in rit
3041
3251
  const puics = this.geplandeActies.get(actie);
3042
- return puics.length > 0 ? prefix : this.NG_ACTIE_PREFIX;
3252
+ return puics.length > 0 ? noPrefix : this.NG_ACTIE_PREFIX;
3043
3253
  }
3044
- return prefix;
3254
+ return noPrefix;
3045
3255
  }
3046
3256
  actieVanKmTekst(actie) {
3047
3257
  if (ActieHelper.isWisselSlijpenActie(actie)) {
@@ -3062,6 +3272,7 @@ class RitdelenLijstComponent {
3062
3272
  return ritdeel.getPplgString();
3063
3273
  }
3064
3274
  getKantCode(stand) {
3275
+ // @ts-ignore
3065
3276
  if (stand === window['domein'].Stand.LINKS) {
3066
3277
  return 'L';
3067
3278
  }
@@ -3071,10 +3282,10 @@ class RitdelenLijstComponent {
3071
3282
  this.keurAlleActiesGoed.emit();
3072
3283
  this.deselectRitdeel();
3073
3284
  }
3074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenLijstComponent, deps: [{ token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Component }); }
3075
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: { nietGeplandeActies: "nietGeplandeActies" }, outputs: { focusEmitter: "focusEmitter", keurAlleActiesGoed: "keurAlleActiesGoed" }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 [attr.data-test-id]=\"'title-rit-details'\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" [attr.data-test-id]=\"'table-rit-details'\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\"\n [attr.data-test-id]=\"'checkbox-alle-bewegingen'\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n [attr.data-test-id]=\"'checkbox-r'+i\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"ritdeelViewModel.isZichtbaar\"\n [title]=\"ritdeelViewModel.title\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeelViewModel.ritdeel)\"\n [hidden]=\"ritdeelViewModel.isNietBeschikbaar\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.isNieuw}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.pplgString}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeelViewModel.ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n [attr.data-test-id]=\"'unplan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n [attr.data-test-id]=\"'plan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm\"\n [attr.data-test-id]=\"'plan-all-actions-for-file'\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px;z-index:1000}td{padding:4px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
3285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenLijstComponent, deps: [{ token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Component }); }
3286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: { nietGeplandeActies: "nietGeplandeActies" }, outputs: { focusEmitter: "focusEmitter", keurAlleActiesGoed: "keurAlleActiesGoed" }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 [attr.data-test-id]=\"'title-rit-details'\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" [attr.data-test-id]=\"'table-rit-details'\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\"\n [attr.data-test-id]=\"'checkbox-alle-bewegingen'\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n [attr.data-test-id]=\"'checkbox-r'+i\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"ritdeelViewModel.isZichtbaar\"\n [title]=\"ritdeelViewModel.title\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeelViewModel.ritdeel)\"\n [hidden]=\"ritdeelViewModel.isNietBeschikbaar\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.isNieuw}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.pplgString}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeelViewModel.ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n [attr.data-test-id]=\"'unplan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n [attr.data-test-id]=\"'plan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm\"\n [attr.data-test-id]=\"'plan-all-actions-for-file'\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px;z-index:1000}td{padding:4px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
3076
3287
  }
3077
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenLijstComponent, decorators: [{
3288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenLijstComponent, decorators: [{
3078
3289
  type: Component,
3079
3290
  args: [{ selector: 'ritdelen-lijst', changeDetection: ChangeDetectionStrategy.Default, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3 [attr.data-test-id]=\"'title-rit-details'\">Ritdetails</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\" [attr.data-test-id]=\"'table-rit-details'\">\n <thead>\n <tr>\n <th scope=\"col\">\n <input #input\n type=\"checkbox\"\n checked\n class=\"checkbox col-visibility\"\n (change)=\"toggleZichtbaarheidAlleRitdelen(input.checked)\"\n id=\"ritdetails-selecteerAlles\"\n title=\"Selecteer alles\"\n [attr.data-test-id]=\"'checkbox-alle-bewegingen'\">\n </th>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">PPLG(s)</th>\n <th scope=\"col\">Treinnr.</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td>\n <input id=\"ritdetails-r{{i}}-zichtbaar\"\n [attr.data-test-id]=\"'checkbox-r'+i\"\n type=\"checkbox\"\n class=\"checkbox col-visibility\"\n [checked]=\"ritdeelViewModel.isZichtbaar\"\n [title]=\"ritdeelViewModel.title\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeelViewModel.ritdeel)\"\n [hidden]=\"ritdeelViewModel.isNietBeschikbaar\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.isNieuw}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.pplgString}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeelViewModel.ritdeel)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-r{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteRitdeel(ritdeelViewModel.ritdeel)\">X\n </button>\n </td>\n </tr>\n\n </table>\n </div>\n <div class=\"actie-pane\">\n <div *ngIf=\"selectedRitdeel && (selectedRitdeelActies.length > 0 || selectedRitdeelOngeplandeActies.length > 0) \"\n id=\"actie-pane\">\n <h4>Geplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelActies.length===0\"\n id=\"bulkSetOngeplandButton\"\n [attr.data-test-id]=\"'unplan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActiesUitRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let actie of selectedRitdeelActies; let i = index\" id=\"ritdetails-a{{i}}\">\n <td id=\"ritdetails-a{{i}}-omschrijving\" class=\"nowrap\">{{ actieOmschrijvingTekst(actie) }}</td>\n <td id=\"ritdetails-a{{i}}-vanKmLint\">{{ actieVanKmTekst(actie)}}</td>\n <td id=\"ritdetails-a{{i}}-totKmLint\">{{ actieTotKmTekst(actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-a{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-danger btn-sm\"\n (click)=\"deleteActieUitRit(actie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">X\n </button>\n </td>\n </tr>\n </table>\n <h4>Ongeplande acties</h4>\n <table aria-hidden=\"true\">\n <tr>\n <th scope=\"col\">Actie</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Tot</th>\n <th scope=\"col\">\n <button *ngIf=\"editable\"\n [hidden]=\"selectedRitdeelOngeplandeActies.length===0\"\n id=\"bulkSetGeplandButton\"\n [attr.data-test-id]=\"'plan-all-actions'\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActiesToeAanRit()\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </th>\n </tr>\n\n <tr *ngFor=\"let ongeplandeActie of selectedRitdeelOngeplandeActies; let i = index\"\n id=\"ritdetails-oa{{i}}\">\n <td id=\"ritdetails-oa{{i}}-omschrijving\" class=\"nowrap\">{{actieOmschrijvingTekst(ongeplandeActie.actie) }}</td>\n <td id=\"ritdetails-oa{{i}}-vanKmLint\">{{ actieVanKmTekst(ongeplandeActie.actie)}}</td>\n <td id=\"ritdetails-oa{{i}}-totKmLint\">{{ actieTotKmTekst(ongeplandeActie.actie)}}</td>\n <td style=\"text-align:right\">\n <button *ngIf=\"editable\"\n id=\"ritdetails-oa{{i}}-del\"\n type=\"button\"\n class=\"loxia-btn loxia-btn-success loxia-btn-sm\"\n (click)=\"voegActieToeAanRit(ongeplandeActie)\"\n [disabled]=\"disableActieKnoppenVanRitdeel\">^\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n <div class=\"knop-pane\">\n <button type=\"button\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm\"\n [attr.data-test-id]=\"'plan-all-actions-for-file'\"\n [innerText]=\"'Plan acties hele rit'\"\n (click)=\"planAlleRitActies()\">\n </button>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%;border:1px solid black}table{width:100%}th{padding:5px;z-index:1000}td{padding:4px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:45vh;overflow:auto}.actie-pane{height:35vh;overflow:auto}.knop-pane{height:5vh;justify-content:center;display:flex;align-items:center}.panes-container,.panes-separator,.top-pane,.actie-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"] }]
3080
3291
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: SignaleringsBeeldManagerService }], propDecorators: { nietGeplandeActies: [{
@@ -3174,10 +3385,10 @@ class RitdelenViewComponent {
3174
3385
  }
3175
3386
  return false;
3176
3387
  }
3177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenViewComponent, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
3178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: RitdelenViewComponent, selector: "ritdelen-view", outputs: { focusEmitter: "focusEmitter" }, host: { listeners: { "window:keyup": "keyEvent($event)" } }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3>Ritdetails view</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Spoor</th>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Sein</th>\n <th scope=\"col\"></th>\n <th scope=\"col\"></th>\n </tr>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">Treinnummer</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel(i)\"></td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-vanSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-naarSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%}table{width:100%}th,td{padding:5px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:90vh;overflow:auto}.panes-container,.panes-separator,.top-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
3388
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenViewComponent, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
3389
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RitdelenViewComponent, selector: "ritdelen-view", outputs: { focusEmitter: "focusEmitter" }, host: { listeners: { "window:keyup": "keyEvent($event)" } }, ngImport: i0, template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3>Ritdetails view</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Spoor</th>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Sein</th>\n <th scope=\"col\"></th>\n <th scope=\"col\"></th>\n </tr>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">Treinnummer</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel(i)\"></td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-vanSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-naarSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%}table{width:100%}th,td{padding:5px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:90vh;overflow:auto}.panes-container,.panes-separator,.top-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
3179
3390
  }
3180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenViewComponent, decorators: [{
3391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenViewComponent, decorators: [{
3181
3392
  type: Component,
3182
3393
  args: [{ selector: 'ritdelen-view', template: "<div id=\"ritdelen-lijst\">\n <div class=\"sidebar-header\">\n <h3>Ritdetails view</h3>\n </div>\n <div class=\"panes-container\">\n <div class=\"top-pane tableFixHead\" id=\"top-pane\">\n <table class=\"table\" aria-hidden=\"true\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Spoor</th>\n <th scope=\"col\"></th>\n <th scope=\"col\" colspan=\"2\" style=\"text-align:center;\">Sein</th>\n <th scope=\"col\"></th>\n <th scope=\"col\"></th>\n </tr>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">DW</th>\n <th scope=\"col\">Van</th>\n <th scope=\"col\">Naar</th>\n <th scope=\"col\">Treinnummer</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n\n <tr *ngFor=\"let ritdeelViewModel of ritdeelViewModels; let i = index\"\n class=\"{{ selectedRitdeelClass(ritdeelViewModel.ritdeel) }}\" id=\"ritdetails-r{{i}}\">\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel(i)\"></td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarPrlSpoor}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.dwangNummer}}</td>\n <td id=\"ritdetails-r{{i}}-vanSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.vanSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-naarSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.naarSeinName}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel(i)\">{{ritdeelViewModel.treinNummer}}</td>\n <td style=\"text-align:right\">\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\n", styles: [".panes-container{display:inline;height:100%}table{width:100%}th,td{padding:5px}tr:nth-child(2n){background:#f0f0f0}tr:nth-child(odd){background:#fff}.top-pane{height:90vh;overflow:auto}.panes-container,.panes-separator,.top-pane{margin:0;padding:0;width:100%}.selected{background:#ffff80!important}.disabled{background:gray!important}.visible-outside-window{background:#87cefa!important}.table-scroll-header-fix tbody{display:block;height:40vh;overflow:auto}.tableFixHead{overflow-y:auto}.tableFixHead thead th{position:sticky;top:0;background-color:#fff}.table{margin-bottom:0}.table td,.table th{border-top:none;border-bottom:none;padding-left:.75em}\n"] }]
3183
3394
  }], ctorParameters: () => [{ type: i2$1.Store }], propDecorators: { focusEmitter: [{
@@ -3198,49 +3409,18 @@ class RitdeelViewModel {
3198
3409
  }
3199
3410
  }
3200
3411
 
3201
- class CarouselControlsComponent {
3202
- constructor(store) {
3203
- this.store = store;
3204
- this.paginationSize = 4;
3205
- this.ritdelen$ = this.store.select('ritDelen').pipe(filter(r => r?.length > 0));
3206
- this.kanLinks$ = this.ritdelen$.pipe(map(r => this.kanLinksNavigeren(r)));
3207
- this.kanRechts$ = this.ritdelen$.pipe(map(r => this.kanRechtsNavigeren(r)));
3208
- }
3209
- kanLinksNavigeren(ritDelen) {
3210
- return ritDelen.length > this.paginationSize && !ritDelen[0].isBinnenWindow();
3211
- }
3212
- kanRechtsNavigeren(ritDelen) {
3213
- return ritDelen.length > this.paginationSize && !ritDelen[ritDelen.length - 1].isBinnenWindow();
3214
- }
3215
- navigeerNaarLinks(event) {
3216
- this.store.dispatch(navigeer(event?.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize, this.iaversieinfo));
3217
- }
3218
- navigeerNaarRechts(event) {
3219
- this.store.dispatch(navigeer(event?.ctrlKey ? 1 : this.paginationSize - 1, this.paginationSize, this.iaversieinfo));
3220
- }
3221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CarouselControlsComponent, deps: [{ token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
3222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CarouselControlsComponent, selector: "carousel-controls", inputs: { paginationSize: "paginationSize", iaversieinfo: "iaversieinfo", sideNavOpen: "sideNavOpen" }, ngImport: i0, template: "<div *ngIf=\"ritdelen$ | async\">\n <a class=\"loxia-carousel-control-prev\" [ngClass]=\"(sideNavOpen)?'carousel-sidebar-open':'carousel-sidebar'\" role=\"button\"\n data-slide=\"prev\" (click)=\"navigeerNaarLinks($event)\" [hidden]=\"(kanLinks$ | async) === false\">\n <span id=\"previous-page\" class=\"loxia-carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Previous</span>\n</a>\n <a class=\"loxia-carousel-control-next\" style=\"width: 2%;\" role=\"button\" data-slide=\"next\" (click)=\"navigeerNaarRechts($event)\"\n [hidden]=\"(kanRechts$ | async) === false\">\n <span id=\"next-page\" class=\"loxia-carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Next</span>\n </a>\n</div>\n", styles: [".loxia-carousel-control-prev{left:0}.loxia-carousel-control-next{right:0}.loxia-carousel-control-next-icon,.loxia-carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.loxia-carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next:focus,.loxia-carousel-control-next:hover,.loxia-carousel-control-prev:focus,.loxia-carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.loxia-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loxia-carousel-control-next,.loxia-carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}.carousel-sidebar{width:2%}.carousel-sidebar-open{width:2%;transition:all .3s;left:470px}[hidden]{display:none!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3223
- }
3224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CarouselControlsComponent, decorators: [{
3225
- type: Component,
3226
- args: [{ selector: 'carousel-controls', template: "<div *ngIf=\"ritdelen$ | async\">\n <a class=\"loxia-carousel-control-prev\" [ngClass]=\"(sideNavOpen)?'carousel-sidebar-open':'carousel-sidebar'\" role=\"button\"\n data-slide=\"prev\" (click)=\"navigeerNaarLinks($event)\" [hidden]=\"(kanLinks$ | async) === false\">\n <span id=\"previous-page\" class=\"loxia-carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Previous</span>\n</a>\n <a class=\"loxia-carousel-control-next\" style=\"width: 2%;\" role=\"button\" data-slide=\"next\" (click)=\"navigeerNaarRechts($event)\"\n [hidden]=\"(kanRechts$ | async) === false\">\n <span id=\"next-page\" class=\"loxia-carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"loxia-sr-only\">Next</span>\n </a>\n</div>\n", styles: [".loxia-carousel-control-prev{left:0}.loxia-carousel-control-next{right:0}.loxia-carousel-control-next-icon,.loxia-carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.loxia-carousel-control-prev-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next-icon{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\")}.loxia-carousel-control-next:focus,.loxia-carousel-control-next:hover,.loxia-carousel-control-prev:focus,.loxia-carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.loxia-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loxia-carousel-control-next,.loxia-carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}.carousel-sidebar{width:2%}.carousel-sidebar-open{width:2%;transition:all .3s;left:470px}[hidden]{display:none!important}\n"] }]
3227
- }], ctorParameters: () => [{ type: i2$1.Store }], propDecorators: { paginationSize: [{
3228
- type: Input
3229
- }], iaversieinfo: [{
3230
- type: Input
3231
- }], sideNavOpen: [{
3232
- type: Input
3233
- }] } });
3234
-
3235
3412
  class ViewerControlsComponent {
3236
3413
  constructor(store, viewerControlsService, bewegingUtils) {
3237
3414
  this.store = store;
3238
3415
  this.viewerControlsService = viewerControlsService;
3239
3416
  this.bewegingUtils = bewegingUtils;
3240
3417
  this.paginationSize = 4;
3418
+ this.treinpad = undefined;
3419
+ this.goedgekeurd = new EventEmitter();
3241
3420
  this.printing$ = this.viewerControlsService.isPrinting$();
3242
3421
  this.valideRit$ = this.viewerControlsService.isValideRit$();
3243
3422
  this.subscriptions = new Subscription();
3423
+ this.editable = false;
3244
3424
  this.subscriptions.add(this.store.select('editable').subscribe(editable => this.editable = editable));
3245
3425
  }
3246
3426
  ngOnChanges({ treinpad }) {
@@ -3249,27 +3429,26 @@ class ViewerControlsComponent {
3249
3429
  }
3250
3430
  }
3251
3431
  showGoedkeuren() {
3252
- return this.editable && this.viewerControlsService.selectieInfos.length !== 0;
3432
+ return this.editable;
3253
3433
  }
3254
3434
  goedkeurenClick() {
3255
- const ritDelen = this.viewerControlsService.ritdelen;
3256
- if (ritDelen) {
3257
- delete this.treinpad.aantalRitActies;
3258
- this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);
3259
- this.goedgekeurd.emit(this.treinpad);
3260
- this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
3261
- }
3435
+ this.store.select('ritDelen').pipe(filter(ritdelen => !!ritdelen), tap(ritDelen => {
3436
+ if (this.treinpad) {
3437
+ delete this.treinpad.aantalRitActies;
3438
+ this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);
3439
+ this.goedgekeurd.emit(this.treinpad);
3440
+ this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
3441
+ }
3442
+ })).subscribe();
3262
3443
  }
3263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlsComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: BewegingUtils }], target: i0.ɵɵFactoryTarget.Component }); }
3264
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ViewerControlsComponent, selector: "viewer-controls", inputs: { paginationSize: "paginationSize", iaversieinfo: "iaversieinfo", treinpad: "treinpad", goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CarouselControlsComponent, selector: "carousel-controls", inputs: ["paginationSize", "iaversieinfo", "sideNavOpen"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3444
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: BewegingUtils }], target: i0.ɵɵFactoryTarget.Component }); }
3445
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ViewerControlsComponent, selector: "viewer-controls", inputs: { paginationSize: "paginationSize", treinpad: "treinpad", goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CarouselControlsComponent, selector: "carousel-controls", inputs: ["paginationSize", "sideNavOpen"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3265
3446
  }
3266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlsComponent, decorators: [{
3447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, decorators: [{
3267
3448
  type: Component,
3268
- args: [{ selector: 'viewer-controls', template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"] }]
3449
+ args: [{ selector: 'viewer-controls', template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"] }]
3269
3450
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: ViewerControlService }, { type: BewegingUtils }], propDecorators: { paginationSize: [{
3270
3451
  type: Input
3271
- }], iaversieinfo: [{
3272
- type: Input
3273
3452
  }], treinpad: [{
3274
3453
  type: Input
3275
3454
  }], goedgekeurd: [{
@@ -3324,7 +3503,7 @@ class ActiePopoverBepaler {
3324
3503
  ongeplandeActies.entries.forEach(entry => {
3325
3504
  const treinNummerActieInfos = puicNaarOngeplandeActieMap.get(entry.key);
3326
3505
  if (!treinNummerActieInfos?.map(({ actie }) => actie).includes(entry.value.actie)) {
3327
- puicNaarOngeplandeActieMap.put(entry.key, { treinNummer: undefined, actie: entry.value.actie });
3506
+ puicNaarOngeplandeActieMap.put(entry.key, { actie: entry.value.actie });
3328
3507
  }
3329
3508
  });
3330
3509
  }
@@ -3384,12 +3563,16 @@ class SvgVisualisatieComponent {
3384
3563
  this.actieHelper = actieHelper;
3385
3564
  this.sbmService = sbmService;
3386
3565
  this.editorService = editorService;
3566
+ this.nietGeplandeActies = [];
3567
+ this.useClickArea = false;
3387
3568
  this.svgInfos$ = this.store.select('svgInfos');
3388
3569
  this.popoverInfos = [];
3389
3570
  this.clickableIds = [];
3571
+ this.selectieInfos$ = this.store.select('selectieInfos');
3390
3572
  this.rightClickableIds = [];
3391
3573
  this.contextMenuActions = [];
3392
3574
  this.contextMenuStyle = { display: 'none' };
3575
+ this.editable = false;
3393
3576
  this.puicNaarBeginSeinRitdeel = new Map();
3394
3577
  this.puicNaarEindSeinCombinatie = new Map();
3395
3578
  this.puicNaarAlternatieveRoute = new Map();
@@ -3413,7 +3596,7 @@ class SvgVisualisatieComponent {
3413
3596
  }));
3414
3597
  }
3415
3598
  ngOnInit() {
3416
- document.getElementById('contextMenu').addEventListener('mouseleave', () => this.hideContextMenu());
3599
+ document.getElementById('contextMenu')?.addEventListener('mouseleave', () => this.hideContextMenu());
3417
3600
  }
3418
3601
  ngOnDestroy() {
3419
3602
  this.subscriptions.forEach(s => s.unsubscribe());
@@ -3440,7 +3623,6 @@ class SvgVisualisatieComponent {
3440
3623
  this.store.dispatch(navigeerBuitenRit(puic));
3441
3624
  }
3442
3625
  }
3443
- this.store.dispatch(SetSelectedRitdeel(undefined));
3444
3626
  }
3445
3627
  handleImxviewRightClick(evt) {
3446
3628
  const fn = () => {
@@ -3471,7 +3653,7 @@ class SvgVisualisatieComponent {
3471
3653
  handleNieuweRouteToegevoegd() {
3472
3654
  this.store.select('nieuweRoute')
3473
3655
  .subscribe((nieuweRoute) => {
3474
- if (nieuweRoute.isValid()) {
3656
+ if (nieuweRoute?.isValid()) {
3475
3657
  this.store.dispatch(ResetNieuweRoute());
3476
3658
  this.store.dispatch(ritdeelInvoegen(nieuweRoute));
3477
3659
  }
@@ -3584,7 +3766,7 @@ class SvgVisualisatieComponent {
3584
3766
  });
3585
3767
  this.viewerControlsService.setValideRit(!gebrokenRit);
3586
3768
  this.store.dispatch(SetGeplandeActies(actieOpRitSelectiePuics));
3587
- const actieOpRitSelectiePuicsArray = Utils.flatMap(Array.from(actieOpRitSelectiePuics.values()), x => x);
3769
+ const actieOpRitSelectiePuicsArray = Array.from(actieOpRitSelectiePuics.values()).flat();
3588
3770
  this.store.dispatch(SetActieOpRitSelectieIds(actieOpRitSelectiePuicsArray));
3589
3771
  ritSelectiePuics = ritSelectiePuics.filter(item => actieOpRitSelectiePuicsArray.indexOf(item) < 0); // make mutually exclusive
3590
3772
  this.store.dispatch(SetRitSelectieIds(ritSelectiePuics));
@@ -3617,12 +3799,12 @@ class SvgVisualisatieComponent {
3617
3799
  getPuics(topoElementen) {
3618
3800
  return topoElementen.map(e => e.getPuic());
3619
3801
  }
3620
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgVisualisatieComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: ActieHelper }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
3621
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: { nietGeplandeActies: "nietGeplandeActies", useClickArea: "useClickArea" }, viewQueries: [{ propertyName: "imxviewer", first: true, predicate: ["imxviewercontainer"], descendants: true }], ngImport: i0, template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"viewerControlsService.selectieInfos\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.ImxViewerComponent, selector: "imx-viewer", inputs: ["useClickArea", "inlineDgnCssImport", "svgInfo", "selectieInfos", "clickableIds", "rightClickableIds", "popoverInfos", "zoomScaleSensitivity", "autoAlignSvgsHorizontally", "initialPanAndZoom"], outputs: ["clickHandler", "rightClickHandler", "svgLoaded", "panned"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3802
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: ActieHelper }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
3803
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: { nietGeplandeActies: "nietGeplandeActies", useClickArea: "useClickArea" }, viewQueries: [{ propertyName: "imxviewer", first: true, predicate: ["imxviewercontainer"], descendants: true }], ngImport: i0, template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.ImxViewerComponent, selector: "imx-viewer", inputs: ["useClickArea", "inlineDgnCssImport", "svgInfo", "selectieInfos", "clickableIds", "rightClickableIds", "popoverInfos", "zoomScaleSensitivity", "autoAlignSvgsHorizontally", "initialPanAndZoom"], outputs: ["clickHandler", "rightClickHandler", "svgLoaded", "panned"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3622
3804
  }
3623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
3805
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
3624
3806
  type: Component,
3625
- args: [{ selector: 'svg-visualisatie', template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"viewerControlsService.selectieInfos\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"] }]
3807
+ args: [{ selector: 'svg-visualisatie', template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"] }]
3626
3808
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: ViewerControlService }, { type: ActieHelper }, { type: SignaleringsBeeldManagerService }, { type: EditorService }], propDecorators: { nietGeplandeActies: [{
3627
3809
  type: Input
3628
3810
  }], useClickArea: [{
@@ -3640,6 +3822,9 @@ class MstviewerComponent {
3640
3822
  this.printBewegingService = printBewegingService;
3641
3823
  this.paginationSize = 4;
3642
3824
  this.baseurl = 'https://acceptatie.raildesign.nl';
3825
+ this.debug = false;
3826
+ this.viewer = false;
3827
+ this.useClickArea = false;
3643
3828
  this.goedgekeurd = new EventEmitter();
3644
3829
  this.subscriptions = new Subscription();
3645
3830
  this.subscriptions.add(this.store.select('nieuweBewegingen').subscribe(nieuweRit => {
@@ -3690,23 +3875,26 @@ class MstviewerComponent {
3690
3875
  }
3691
3876
  }
3692
3877
  printFocusBeweging(bewegingId) {
3693
- return this.printBewegingService.printBeweging(bewegingId, this.paginationSize, this.iaversieinfo);
3878
+ return this.printBewegingService.printBeweging(bewegingId, this.paginationSize);
3694
3879
  }
3695
3880
  keurAlleActiesGoed() {
3696
3881
  this.viewerControlsService.keurAlleActiesGoed(this.ongeplandeActies);
3697
3882
  }
3698
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstviewerComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: DebugService }, { token: PrintBewegingService }], target: i0.ɵɵFactoryTarget.Component }); }
3699
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: MstviewerComponent, selector: "mst-viewer", inputs: { iaversieinfo: "iaversieinfo", treinpad: "treinpad", ongeplandeActies: "ongeplandeActies", paginationSize: "paginationSize", baseurl: "baseurl", debug: "debug", viewer: "viewer", useClickArea: "useClickArea" }, outputs: { goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<loxia-messages></loxia-messages>\n<loxia-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\n\n<div style=\"position: relative\">\n <rpe-component [baseurl]=\"baseurl\" path=\"/mst/editor/editor.nocache.js\"></rpe-component>\n\n <svg-visualisatie [useClickArea]=\"useClickArea\" [nietGeplandeActies]=\"ongeplandeActies\"></svg-visualisatie>\n\n <nav [class.active]=\"(viewerControlsService.sideNavOpen$ | async) === false\" id=\"sidebar\">\n <div id=\"dismiss\">\n <em id=\"verbergSideNav\" class=\"fa fa-arrow-left\" (click)=\"viewerControlsService.toggleSideNavVisible()\">&times;</em>\n </div>\n <ritdelen-lijst *ngIf=\"!viewer\" (focusEmitter)=\"focusRitdeel($event)\" (keurAlleActiesGoed)=\"keurAlleActiesGoed()\"\n [nietGeplandeActies]=\"ongeplandeActies\"></ritdelen-lijst>\n <ritdelen-view *ngIf=\"viewer\" (focusEmitter)=\"focusRitdeel($event)\"></ritdelen-view>\n </nav>\n\n <viewer-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [treinpad]=\"treinpad\"\n [goedgekeurd]=\"goedgekeurd\"\n ></viewer-controls>\n\n</div>\n", styles: ["#sidebar{min-width:350px;max-width:475px;background:#fff;transition:all .3s;height:93vh;position:absolute;top:0;z-index:20}#sidebar.active{margin-left:-475px}#sidebar .sidebar-header{padding:20px;background:#6d7fcc}#dismiss{width:20px;height:20px;position:absolute;cursor:pointer;top:5px;right:0;color:#000;z-index:300}[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OverlayComponent, selector: "loxia-overlay" }, { kind: "component", type: ProgressIndicatorComponent, selector: "loxia-progress-indicator" }, { kind: "component", type: RpeComponent, selector: "rpe-component", inputs: ["baseurl", "path"] }, { kind: "component", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: ["nietGeplandeActies"], outputs: ["focusEmitter", "keurAlleActiesGoed"] }, { kind: "component", type: RitdelenViewComponent, selector: "ritdelen-view", outputs: ["focusEmitter"] }, { kind: "component", type: ViewerControlsComponent, selector: "viewer-controls", inputs: ["paginationSize", "iaversieinfo", "treinpad", "goedgekeurd"] }, { kind: "component", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: ["nietGeplandeActies", "useClickArea"] }, { kind: "component", type: MessagesComponent, selector: "loxia-messages" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstviewerComponent, deps: [{ token: i2$1.Store }, { token: ViewerControlService }, { token: DebugService }, { token: PrintBewegingService }], target: i0.ɵɵFactoryTarget.Component }); }
3884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MstviewerComponent, selector: "mst-viewer", inputs: { iaversieinfo: "iaversieinfo", treinpad: "treinpad", ongeplandeActies: "ongeplandeActies", paginationSize: "paginationSize", baseurl: "baseurl", debug: "debug", viewer: "viewer", useClickArea: "useClickArea" }, outputs: { goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<loxia-messages></loxia-messages>\n<loxia-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\n\n<div style=\"position: relative\">\n <rpe-component [baseurl]=\"baseurl\" path=\"/mst/editor/editor.nocache.js\"></rpe-component>\n\n <svg-visualisatie [useClickArea]=\"useClickArea\" [nietGeplandeActies]=\"ongeplandeActies\"></svg-visualisatie>\n\n <nav [class.active]=\"(viewerControlsService.sideNavOpen$ | async) === false\" id=\"sidebar\">\n <div id=\"dismiss\">\n <em id=\"verbergSideNav\" class=\"fa fa-arrow-left\" (click)=\"viewerControlsService.toggleSideNavVisible()\">&times;</em>\n </div>\n <ritdelen-lijst *ngIf=\"!viewer\" (focusEmitter)=\"focusRitdeel($event)\" (keurAlleActiesGoed)=\"keurAlleActiesGoed()\"\n [nietGeplandeActies]=\"ongeplandeActies\"></ritdelen-lijst>\n <ritdelen-view *ngIf=\"viewer\" (focusEmitter)=\"focusRitdeel($event)\"></ritdelen-view>\n </nav>\n\n <viewer-controls [paginationSize]=\"paginationSize\"\n [treinpad]=\"treinpad\"\n [goedgekeurd]=\"goedgekeurd\"\n ></viewer-controls>\n\n</div>\n", styles: ["#sidebar{min-width:350px;max-width:475px;background:#fff;transition:all .3s;height:93vh;position:absolute;top:0;z-index:20}#sidebar.active{margin-left:-475px}#sidebar .sidebar-header{padding:20px;background:#6d7fcc}#dismiss{width:20px;height:20px;position:absolute;cursor:pointer;top:5px;right:0;color:#000;z-index:300}[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OverlayComponent, selector: "loxia-overlay" }, { kind: "component", type: ProgressIndicatorComponent, selector: "loxia-progress-indicator" }, { kind: "component", type: RpeComponent, selector: "rpe-component", inputs: ["baseurl", "path"] }, { kind: "component", type: RitdelenLijstComponent, selector: "ritdelen-lijst", inputs: ["nietGeplandeActies"], outputs: ["focusEmitter", "keurAlleActiesGoed"] }, { kind: "component", type: RitdelenViewComponent, selector: "ritdelen-view", outputs: ["focusEmitter"] }, { kind: "component", type: ViewerControlsComponent, selector: "viewer-controls", inputs: ["paginationSize", "treinpad", "goedgekeurd"] }, { kind: "component", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: ["nietGeplandeActies", "useClickArea"] }, { kind: "component", type: MessagesComponent, selector: "loxia-messages" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
3700
3885
  }
3701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstviewerComponent, decorators: [{
3886
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstviewerComponent, decorators: [{
3702
3887
  type: Component,
3703
- args: [{ selector: 'mst-viewer', template: "<loxia-messages></loxia-messages>\n<loxia-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\n\n<div style=\"position: relative\">\n <rpe-component [baseurl]=\"baseurl\" path=\"/mst/editor/editor.nocache.js\"></rpe-component>\n\n <svg-visualisatie [useClickArea]=\"useClickArea\" [nietGeplandeActies]=\"ongeplandeActies\"></svg-visualisatie>\n\n <nav [class.active]=\"(viewerControlsService.sideNavOpen$ | async) === false\" id=\"sidebar\">\n <div id=\"dismiss\">\n <em id=\"verbergSideNav\" class=\"fa fa-arrow-left\" (click)=\"viewerControlsService.toggleSideNavVisible()\">&times;</em>\n </div>\n <ritdelen-lijst *ngIf=\"!viewer\" (focusEmitter)=\"focusRitdeel($event)\" (keurAlleActiesGoed)=\"keurAlleActiesGoed()\"\n [nietGeplandeActies]=\"ongeplandeActies\"></ritdelen-lijst>\n <ritdelen-view *ngIf=\"viewer\" (focusEmitter)=\"focusRitdeel($event)\"></ritdelen-view>\n </nav>\n\n <viewer-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [treinpad]=\"treinpad\"\n [goedgekeurd]=\"goedgekeurd\"\n ></viewer-controls>\n\n</div>\n", styles: ["#sidebar{min-width:350px;max-width:475px;background:#fff;transition:all .3s;height:93vh;position:absolute;top:0;z-index:20}#sidebar.active{margin-left:-475px}#sidebar .sidebar-header{padding:20px;background:#6d7fcc}#dismiss{width:20px;height:20px;position:absolute;cursor:pointer;top:5px;right:0;color:#000;z-index:300}[hidden]{display:none}\n"] }]
3888
+ args: [{ selector: 'mst-viewer', template: "<loxia-messages></loxia-messages>\n<loxia-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\n\n<div style=\"position: relative\">\n <rpe-component [baseurl]=\"baseurl\" path=\"/mst/editor/editor.nocache.js\"></rpe-component>\n\n <svg-visualisatie [useClickArea]=\"useClickArea\" [nietGeplandeActies]=\"ongeplandeActies\"></svg-visualisatie>\n\n <nav [class.active]=\"(viewerControlsService.sideNavOpen$ | async) === false\" id=\"sidebar\">\n <div id=\"dismiss\">\n <em id=\"verbergSideNav\" class=\"fa fa-arrow-left\" (click)=\"viewerControlsService.toggleSideNavVisible()\">&times;</em>\n </div>\n <ritdelen-lijst *ngIf=\"!viewer\" (focusEmitter)=\"focusRitdeel($event)\" (keurAlleActiesGoed)=\"keurAlleActiesGoed()\"\n [nietGeplandeActies]=\"ongeplandeActies\"></ritdelen-lijst>\n <ritdelen-view *ngIf=\"viewer\" (focusEmitter)=\"focusRitdeel($event)\"></ritdelen-view>\n </nav>\n\n <viewer-controls [paginationSize]=\"paginationSize\"\n [treinpad]=\"treinpad\"\n [goedgekeurd]=\"goedgekeurd\"\n ></viewer-controls>\n\n</div>\n", styles: ["#sidebar{min-width:350px;max-width:475px;background:#fff;transition:all .3s;height:93vh;position:absolute;top:0;z-index:20}#sidebar.active{margin-left:-475px}#sidebar .sidebar-header{padding:20px;background:#6d7fcc}#dismiss{width:20px;height:20px;position:absolute;cursor:pointer;top:5px;right:0;color:#000;z-index:300}[hidden]{display:none}\n"] }]
3704
3889
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: ViewerControlService }, { type: DebugService }, { type: PrintBewegingService }], propDecorators: { iaversieinfo: [{
3705
- type: Input
3890
+ type: Input,
3891
+ args: [{ required: true }]
3706
3892
  }], treinpad: [{
3707
- type: Input
3893
+ type: Input,
3894
+ args: [{ required: true }]
3708
3895
  }], ongeplandeActies: [{
3709
- type: Input
3896
+ type: Input,
3897
+ args: [{ required: true }]
3710
3898
  }], paginationSize: [{
3711
3899
  type: Input
3712
3900
  }], baseurl: [{
@@ -3722,24 +3910,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
3722
3910
  }] } });
3723
3911
 
3724
3912
  let SignaleringsbeeldInfoResource = class SignaleringsbeeldInfoResource extends Resource {
3725
- constructor(restHandler, store) {
3913
+ constructor(restHandler, store, sbControllerService) {
3726
3914
  super(restHandler);
3915
+ this.restHandler = restHandler;
3727
3916
  this.store = store;
3917
+ this.sbControllerService = sbControllerService;
3728
3918
  this.subscriptions = new Subscription();
3729
- this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.$setUrl(baseUrl)));
3919
+ this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => {
3920
+ this.$setUrl(baseUrl);
3921
+ sbControllerService.configuration.basePath = baseUrl + '/mst';
3922
+ }));
3730
3923
  }
3731
3924
  ngOnDestroy() {
3732
3925
  this.subscriptions.unsubscribe();
3733
3926
  }
3734
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsbeeldInfoResource, deps: [{ token: i1$1.ResourceHandler }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
3735
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsbeeldInfoResource }); }
3927
+ laadSignaleringsbeeldInfo(versie, pplgs) {
3928
+ return this.sbControllerService.getSignaleringsbeelden(versie, pplgs);
3929
+ }
3930
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsbeeldInfoResource, deps: [{ token: i1$1.ResourceHandler }, { token: i2$1.Store }, { token: SbControllerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3931
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsbeeldInfoResource }); }
3736
3932
  };
3737
- __decorate([
3738
- ResourceAction({
3739
- path: '/',
3740
- method: ResourceRequestMethod.Post
3741
- })
3742
- ], SignaleringsbeeldInfoResource.prototype, "laadSignaleringsbeeldInfo", void 0);
3743
3933
  __decorate([
3744
3934
  ResourceAction({
3745
3935
  path: '/valideeriaversie'
@@ -3750,9 +3940,9 @@ SignaleringsbeeldInfoResource = __decorate([
3750
3940
  pathPrefix: '/mst/rest/signaleringsbeeldeninfo'
3751
3941
  })
3752
3942
  ], SignaleringsbeeldInfoResource);
3753
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsbeeldInfoResource, decorators: [{
3943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SignaleringsbeeldInfoResource, decorators: [{
3754
3944
  type: Injectable
3755
- }], ctorParameters: () => [{ type: i1$1.ResourceHandler }, { type: i2$1.Store }], propDecorators: { laadSignaleringsbeeldInfo: [], getBestaatIALevering: [] } });
3945
+ }], ctorParameters: () => [{ type: i1$1.ResourceHandler }, { type: i2$1.Store }, { type: SbControllerService }], propDecorators: { getBestaatIALevering: [] } });
3756
3946
  class SignaleringsbeeldInfoDto extends ResourceModel {
3757
3947
  constructor(data) {
3758
3948
  super();
@@ -3780,16 +3970,18 @@ class BaseRestService {
3780
3970
  this.httpClient = httpClient;
3781
3971
  this.store = store;
3782
3972
  this.subscriptions = new Subscription();
3973
+ this.baseUrl = '';
3974
+ this.iaVersie = '';
3783
3975
  this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.baseUrl = baseUrl));
3784
3976
  this.subscriptions.add(this.store.select('iaVersie').subscribe(iaVersie => this.iaVersie = iaVersie.versie));
3785
3977
  }
3786
3978
  ngOnDestroy() {
3787
3979
  this.subscriptions.unsubscribe();
3788
3980
  }
3789
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseRestService, deps: [{ token: i1.HttpClient }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
3790
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseRestService, providedIn: 'root' }); }
3981
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaseRestService, deps: [{ token: i1.HttpClient }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
3982
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaseRestService, providedIn: 'root' }); }
3791
3983
  }
3792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseRestService, decorators: [{
3984
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaseRestService, decorators: [{
3793
3985
  type: Injectable,
3794
3986
  args: [{
3795
3987
  providedIn: 'root'
@@ -3810,10 +4002,10 @@ class BewegingVerrijkerService extends BaseRestService {
3810
4002
  this.store.dispatch(ClearProgress());
3811
4003
  return [];
3812
4004
  }
3813
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingVerrijkerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3814
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingVerrijkerService, providedIn: 'root' }); }
4005
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingVerrijkerService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4006
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingVerrijkerService, providedIn: 'root' }); }
3815
4007
  }
3816
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingVerrijkerService, decorators: [{
4008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingVerrijkerService, decorators: [{
3817
4009
  type: Injectable,
3818
4010
  args: [{
3819
4011
  providedIn: 'root'
@@ -3955,13 +4147,13 @@ class Ritdeel {
3955
4147
  return retval;
3956
4148
  }
3957
4149
  getVrijebaanRijwegplan() {
3958
- return this.vrijebaanRijwegplanRijwegDwangCombi.rijwegplan;
4150
+ return this.vrijebaanRijwegplanRijwegDwangCombi?.rijwegplan;
3959
4151
  }
3960
4152
  getVrijebaanRijweg() {
3961
- return this.vrijebaanRijwegplanRijwegDwangCombi.rijweg;
4153
+ return this.vrijebaanRijwegplanRijwegDwangCombi?.rijweg;
3962
4154
  }
3963
4155
  getVrijebaanDwang() {
3964
- return this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
4156
+ return this.vrijebaanRijwegplanRijwegDwangCombi?.dwang;
3965
4157
  }
3966
4158
  getDwangNummer() {
3967
4159
  return this.rijwegplanRijwegDwangCombi.getDwangNummer();
@@ -3978,7 +4170,7 @@ class Ritdeel {
3978
4170
  isBinnenWindow() {
3979
4171
  return (this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR ||
3980
4172
  this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER)
3981
- && this.zichtbaarBuitenPaginatie === false;
4173
+ && !this.zichtbaarBuitenPaginatie;
3982
4174
  }
3983
4175
  isNietBeschikbaar() {
3984
4176
  return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM;
@@ -4001,10 +4193,10 @@ class Ritdeel {
4001
4193
  }
4002
4194
  }
4003
4195
  heeftVrijebaanInfo() {
4004
- return this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
4196
+ return !!this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
4005
4197
  }
4006
4198
  getVrijebaanPrlRoute() {
4007
- return this.vrijebaanRijwegplanRijwegDwangCombi.getRoute();
4199
+ return this.vrijebaanRijwegplanRijwegDwangCombi?.getRoute();
4008
4200
  }
4009
4201
  getTopologieElementen() {
4010
4202
  return this.topoElementen;
@@ -4036,10 +4228,10 @@ class Ritdeel {
4036
4228
  getZichtbaarheidBuitenPaginatie() {
4037
4229
  return this.zichtbaarBuitenPaginatie;
4038
4230
  }
4039
- bepaalTopologieElementen(signaleringsBeeldManagerService) {
4040
- const topoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getRoute());
4231
+ bepaalTopologieElementen(sbmService) {
4232
+ const topoElementen = sbmService.bepaalRouteElementen(this.getRoute());
4041
4233
  if (this.heeftVrijebaanInfo()) {
4042
- const vrijebaanTopoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getVrijebaanPrlRoute());
4234
+ const vrijebaanTopoElementen = sbmService.bepaalRouteElementen(this.getVrijebaanPrlRoute());
4043
4235
  topoElementen.push(...vrijebaanTopoElementen);
4044
4236
  }
4045
4237
  this.topoElementen = topoElementen;
@@ -4085,7 +4277,7 @@ class RitLezerService {
4085
4277
  ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));
4086
4278
  }
4087
4279
  extractVrijebaanDwangInfo(beweging, rijwegPlan, rijweg) {
4088
- let vrijebaanDwangInfo = null;
4280
+ let vrijebaanDwangInfo = undefined;
4089
4281
  let vervolgSpoor;
4090
4282
  if (beweging.naarSpoor.endsWith(SPOOR_NAAR_VRIJEBAAN_POSTFIX) ||
4091
4283
  beweging.naarSpoor.endsWith(SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX)) {
@@ -4099,9 +4291,9 @@ class RitLezerService {
4099
4291
  vrijebaanRijweg = vrijebaanRijwegen[0];
4100
4292
  vrijebaanDwang = vrijebaanRijweg.getDwangVoorDwangNummer(0);
4101
4293
  vervolgSpoor = vrijebaanRijwegplan.getVervolgSpoor(vrijebaanRijweg);
4294
+ vrijebaanDwangInfo =
4295
+ new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);
4102
4296
  }
4103
- vrijebaanDwangInfo =
4104
- new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);
4105
4297
  }
4106
4298
  }
4107
4299
  return { vrijebaanDwangInfo, vervolgSpoor };
@@ -4135,10 +4327,10 @@ class RitLezerService {
4135
4327
  isGewijzigd(beweging) {
4136
4328
  return beweging.wijzigStatus === 'Gewijzigd';
4137
4329
  }
4138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitLezerService, deps: [{ token: EditorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4139
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitLezerService }); }
4330
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitLezerService, deps: [{ token: EditorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4331
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitLezerService }); }
4140
4332
  }
4141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitLezerService, decorators: [{
4333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitLezerService, decorators: [{
4142
4334
  type: Injectable
4143
4335
  }], ctorParameters: () => [{ type: EditorService }, { type: MessagesService }] });
4144
4336
 
@@ -4154,7 +4346,7 @@ class BepaalOngeplandeActiesEffect {
4154
4346
  this.bepaalOngeplandeActies$ = createEffect(() => this.actions$.pipe(ofType(BepaalOngeplandeActies), withLatestFrom(this.store), map(([action, store]) => {
4155
4347
  const puicActieMap = new ArrayMultimap();
4156
4348
  const nietGevondenTakken = [];
4157
- const logMeldingDTOs = [];
4349
+ const logMeldingDTOs$ = [];
4158
4350
  const acties = store.ritDelen.flatMap(rd => rd.acties);
4159
4351
  action.ongeplandeActies.forEach(actie => {
4160
4352
  const alreadyAdded = acties.filter(a => a.id === actie.id).length > 0;
@@ -4170,11 +4362,11 @@ class BepaalOngeplandeActiesEffect {
4170
4362
  if (!spoortak && nietGevondenTakken.indexOf(takId) < 0) {
4171
4363
  nietGevondenTakken.push(takId);
4172
4364
  const melding = MeldingBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken);
4173
- logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));
4365
+ logMeldingDTOs$.push(this.loggingHelper.maakLogDTO(melding, actie));
4174
4366
  }
4175
4367
  else if (spoortak) {
4176
4368
  const melding = MeldingBuilder.actieHighlightError([actie.id]);
4177
- logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));
4369
+ logMeldingDTOs$.push(this.loggingHelper.maakLogDTO(melding, actie));
4178
4370
  this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));
4179
4371
  }
4180
4372
  }
@@ -4183,8 +4375,8 @@ class BepaalOngeplandeActiesEffect {
4183
4375
  if (nietGevondenTakken.length > 0) {
4184
4376
  this.messagesService.showMessage(MessageBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken));
4185
4377
  }
4186
- if (logMeldingDTOs.length > 0) {
4187
- this.mstLogResource.logMessages(logMeldingDTOs);
4378
+ if (logMeldingDTOs$.length > 0) {
4379
+ forkJoin(logMeldingDTOs$).pipe(tap(dtos => this.mstLogResource.logMessages(dtos))).subscribe();
4188
4380
  }
4189
4381
  this.store.dispatch(SetOngeplandeActies(puicActieMap));
4190
4382
  this.store.dispatch(SetOngeplandeActieSelectieIds(Array.from(puicActieMap.keys())));
@@ -4196,10 +4388,10 @@ class BepaalOngeplandeActiesEffect {
4196
4388
  puicMap.put(puic, ongeplandeActie);
4197
4389
  });
4198
4390
  }
4199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalOngeplandeActiesEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: MstLoggingResource }, { token: MessagesService }, { token: ActieHelper }, { token: LoggingHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
4200
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalOngeplandeActiesEffect }); }
4391
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalOngeplandeActiesEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: MstLoggingResource }, { token: MessagesService }, { token: ActieHelper }, { token: LoggingHelper }], target: i0.ɵɵFactoryTarget.Injectable }); }
4392
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalOngeplandeActiesEffect }); }
4201
4393
  }
4202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalOngeplandeActiesEffect, decorators: [{
4394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalOngeplandeActiesEffect, decorators: [{
4203
4395
  type: Injectable
4204
4396
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: MstLoggingResource }, { type: MessagesService }, { type: ActieHelper }, { type: LoggingHelper }] });
4205
4397
 
@@ -4208,10 +4400,10 @@ class DateService {
4208
4400
  getCurrentDate() {
4209
4401
  return new Date();
4210
4402
  }
4211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4212
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DateService, providedIn: 'root' }); }
4403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4404
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateService, providedIn: 'root' }); }
4213
4405
  }
4214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DateService, decorators: [{
4406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateService, decorators: [{
4215
4407
  type: Injectable,
4216
4408
  args: [{
4217
4409
  providedIn: 'root'
@@ -4265,10 +4457,10 @@ class BepaalSbInfosEffect {
4265
4457
  pplgs.push(pplg);
4266
4458
  }
4267
4459
  }
4268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalSbInfosEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsbeeldInfoResource }, { token: MessagesService }, { token: DateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4269
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalSbInfosEffect }); }
4460
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalSbInfosEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsbeeldInfoResource }, { token: MessagesService }, { token: DateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4461
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalSbInfosEffect }); }
4270
4462
  }
4271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BepaalSbInfosEffect, decorators: [{
4463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BepaalSbInfosEffect, decorators: [{
4272
4464
  type: Injectable
4273
4465
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsbeeldInfoResource }, { type: MessagesService }, { type: DateService }] });
4274
4466
 
@@ -4327,10 +4519,10 @@ class BewegingInvoegenEffect {
4327
4519
  });
4328
4520
  return combinaties;
4329
4521
  }
4330
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingInvoegenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4331
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingInvoegenEffect }); }
4522
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingInvoegenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4523
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingInvoegenEffect }); }
4332
4524
  }
4333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BewegingInvoegenEffect, decorators: [{
4525
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BewegingInvoegenEffect, decorators: [{
4334
4526
  type: Injectable
4335
4527
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: EditorService }] });
4336
4528
 
@@ -4359,10 +4551,10 @@ class DeleteOngeplandeActieEffect {
4359
4551
  }
4360
4552
  });
4361
4553
  }
4362
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DeleteOngeplandeActieEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
4363
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DeleteOngeplandeActieEffect }); }
4554
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteOngeplandeActieEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
4555
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteOngeplandeActieEffect }); }
4364
4556
  }
4365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DeleteOngeplandeActieEffect, decorators: [{
4557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteOngeplandeActieEffect, decorators: [{
4366
4558
  type: Injectable
4367
4559
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }] });
4368
4560
 
@@ -4377,7 +4569,7 @@ class FocusEffect {
4377
4569
  const dwangPuics = this.getPuics(topoElementen);
4378
4570
  if (ritdeel.isNietBeschikbaar()) {
4379
4571
  this.store.dispatch(SetOngeplandeActiesBepaald(false));
4380
- this.store.dispatch(navigeerVanaf(actie.paginationSize, actie.iaVersieInfo, ritdeel));
4572
+ this.store.dispatch(navigeerVanaf(actie.paginationSize, ritdeel));
4381
4573
  }
4382
4574
  return focusOpIds(dwangPuics);
4383
4575
  })));
@@ -4385,10 +4577,10 @@ class FocusEffect {
4385
4577
  getPuics(topoElementen) {
4386
4578
  return topoElementen.map(e => e.getPuic());
4387
4579
  }
4388
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FocusEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4389
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FocusEffect }); }
4580
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FocusEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4581
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FocusEffect }); }
4390
4582
  }
4391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FocusEffect, decorators: [{
4583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FocusEffect, decorators: [{
4392
4584
  type: Injectable
4393
4585
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }] });
4394
4586
 
@@ -4399,16 +4591,16 @@ class LaadRouteFilesEffect {
4399
4591
  this.ritLezer = ritLezer;
4400
4592
  this.editorService = editorService;
4401
4593
  this.messagesService = messagesService;
4402
- this.authActions$ = createEffect(() => this.actions$.pipe(ofType(SetSignaleringsbeeldInfoDtos), map(action => this.laadRouteFiles(action))), { dispatch: false });
4594
+ this.authActions$ = createEffect(() => this.actions$.pipe(ofType(SetSignaleringsbeeldInfoDtos), withLatestFrom(this.store), map(([action, storeState]) => this.laadRouteFiles(action, storeState.iaVersie.versie))), { dispatch: false });
4403
4595
  }
4404
- laadRouteFiles(actie) {
4596
+ laadRouteFiles(actie, iaVersie) {
4405
4597
  const isReady = this.editorService.isReady();
4406
4598
  isReady.then(() => {
4407
4599
  const pplgs = this.bepaalSbDtoPplgs(actie.dtos);
4408
- const promise = this.editorService.laadRouteFiles(actie.iaversieinfo.versie, pplgs);
4600
+ const promise = this.editorService.laadRouteFiles(iaVersie, pplgs);
4409
4601
  promise.then(() => {
4410
4602
  this.updateRitdelen(actie);
4411
- }, err => {
4603
+ }, (err) => {
4412
4604
  this.messagesService.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));
4413
4605
  });
4414
4606
  });
@@ -4419,7 +4611,7 @@ class LaadRouteFilesEffect {
4419
4611
  if (ritdelen.length === 0) {
4420
4612
  ritdelen = this.ritLezer.parseRit(actie.treinpad, actie.ritGewijzigdToegestaan);
4421
4613
  }
4422
- this.store.dispatch(setRitDelen(ritdelen, actie.paginationSize, actie.iaversieinfo));
4614
+ this.store.dispatch(setRitDelen(ritdelen, actie.paginationSize));
4423
4615
  this.store.dispatch(setEditable(actie.treinpad.ritStatus !== 'Definitief'));
4424
4616
  });
4425
4617
  }, 0);
@@ -4427,7 +4619,7 @@ class LaadRouteFilesEffect {
4427
4619
  bepaalSbDtoPplgs(dtos) {
4428
4620
  const pplgs = [];
4429
4621
  dtos.forEach(dto => {
4430
- dto.pplgs.forEach(pplg => {
4622
+ dto.pplgs?.forEach(pplg => {
4431
4623
  if (!pplgs.includes(pplg)) {
4432
4624
  pplgs.push(pplg);
4433
4625
  }
@@ -4435,10 +4627,10 @@ class LaadRouteFilesEffect {
4435
4627
  });
4436
4628
  return pplgs;
4437
4629
  }
4438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadRouteFilesEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: RitLezerService }, { token: EditorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4439
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadRouteFilesEffect }); }
4630
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadRouteFilesEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: RitLezerService }, { token: EditorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4631
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadRouteFilesEffect }); }
4440
4632
  }
4441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadRouteFilesEffect, decorators: [{
4633
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadRouteFilesEffect, decorators: [{
4442
4634
  type: Injectable
4443
4635
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: RitLezerService }, { type: EditorService }, { type: MessagesService }] });
4444
4636
 
@@ -4457,10 +4649,10 @@ class ConnectorService extends BaseRestService {
4457
4649
  this.store.dispatch(ClearProgress());
4458
4650
  return [];
4459
4651
  }
4460
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4461
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorService, providedIn: 'root' }); }
4652
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4653
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorService, providedIn: 'root' }); }
4462
4654
  }
4463
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConnectorService, decorators: [{
4655
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConnectorService, decorators: [{
4464
4656
  type: Injectable,
4465
4657
  args: [{
4466
4658
  providedIn: 'root'
@@ -4468,14 +4660,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
4468
4660
  }] });
4469
4661
 
4470
4662
  class LaadSignaleringsbeeldenEffect {
4471
- constructor(actions$, store, signaleringsBeeldManagerService, editorService, sbiResource, connectorService, messagesSerivce) {
4663
+ constructor(actions$, store, signaleringsBeeldManagerService, editorService, sbiResource, connectorService, messagesService) {
4472
4664
  this.actions$ = actions$;
4473
4665
  this.store = store;
4474
4666
  this.signaleringsBeeldManagerService = signaleringsBeeldManagerService;
4475
4667
  this.editorService = editorService;
4476
4668
  this.sbiResource = sbiResource;
4477
4669
  this.connectorService = connectorService;
4478
- this.messagesSerivce = messagesSerivce;
4670
+ this.messagesService = messagesService;
4479
4671
  this.SVG_PIXEL_RUIMTE = 30;
4480
4672
  this.verwerkRitdelen$ = createEffect(() => this.actions$.pipe(ofType(setRitDelen, navigeer, navigeerVanaf), withLatestFrom(this.store), map(([actie, storeState]) => {
4481
4673
  this.store.dispatch(SetOngeplandeActiesBepaald(false));
@@ -4489,14 +4681,14 @@ class LaadSignaleringsbeeldenEffect {
4489
4681
  }).pipe(switchMap(this.getOtherRand.bind(this)), switchMap(this.loadRouteFilesAndSignaleringsbeeldInfo.bind(this)), switchMap(this.loadSignaleringsbeelden.bind(this)), map(this.processSvgsAndUpdateRitdelen.bind(this))))), { dispatch: false });
4490
4682
  }
4491
4683
  handleSignaleringsbeeldInfo({ actie, storeState }) {
4492
- return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(actie.pplgs, storeState.iaVersie)).pipe(take(1), tap((dtos) => this.processResponse({ dtos, storeState, actie })), catchError((err) => {
4493
- this.messagesSerivce.showMessage(MessageBuilder.nietGevondenSBI(err));
4684
+ return this.sbiResource.laadSignaleringsbeeldInfo(storeState.iaVersie.versie, actie.pplgs).pipe(take(1), tap((dtos) => this.processResponse({ dtos, storeState, actie })), catchError((err) => {
4685
+ this.messagesService.showMessage(MessageBuilder.nietGevondenSBI(err));
4494
4686
  return throwError(() => err);
4495
4687
  }));
4496
4688
  }
4497
4689
  processResponse({ dtos, storeState, actie }) {
4498
4690
  if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {
4499
- this.messagesSerivce.showMessage(MessageBuilder.meerDan12BladenGevonden(dtos.length));
4691
+ this.messagesService.showMessage(MessageBuilder.meerDan12BladenGevonden(dtos.length));
4500
4692
  }
4501
4693
  this.store.dispatch(SetSignaleringsbeeldInfoDtos(dtos, storeState.iaVersie, actie.rit, actie.paginationSize, actie.ritGewijzigdToegestaan));
4502
4694
  this.store.dispatch(SetVisibleSignaleringsbeeldInfoDtos(dtos));
@@ -4506,14 +4698,14 @@ class LaadSignaleringsbeeldenEffect {
4506
4698
  }
4507
4699
  loadRouteFilesAndSignaleringsbeeldInfo({ otherPplg, rand, storeState }) {
4508
4700
  this.editorService.laadRouteFiles(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]);
4509
- return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie)).pipe(map(dtos => ({ dtos, storeState })));
4701
+ return this.sbiResource.laadSignaleringsbeeldInfo(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]).pipe(map(dtos => ({ dtos, storeState })));
4510
4702
  }
4511
4703
  loadSignaleringsbeelden({ dtos, storeState }) {
4512
- return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, storeState, dtos })));
4704
+ return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, ritDelen: storeState.ritDelen, dtos })));
4513
4705
  }
4514
- processSvgsAndUpdateRitdelen({ svgDataUrls, storeState, dtos }) {
4706
+ processSvgsAndUpdateRitdelen({ svgDataUrls, ritDelen, dtos }) {
4515
4707
  this.verwerkSvgs(svgDataUrls);
4516
- const nieuweRitdelen = this.updateRitdelen(storeState.ritDelen, dtos);
4708
+ const nieuweRitdelen = this.updateRitdelen(ritDelen, dtos);
4517
4709
  this.store.dispatch(UpdateVisibleSignaleringsbeeldInfoDtos(dtos));
4518
4710
  this.store.dispatch(updateRitDelen(nieuweRitdelen));
4519
4711
  }
@@ -4526,11 +4718,11 @@ class LaadSignaleringsbeeldenEffect {
4526
4718
  const visibleRitPplgs = visibleRitDelen.map(r => r.getPplg()).filter(this.distinct);
4527
4719
  const visibleDtos = this.bepaalZichtbareDtos(visibleRitPplgs, storeDtos);
4528
4720
  const loadingDtos = this.bepaalToLoadDtos(visibleDtos, ritDelen, visibleRitDelen, visibleRitPplgs, storeState);
4529
- this.editorService.laadSignaleringsbeelden(actie.iaversieinfo.versie, loadingDtos).pipe(tap(svgDataUrls => {
4721
+ this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, loadingDtos).pipe(tap(svgDataUrls => {
4530
4722
  this.verwerkSvgs(svgDataUrls);
4531
4723
  this.updateState(ritDelen, visibleDtos, storeState, visibleRitPplgs, loadingDtos, isInit, storeDtos);
4532
4724
  }), catchError(err => {
4533
- this.messagesSerivce.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));
4725
+ this.messagesService.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));
4534
4726
  throw err;
4535
4727
  })).subscribe();
4536
4728
  }
@@ -4545,10 +4737,6 @@ class LaadSignaleringsbeeldenEffect {
4545
4737
  this.store.dispatch(updateRitDelen(nieuweRitdelen));
4546
4738
  }, 0);
4547
4739
  }
4548
- createSignaleringsbeeldInfoQueryDto(pplgs, iainfo) {
4549
- const datum = iainfo.ingangsDatum && !isNaN(iainfo.ingangsDatum.getTime()) ? iainfo.ingangsDatum.toISOString() : undefined;
4550
- return { pplgs, versie: iainfo.versie, ingangsDatum: datum };
4551
- }
4552
4740
  verwerkSvgs(svgDataUrls) {
4553
4741
  this.store.dispatch(SetSvgInfos(this.bepaalSvgInfos(svgDataUrls)));
4554
4742
  }
@@ -4575,7 +4763,7 @@ class LaadSignaleringsbeeldenEffect {
4575
4763
  bepaalZichtbareDtos(visibleRitPplgs, dtos) {
4576
4764
  const visibleDtos = [];
4577
4765
  visibleRitPplgs.forEach(pplg => {
4578
- dtos.filter(dto => dto.pplgs.includes(pplg)).forEach(dto => {
4766
+ dtos.filter(dto => dto.pplgs?.includes(pplg)).forEach(dto => {
4579
4767
  if (!visibleDtos.includes(dto)) {
4580
4768
  visibleDtos.push(dto);
4581
4769
  }
@@ -4585,13 +4773,13 @@ class LaadSignaleringsbeeldenEffect {
4585
4773
  dtos.filter(d => !visibleDtos.includes(d)).forEach(d => d.metVisualisatie = false);
4586
4774
  return visibleDtos;
4587
4775
  }
4588
- distinct(value, index, self) {
4589
- return self.indexOf(value) === index;
4776
+ distinct(value, index, values) {
4777
+ return values.indexOf(value) === index;
4590
4778
  }
4591
4779
  addPrevNonVisibleDto(firstIdx, ritdelen, loadingDtos, visibleRitPplgs, allDtos) {
4592
4780
  if (firstIdx >= 0) {
4593
4781
  const pplg = ritdelen[firstIdx].getPplg();
4594
- const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));
4782
+ const ritdeelDtos = allDtos.filter(dto => dto.pplgs?.includes(pplg)).filter(dto => !loadingDtos.includes(dto));
4595
4783
  if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {
4596
4784
  ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {
4597
4785
  d.metVisualisatie = false;
@@ -4606,7 +4794,7 @@ class LaadSignaleringsbeeldenEffect {
4606
4794
  addNextNonVisibleDto(lastIdx, ritdelen, loadingDtos, visibleRitPplgs, allDtos) {
4607
4795
  if (lastIdx <= ritdelen.length - 1) {
4608
4796
  const pplg = ritdelen[lastIdx].getPplg();
4609
- const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));
4797
+ const ritdeelDtos = allDtos.filter(dto => dto.pplgs?.includes(pplg)).filter(dto => !loadingDtos.includes(dto));
4610
4798
  if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {
4611
4799
  ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {
4612
4800
  d.metVisualisatie = false;
@@ -4675,7 +4863,7 @@ class LaadSignaleringsbeeldenEffect {
4675
4863
  }
4676
4864
  }
4677
4865
  }
4678
- this.updateZichtbaarheidAangrezendeRitdelen(min, max, ritdelen, visibleDtos);
4866
+ this.updateZichtbaarheidAangrenzendeRitdelen(min, max, ritdelen, visibleDtos);
4679
4867
  return this.updateZichtbaarheidBuitenWindow(ritdelen, visibleDtos);
4680
4868
  }
4681
4869
  updateZichtbaarheidBuitenWindow(nieuweRitdelen, visibleDtos) {
@@ -4691,7 +4879,7 @@ class LaadSignaleringsbeeldenEffect {
4691
4879
  }
4692
4880
  return nieuweRitdelen;
4693
4881
  }
4694
- updateZichtbaarheidAangrezendeRitdelen(min, max, nieuweRitdelen, visibleDtos) {
4882
+ updateZichtbaarheidAangrenzendeRitdelen(min, max, nieuweRitdelen, visibleDtos) {
4695
4883
  let i = min - 1;
4696
4884
  while (i >= 0) {
4697
4885
  i = this.updateZichtbaarHeid(i, 0, visibleDtos, nieuweRitdelen) - 1;
@@ -4727,9 +4915,11 @@ class LaadSignaleringsbeeldenEffect {
4727
4915
  }
4728
4916
  bevatGevisualiseerdePplg(visibleDtos, pplg) {
4729
4917
  for (const dto of visibleDtos) {
4730
- for (const dtopplg of dto.pplgs) {
4731
- if (dtopplg === pplg) {
4732
- return true;
4918
+ if (dto.pplgs) {
4919
+ for (const dtopplg of dto.pplgs) {
4920
+ if (dtopplg === pplg) {
4921
+ return true;
4922
+ }
4733
4923
  }
4734
4924
  }
4735
4925
  }
@@ -4779,7 +4969,7 @@ class LaadSignaleringsbeeldenEffect {
4779
4969
  pplgsWindow.push(itemPplg);
4780
4970
  }
4781
4971
  const pplgDtos = [];
4782
- dtos.filter(dto => dto.pplgs.includes(itemPplg)).forEach(dto => {
4972
+ dtos.filter(dto => dto.pplgs?.includes(itemPplg)).forEach(dto => {
4783
4973
  if (!pplgDtos.includes(dto)) {
4784
4974
  pplgDtos.push(dto);
4785
4975
  }
@@ -4804,10 +4994,10 @@ class LaadSignaleringsbeeldenEffect {
4804
4994
  }
4805
4995
  return -1;
4806
4996
  }
4807
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadSignaleringsbeeldenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }, { token: SignaleringsbeeldInfoResource }, { token: ConnectorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4808
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadSignaleringsbeeldenEffect }); }
4997
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadSignaleringsbeeldenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }, { token: SignaleringsbeeldInfoResource }, { token: ConnectorService }, { token: MessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4998
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadSignaleringsbeeldenEffect }); }
4809
4999
  }
4810
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadSignaleringsbeeldenEffect, decorators: [{
5000
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LaadSignaleringsbeeldenEffect, decorators: [{
4811
5001
  type: Injectable
4812
5002
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: EditorService }, { type: SignaleringsbeeldInfoResource }, { type: ConnectorService }, { type: MessagesService }] });
4813
5003
 
@@ -4818,19 +5008,19 @@ class RitGoedkeurenEffect {
4818
5008
  this.bewegingVerrijker = bewegingVerrijker;
4819
5009
  this.keurAllesGoed$ = createEffect(() => this.actions$.pipe(ofType(KeurAlleActiesGoed), withLatestFrom(this.store), switchMap(([action, _store]) => from(this.bewegingVerrijker.getBewegingen(action.bewegingen, action.ongeplandeActies))), map((bewegingen) => UpdateRit(bewegingen))));
4820
5010
  }
4821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitGoedkeurenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: BewegingVerrijkerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4822
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitGoedkeurenEffect }); }
5011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitGoedkeurenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: BewegingVerrijkerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5012
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitGoedkeurenEffect }); }
4823
5013
  }
4824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitGoedkeurenEffect, decorators: [{
5014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitGoedkeurenEffect, decorators: [{
4825
5015
  type: Injectable
4826
5016
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: BewegingVerrijkerService }] });
4827
5017
 
4828
5018
  class RitdelenEffect {
4829
- constructor(actions$, store, sbmService, rijwegPlanEditorService) {
5019
+ constructor(actions$, store, sbmService, editorService) {
4830
5020
  this.actions$ = actions$;
4831
5021
  this.store = store;
4832
5022
  this.sbmService = sbmService;
4833
- this.rijwegPlanEditorService = rijwegPlanEditorService;
5023
+ this.editorService = editorService;
4834
5024
  this.updateRitDelen$ = createEffect(() => this.actions$.pipe(ofType(updateRitDelen), withLatestFrom(this.store), map(([actie, _storeState]) => {
4835
5025
  const nieuweRitDelen = actie.ritDelen.map(ritDeel => ritDeel.isZichtbaar() ?
4836
5026
  ritDeel.copyMetAlternatieveRoutes(this.sbmService.bepaalAlternativeRoutes(ritDeel.getRijweg())) : ritDeel);
@@ -4848,25 +5038,25 @@ class RitdelenEffect {
4848
5038
  return setRitdelenAfterUpdate(ritDelen);
4849
5039
  })));
4850
5040
  this.ritdeelInvoegen$ = createEffect(() => this.actions$.pipe(ofType(ritdeelInvoegen), withLatestFrom(this.store), map(([actie, storeState]) => {
4851
- const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute, this.rijwegPlanEditorService, this.sbmService);
5041
+ const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute);
4852
5042
  return setRitdelenAfterUpdate(ritDelen);
4853
5043
  })));
4854
5044
  }
4855
- ritdeelInvoegenFunc(ritDelen, nieuweRoute, rijwegPlanEditorService, sbmService) {
5045
+ ritdeelInvoegenFunc(ritDelen, nieuweRoute) {
4856
5046
  const origineelRitdeel = nieuweRoute.beginSeinOpRitdeel.ritdeel;
4857
5047
  const beginSein = nieuweRoute.beginSeinOpRitdeel.sein;
4858
- const rijwegplan = rijwegPlanEditorService.getRijwegplan(beginSein.getPPLG());
5048
+ const rijwegplan = this.editorService.getRijwegplan(beginSein.getPPLG());
4859
5049
  const dwangen = JsJavaUtil.listToArray(rijwegplan.getOnderliggendeDwangenTotEnVanSein(origineelRitdeel.getDwang(), beginSein));
4860
5050
  const isSamengesteldeRoute = dwangen[0] && dwangen[1];
4861
5051
  let newRitdeel1 = origineelRitdeel;
4862
5052
  if (isSamengesteldeRoute) {
4863
- newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen);
5053
+ newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, ritDelen);
4864
5054
  }
4865
- if (nieuweRoute.combinatieVoorEindsein.isVrijeBaanRijweg()) {
4866
- this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService);
5055
+ if (nieuweRoute.combinatieVoorEindsein?.isVrijeBaanRijweg()) {
5056
+ this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute);
4867
5057
  }
4868
5058
  else {
4869
- this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen);
5059
+ this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, ritDelen);
4870
5060
  }
4871
5061
  if (isSamengesteldeRoute) {
4872
5062
  ritDelen.splice(ritDelen.indexOf(origineelRitdeel), 1);
@@ -4881,74 +5071,102 @@ class RitdelenEffect {
4881
5071
  }
4882
5072
  }
4883
5073
  }
4884
- verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen) {
5074
+ verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, ritDelen) {
4885
5075
  // dwangen in 2 nieuwe ritdelen verwerken voor de knip
4886
5076
  const nieuweRijweg1 = rijwegplan.getRijwegVoorSeinen(dwangen[0].getRoute().getBeginSein(), dwangen[0].getRoute().getEindSein());
4887
5077
  const dwangInfo1 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg1, dwangen[0]);
4888
- const newRitdeel1 = new Ritdeel(dwangInfo1, [], null, null, null, []);
5078
+ const newRitdeel1 = new Ritdeel(dwangInfo1, [], undefined, undefined, undefined, []);
4889
5079
  // remove vrijbaan info uit ritdeel
4890
- newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = null;
4891
- newRitdeel1.vervolgSpoor = null;
4892
- newRitdeel1.bepaalTopologieElementen(sbmService);
5080
+ newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = undefined;
5081
+ newRitdeel1.vervolgSpoor = undefined;
5082
+ newRitdeel1.bepaalTopologieElementen(this.sbmService);
4893
5083
  this.insertRitdeel(ritDelen, origineelRitdeel, newRitdeel1);
4894
5084
  const nieuweRijweg2 = rijwegplan.getRijwegVoorSeinen(dwangen[1].getRoute().getBeginSein(), dwangen[1].getRoute().getEindSein());
4895
5085
  const dwangInfo2 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg2, dwangen[1]);
4896
- const newRitdeel2 = new Ritdeel(dwangInfo2, [], null, null, null, []);
4897
- newRitdeel2.bepaalTopologieElementen(sbmService);
5086
+ const newRitdeel2 = new Ritdeel(dwangInfo2, [], undefined, undefined, undefined, []);
5087
+ newRitdeel2.bepaalTopologieElementen(this.sbmService);
4898
5088
  this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel2);
4899
5089
  return newRitdeel1;
4900
5090
  }
4901
- extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService) {
5091
+ extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute) {
4902
5092
  newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = nieuweRoute.combinatieVoorEindsein;
4903
- const vbrwp = nieuweRoute.combinatieVoorEindsein.rijwegplan;
4904
- newRitdeel1.vervolgSpoor = vbrwp.getVervolgSpoor(nieuweRoute.combinatieVoorEindsein.rijweg);
4905
- newRitdeel1.bepaalTopologieElementen(sbmService);
5093
+ const vbrwp = nieuweRoute.combinatieVoorEindsein?.rijwegplan;
5094
+ newRitdeel1.vervolgSpoor = nieuweRoute.combinatieVoorEindsein ?
5095
+ vbrwp.getVervolgSpoor(nieuweRoute.combinatieVoorEindsein?.rijweg) : undefined;
5096
+ newRitdeel1.bepaalTopologieElementen(this.sbmService);
4906
5097
  }
4907
- maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen) {
5098
+ maakNieuwRitdeel(newRitdeel1, nieuweRoute, ritDelen) {
4908
5099
  let newRitdeel = this.createRitdeel(nieuweRoute);
4909
- const altRoutes = sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());
5100
+ const altRoutes = this.sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());
4910
5101
  newRitdeel = newRitdeel.copyMetAlternatieveRoutes(altRoutes);
4911
- newRitdeel.bepaalTopologieElementen(sbmService);
5102
+ newRitdeel.bepaalTopologieElementen(this.sbmService);
4912
5103
  this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel);
4913
5104
  }
4914
5105
  createRitdeel(nieuweRoute) {
4915
- return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], null, null, null, []);
5106
+ return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], undefined, undefined, undefined, []);
4916
5107
  }
4917
5108
  insertRitdeel(ritdelen, naRitdeelPositie, newRitdeel) {
4918
5109
  const idx = ritdelen.indexOf(naRitdeelPositie);
4919
5110
  ritdelen.splice(idx + 1, 0, newRitdeel);
4920
5111
  }
4921
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4922
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenEffect }); }
5112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: EditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5113
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenEffect }); }
4923
5114
  }
4924
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitdelenEffect, decorators: [{
5115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RitdelenEffect, decorators: [{
4925
5116
  type: Injectable
4926
5117
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: EditorService }] });
4927
5118
 
4928
5119
  class SvgViewEffect {
4929
- constructor(actions$, store, signaleringsBeeldManagerService, sbSvgUtilService) {
5120
+ constructor(actions$, store, sbSvgUtilService, svgService) {
4930
5121
  this.actions$ = actions$;
4931
5122
  this.store = store;
4932
- this.signaleringsBeeldManagerService = signaleringsBeeldManagerService;
4933
5123
  this.sbSvgUtilService = sbSvgUtilService;
4934
- this.updateSvgView$ = createEffect(() => this.actions$.pipe(ofType(SetSvgInfos), map((_actie) => {
5124
+ this.svgService = svgService;
5125
+ this.updateSvgView$ = createEffect(() => this.actions$.pipe(ofType(SetSvgInfos), withLatestFrom(this.store), switchMap(([_actie, storeState]) => this.svgService.getSvgInfo(storeState.iaVersie.versie, storeState.signaleringsbeeldInfoDtos)), map((svgInfo) => {
4935
5126
  setTimeout(() => {
5127
+ const svgTopology = svgInfo.topology;
5128
+ if (!svgTopology) {
5129
+ return;
5130
+ }
4936
5131
  this.sbSvgUtilService.addSvgDefs();
4937
5132
  const wisselEnStoringskaderPuicMap = new Map();
4938
- this.signaleringsBeeldManagerService.getAlleSoortenWissels()
4939
- .forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.getPuic(), wissel.getStoringSymboolPuic()));
5133
+ svgTopology.alleSoortenWissels
5134
+ ?.forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.puic, wissel.storingSymboolPuic));
4940
5135
  this.sbSvgUtilService.zetClassOpStoringSymbolenMetMap(wisselEnStoringskaderPuicMap);
4941
- this.sbSvgUtilService.zetClassOpSpoornummers(this.signaleringsBeeldManagerService.getPuicsVoorSpoornummers());
5136
+ this.sbSvgUtilService.zetClassOpSpoornummers(svgTopology.puicVoorSpoorNummers ?? []);
4942
5137
  this.sbSvgUtilService.maakOngewensteElementenOnzichtbaar();
4943
5138
  this.sbSvgUtilService.zetClassOpLangeText();
4944
- this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(this.signaleringsBeeldManagerService.getSeinen());
4945
- this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(this.signaleringsBeeldManagerService.getSignaleringsElementen());
4946
- const puicsVoorRanden = this.signaleringsBeeldManagerService.getPuicsVoorRanden();
5139
+ const seinen = svgTopology.seinen?.map(this.toSbSein) ?? [];
5140
+ this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(seinen);
5141
+ this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(svgTopology.signaleringsElementen
5142
+ ?.map(signaleringsElement => this.toSbSignaleringsElement(signaleringsElement)) ?? []);
5143
+ const puicsVoorRanden = svgTopology.puicVoorRanden ?? [];
4947
5144
  this.zetClassOpRanden(puicsVoorRanden);
4948
- this.sbSvgUtilService.zetClassOpRijrichtingen(this.signaleringsBeeldManagerService.getSeinen());
5145
+ this.sbSvgUtilService.zetClassOpRijrichtingen(seinen);
4949
5146
  this.store.dispatch(SetConnectorenClickableIds(puicsVoorRanden));
5147
+ this.store.dispatch(svgUpdateFinished());
4950
5148
  }, 0);
4951
5149
  })), { dispatch: false });
5150
+ this.updateSelectieInfos$ = createEffect(() => this.actions$.pipe(ofType(svgUpdateFinished), switchMap(() => combineLatest([
5151
+ this.store.select('ritSelectieIds'),
5152
+ this.store.select('actieOpRitSelectieIds'),
5153
+ this.store.select('ongeplandeActieSelectieIds'),
5154
+ this.store.select('gebrokenRitSelectieIds'),
5155
+ this.store.select('alternatievenSelectieIds'),
5156
+ this.store.select('beginSeinSelectieIds'),
5157
+ this.store.select('eindSeinSelectieIds')
5158
+ ]).pipe(map(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenRit, alternatieven, begin, eind]) => {
5159
+ return setSelectieInfos([
5160
+ new SelectieInfo(rit, 'rit'),
5161
+ new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'),
5162
+ new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'),
5163
+ new SelectieInfo(gebrokenRit, 'gebrokenrit'),
5164
+ new SelectieInfo(alternatieven, 'alternatieveRoute'),
5165
+ new SelectieInfo(begin, 'zigzagVan'),
5166
+ new SelectieInfo(eind, 'zigzagNaar')
5167
+ ]);
5168
+ })))));
5169
+ this.store.select('baseUrl').pipe(filter(baseUrl => !!baseUrl), take(1), tap(baseUrl => svgService.configuration.basePath = baseUrl + '/mst')).subscribe();
4952
5170
  }
4953
5171
  zetClassOpRanden(puics) {
4954
5172
  puics.forEach(element => {
@@ -4956,12 +5174,35 @@ class SvgViewEffect {
4956
5174
  rand?.classList.add('connector');
4957
5175
  });
4958
5176
  }
4959
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgViewEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: SignaleringsBeeldManagerService }, { token: i4.SignaleringsbeeldSvgUtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4960
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgViewEffect }); }
5177
+ toSbSein(sein) {
5178
+ return {
5179
+ getPuic: () => sein.puic,
5180
+ isBediend: () => sein.bediend,
5181
+ getType: () => sein.type
5182
+ };
5183
+ }
5184
+ toSbSignaleringsElement(signaleringsElement) {
5185
+ return {
5186
+ getPuic: () => signaleringsElement.puic
5187
+ };
5188
+ }
5189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgViewEffect, deps: [{ token: i1$2.Actions }, { token: i2$1.Store }, { token: i3.SignaleringsbeeldSvgUtilityService }, { token: SvgControllerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5190
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgViewEffect }); }
4961
5191
  }
4962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgViewEffect, decorators: [{
5192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgViewEffect, decorators: [{
4963
5193
  type: Injectable
4964
- }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: i4.SignaleringsbeeldSvgUtilityService }] });
5194
+ }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: i3.SignaleringsbeeldSvgUtilityService }, { type: SvgControllerService }] });
5195
+
5196
+ class ProgressIndicator {
5197
+ constructor(lowerText, upperText, iconClass) {
5198
+ this.lowerText = '';
5199
+ this.upperText = '';
5200
+ this.iconClass = '';
5201
+ this.lowerText = lowerText ?? this.lowerText;
5202
+ this.upperText = upperText ?? this.upperText;
5203
+ this.iconClass = iconClass ?? this.iconClass;
5204
+ }
5205
+ }
4965
5206
 
4966
5207
  class NieuweRoute {
4967
5208
  constructor(beginSeinOpRitdeel, combinatieVoorEindsein) {
@@ -4969,7 +5210,7 @@ class NieuweRoute {
4969
5210
  this.combinatieVoorEindsein = combinatieVoorEindsein;
4970
5211
  }
4971
5212
  isValid() {
4972
- return this.combinatieVoorEindsein !== null;
5213
+ return !!this.combinatieVoorEindsein;
4973
5214
  }
4974
5215
  }
4975
5216
 
@@ -5035,10 +5276,11 @@ function addRitdeelActieFunc(ritDelen, { ritDeel, actie }) {
5035
5276
  const onIdsActionHandler = (action) => on(action, (_, { ids }) => ids);
5036
5277
  const createIdsReducer = (action) => createReducer([], onIdsActionHandler(action));
5037
5278
  const editableReducer = createReducer(true, on(setEditable, (_, { editable }) => editable));
5038
- const progressIndicatorReducer = createReducer(undefined, on(ShowProgress, () => ({ progressIndicator: {} })), on(ClearProgress, () => undefined));
5279
+ const progressIndicatorReducer = createReducer({}, on(ShowProgress, () => ({ progressIndicator: new ProgressIndicator() })), on(ClearProgress, () => ({})));
5039
5280
  const svgInfoReducer = createReducer([], on(SetSvgInfos, (_, { svgInfos }) => svgInfos));
5040
5281
  const debugReducer = createReducer(false, on(SetDebug, (_, { debug }) => debug));
5041
5282
  const ritSelectieIdsReducer = createIdsReducer(SetRitSelectieIds);
5283
+ const selectieInfosReducer = createReducer([], on(setSelectieInfos, (_, { selectieInfos }) => selectieInfos));
5042
5284
  const actieOpRitReducer = createReducer(new ArrayMultimap(), on(SetGeplandeActies, (_, { geplandeActiesMap }) => geplandeActiesMap), on(AddGeplandeActie, (geplandeActies, { actie, puics }) => {
5043
5285
  geplandeActies.putAll(actie, puics);
5044
5286
  return new ArrayMultimap(geplandeActies);
@@ -5061,12 +5303,10 @@ const ongeplandeActieReducer = createReducer(new ArrayMultimap(), on(SetOngeplan
5061
5303
  ongeplandeActie.puics.forEach(puic => ongeplandeActies.delete(puic, ongeplandeActie));
5062
5304
  return new ArrayMultimap(ongeplandeActies);
5063
5305
  }));
5064
- const ongeplandeActieSelectieIdsReducer = createReducer([],
5065
- // on(MstActions.SetOngeplandeActieSelectieIds, (_, { ids }) => ids),
5066
- onIdsActionHandler(SetOngeplandeActieSelectieIds), on(AddOngeplandeActie, (ids, { ongeplandeActie }) => {
5306
+ const ongeplandeActieSelectieIdsReducer = createReducer([], onIdsActionHandler(SetOngeplandeActieSelectieIds), on(AddOngeplandeActie, (ids, { ongeplandeActie }) => {
5067
5307
  ongeplandeActie.puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));
5068
5308
  return [...ids];
5069
- }), on(DeleteOngeplandeActieSelectieId, (ids, { id }) => [].concat(ids.includes(id) ? ids.filter(_id => _id !== id) : ids)));
5309
+ }), on(DeleteOngeplandeActieSelectieId, (ids, { id }) => ids.includes(id) ? ids.filter(_id => _id !== id) : ids));
5070
5310
  const gebrokenRitSelectieIdsReducer = createIdsReducer(SetGebrokenRitSelectieIds);
5071
5311
  const alternatievenSelectieIdsReducer = createIdsReducer(SetAlternatievenSelectieIds);
5072
5312
  const beginSeinSelectieIdsReducer = createIdsReducer(SetBeginSeinSelectieIds);
@@ -5075,16 +5315,15 @@ const alternatievenClickableIdsReducer = createIdsReducer(SetAlternatievenClicka
5075
5315
  const eindSeinenClickableIdsReducer = createIdsReducer(SetEindSeinenClickableIds);
5076
5316
  const connectorClickableIdsReducer = createIdsReducer(SetConnectorenClickableIds);
5077
5317
  const beginSeinRightClickableIdsReducer = createIdsReducer(SetBeginSeinRightClickableIds);
5078
- const nieuweRouteReducer = createReducer(new NieuweRoute(null, null), on(SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)), on(SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)), on(ResetNieuweRoute, () => new NieuweRoute(null, null)));
5318
+ const nieuweRouteReducer = createReducer(undefined, on(SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, undefined)), on(SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => nieuweRoute ? new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein) : undefined), on(ResetNieuweRoute, () => undefined));
5079
5319
  const signaleringsbeeldInfoDtosReducer = createReducer([], on(SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
5080
5320
  const visibleSbInfoDtosReducer = createReducer([], on(SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
5081
- const iaVersieReducer = createReducer({}, on(SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
5321
+ const iaVersieReducer = createReducer({ versie: 'unknown', ingangsDatum: new Date() }, on(SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
5082
5322
  const algemeneRitInfoDtoReducer = createReducer({}, on(SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
5083
5323
  const ongeplandeActiesBepaaldReducer = createReducer(false, on(SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));
5084
- const nieuweBewegingReducer = createReducer({}, on(UpdateRit, (_, { bewegingen }) => bewegingen));
5085
- const baseUrlReducer = createReducer(undefined, on(SetBaseUrl, (_, { baseUrl }) => baseUrl));
5086
- const focusIdsReducer = createReducer({}, on(focusOpIds, (_, { puics }) => puics));
5087
- const selectedRitdeelIdReducer = createReducer({}, on(SetSelectedRitdeel, (_, { id }) => id));
5324
+ const nieuweBewegingReducer = createReducer([], on(UpdateRit, (_, { bewegingen }) => bewegingen));
5325
+ const baseUrlReducer = createReducer('', on(SetBaseUrl, (_, { baseUrl }) => baseUrl));
5326
+ const focusIdsReducer = createReducer([], on(focusOpIds, (_, { puics }) => puics));
5088
5327
  const storeReducers = {
5089
5328
  ritDelen: ritdelenReducer,
5090
5329
  ritSelectieIds: ritSelectieIdsReducer,
@@ -5113,9 +5352,10 @@ const storeReducers = {
5113
5352
  nieuweBewegingen: nieuweBewegingReducer,
5114
5353
  baseUrl: baseUrlReducer,
5115
5354
  focusIds: focusIdsReducer,
5116
- selectedRitdeelId: selectedRitdeelIdReducer
5355
+ selectieInfos: selectieInfosReducer
5117
5356
  };
5118
5357
 
5358
+ // @ts-nocheck
5119
5359
  class ZoneUtil {
5120
5360
  constructor(ngZone) {
5121
5361
  this.ngZone = ngZone;
@@ -5139,10 +5379,10 @@ class ZoneUtil {
5139
5379
  proxy(target) {
5140
5380
  return new Proxy(target, this.zoneHandler);
5141
5381
  }
5142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ZoneUtil, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
5143
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ZoneUtil }); }
5382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ZoneUtil, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
5383
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ZoneUtil }); }
5144
5384
  }
5145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ZoneUtil, decorators: [{
5385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ZoneUtil, decorators: [{
5146
5386
  type: Injectable
5147
5387
  }], ctorParameters: () => [{ type: i0.NgZone }] });
5148
5388
 
@@ -5178,12 +5418,13 @@ class MstViewerModule {
5178
5418
  constructor(service, zoneUtil) {
5179
5419
  this.service = service;
5180
5420
  // maak de EditorService toegankelijk voor GWT code
5421
+ // @ts-ignore
5181
5422
  window['rpe'] = {
5182
5423
  EditorService: zoneUtil.proxy(service)
5183
5424
  };
5184
5425
  }
5185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstViewerModule, deps: [{ token: EditorService }, { token: ZoneUtil }], target: i0.ɵɵFactoryTarget.NgModule }); }
5186
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: MstViewerModule, declarations: [MessageComponent,
5426
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstViewerModule, deps: [{ token: EditorService }, { token: ZoneUtil }], target: i0.ɵɵFactoryTarget.NgModule }); }
5427
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: MstViewerModule, declarations: [MessageComponent,
5187
5428
  MstviewerComponent,
5188
5429
  OverlayComponent,
5189
5430
  ProgressIndicatorComponent,
@@ -5196,7 +5437,7 @@ class MstViewerModule {
5196
5437
  MessagesComponent], imports: [CommonModule,
5197
5438
  ImxViewerModule,
5198
5439
  RijwegenModule, i1$1.ResourceModule, i2$1.StoreRootModule, i1$2.EffectsRootModule], exports: [MstviewerComponent] }); }
5199
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstViewerModule, providers: [
5440
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstViewerModule, providers: [
5200
5441
  ZoneUtil,
5201
5442
  SignaleringsbeeldInfoResource,
5202
5443
  MstLoggingResource,
@@ -5209,7 +5450,7 @@ class MstViewerModule {
5209
5450
  BewegingVerrijkerService
5210
5451
  ], imports: [imports] }); }
5211
5452
  }
5212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MstViewerModule, decorators: [{
5453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MstViewerModule, decorators: [{
5213
5454
  type: NgModule,
5214
5455
  args: [{
5215
5456
  imports,