@loxia/mst-viewer 8.1.3-202511241327 → 8.1.3-202511261647

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 (72) hide show
  1. package/esm2022/generated/openapi/api/api.mjs +5 -2
  2. package/esm2022/generated/openapi/api/svgController.service.mjs +155 -0
  3. package/esm2022/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
  4. package/esm2022/generated/openapi/model/kilometrering.mjs +13 -0
  5. package/esm2022/generated/openapi/model/models.mjs +10 -1
  6. package/esm2022/generated/openapi/model/sein.mjs +10 -0
  7. package/esm2022/generated/openapi/model/signaleringsElement.mjs +13 -0
  8. package/esm2022/generated/openapi/model/spoornummer.mjs +13 -0
  9. package/esm2022/generated/openapi/model/spoortakFragment.mjs +2 -0
  10. package/esm2022/generated/openapi/model/svgInfoDto.mjs +2 -0
  11. package/esm2022/generated/openapi/model/svgTopology.mjs +2 -0
  12. package/esm2022/generated/openapi/model/topologyElement.mjs +2 -0
  13. package/esm2022/generated/openapi/model/wissel.mjs +2 -0
  14. package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +4 -3
  15. package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +2 -2
  16. package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +23 -2
  17. package/esm2022/lib/services/viewer-control.service.mjs +2 -24
  18. package/esm2022/lib/state/actions/actions.mjs +8 -2
  19. package/esm2022/lib/state/effect/svg-view.effect.mjs +59 -17
  20. package/esm2022/lib/state/mst-editor-state.mjs +3 -1
  21. package/esm2022/lib/util/logging-helper.mjs +13 -5
  22. package/esm2022/src/generated/openapi/api/api.mjs +5 -2
  23. package/esm2022/src/generated/openapi/api/svgController.service.mjs +155 -0
  24. package/esm2022/src/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
  25. package/esm2022/src/generated/openapi/model/kilometrering.mjs +13 -0
  26. package/esm2022/src/generated/openapi/model/models.mjs +10 -1
  27. package/esm2022/src/generated/openapi/model/sein.mjs +10 -0
  28. package/esm2022/src/generated/openapi/model/signaleringsElement.mjs +13 -0
  29. package/esm2022/src/generated/openapi/model/spoornummer.mjs +13 -0
  30. package/esm2022/src/generated/openapi/model/spoortakFragment.mjs +2 -0
  31. package/esm2022/src/generated/openapi/model/svgInfoDto.mjs +2 -0
  32. package/esm2022/src/generated/openapi/model/svgTopology.mjs +2 -0
  33. package/esm2022/src/generated/openapi/model/topologyElement.mjs +2 -0
  34. package/esm2022/src/generated/openapi/model/wissel.mjs +2 -0
  35. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +194 -2
  36. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +1 -1
  37. package/fesm2022/loxia-mst-viewer.mjs +295 -46
  38. package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
  39. package/generated/openapi/api/api.d.ts +4 -1
  40. package/generated/openapi/api/svgController.service.d.ts +40 -0
  41. package/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
  42. package/generated/openapi/model/kilometrering.d.ts +15 -0
  43. package/generated/openapi/model/models.d.ts +9 -0
  44. package/generated/openapi/model/sein.d.ts +46 -0
  45. package/generated/openapi/model/signaleringsElement.d.ts +16 -0
  46. package/generated/openapi/model/spoornummer.d.ts +17 -0
  47. package/generated/openapi/model/spoortakFragment.d.ts +26 -0
  48. package/generated/openapi/model/svgInfoDto.d.ts +16 -0
  49. package/generated/openapi/model/svgTopology.d.ts +21 -0
  50. package/generated/openapi/model/topologyElement.d.ts +18 -0
  51. package/generated/openapi/model/wissel.d.ts +31 -0
  52. package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +1 -0
  53. package/lib/resources/signaleringsbeeldinfo.resource.d.ts +11 -1
  54. package/lib/services/viewer-control.service.d.ts +0 -3
  55. package/lib/state/actions/actions.d.ts +10 -2
  56. package/lib/state/effect/svg-view.effect.d.ts +12 -6
  57. package/lib/state/mst-editor-state.d.ts +3 -1
  58. package/lib/util/logging-helper.d.ts +2 -0
  59. package/package.json +1 -1
  60. package/src/generated/openapi/api/api.d.ts +4 -1
  61. package/src/generated/openapi/api/svgController.service.d.ts +40 -0
  62. package/src/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
  63. package/src/generated/openapi/model/kilometrering.d.ts +15 -0
  64. package/src/generated/openapi/model/models.d.ts +9 -0
  65. package/src/generated/openapi/model/sein.d.ts +46 -0
  66. package/src/generated/openapi/model/signaleringsElement.d.ts +16 -0
  67. package/src/generated/openapi/model/spoornummer.d.ts +17 -0
  68. package/src/generated/openapi/model/spoortakFragment.d.ts +26 -0
  69. package/src/generated/openapi/model/svgInfoDto.d.ts +16 -0
  70. package/src/generated/openapi/model/svgTopology.d.ts +21 -0
  71. package/src/generated/openapi/model/topologyElement.d.ts +18 -0
  72. package/src/generated/openapi/model/wissel.d.ts +31 -0
@@ -3,8 +3,8 @@ import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { EventEmitter, Output, Input, Component, Injectable, ChangeDetectionStrategy, ViewChild, InjectionToken, Optional, Inject, SkipSelf, NgModule, 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';
@@ -17,7 +17,7 @@ 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, ResourceParams } 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) {
@@ -246,6 +246,8 @@ const LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO = '[mst] laadEnVerwerkSignaleringsb
246
246
  const FOCUS_OP_RITDEEL = '[mst] focusOpRitdeel';
247
247
  const FOCUS_OP_IDS = '[mst] focusOpIds';
248
248
  const BEPAAL_SB_INFOS = '[mst] bepaalSbInfos';
249
+ const TRIGGER_SELECTIE_UPDATE = '[mst] TriggerSelectieUpdate';
250
+ const SET_SELECTIE_INFOS = '[mst] SetSelectieInfos';
249
251
  const setEditable = createAction(SET_EDITABLE, (editable) => ({ editable }));
250
252
  const SetRitSelectieIds = createAction(SET_RIT_SELECTIE_IDS, (ids) => ({ ids }));
251
253
  const SetGeplandeActies = createAction(SET_GEPLANDE_ACTIES, (geplandeActiesMap) => ({ geplandeActiesMap }));
@@ -289,6 +291,8 @@ const navigeerBuitenRit = createAction(NAVIGEER_BUITEN_RIT, (randPuic) => ({ ran
289
291
  const focusOpRitdeel = createAction(FOCUS_OP_RITDEEL, (ritdeel, paginationSize, iaVersieInfo) => ({ ritdeel, paginationSize, iaVersieInfo }));
290
292
  const focusOpIds = createAction(FOCUS_OP_IDS, (puics) => ({ puics }));
291
293
  const bepaalSbInfos = createAction(BEPAAL_SB_INFOS, (rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize) => ({ rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize }));
294
+ const svgUpdateFinished = createAction(TRIGGER_SELECTIE_UPDATE);
295
+ const setSelectieInfos = createAction(SET_SELECTIE_INFOS, (selectieInfos) => ({ selectieInfos }));
292
296
  // do not export return value
293
297
  const mstActions = union({
294
298
  setEditable,
@@ -326,7 +330,9 @@ const mstActions = union({
326
330
  ClearProgress,
327
331
  BewegingInvoegen,
328
332
  KeurAlleActiesGoed,
329
- UpdateRit
333
+ UpdateRit,
334
+ svgUpdateFinished,
335
+ setSelectieInfos
330
336
  });
331
337
 
332
338
  /**
@@ -678,32 +684,11 @@ class ViewerControlService {
678
684
  constructor(store, bewegingUtils) {
679
685
  this.store = store;
680
686
  this.bewegingUtils = bewegingUtils;
681
- this.subscriptions = new Subscription();
682
687
  this.valideRit$ = new BehaviorSubject(false);
683
688
  this.printing$ = new BehaviorSubject(false);
684
689
  this.sideNavOpen = false;
685
690
  this.sideNavOpen$ = new BehaviorSubject(this.sideNavOpen);
686
- this.selectieInfos = [];
687
691
  this.origineelTreinPad = {};
688
- this.subscriptions.add(combineLatest([
689
- store.select('ritSelectieIds'),
690
- store.select('actieOpRitSelectieIds'),
691
- store.select('ongeplandeActieSelectieIds'),
692
- store.select('gebrokenRitSelectieIds'),
693
- store.select('alternatievenSelectieIds'),
694
- store.select('beginSeinSelectieIds'),
695
- store.select('eindSeinSelectieIds')
696
- ]).subscribe(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenrit, alternatieven, begin, eind]) => {
697
- const selectie = [];
698
- selectie.push(new SelectieInfo(rit, 'rit'));
699
- selectie.push(new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'));
700
- selectie.push(new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'));
701
- selectie.push(new SelectieInfo(gebrokenrit, 'gebrokenrit'));
702
- selectie.push(new SelectieInfo(alternatieven, 'alternatieveRoute'));
703
- selectie.push(new SelectieInfo(begin, 'zigzagVan'));
704
- selectie.push(new SelectieInfo(eind, 'zigzagNaar'));
705
- this.selectieInfos = selectie;
706
- }));
707
692
  }
708
693
  toggleSideNavVisible() {
709
694
  this.sideNavOpen = !this.sideNavOpen;
@@ -2289,7 +2274,189 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
2289
2274
  type: Optional
2290
2275
  }] }] });
2291
2276
 
2292
- const APIS = [AppConfigControllerService, BewegingControllerService, Class0BuildPropertiesService, ConnectorControllerService, LogControllerService, P21ControllerService, SbControllerService];
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.7", 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.7", ngImport: i0, type: SvgControllerService, providedIn: 'root' }); }
2408
+ }
2409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgControllerService, decorators: [{
2410
+ type: Injectable,
2411
+ args: [{
2412
+ providedIn: 'root'
2413
+ }]
2414
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
2415
+ type: Optional
2416
+ }, {
2417
+ type: Inject,
2418
+ args: [BASE_PATH]
2419
+ }] }, { type: Configuration, decorators: [{
2420
+ type: Optional
2421
+ }] }] });
2422
+
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
+ */
2436
+
2437
+ /**
2438
+ * MST
2439
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
2440
+ *
2441
+ * The version of the OpenAPI document: 1
2442
+ *
2443
+ *
2444
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2445
+ * https://openapi-generator.tech
2446
+ * Do not edit the class manually.
2447
+ */
2448
+
2449
+ /**
2450
+ * MST
2451
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
2452
+ *
2453
+ * The version of the OpenAPI document: 1
2454
+ *
2455
+ *
2456
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2457
+ * https://openapi-generator.tech
2458
+ * Do not edit the class manually.
2459
+ */
2293
2460
 
2294
2461
  /**
2295
2462
  * MST
@@ -2303,6 +2470,16 @@ const APIS = [AppConfigControllerService, BewegingControllerService, Class0Build
2303
2470
  * Do not edit the class manually.
2304
2471
  */
2305
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
+
2306
2483
  /**
2307
2484
  * MST
2308
2485
  * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
@@ -2402,9 +2579,8 @@ class LoggingHelper {
2402
2579
  maakLogDTO(melding, actie) {
2403
2580
  return combineLatest([
2404
2581
  this.store.select('algemeneRitInfoDto'),
2405
- this.store.select('iaVersie'),
2406
- this.store.select('visibleSbInfoDtos')
2407
- ]).pipe(take(1), map(([algemeneRitInfoDto, iaVersie, visibleSbInfoDtos]) => {
2582
+ this.store.select('iaVersie')
2583
+ ]).pipe(take(1), map(([algemeneRitInfoDto, iaVersie]) => {
2408
2584
  let actieDto = null;
2409
2585
  if (actie) {
2410
2586
  actieDto = {
@@ -2427,10 +2603,19 @@ class LoggingHelper {
2427
2603
  meldingMessage: melding.meldingMessage,
2428
2604
  actieDto,
2429
2605
  algemeneRitInfoDto,
2430
- sbinfoDtos: visibleSbInfoDtos
2606
+ sbinfoDtos: this.getSbInfoDtos()
2431
2607
  };
2432
2608
  }));
2433
2609
  }
2610
+ getSbInfoDtos() {
2611
+ const sbInfoDtos = [];
2612
+ this.store.select('visibleSbInfoDtos').pipe(take(1)).subscribe(dtos => {
2613
+ dtos.forEach(d => {
2614
+ sbInfoDtos.push(d);
2615
+ });
2616
+ });
2617
+ return sbInfoDtos;
2618
+ }
2434
2619
  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 }); }
2435
2620
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoggingHelper }); }
2436
2621
  }
@@ -3244,7 +3429,7 @@ class ViewerControlsComponent {
3244
3429
  }
3245
3430
  }
3246
3431
  showGoedkeuren() {
3247
- return this.editable && this.viewerControlsService.selectieInfos.length !== 0;
3432
+ return this.editable;
3248
3433
  }
3249
3434
  goedkeurenClick() {
3250
3435
  this.store.select('ritDelen').pipe(filter(ritdelen => !!ritdelen), tap(ritDelen => {
@@ -3383,6 +3568,7 @@ class SvgVisualisatieComponent {
3383
3568
  this.svgInfos$ = this.store.select('svgInfos');
3384
3569
  this.popoverInfos = [];
3385
3570
  this.clickableIds = [];
3571
+ this.selectieInfos$ = this.store.select('selectieInfos');
3386
3572
  this.rightClickableIds = [];
3387
3573
  this.contextMenuActions = [];
3388
3574
  this.contextMenuStyle = { display: 'none' };
@@ -3614,11 +3800,11 @@ class SvgVisualisatieComponent {
3614
3800
  return topoElementen.map(e => e.getPuic());
3615
3801
  }
3616
3802
  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 }); }
3617
- 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" }] }); }
3803
+ 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]=\"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" }] }); }
3618
3804
  }
3619
3805
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
3620
3806
  type: Component,
3621
- 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"] }]
3622
3808
  }], ctorParameters: () => [{ type: i2$1.Store }, { type: ViewerControlService }, { type: ActieHelper }, { type: SignaleringsBeeldManagerService }, { type: EditorService }], propDecorators: { nietGeplandeActies: [{
3623
3809
  type: Input
3624
3810
  }], useClickArea: [{
@@ -3757,6 +3943,27 @@ SignaleringsbeeldInfoResource = __decorate([
3757
3943
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SignaleringsbeeldInfoResource, decorators: [{
3758
3944
  type: Injectable
3759
3945
  }], ctorParameters: () => [{ type: i1$1.ResourceHandler }, { type: i2$1.Store }, { type: SbControllerService }], propDecorators: { getBestaatIALevering: [] } });
3946
+ class SignaleringsbeeldInfoDto extends ResourceModel {
3947
+ constructor(data) {
3948
+ super();
3949
+ this.$resource = SignaleringsbeeldInfoResource;
3950
+ this.$setData(data);
3951
+ }
3952
+ toJSON() {
3953
+ return { bladnaam: this.bladNaam, pplgs: this.pplgs, metVisualisatie: this.metVisualisatie };
3954
+ }
3955
+ toString() {
3956
+ return `${this.bladNaam}, ${this.pplgs}, ${this.metVisualisatie}`;
3957
+ }
3958
+ $setData(data) {
3959
+ if (data) {
3960
+ this.bladNaam = data.bladNaam;
3961
+ this.pplgs = data.pplgs;
3962
+ this.metVisualisatie = data.metVisualisatie;
3963
+ }
3964
+ return this;
3965
+ }
3966
+ }
3760
3967
 
3761
3968
  class BaseRestService {
3762
3969
  constructor(httpClient, store) {
@@ -4910,29 +5117,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
4910
5117
  }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: EditorService }] });
4911
5118
 
4912
5119
  class SvgViewEffect {
4913
- constructor(actions$, store, signaleringsBeeldManagerService, sbSvgUtilService) {
5120
+ constructor(actions$, store, sbSvgUtilService, svgService) {
4914
5121
  this.actions$ = actions$;
4915
5122
  this.store = store;
4916
- this.signaleringsBeeldManagerService = signaleringsBeeldManagerService;
4917
5123
  this.sbSvgUtilService = sbSvgUtilService;
4918
- 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) => {
4919
5126
  setTimeout(() => {
5127
+ console.log('SVG INFO RECEIVED, updating SVG view');
5128
+ const svgTopology = svgInfo.topology;
5129
+ if (!svgTopology) {
5130
+ return;
5131
+ }
4920
5132
  this.sbSvgUtilService.addSvgDefs();
4921
5133
  const wisselEnStoringskaderPuicMap = new Map();
4922
- this.signaleringsBeeldManagerService.getAlleSoortenWissels()
4923
- .forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.getPuic(), wissel.getStoringSymboolPuic()));
5134
+ svgTopology.alleSoortenWissels
5135
+ ?.forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.puic, wissel.storingSymboolPuic));
4924
5136
  this.sbSvgUtilService.zetClassOpStoringSymbolenMetMap(wisselEnStoringskaderPuicMap);
4925
- this.sbSvgUtilService.zetClassOpSpoornummers(this.signaleringsBeeldManagerService.getPuicsVoorSpoornummers());
5137
+ this.sbSvgUtilService.zetClassOpSpoornummers(svgTopology.puicVoorSpoorNummers ?? []);
4926
5138
  this.sbSvgUtilService.maakOngewensteElementenOnzichtbaar();
4927
5139
  this.sbSvgUtilService.zetClassOpLangeText();
4928
- this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(this.signaleringsBeeldManagerService.getSeinen());
4929
- this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(this.signaleringsBeeldManagerService.getSignaleringsElementen());
4930
- const puicsVoorRanden = this.signaleringsBeeldManagerService.getPuicsVoorRanden();
5140
+ const seinen = svgTopology.seinen?.map(this.toSbSein) ?? [];
5141
+ this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(seinen);
5142
+ this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(svgTopology.signaleringsElementen
5143
+ ?.map(signaleringsElement => this.toSbSignaleringsElement(signaleringsElement)) ?? []);
5144
+ const puicsVoorRanden = svgTopology.puicVoorRanden ?? [];
4931
5145
  this.zetClassOpRanden(puicsVoorRanden);
4932
- this.sbSvgUtilService.zetClassOpRijrichtingen(this.signaleringsBeeldManagerService.getSeinen());
5146
+ this.sbSvgUtilService.zetClassOpRijrichtingen(seinen);
4933
5147
  this.store.dispatch(SetConnectorenClickableIds(puicsVoorRanden));
5148
+ this.store.dispatch(svgUpdateFinished());
4934
5149
  }, 0);
4935
5150
  })), { dispatch: false });
5151
+ this.updateSelectieInfos$ = createEffect(() => this.actions$.pipe(ofType(svgUpdateFinished), switchMap(() => combineLatest([
5152
+ this.store.select('ritSelectieIds'),
5153
+ this.store.select('actieOpRitSelectieIds'),
5154
+ this.store.select('ongeplandeActieSelectieIds'),
5155
+ this.store.select('gebrokenRitSelectieIds'),
5156
+ this.store.select('alternatievenSelectieIds'),
5157
+ this.store.select('beginSeinSelectieIds'),
5158
+ this.store.select('eindSeinSelectieIds')
5159
+ ]).pipe(map(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenRit, alternatieven, begin, eind]) => {
5160
+ return setSelectieInfos([
5161
+ new SelectieInfo(rit, 'rit'),
5162
+ new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'),
5163
+ new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'),
5164
+ new SelectieInfo(gebrokenRit, 'gebrokenrit'),
5165
+ new SelectieInfo(alternatieven, 'alternatieveRoute'),
5166
+ new SelectieInfo(begin, 'zigzagVan'),
5167
+ new SelectieInfo(eind, 'zigzagNaar')
5168
+ ]);
5169
+ })))));
5170
+ this.store.select('baseUrl').pipe(filter(baseUrl => !!baseUrl), take(1), tap(baseUrl => svgService.configuration.basePath = baseUrl + '/mst')).subscribe();
4936
5171
  }
4937
5172
  zetClassOpRanden(puics) {
4938
5173
  puics.forEach(element => {
@@ -4940,12 +5175,24 @@ class SvgViewEffect {
4940
5175
  rand?.classList.add('connector');
4941
5176
  });
4942
5177
  }
4943
- 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 }); }
5178
+ toSbSein(sein) {
5179
+ return {
5180
+ getPuic: () => sein.puic,
5181
+ isBediend: () => sein.bediend,
5182
+ getType: () => sein.type
5183
+ };
5184
+ }
5185
+ toSbSignaleringsElement(signaleringsElement) {
5186
+ return {
5187
+ getPuic: () => signaleringsElement.puic
5188
+ };
5189
+ }
5190
+ 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: i3.SignaleringsbeeldSvgUtilityService }, { token: SvgControllerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4944
5191
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgViewEffect }); }
4945
5192
  }
4946
5193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgViewEffect, decorators: [{
4947
5194
  type: Injectable
4948
- }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: SignaleringsBeeldManagerService }, { type: i4.SignaleringsbeeldSvgUtilityService }] });
5195
+ }], ctorParameters: () => [{ type: i1$2.Actions }, { type: i2$1.Store }, { type: i3.SignaleringsbeeldSvgUtilityService }, { type: SvgControllerService }] });
4949
5196
 
4950
5197
  class ProgressIndicator {
4951
5198
  constructor(lowerText, upperText, iconClass) {
@@ -5034,6 +5281,7 @@ const progressIndicatorReducer = createReducer({}, on(ShowProgress, () => ({ pro
5034
5281
  const svgInfoReducer = createReducer([], on(SetSvgInfos, (_, { svgInfos }) => svgInfos));
5035
5282
  const debugReducer = createReducer(false, on(SetDebug, (_, { debug }) => debug));
5036
5283
  const ritSelectieIdsReducer = createIdsReducer(SetRitSelectieIds);
5284
+ const selectieInfosReducer = createReducer([], on(setSelectieInfos, (_, { selectieInfos }) => selectieInfos));
5037
5285
  const actieOpRitReducer = createReducer(new ArrayMultimap(), on(SetGeplandeActies, (_, { geplandeActiesMap }) => geplandeActiesMap), on(AddGeplandeActie, (geplandeActies, { actie, puics }) => {
5038
5286
  geplandeActies.putAll(actie, puics);
5039
5287
  return new ArrayMultimap(geplandeActies);
@@ -5105,6 +5353,7 @@ const storeReducers = {
5105
5353
  nieuweBewegingen: nieuweBewegingReducer,
5106
5354
  baseUrl: baseUrlReducer,
5107
5355
  focusIds: focusIdsReducer,
5356
+ selectieInfos: selectieInfosReducer
5108
5357
  };
5109
5358
 
5110
5359
  // @ts-nocheck
@@ -5253,5 +5502,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
5253
5502
  * Generated bundle index. Do not edit.
5254
5503
  */
5255
5504
 
5256
- export { MeldingEvent, MstViewerModule, MstviewerComponent, STORE_CONFIG, SignaleringsbeeldInfoResource };
5505
+ export { MeldingEvent, MstViewerModule, MstviewerComponent, STORE_CONFIG, SignaleringsbeeldInfoDto, SignaleringsbeeldInfoResource };
5257
5506
  //# sourceMappingURL=loxia-mst-viewer.mjs.map