@loxia/mst-viewer 8.1.3-202511051656 → 8.1.3-202511060853
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loxia-mst-viewer.mjs","sources":["../../../projects/mst-viewer/src/lib/atomic-components/message/message.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/severity.enum.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/message.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/message.component.html","../../../projects/mst-viewer/src/lib/atomic-components/services/messages.service.ts","../../../projects/mst-viewer/src/lib/atomic-components/messages/messages.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/messages/messages.component.html","../../../projects/mst-viewer/src/lib/atomic-components/overlay/overlay.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/overlay/overlay.component.html","../../../projects/mst-viewer/src/lib/atomic-components/progress-indicator/progress-indicator.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/progress-indicator/progress-indicator.component.html","../../../projects/mst-viewer/src/generated.version.ts","../../../projects/mst-viewer/src/lib/state/actions/actions.ts","../../../projects/mst-viewer/src/lib/state/actions/ritdelen.actions.ts","../../../projects/mst-viewer/src/lib/resources/mstlogging.resource.ts","../../../projects/mst-viewer/src/lib/util/utils.ts","../../../projects/mst-viewer/src/lib/util/multi-map.ts","../../../projects/mst-viewer/src/lib/services/signalerings-beeld-manager.service.ts","../../../projects/mst-viewer/src/lib/services/editor.service.ts","../../../projects/mst-viewer/src/lib/services/beweging-utils.service.ts","../../../projects/mst-viewer/src/lib/services/viewer-control.service.ts","../../../projects/mst-viewer/src/lib/services/debug.service.ts","../../../projects/mst-viewer/src/lib/services/print-beweging.service.ts","../../../projects/mst-viewer/src/lib/components/rpe/rpe.component.ts","../../../projects/mst-viewer/src/lib/components/rpe/rpe.component.html","../../../projects/mst-viewer/src/lib/model/ongeplande-actie.ts","../../../projects/mst-viewer/src/lib/model/km-range.ts","../../../projects/mst-viewer/src/lib/model/wissel-kant-code.ts","../../../projects/mst-viewer/src/lib/model/melding-event.ts","../../../projects/mst-viewer/src/lib/util/melding-builder.ts","../../../projects/mst-viewer/src/lib/util/message-builder.ts","../../../projects/mst-viewer/src/lib/util/logging-helper.ts","../../../projects/mst-viewer/src/lib/util/actie-helper.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-lijst/ritdelen-lijst.component.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-lijst/ritdelen-lijst.component.html","../../../projects/mst-viewer/src/lib/components/ritdelen-view/ritdelen-view.component.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-view/ritdelen-view.component.html","../../../projects/mst-viewer/src/lib/components/carousel-controls/carousel-controls.component.ts","../../../projects/mst-viewer/src/lib/components/carousel-controls/carousel-controls.component.html","../../../projects/mst-viewer/src/lib/components/viewer-controls/viewer-controls.component.ts","../../../projects/mst-viewer/src/lib/components/viewer-controls/viewer-controls.component.html","../../../projects/mst-viewer/src/lib/model/alternatief-rit-deel.ts","../../../projects/mst-viewer/src/lib/model/sein-op-ritdeel.ts","../../../projects/mst-viewer/src/lib/util/actie-popover-bepaler.ts","../../../projects/mst-viewer/src/lib/components/svg-visualisatie/svg-visualisatie.component.ts","../../../projects/mst-viewer/src/lib/components/svg-visualisatie/svg-visualisatie.component.html","../../../projects/mst-viewer/src/lib/components/mstviewer/mstviewer.component.ts","../../../projects/mst-viewer/src/lib/components/mstviewer/mstviewer.component.html","../../../projects/mst-viewer/src/lib/resources/signaleringsbeeldinfo.resource.ts","../../../projects/mst-viewer/src/lib/services/base-rest.service.ts","../../../projects/mst-viewer/src/lib/services/beweging-verrijker.service.ts","../../../projects/mst-viewer/src/lib/model/rijwegplan-rijweg-dwang-combinatie.ts","../../../projects/mst-viewer/src/lib/model/ritdeel.ts","../../../projects/mst-viewer/src/lib/services/rit-lezer.service.ts","../../../projects/mst-viewer/src/lib/state/effect/bepaal-ongeplande-acties.effect.ts","../../../projects/mst-viewer/src/lib/util/date.service.ts","../../../projects/mst-viewer/src/lib/state/effect/bepaal-sb-infos.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/beweging-invoegen.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/delete-ongeplande-actie.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/focus-effect.ts","../../../projects/mst-viewer/src/lib/state/effect/laad-route-files.effect.ts","../../../projects/mst-viewer/src/lib/services/connector.service.ts","../../../projects/mst-viewer/src/lib/state/effect/laad-signaleringsbeelden.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/rit-goedkeuren.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/ritdelen.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/svg-view.effect.ts","../../../projects/mst-viewer/src/lib/model/nieuwe-route.ts","../../../projects/mst-viewer/src/lib/state/reducer/rit-delen.reducer.ts","../../../projects/mst-viewer/src/lib/state/mst-editor-state.ts","../../../projects/mst-viewer/src/lib/util/zone-util.ts","../../../projects/mst-viewer/src/lib/mst-viewer.module.ts","../../../projects/mst-viewer/src/lib/optimo.ts","../../../projects/mst-viewer/src/public-api.ts","../../../projects/mst-viewer/src/loxia-mst-viewer.ts"],"sourcesContent":["import { Severity } from './severity.enum';\n\nexport class Message {\n constructor(public readonly severity: Severity, public readonly text: string, public readonly timeout: number = 0) {\n }\n}\n","export enum Severity {\n ERROR = 'error',\n WARNING = 'warning',\n NOTIFICATION = 'notification',\n INFORMATION = 'information',\n SUCCESS = 'success'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Message } from './message';\n\n@Component({\n selector: 'loxia-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss']\n})\nexport class MessageComponent implements OnInit {\n @Input()\n message: Message;\n\n @Output()\n onClearMessage: EventEmitter<Message> = new EventEmitter();\n\n ngOnInit(): void {\n if (this.message.timeout > 0) {\n setTimeout(() => {\n this.closeMessage({ stopPropagation: () => null });\n }, this.message.timeout);\n }\n }\n\n closeMessage(event): void {\n event.stopPropagation();\n this.onClearMessage.emit(this.message);\n this.message = undefined;\n }\n\n get severity(): string {\n return this.message.severity;\n }\n\n}\n","<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","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Message } from '../message';\n\n@Injectable({ providedIn: 'root' })\nexport class MessagesService {\n private messages: Message[] = [];\n private _messages$: BehaviorSubject<Message[]> = new BehaviorSubject<Message[]>([]);\n\n public showMessage(message: Message): void {\n this.messages.push(message);\n this._messages$.next(this.messages);\n }\n\n public clearMessage(message: Message): void {\n this.messages = this.messages.filter(m => m.text !== message.text);\n this._messages$.next(this.messages);\n }\n\n public get messages$(): Observable<Message[]> {\n return this._messages$;\n }\n}\n","import { Component } from '@angular/core';\nimport { MessagesService } from '../services/messages.service';\n\n@Component({\n selector: 'loxia-messages',\n templateUrl: './messages.component.html',\n styleUrls: ['./messages.component.scss']\n})\nexport class MessagesComponent {\n\n constructor(public messagesService: MessagesService) {\n }\n\n trackbyIndex(index: number): number {\n return index;\n }\n}\n","<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","import { Component } from '@angular/core';\n\n@Component({\n selector: 'loxia-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss']\n})\nexport class OverlayComponent {\n\n}\n","<div class=\"overlay\">\n <div class=\"centered-content\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'loxia-progress-indicator',\n templateUrl: './progress-indicator.component.html',\n styleUrls: ['./progress-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressIndicatorComponent {\n\n\n}\n","<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","export const version = '8.1.3-SNAPSHOT';\n\n","import { SvgInfo } from '@loxia/imx-viewer';\nimport { createAction, union } from '@ngrx/store';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { SeinOpRitdeel } from '../../model/sein-op-ritdeel';\nimport { Actie, Beweging, InfraModel, Rit } from '../../optimo';\nimport { AlgemeneRitInfoDto } from '../../resources/mstlogging.resource';\nimport { ISignaleringsbeeldInfoDto } from '../../resources/signaleringsbeeldinfo.resource';\nimport { ArrayMultimap } from '../../util/multi-map';\n\nexport const SET_EDITABLE = '[mst] SetEditable';\nexport const SET_RIT_SELECTIE_IDS = '[mst] SetRitSelectieIds';\nexport const SET_GEPLANDE_ACTIES = '[mst] SetGeplandeActies';\nexport const DELETE_GEPLANDE_ACTIES = '[mst] DeleteGeplandeActies';\nexport const ADD_GEPLANDE_ACTIES = '[mst] AddGeplandeActies';\nexport const SET_ACTIEOPRIT_SELECTIE_IDS = '[mst] SetActieOpRitSelectieIds';\nexport const SET_ONGEPLANDEACTIE_SELECTIE_IDS = '[mst] SetOngeplandeActieSelectieIds';\nexport const DELETE_ONGEPLANDE_ACTIE_SELECTIE_ID = '[mst] DeleteOngeplandeActieSelectieId';\nexport const ADD_ONGEPLANDE_ACTIE = '[mst] AddOngeplandeActie';\nexport const DELETE_ONGEPLANDE_ACTIE = '[mst] DeleteOngeplandeActie';\nexport const BEPAAL_ONGEPLANDE_ACTIES = '[mst] BepaalOngeplandeActies';\nexport const SET_ONGEPLANDE_ACTIES = '[mst] SetOngeplandeActies';\nexport const SET_GEBROKENRIT_SELECTIE_IDS = '[mst] SetGebrokenRitSelectieIds';\nexport const SET_ALTERNATIEVEN_SELECTIE_IDS = '[mst] SetAlternatievenSelectieIds';\nexport const SET_BEGINSEIN_SELECTIE_IDS = '[mst] SetBeginSeinSelectieIds';\nexport const SET_EINDSEIN_SELECTIE_IDS = '[mst] SetEindSeinSelectieIds';\nexport const SET_ALTERNATIEVEN_CLICKABLE_IDS = '[mst] SetAlternatievenClickableIds';\nexport const SET_EINDSEINEN_CLICKABLE_IDS = '[mst] SetEindSeinenClickableIds';\nexport const SET_CONNECTOREN_CLICKABLE_IDS = '[mst] SetConnectorenlickableIds';\nexport const SET_BEGINSEIN_RIGHTCLICKABLE_IDS = '[mst] SetBeginSeinRightClickableIds';\nexport const SET_NIEUW_ROUTE_BEGINSEIN = '[mst] SetNieuwRouteBeginSein';\nexport const SET_NIEUW_ROUTE_EINDSEIN = '[mst] SetNieuwRouteEindSein';\nexport const RESET_NIEUWE_ROUTE = '[mst] ResetNieuweRoute';\nexport const SET_SIGNALERINGSBEELD_INFO_DTOS = '[mst] SetSignaleringsbeeldInfoDtos';\nexport const UPDATE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] UpdateSignaleringsbeeldInfoDtos';\nexport const SET_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] SetVisibleSignaleringsbeeldInfoDtos';\nexport const UPDATE_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] UpdateVisibleSignaleringsbeeldInfoDtos';\nexport const SET_IA_VERSIE = '[mst] SetIaVersie';\nexport const SET_ALGEMENE_RIT_INFO = '[mst] SetAlgemeneRitInfo';\nexport const SET_SVG_INFOS = '[mst] SET_SVG_INFOS';\nexport const SET_DEBUG = '[mst] SET_DEBUG';\nexport const SET_ONGEPLANDE_ACTIES_BEPAALD = '[mst] SET_ONGEPLANDE_ACTIES_BEPAALD';\nexport const BEWEGING_INVOEGEN = '[mst] BewegingInvoegen';\nexport const SHOW_PROGRESS_INDICATOR = '[progress] Show the progress indicator';\nexport const CLEAR_PROGRESS_INDICATOR = '[progress] Clear the progress indicator';\nexport const KEUR_ALLE_ACTIES_GOED = '[progress] KeurAlleActiesGoed';\nexport const UPDATE_RIT = '[progress] UpdateRit';\nexport const SET_BASE_URL = '[progress] Set BaseUrl';\nexport const NAVIGEER_BUITEN_RIT = '[mst] NavigeerBuitenRit';\nexport const LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO = '[mst] laadEnVerwerkSignaleringsbeeldInfo';\n\nexport const FOCUS_OP_RITDEEL = '[mst] focusOpRitdeel';\nexport const FOCUS_OP_IDS = '[mst] focusOpIds';\nexport const BEPAAL_SB_INFOS = '[mst] bepaalSbInfos';\nexport const SET_SELECTED_RITDEEL = '[mst] SetSelectedRitdeel';\n\nexport const setEditable = createAction(SET_EDITABLE, (editable: boolean) => ({ editable }));\n\nexport const SetRitSelectieIds = createAction(SET_RIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetGeplandeActies = createAction(SET_GEPLANDE_ACTIES,\n (geplandeActiesMap: ArrayMultimap<Actie, string>) => ({ geplandeActiesMap }));\n\nexport const DeleteGeplandeActie = createAction(DELETE_GEPLANDE_ACTIES, (actie: Actie, puics: string[]) => ({ actie, puics }));\n\nexport const AddGeplandeActie = createAction(ADD_GEPLANDE_ACTIES, (actie: Actie, puics: string[]) => ({ actie, puics }));\n\nexport const SetActieOpRitSelectieIds = createAction(SET_ACTIEOPRIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetOngeplandeActieSelectieIds = createAction(SET_ONGEPLANDEACTIE_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const DeleteOngeplandeActieSelectieId = createAction(DELETE_ONGEPLANDE_ACTIE_SELECTIE_ID, (id: string) => ({ id }));\n\nexport const AddOngeplandeActie = createAction(ADD_ONGEPLANDE_ACTIE, (ongeplandeActie: OngeplandeActie) => ({ ongeplandeActie }));\n\nexport const DeleteOngeplandeActie = createAction(DELETE_ONGEPLANDE_ACTIE, (ongeplandeActie: OngeplandeActie) => ({ ongeplandeActie }));\n\nexport const BepaalOngeplandeActies = createAction(BEPAAL_ONGEPLANDE_ACTIES, (ongeplandeActies: any[]) => ({ ongeplandeActies }));\n\nexport const SetOngeplandeActies = createAction(SET_ONGEPLANDE_ACTIES,\n (ongeplandeActiesMap: ArrayMultimap<string, OngeplandeActie>) => ({ ongeplandeActiesMap }));\n\nexport const SetGebrokenRitSelectieIds = createAction(SET_GEBROKENRIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetAlternatievenSelectieIds = createAction(SET_ALTERNATIEVEN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetBeginSeinSelectieIds = createAction(SET_BEGINSEIN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetEindSeinSelectieIds = createAction(SET_EINDSEIN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetAlternatievenClickableIds = createAction(SET_ALTERNATIEVEN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetEindSeinenClickableIds = createAction(SET_EINDSEINEN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetConnectorenClickableIds = createAction(SET_CONNECTOREN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetBeginSeinRightClickableIds = createAction(SET_BEGINSEIN_RIGHTCLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetNieuwRouteBeginSein = createAction(SET_NIEUW_ROUTE_BEGINSEIN,\n (startSeinOpRitdeel: SeinOpRitdeel) => ({ startSeinOpRitdeel }));\n\nexport const SetNieuwRouteEindSein = createAction(SET_NIEUW_ROUTE_EINDSEIN,\n (combinatieVoorEindsein: RijwegplanRijwegDwangCombinatie) => ({ combinatieVoorEindsein }));\n\nexport const ResetNieuweRoute = createAction(RESET_NIEUWE_ROUTE);\n\nexport const SetSignaleringsbeeldInfoDtos = createAction(SET_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[], iaversieinfo: any, treinpad: any, paginationSize: number, ritGewijzigdToegestaan: boolean) =>\n ({ dtos, iaversieinfo, treinpad, paginationSize, ritGewijzigdToegestaan }));\n\nexport const UpdateSignaleringsbeeldInfoDtos = createAction(UPDATE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const SetVisibleSignaleringsbeeldInfoDtos = createAction(SET_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const UpdateVisibleSignaleringsbeeldInfoDtos = createAction(UPDATE_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const SetIaVersie = createAction(SET_IA_VERSIE, (iaVersie: InfraModel) => ({ iaVersie }));\n\nexport const SetSvgInfos = createAction(SET_SVG_INFOS, (svgInfos: SvgInfo[]) => ({ svgInfos }));\n\nexport const SetDebug = createAction(SET_DEBUG, (debug: boolean) => ({ debug }));\n\nexport const SetAlgemeneRitInfo = createAction(SET_ALGEMENE_RIT_INFO, (algemeneRitInfoDto: AlgemeneRitInfoDto) => ({ algemeneRitInfoDto }));\n\nexport const SetOngeplandeActiesBepaald = createAction(SET_ONGEPLANDE_ACTIES_BEPAALD, (bepaald: boolean) => ({ bepaald }));\n\nexport const ShowProgress = createAction(SHOW_PROGRESS_INDICATOR);\nexport const ClearProgress = createAction(CLEAR_PROGRESS_INDICATOR);\nexport const BewegingInvoegen = createAction(BEWEGING_INVOEGEN,\n (startSeinOpRitdeel: SeinOpRitdeel, puicNaarEindSeinCombinatie: Map<string, RijwegplanRijwegDwangCombinatie>) =>\n ({ startSeinOpRitdeel, puicNaarEindSeinCombinatie }));\n\nexport const KeurAlleActiesGoed = createAction(KEUR_ALLE_ACTIES_GOED, (bewegingen: Beweging[], ongeplandeActies: Actie[]) => ({ bewegingen, ongeplandeActies }));\nexport const UpdateRit = createAction(UPDATE_RIT, (bewegingen: Beweging[]) => ({ bewegingen }));\nexport const SetBaseUrl = createAction(SET_BASE_URL, (baseUrl: string) => ({ baseUrl }));\n\nexport const laadEnVerwerkSignaleringsbeeldInfo = createAction(LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO,\n (rit: Rit, paginationSize: number, pplgs: string[], ritGewijzigdToegestaan: boolean) => ({ rit, paginationSize, pplgs, ritGewijzigdToegestaan }));\nexport const navigeerBuitenRit = createAction(NAVIGEER_BUITEN_RIT, (randPuic: string) => ({ randPuic }));\n\nexport const focusOpRitdeel = createAction(FOCUS_OP_RITDEEL, (ritdeel: Ritdeel, paginationSize: number, iaVersieInfo: InfraModel) => ({ ritdeel, paginationSize, iaVersieInfo }) )\nexport const focusOpIds = createAction(FOCUS_OP_IDS, (puics: string[]) => ({ puics }));\nexport const bepaalSbInfos = createAction(BEPAAL_SB_INFOS, (rit: Rit, ongeplandeActies: Actie[], iaVersie: string, ritGewijzigdToegestaan: boolean, paginationSize: number) => ({ rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize }));\nexport const SetSelectedRitdeel = createAction(SET_SELECTED_RITDEEL, (id: number) => ({ id }));\n\n// do not export return value\nconst mstActions = union({\n setEditable,\n SetRitSelectieIds,\n SetGeplandeActies,\n DeleteGeplandeActie,\n AddGeplandeActie,\n SetActieOpRitSelectieIds,\n SetOngeplandeActieSelectieIds,\n DeleteOngeplandeActieSelectieId,\n AddOngeplandeActie,\n DeleteOngeplandeActie,\n BepaalOngeplandeActies,\n SetOngeplandeActies,\n SetGebrokenRitSelectieIds,\n SetAlternatievenSelectieIds,\n SetBeginSeinSelectieIds,\n SetEindSeinSelectieIds,\n SetAlternatievenClickableIds,\n SetEindSeinenClickableIds,\n SetBeginSeinRightClickableIds,\n SetNieuwRouteBeginSein,\n SetNieuwRouteEindSein,\n ResetNieuweRoute,\n SetSignaleringsbeeldInfoDtos,\n UpdateSignaleringsbeeldInfoDtos,\n SetVisibleSignaleringsbeeldInfoDtos,\n UpdateVisibleSignaleringsbeeldInfoDtos,\n SetIaVersie,\n SetSvgInfos,\n SetDebug,\n SetAlgemeneRitInfo,\n SetOngeplandeActiesBepaald,\n ShowProgress,\n ClearProgress,\n BewegingInvoegen,\n KeurAlleActiesGoed,\n UpdateRit,\n setSelectedRitdeel: SetSelectedRitdeel\n});\n\n// export only type\nexport type MstActionsUnion = typeof mstActions;\n\n\n\n","import {createAction, union} from '@ngrx/store';\nimport {AlternatiefRitDeel} from '../../model/alternatief-rit-deel';\nimport {NieuweRoute} from '../../model/nieuwe-route';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {Actie} from '../../optimo';\n\nexport const SET_RIT_DELEN = '[mst] SetRitDelen';\nexport const SET_RIT_DELEN_AFTER_UPDATE = '[mst] SetRitDelenAfterUpdate';\nexport const UPDATE_RIT_DELEN = '[mst] UpdateRitDelen';\nexport const TOGGLE_RITDEEL_ZICHTBAAR = '[mst] ToggleRitdeelZichtbaar';\nexport const SET_RITDEEL_ZICHTBAAR = '[mst] ZetRitdeelZichtbaar';\nexport const SET_ZICHTBAARHEID_ALLE_RITDELEN = '[mst] SetZichtbaarheidAlleRitdelen';\nexport const TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN = '[mst] ToggleZichtbaarheidVoorBewegingen';\nexport const SET_ALTERNATIEVE_RIT_DELEN = '[mst] SetAlternatieveRitDelen';\nexport const RITDEEL_INVOEGEN = '[mst] RitdeelInvoegen';\nexport const DELETE_RITDEEL = '[mst] DeleteRitdeel';\nexport const DELETE_RITDEEL_ACTIE = '[mst] DeleteRitdeelActie';\nexport const ADD_RITDEEL_ACTIE = '[mst] AddRitdeelActie';\nexport const NAVIGEER = '[mst] Navigeer';\nexport const NAVIGEER_VANAF = '[mst] NavigeerVanaf';\n\nexport const setRitDelen = createAction(SET_RIT_DELEN,\n (ritDelen: Ritdeel[], paginationSize: number, iaversieinfo: any) => ({ ritDelen, paginationSize, iaversieinfo }));\nexport const setRitdelenAfterUpdate = createAction(SET_RIT_DELEN_AFTER_UPDATE,\n (ritDelen: Ritdeel[]) => ({ ritDelen }));\nexport const navigeer = createAction(NAVIGEER,\n (stapSize: number, paginationSize: number, iaversieinfo: any) => ({ stapSize, paginationSize, iaversieinfo }));\nexport const navigeerVanaf = createAction(NAVIGEER_VANAF,\n (paginationSize: number, iaversieinfo: any, ritdeel: Ritdeel) => ({ paginationSize, iaversieinfo, ritdeel }));\nexport const updateRitDelen = createAction(UPDATE_RIT_DELEN,\n (ritDelen: Ritdeel[]) => ({ ritDelen }));\nexport const toggleRitdeelZichtbaar = createAction(TOGGLE_RITDEEL_ZICHTBAAR, (ritDeel: Ritdeel) => ({ ritDeel }));\nexport const setRitdeelZichtbaar = createAction(SET_RITDEEL_ZICHTBAAR,\n (ritDeel: Ritdeel, zichtbaar: boolean) => ({ ritDeel, zichtbaar }));\nexport const deleteRitdeel = createAction(DELETE_RITDEEL, (ritDeel: Ritdeel) => ({ ritDeel }));\nexport const deleteRitdeelActie = createAction(DELETE_RITDEEL_ACTIE, (ritDeel: Ritdeel, actie: Actie) => ({ ritDeel, actie }));\nexport const addRitdeelActie = createAction(ADD_RITDEEL_ACTIE, (ritDeel: Ritdeel, actie: Actie) => ({ ritDeel, actie }));\nexport const setZichtbaarheidAlleRitdelen = createAction(SET_ZICHTBAARHEID_ALLE_RITDELEN,\n (zichtbaarheid: boolean) => ({ zichtbaarheid }));\nexport const toggleZichtbaarheidVoorBewegingen = createAction(TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN,\n (bewegingIds: number[]) => ({ bewegingIds }));\nexport const setAlternatieveRitDelen = createAction(SET_ALTERNATIEVE_RIT_DELEN,\n (alternatieveRitDeel: AlternatiefRitDeel) => ({ alternatieveRitDeel }));\nexport const ritdeelInvoegen = createAction(RITDEEL_INVOEGEN,\n (nieuweRoute: NieuweRoute) => ({ nieuweRoute }));\n\n// do not export return value\nconst ritdeelActions = union({\n setRitDelen,\n updateRitDelen,\n setRitdelenAfterUpdate,\n toggleRitdeelZichtbaar,\n setRitdeelZichtbaar,\n deleteRitdeel,\n deleteRitdeelActie,\n addRitdeelActie,\n setZichtbaarheidAlleRitdelen,\n toggleZichtbaarheidVoorBewegingen,\n setAlternatieveRitDelen,\n ritdeelInvoegen\n});\n\n// export only type\nexport type RitDeelActionsUnion = typeof ritdeelActions;\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n IResourceMethodPromise,\n Resource,\n ResourceAction,\n ResourceHandler,\n ResourceModel,\n ResourceParams,\n ResourceRequestMethod\n} from '@ngx-resource/core';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsbeeldInfoDto } from './signaleringsbeeldinfo.resource';\nimport { Subscription } from 'rxjs';\n\n@Injectable()\n@ResourceParams({\n pathPrefix: '/mst/services/rest/logging'\n})\n\nexport class MstLoggingResource extends Resource implements OnDestroy{\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(restHandler: ResourceHandler, private store: Store<MstEditorState>) {\n super(restHandler);\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.$setUrl(baseUrl)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @ResourceAction({\n path: '/',\n method: ResourceRequestMethod.Post\n })\n logErrorMessages: IResourceMethodPromise<MstLoggingDto[], void>;\n}\n\nexport interface IMstLoggingDto {\n iaVersie: string;\n meldingLevel: string;\n meldingMessage: string;\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n actieDto: ActieDto;\n sbinfoDtos: SignaleringsbeeldInfoDto[];\n}\n\nexport class MstLoggingDto extends ResourceModel implements IMstLoggingDto {\n $resource = MstLoggingResource;\n iaVersie: string;\n meldingLevel: string;\n meldingMessage: string;\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n actieDto: ActieDto;\n sbinfoDtos: SignaleringsbeeldInfoDto[];\n\n constructor(data?: IMstLoggingDto) {\n super();\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n iaVersie: this.iaVersie,\n meldingLevel: this.meldingLevel,\n meldingMessage: this.meldingMessage,\n algemeneRitInfoDto: this.algemeneRitInfoDto,\n actieDto: this.actieDto,\n sbinfoDtos: this.sbinfoDtos\n };\n }\n\n toString(): string {\n return `${ this.iaVersie },${ this.meldingLevel },${ this.meldingMessage },${ this.algemeneRitInfoDto },\n ${ this.actieDto },${ this.sbinfoDtos }`;\n }\n\n $setData(data: IMstLoggingDto): this {\n if (data) {\n this.iaVersie = data.iaVersie;\n this.meldingLevel = data.meldingLevel;\n this.meldingMessage = data.meldingMessage;\n this.algemeneRitInfoDto = data.algemeneRitInfoDto;\n this.actieDto = data.actieDto;\n this.sbinfoDtos = data.sbinfoDtos;\n }\n return this;\n }\n}\n\nexport interface IActieDto {\n pplgNaam: string;\n ritActieTypeOmschrijving: string;\n ritActieStatus: string;\n bewegingId: number;\n wisselType: string;\n wisselNaam: string;\n wisselKantCode: string;\n vanKilometerlint?: string;\n vanKilometrering?: number;\n totKilometerlint?: string;\n totKilometrering?: number;\n}\n\nexport class ActieDto implements IActieDto {\n pplgNaam: string;\n ritActieTypeOmschrijving: string;\n ritActieStatus: string;\n bewegingId: number;\n wisselType: string;\n wisselNaam: string;\n wisselKantCode: string;\n vanKilometerlint: string;\n vanKilometrering: number;\n totKilometerlint: string;\n totKilometrering: number;\n\n constructor(data?: IActieDto) {\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n pplgNaam: this.pplgNaam,\n ritActieTypeOmschrijving: this.ritActieTypeOmschrijving,\n ritActieStatus: this.ritActieStatus,\n bewegingId: this.bewegingId,\n wisselType: this.wisselType,\n wisselNaam: this.wisselNaam,\n wisselKantCode: this.wisselKantCode,\n vanKilometerlint: this.vanKilometerlint,\n vanKilometrering: this.vanKilometrering,\n totKilometerlint: this.totKilometerlint,\n totKilometrering: this.totKilometrering\n };\n }\n\n toString(): string {\n return `${ this.pplgNaam },${ this.ritActieTypeOmschrijving },${ this.ritActieStatus },\n ${ this.bewegingId },${ this.wisselType },${ this.wisselNaam },${ this.wisselKantCode },\n ${ this.vanKilometerlint },${ this.vanKilometrering },${ this.totKilometerlint },${ this.totKilometrering }`;\n }\n\n $setData(data: IActieDto): this {\n if (data) {\n this.pplgNaam = data.pplgNaam;\n this.ritActieTypeOmschrijving = data.ritActieTypeOmschrijving;\n this.ritActieStatus = data.ritActieStatus;\n this.bewegingId = data.bewegingId;\n this.wisselType = data.wisselType;\n this.wisselNaam = data.wisselNaam;\n this.wisselKantCode = data.wisselKantCode;\n this.vanKilometerlint = data.vanKilometerlint;\n this.vanKilometrering = data.vanKilometrering;\n this.totKilometerlint = data.totKilometerlint;\n this.totKilometrering = data.totKilometrering;\n }\n return this;\n }\n}\n\nexport interface IAlgemeneRitInfoDto {\n id: string;\n jaarplanId: string;\n volgnummer: string;\n machineTypeId: string;\n machineTypeOmschrijving: string;\n ritDatum: string;\n startDatum: string;\n eindDatum: string;\n ritNaam: string;\n startLocatie: string;\n eindLocatie: string;\n ritStatus: string;\n modified: string;\n modifiedBy: string;\n planJobId: string;\n}\n\nexport class AlgemeneRitInfoDto implements IAlgemeneRitInfoDto {\n id: string;\n jaarplanId: string;\n volgnummer: string;\n machineTypeId: string;\n machineTypeOmschrijving: string;\n ritDatum: string;\n startDatum: string;\n eindDatum: string;\n ritNaam: string;\n startLocatie: string;\n eindLocatie: string;\n ritStatus: string;\n modified: string;\n modifiedBy: string;\n planJobId: string;\n\n constructor(data?: IAlgemeneRitInfoDto) {\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n id: this.id,\n jaarplanId: this.jaarplanId,\n volgnummer: this.volgnummer,\n machineTypeId: this.machineTypeId,\n machineTypeOmschrijving: this.machineTypeOmschrijving,\n ritDatum: this.ritDatum,\n startDatum: this.startDatum,\n eindDatum: this.eindDatum,\n ritNaam: this.ritNaam,\n startLocatie: this.startLocatie,\n eindLocatie: this.eindLocatie,\n ritStatus: this.ritStatus,\n modified: this.modified,\n modifiedBy: this.modifiedBy,\n planJobId: this.planJobId\n };\n }\n\n toString(): string {\n return `${ this.id },${ this.jaarplanId },${ this.volgnummer },${ this.machineTypeId },${ this.machineTypeOmschrijving }\n ,${ this.ritDatum },${ this.startDatum },${ this.eindDatum },${ this.ritNaam },${ this.startLocatie }\n ,${ this.eindLocatie },${ this.ritStatus },${ this.modified },${ this.modifiedBy },${ this.planJobId }`;\n }\n\n $setData(data: IAlgemeneRitInfoDto): this {\n if (data) {\n this.id = data.id;\n this.jaarplanId = data.jaarplanId;\n this.volgnummer = data.volgnummer;\n this.machineTypeId = data.machineTypeId;\n this.machineTypeOmschrijving = data.machineTypeOmschrijving;\n this.ritDatum = data.ritDatum;\n this.startDatum = data.startDatum;\n this.eindDatum = data.eindDatum;\n this.ritNaam = data.ritNaam;\n this.startLocatie = data.startLocatie;\n this.eindLocatie = data.eindLocatie;\n this.ritStatus = data.ritStatus;\n this.modified = data.modified;\n this.modifiedBy = data.modifiedBy;\n this.planJobId = data.planJobId;\n }\n return this;\n }\n}\n","export default class Utils {\n\n public static flatMap(xs, f): any {\n return xs.reduce((acc, x) => acc.concat(f(x)), []);\n }\n\n public static getValidErorrMessage(err: any): string {\n let errorMsg = '';\n if (err.msg) {\n errorMsg += err.msg;\n }\n\n if (Array.isArray(err.body)) {\n err.body.forEach(x => errorMsg += x);\n } else if (err.body) {\n if (err.body instanceof ProgressEvent) {\n errorMsg = 'Kon geen verbinding maken met de server';\n } else if (err.body.text) {\n errorMsg += err.body.text;\n } else {\n errorMsg += err.body;\n }\n }\n if (err.message) {\n errorMsg += err.message;\n }\n if (typeof err === 'string' || err instanceof String) {\n errorMsg += err;\n }\n if (errorMsg !== '') {\n return errorMsg;\n }\n }\n}\n","import Utils from './utils';\n\n/**\n * https://gist.github.com/jordanluyke/609a4fffb69d1ebafdadd313ee2ee804\n *\n * @author Jordan Luyke <jordanluyke@gmail.com>\n */\n\nexport class MultimapEntry<K, V> {\n constructor(readonly key: K, readonly value: V) {\n }\n}\n\nexport interface Multimap<K, V> {\n entries: MultimapEntry<K, V>[];\n\n clear(): void;\n\n containsKey(key: K): boolean;\n\n containsValue(value: V): boolean;\n\n containsEntry(key: K, value: V): boolean;\n\n delete(key: K, value?: V): boolean;\n\n get(key: K): V[];\n\n keys(): K[];\n\n values(): V[];\n\n put(key: K, value: V): MultimapEntry<K, V>[];\n\n size(): number;\n}\n\nexport class ArrayMultimap<K, V> implements Multimap<K, V> {\n\n private _entries: MultimapEntry<K, V>[] = [];\n\n constructor(map?: Multimap<K, V>) {\n if (map) {\n this._entries = map.entries.slice();\n }\n }\n\n public size(): number {\n return this.keys().length;\n }\n\n public clear(): void {\n this._entries = [];\n }\n\n public containsKey(key: K): boolean {\n return this._entries\n .filter(entry => entry.key === key)\n .length > 0;\n }\n\n public containsValue(value: V): boolean {\n return this._entries\n .filter(entry => entry.value === value)\n .length > 0;\n }\n\n public containsEntry(key: K, value: V): boolean {\n return this._entries\n .filter(entry => entry.key === key && entry.value === value)\n .length > 0;\n }\n\n public delete(key: K, value?: V): boolean {\n const temp = this._entries;\n this._entries = this._entries\n .filter(entry => {\n if (value) {\n return entry.key !== key || entry.value !== value;\n }\n return entry.key !== key;\n });\n return temp.length !== this._entries.length;\n }\n\n public get entries(): MultimapEntry<K, V>[] {\n return this._entries;\n }\n\n public get(key: K): V[] {\n const valueMap = this._entries\n .filter(entry => entry.key === key)\n .map(entry => entry.value);\n return valueMap || [];\n }\n\n public keys(): K[] {\n return Array.from(new Set(this._entries.map(entry => entry.key)));\n }\n\n public values(): V[] {\n return Utils.flatMap(this._entries, x => x.value);\n }\n\n public put(key: K, value: V): MultimapEntry<K, V>[] {\n this._entries.push(new MultimapEntry(key, value));\n return this._entries;\n }\n\n public putAll(key: K, values: V[]): MultimapEntry<K, V>[] {\n values.forEach(value => this._entries.push(new MultimapEntry(key, value)));\n return this._entries;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil, sbblad } from '@loxia/rijwegen';\n\n@Injectable()\nexport class SignaleringsBeeldManagerService {\n private signaleringsBeeldManager;\n\n /*\n * SignaleringsBeeldManager gezet vanuit GWT\n */\n set(signaleringsBeeldManager: any): void {\n this.signaleringsBeeldManager = signaleringsBeeldManager;\n }\n\n isReady(): boolean {\n return !!this.signaleringsBeeldManager;\n }\n\n bepaalRouteElementen(route: domein.Route): sbblad.TopologyElement[] {\n try {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalRouteElementenStrict(route));\n } catch (e) {\n console.log(e.message);\n return [];\n }\n }\n\n getPuicsVoorSeinenInRoute(route: domein.Route): string[] {\n try {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.getPuicsVoorSeinenInRoute(route));\n } catch (e) {\n console.log(e.message);\n return [];\n }\n }\n\n getSBSein(sein: domein.Sein): sbblad.Sein {\n return this.signaleringsBeeldManager.getSeinStrict(sein);\n }\n\n getSbSpoortak(takId: string): sbblad.Spoortak {\n return this.signaleringsBeeldManager ? this.signaleringsBeeldManager.getSpoortak(takId) : null;\n }\n\n getAlleSoortenWissels(): sbblad.Wissel[] {\n return this.signaleringsBeeldManager.getAlleSoortenWissels();\n }\n\n getSBWissel(wisselNaam: string, pplg: string): sbblad.Wissel {\n return this.signaleringsBeeldManager.getWissel(wisselNaam, pplg);\n }\n\n getSignaleringsElementen(): sbblad.SignaleringsElement[] {\n return this.signaleringsBeeldManager.getSignaleringsElementen();\n }\n\n bepaalAlternativeRoutes(rijweg: domein.Rijweg): sbblad.AlternativeRoute[] {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalAlternativeRoutes(rijweg));\n }\n\n bepaalAlternativeRouteHighlights(alternatieveRoute: sbblad.AlternativeRoute,\n topoElementen: sbblad.HasIdentifier[]): sbblad.HasIdentifier[] {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalAlternativeRouteHighlights(alternatieveRoute, topoElementen));\n }\n\n getPuicsVoorSeinen(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSeinen();\n }\n\n getSeinen(): sbblad.Sein[] {\n return this.signaleringsBeeldManager.getSeinen();\n }\n\n getPuicsVoorWissels(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorWissels();\n }\n\n getPuicsVoorRanden(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorRanden();\n }\n\n getWisselMetStoringskaderPuic(storingskaderPuic: string): sbblad.Wissel {\n return this.signaleringsBeeldManager.getWisselMetStoringskaderPuic(storingskaderPuic);\n }\n\n getPuicsVoorWissel(wisselId: string, pplg: string): any {\n return this.signaleringsBeeldManager ? this.signaleringsBeeldManager.getPuicsVoorWissel(wisselId, pplg) : null;\n }\n\n getPuicsVoorSpoornummers(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSpoornummers();\n }\n\n getPuicsVoorSplitEngelseWissels(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSplitEngelseWissels();\n }\n\n getTechnischAlternatiefSBSein(sein: sbblad.Sein): sbblad.Sein {\n return this.signaleringsBeeldManager.getTechnischAlternatiefSBSein(sein);\n }\n\n getTopologyElementByPuic(puic: string): sbblad.TopologyElement {\n return this.signaleringsBeeldManager.getTopologyElementByPuic(puic);\n }\n\n getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam: string, kantcode: string): any {\n return this.signaleringsBeeldManager.getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam, kantcode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein } from '@loxia/rijwegen';\nimport { from, Observable } from 'rxjs';\nimport { ISignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\n\n@Injectable()\nexport class EditorService {\n private editor;\n private resolveReadyPromise;\n private promise;\n\n constructor(private signaleringsBeeldManagerService: SignaleringsBeeldManagerService) {\n this.initReadyPromise();\n }\n\n setEditor(editor): void {\n this.editor = editor;\n\n this.resolveReadyPromise();\n }\n\n isReady(): Promise<void> {\n return this.promise;\n }\n\n setSignaleringsBeeldManager(signaleringsBeeldManager): void {\n this.signaleringsBeeldManagerService.set(signaleringsBeeldManager);\n }\n\n laadSignaleringsbeelden(iaVersie: string, dtos: ISignaleringsbeeldInfoDto[]): Observable<any> {\n const laadSignaleringsbeelden = this.editor.laadSignaleringsbeelden(iaVersie, dtos);\n return from(laadSignaleringsbeelden);\n }\n\n laadRouteFiles(iaVersie: string, pplgs: string[]): any {\n return this.editor.laadRouteFiles(iaVersie, pplgs);\n }\n\n getRijwegplan(pplg: string): domein.Rijwegplan {\n return this.editor.getRijwegplan(pplg);\n }\n\n getVrijebaanRijwegplan(pplg: string, vanSpoor: string): domein.VrijebaanRijwegplan {\n return this.editor.getVrijebaanRijwegplan(pplg, vanSpoor);\n }\n\n getRijwegplannen(): domein.Rijwegplan[] {\n return this.editor.getRijwegplannen();\n }\n\n private initReadyPromise(): void {\n const that = this;\n this.promise = this.promise === undefined ? new Promise(function(resolve, _reject) {\n that.resolveReadyPromise = resolve;\n }) : this.promise;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging } from '../optimo';\nimport { ArrayMultimap } from '../util/multi-map';\nimport { EditorService } from './editor.service';\n\n@Injectable()\nexport class BewegingUtils {\n static readonly GEWIJZIGD = 'Gewijzigd';\n static readonly TOEGEVOEGD = 'Toegevoegd';\n static readonly NORMAAL = 'Normaal';\n private static readonly SEIN_TYPE_FICTIEF = 'FICTIEF';\n private static readonly SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\n\n constructor(private readonly editorService: EditorService) {\n }\n\n public extractBewegingenUitRitdelen(ritDelen: Ritdeel[], origineleBewegingen: Beweging[]): Beweging[] {\n const retval: Beweging[] = [];\n retval.length = ritDelen.length;\n\n const origineleBewegingMap = this.bepaalOrigineleBewegingMap(origineleBewegingen);\n\n let vorigeBeweging: Beweging = null;\n for (let i = 0; i < ritDelen.length; i++) {\n const ritdeel = ritDelen[i];\n if (ritdeel.beweging) {\n retval[i] = ritdeel.beweging;\n const nieuwDwangNummer = BewegingUtils.toRouteFileDwangNummer(ritdeel.getDwangNummer());\n if (BewegingUtils.isGewijzigd(ritdeel, nieuwDwangNummer, origineleBewegingMap)) {\n retval[i].wijzigStatus = BewegingUtils.GEWIJZIGD;\n retval[i].dwangNummer = nieuwDwangNummer;\n ritdeel.beweging.ritActies = ritdeel.acties;\n BewegingUtils.removeKerenExtensie(retval[i]);\n BewegingUtils.removeKerenExtensie(vorigeBeweging);\n } else if (i === ritDelen.length - 1 && BewegingUtils.bewegingenZijnGewijzigd(ritDelen, origineleBewegingen)) {\n BewegingUtils.removeKerenExtensie(retval[i]);\n } else if (retval[i].wijzigStatus === BewegingUtils.TOEGEVOEGD) {\n BewegingUtils.removeKerenExtensie(vorigeBeweging);\n }\n } else {\n retval[i] = this.maakBeweging(ritdeel);\n }\n retval[i].volgnummerBinnenRit = i + 1;\n vorigeBeweging = ritdeel.beweging;\n }\n return retval;\n }\n\n private static bewegingenZijnGewijzigd(ritDelen: Ritdeel[], origineleBewegingen: Beweging[]): boolean {\n const ritDelenArray = ritDelen\n .filter(r => r.beweging)\n .map(r => r.beweging.id)\n .sort((a, b) => a - b);\n\n const bewegingenIdArray = origineleBewegingen.map(b => b.id).sort((a, b) => a - b);\n return JSON.stringify(ritDelenArray) !== JSON.stringify(bewegingenIdArray);\n }\n\n private static removeKerenExtensie(beweging: Beweging): void {\n if (beweging && this.containsExtensie('_k', beweging.naarSpoor)) {\n beweging.naarSpoor = beweging.naarSpoor.split('_k')[0];\n beweging.wijzigStatus = this.GEWIJZIGD;\n }\n }\n\n static containsExtensie(match: string, stringToCheck: string): boolean {\n return stringToCheck.indexOf(match) !== -1;\n }\n\n private static isGewijzigd(ritdeel: Ritdeel, nieuwDwangNummer, origineleBewegingenMap: ArrayMultimap<number, number>): boolean {\n const dwangGewijzigd = ritdeel.beweging.dwangNummer !== nieuwDwangNummer;\n let gewijzigd = false;\n if (ritdeel.beweging.wijzigStatus === this.NORMAAL) {\n const origineleBewegingActies = origineleBewegingenMap.get(ritdeel.beweging.id);\n const huidigeActies = this.createSortedActieIdList(ritdeel.acties);\n gewijzigd = JSON.stringify(huidigeActies) !== JSON.stringify(origineleBewegingActies);\n }\n return dwangGewijzigd || gewijzigd;\n }\n\n private bepaalOrigineleBewegingMap(origineleBewegingen: Beweging[]): ArrayMultimap<number, number> {\n const bewegingMap = new ArrayMultimap<number, number>();\n origineleBewegingen.forEach(b => {\n const actieIds = BewegingUtils.createSortedActieIdList(b.ritActies);\n bewegingMap.putAll(b.id, actieIds);\n });\n return bewegingMap;\n }\n\n private static createSortedActieIdList(acties: Actie[]): number[] {\n return acties.map(actie => actie.id).sort((a, b) => a - b);\n }\n\n public maakBeweging(newRitdeel: Ritdeel): Beweging {\n const eindSein = newRitdeel.getRoute().getEindSein();\n\n let naarSeinNaam;\n let naarSeinPplg;\n let naarSpoor = newRitdeel.getNaarPrlSpoor();\n if (eindSein.getTypeAlsString() === BewegingUtils.SEIN_TYPE_FICTIEF) {\n if (newRitdeel.heeftVrijebaanInfo()) {\n const vbEindSein = newRitdeel.getVrijebaanRijweg().getEindSein();\n naarSeinNaam = vbEindSein.getName();\n naarSeinPplg = vbEindSein.getPPLG();\n naarSpoor += BewegingUtils.SPOOR_NAAR_VRIJEBAAN_POSTFIX;\n } else {\n const rijwegplan = this.editorService.getRijwegplan(newRitdeel.getPplg());\n const rijwegAndereRichting = rijwegplan.getRijweg(newRitdeel.getVisueelNaarPrlSpoor(), newRitdeel.getVanPrlSpoor());\n const startSeinInAndereRichting = rijwegAndereRichting.getBeginSein();\n naarSeinNaam = startSeinInAndereRichting.getName();\n naarSeinPplg = startSeinInAndereRichting.getPPLG();\n }\n } else {\n naarSeinNaam = eindSein.getName();\n naarSeinPplg = eindSein.getPPLG();\n }\n return BewegingUtils.vulBeweging(newRitdeel, naarSeinNaam, naarSeinPplg, naarSpoor);\n }\n\n private static vulBeweging(newRitdeel: Ritdeel, naarSeinNaam: string, naarSeinPplg: string, naarSpoor: string): Beweging {\n return {\n id: 0,\n ritId: 0,\n volgnummerBinnenRit: -1,\n vanSeinType: 'BED_SEIN',\n vanSeinNaam: newRitdeel.getRoute().getBeginSein().getName(),\n vanSeinPplg: newRitdeel.getRoute().getBeginSein().getPPLG(),\n naarSeinType: 'BED_SEIN',\n naarSeinNaam,\n naarSeinPplg,\n dwangNummer: BewegingUtils.toRouteFileDwangNummer(newRitdeel.getDwangNummer()),\n vanPplg: newRitdeel.getPplg(),\n vanSpoor: newRitdeel.getVanPrlSpoor(),\n naarPplg: newRitdeel.getPplg(),\n naarSpoor,\n ritActies: [],\n wijzigStatus: this.TOEGEVOEGD\n };\n }\n\n private static toRouteFileDwangNummer(dwangNummer: number): number {\n return (dwangNummer === 0) ? -1 : dwangNummer;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectieInfo } from '@loxia/imx-viewer';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging, Rit } from '../optimo';\nimport { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';\nimport { KeurAlleActiesGoed, SetAlgemeneRitInfo, ShowProgress } from '../state/actions/actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { BewegingUtils } from './beweging-utils.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerControlService {\n private readonly subscriptions = new Subscription();\n\n private readonly valideRit$ = new BehaviorSubject(false);\n private readonly printing$ = new BehaviorSubject(false);\n\n private sideNavOpen = false;\n sideNavOpen$ = new BehaviorSubject(this.sideNavOpen);\n\n selectieInfos: SelectieInfo[];\n ritdelen: Ritdeel[];\n origineelTreinPad: Rit;\n\n constructor(private readonly store: Store<MstEditorState>,\n private readonly bewegingUtils: BewegingUtils) {\n this.subscriptions.add(combineLatest([\n store.select('ritSelectieIds'),\n store.select('actieOpRitSelectieIds'),\n store.select('ongeplandeActieSelectieIds'),\n store.select('gebrokenRitSelectieIds'),\n store.select('alternatievenSelectieIds'),\n store.select('beginSeinSelectieIds'),\n store.select('eindSeinSelectieIds')]\n ).subscribe(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenrit, alternatieven, begin, eind]) => {\n const selectie = [];\n selectie.push(new SelectieInfo(rit, 'rit'));\n selectie.push(new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'));\n selectie.push(new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'));\n selectie.push(new SelectieInfo(gebrokenrit, 'gebrokenrit'));\n selectie.push(new SelectieInfo(alternatieven, 'alternatieveRoute'));\n selectie.push(new SelectieInfo(begin, 'zigzagVan'));\n selectie.push(new SelectieInfo(eind, 'zigzagNaar'));\n this.selectieInfos = selectie;\n }\n ));\n\n this.subscriptions.add(store.select('ritDelen').subscribe(ritdelen => this.ritdelen = ritdelen));\n }\n\n toggleSideNavVisible(): void {\n this.sideNavOpen = !this.sideNavOpen;\n this.sideNavOpen$.next(this.sideNavOpen);\n }\n\n keurAlleActiesGoed(ongeplandeActies: Actie[]): void {\n if (this.ritdelen) {\n this.store.dispatch(ShowProgress());\n const bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(this.ritdelen, this.origineelTreinPad.bewegingen);\n const alleActies = this.verzamelAlleActies(this.ritdelen, ongeplandeActies);\n this.store.dispatch(KeurAlleActiesGoed(this.getBewegingenZonderActies(bewegingen), alleActies));\n }\n }\n\n setValideRit(valideRit: boolean): void {\n this.valideRit$.next(valideRit);\n }\n\n setPrinting(printing: boolean): void {\n this.printing$.next(printing);\n }\n\n private getBewegingenZonderActies(bewegingen: Beweging[]): Beweging[] {\n return bewegingen.map(beweging => {\n beweging.ritActies = [];\n return beweging;\n });\n }\n\n private verzamelAlleActies(ritDelen: Ritdeel[], ongeplandeActies: Actie[]): Actie[] {\n const retval = [];\n retval.push(...ongeplandeActies);\n retval.push(...ritDelen.filter(ritdeel => ritdeel.acties.length > 0).flatMap(ritdeel => ritdeel.acties));\n return retval;\n }\n\n setOrigineelTreinPad(treinpad: Rit): void {\n const rit = JSON.parse(JSON.stringify(treinpad));\n\n this.store.dispatch(SetAlgemeneRitInfo(\n new AlgemeneRitInfoDto({\n id: rit.id,\n jaarplanId: rit.jaarplanId,\n volgnummer: rit.volgnummer,\n machineTypeId: rit.machineTypeId,\n machineTypeOmschrijving: rit.machineTypeOmschrijving,\n ritDatum: rit.ritDatum,\n startDatum: rit.startDatum,\n eindDatum: rit.eindDatum,\n ritNaam: rit.ritNaam,\n startLocatie: rit.startLocatie,\n eindLocatie: rit.eindLocatie,\n ritStatus: rit.ritStatus,\n modified: rit.modified,\n modifiedBy: rit.modifiedBy,\n planJobId: rit.planJobId\n })\n ));\n this.origineelTreinPad = rit;\n }\n\n isValideRit$(): Observable<boolean> {\n return this.valideRit$;\n }\n\n isPrinting$(): Observable<boolean> {\n return this.printing$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { SetDebug } from '../state/actions/actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DebugService {\n private readonly listener = this.debugEventListener();\n\n constructor(private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n setDebugFlag(debug: boolean): void {\n this.store.dispatch(SetDebug(debug));\n\n if (debug) {\n document.getElementById('svgContainer').addEventListener('mouseover', this.listener);\n } else {\n document.getElementById('svgContainer').removeEventListener('mouseover', this.listener);\n }\n }\n\n private debugEventListener(): (e: any) => void {\n return (event): void => {\n let elem = event.target;\n let id: string;\n let found = false;\n do {\n id = elem.id;\n if (id.startsWith('p')) {\n const tp = this.sbmService.getTopologyElementByPuic(id.substring(1));\n if (tp) {\n this.printKmInfo(tp);\n found = true;\n }\n }\n elem = elem.parentElement;\n } while (!found && elem);\n };\n }\n\n private printKmInfo(tp: sbblad.TopologyElement): void {\n const kms: sbblad.Kilometrering[] = JsJavaUtil.listToArray(tp.getKilometreringen());\n if (kms.length > 0) {\n let logline = 'Kminfo: ' + tp.getComponentName() + ', ';\n for (const km of kms) {\n logline += km.getKmLint() + ' ' + km.getKmWaarde() + ' ';\n }\n console.log(logline);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { Ritdeel } from '../model/ritdeel';\nimport { InfraModel } from '../optimo';\nimport * as MstActions from '../state/actions/actions';\nimport { ClearProgress, ShowProgress } from '../state/actions/actions';\nimport { navigeerVanaf, setZichtbaarheidAlleRitdelen, toggleZichtbaarheidVoorBewegingen } from '../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\nimport { ViewerControlService } from './viewer-control.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrintBewegingService {\n private ritdelen: Ritdeel[];\n\n constructor(private store: Store<MstEditorState>,\n private viewerControlService: ViewerControlService,\n private sbmService: SignaleringsBeeldManagerService) {\n this.store.select(s => s.ritDelen).subscribe(ritdelen => this.ritdelen = ritdelen);\n }\n\n printBeweging(bewegingId: number, paginationSize: number, iaVersieInfo: InfraModel): Promise<boolean> {\n const gevondenRitdeel: Ritdeel[] = this.ritdelen.filter(r => parseInt(r.getBewegingId(), 10) === bewegingId);\n\n // hide/show de knoppen\n const printing = !!bewegingId && gevondenRitdeel.length === 1;\n this.viewerControlService.setPrinting(printing);\n\n if (!printing) {\n return Promise.reject(new Error('Geen beweging gevonden voor ' + bewegingId));\n }\n\n return new Promise<boolean>((resolve) => {\n const ritdeel = gevondenRitdeel[0];\n if (ritdeel.isNietBeschikbaar()) {\n this.store.dispatch(navigeerVanaf(paginationSize, iaVersieInfo, ritdeel));\n this.store.dispatch(ShowProgress());\n setTimeout(() => this.focusOpBeweging(ritdeel, resolve), 1000);\n } else {\n this.focusOpBeweging(ritdeel, resolve);\n }\n });\n }\n\n private focusOpBeweging(ritdeel: Ritdeel, resolve: Function): void {\n // deselecteer alles\n this.store.dispatch(setZichtbaarheidAlleRitdelen(false));\n // enable ritacties (checkbox) voor alle ritdelen met beweging die matched met bewegingId(s)\n this.store.dispatch(toggleZichtbaarheidVoorBewegingen([parseInt(ritdeel.getBewegingId(), 10)]));\n setTimeout(() => {\n\n // dit neemt niet de vrijebaan elementen mee\n const topoElementen = this.sbmService.bepaalRouteElementen(ritdeel.getRoute());\n const dwangPuics = this.getPuics(topoElementen);\n this.store.dispatch(MstActions.focusOpIds(dwangPuics));\n\n setTimeout(() => {\n // resolve de promise, om aan te geven dat focus klaar is\n resolve(true);\n this.viewerControlService.setPrinting(false);\n this.store.dispatch(ClearProgress());\n }, 1000);\n });\n }\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n\n}\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rpe-component',\n templateUrl: './rpe.component.html'\n})\nexport class RpeComponent implements AfterViewInit {\n @Input() baseurl: string;\n @Input() path: string;\n\n @ViewChild('rpescript') script: ElementRef;\n\n convertToScript(): void {\n const element = this.script.nativeElement;\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (this.baseurl && this.path) {\n script.src = this.baseurl + this.path;\n // eslint-disable-next-line no-console\n console.log('Code geladen van: ' + script.src); //useful for debugging in GWT environment\n }\n const parent = element.parentElement;\n parent.parentElement.replaceChild(script, parent);\n }\n\n ngAfterViewInit(): void {\n this.convertToScript();\n }\n}\n","<div #rpescript style.display=\"none\">\n <ng-content></ng-content>\n</div>\n","import { Actie } from '../optimo';\n\nexport class OngeplandeActie {\n constructor(public actie: Actie,\n public puics: string[]) {\n }\n\n}\n","import { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport Kilometrering = sbblad.Kilometrering;\nimport TopologyElement = sbblad.TopologyElement;\n\nexport class KmRange {\n private constructor(public topologyElement: TopologyElement,\n public vanKilometreringen: Kilometrering[],\n public totKilometreringen: Kilometrering[]) {\n }\n\n public static rangeVoorPuntObject(topologyElement: TopologyElement): KmRange {\n return new KmRange(topologyElement,\n JsJavaUtil.listToArray(topologyElement.getKilometreringen()),\n JsJavaUtil.listToArray(topologyElement.getKilometreringen()));\n }\n\n public static rangeVoorStrekObject(topologyElement: TopologyElement,\n vanKilometreringen: Kilometrering[],\n totKilometreringen: Kilometrering[]): KmRange {\n return new KmRange(topologyElement, vanKilometreringen, totKilometreringen);\n }\n\n public static getKilometrering(lintNaam: string, kilometreringen: Kilometrering[]): Kilometrering {\n const result: Kilometrering[] = kilometreringen.filter(kilometrering => kilometrering.getKmLint() === lintNaam);\n if (result.length >= 1) {\n return result[0];\n }\n return null;\n }\n\n heeftOverlap(kilometrering1: Kilometrering, kilometrering2: Kilometrering): boolean {\n const vanKilometrering = KmRange.getKilometrering(kilometrering1.getKmLint(), this.vanKilometreringen);\n const totKilometrering = KmRange.getKilometrering(kilometrering2.getKmLint(), this.totKilometreringen);\n if (!vanKilometrering || !totKilometrering) {\n return false;\n }\n\n let startKmWaarde = vanKilometrering.getKmWaarde();\n let endKmWaarde = totKilometrering.getKmWaarde();\n if (startKmWaarde > endKmWaarde) {\n const temp = { end: endKmWaarde, start: startKmWaarde };\n startKmWaarde = temp.end;\n endKmWaarde = temp.start;\n }\n\n const actieStartKmWaarde = kilometrering1.getKmWaarde();\n const actieEndKmWaarde = kilometrering2.getKmWaarde();\n return endKmWaarde >= actieStartKmWaarde && actieEndKmWaarde >= startKmWaarde;\n }\n}\n","export class WisselKantCode {\n constructor(public naam: string, public kantCode: string) {\n }\n}\n","export class MeldingEvent {\n constructor(public meldingMessage: string, public meldingLevel: string) {\n }\n}\n","import { MeldingEvent } from '../model/melding-event';\n\nexport const MELDING_LEVEL_ERROR = 'error';\nexport const MELDING_LEVEL_WARNING = 'warn';\nexport const MELDING_LEVEL_INFO = 'info';\n\nexport class MeldingBuilder {\n\n public static nietGevondenTakkenOngeplandeActies(nietGevondenTakken: string[]): MeldingEvent {\n return new MeldingEvent('Niet gevonden takken uit \\'OngeplandeActies\\': ' + nietGevondenTakken, MELDING_LEVEL_INFO);\n }\n\n public static actieHighlightError(actieZonderElementen: number[]): MeldingEvent {\n return new MeldingEvent('Highlight error. Geen elementen kunnen vinden voor actie(s) met id: ' + actieZonderElementen,\n MELDING_LEVEL_ERROR);\n }\n}\n","import { Message, Severity } from '../atomic-components/message/';\nimport { Beweging } from '../optimo';\nimport Utils from './utils';\n\nexport class MessageBuilder {\n public static rwpDataNietGevonden(err: string): Message {\n return new Message(Severity.ERROR, 'Error bij ophalen van rijwegplan data: ' + err);\n }\n\n public static rijwegNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`);\n }\n\n public static rijwegplanNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Rijwegplan van PPLG ${ beweging.vanPplg } niet gevonden`);\n }\n\n public static dwangNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Dwang ${ beweging.dwangNummer } voor rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`);\n }\n\n public static nietGevondenSBI(err: string): Message {\n return new Message(Severity.ERROR, 'Error bij het ophalen van signaleringsbeeldinfo: ' + Utils.getValidErorrMessage(err));\n }\n\n public static actieHighlightError(actieZonderElementen: number[]): Message {\n return new Message(Severity.ERROR, 'Highlight error. Geen elementen kunnen vinden voor actie(s) met id: ' + actieZonderElementen);\n }\n\n public static ritFileAlGewijzigdError(beweging: Beweging): Message {\n return new Message(Severity.ERROR, 'Rit bevat een beweging met status \\'Gewijzigd\\': Beweging met ID:' + beweging.id);\n }\n\n public static meerDan12BladenGevonden(bladAmount: number): Message {\n return new Message(Severity.WARNING, 'Warning, Rit bevat ' + bladAmount + ' bladen. Er worden maximaal 12 bladen ondersteund.');\n }\n\n public static nietGevondenTakkenOngeplandeActies(nietGevondenTakken: string[]): Message {\n return new Message(Severity.INFORMATION, 'Info, Niet gevonden takken uit \\'OngeplandeActies\\': ' + nietGevondenTakken);\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { take } from 'rxjs/operators';\nimport { MeldingEvent } from '../model/melding-event';\nimport { Actie } from '../optimo';\nimport { ActieDto, AlgemeneRitInfoDto, MstLoggingDto } from '../resources/mstlogging.resource';\nimport { SignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable()\nexport class LoggingHelper {\n\n constructor(private sbmService: SignaleringsBeeldManagerService,\n private store: Store<MstEditorState>) {\n }\n\n public maakLogDTO(melding: MeldingEvent, actie: Actie): MstLoggingDto {\n let iaVersie = '';\n let algemeneRitInfoDto: AlgemeneRitInfoDto = null;\n let actieDto: ActieDto = null;\n\n this.store.select('algemeneRitInfoDto').pipe(take(1)).subscribe(dto => {\n algemeneRitInfoDto = dto;\n });\n this.store.select('iaVersie').pipe(take(1)).subscribe(ia => {\n iaVersie = ia.versie;\n });\n\n if (actie) {\n actieDto = new ActieDto({\n pplgNaam: actie.pplgNaam,\n ritActieTypeOmschrijving: actie.ritActieTypeOmschrijving,\n ritActieStatus: actie.ritActieStatus,\n bewegingId: actie.bewegingId,\n wisselType: actie.wisselType,\n wisselNaam: actie.wisselNaam,\n wisselKantCode: actie.wisselKantCode,\n vanKilometerlint: actie.vanKilometerlint,\n vanKilometrering: actie.vanKilometrering,\n totKilometerlint: actie.totKilometerlint,\n totKilometrering: actie.totKilometrering\n });\n }\n return new MstLoggingDto({\n iaVersie,\n meldingLevel: melding.meldingLevel,\n meldingMessage: melding.meldingMessage,\n actieDto,\n algemeneRitInfoDto,\n sbinfoDtos: this.getSbInfoDtos()\n });\n }\n\n public getSbInfoDtos(): SignaleringsbeeldInfoDto[] {\n const sbInfoDtos: SignaleringsbeeldInfoDto[] = [];\n this.store.select('visibleSbInfoDtos').pipe(take(1)).subscribe(dtos => {\n dtos.forEach(d => {\n sbInfoDtos.push(d as SignaleringsbeeldInfoDto);\n });\n });\n return sbInfoDtos;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { MessagesService } from '../atomic-components/services/messages.service';\nimport { KmRange } from '../model/km-range';\nimport { MeldingEvent } from '../model/melding-event';\nimport { Ritdeel } from '../model/ritdeel';\nimport { WisselKantCode } from '../model/wissel-kant-code';\nimport { Actie } from '../optimo';\nimport { MstLoggingDto, MstLoggingResource } from '../resources/mstlogging.resource';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { LoggingHelper } from './logging-helper';\nimport { MeldingBuilder } from './melding-builder';\nimport { MessageBuilder } from './message-builder';\nimport { ArrayMultimap } from './multi-map';\nimport Kilometrering = sbblad.Kilometrering;\nimport TopologyElement = sbblad.TopologyElement;\n\n/**\n * export const RIT_ACTIE_1 = 1;\n * export const RIT_ACTIE_SLIJPEN_VIADUCT_KLEIN = 2;\n * export const RIT_ACTIE_SLIJPEN_BOOG = 3;\n */\nexport const RIT_ACTIE_SLIJPEN_WISSEL_KLEIN = 4;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_GROOT = 5;\n/**\n * export const RIT_ACTIE_SLIJPEN_OVERWEG = 6;\n * export const RIT_ACTIE_SLIJPEN_BRUG_GROOT = 7;\n * export const RIT_ACTIE_SLIJPEN_BRUG_KLEIN = 8;\n * export const RIT_ACTIE_SLIJPEN_SPOORTAK = 9;\n */\nexport const RIT_ACTIE_VST = 10;\n/**\n * export const RIT_ACTIE_BVLBLD_T = 11;\n * export const RIT_ACTIE_SLIJPEN_VIADUCT_GROOT = 12;\n * export const RIT_ACTIE_PANTCONT_T = 13;\n * export const RIT_ACTIE_RIJDRLIG_T = 14;\n * export const RIT_ACTIE_SPSTLAPR_T = 15;\n * export const RIT_ACTIE_SPSTOPPDEF_T = 16;\n * export const RIT_ACTIE_SPSTOPPBLD_T = 17;\n * export const RIT_ACTIE_SPSTDEF_T = 18;\n * export const RIT_ACTIE_SPSTDWPR_T = 19;\n * export const RIT_ACTIE_BAANBLD_T = 20;\n * export const RIT_ACTIE_SPGEOM_T = 21;\n * export const RIT_ACTIE_22 = 22;\n * export const RIT_ACTIE_23 = 23;\n * export const RIT_ACTIE_RIJDRDIK_T = 24;\n * export const RIT_ACTIE_SLIJPEN_TUNNEL = 25;\n */\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_2_KOMMA_5 = 26;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_29 = 27;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_20 = 28;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18_KOMMA_5 = 29;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18 = 30;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_15 = 31;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_12 = 32;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_10 = 33;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_34_KOMMA_7 = 34;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_9 = 35;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7_KOMMA_5 = 36;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7 = 37;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_6 = 38;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_5 = 39;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4_KOMMA_5 = 40;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4 = 41;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_3_KOMMA_5 = 42;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_8 = 43;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_39_KOMMA_1 = 44;\n\nexport class MstKilometrering implements sbblad.Kilometrering {\n constructor(private readonly kmLint: string, private readonly kmWaarde: number) {\n }\n\n getKmLint(): string {\n return this.kmLint;\n }\n\n getKmWaarde(): number {\n return this.kmWaarde;\n }\n}\n\n@Injectable()\nexport class ActieHelper {\n static readonly HALF_ENGELS_WISSEL = 'HalveEngelseWissel';\n static readonly ENGELS_WISSEL = 'EngelseWissel';\n static readonly SLIJPEN_WISSEL_ACTIES = [\n RIT_ACTIE_SLIJPEN_WISSEL_KLEIN,\n RIT_ACTIE_SLIJPEN_WISSEL_GROOT,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_2_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_29,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_20,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_15,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_12,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_10,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_34_KOMMA_7,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_9,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_6,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_3_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_8,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_39_KOMMA_1];\n\n private debug: boolean;\n\n constructor(private readonly sbmService: SignaleringsBeeldManagerService,\n private readonly mstLogResource: MstLoggingResource,\n private readonly messagesService: MessagesService,\n private readonly store: Store<MstEditorState>,\n private readonly loggingHelper: LoggingHelper) {\n this.store.select('debug').subscribe(debug => this.debug = debug);\n }\n\n public static getActieTopoElements(ritDeel: Ritdeel, sbmService: SignaleringsBeeldManagerService): TopologyElement[] {\n const actieTopoElements = ritDeel.getTopologieElementen().slice();\n const extraTopoElement = ActieHelper.getVoorSectieVanBeginSein(ritDeel, sbmService);\n if (extraTopoElement) {\n actieTopoElements.splice(0, 0, extraTopoElement);\n }\n return actieTopoElements;\n }\n\n static isVSTActie(actie): boolean {\n return actie.ritActieTypeId === RIT_ACTIE_VST;\n }\n\n static isWisselSlijpenActie(actie): boolean {\n return this.SLIJPEN_WISSEL_ACTIES.indexOf(actie.ritActieTypeId) >= 0;\n }\n\n static bepaalTakId(actie): string {\n return actie.pplgNaam + '-' + actie.wisselNaam + '-' + actie.wisselKantCode;\n }\n\n static isHeelOfHalfEngelsWisselActie(actie: Actie): boolean {\n return actie.infraObjectType === this.HALF_ENGELS_WISSEL || actie.infraObjectType === this.ENGELS_WISSEL;\n }\n\n static getVSTActieOmschrijving(actie: Actie): string {\n if (this.isEngelseWissel(actie)) {\n const wisselNamen = this.getWisselDelen(actie.wisselNaam);\n const kantCodes = this.getKantCodes(actie.wisselKantCode);\n return `VST ${ wisselNamen[0] } ${ kantCodes[0] } - ${ wisselNamen[1] } ${ kantCodes[1] }`;\n } else {\n return `VST ${ actie.wisselNaam } ${ ActieHelper.getKantcodeTekst(actie.wisselKantCode) }`;\n }\n }\n\n public static actieComparator(actie1: Actie, actie2: Actie): number {\n if (actie1.vanKilometrering !== actie2.vanKilometrering) {\n return actie1.vanKilometrering > actie2.vanKilometrering ? 1 : -1;\n }\n if (actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {\n return actie1.ritActieTypeOmschrijving > actie2.ritActieTypeOmschrijving ? 1 : -1;\n }\n if (actie1.wisselNaam !== actie2.wisselNaam) {\n return actie1.wisselNaam > actie2.wisselNaam ? 1 : -1;\n }\n if (actie1.wisselKantCode !== actie2.wisselKantCode) {\n return actie1.wisselKantCode > actie2.wisselKantCode ? 1 : -1;\n }\n return 0;\n }\n\n static getWisselKantCodes(actie: Actie): WisselKantCode[] {\n const wisselKantCodes: WisselKantCode[] = [];\n\n const namen = this.getWisselDelen(actie.wisselNaam);\n const kantCodes = this.getKantCodes(actie.wisselKantCode);\n for (let i = 0; i < namen.length; i++) {\n wisselKantCodes.push(new WisselKantCode(namen[i], kantCodes[i]));\n }\n\n return wisselKantCodes;\n }\n\n static getWisselDelen(wisselNaam: string): string[] {\n return wisselNaam.split('|');\n }\n\n static getKantCodes(kantCodes: string): string[] {\n if (kantCodes.length === 2) {\n return [kantCodes.charAt(0), kantCodes.charAt(1)];\n }\n return [kantCodes];\n }\n\n private static getVoorSectieVanBeginSein(ritDeel: Ritdeel, sbmService: SignaleringsBeeldManagerService): TopologyElement {\n // RPE toont een rijweg vanaf de sectiescheiding behorend bij het beginsein. MST levert bewegingen waarbij acties gedaan moeten\n // worden tussen het beginsein en de genoemde sectiescheiding. Om deze te kunnen tonen voegen we de voorsectie van het beginsein\n // toe aan de lijst met route elementen.\n const beginRouteSein = ritDeel.getRoute().getBeginSein();\n const sbSein = sbmService.getSBSein(beginRouteSein);\n return sbSein ? sbSein.getVoorSectie() : null;\n }\n\n// make sure the elems are sorted in ascending order\n private static sorteerTopoElementen(topoElems: sbblad.TopologyElement[]): sbblad.TopologyElement[] {\n const topoElementen = topoElems.slice();\n let lint = null;\n let first = null;\n let second = null;\n\n for (const topoElement of topoElementen) {\n let kilometreringen = null;\n\n const kms = JsJavaUtil.listToArray(topoElement.getKilometreringen());\n if (kms !== null && kms.length > 0) {\n kilometreringen = kms;\n }\n\n if (kilometreringen && !first) {\n first = kilometreringen[0].getKmWaarde();\n lint = kilometreringen[0].getKmLint();\n } else if (kilometreringen && first && !second) {\n const km = KmRange.getKilometrering(lint, kilometreringen);\n if (km) {\n second = km.getKmWaarde();\n }\n }\n if (first && second && first > second) {\n topoElementen.reverse();\n break;\n }\n }\n return topoElementen;\n }\n\n private static corrigeerTopoElementenZonderKms(topoElementenZonderKms, vanKilometreringen: sbblad.Kilometrering[],\n totKilometreringen: sbblad.Kilometrering[], kmRanges: KmRange[]): void {\n topoElementenZonderKms.forEach(e => {\n if (!vanKilometreringen && totKilometreringen) {\n vanKilometreringen = [new MstKilometrering(totKilometreringen[0].getKmLint(), -100000)];\n }\n if (!totKilometreringen && vanKilometreringen) {\n totKilometreringen = [new MstKilometrering(vanKilometreringen[0].getKmLint(), 100000)];\n }\n\n if (vanKilometreringen[0] > totKilometreringen[0]) {\n kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, -1), this.addKm(totKilometreringen, 1)));\n } else {\n kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, 1), this.addKm(totKilometreringen, -1)));\n }\n });\n }\n\n private static addKm(kms: Kilometrering[], aantal: number): Kilometrering[] {\n const retval = [];\n for (const km of kms) {\n retval.push(new MstKilometrering(km.getKmLint(), km.getKmWaarde() + aantal));\n }\n return retval;\n }\n\n private static kanActiesBepalen(ritdeel: Ritdeel): Actie[] {\n return ritdeel.isZichtbaar() && ritdeel.acties;\n }\n\n private static isKilometreringAanwezig(fragmenten: sbblad.TopologyElement[]): boolean {\n let aanwezig = false;\n for (const fragment of fragmenten) {\n const kms = JsJavaUtil.listToArray(fragment.getKilometreringen());\n if (kms !== null && kms.length > 0) {\n aanwezig = true;\n break;\n }\n }\n return aanwezig;\n }\n\n private static bepaalSpoortakFragmenten(spoortak: sbblad.Spoortak): sbblad.TopologyElement[] {\n return JsJavaUtil.listToArray(spoortak.getTakElementen());\n }\n\n private static bepaalSpoortakFragmentenPuics(fragmenten: sbblad.TopologyElement[]): string[] {\n const puics = [];\n fragmenten.forEach(deel => puics.push(deel.getPuic()));\n return puics;\n }\n\n private static isEngelseWissel(actie: Actie): boolean {\n return actie.wisselNaam.includes('|') && actie.wisselKantCode.length === 2;\n }\n\n private static getKantcodeTekst(kantcode: string): string {\n let tekst = 'Voor';\n if (this.isKantCodeLinks(kantcode)) {\n tekst = 'Links';\n } else if (this.isKantCodeRechts(kantcode)) {\n tekst = 'Rechts';\n }\n return tekst;\n }\n\n private static isKantCodeRechts(kantcode: string): boolean {\n return kantcode === 'R';\n }\n\n private static isKantCodeLinks(kantcode: string): boolean {\n return kantcode === 'L';\n }\n\n bepaalPuicsVoorActie(actie: Actie): string[] {\n let puics;\n if (ActieHelper.isVSTActie(actie)) {\n puics = this.bepaalPuicsVoorVSTActie(actie);\n } else if (ActieHelper.isWisselSlijpenActie(actie)) {\n puics = this.bepaalPuicVoorWisselSlijpenActie(actie);\n } else {\n puics = this.bepaalActiePuicsVoorSpoortak(actie);\n }\n return puics;\n }\n\n bepaalActiePuicsUitRitdeel(ritDeel): ArrayMultimap<Actie, string> {// voor highlights\n const map = new ArrayMultimap<Actie, string>();\n if (ActieHelper.kanActiesBepalen(ritDeel)) {\n ritDeel.acties.forEach(a => {\n map.putAll(a, this.bepaalPuicsVoorActie(a));\n });\n }\n return map;\n }\n\n bepaalActiesPuics(acties: Actie[], topoElem: TopologyElement[]): ArrayMultimap<Actie, string> {\n const topoElementen = ActieHelper.sorteerTopoElementen(topoElem);\n\n const kmRanges = this.verwerkTopoElementen(topoElementen);\n return this.verwerkActies(acties, kmRanges);\n }\n\n private verwerkActies(acties: Actie[], kmRanges: KmRange[]): ArrayMultimap<Actie, string> {\n const actieZonderElementen: number[] = [];\n const logMeldingDTOs: MstLoggingDto[] = [];\n\n const retval = new ArrayMultimap<Actie, string>();\n acties.forEach(actie => {\n if (ActieHelper.isWisselSlijpenActie(actie)) {\n const puicArray = this.bepaalPuicVoorWisselSlijpenActie(actie);\n retval.putAll(actie, puicArray);\n } else {\n const puics = [];\n kmRanges.forEach(kmRange => {\n let vanKilometrering = new MstKilometrering(actie.vanKilometerlint, actie.vanKilometrering);\n let totKilometrering = new MstKilometrering(actie.totKilometerlint, actie.totKilometrering);\n if (actie.vanKilometrering > actie.totKilometrering) {\n const temp = { van: vanKilometrering, tot: totKilometrering };\n vanKilometrering = temp.tot;\n totKilometrering = temp.van;\n }\n if (kmRange.heeftOverlap(vanKilometrering, totKilometrering)) {\n puics.push(kmRange.topologyElement.getPuic());\n }\n });\n if (puics.length === 0) {\n actieZonderElementen.push(actie.id);\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError(actieZonderElementen);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n }\n retval.putAll(actie, puics);\n }\n });\n this.logLegeMeldingDto(logMeldingDTOs);\n return retval;\n }\n\n private logLegeMeldingDto(logMeldingDTOs: MstLoggingDto[]): void {\n if (logMeldingDTOs.length > 0) {\n this.mstLogResource.logErrorMessages(logMeldingDTOs);\n }\n }\n\n private verwerkTopoElementen(topoElementen: sbblad.TopologyElement[]): KmRange[] {\n const kmRanges: KmRange[] = [];\n\n let topoElementenZonderKms = [];\n let laatstePuntKms: Kilometrering[] = null;\n topoElementen.forEach(elem => {\n const kms: Kilometrering[] = JsJavaUtil.listToArray(elem.getKilometreringen());\n if (kms.length > 0) {\n ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, kms, kmRanges);\n topoElementenZonderKms = [];\n kmRanges.push(KmRange.rangeVoorPuntObject(elem));\n laatstePuntKms = kms;\n } else {\n topoElementenZonderKms.push(elem);\n }\n });\n if (topoElementenZonderKms.length > 0 && laatstePuntKms) {\n ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, null, kmRanges);\n }\n return kmRanges;\n }\n\n private bepaalActiePuicsVoorSpoortak(actie: Actie): string[] {\n const spoortak = this.sbmService.getSbSpoortak(ActieHelper.bepaalTakId(actie));\n\n let puics = [];\n if (!spoortak) {\n return puics;\n }\n const fragmenten = ActieHelper.bepaalSpoortakFragmenten(spoortak);\n if (ActieHelper.isKilometreringAanwezig(fragmenten)) {\n const map = this.bepaalActiesPuics([actie], fragmenten);\n for (const key of Array.from(map.keys())) {\n map.get(key).forEach(x => puics.push(x));\n }\n } else {\n puics = ActieHelper.bepaalSpoortakFragmentenPuics(fragmenten);\n }\n return puics;\n }\n\n private bepaalPuicsVoorVSTActie(actie: Actie): string[] {\n if (ActieHelper.isHeelOfHalfEngelsWisselActie(actie)) {\n const retval = [];\n const wisselDelen = ActieHelper.getWisselDelen(actie.wisselNaam);\n const puicsEersteWissel = this.bepaalWisselPuics(wisselDelen[0], actie.pplgNaam, actie.wisselKantCode[0]);\n const puicsTweedeWissel = this.bepaalWisselPuics(wisselDelen[1], actie.pplgNaam, actie.wisselKantCode[1]);\n\n const puic1 = this.sbmService.getEersteVerbindingPuicVoorSplitEngelseWissel(wisselDelen[0], actie.wisselKantCode[0]);\n if (puic1 !== '') {\n retval.push(puic1);\n }\n const puic2 = this.sbmService.getEersteVerbindingPuicVoorSplitEngelseWissel(wisselDelen[1], actie.wisselKantCode[1]);\n if (puic2 !== '') {\n retval.push(puic2);\n }\n retval.push(...puicsEersteWissel);\n retval.push(...puicsTweedeWissel);\n return retval;\n } else {\n return this.bepaalWisselPuics(actie.wisselNaam, actie.pplgNaam, actie.wisselKantCode);\n }\n }\n\n private bepaalWisselPuics(wisselNaam: string, pplgNaam: string, kantcode: string): string[] {\n const wissel = this.sbmService.getSBWissel(wisselNaam, pplgNaam);\n if (!wissel) {\n return [];\n }\n const kantElement = this.bepaalKantElement(kantcode, wissel);\n if (!kantElement) {\n return [];\n }\n const storingSymboolPuic = wissel.getStoringSymboolPuic();\n\n return [storingSymboolPuic, kantElement.getPuic()];\n }\n\n private bepaalKantElement(kantcode: string, wissel: sbblad.Wissel): sbblad.SpoortakFragment {\n if (ActieHelper.isKantCodeRechts(kantcode)) {\n return wissel.getRight();\n }\n if (ActieHelper.isKantCodeLinks(kantcode)) {\n return wissel.getLeft();\n }\n return null;\n }\n\n private bepaalPuicVoorWisselSlijpenActie(actie: Actie): string[] {\n const storingsSymboolPuic = this.sbmService.getSBWissel(actie.wisselNaam, actie.pplgNaam)?.getStoringSymboolPuic();\n if (!storingsSymboolPuic && this.debug) {\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError([actie.id]);\n this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));\n this.mstLogResource.logErrorMessages([this.loggingHelper.maakLogDTO(melding, actie)]);\n }\n return storingsSymboolPuic ? [storingsSymboolPuic] : [];\n }\n}\n\n\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\nimport {domein, JsJavaUtil} from '@loxia/rijwegen';\nimport {Store} from '@ngrx/store';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {OngeplandeActie} from '../../model/ongeplande-actie';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {Actie} from '../../optimo';\nimport {SignaleringsBeeldManagerService} from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../../state/actions/actions';\nimport * as RitdelenActions from '../../state/actions/ritdelen.actions';\nimport {MstEditorState} from '../../state/mst-editor-state';\nimport {ActieHelper} from '../../util/actie-helper';\nimport {ArrayMultimap} from '../../util/multi-map';\n\n@Component({\n selector: 'ritdelen-lijst',\n templateUrl: './ritdelen-lijst.component.html',\n styleUrls: ['./ritdelen-lijst.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class RitdelenLijstComponent implements OnDestroy {\n @Input() nietGeplandeActies: Actie[];\n\n @Output() focusEmitter = new EventEmitter<Ritdeel>();\n @Output() keurAlleActiesGoed = new EventEmitter();\n\n ritdeelViewModels: RitdeelViewModel[];\n selectedRitdeel: Ritdeel;\n selectedRitdeelActies: Actie[] = [];\n selectedRitdeelOngeplandeActies: OngeplandeActie[] = [];\n disableActieKnoppenVanRitdeel: boolean;\n editable: boolean;\n\n private ongeplandeActiesMap: ArrayMultimap<string, OngeplandeActie>;\n private geplandeActies: ArrayMultimap<Actie, string>;\n private readonly NG_ACTIE_PREFIX = '* ';\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private readonly store: Store<MstEditorState>, private readonly sbmService: SignaleringsBeeldManagerService) {\n this.subscriptions.push(store.select('ritDelen').subscribe((ritdelen) => {\n this.ritdeelViewModels = ritdelen?.map(ritdeel => {\n return new RitdeelViewModel(\n ritdeel,\n this.selectedRitdeelClass(ritdeel),\n this.isRitdeelZichtbaar(ritdeel),\n this.getTitle(ritdeel),\n ritdeel.isNietBeschikbaar(),\n this.isRitdeelNieuw(ritdeel),\n ritdeel.getVanPrlSpoor(),\n ritdeel.getNaarPrlSpoorText(),\n ritdeel.getDwangNummer(),\n ritdeel.getPplgString(),\n this.getTreinNummer(ritdeel));\n })\n }));\n this.subscriptions.push(store.select('ongeplandeActies').subscribe(acties => this.ongeplandeActiesMap = acties));\n this.subscriptions.push(store.select('geplandeActies').subscribe(acties => this.geplandeActies = acties));\n this.subscriptions.push(store.select('editable').subscribe(editable => this.editable = editable));\n\n // listen to changes from svg-viewer-component, saving ritdeel in store isn't cool because of all the gwt in it. This is\n // just to make changes within the angular lifecycle.\n this.subscriptions.push(store.select('selectedRitdeelId').pipe(\n filter(id => !id)).subscribe(this.deselectRitdeel\n ));\n\n this.subscriptions.push(\n combineLatest([\n this.store.select('ritDelen'),\n this.store.select('ongeplandeActies')]\n ).subscribe(() => this.updateOngeplandeActiesList()));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n isRitdeelZichtbaar(ritdeel: Ritdeel): boolean {\n return ritdeel.isZichtbaar();\n }\n\n toggleRitdeelZichtbaarheid(ritdeel: Ritdeel): void {\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.toggleRitdeelZichtbaar(ritdeel));\n }\n\n toggleZichtbaarheidAlleRitdelen(checked: boolean): void {\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.setZichtbaarheidAlleRitdelen(checked));\n }\n\n isRitdeelNieuw(ritdeel: Ritdeel): string {\n return ritdeel.isNieuw() ? '+' : '';\n }\n\n getTitle(ritdeel: Ritdeel): string {\n return ritdeel.getBewegingId();\n }\n\n getTreinNummer(ritdeel: Ritdeel): string {\n return ritdeel.getTreinNummer();\n }\n\n deleteRitdeel(ritdeel: Ritdeel): void {\n ritdeel.acties.forEach(actie => {\n this.verhuisActieNaarOngepland(actie);\n });\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.deleteRitdeel(ritdeel));\n }\n\n deleteActiesUitRit(): void {\n this.selectedRitdeel.acties.slice().forEach(actie => {\n this.deleteActieUitRit(actie);\n });\n }\n\n deleteActieUitRit(actie): void {\n const acties = this.selectedRitdeel.acties;\n const idx = acties.indexOf(actie);\n if (idx >= 0) {\n this.verhuisActieNaarOngepland(actie);\n this.store.dispatch(RitdelenActions.deleteRitdeelActie(this.selectedRitdeel, acties[idx]));\n }\n const index = this.nietGeplandeActies.indexOf(actie);\n if (index < 0) {\n this.nietGeplandeActies.push(actie);\n }\n }\n\n private verhuisActieNaarOngepland(actie): void {\n const puics = this.geplandeActies.get(actie);\n\n if (puics && puics.length > 0) {\n this.store.dispatch(MstActions.AddOngeplandeActie(new OngeplandeActie(actie, puics)));\n this.store.dispatch(MstActions.DeleteGeplandeActie(actie, puics));\n }\n }\n\n voegActiesToeAanRit(): void {\n const acties = this.selectedRitdeelOngeplandeActies;\n acties.slice().forEach(actie => {\n this.voegActieToeAanRit(actie);\n });\n }\n\n voegActieToeAanRit(ongeplandeActie: OngeplandeActie): void {\n const idx = this.selectedRitdeelOngeplandeActies.indexOf(ongeplandeActie);\n if (idx >= 0) {\n this.store.dispatch(RitdelenActions.addRitdeelActie(this.selectedRitdeel, this.selectedRitdeelOngeplandeActies[idx].actie));\n this.store.dispatch(MstActions.AddGeplandeActie(ongeplandeActie.actie, ongeplandeActie.puics));\n this.store.dispatch(MstActions.DeleteOngeplandeActie(ongeplandeActie));\n }\n }\n\n updateOngeplandeActiesList(): void {\n if (this.selectedRitdeel) {\n this.selectedRitdeelOngeplandeActies = [];\n const ritPuics: string[] = [];\n const ritdeelTopoElements = ActieHelper.getActieTopoElements(this.selectedRitdeel, this.sbmService);\n const wisselObjecten: domein.Wissel[] = JsJavaUtil.listToArray(this.selectedRitdeel.getRoute().getWisselObjectenInDeRoute());\n\n ritdeelTopoElements.forEach(elem => ritPuics.push(elem.getPuic()));\n const ongeplandeActiesArray = this.ongeplandeActiesMap.values();\n ongeplandeActiesArray.forEach(oa => {\n const acties = this.ritdeelViewModels.flatMap(rd => rd.ritdeel.acties);\n const alreadyAdded = acties.filter(a => a.id === oa.actie.id).length > 0;\n if (!alreadyAdded) {\n let oaMatch;\n if (ActieHelper.isVSTActie(oa.actie)) {\n oaMatch = this.matchedWisselMetKantCodeInVSTActie(oa, wisselObjecten) ? oa : undefined;\n } else if (oa.puics.filter(p => ritPuics.includes(p) || this.bevatWisselPuic(ritPuics, p)).length > 0) {\n oaMatch = oa;\n }\n\n const alreadyAddedAsOngepland = this.selectedRitdeelOngeplandeActies.filter(a => a.actie.id === oa.actie.id).length > 0;\n if (oaMatch && !alreadyAddedAsOngepland) {\n this.selectedRitdeelOngeplandeActies.push(oaMatch);\n }\n }\n });\n }\n }\n\n matchedWisselMetKantCodeInVSTActie(ongeplandeActie: OngeplandeActie, wissels: domein.Wissel[]): boolean {\n const pplg = ongeplandeActie.actie.pplgNaam;\n const wisselKantCodes = ActieHelper.getWisselKantCodes(ongeplandeActie.actie);\n\n let gevondenWissels = 0;\n let gevondenWisselKantCodes = 0;\n\n wisselKantCodes.forEach((wisselKantCode) => {\n const gevondenWissel = this.findWisselOpNaamEnPplg(wissels, wisselKantCode.naam, pplg);\n\n if (gevondenWissel) {\n gevondenWissels++;\n if (this.getKantCode(gevondenWissel.getStand()) === wisselKantCode.kantCode) {\n gevondenWisselKantCodes++;\n }\n }\n });\n\n return gevondenWissels > 0 && gevondenWissels === gevondenWisselKantCodes;\n }\n\n private findWisselOpNaamEnPplg(wissels: domein.Wissel[], wisselNaam: string, pplgNaam: string): domein.Wissel {\n return wissels.find(wo => wo.getName() === wisselNaam && wo.getPPLG() === pplgNaam);\n }\n\n private bevatWisselPuic(ritPuics: string[], p): boolean {\n return ritPuics.includes(this.sbmService.getWisselMetStoringskaderPuic(p)?.getPuic());\n }\n\n selectedRitdeelClass(ritdeel: Ritdeel): string {\n if (ritdeel.getZichtbaarheidBuitenPaginatie()) {\n if (ritdeel.equals(this.selectedRitdeel)) {\n return 'selected';\n }\n return 'visible-outside-window';\n }\n if (ritdeel.isNietBeschikbaar()) {\n return 'disabled';\n }\n if (ritdeel.equals(this.selectedRitdeel)) {\n return 'selected';\n }\n return '';\n }\n\n selectRitdeel(event: MouseEvent, ritdeel: Ritdeel): void {\n if (event?.ctrlKey) {\n this.focusEmitter.emit(ritdeel);\n } else {\n if (ritdeel?.equals(this.selectedRitdeel)) {\n this.deselectRitdeel();\n return;\n }\n\n this.selectedRitdeel = ritdeel;\n this.disableActieKnoppenVanRitdeel = !this.selectedRitdeel.isZichtbaar();\n\n if (ritdeel.acties) {\n this.selectedRitdeelActies = ritdeel.acties;\n this.updateOngeplandeActiesList();\n } else {\n this.selectedRitdeelActies = [];\n this.selectedRitdeelOngeplandeActies = [];\n }\n }\n }\n\n actieOmschrijvingTekst(actie: Actie): string {\n const prefix = this.bepaalPrefixVoorActieOmschrijving(actie);\n if (ActieHelper.isVSTActie(actie)) {\n return this.maakVstActieOmschrijving(actie, prefix);\n }\n return prefix + actie.ritActieTypeOmschrijving;\n }\n\n private maakVstActieOmschrijving(actie: Actie, prefix: string): string {\n return `${ prefix }${ ActieHelper.getVSTActieOmschrijving(actie) }`;\n }\n\n bepaalPrefixVoorActieOmschrijving(actie: Actie): string {\n const prefix = '';\n if (this.selectedRitdeel.acties.includes(actie)) {\n // Afwijkende naam bij niet gevisualiseerde actie in rit\n const puics = this.geplandeActies.get(actie);\n return puics.length > 0 ? prefix : this.NG_ACTIE_PREFIX;\n }\n return prefix;\n }\n\n actieVanKmTekst(actie: Actie): string {\n if (ActieHelper.isWisselSlijpenActie(actie)) {\n return actie.wisselNaam;\n }\n return actie.vanKilometerlint ? actie.vanKilometerlint + ' ' + actie.vanKilometrering : '-';\n }\n\n actieTotKmTekst(actie: Actie): string {\n return actie.totKilometerlint ? actie.totKilometerlint + ' ' + actie.totKilometrering : '-';\n }\n\n deselectRitdeel(): void {\n this.disableActieKnoppenVanRitdeel = false;\n this.selectedRitdeel = undefined;\n this.selectedRitdeelActies = [];\n this.selectedRitdeelOngeplandeActies = [];\n }\n\n getPplgString(ritdeel: Ritdeel): string {\n return ritdeel.getPplgString();\n }\n\n private getKantCode(stand: domein.Stand): string {\n if (stand === window['domein'].Stand.LINKS) {\n return 'L';\n }\n return 'R';\n }\n\n planAlleRitActies(): void {\n this.keurAlleActiesGoed.emit();\n this.deselectRitdeel();\n }\n}\n\nclass RitdeelViewModel {\n constructor(\n readonly ritdeel: Ritdeel,\n readonly selectedRitdeelClass: string,\n readonly isZichtbaar: boolean,\n readonly title: string,\n readonly isNietBeschikbaar: boolean,\n readonly isNieuw: string,\n readonly vanPrlSpoor: string,\n readonly naarPrlSpoor: string,\n readonly dwangNummer: number,\n readonly pplgString: string,\n readonly treinNummer: string\n ) {\n }\n}\n","<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","import {Component, EventEmitter, HostListener, OnDestroy, Output} from '@angular/core';\nimport {Store} from '@ngrx/store';\nimport {Subscription} from 'rxjs';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {setRitdeelZichtbaar, setZichtbaarheidAlleRitdelen} from '../../state/actions/ritdelen.actions';\nimport {MstEditorState} from '../../state/mst-editor-state';\n\n@Component({\n selector: 'ritdelen-view',\n templateUrl: './ritdelen-view.component.html',\n styleUrls: ['./ritdelen-view.component.scss']\n})\nexport class RitdelenViewComponent implements OnDestroy {\n @Output() focusEmitter = new EventEmitter<Ritdeel>();\n\n @HostListener('window:keyup', ['$event'])\n keyEvent(event: KeyboardEvent): void {\n if (event.key === 'ArrowLeft' && this.selectedRitdeelIndex > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex - 1);\n } else if (event.key === 'ArrowRight' && this.selectedRitdeelIndex < this.ritdeelViewModels.length) {\n this.selectRitdeel(this.selectedRitdeelIndex + 1);\n }\n }\n\n ritdeelViewModels: RitdeelViewModel[] = [];\n selectedRitdeelIndex = -1;\n\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private readonly store: Store<MstEditorState>) {\n this.subscriptions.push(store.select('ritDelen').subscribe(ritdelen => this.handleRitDelenUpdate(ritdelen)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n selectedRitdeelClass(ritdeel: Ritdeel): string {\n const ritdeelIndex = this.ritdeelViewModels.findIndex(r => r.ritdeel === ritdeel);\n if (this.selectedRitdeelIndex !== -1 && this.selectedRitdeelIndex === ritdeelIndex) {\n return 'selected';\n }\n if (ritdeel.getZichtbaarheidBuitenPaginatie()) {\n return 'visible-outside-window';\n }\n if (ritdeel.isNietBeschikbaar()) {\n return 'disabled';\n }\n return '';\n }\n\n selectRitdeel(index: number): void {\n if (this.selectedRitdeelIndex >= 0) {\n this.store.dispatch(setRitdeelZichtbaar(this.ritdeelViewModels[this.selectedRitdeelIndex].ritdeel, false));\n }\n this.selectedRitdeelIndex = index;\n const ritdeel = this.ritdeelViewModels[index].ritdeel;\n this.focusEmitter.emit(ritdeel);\n this.store.dispatch(setRitdeelZichtbaar(ritdeel, true));\n }\n\n private handleRitDelenUpdate(ritdelen: Ritdeel[]): void {\n this.ritdeelViewModels = ritdelen.map(ritdeel => new RitdeelViewModel(\n ritdeel,\n ritdeel.getVanPrlSpoor(),\n ritdeel.getNaarPrlSpoor(),\n ritdeel.getDwangNummer(),\n ritdeel.getVanSeinName(),\n ritdeel.getNaarSeinName(),\n ritdeel.getTreinNummer()\n ));\n\n setTimeout(() => {\n if (this.meerdereRitDelenZichtbaar()) {\n this.store.dispatch(setZichtbaarheidAlleRitdelen(false));\n if (this.ritdelenBeschikbaarMaarZonderSelectie()) {\n this.selectRitdeel(0);\n } else if (this.ritdeelViewModels.length > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex);\n }\n }\n });\n }\n\n private ritdelenBeschikbaarMaarZonderSelectie(): boolean {\n return this.ritdeelViewModels.length > 0 && this.selectedRitdeelIndex < 0;\n }\n\n private meerdereRitDelenZichtbaar(): boolean {\n let count = 0;\n for (const ritdeelViewModel of this.ritdeelViewModels) {\n if (ritdeelViewModel.ritdeel.isNietBeschikbaar()) {\n continue;\n }\n if (ritdeelViewModel.ritdeel.isZichtbaar()) {\n count++;\n if (count > 1) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nclass RitdeelViewModel {\n constructor(\n readonly ritdeel: Ritdeel,\n readonly vanPrlSpoor: string,\n readonly naarPrlSpoor: string,\n readonly dwangNummer: number,\n readonly vanSeinName: string,\n readonly naarSeinName: string,\n readonly treinNummer: string) {\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { filter, map } from 'rxjs/operators';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { InfraModel } from '../../optimo';\nimport { navigeer } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'carousel-controls',\n templateUrl: './carousel-controls.component.html',\n styleUrls: ['./carousel-controls.component.scss']\n})\nexport class CarouselControlsComponent {\n @Input() paginationSize = 4;\n @Input() iaversieinfo: InfraModel;\n @Input() sideNavOpen: boolean;\n\n ritdelen$ = this.store.select('ritDelen').pipe(filter(r => r?.length > 0));\n kanLinks$ = this.ritdelen$.pipe(map(r => this.kanLinksNavigeren(r)));\n kanRechts$ = this.ritdelen$.pipe(map(r => this.kanRechtsNavigeren(r)));\n\n constructor(private store: Store<MstEditorState>) {\n }\n\n private kanLinksNavigeren(ritDelen: Ritdeel[]): boolean {\n return ritDelen.length > this.paginationSize && !ritDelen[0].isBinnenWindow();\n }\n\n private kanRechtsNavigeren(ritDelen: Ritdeel[]): boolean {\n return ritDelen.length > this.paginationSize && !ritDelen[ritDelen.length - 1].isBinnenWindow();\n }\n\n navigeerNaarLinks(event: MouseEvent): void {\n this.store.dispatch(navigeer(event?.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize, this.iaversieinfo));\n }\n\n navigeerNaarRechts(event: MouseEvent): void {\n this.store.dispatch(navigeer(event?.ctrlKey ? 1 : this.paginationSize - 1, this.paginationSize, this.iaversieinfo));\n }\n}\n","<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","import { Component, EventEmitter, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { InfraModel, Rit } from '../../optimo';\nimport { BewegingUtils } from '../../services/beweging-utils.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'viewer-controls',\n templateUrl: './viewer-controls.component.html',\n styleUrls: ['./viewer-controls.component.scss']\n})\nexport class ViewerControlsComponent implements OnChanges {\n @Input() paginationSize = 4;\n @Input() iaversieinfo: InfraModel;\n @Input() treinpad: Rit;\n @Input() goedgekeurd: EventEmitter<Rit>;\n\n printing$ = this.viewerControlsService.isPrinting$();\n valideRit$ = this.viewerControlsService.isValideRit$();\n\n subscriptions = new Subscription();\n editable: boolean;\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private bewegingUtils: BewegingUtils) {\n this.subscriptions.add(this.store.select('editable').subscribe(editable => this.editable = editable));\n }\n\n ngOnChanges({ treinpad }: SimpleChanges): void {\n if (treinpad && this.treinpad) {\n this.viewerControlsService.setOrigineelTreinPad(this.treinpad);\n }\n }\n\n showGoedkeuren(): boolean {\n return this.editable && this.viewerControlsService.selectieInfos.length !== 0;\n }\n\n goedkeurenClick(): void {\n const ritDelen = this.viewerControlsService.ritdelen;\n if (ritDelen) {\n delete this.treinpad.aantalRitActies;\n this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);\n this.goedgekeurd.emit(this.treinpad);\n this.viewerControlsService.setOrigineelTreinPad(this.treinpad);\n }\n }\n\n}\n","<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","import { sbblad } from '@loxia/rijwegen';\nimport { Ritdeel } from './ritdeel';\n\nexport class AlternatiefRitDeel {\n\n constructor(public ritDeel: Ritdeel, public alternatieveRoute: sbblad.AlternativeRoute) {\n\n }\n\n}\n","import { domein } from '@loxia/rijwegen';\nimport { Ritdeel } from './ritdeel';\n\nexport class SeinOpRitdeel {\n constructor(public sein: domein.Sein, public ritdeel: Ritdeel) {\n }\n}\n","import { PopoverInfo } from '@loxia/imx-viewer';\nimport { OngeplandeActie } from '../model/ongeplande-actie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie } from '../optimo';\nimport { ActieHelper } from './actie-helper';\nimport { ArrayMultimap } from './multi-map';\n\ninterface TreinNummerActieInfo {\n treinNummer: number;\n actie: Actie;\n}\n\nexport class ActiePopoverBepaler {\n static bepaalPopoverInfos(ritDelen: Ritdeel[], ritActieTopoPuics: ArrayMultimap<Actie, string>,\n ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): PopoverInfo[] {\n const puicNaarActieMap = this.bepaalPuicNaarActieMap(ritDelen, ritActieTopoPuics);\n const puicNaarOngeplandeActieMap = this.bepaalPuicNaarOngeplandeActieMap(ongeplandeActies);\n\n const puics = puicNaarActieMap.keys();\n puics.push(...puicNaarOngeplandeActieMap.keys().filter(p => !puics.includes(p)));\n\n const infos = [];\n puics.forEach(puic => {\n let content = '';\n const treinNummerActieInfosGepland = puicNaarActieMap.get(puic).sort(this.sortTreinNummerActieInfo());\n const treinNummerActieInfosOngepland = puicNaarOngeplandeActieMap.get(puic).sort(this.sortTreinNummerActieInfo());\n const showTreinNummer = treinNummerActieInfosGepland.some(i => !!i.treinNummer)\n || treinNummerActieInfosOngepland.some(i => !!i.treinNummer);\n treinNummerActieInfosGepland.forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-gepland', showTreinNummer));\n treinNummerActieInfosOngepland.forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-ongepland', showTreinNummer));\n\n const info = this.createPopoverInfo(content, puic, showTreinNummer);\n infos.push(info);\n });\n return infos;\n }\n\n private static createPopoverInfo(content: string, puic: string, showTreinNummer: boolean): PopoverInfo {\n const info = new PopoverInfo([puic], content);\n info.popoverTitleContent = showTreinNummer ? '<span class=\"treinnummer\">Trein #</span><span>Acties</span>' : 'Acties';\n return info;\n }\n\n private static sortTreinNummerActieInfo(): (a: TreinNummerActieInfo, b: TreinNummerActieInfo) => number {\n return (a1, a2): number => ActieHelper.actieComparator(a1.actie, a2.actie);\n }\n\n private static bepaalPuicNaarOngeplandeActieMap(ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): ArrayMultimap<string, TreinNummerActieInfo> {\n const puicNaarOngeplandeActieMap = new ArrayMultimap<string, TreinNummerActieInfo>();\n if (ongeplandeActies.size() > 0) {\n ongeplandeActies.entries.forEach(entry => {\n const treinNummerActieInfos = puicNaarOngeplandeActieMap.get(entry.key);\n if (!treinNummerActieInfos?.map(({ actie }) => actie).includes(entry.value.actie)) {\n puicNaarOngeplandeActieMap.put(entry.key, { treinNummer: undefined, actie: entry.value.actie });\n }\n });\n }\n return puicNaarOngeplandeActieMap;\n }\n\n private static bepaalPuicNaarActieMap(ritDelen: Ritdeel[], ritActieTopoPuics: ArrayMultimap<Actie, string>): ArrayMultimap<string, TreinNummerActieInfo> {\n const puicNaarActieMap = new ArrayMultimap<string, TreinNummerActieInfo>();\n ritDelen.forEach(ritDeel => {\n if (ritDeel.isZichtbaar() && ritDeel.acties.length !== 0) {\n ritDeel.acties.forEach(ritActie => {\n const puics = ritActieTopoPuics.get(ritActie);\n puics.forEach(puic => {\n this.addToPuicNaarActieMapIfNotExists(puicNaarActieMap, puic, ritActie, ritDeel.beweging?.treinNummer);\n });\n });\n }\n });\n return puicNaarActieMap;\n }\n\n private static addToPuicNaarActieMapIfNotExists(puicNaarActieMap: ArrayMultimap<string, TreinNummerActieInfo>, puic: string, ritActie: Actie, treinNummer: number): void {\n const treinNummerActieInfos = puicNaarActieMap.get(puic);\n if (!(treinNummerActieInfos?.find(({ actie }) => actie === ritActie))) {\n const actieInfo: TreinNummerActieInfo = { treinNummer, actie: ritActie };\n puicNaarActieMap.put(puic, actieInfo);\n }\n }\n\n private static vulPopoverContent(content: string, { treinNummer, actie }: TreinNummerActieInfo, clazz: string, showTreinNummer: boolean): string {\n let retval = content;\n const treinnummerClass = showTreinNummer ? 'class=\"treinnummer\"' : 'class=\"no-treinnummer\"';\n\n retval += '<div class=\"nowrap ' + clazz + '\">';\n retval += `<span ${ treinnummerClass }>${ treinNummer || '-' }</span>`;\n\n let actieOmschrijving = '';\n if (ActieHelper.isVSTActie(actie)) {\n actieOmschrijving += ActieHelper.getVSTActieOmschrijving(actie);\n } else if (ActieHelper.isWisselSlijpenActie(actie)) {\n actieOmschrijving += `${ actie.ritActieTypeOmschrijving } ${ actie.wisselNaam }`;\n } else {\n actieOmschrijving += `${ actie.ritActieTypeOmschrijving } ${ actie.vanKilometerlint } ${ actie.vanKilometrering }`;\n actieOmschrijving += '-';\n if (actie.totKilometerlint !== actie.vanKilometerlint) {\n actieOmschrijving += actie.totKilometerlint;\n actieOmschrijving += ' ';\n }\n actieOmschrijving += actie.totKilometrering;\n }\n retval += `<span>${ actieOmschrijving }</span></div>`;\n return retval;\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ImxViewerComponent, PopoverInfo, SelectieEvent, SvgInfo } from '@loxia/imx-viewer';\nimport { domein, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { AlternatiefRitDeel } from '../../model/alternatief-rit-deel';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { SeinOpRitdeel } from '../../model/sein-op-ritdeel';\nimport { Actie } from '../../optimo';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport {\n AddOngeplandeActie,\n BepaalOngeplandeActies,\n BewegingInvoegen,\n ClearProgress, SetSelectedRitdeel,\n navigeerBuitenRit,\n ResetNieuweRoute,\n SetActieOpRitSelectieIds,\n SetAlternatievenClickableIds,\n SetAlternatievenSelectieIds,\n SetBeginSeinRightClickableIds,\n SetBeginSeinSelectieIds,\n SetEindSeinenClickableIds,\n SetEindSeinSelectieIds,\n SetGebrokenRitSelectieIds,\n SetGeplandeActies,\n SetNieuwRouteEindSein,\n SetRitSelectieIds\n} from '../../state/actions/actions';\nimport { ritdeelInvoegen, setAlternatieveRitDelen } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\nimport { ActieHelper } from '../../util/actie-helper';\nimport { ActiePopoverBepaler } from '../../util/actie-popover-bepaler';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport Utils from '../../util/utils';\n\n@Component({\n selector: 'svg-visualisatie',\n templateUrl: './svg-visualisatie.component.html',\n styleUrls: ['./svg-visualisatie.component.scss']\n})\nexport class SvgVisualisatieComponent implements OnInit, OnDestroy {\n\n @Input() nietGeplandeActies: Actie[];\n @Input() useClickArea: boolean;\n\n @ViewChild('imxviewercontainer') imxviewer: ImxViewerComponent;\n\n svgInfos$: Observable<SvgInfo[]> = this.store.select('svgInfos');\n popoverInfos: PopoverInfo[] = [];\n clickableIds: string[] = [];\n\n rightClickableIds: string[] = [];\n contextMenuActions: any = [];\n contextMenuStyle: any = { display: 'none' };\n editable: boolean;\n\n private puicNaarBeginSeinRitdeel = new Map<string, SeinOpRitdeel>();\n private puicNaarEindSeinCombinatie = new Map<string, RijwegplanRijwegDwangCombinatie>();\n private puicNaarAlternatieveRoute = new Map<string, AlternatiefRitDeel>();\n\n private ongeplandeActiesBepaald = false;\n private subscriptions: Subscription[] = [];\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private actieHelper: ActieHelper,\n private sbmService: SignaleringsBeeldManagerService,\n private editorService: EditorService) {\n this.onRitdelenUpdate();\n this.triggerClickableIdBepaling();\n this.triggerRightClickableIdBepaling();\n this.handleNieuweRouteToegevoegd();\n this.setupTriggerPopoverBepaling();\n\n this.subscriptions.push(this.store.select('editable').subscribe(editable => {\n this.editable = editable;\n }));\n this.subscriptions.push(this.store.select('ongeplandeActiesBepaald')\n .subscribe(ongeplandeActiesBepaald => this.ongeplandeActiesBepaald = ongeplandeActiesBepaald));\n this.subscriptions.push(this.store.select('focusIds')\n .subscribe(focusIds => {\n if (focusIds && this.imxviewer) {\n this.imxviewer.focusOnIds(focusIds);\n }\n }));\n }\n\n ngOnInit(): void {\n document.getElementById('contextMenu').addEventListener('mouseleave', () => this.hideContextMenu());\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n handleImxviewClick(evt: SelectieEvent): void {\n const puic = evt.id;\n const alternatieveRitDeel = this.puicNaarAlternatieveRoute.get(puic);\n const combinatie = this.puicNaarEindSeinCombinatie.get(puic);\n if (alternatieveRitDeel) {\n alternatieveRitDeel.ritDeel.acties.forEach(actie => {\n const puics = this.actieHelper.bepaalPuicsVoorActie(actie);\n if (puics.length > 0) {\n this.store.dispatch(AddOngeplandeActie(new OngeplandeActie(actie, puics)));\n }\n });\n this.store.dispatch(setAlternatieveRitDelen(alternatieveRitDeel));\n } else if (combinatie) {\n this.store.dispatch(SetNieuwRouteEindSein(combinatie));\n } else {\n const rand = this.sbmService.getTopologyElementByPuic(puic);\n if (rand) {\n this.store.dispatch(navigeerBuitenRit(puic));\n }\n }\n\n this.store.dispatch(SetSelectedRitdeel(undefined));\n }\n\n handleImxviewRightClick(evt: SelectieEvent): void {\n const fn = (): void => {\n const startSeinOpRitdeel = this.puicNaarBeginSeinRitdeel.get(evt.id);\n if (startSeinOpRitdeel) {\n this.bewegingInvoegen(startSeinOpRitdeel);\n }\n };\n this.contextMenuActions = [];\n this.contextMenuActions.push({ label: 'beweging invoegen', click: fn });\n this.contextMenuStyle = {\n left: (evt.event.offsetX - 5) + 'px',\n top: (evt.event.offsetY - 5) + 'px',\n display: 'inline',\n position: 'absolute'\n };\n }\n\n bewegingInvoegen(startSeinOpRitdeel: SeinOpRitdeel): void {\n this.hideContextMenu();\n this.store.dispatch(BewegingInvoegen(startSeinOpRitdeel, this.puicNaarEindSeinCombinatie));\n }\n\n hideContextMenu(): void {\n this.contextMenuStyle = {\n display: 'none',\n position: 'absolute'\n };\n }\n\n private handleNieuweRouteToegevoegd(): void {\n this.store.select('nieuweRoute')\n .subscribe((nieuweRoute) => {\n if (nieuweRoute.isValid()) {\n this.store.dispatch(ResetNieuweRoute());\n this.store.dispatch(ritdeelInvoegen(nieuweRoute));\n }\n }\n );\n }\n\n private onRitdelenUpdate(): void {\n this.subscriptions.push(this.store.select('ritDelen').subscribe(ritDelen => {\n if (ritDelen && ritDelen.length > 0) {\n this.bepaalRouteHighlights(ritDelen);\n if (this.editable) {\n this.bepaalContextMenuVoorBeginSeinen(ritDelen);\n }\n if (!this.ongeplandeActiesBepaald) {\n this.bepaalOngeplandeActies();\n }\n }\n }));\n }\n\n private triggerClickableIdBepaling(): void {\n this.subscriptions.push(combineLatest([\n this.store.select('alternatievenClickableIds'),\n this.store.select('eindSeinenClickableIds'),\n this.store.select('connectorClickableIds')]\n ).subscribe(([alternatievenClickableIds, eindSeinenClickableIds, connectorClickableIds]) =>\n this.clickableIds = [...alternatievenClickableIds, ...eindSeinenClickableIds, ...connectorClickableIds]));\n }\n\n private triggerRightClickableIdBepaling(): void {\n this.subscriptions.push(combineLatest([this.store.select('beginSeinRightClickableIds')]\n ).subscribe(([beginSeinRightClickableIds]) => {\n const ids = [];\n ids.push(...beginSeinRightClickableIds);\n this.rightClickableIds = ids;\n }\n ));\n }\n\n private setupTriggerPopoverBepaling(): void {\n this.subscriptions.push(combineLatest([\n this.store.select('ritDelen'),\n this.store.select('ongeplandeActies'),\n this.store.select('geplandeActies')]\n ).subscribe(([ritdelen, ongeplandeActies, geplandeActies]) => {\n if (ritdelen && ritdelen.length > 0 && geplandeActies && ongeplandeActies) {\n this.popoverInfos = ActiePopoverBepaler.bepaalPopoverInfos(ritdelen, geplandeActies, ongeplandeActies);\n }\n }\n ));\n }\n\n bepaalOngeplandeActies(): void {\n if (this.nietGeplandeActies) {\n this.store.dispatch(BepaalOngeplandeActies(this.nietGeplandeActies));\n }\n }\n\n private bepaalContextMenuVoorBeginSeinen(ritDelen: Ritdeel[]): void {\n if (!this.sbmService.isReady()) {\n return;\n }\n\n let ids = [];\n ritDelen.filter(ritDeel => ritDeel.isZichtbaar()).forEach(ritDeel => {\n const puics = ritDeel.getSeinen().flatMap(sein => this.verzamelBeginSeinInformatie(sein, ritDeel));\n ids = ids.concat(puics);\n });\n\n this.store.dispatch(SetBeginSeinRightClickableIds(ids));\n this.store.dispatch(SetBeginSeinSelectieIds([]));\n this.store.dispatch(SetEindSeinSelectieIds([]));\n this.store.dispatch(SetEindSeinenClickableIds([]));\n }\n\n private verzamelBeginSeinInformatie(sein: domein.Sein, ritDeel: Ritdeel): string[] {\n const puics: string[] = [];\n const sbSein = this.sbmService.getSBSein(sein);\n if (sbSein) {\n const puic = sbSein.getPuic();\n puics.push(puic);\n this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(sein, ritDeel));\n }\n const altSbSein = this.sbmService.getTechnischAlternatiefSBSein(sbSein);\n if (altSbSein) {\n const puic = altSbSein.getPuic();\n puics.push(puic);\n const rwp = this.editorService.getRijwegplan(altSbSein.getPPLG());\n const domeinSein = rwp.getBeginSein(altSbSein.getName());\n // sein kan niet altijd gevonden worden omdat er niet altijd een rijweg vanaf dit sein is, bijv bij veerwissel.\n if (domeinSein) {\n this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(domeinSein, ritDeel));\n }\n }\n return puics;\n }\n\n private bepaalRouteHighlights(ritDelen: Ritdeel[]): void {\n let ritSelectiePuics = [];\n const actieOpRitSelectiePuics = new ArrayMultimap<Actie, string>();\n let gebrokenRitSelectiePuics = [];\n const alternatieveRoutePuics = [];\n const clickableIds = [];\n let laatsteNaarSpoor: string;\n const bestaatUit1Ritdeel = ritDelen.length === 1;\n let gebrokenRit = false;\n ritDelen.forEach(ritDeel => {\n if (ritDeel.isZichtbaar()) {\n const map: ArrayMultimap<Actie, string> = this.actieHelper.bepaalActiePuicsUitRitdeel(ritDeel);\n map.keys().forEach(key => actieOpRitSelectiePuics.putAll(key, map.get(key)));\n\n const isGebrokenRitdeel = !bestaatUit1Ritdeel && this.isGebrokenRitdeel(ritDeel, laatsteNaarSpoor);\n const puics = [...this.getPuics(ritDeel.getTopologieElementen()),\n ...this.sbmService.getPuicsVoorSeinenInRoute(ritDeel.getRoute())];\n\n if (puics && isGebrokenRitdeel) {\n gebrokenRitSelectiePuics = gebrokenRitSelectiePuics.concat(puics);\n } else if (puics) {\n ritSelectiePuics = ritSelectiePuics.concat(puics);\n }\n\n this.bepaalAlternatieven(ritDeel, clickableIds, alternatieveRoutePuics);\n\n gebrokenRit = gebrokenRit || isGebrokenRitdeel;\n }\n laatsteNaarSpoor = ritDeel.getVisueelNaarPrlSpoor();\n });\n\n this.viewerControlsService.setValideRit(!gebrokenRit);\n\n this.store.dispatch(SetGeplandeActies(actieOpRitSelectiePuics));\n const actieOpRitSelectiePuicsArray = Utils.flatMap(Array.from(actieOpRitSelectiePuics.values()), x => x);\n this.store.dispatch(SetActieOpRitSelectieIds(actieOpRitSelectiePuicsArray));\n ritSelectiePuics = ritSelectiePuics.filter(item => actieOpRitSelectiePuicsArray.indexOf(item) < 0); // make mutually exclusive\n this.store.dispatch(SetRitSelectieIds(ritSelectiePuics));\n this.store.dispatch(SetGebrokenRitSelectieIds(gebrokenRitSelectiePuics));\n this.store.dispatch(SetAlternatievenClickableIds(this.editable ? clickableIds : []));\n this.store.dispatch(SetAlternatievenSelectieIds(this.editable ? alternatieveRoutePuics : []));\n this.store.dispatch(ClearProgress());\n }\n\n private bepaalAlternatieven(ritDeel: Ritdeel, clickableIds: string[], alternatieveRoutePuics: string[]): void {\n ritDeel.getAlternatieveRoutes()?.forEach(alternatieveRoute => {\n const alternatieveTopoElementen =\n this.sbmService.bepaalAlternativeRouteHighlights(alternatieveRoute, ritDeel.getTopologieElementen());\n\n const altPuics = this.getPuics(alternatieveTopoElementen);\n if (altPuics) {\n clickableIds.push(...altPuics);\n altPuics.forEach(puic => {\n this.puicNaarAlternatieveRoute.set(puic, new AlternatiefRitDeel(ritDeel, alternatieveRoute));\n alternatieveRoutePuics.push(puic);\n });\n }\n });\n }\n\n private isGebrokenRitdeel(ritDeel, laatsteNaarSpoor): boolean {\n const isGebrokenRitdeel = !(!laatsteNaarSpoor || ritDeel.getVanPrlSpoor() === laatsteNaarSpoor);\n if (isGebrokenRitdeel) {\n console.log('Rit van ' + ritDeel.getVanPrlSpoor() + ' naar ' + ritDeel.getNaarPrlSpoor()\n + ' in pplg ' + ritDeel.getPplg() + ' sluit niet aan op vorige beweging.');\n }\n return isGebrokenRitdeel;\n }\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n}\n","<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","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { version } from '../../../generated.version';\nimport { ProgressIndicator } from '../../atomic-components/progress-indicator/progress-indicator.entity';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { Actie, InfraModel, Rit } from '../../optimo';\nimport { DebugService } from '../../services/debug.service';\nimport { PrintBewegingService } from '../../services/print-beweging.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport * as MstActions from '../../state/actions/actions';\nimport { SetBaseUrl, SetIaVersie, SetOngeplandeActiesBepaald } from '../../state/actions/actions';\nimport { setRitdelenAfterUpdate } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'mst-viewer',\n templateUrl: './mstviewer.component.html',\n styleUrls: ['./mstviewer.component.scss']\n})\nexport class MstviewerComponent implements OnChanges, OnInit, OnDestroy {\n @Input() iaversieinfo: InfraModel;\n @Input() treinpad: Rit;\n @Input() ongeplandeActies: Actie[];\n @Input() paginationSize = 4;\n @Input() baseurl = 'https://acceptatie.raildesign.nl';\n @Input() debug: boolean;\n @Input() viewer: boolean;\n @Input() useClickArea: boolean;\n\n @Output() goedgekeurd: EventEmitter<Rit> = new EventEmitter();\n\n progressIndicator$: Observable<ProgressIndicator>;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private debugService: DebugService,\n private printBewegingService: PrintBewegingService) {\n\n this.subscriptions.add(this.store.select('nieuweBewegingen').subscribe(nieuweRit => {\n if (this.treinpad) {\n this.treinpad.bewegingen = nieuweRit;\n store.dispatch(setRitdelenAfterUpdate([]));\n store.dispatch(SetOngeplandeActiesBepaald(false));\n this.bepaalSbInfos(true);\n }\n }));\n this.progressIndicator$ = this.store.pipe(select(s => s.progressState?.progressIndicator));\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line no-console\n console.log('MST viewer versie: ' + version);\n }\n\n ngOnChanges({ debug, baseurl, treinpad, ongeplandeActies, iaversieinfo }: SimpleChanges): void {\n if (debug) {\n this.debugService.setDebugFlag(debug.currentValue);\n }\n if (baseurl) {\n this.store.dispatch(SetBaseUrl(baseurl.currentValue));\n }\n if (treinpad || ongeplandeActies) {\n this.bepaalSbInfos();\n }\n if (iaversieinfo) {\n this.store.dispatch(SetIaVersie(iaversieinfo.currentValue));\n this.bepaalSbInfos();\n }\n if (ongeplandeActies) {\n this.store.dispatch(SetOngeplandeActiesBepaald(false));\n }\n }\n\n ngOnDestroy(): void {\n this.debugService.setDebugFlag(false);\n this.subscriptions.unsubscribe();\n }\n\n focusRitdeel(ritdeel: Ritdeel): void {\n this.store.dispatch(MstActions.focusOpRitdeel(ritdeel, this.paginationSize, this.iaversieinfo));\n }\n\n focusPuic(puics: string[]): void {\n this.store.dispatch(MstActions.focusOpIds(puics));\n }\n\n bepaalSbInfos(ritGewijzigdToegestaan = false): void {\n if (this.treinpad && this.ongeplandeActies && this.iaversieinfo?.versie) {\n this.store.dispatch(MstActions.bepaalSbInfos(this.treinpad, this.ongeplandeActies, this.iaversieinfo?.versie, ritGewijzigdToegestaan, this.paginationSize));\n }\n }\n\n printFocusBeweging(bewegingId: number): Promise<boolean> {\n return this.printBewegingService.printBeweging(bewegingId, this.paginationSize, this.iaversieinfo);\n }\n\n keurAlleActiesGoed(): void {\n this.viewerControlsService.keurAlleActiesGoed(this.ongeplandeActies);\n }\n}\n","<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()\">×</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","import { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n IResourceMethodObservable,\n Resource,\n ResourceAction,\n ResourceHandler,\n ResourceModel,\n ResourceParams,\n ResourceRequestMethod\n} from '@ngx-resource/core';\nimport { Subscription } from 'rxjs';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable()\n@ResourceParams({\n pathPrefix: '/mst/rest/signaleringsbeeldeninfo'\n})\n\nexport class SignaleringsbeeldInfoResource extends Resource implements OnDestroy{\n private subscriptions = new Subscription();\n\n constructor(restHandler: ResourceHandler, private store: Store<MstEditorState>) {\n super(restHandler);\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.$setUrl(baseUrl)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @ResourceAction({\n path: '/',\n method: ResourceRequestMethod.Post\n })\n laadSignaleringsbeeldInfo: IResourceMethodObservable<{\n pplgs: string[];\n versie: string;\n ingangsDatum: string;\n }, ISignaleringsbeeldInfoDto[]>;\n\n @ResourceAction({\n path: '/valideeriaversie'\n })\n getBestaatIALevering: IResourceMethodObservable<{ versie: string }, Response>;\n\n}\n\nexport interface ISignaleringsbeeldInfoDto {\n bladNaam: string;\n pplgs: string[];\n metVisualisatie: boolean;\n}\n\nexport class SignaleringsbeeldInfoDto extends ResourceModel implements ISignaleringsbeeldInfoDto {\n $resource = SignaleringsbeeldInfoResource;\n bladNaam: string;\n pplgs: string[];\n metVisualisatie: boolean;\n\n constructor(data?: ISignaleringsbeeldInfoDto) {\n super();\n this.$setData(data);\n }\n\n toJSON(): any {\n return { bladnaam: this.bladNaam, pplgs: this.pplgs, metVisualisatie: this.metVisualisatie };\n }\n\n toString(): string {\n return `${ this.bladNaam }, ${ this.pplgs }, ${ this.metVisualisatie }`;\n }\n\n $setData(data: ISignaleringsbeeldInfoDto): this {\n if (data) {\n this.bladNaam = data.bladNaam;\n this.pplgs = data.pplgs;\n this.metVisualisatie = data.metVisualisatie;\n }\n return this;\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BaseRestService implements OnDestroy {\n\n private subscriptions: Subscription = new Subscription();\n protected baseUrl: string;\n protected iaVersie: string;\n\n constructor(protected httpClient: HttpClient, protected store: Store<MstEditorState>) {\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.baseUrl = baseUrl));\n this.subscriptions.add(this.store.select('iaVersie').subscribe(iaVersie => this.iaVersie = iaVersie.versie));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Actie, Beweging } from '../optimo';\nimport { ClearProgress } from '../state/actions/actions';\nimport { BaseRestService } from './base-rest.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BewegingVerrijkerService extends BaseRestService {\n\n public getBewegingen(bewegingen: Beweging[], ongeplandeActies: Actie[]): Observable<Beweging[]> {\n return this.httpClient.put<Beweging[]>(\n this.getUrl(this.iaVersie),\n { bewegingen, ongeplandeActies },\n { headers: new HttpHeaders().set('Accept', 'application/json').append('Content-Type', 'application/json') })\n .pipe(catchError((err, _caught) => this.errorHandler(err)));\n }\n\n private getUrl(iaVersie: string): string {\n return `${ this.baseUrl }/mst/rest/beweging/${ iaVersie }`;\n }\n\n errorHandler(error: any): [] {\n // eslint-disable-next-line no-console\n console.log('error bij verrijken', error);\n this.store.dispatch(ClearProgress());\n return [];\n }\n}\n","import { domein } from '@loxia/rijwegen';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\nexport class RijwegplanRijwegDwangCombinatie {\n constructor(public readonly rijwegplan: domein.Rijwegplan,\n public readonly rijweg: domein.Rijweg,\n public readonly dwang: domein.Dwang) {\n }\n\n getDwangNummer(): number {\n return this.dwang.getDwangNummer() === 0 ? -1 : this.dwang.getDwangNummer();\n }\n\n getVanPrlSpoor(): string {\n return this.dwang.getVanPrlSpoor();\n }\n\n getNaarPrlSpoor(): string {\n return this.dwang.getNaarPrlSpoor();\n }\n\n getRoute(): domein.Route {\n return this.dwang.getRoute();\n }\n\n isVrijeBaanRijweg(): boolean {\n const vbrwp = <VrijebaanRijwegplan>this.rijwegplan;\n return !!vbrwp.getVervolgSpoor;\n }\n}\n","import { domein, JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Actie, Beweging } from '../optimo';\nimport { BewegingUtils } from '../services/beweging-utils.service';\nimport { RijwegplanRijwegDwangCombinatie } from './rijwegplan-rijweg-dwang-combinatie';\n\nexport enum RitdeelZichtbaarheid {\n ZICHTBAAR = 1,\n ONZICHTBAAR_DOOR_GEBRUIKER = 2,\n ONZICHTBAAR_DOOR_SYSTEEM = 3\n}\n\nexport class Ritdeel {\n private alternatieveRoutes: sbblad.AlternativeRoute[] = [];\n private zichtbaarheid = RitdeelZichtbaarheid.ZICHTBAAR;\n private zichtbaarBuitenPaginatie = false;\n\n constructor(private readonly rijwegplanRijwegDwangCombi: RijwegplanRijwegDwangCombinatie,\n public acties: Actie[],\n public readonly beweging: Beweging,\n public vrijebaanRijwegplanRijwegDwangCombi: RijwegplanRijwegDwangCombinatie,\n public vervolgSpoor: string,\n private topoElementen: sbblad.TopologyElement[]) {\n }\n\n getAlternatieveRoutes(): sbblad.AlternativeRoute[] {\n return this.alternatieveRoutes;\n }\n\n copyMetDwang(nieuweDwang: domein.Dwang): Ritdeel {\n const nieuweRijwegplanRijwegDwangCombi =\n new RijwegplanRijwegDwangCombinatie(\n this.rijwegplanRijwegDwangCombi.rijwegplan, this.rijwegplanRijwegDwangCombi.rijweg, nieuweDwang);\n const copy = new Ritdeel(nieuweRijwegplanRijwegDwangCombi, [], this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n return copy;\n }\n\n copyMetAlternatieveRoutes(alternatieveRoutes: sbblad.AlternativeRoute[]): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetAlternatieveRoutesZonderActies(alternatieveRoutes: sbblad.AlternativeRoute[]): Ritdeel {\n const copy = this.copyMetAlternatieveRoutes(alternatieveRoutes);\n if (copy.beweging) {\n copy.acties = [];\n }\n return copy;\n }\n\n copyMetZichtbaarheid(zichtbaarheid: RitdeelZichtbaarheid): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetZichtbaarheidEnPaginatie(zichtbaarheid: RitdeelZichtbaarheid, zichtbaarBuitenPaginatie: boolean): Ritdeel {\n const copy = this.copyMetZichtbaarheid(zichtbaarheid);\n copy.zichtbaarBuitenPaginatie = zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetZichtbaarheidBuitenPaginatie(zichtbaarBuitenPaginatie: boolean): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n equals(other: Ritdeel): boolean {\n if (!other) {\n return false;\n }\n return other.rijwegplanRijwegDwangCombi === this.rijwegplanRijwegDwangCombi;\n }\n\n getRijwegplan(): domein.Rijwegplan {\n return this.rijwegplanRijwegDwangCombi.rijwegplan;\n }\n\n getRijweg(): domein.Rijweg {\n return this.rijwegplanRijwegDwangCombi.rijweg;\n }\n\n getDwang(): domein.Dwang {\n return this.rijwegplanRijwegDwangCombi.dwang;\n }\n\n getRoute(): domein.Route {\n return this.rijwegplanRijwegDwangCombi.getRoute();\n }\n\n getSeinen(): domein.Sein[] {\n const seinen: domein.Sein[] = JsJavaUtil.listToArray(this.rijwegplanRijwegDwangCombi.getRoute().getSeinen());\n if (this.vrijebaanRijwegplanRijwegDwangCombi) {\n const sein: domein.Sein[] = JsJavaUtil.listToArray(this.vrijebaanRijwegplanRijwegDwangCombi.getRoute().getSeinen());\n seinen.push(...sein);\n }\n return seinen;\n }\n\n getVanPrlSpoor(): string {\n return this.rijwegplanRijwegDwangCombi.getVanPrlSpoor();\n }\n\n getVisueelNaarPrlSpoor(): string {\n if (this.vervolgSpoor) {\n return this.vervolgSpoor;\n }\n\n return this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n }\n\n getNaarPrlSpoor(): string {\n return this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n }\n\n getNaarPrlSpoorText(): string {\n let retval = this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n if (this.vrijebaanRijwegplanRijwegDwangCombi) {\n retval += '_e';\n }\n if (this.vervolgSpoor) {\n retval += '(' + this.vervolgSpoor + ')';\n }\n return retval;\n }\n\n getVrijebaanRijwegplan(): domein.Rijwegplan {\n return this.vrijebaanRijwegplanRijwegDwangCombi.rijwegplan;\n }\n\n getVrijebaanRijweg(): domein.Rijweg {\n return this.vrijebaanRijwegplanRijwegDwangCombi.rijweg;\n }\n\n getVrijebaanDwang(): domein.Dwang {\n return this.vrijebaanRijwegplanRijwegDwangCombi.dwang;\n }\n\n getDwangNummer(): number {\n return this.rijwegplanRijwegDwangCombi.getDwangNummer();\n }\n\n getZichtbaarheid(): RitdeelZichtbaarheid {\n return this.zichtbaarheid;\n }\n\n isZichtbaar(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR;\n }\n\n isZichtbaarBinnenWindow(): boolean {\n return this.isZichtbaar() && !this.zichtbaarBuitenPaginatie;\n }\n\n isBinnenWindow(): boolean {\n return (this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR ||\n this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER)\n && this.zichtbaarBuitenPaginatie === false;\n }\n\n isNietBeschikbaar(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM;\n }\n\n isOnzichtbaarDoorGebruiker(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER;\n }\n\n isNieuw(): boolean {\n return !this.beweging || this.beweging.wijzigStatus === BewegingUtils.TOEGEVOEGD;\n }\n\n getPplg(): string {\n return this.rijwegplanRijwegDwangCombi.rijwegplan.getPPLG();\n }\n\n getPplgString(): string {\n if (this.getVanSeinPplg() === this.getNaarSeinPplg()) {\n return this.getVanSeinPplg();\n } else {\n return this.getVanSeinPplg() + ' / ' + this.getNaarSeinPplg();\n }\n }\n\n heeftVrijebaanInfo(): boolean {\n return this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;\n }\n\n getVrijebaanPrlRoute(): domein.Route {\n return this.vrijebaanRijwegplanRijwegDwangCombi.getRoute();\n }\n\n getTopologieElementen(): sbblad.TopologyElement[] {\n return this.topoElementen;\n }\n\n getBewegingId(): string {\n if (this.beweging) {\n return '' + this.beweging.id;\n }\n return '';\n }\n\n getTreinNummer(): string {\n if (this.beweging?.treinNummer) {\n return '' + this.beweging.treinNummer;\n }\n return '';\n }\n\n getVanSeinPplg(): string {\n return this.beweging ? this.beweging.vanSeinPplg : this.getRoute().getBeginSein().getPPLG();\n }\n\n getNaarSeinPplg(): string {\n return this.beweging ? this.beweging.naarSeinPplg : this.getRoute().getEindSein().getPPLG();\n }\n\n getVanSeinName(): string {\n return this.getRoute().getBeginSein().getName();\n }\n\n getNaarSeinName(): string {\n return this.getRoute().getEindSein().getName();\n }\n\n getZichtbaarheidBuitenPaginatie(): boolean {\n return this.zichtbaarBuitenPaginatie;\n }\n\n bepaalTopologieElementen(signaleringsBeeldManagerService): void {\n const topoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getRoute());\n\n if (this.heeftVrijebaanInfo()) {\n const vrijebaanTopoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getVrijebaanPrlRoute());\n topoElementen.push(...vrijebaanTopoElementen);\n }\n this.topoElementen = topoElementen;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { MessagesService } from '../atomic-components/services/messages.service';\nimport { RijwegplanRijwegDwangCombinatie } from '../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Beweging, Rit } from '../optimo';\nimport { MessageBuilder } from '../util/message-builder';\nimport { EditorService } from './editor.service';\n\nconst SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\nconst SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX = '_v';\n\n@Injectable()\nexport class RitLezerService {\n constructor(private rijwegPlanEditorService: EditorService,\n private readonly messagesService: MessagesService) {\n }\n\n public parseRit(rit: Rit, ritGewijzigdToegestaan: boolean): Ritdeel[] {\n const ritDelen = [];\n const missingPplgs = [];\n if (!this.ritBestandIsGewijzigd(rit, ritGewijzigdToegestaan)) {\n rit.bewegingen.forEach(beweging => this.parseBeweging(beweging, ritDelen, missingPplgs));\n }\n return ritDelen;\n }\n\n private parseBeweging(beweging: Beweging, ritDelen: any[], missingPplgs: string[]): void {\n const rijwegPlan = this.getRijwegPlan(beweging.vanPplg);\n if (!rijwegPlan) {\n if (!missingPplgs.includes(beweging.vanPplg)) {\n this.messagesService.showMessage(MessageBuilder.rijwegplanNietGevonden(beweging));\n missingPplgs.push(beweging.vanPplg);\n }\n return;\n }\n const rijweg = this.getRijweg(rijwegPlan, beweging.vanSpoor, beweging.naarSpoor);\n if (!rijweg) {\n this.messagesService.showMessage(MessageBuilder.rijwegNietGevonden(beweging));\n return;\n }\n\n const dwang = this.getDwang(rijweg, beweging.dwangNummer);\n if (!dwang) {\n this.messagesService.showMessage(MessageBuilder.dwangNietGevonden(beweging));\n return;\n }\n const { vrijebaanDwangInfo, vervolgSpoor } = this.extractVrijebaanDwangInfo(beweging, rijwegPlan, rijweg);\n const dwangInfo = new RijwegplanRijwegDwangCombinatie(rijwegPlan, rijweg, dwang);\n ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));\n }\n\n private extractVrijebaanDwangInfo(beweging: Beweging, rijwegPlan: domein.Rijwegplan, rijweg: domein.Rijweg) {\n let vrijebaanDwangInfo = null;\n let vervolgSpoor;\n if (beweging.naarSpoor.endsWith(SPOOR_NAAR_VRIJEBAAN_POSTFIX) ||\n beweging.naarSpoor.endsWith(SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX)) {\n let vrijebaanRijweg: domein.Rijweg;\n let vrijebaanDwang;\n const vrijebaanRijwegplan =\n this.rijwegPlanEditorService.getVrijebaanRijwegplan(rijwegPlan.getPPLG(),\n rijweg.getEindSein().getName());\n if (vrijebaanRijwegplan) {\n const rijwegenArray: domein.Rijweg[] = JsJavaUtil.listToArray(vrijebaanRijwegplan.getRijwegen());\n\n const vrijebaanRijwegen =\n rijwegenArray.filter(\n vbRijweg => vbRijweg.getBeginSein().getName() === rijweg.getEindSein().getName());\n if (vrijebaanRijwegen.length > 0) {\n vrijebaanRijweg = vrijebaanRijwegen[0];\n vrijebaanDwang = vrijebaanRijweg.getDwangVoorDwangNummer(0);\n vervolgSpoor = vrijebaanRijwegplan.getVervolgSpoor(vrijebaanRijweg);\n }\n vrijebaanDwangInfo =\n new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);\n }\n }\n return { vrijebaanDwangInfo, vervolgSpoor };\n }\n\n private getRijwegPlan(pplg: string): domein.Rijwegplan {\n return this.rijwegPlanEditorService.getRijwegplan(pplg);\n }\n\n private getDwang(rijweg: domein.Rijweg, dwangNummer: number): domein.Dwang {\n return rijweg.getDwangVoorDwangNummer(this.converteerDwangNummer(dwangNummer));\n }\n\n private getRijweg(rijwegPlan: domein.Rijwegplan, vanSpoor: string, naarSpoor: string): domein.Rijweg {\n const vanPrlSpoor = this.verwijderExtendedInformatie(vanSpoor);\n const naarPrlSpoor = this.verwijderExtendedInformatie(naarSpoor);\n return rijwegPlan.getRijweg(vanPrlSpoor, naarPrlSpoor);\n }\n\n private ritBestandIsGewijzigd(rit: Rit, ritGewijzigdToegestaan: boolean): boolean {\n for (const beweging of rit.bewegingen) {\n if (this.isGewijzigd(beweging) && !ritGewijzigdToegestaan) {\n this.messagesService.showMessage(MessageBuilder.ritFileAlGewijzigdError(beweging));\n return true;\n }\n }\n return false;\n }\n\n private verwijderExtendedInformatie(spoor: string): string {\n return spoor.split('_')[0];\n }\n\n private converteerDwangNummer(dwangNummer: number): number {\n return (dwangNummer === -1) ? 0 : dwangNummer;\n }\n\n private isGewijzigd(beweging: Beweging): boolean {\n return beweging.wijzigStatus === 'Gewijzigd';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { MessagesService } from '../../atomic-components/services/messages.service';\nimport { MeldingEvent } from '../../model/melding-event';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { MstLoggingDto, MstLoggingResource } from '../../resources/mstlogging.resource';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { ActieHelper } from '../../util/actie-helper';\nimport { LoggingHelper } from '../../util/logging-helper';\nimport { MeldingBuilder } from '../../util/melding-builder';\nimport { MessageBuilder } from '../../util/message-builder';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport {\n BepaalOngeplandeActies,\n SetOngeplandeActies,\n SetOngeplandeActiesBepaald,\n SetOngeplandeActieSelectieIds\n} from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class BepaalOngeplandeActiesEffect {\n bepaalOngeplandeActies$ = createEffect(() => this.actions$.pipe(\n ofType(BepaalOngeplandeActies),\n withLatestFrom(this.store),\n map(([action, store]) => {\n\n const puicActieMap = new ArrayMultimap<string, OngeplandeActie>();\n const nietGevondenTakken = [];\n const logMeldingDTOs: MstLoggingDto[] = [];\n\n const acties = store.ritDelen.flatMap(rd => rd.acties);\n\n action.ongeplandeActies.forEach(actie => {\n const alreadyAdded = acties.filter(a => a.id === actie.id).length > 0;\n if (!alreadyAdded) {\n const puics = this.actieHelper.bepaalPuicsVoorActie(actie);\n\n if (puics.length > 0) {\n const ongeplandeActie = new OngeplandeActie(actie, puics);\n this.updatePuicActieMap(puics, ongeplandeActie, puicActieMap);\n } else {\n const takId = ActieHelper.bepaalTakId(actie);\n const spoortak = this.sbmService.getSbSpoortak(takId);\n if (!spoortak && nietGevondenTakken.indexOf(takId) < 0) {\n nietGevondenTakken.push(takId);\n const melding: MeldingEvent = MeldingBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n } else if (spoortak) {\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError([actie.id]);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));\n }\n }\n }\n });\n if (nietGevondenTakken.length > 0) {\n this.messagesService.showMessage(MessageBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken));\n }\n if (logMeldingDTOs.length > 0) {\n this.mstLogResource.logErrorMessages(logMeldingDTOs);\n }\n\n this.store.dispatch(SetOngeplandeActies(puicActieMap));\n this.store.dispatch(SetOngeplandeActieSelectieIds(Array.from(puicActieMap.keys())));\n this.store.dispatch(SetOngeplandeActiesBepaald(true));\n })\n ), { dispatch: false });\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private messagesService: MessagesService,\n private actieHelper: ActieHelper,\n private loggingHelper: LoggingHelper\n ) {\n }\n\n private updatePuicActieMap(puics: string[], ongeplandeActie: OngeplandeActie, puicMap: ArrayMultimap<string, OngeplandeActie>): void {\n puics.forEach(puic => {\n puicMap.put(puic, ongeplandeActie);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateService {\n\n // simple method, in separate method/service to be able to make tests stable\n getCurrentDate(): Date {\n return new Date();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MessagesService, } from '../../atomic-components/services/messages.service';\nimport { Message, Severity } from '../../atomic-components/message/';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { Actie, Rit } from '../../optimo';\nimport { SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { DateService } from '../../util/date.service';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetIaVersie, ShowProgress } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class BepaalSbInfosEffect {\n\n bepaalSbInfos$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.bepaalSbInfos),\n map((actie) => {\n let pplgs = this.bepaalPplgs(actie.rit);\n pplgs = this.bepaalPplgsUitActies(actie.ongeplandeActies, pplgs);\n if (pplgs.length > 0) {\n this.laadSignaleringsbeeldInfo(pplgs, actie.ritGewijzigdToegestaan, actie.iaVersie, actie.rit, actie.paginationSize);\n }\n\n })), { dispatch: false }\n );\n\n constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly sbiResource: SignaleringsbeeldInfoResource,\n private readonly messagesService: MessagesService,\n private readonly dateService: DateService) {\n }\n\n bepaalPplgs(rit: Rit): Array<string> {\n const pplgs = [];\n rit?.bewegingen?.forEach(beweging => {\n this.voegNieuwePplgToe(pplgs, beweging.vanPplg);\n this.voegNieuwePplgToe(pplgs, beweging.naarPplg);\n this.voegNieuwePplgToe(pplgs, beweging.vanSeinPplg);\n this.voegNieuwePplgToe(pplgs, beweging.naarSeinPplg);\n });\n return pplgs;\n }\n\n bepaalPplgsUitActies(acties: Actie[], pplgs: string[]): string[] {\n acties.forEach(actie => this.voegNieuwePplgToe(pplgs, actie.pplgNaam));\n return pplgs;\n }\n\n private laadSignaleringsbeeldInfo(pplgs: string[], ritGewijzigdToegestaan: boolean, iaVersie: string, treinpad: Rit, paginationSize: number): void {\n const obs = this.sbiResource.getBestaatIALevering({ versie: iaVersie });\n this.store.dispatch(ShowProgress());\n obs.pipe(take(1)).subscribe({\n next: _res => this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(treinpad, paginationSize, pplgs, ritGewijzigdToegestaan)),\n error: err => {\n this.messagesService.showMessage(new Message(Severity.INFORMATION, Utils.getValidErorrMessage(err)));\n const iaVersieInfo = { versie: 'DONNA_77136_VER_1', ingangsDatum: this.dateService.getCurrentDate() };\n this.store.dispatch(SetIaVersie(iaVersieInfo));\n this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(treinpad, paginationSize, pplgs, ritGewijzigdToegestaan));\n }\n });\n }\n\n private voegNieuwePplgToe(pplgs: Array<string>, pplg: string): void {\n if (pplg && pplgs.indexOf(pplg) < 0) {\n pplgs.push(pplg);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport {\n BewegingInvoegen,\n SetBeginSeinSelectieIds,\n SetEindSeinenClickableIds,\n SetEindSeinSelectieIds,\n SetNieuwRouteBeginSein\n} from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\n@Injectable()\nexport class BewegingInvoegenEffect {\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private editorService: EditorService) {\n }\n\n bewegingInvoegen$ = createEffect(() => this.actions$.pipe(\n ofType(BewegingInvoegen),\n map(action => {\n const startSeinOpRitdeel = action.startSeinOpRitdeel;\n const sein = startSeinOpRitdeel.sein;\n const sbSein = this.sbmService.getSBSein(sein);\n const pplg = sbSein.getPPLG();\n\n const combinaties = [];\n const rijwegplan = this.editorService.getRijwegplan(pplg);\n const eindSeinen: domein.Sein[] = JsJavaUtil.listToArray(rijwegplan.getEindSeinen(sein.getName()));\n combinaties.push(...this.maakCombinaties(rijwegplan, startSeinOpRitdeel.sein, eindSeinen));\n\n if (startSeinOpRitdeel.ritdeel.heeftVrijebaanInfo()) {\n // vrije baan af\n const vbrwp = <VrijebaanRijwegplan>startSeinOpRitdeel.ritdeel.getVrijebaanRijwegplan();\n const otherPplg = vbrwp.getTegenOvergesteldePplg(rijwegplan.getPPLG());\n\n const rwp = this.editorService.getRijwegplan(otherPplg);\n const eSeinen: domein.Sein[] = JsJavaUtil.listToArray(rwp.getEindSeinen(startSeinOpRitdeel.sein.getName()));\n combinaties.push(...this.maakCombinaties(rwp, startSeinOpRitdeel.sein, eSeinen));\n } else {\n // vrije baan op\n const vrijebaanRijwegplan =\n this.editorService.getVrijebaanRijwegplan(pplg, startSeinOpRitdeel.sein.getName());\n if (vrijebaanRijwegplan) {\n const vrijebaanEindSeinen: domein.Sein[] = JsJavaUtil.listToArray(vrijebaanRijwegplan.getEindSeinen(startSeinOpRitdeel.sein.getName()));\n combinaties.push(...this.maakCombinaties(vrijebaanRijwegplan, startSeinOpRitdeel.sein, vrijebaanEindSeinen));\n }\n }\n\n const eindSeinenPuics = [];\n combinaties.forEach(c => {\n const sbEindSein = this.sbmService.getSBSein(c.rijweg.getEindSein());\n if (sbEindSein) {\n const eindSeinPuic = sbEindSein.getPuic();\n action.puicNaarEindSeinCombinatie.set(eindSeinPuic, c);\n eindSeinenPuics.push(eindSeinPuic);\n }\n });\n\n this.store.dispatch(SetNieuwRouteBeginSein(startSeinOpRitdeel));\n this.store.dispatch(SetBeginSeinSelectieIds([sbSein.getPuic()]));\n this.store.dispatch(SetEindSeinSelectieIds(eindSeinenPuics));\n this.store.dispatch(SetEindSeinenClickableIds(eindSeinenPuics));\n\n })\n ), { dispatch: false });\n\n private maakCombinaties(rijwegplan: domein.Rijwegplan, startSein: domein.Sein, eindSeinen: domein.Sein[]): any[] {\n const combinaties = [];\n eindSeinen.forEach(eindSein => {\n const rijweg = rijwegplan.getRijwegVoorSeinen(startSein, eindSein); // zoek rijweg van sein naar sein\n const dwang = rijweg.getVoorkeurDwang(); // pak voorkeursdwang van de rijweg\n combinaties.push(new RijwegplanRijwegDwangCombinatie(rijwegplan, rijweg, dwang));\n });\n return combinaties;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport { DeleteOngeplandeActie, DeleteOngeplandeActieSelectieId } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class DeleteOngeplandeActieEffect {\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>) {\n }\n\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(DeleteOngeplandeActie),\n withLatestFrom(this.store),\n map(([action, state]) => {\n const actie = action.ongeplandeActie;\n const ongeplandeActies = state.ongeplandeActies;\n\n this.updateOngeplandeActiesIdsOnDelete(actie, ongeplandeActies);\n })), { dispatch: false });\n\n updateOngeplandeActiesIdsOnDelete(actie, ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): void {\n actie.puics.forEach(puic => {\n const acties = ongeplandeActies.get(puic);\n if (acties) {\n const index = acties.indexOf(actie);\n if (index > -1) {\n acties.splice(index, 1);\n }\n if (acties.length === 0) {\n ongeplandeActies.delete(puic);\n this.store.dispatch(DeleteOngeplandeActieSelectieId(puic));\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../actions/actions';\nimport { SetOngeplandeActiesBepaald } from '../actions/actions';\nimport { navigeerVanaf } from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class FocusEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n focusOpBeweging$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.focusOpRitdeel),\n withLatestFrom(this.store),\n map(([actie, _storeState]) => {\n const ritdeel = actie.ritdeel;\n const topoElementen = this.sbmService.bepaalRouteElementen(ritdeel.getRoute());\n const dwangPuics = this.getPuics(topoElementen);\n\n if (ritdeel.isNietBeschikbaar()) {\n this.store.dispatch(SetOngeplandeActiesBepaald(false));\n this.store.dispatch(navigeerVanaf(actie.paginationSize, actie.iaVersieInfo, ritdeel));\n }\n\n return MstActions.focusOpIds(dwangPuics);\n }))\n );\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MessagesService, } from '../../atomic-components/services/messages.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { ISignaleringsbeeldInfoDto } from '../../resources/signaleringsbeeldinfo.resource';\nimport { EditorService } from '../../services/editor.service';\nimport { RitLezerService } from '../../services/rit-lezer.service';\nimport { MessageBuilder } from '../../util/message-builder';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetSignaleringsbeeldInfoDtos } from '../actions/actions';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class LaadRouteFilesEffect {\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(SetSignaleringsbeeldInfoDtos),\n map(action => this.laadRouteFiles(action))), { dispatch: false }\n );\n\n constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly ritLezer: RitLezerService,\n private readonly editorService: EditorService,\n private readonly messagesService: MessagesService) {\n }\n\n laadRouteFiles(actie: {\n dtos: ISignaleringsbeeldInfoDto[];\n iaversieinfo: any;\n treinpad: any;\n paginationSize: number;\n ritGewijzigdToegestaan: boolean\n }): void {\n const isReady = this.editorService.isReady();\n isReady.then(() => {\n const pplgs = this.bepaalSbDtoPplgs(actie.dtos);\n const promise = this.editorService.laadRouteFiles(actie.iaversieinfo.versie, pplgs);\n\n promise.then(() => {\n this.updateRitdelen(actie);\n }, err => {\n this.messagesService.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n });\n }\n\n private updateRitdelen(actie: {\n dtos: ISignaleringsbeeldInfoDto[];\n iaversieinfo: any;\n treinpad: any;\n paginationSize: number;\n ritGewijzigdToegestaan: boolean\n }): void {\n setTimeout(() => {\n this.store.select('ritDelen').pipe(take(1)).subscribe(ritdelen => {\n if (ritdelen.length === 0) {\n ritdelen = this.ritLezer.parseRit(actie.treinpad, actie.ritGewijzigdToegestaan);\n }\n\n this.store.dispatch(RitdelenActions.setRitDelen(ritdelen, actie.paginationSize, actie.iaversieinfo));\n this.store.dispatch(MstActions.setEditable(actie.treinpad.ritStatus !== 'Definitief'));\n });\n }, 0);\n }\n\n private bepaalSbDtoPplgs(dtos: ISignaleringsbeeldInfoDto[]): any[] {\n const pplgs = [];\n dtos.forEach(dto => {\n dto.pplgs.forEach(pplg => {\n if (!pplgs.includes(pplg)) {\n pplgs.push(pplg);\n }\n });\n });\n return pplgs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ClearProgress } from '../state/actions/actions';\nimport { BaseRestService } from './base-rest.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConnectorService extends BaseRestService {\n\n public getOtherRand(puic: string): Observable<string> {\n return this.httpClient.get<string>(\n this.getUrl(this.iaVersie, puic))\n .pipe(catchError((err, _caught) => this.handleResult(err)));\n }\n\n private getUrl(iaVersie: string, puic: string): string {\n return `${ this.baseUrl }/mst/rest/connector/${iaVersie}/${ puic }`;\n }\n\n handleResult(res: any): [] {\n if (res.error) {\n console.log('error bij ophalen connector-info', res.error);\n }\n this.store.dispatch(ClearProgress());\n return [];\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { ImxViewerComponent, Point, SvgInfo } from '@loxia/imx-viewer';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { MessagesService } from '../../atomic-components/services/messages.service';\nimport { Ritdeel, RitdeelZichtbaarheid } from '../../model/ritdeel';\nimport { InfraModel } from '../../optimo';\nimport { ISignaleringsbeeldInfoDto, SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { ConnectorService } from '../../services/connector.service';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { MessageBuilder } from '../../util/message-builder';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetSignaleringsbeeldInfoDtos, SetVisibleSignaleringsbeeldInfoDtos } from '../actions/actions';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport TopologyElement = sbblad.TopologyElement;\n\ninterface NavigeerBuitenRitInput {\n rand: TopologyElement;\n randPuic: string;\n storeState: MstEditorState;\n otherPplg?: string;\n dtos?: ISignaleringsbeeldInfoDto[];\n svgDataUrls?: string[];\n}\n\ninterface SignaleringsbeeldInfoInput {\n dtos?: ISignaleringsbeeldInfoDto[];\n actie: any;\n storeState: MstEditorState;\n}\n\n@Injectable()\nexport class LaadSignaleringsbeeldenEffect {\n\n private SVG_PIXEL_RUIMTE = 30;\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private signaleringsBeeldManagerService: SignaleringsBeeldManagerService,\n private editorService: EditorService,\n private sbiResource: SignaleringsbeeldInfoResource,\n private connectorService: ConnectorService,\n private messagesSerivce: MessagesService) {\n }\n\n verwerkRitdelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.setRitDelen, RitdelenActions.navigeer, RitdelenActions.navigeerVanaf),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n this.store.dispatch(MstActions.SetOngeplandeActiesBepaald(false));\n this.verwerkRitdelen(actie, storeState);\n })), { dispatch: false }\n );\n\n laadEnVerwerkSignaleringsbeeldInfo$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.laadEnVerwerkSignaleringsbeeldInfo),\n withLatestFrom(this.store),\n switchMap(([actie, storeState]) => this.handleSignaleringsbeeldInfo({actie, storeState}))\n ), { dispatch: false });\n\n private handleSignaleringsbeeldInfo({actie, storeState} : SignaleringsbeeldInfoInput): Observable<ISignaleringsbeeldInfoDto[]> {\n return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(actie.pplgs, storeState.iaVersie)).pipe(\n take(1),\n tap((dtos) => this.processResponse({dtos, storeState, actie})),\n catchError((err) => {\n this.messagesSerivce.showMessage(MessageBuilder.nietGevondenSBI(err));\n return throwError(() => err);\n })\n );\n }\n\n private processResponse({ dtos, storeState, actie }: SignaleringsbeeldInfoInput): void {\n if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {\n this.messagesSerivce.showMessage(MessageBuilder.meerDan12BladenGevonden(dtos.length));\n }\n this.store.dispatch(SetSignaleringsbeeldInfoDtos(dtos, storeState.iaVersie, actie.rit, actie.paginationSize, actie.ritGewijzigdToegestaan));\n this.store.dispatch(SetVisibleSignaleringsbeeldInfoDtos(dtos));\n }\n\n navigeerBuitenRit$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.navigeerBuitenRit),\n withLatestFrom(this.store),\n switchMap(([actie, storeState]) =>\n of({\n rand: this.signaleringsBeeldManagerService.getTopologyElementByPuic(actie.randPuic),\n randPuic: actie.randPuic,\n storeState\n }).pipe(\n switchMap(this.getOtherRand.bind(this)),\n switchMap(this.loadRouteFilesAndSignaleringsbeeldInfo.bind(this)),\n switchMap(this.loadSignaleringsbeelden.bind(this)),\n map(this.processSvgsAndUpdateRitdelen.bind(this))\n )\n )\n ), { dispatch: false });\n\n private getOtherRand({ rand, randPuic, storeState}: NavigeerBuitenRitInput) {\n return this.connectorService.getOtherRand(randPuic).pipe(\n map(otherPplg => ({ otherPplg, rand, storeState }))\n );\n }\n\n private loadRouteFilesAndSignaleringsbeeldInfo({ otherPplg, rand, storeState }: NavigeerBuitenRitInput) {\n this.editorService.laadRouteFiles(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]);\n return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie)).pipe(\n map(dtos => ({ dtos, storeState }))\n );\n }\n\n private loadSignaleringsbeelden({ dtos, storeState }: NavigeerBuitenRitInput) {\n return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(\n map(svgDataUrls => ({ svgDataUrls, storeState, dtos }))\n );\n }\n\n private processSvgsAndUpdateRitdelen({ svgDataUrls, storeState, dtos }: NavigeerBuitenRitInput): void {\n this.verwerkSvgs(svgDataUrls);\n const nieuweRitdelen = this.updateRitdelen(storeState.ritDelen, dtos);\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(dtos));\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n }\n\n verwerkRitdelen(actie, storeState: MstEditorState): void {\n const isInit = actie.type === RitdelenActions.SET_RIT_DELEN;\n const ritDelen: Ritdeel[] = isInit ? actie.ritDelen : storeState.ritDelen;\n const storeDtos: ISignaleringsbeeldInfoDto[] = storeState.signaleringsbeeldInfoDtos;\n\n this.navigeer(ritDelen, actie, storeDtos);\n\n const visibleRitDelen = ritDelen.filter(n => n.isZichtbaarBinnenWindow());\n const visibleRitPplgs: string[] = visibleRitDelen.map(r => r.getPplg()).filter(this.distinct);\n\n const visibleDtos = this.bepaalZichtbareDtos(visibleRitPplgs, storeDtos);\n const loadingDtos = this.bepaalToLoadDtos(visibleDtos, ritDelen, visibleRitDelen, visibleRitPplgs, storeState);\n\n this.editorService.laadSignaleringsbeelden(actie.iaversieinfo.versie, loadingDtos).pipe(\n tap(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\n this.updateState(ritDelen, visibleDtos, storeState, visibleRitPplgs, loadingDtos, isInit, storeDtos);\n }),\n catchError(err => {\n this.messagesSerivce.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n throw err;\n })\n ).subscribe();\n }\n\n private updateState(ritDelen: Ritdeel[], visibleDtos: ISignaleringsbeeldInfoDto[], storeState: MstEditorState, visibleRitPplgs: string[], loadingDtos: any[], isInit: boolean, storeDtos: ISignaleringsbeeldInfoDto[]): void {\n setTimeout(() => {\n const nieuweRitdelen = this.updateRitdelen(ritDelen, visibleDtos);\n this.debugLog(storeState.debug, visibleRitPplgs, loadingDtos);\n\n if (!isInit) {\n this.store.dispatch(MstActions.UpdateSignaleringsbeeldInfoDtos(storeDtos));\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(loadingDtos));\n }\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n }, 0);\n }\n\n private createSignaleringsbeeldInfoQueryDto(pplgs: string[], iainfo: InfraModel): any {\n const datum = iainfo.ingangsDatum && !isNaN(iainfo.ingangsDatum.getTime()) ? iainfo.ingangsDatum.toISOString() : undefined;\n return { pplgs, versie: iainfo.versie, ingangsDatum: datum };\n }\n\n private verwerkSvgs(svgDataUrls): void {\n this.store.dispatch(MstActions.SetSvgInfos(this.bepaalSvgInfos(svgDataUrls)));\n }\n\n private bepaalSvgInfos(svgDataUrls): SvgInfo[] {\n let nextCoords = new Point(0, 0);\n const infos: SvgInfo[] = [];\n svgDataUrls.forEach(svgDataUrl => {\n if (svgDataUrl) {\n const decoded = atob(svgDataUrl.substring('data:image/svg+xml;base64,'.length));\n infos.push(new SvgInfo('data:image/svg+xml,' + decoded, nextCoords));\n nextCoords = new Point(nextCoords.x + ImxViewerComponent.getXCoordinate(decoded) + this.SVG_PIXEL_RUIMTE, 0);\n }\n });\n return infos;\n }\n\n private bepaalToLoadDtos(visibleDtos, ritDelen: Ritdeel[], visibleRitDelen, visibleRitPplgs: string[], storeState: MstEditorState): any[] {\n const loadingDtos = [...visibleDtos];\n const firstIdx = ritDelen.indexOf(visibleRitDelen[0]) - 1;\n this.addPrevNonVisibleDto(firstIdx, ritDelen, loadingDtos, visibleRitPplgs, storeState.signaleringsbeeldInfoDtos);\n const lastIdx = ritDelen.indexOf(visibleRitDelen[visibleRitDelen.length - 1]) + 1;\n this.addNextNonVisibleDto(lastIdx, ritDelen, loadingDtos, visibleRitPplgs, storeState.signaleringsbeeldInfoDtos);\n return loadingDtos;\n }\n\n private bepaalZichtbareDtos(visibleRitPplgs: string[], dtos: ISignaleringsbeeldInfoDto[]): ISignaleringsbeeldInfoDto[] {\n const visibleDtos: ISignaleringsbeeldInfoDto[] = [];\n visibleRitPplgs.forEach(pplg => {\n dtos.filter(dto => dto.pplgs.includes(pplg)).forEach(dto => {\n if (!visibleDtos.includes(dto)) {\n visibleDtos.push(dto);\n }\n });\n });\n visibleDtos.forEach(dto => dto.metVisualisatie = true);\n dtos.filter(d => !visibleDtos.includes(d)).forEach(d => d.metVisualisatie = false);\n return visibleDtos;\n }\n\n private distinct(value, index, self): boolean {\n return self.indexOf(value) === index;\n }\n\n private addPrevNonVisibleDto(firstIdx, ritdelen: Ritdeel[], loadingDtos: ISignaleringsbeeldInfoDto[], visibleRitPplgs: string[],\n allDtos: ISignaleringsbeeldInfoDto[]): void {\n if (firstIdx >= 0) {\n const pplg = ritdelen[firstIdx].getPplg();\n const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));\n\n if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {\n ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {\n d.metVisualisatie = false;\n loadingDtos.push(d);\n });\n } else {\n this.addPrevNonVisibleDto(firstIdx - 1, ritdelen, loadingDtos, visibleRitPplgs, allDtos);\n }\n }\n }\n\n private addNextNonVisibleDto(lastIdx, ritdelen: Ritdeel[], loadingDtos: ISignaleringsbeeldInfoDto[], visibleRitPplgs: string[],\n allDtos: ISignaleringsbeeldInfoDto[]): void {\n if (lastIdx <= ritdelen.length - 1) {\n const pplg = ritdelen[lastIdx].getPplg();\n const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));\n\n if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {\n ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {\n d.metVisualisatie = false;\n loadingDtos.push(d);\n });\n } else {\n this.addNextNonVisibleDto(lastIdx + 1, ritdelen, loadingDtos, visibleRitPplgs, allDtos);\n }\n }\n }\n\n private debugLog(debug, visibleRitPplgs: string[], loadingDtos): void {\n if (debug) {\n console.log('RIT PPLGs: ' + visibleRitPplgs);\n loadingDtos.forEach(dto => {\n let str = '\\nDTO-bladNaam: ' + dto.bladNaam;\n str += '\\nDTO-PPLGs : ' + dto.pplgs;\n str += '\\nVisible : ' + dto.metVisualisatie;\n console.log(str);\n });\n }\n }\n\n // acties: Navigeer|NavigeerVanaf|SetRitDelen\n private navigeer(ritDelen: Ritdeel[], actie: {\n paginationSize: number;\n stapSize: number;\n type: string;\n ritdeel\n }, storeDtos: ISignaleringsbeeldInfoDto[]): void {\n // alle ritdelen krijgen zichtbaarheidBuitenPaginatie => false\n if (actie.type === RitdelenActions.SET_RIT_DELEN) {\n this.bepaalZichtbaarheidRechts(0, ritDelen, actie.paginationSize, storeDtos);\n } else if (actie.type === RitdelenActions.NAVIGEER) {\n const isLinks = actie.stapSize < 0;\n const startIndex = this.bepaalStartIndex(ritDelen);\n const endIndex = this.bepaalEndIndex(ritDelen);\n const navigerenMogelijk = !(startIndex === 0 && isLinks || endIndex === ritDelen.length - 1 && !isLinks);\n if (navigerenMogelijk) {\n if (isLinks) {\n this.bepaalZichtbaarheidLinks(startIndex, ritDelen, actie.paginationSize, storeDtos);\n } else {\n this.bepaalZichtbaarheidRechts(endIndex, ritDelen, actie.paginationSize, storeDtos);\n }\n }\n } else if (actie.type === RitdelenActions.NAVIGEER_VANAF) {\n const idx = ritDelen.indexOf(actie.ritdeel);\n this.bepaalZichtbaarheidRechts(idx, ritDelen, actie.paginationSize, storeDtos);\n }\n }\n\n private updateRitdelen(ritdelen: Ritdeel[], visibleDtos: ISignaleringsbeeldInfoDto[]): Ritdeel[] {\n const visibleIndices = [];\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i].isZichtbaarBinnenWindow()) {\n visibleIndices.push(i);\n }\n }\n const min = Math.min(...visibleIndices);\n const max = Math.max(...visibleIndices);\n\n for (let i = 0; i < ritdelen.length; i++) {\n const rd = ritdelen[i];\n\n if (rd.isZichtbaarBinnenWindow()) {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0) {\n ritdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheid(RitdeelZichtbaarheid.ZICHTBAAR) : rd;\n } else {\n ritdelen[i] = this.maakOnzichtbaar(rd);\n }\n }\n }\n\n this.updateZichtbaarheidAangrezendeRitdelen(min, max, ritdelen, visibleDtos);\n\n return this.updateZichtbaarheidBuitenWindow(ritdelen, visibleDtos);\n }\n\n private updateZichtbaarheidBuitenWindow(nieuweRitdelen, visibleDtos: ISignaleringsbeeldInfoDto[]): Ritdeel[] {\n\n for (let i = 0; i < nieuweRitdelen.length; i++) {\n const rd = nieuweRitdelen[i];\n\n if (!rd.isZichtbaar() && this.bevatGevisualiseerdePplg(visibleDtos, rd.getPplg())) {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0 && this.isEersteLaatstePuicZichtbaar(rd.getTopologieElementen())) {\n nieuweRitdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ZICHTBAAR, true) :\n rd.copyMetZichtbaarheidBuitenPaginatie(true);\n }\n }\n }\n return nieuweRitdelen;\n }\n\n private updateZichtbaarheidAangrezendeRitdelen(min, max, nieuweRitdelen, visibleDtos: ISignaleringsbeeldInfoDto[]): void {\n let i = min - 1;\n while (i >= 0) {\n i = this.updateZichtbaarHeid(i, 0, visibleDtos, nieuweRitdelen) - 1;\n }\n\n i = max + 1;\n while (i < nieuweRitdelen.length) {\n i = this.updateZichtbaarHeid(i, nieuweRitdelen.length, visibleDtos, nieuweRitdelen) + 1;\n }\n }\n\n private updateZichtbaarHeid(i: number, end: number, visibleDtos: ISignaleringsbeeldInfoDto[], nieuweRitdelen: Ritdeel[]): number {\n const rd = nieuweRitdelen[i];\n if (this.bevatGevisualiseerdePplg(visibleDtos, rd.getPplg())) {\n i = this.updateZichtbaarheidAangrenzendeRitdeel(rd, nieuweRitdelen, i, end);\n } else {\n i = end;\n }\n return i;\n }\n\n private isEersteLaatstePuicZichtbaar(topoElementen: TopologyElement[]): boolean {\n return !!document.getElementById('p' + topoElementen[0].getPuic()) ||\n !!document.getElementById('p' + topoElementen[topoElementen.length - 1].getPuic());\n }\n\n private updateZichtbaarheidAangrenzendeRitdeel(rd: Ritdeel, nieuweRitdelen: Ritdeel[], i: number, end: number): any {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0 && this.isEersteLaatstePuicZichtbaar(rd.getTopologieElementen())) {\n nieuweRitdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheid(RitdeelZichtbaarheid.ZICHTBAAR) : rd;\n\n } else {\n return end;\n }\n return i;\n }\n\n private bevatGevisualiseerdePplg(visibleDtos: ISignaleringsbeeldInfoDto[], pplg: string): boolean {\n for (const dto of visibleDtos) {\n for (const dtopplg of dto.pplgs) {\n if (dtopplg === pplg) {\n return true;\n }\n }\n }\n return false;\n }\n\n private maakOnzichtbaar(rd): Ritdeel {\n return rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n\n private bepaalZichtbaarheidRechts(idx: number, items: Ritdeel[], paginationSize: number, dtos: ISignaleringsbeeldInfoDto[]): void {\n const pplgsWindow = [];\n const dtosWindow = [];\n for (let i = 0; i < items.length; i++) {\n const rd = items[i];\n if (i >= idx && this.valtBinnenPaginatieWindow(pplgsWindow, paginationSize, dtosWindow)) {\n this.setZichtbaar(rd, pplgsWindow, dtos, dtosWindow, items, i);\n } else {\n items[i] = rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n }\n }\n\n private bepaalZichtbaarheidLinks(idx: number, items: Ritdeel[], paginationSize: number, dtos: ISignaleringsbeeldInfoDto[]): void {\n const pplgsWindow = [];\n const dtosWindow = [];\n for (let i = items.length - 1; i >= 0; i--) {\n const rd = items[i];\n if (i <= idx && this.valtBinnenPaginatieWindow(pplgsWindow, paginationSize, dtosWindow)) {\n this.setZichtbaar(rd, pplgsWindow, dtos, dtosWindow, items, i);\n } else {\n items[i] = rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n }\n }\n\n private valtBinnenPaginatieWindow(pplgsWindow, paginationSize: number, dtosWindow): boolean {\n return pplgsWindow.length < paginationSize || dtosWindow.length < paginationSize;\n }\n\n private setZichtbaar(rd, pplgsWindow, dtos: ISignaleringsbeeldInfoDto[], dtosWindow, items: Ritdeel[], i: number): void {\n const itemPplg = rd.getPplg();\n if (!pplgsWindow.includes(itemPplg)) {\n pplgsWindow.push(itemPplg);\n }\n\n const pplgDtos = [];\n dtos.filter(dto => dto.pplgs.includes(itemPplg)).forEach(dto => {\n if (!pplgDtos.includes(dto)) {\n pplgDtos.push(dto);\n }\n });\n\n pplgDtos.filter(d => !dtosWindow.includes(d)).forEach(d => dtosWindow.push(d));\n\n items[i] = !rd.isZichtbaar() ? rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ZICHTBAAR, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n\n private bepaalStartIndex(ritDelen: Ritdeel[]): number {\n for (let i = 0; i < ritDelen.length; i++) {\n if (ritDelen[i].isBinnenWindow()) {\n return i;\n }\n }\n return -1;\n }\n\n private bepaalEndIndex(ritDelen: Ritdeel[]): number {\n for (let i = ritDelen.length - 1; i >= 0; i--) {\n if (ritDelen[i].isBinnenWindow()) {\n return i;\n }\n }\n return -1;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { from } from 'rxjs';\nimport { map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { Beweging } from '../../optimo';\nimport { BewegingVerrijkerService } from '../../services/beweging-verrijker.service';\nimport { KeurAlleActiesGoed, UpdateRit } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class RitGoedkeurenEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private bewegingVerrijker: BewegingVerrijkerService) {\n }\n\n keurAllesGoed$ = createEffect(() => this.actions$.pipe(\n ofType(KeurAlleActiesGoed),\n withLatestFrom(this.store),\n switchMap(([action, _store]) =>\n from(this.bewegingVerrijker.getBewegingen(action.bewegingen, action.ongeplandeActies)),\n ),\n map((bewegingen: Beweging[]) => UpdateRit(bewegingen))\n ));\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\n@Injectable()\nexport class RitdelenEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private rijwegPlanEditorService: EditorService) {\n }\n\n updateRitDelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.updateRitDelen),\n withLatestFrom(this.store),\n map(([actie, _storeState]) => {\n const nieuweRitDelen = actie.ritDelen.map(ritDeel => ritDeel.isZichtbaar() ?\n ritDeel.copyMetAlternatieveRoutes(this.sbmService.bepaalAlternativeRoutes(ritDeel.getRijweg())) : ritDeel);\n return RitdelenActions.setRitdelenAfterUpdate(nieuweRitDelen);\n }))\n );\n\n setAlternatieveRitDelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.setAlternatieveRitDelen),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const alternatieveRitDeel = actie.alternatieveRitDeel;\n const ritDelen = storeState.ritDelen;\n const orgRitdeel = alternatieveRitDeel.ritDeel;\n let newRitDeel = orgRitdeel.copyMetDwang(alternatieveRitDeel.alternatieveRoute.getDwang());\n const alterRoutes = this.sbmService.bepaalAlternativeRoutes(alternatieveRitDeel.ritDeel.getRijweg());\n newRitDeel = newRitDeel.copyMetAlternatieveRoutesZonderActies(alterRoutes);\n newRitDeel.bepaalTopologieElementen(this.sbmService);\n this.vervangRitdeel(ritDelen, orgRitdeel, newRitDeel);\n\n return RitdelenActions.setRitdelenAfterUpdate(ritDelen);\n }))\n );\n\n ritdeelInvoegen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.ritdeelInvoegen),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute, this.rijwegPlanEditorService, this.sbmService);\n return RitdelenActions.setRitdelenAfterUpdate(ritDelen);\n }))\n );\n\n private ritdeelInvoegenFunc(ritDelen: Ritdeel[], nieuweRoute, rijwegPlanEditorService, sbmService): Ritdeel[] {\n const origineelRitdeel = nieuweRoute.beginSeinOpRitdeel.ritdeel;\n const beginSein = nieuweRoute.beginSeinOpRitdeel.sein;\n const rijwegplan = rijwegPlanEditorService.getRijwegplan(beginSein.getPPLG());\n const dwangen: domein.Dwang[] = JsJavaUtil.listToArray(rijwegplan.getOnderliggendeDwangenTotEnVanSein(origineelRitdeel.getDwang(), beginSein));\n const isSamengesteldeRoute = dwangen[0] && dwangen[1];\n\n let newRitdeel1 = origineelRitdeel;\n\n if (isSamengesteldeRoute) {\n newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen);\n }\n\n if (nieuweRoute.combinatieVoorEindsein.isVrijeBaanRijweg()) {\n this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService);\n } else {\n this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen);\n }\n\n if (isSamengesteldeRoute) {\n ritDelen.splice(ritDelen.indexOf(origineelRitdeel), 1);\n }\n\n return [...ritDelen];\n }\n\n\n private vervangRitdeel(ritdelen: Ritdeel[], orgRitdeel: Ritdeel, newRitdeel: Ritdeel): void {\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i] === orgRitdeel) {\n ritdelen[i] = newRitdeel;\n break;\n }\n }\n }\n\n private verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen): Ritdeel {\n // dwangen in 2 nieuwe ritdelen verwerken voor de knip\n const nieuweRijweg1 =\n rijwegplan.getRijwegVoorSeinen(dwangen[0].getRoute().getBeginSein(), dwangen[0].getRoute().getEindSein());\n const dwangInfo1 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg1, dwangen[0]);\n const newRitdeel1 = new Ritdeel(dwangInfo1, [], null, null, null, []);\n\n // remove vrijbaan info uit ritdeel\n newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = null;\n newRitdeel1.vervolgSpoor = null;\n\n newRitdeel1.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, origineelRitdeel, newRitdeel1);\n\n const nieuweRijweg2 =\n rijwegplan.getRijwegVoorSeinen(dwangen[1].getRoute().getBeginSein(), dwangen[1].getRoute().getEindSein());\n const dwangInfo2 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg2, dwangen[1]);\n const newRitdeel2 = new Ritdeel(dwangInfo2, [], null, null, null, []);\n\n newRitdeel2.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel2);\n\n return newRitdeel1;\n }\n\n private extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService): void {\n newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = nieuweRoute.combinatieVoorEindsein;\n\n const vbrwp = <VrijebaanRijwegplan>nieuweRoute.combinatieVoorEindsein.rijwegplan;\n newRitdeel1.vervolgSpoor = vbrwp.getVervolgSpoor(nieuweRoute.combinatieVoorEindsein.rijweg);\n\n newRitdeel1.bepaalTopologieElementen(sbmService);\n }\n\n private maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen): void {\n let newRitdeel = this.createRitdeel(nieuweRoute);\n const altRoutes = sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());\n newRitdeel = newRitdeel.copyMetAlternatieveRoutes(altRoutes);\n newRitdeel.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel);\n }\n\n createRitdeel(nieuweRoute): Ritdeel {\n return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], null, null, null, []);\n }\n\n private insertRitdeel(ritdelen: Ritdeel[], naRitdeelPositie: Ritdeel, newRitdeel: Ritdeel): void {\n const idx = ritdelen.indexOf(naRitdeelPositie);\n ritdelen.splice(idx + 1, 0, newRitdeel);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { SignaleringsbeeldSvgUtilityService } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../actions/actions';\nimport { SetConnectorenClickableIds } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class SvgViewEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private signaleringsBeeldManagerService: SignaleringsBeeldManagerService,\n private sbSvgUtilService: SignaleringsbeeldSvgUtilityService) {\n }\n\n updateSvgView$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.SetSvgInfos),\n map((_actie) => {\n setTimeout(() => {\n this.sbSvgUtilService.addSvgDefs();\n\n const wisselEnStoringskaderPuicMap = new Map<string, string>();\n this.signaleringsBeeldManagerService.getAlleSoortenWissels()\n .forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.getPuic(), wissel.getStoringSymboolPuic()));\n this.sbSvgUtilService.zetClassOpStoringSymbolenMetMap(wisselEnStoringskaderPuicMap);\n this.sbSvgUtilService.zetClassOpSpoornummers(this.signaleringsBeeldManagerService.getPuicsVoorSpoornummers());\n\n this.sbSvgUtilService.maakOngewensteElementenOnzichtbaar();\n this.sbSvgUtilService.zetClassOpLangeText();\n\n this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(this.signaleringsBeeldManagerService.getSeinen());\n this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(this.signaleringsBeeldManagerService.getSignaleringsElementen());\n\n const puicsVoorRanden = this.signaleringsBeeldManagerService.getPuicsVoorRanden();\n this.zetClassOpRanden(puicsVoorRanden);\n this.sbSvgUtilService.zetClassOpRijrichtingen(this.signaleringsBeeldManagerService.getSeinen());\n this.store.dispatch(SetConnectorenClickableIds(puicsVoorRanden));\n\n }, 0);\n })), {dispatch: false}\n );\n\n private zetClassOpRanden(puics: string[]): void {\n puics.forEach(element => {\n const rand = document.getElementById('p' + element);\n rand?.classList.add('connector');\n });\n }\n}\n","import { RijwegplanRijwegDwangCombinatie } from './rijwegplan-rijweg-dwang-combinatie';\nimport { SeinOpRitdeel } from './sein-op-ritdeel';\n\nexport class NieuweRoute {\n\n constructor(public beginSeinOpRitdeel: SeinOpRitdeel, public combinatieVoorEindsein: RijwegplanRijwegDwangCombinatie) {\n }\n\n isValid(): boolean {\n return this.combinatieVoorEindsein !== null;\n }\n}\n","import { ActionReducer, createReducer, on } from '@ngrx/store';\nimport { Ritdeel, RitdeelZichtbaarheid } from '../../model/ritdeel';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\n\nconst { ZICHTBAAR, ONZICHTBAAR_DOOR_GEBRUIKER, ONZICHTBAAR_DOOR_SYSTEEM } = RitdeelZichtbaarheid;\n\nexport const ritdelenReducer: ActionReducer<Ritdeel[], RitdelenActions.RitDeelActionsUnion> = createReducer(\n [] as Ritdeel[],\n on(RitdelenActions.setRitdelenAfterUpdate, setRitDelenAfterUpdateFunc),\n on(RitdelenActions.setRitdeelZichtbaar, setRitdeelZichtbaarFunc),\n on(RitdelenActions.toggleRitdeelZichtbaar, toggleRitdeelZichtbaarFunc),\n on(RitdelenActions.setZichtbaarheidAlleRitdelen, setZichtbaarheidAlleRitdelenFunc),\n on(RitdelenActions.toggleZichtbaarheidVoorBewegingen, toggleZichtbaarheidVoorBewegingenFunc),\n on(RitdelenActions.deleteRitdeel, deleteRitdeelFunc),\n on(RitdelenActions.deleteRitdeelActie, deleteRitdeelActieFunc),\n on(RitdelenActions.addRitdeelActie, addRitdeelActieFunc)\n);\n\nfunction setRitDelenAfterUpdateFunc(_: Ritdeel[], { ritDelen }): Ritdeel[] {\n return [...ritDelen];\n}\n\nfunction setRitdeelZichtbaarFunc(ritDelen: Ritdeel[], { ritDeel, zichtbaar }): Ritdeel[] {\n const gezetRitdeel = ritDeel.copyMetZichtbaarheid(zichtbaar ? ZICHTBAAR : ONZICHTBAAR_DOOR_GEBRUIKER);\n vervangRitdeel(ritDelen, ritDeel, gezetRitdeel);\n return [...ritDelen];\n}\n\nfunction toggleRitdeelZichtbaarFunc(ritDelen: Ritdeel[], { ritDeel }): Ritdeel[] {\n const getoggeldeRitdeel = ritDeel.copyMetZichtbaarheid(ritDeel.isZichtbaar() ? ONZICHTBAAR_DOOR_GEBRUIKER : ZICHTBAAR);\n vervangRitdeel(ritDelen, ritDeel, getoggeldeRitdeel);\n return [...ritDelen];\n}\n\nfunction setZichtbaarheidAlleRitdelenFunc(ritDelen: Ritdeel[], { zichtbaarheid }): Ritdeel[] {\n ritDelen.filter(r => r.getZichtbaarheid() !== ONZICHTBAAR_DOOR_SYSTEEM).forEach(ritDeel => {\n vervangRitdeel(ritDelen, ritDeel, ritDeel.copyMetZichtbaarheid(zichtbaarheid ? ZICHTBAAR : ONZICHTBAAR_DOOR_GEBRUIKER));\n });\n return [...ritDelen];\n}\n\nfunction toggleZichtbaarheidVoorBewegingenFunc(ritDelen: Ritdeel[], { bewegingIds }): Ritdeel[] {\n ritDelen.filter(r => r.beweging && bewegingIds.includes(Number(r.getBewegingId()))).forEach(ritDeel => {\n vervangRitdeel(ritDelen, ritDeel, ritDeel.copyMetZichtbaarheid(ZICHTBAAR));\n });\n return [...ritDelen];\n}\n\nfunction vervangRitdeel(ritdelen: Ritdeel[], orgRitdeel: Ritdeel, newRitdeel: Ritdeel): void {\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i] === orgRitdeel) {\n ritdelen[i] = newRitdeel;\n break;\n }\n }\n}\n\nfunction deleteRitdeelFunc(ritDelen: Ritdeel[], { ritDeel }): Ritdeel[] {\n const idx = ritDelen.indexOf(ritDeel);\n if (idx >= 0) {\n ritDelen.splice(idx, 1);\n }\n return [...ritDelen];\n}\n\nfunction deleteRitdeelActieFunc(ritDelen: Ritdeel[], { ritDeel, actie }): Ritdeel[] {\n for (const item of ritDelen) {\n // We gebruiken equals omdat het wel of niet zichtbaar zijn van een ritdeel niet relevant is\n if (item.equals(ritDeel)) {\n const acties = ritDeel.acties;\n const aidx = acties.indexOf(actie);\n acties.splice(aidx, 1);\n break;\n }\n }\n return [...ritDelen];\n}\n\nfunction addRitdeelActieFunc(ritDelen: Ritdeel[], { ritDeel, actie }): Ritdeel[] {\n ritDeel.acties.push(actie);\n return [...ritDelen];\n}\n\n","import { SvgInfo } from '@loxia/imx-viewer';\nimport { createReducer, on } from '@ngrx/store';\nimport { ProgressIndicator } from '../atomic-components/progress-indicator/progress-indicator.entity';\nimport { NieuweRoute } from '../model/nieuwe-route';\nimport { OngeplandeActie } from '../model/ongeplande-actie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging, InfraModel } from '../optimo';\nimport { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';\nimport { ISignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { ArrayMultimap } from '../util/multi-map';\nimport * as MstActions from './actions/actions';\nimport { ritdelenReducer } from './reducer/rit-delen.reducer';\n\nexport interface MstEditorState {\n ritDelen: Ritdeel[]; // ons model van treinpad\n\n // puics voor SelectieInfos\n ritSelectieIds: string[];\n actieOpRitSelectieIds: string[];\n gebrokenRitSelectieIds: string[];\n alternatievenSelectieIds: string[];\n beginSeinSelectieIds: string[];\n eindSeinSelectieIds: string[];\n ongeplandeActieSelectieIds: string[];\n ongeplandeActies: ArrayMultimap<string, OngeplandeActie>;\n geplandeActies: ArrayMultimap<Actie, string>;\n\n // puics voor clicks\n alternatievenClickableIds: string[];\n eindSeinenClickableIds: string[];\n connectorClickableIds: string[];\n\n // puics voor rightclicks\n beginSeinRightClickableIds: string[];\n\n nieuweRoute: NieuweRoute;\n\n signaleringsbeeldInfoDtos: ISignaleringsbeeldInfoDto[];\n visibleSbInfoDtos: ISignaleringsbeeldInfoDto[];\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n iaVersie: InfraModel;\n svgInfos: SvgInfo[];\n debug: boolean;\n editable: boolean;\n ongeplandeActiesBepaald: boolean;\n progressState: ProgressState;\n nieuweBewegingen: Beweging[];\n baseUrl: string;\n focusIds: string[];\n selectedRitdeelId: number;\n}\n\ninterface ProgressState {\n progressIndicator?: ProgressIndicator;\n}\n\nconst onIdsActionHandler = (action) => on(action, (_: string[], { ids }) => ids);\nconst createIdsReducer = (action) => createReducer([] as string[], onIdsActionHandler(action));\n\nexport const editableReducer = createReducer(true, on(MstActions.setEditable, (_, { editable }) => editable));\n\nexport const progressIndicatorReducer = createReducer(\n undefined,\n on(MstActions.ShowProgress, () => ({ progressIndicator: {} })),\n on(MstActions.ClearProgress, () => undefined)\n);\n\nexport const svgInfoReducer = createReducer([] as SvgInfo[], on(MstActions.SetSvgInfos, (_, { svgInfos }) => svgInfos));\nexport const debugReducer = createReducer(false, on(MstActions.SetDebug, (_, { debug }) => debug));\nexport const ritSelectieIdsReducer = createIdsReducer(MstActions.SetRitSelectieIds);\n\nexport const actieOpRitReducer = createReducer(\n new ArrayMultimap<Actie, string>(),\n on(MstActions.SetGeplandeActies, (_, { geplandeActiesMap }) => geplandeActiesMap),\n on(MstActions.AddGeplandeActie, (geplandeActies, { actie, puics }) => {\n geplandeActies.putAll(actie, puics);\n return new ArrayMultimap(geplandeActies);\n }),\n on(MstActions.DeleteGeplandeActie, (geplandeActies, { actie }) => {\n geplandeActies.delete(actie);\n return new ArrayMultimap(geplandeActies);\n })\n);\n\nexport const actieOpRitSelectieIdsReducer = createReducer(\n [] as string[],\n onIdsActionHandler(MstActions.SetActieOpRitSelectieIds),\n on(MstActions.AddGeplandeActie, (ids: string[], { puics }) => {\n puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));\n return [...ids];\n }),\n on(MstActions.DeleteGeplandeActie, (ids: string[], { puics }) => {\n puics.filter(puic => ids.includes(puic)).forEach(puic => ids = ids.filter(p => p !== puic));\n return [...ids];\n })\n);\n\nexport const ongeplandeActieReducer = createReducer(\n new ArrayMultimap<string, OngeplandeActie>(),\n on(MstActions.SetOngeplandeActies, (_, { ongeplandeActiesMap }) => ongeplandeActiesMap),\n on(MstActions.AddOngeplandeActie, (ongeplandeActies, { ongeplandeActie }) => {\n ongeplandeActie.puics.filter(puic => !ongeplandeActies.containsEntry(puic, ongeplandeActie))\n .forEach(puic => ongeplandeActies.put(puic, ongeplandeActie));\n return new ArrayMultimap(ongeplandeActies);\n }),\n on(MstActions.DeleteOngeplandeActie, (ongeplandeActies, { ongeplandeActie }) => {\n ongeplandeActie.puics.forEach(puic => ongeplandeActies.delete(puic, ongeplandeActie));\n return new ArrayMultimap(ongeplandeActies);\n })\n);\n\nexport const ongeplandeActieSelectieIdsReducer = createReducer(\n [] as string[],\n // on(MstActions.SetOngeplandeActieSelectieIds, (_, { ids }) => ids),\n onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds),\n on(MstActions.AddOngeplandeActie, (ids: string[], { ongeplandeActie }) => {\n ongeplandeActie.puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));\n return [...ids];\n }),\n on(MstActions.DeleteOngeplandeActieSelectieId, (ids: string[], { id }) => [].concat(ids.includes(id) ? ids.filter(_id => _id !== id) : ids))\n);\n\nexport const gebrokenRitSelectieIdsReducer = createIdsReducer(MstActions.SetGebrokenRitSelectieIds);\nexport const alternatievenSelectieIdsReducer = createIdsReducer(MstActions.SetAlternatievenSelectieIds);\nexport const beginSeinSelectieIdsReducer = createIdsReducer(MstActions.SetBeginSeinSelectieIds);\nexport const eindSeinSelectieIdsReducer = createIdsReducer(MstActions.SetEindSeinSelectieIds);\nexport const alternatievenClickableIdsReducer = createIdsReducer(MstActions.SetAlternatievenClickableIds);\nexport const eindSeinenClickableIdsReducer = createIdsReducer(MstActions.SetEindSeinenClickableIds);\nexport const connectorClickableIdsReducer = createIdsReducer(MstActions.SetConnectorenClickableIds);\nexport const beginSeinRightClickableIdsReducer = createIdsReducer(MstActions.SetBeginSeinRightClickableIds);\n\nexport const nieuweRouteReducer = createReducer(\n new NieuweRoute(null, null),\n on(MstActions.SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)),\n on(MstActions.SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)),\n on(MstActions.ResetNieuweRoute, () => new NieuweRoute(null, null))\n);\n\nexport const signaleringsbeeldInfoDtosReducer = createReducer(\n [] as ISignaleringsbeeldInfoDto[],\n on(MstActions.SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos),\n on(MstActions.UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos])\n);\n\nexport const visibleSbInfoDtosReducer = createReducer(\n [] as ISignaleringsbeeldInfoDto[],\n on(MstActions.SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos),\n on(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos])\n);\n\nexport const iaVersieReducer = createReducer({},\n on(MstActions.SetIaVersie,\n (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));\nexport const algemeneRitInfoDtoReducer = createReducer(new AlgemeneRitInfoDto(), on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));\nexport const ongeplandeActiesBepaaldReducer = createReducer(false, on(MstActions.SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));\n\nexport const nieuweBewegingReducer = createReducer({ }, on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));\n\nexport const baseUrlReducer = createReducer(undefined, on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));\n\nexport const focusIdsReducer = createReducer({ }, on(MstActions.focusOpIds, (_, { puics }) => puics));\n\nexport const selectedRitdeelIdReducer = createReducer({}, on(MstActions.SetSelectedRitdeel, (_, { id }) => id));\n\nexport const storeReducers = {\n ritDelen: ritdelenReducer,\n ritSelectieIds: ritSelectieIdsReducer,\n actieOpRitSelectieIds: actieOpRitSelectieIdsReducer,\n ongeplandeActieSelectieIds: ongeplandeActieSelectieIdsReducer,\n ongeplandeActies: ongeplandeActieReducer,\n gebrokenRitSelectieIds: gebrokenRitSelectieIdsReducer,\n alternatievenSelectieIds: alternatievenSelectieIdsReducer,\n beginSeinSelectieIds: beginSeinSelectieIdsReducer,\n eindSeinSelectieIds: eindSeinSelectieIdsReducer,\n alternatievenClickableIds: alternatievenClickableIdsReducer,\n eindSeinenClickableIds: eindSeinenClickableIdsReducer,\n connectorClickableIds: connectorClickableIdsReducer,\n beginSeinRightClickableIds: beginSeinRightClickableIdsReducer,\n nieuweRoute: nieuweRouteReducer,\n geplandeActies: actieOpRitReducer,\n signaleringsbeeldInfoDtos: signaleringsbeeldInfoDtosReducer,\n visibleSbInfoDtos: visibleSbInfoDtosReducer,\n iaVersie: iaVersieReducer,\n algemeneRitInfoDto: algemeneRitInfoDtoReducer,\n svgInfos: svgInfoReducer,\n debug: debugReducer,\n editable: editableReducer,\n ongeplandeActiesBepaald: ongeplandeActiesBepaaldReducer,\n progressState: progressIndicatorReducer,\n nieuweBewegingen: nieuweBewegingReducer,\n baseUrl: baseUrlReducer,\n focusIds: focusIdsReducer,\n selectedRitdeelId: selectedRitdeelIdReducer\n};\n\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class ZoneUtil {\n private readonly zoneHandler;\n\n constructor(private readonly ngZone: NgZone) {\n\n this.zoneHandler = {\n get: (target: any, name: string): () => any => {\n const _ZoneHandler = this;\n const delegate = target[name];\n if (this.isFunction(delegate)) {\n return function(...args) {\n const that = this;\n return _ZoneHandler.ngZone.run(() => delegate.apply(that, args));\n };\n }\n return delegate;\n }\n };\n }\n\n isFunction(obj): boolean {\n return !!(obj?.constructor && obj.call && obj.apply);\n }\n\n proxy(target: any): any {\n return new Proxy(target, this.zoneHandler);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MessageComponent } from './atomic-components/message';\nimport { ImxViewerModule } from '@loxia/imx-viewer';\nimport { RijwegenModule } from '@loxia/rijwegen';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { ResourceModule } from '@ngx-resource/handler-ngx-http';\nimport { MessagesComponent } from './atomic-components/messages/messages.component';\nimport { OverlayComponent } from './atomic-components/overlay/overlay.component';\nimport { ProgressIndicatorComponent } from './atomic-components/progress-indicator/progress-indicator.component';\nimport { MstviewerComponent } from './components/mstviewer/mstviewer.component';\nimport { RitdelenLijstComponent } from './components/ritdelen-lijst/ritdelen-lijst.component';\nimport { RitdelenViewComponent } from './components/ritdelen-view/ritdelen-view.component';\nimport { RpeComponent } from './components/rpe/rpe.component';\nimport { MstLoggingResource } from './resources/mstlogging.resource';\nimport { SignaleringsbeeldInfoResource } from './resources/signaleringsbeeldinfo.resource';\nimport { BewegingUtils } from './services/beweging-utils.service';\nimport { BewegingVerrijkerService } from './services/beweging-verrijker.service';\nimport { EditorService } from './services/editor.service';\nimport { RitLezerService } from './services/rit-lezer.service';\nimport { SignaleringsBeeldManagerService } from './services/signalerings-beeld-manager.service';\nimport { BepaalOngeplandeActiesEffect } from './state/effect/bepaal-ongeplande-acties.effect';\nimport { BepaalSbInfosEffect } from './state/effect/bepaal-sb-infos.effect';\nimport { BewegingInvoegenEffect } from './state/effect/beweging-invoegen.effect';\nimport { DeleteOngeplandeActieEffect } from './state/effect/delete-ongeplande-actie.effect';\nimport { FocusEffect } from './state/effect/focus-effect';\nimport { LaadRouteFilesEffect } from './state/effect/laad-route-files.effect';\nimport { LaadSignaleringsbeeldenEffect } from './state/effect/laad-signaleringsbeelden.effect';\nimport { RitGoedkeurenEffect } from './state/effect/rit-goedkeuren.effect';\nimport { RitdelenEffect } from './state/effect/ritdelen.effect';\nimport { SvgViewEffect } from './state/effect/svg-view.effect';\nimport { storeReducers } from './state/mst-editor-state';\nimport { ActieHelper } from './util/actie-helper';\nimport { LoggingHelper } from './util/logging-helper';\nimport { ZoneUtil } from './util/zone-util';\nimport { CarouselControlsComponent } from './components/carousel-controls/carousel-controls.component';\nimport { ViewerControlsComponent } from './components/viewer-controls/viewer-controls.component';\nimport { SvgVisualisatieComponent } from './components/svg-visualisatie/svg-visualisatie.component';\n\nexport const STORE_CONFIG = {\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false,\n // strictStateSerializability: true, // geeft nog runtime errors, zou mooi zijn om aan te kunnen zetten\n // strictActionSerializability: true, // geeft nog runtime errors, zou mooi zijn om aan te kunnen zetten\n strictActionTypeUniqueness: false\n }\n};\n\nconst imports = [\n CommonModule,\n ImxViewerModule,\n RijwegenModule,\n ResourceModule.forRoot(),\n StoreModule.forRoot( storeReducers, STORE_CONFIG),\n EffectsModule.forRoot([\n DeleteOngeplandeActieEffect,\n LaadSignaleringsbeeldenEffect,\n LaadRouteFilesEffect,\n BepaalOngeplandeActiesEffect,\n BewegingInvoegenEffect,\n RitdelenEffect,\n RitGoedkeurenEffect,\n SvgViewEffect,\n BepaalSbInfosEffect,\n FocusEffect\n ])\n];\n\n@NgModule({\n imports,\n declarations: [\n MessageComponent,\n MstviewerComponent,\n OverlayComponent,\n ProgressIndicatorComponent,\n RpeComponent,\n RitdelenLijstComponent,\n RitdelenViewComponent,\n CarouselControlsComponent,\n ViewerControlsComponent,\n SvgVisualisatieComponent,\n MessagesComponent\n ],\n exports: [\n MstviewerComponent\n ],\n providers: [\n ZoneUtil,\n SignaleringsbeeldInfoResource,\n MstLoggingResource,\n EditorService,\n SignaleringsBeeldManagerService,\n RitLezerService,\n BewegingUtils,\n ActieHelper,\n LoggingHelper,\n BewegingVerrijkerService\n ]\n})\nexport class MstViewerModule {\n constructor(private service: EditorService, zoneUtil: ZoneUtil) {\n // maak de EditorService toegankelijk voor GWT code\n window['rpe'] = {\n EditorService: zoneUtil.proxy(service)\n };\n }\n}\n","export interface Rit {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n jaarplanId: number; // Id van het jaarplan. niet voor visualisatie\n volgnummer: number; // volgnummer van de rit binnen planmodule job. Niet voor visualisatie\n machineTypeId: number; // niet voor visualisatie\n machineTypeOmschrijving?: number; // BV UFM, UST, WOB, etc\n ritDatum?: Date;\n totaleTijd: number; // niet voor visualisatie\n omschrijving?: string; // beschrijving / naam van de rit\n wijzigStatus: string; // wordt na handmatige wijziging aangepast van 'Normaal' naar 'Gewijzigd'.\n ritStatus: string; // Concept / Definitief (e.v.t. tussen statussen n.t.b. Definitief betekent dat rit niet mag worden aangepast.\n aantalRitActies?: number; // Niet nodig voor visualisatie\n startLocatie?: string; // Startsein \"{IaGebiedType},{IaGebied},{SeinNaam},{SeinType}\"\n eindLocatie?: string; // Eindsein \"{IaGebiedType},{IaGebied},{SeinNaam},{SeinType}\"\n bewegingen: Beweging[]; // Lijst van bewegingen (routes)\n}\n\nexport interface Beweging {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n ritId: number; // Database Id van de rit. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n volgnummerBinnenRit: number; // volgnummer van beweging binnen de rit\n vanSeinType: string;\n vanSeinNaam: string;\n vanSeinPplg: string;\n vanGebiedType?: string;\n vanGebiedNaam?: string;\n naarSeinType: string;\n naarSeinNaam: string;\n naarSeinPplg: string;\n naarGebiedType?: string;\n naarGebiedNaam?: string;\n dwangNummer: number;\n vanPplg: string;\n vanSpoor: string;\n naarPplg: string;\n naarSpoor: string;\n treinNummer?: number; // Treinnummer (Donna) zodra bekend\n tijdstip?: Date; // Start tijdstip (Donna) zodra bekend\n opmerking?: string; // textuele opmerking\n wijzigStatus: string; // Wijzigstatus specifiek voor de Beweging. kan mogelijk vervangen\n ritActies: Actie[]; // Lijst van ritacties binnen deze route\n}\n\nexport interface Actie {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n bewegingId: number; // Database Id van de rit. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n volgnummerBinnenBeweging: number; // volgnummer van ritactie binnen de beweging / route\n volgnummerBinnenPlanningsRegel: number;\n ritActieTypeId: number; // Database Id van ritactieType. Overnemen van planningsregel als een nieuwe wordt toegevoegd\n ritActieTypeOmschrijving?: string; // omscrhijving van de ritActieType. Overnemen van planningsregel als een nieuwe wordt toegevoegd\n planningsRegelId?: number; // overnemen van planningsregel\n infraObjectType: string; // overnemen van planningsregel (Wissel of Spoortak)\n iaGebiedType: string; // overnemen van planningsregel\n iaGebiedNaam: number; // overnemen van planningsregel\n pplgNaam: string;\n wisselType: string; // overnemen van planningsregel\n wisselNaam: string; // overnemen van planningsregel\n wisselKantCode: string; // overnemen van planningsregel\n vanKilometerlint?: string; // overnemen van planningsregel (leeg bij Wissel)\n vanKilometrering?: number; // overnemen van planningsregel (leeg bij Wissel)\n totKilometerlint?: string; // overnemen van planningsregel (leeg bij Wissel)\n totKilometrering?: number; // overnemen van planningsregel (leeg bij Wissel)\n werkorderId: string; // overnemen van planningsregel (SAP werkorderId of bij meten bestandsnaam + regelnummer)\n infraBron: string; // overnemen van planningsregel (EquipmentId of BBK SpoortakNaam)\n opmerking: string;\n ritActieStatus: string; // Status van de ritactie. 'Gepland' als al gepland is. Anders moet het nog gepland worden.\n}\n\n// IA informatie\nexport interface InfraModel {\n versie: string;\n ingangsDatum: Date;\n}\n\n// enum WijzigSatussen {\n// 'Normaal', // Record ongewijzigd na eerste aanmaak (b.v. uit de planmodule)\n// 'Gewijzigd', // Record dat handmatig gewijzigd is na aanmaken (via b.v. visualisatie)\n// 'Toegevoegd', // Record volledig handmatig aangemaakt\n// 'Verwijderd', // Record dat verwijderd is maar gewaard wordt vanwege historie\n// 'Ongeldig', // Record dat om een of andere reden ongeldig is (b.v. infra specificatie bestaat niet)\n// }\n","/*\n * Public API Surface of mst-viewer\n */\n\nexport * from './lib/mst-viewer.module';\nexport * from './lib/components/mstviewer/mstviewer.component';\nexport * from './lib/resources/signaleringsbeeldinfo.resource';\nexport * from './lib//model/melding-event';\nexport * from './lib/optimo';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MessagesService","i3.MessageComponent","i2","i1.SignaleringsBeeldManagerService","i1.EditorService","i2.BewegingUtils","i2.SignaleringsBeeldManagerService","MstActions.focusOpIds","i2.ViewerControlService","i3.SignaleringsBeeldManagerService","i2.MstLoggingResource","i3.MessagesService","i4","i5.LoggingHelper","RitdeelViewModel","RitdelenActions.toggleRitdeelZichtbaar","RitdelenActions.setZichtbaarheidAlleRitdelen","RitdelenActions.deleteRitdeel","RitdelenActions.deleteRitdeelActie","MstActions.AddOngeplandeActie","MstActions.DeleteGeplandeActie","RitdelenActions.addRitdeelActie","MstActions.AddGeplandeActie","MstActions.DeleteOngeplandeActie","i3","i3.BewegingUtils","i5.CarouselControlsComponent","i3.ActieHelper","i4.SignaleringsBeeldManagerService","i5.EditorService","i6","MstActions.focusOpRitdeel","MstActions.bepaalSbInfos","i3.DebugService","i4.PrintBewegingService","i5","i6.OverlayComponent","i7.ProgressIndicatorComponent","i8.RpeComponent","i9.RitdelenLijstComponent","i10.RitdelenViewComponent","i11.ViewerControlsComponent","i12.SvgVisualisatieComponent","i13.MessagesComponent","i2.MessagesService","i4.MstLoggingResource","i5.MessagesService","i6.ActieHelper","i7.LoggingHelper","MstActions.laadEnVerwerkSignaleringsbeeldInfo","i3.SignaleringsbeeldInfoResource","i4.MessagesService","i5.DateService","i4.EditorService","RitdelenActions.setRitDelen","MstActions.setEditable","i3.RitLezerService","RitdelenActions.navigeer","RitdelenActions.navigeerVanaf","MstActions.SetOngeplandeActiesBepaald","MstActions.navigeerBuitenRit","MstActions.UpdateVisibleSignaleringsbeeldInfoDtos","RitdelenActions.updateRitDelen","RitdelenActions.SET_RIT_DELEN","MstActions.UpdateSignaleringsbeeldInfoDtos","MstActions.SetSvgInfos","RitdelenActions.NAVIGEER","RitdelenActions.NAVIGEER_VANAF","i5.SignaleringsbeeldInfoResource","i6.ConnectorService","i7.MessagesService","i3.BewegingVerrijkerService","RitdelenActions.setRitdelenAfterUpdate","RitdelenActions.setAlternatieveRitDelen","RitdelenActions.ritdeelInvoegen","RitdelenActions.setRitdeelZichtbaar","RitdelenActions.toggleZichtbaarheidVoorBewegingen","MstActions.ShowProgress","MstActions.ClearProgress","MstActions.SetDebug","MstActions.SetRitSelectieIds","MstActions.SetGeplandeActies","MstActions.SetActieOpRitSelectieIds","MstActions.SetOngeplandeActies","MstActions.SetOngeplandeActieSelectieIds","MstActions.DeleteOngeplandeActieSelectieId","MstActions.SetGebrokenRitSelectieIds","MstActions.SetAlternatievenSelectieIds","MstActions.SetBeginSeinSelectieIds","MstActions.SetEindSeinSelectieIds","MstActions.SetAlternatievenClickableIds","MstActions.SetEindSeinenClickableIds","MstActions.SetConnectorenClickableIds","MstActions.SetBeginSeinRightClickableIds","MstActions.SetNieuwRouteBeginSein","MstActions.SetNieuwRouteEindSein","MstActions.ResetNieuweRoute","MstActions.SetSignaleringsbeeldInfoDtos","MstActions.SetVisibleSignaleringsbeeldInfoDtos","MstActions.SetIaVersie","MstActions.SetAlgemeneRitInfo","MstActions.UpdateRit","MstActions.SetBaseUrl","MstActions.SetSelectedRitdeel","i2.ZoneUtil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loxia-mst-viewer.mjs","sources":["../../../projects/mst-viewer/src/lib/atomic-components/message/message.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/severity.enum.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/message.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/message/message.component.html","../../../projects/mst-viewer/src/lib/atomic-components/services/messages.service.ts","../../../projects/mst-viewer/src/lib/atomic-components/messages/messages.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/messages/messages.component.html","../../../projects/mst-viewer/src/lib/atomic-components/overlay/overlay.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/overlay/overlay.component.html","../../../projects/mst-viewer/src/lib/atomic-components/progress-indicator/progress-indicator.component.ts","../../../projects/mst-viewer/src/lib/atomic-components/progress-indicator/progress-indicator.component.html","../../../projects/mst-viewer/src/generated.version.ts","../../../projects/mst-viewer/src/lib/state/actions/actions.ts","../../../projects/mst-viewer/src/lib/state/actions/ritdelen.actions.ts","../../../projects/mst-viewer/src/lib/resources/mstlogging.resource.ts","../../../projects/mst-viewer/src/lib/util/utils.ts","../../../projects/mst-viewer/src/lib/util/multi-map.ts","../../../projects/mst-viewer/src/lib/services/signalerings-beeld-manager.service.ts","../../../projects/mst-viewer/src/lib/services/editor.service.ts","../../../projects/mst-viewer/src/lib/services/beweging-utils.service.ts","../../../projects/mst-viewer/src/lib/services/viewer-control.service.ts","../../../projects/mst-viewer/src/lib/services/debug.service.ts","../../../projects/mst-viewer/src/lib/services/print-beweging.service.ts","../../../projects/mst-viewer/src/lib/components/rpe/rpe.component.ts","../../../projects/mst-viewer/src/lib/components/rpe/rpe.component.html","../../../projects/mst-viewer/src/lib/model/ongeplande-actie.ts","../../../projects/mst-viewer/src/lib/model/km-range.ts","../../../projects/mst-viewer/src/lib/model/wissel-kant-code.ts","../../../projects/mst-viewer/src/lib/model/melding-event.ts","../../../projects/mst-viewer/src/lib/util/melding-builder.ts","../../../projects/mst-viewer/src/lib/util/message-builder.ts","../../../projects/mst-viewer/src/lib/util/logging-helper.ts","../../../projects/mst-viewer/src/lib/util/actie-helper.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-lijst/ritdelen-lijst.component.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-lijst/ritdelen-lijst.component.html","../../../projects/mst-viewer/src/lib/components/ritdelen-view/ritdelen-view.component.ts","../../../projects/mst-viewer/src/lib/components/ritdelen-view/ritdelen-view.component.html","../../../projects/mst-viewer/src/lib/components/carousel-controls/carousel-controls.component.ts","../../../projects/mst-viewer/src/lib/components/carousel-controls/carousel-controls.component.html","../../../projects/mst-viewer/src/lib/components/viewer-controls/viewer-controls.component.ts","../../../projects/mst-viewer/src/lib/components/viewer-controls/viewer-controls.component.html","../../../projects/mst-viewer/src/lib/model/alternatief-rit-deel.ts","../../../projects/mst-viewer/src/lib/model/sein-op-ritdeel.ts","../../../projects/mst-viewer/src/lib/util/actie-popover-bepaler.ts","../../../projects/mst-viewer/src/lib/components/svg-visualisatie/svg-visualisatie.component.ts","../../../projects/mst-viewer/src/lib/components/svg-visualisatie/svg-visualisatie.component.html","../../../projects/mst-viewer/src/lib/components/mstviewer/mstviewer.component.ts","../../../projects/mst-viewer/src/lib/components/mstviewer/mstviewer.component.html","../../../projects/mst-viewer/src/lib/resources/signaleringsbeeldinfo.resource.ts","../../../projects/mst-viewer/src/lib/services/base-rest.service.ts","../../../projects/mst-viewer/src/lib/services/beweging-verrijker.service.ts","../../../projects/mst-viewer/src/lib/model/rijwegplan-rijweg-dwang-combinatie.ts","../../../projects/mst-viewer/src/lib/model/ritdeel.ts","../../../projects/mst-viewer/src/lib/services/rit-lezer.service.ts","../../../projects/mst-viewer/src/lib/state/effect/bepaal-ongeplande-acties.effect.ts","../../../projects/mst-viewer/src/lib/util/date.service.ts","../../../projects/mst-viewer/src/lib/state/effect/bepaal-sb-infos.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/beweging-invoegen.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/delete-ongeplande-actie.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/focus-effect.ts","../../../projects/mst-viewer/src/lib/state/effect/laad-route-files.effect.ts","../../../projects/mst-viewer/src/lib/services/connector.service.ts","../../../projects/mst-viewer/src/lib/state/effect/laad-signaleringsbeelden.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/rit-goedkeuren.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/ritdelen.effect.ts","../../../projects/mst-viewer/src/lib/state/effect/svg-view.effect.ts","../../../projects/mst-viewer/src/lib/model/nieuwe-route.ts","../../../projects/mst-viewer/src/lib/state/reducer/rit-delen.reducer.ts","../../../projects/mst-viewer/src/lib/state/mst-editor-state.ts","../../../projects/mst-viewer/src/lib/util/zone-util.ts","../../../projects/mst-viewer/src/lib/mst-viewer.module.ts","../../../projects/mst-viewer/src/lib/optimo.ts","../../../projects/mst-viewer/src/public-api.ts","../../../projects/mst-viewer/src/loxia-mst-viewer.ts"],"sourcesContent":["import { Severity } from './severity.enum';\n\nexport class Message {\n constructor(public readonly severity: Severity, public readonly text: string, public readonly timeout: number = 0) {\n }\n}\n","export enum Severity {\n ERROR = 'error',\n WARNING = 'warning',\n NOTIFICATION = 'notification',\n INFORMATION = 'information',\n SUCCESS = 'success'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Message } from './message';\n\n@Component({\n selector: 'loxia-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss']\n})\nexport class MessageComponent implements OnInit {\n @Input()\n message: Message;\n\n @Output()\n onClearMessage: EventEmitter<Message> = new EventEmitter();\n\n ngOnInit(): void {\n if (this.message.timeout > 0) {\n setTimeout(() => {\n this.closeMessage({ stopPropagation: () => null });\n }, this.message.timeout);\n }\n }\n\n closeMessage(event): void {\n event.stopPropagation();\n this.onClearMessage.emit(this.message);\n this.message = undefined;\n }\n\n get severity(): string {\n return this.message.severity;\n }\n\n}\n","<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","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Message } from '../message';\n\n@Injectable({ providedIn: 'root' })\nexport class MessagesService {\n private messages: Message[] = [];\n private _messages$: BehaviorSubject<Message[]> = new BehaviorSubject<Message[]>([]);\n\n public showMessage(message: Message): void {\n this.messages.push(message);\n this._messages$.next(this.messages);\n }\n\n public clearMessage(message: Message): void {\n this.messages = this.messages.filter(m => m.text !== message.text);\n this._messages$.next(this.messages);\n }\n\n public get messages$(): Observable<Message[]> {\n return this._messages$;\n }\n}\n","import { Component } from '@angular/core';\nimport { MessagesService } from '../services/messages.service';\n\n@Component({\n selector: 'loxia-messages',\n templateUrl: './messages.component.html',\n styleUrls: ['./messages.component.scss']\n})\nexport class MessagesComponent {\n\n constructor(public messagesService: MessagesService) {\n }\n\n trackbyIndex(index: number): number {\n return index;\n }\n}\n","<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","import { Component } from '@angular/core';\n\n@Component({\n selector: 'loxia-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss']\n})\nexport class OverlayComponent {\n\n}\n","<div class=\"overlay\">\n <div class=\"centered-content\">\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'loxia-progress-indicator',\n templateUrl: './progress-indicator.component.html',\n styleUrls: ['./progress-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressIndicatorComponent {\n\n\n}\n","<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","export const version = '8.1.3-SNAPSHOT';\n\n","import { SvgInfo } from '@loxia/imx-viewer';\nimport { createAction, union } from '@ngrx/store';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { SeinOpRitdeel } from '../../model/sein-op-ritdeel';\nimport { Actie, Beweging, InfraModel, Rit } from '../../optimo';\nimport { AlgemeneRitInfoDto } from '../../resources/mstlogging.resource';\nimport { ISignaleringsbeeldInfoDto } from '../../resources/signaleringsbeeldinfo.resource';\nimport { ArrayMultimap } from '../../util/multi-map';\n\nexport const SET_EDITABLE = '[mst] SetEditable';\nexport const SET_RIT_SELECTIE_IDS = '[mst] SetRitSelectieIds';\nexport const SET_GEPLANDE_ACTIES = '[mst] SetGeplandeActies';\nexport const DELETE_GEPLANDE_ACTIES = '[mst] DeleteGeplandeActies';\nexport const ADD_GEPLANDE_ACTIES = '[mst] AddGeplandeActies';\nexport const SET_ACTIEOPRIT_SELECTIE_IDS = '[mst] SetActieOpRitSelectieIds';\nexport const SET_ONGEPLANDEACTIE_SELECTIE_IDS = '[mst] SetOngeplandeActieSelectieIds';\nexport const DELETE_ONGEPLANDE_ACTIE_SELECTIE_ID = '[mst] DeleteOngeplandeActieSelectieId';\nexport const ADD_ONGEPLANDE_ACTIE = '[mst] AddOngeplandeActie';\nexport const DELETE_ONGEPLANDE_ACTIE = '[mst] DeleteOngeplandeActie';\nexport const BEPAAL_ONGEPLANDE_ACTIES = '[mst] BepaalOngeplandeActies';\nexport const SET_ONGEPLANDE_ACTIES = '[mst] SetOngeplandeActies';\nexport const SET_GEBROKENRIT_SELECTIE_IDS = '[mst] SetGebrokenRitSelectieIds';\nexport const SET_ALTERNATIEVEN_SELECTIE_IDS = '[mst] SetAlternatievenSelectieIds';\nexport const SET_BEGINSEIN_SELECTIE_IDS = '[mst] SetBeginSeinSelectieIds';\nexport const SET_EINDSEIN_SELECTIE_IDS = '[mst] SetEindSeinSelectieIds';\nexport const SET_ALTERNATIEVEN_CLICKABLE_IDS = '[mst] SetAlternatievenClickableIds';\nexport const SET_EINDSEINEN_CLICKABLE_IDS = '[mst] SetEindSeinenClickableIds';\nexport const SET_CONNECTOREN_CLICKABLE_IDS = '[mst] SetConnectorenlickableIds';\nexport const SET_BEGINSEIN_RIGHTCLICKABLE_IDS = '[mst] SetBeginSeinRightClickableIds';\nexport const SET_NIEUW_ROUTE_BEGINSEIN = '[mst] SetNieuwRouteBeginSein';\nexport const SET_NIEUW_ROUTE_EINDSEIN = '[mst] SetNieuwRouteEindSein';\nexport const RESET_NIEUWE_ROUTE = '[mst] ResetNieuweRoute';\nexport const SET_SIGNALERINGSBEELD_INFO_DTOS = '[mst] SetSignaleringsbeeldInfoDtos';\nexport const UPDATE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] UpdateSignaleringsbeeldInfoDtos';\nexport const SET_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] SetVisibleSignaleringsbeeldInfoDtos';\nexport const UPDATE_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS = '[mst] UpdateVisibleSignaleringsbeeldInfoDtos';\nexport const SET_IA_VERSIE = '[mst] SetIaVersie';\nexport const SET_ALGEMENE_RIT_INFO = '[mst] SetAlgemeneRitInfo';\nexport const SET_SVG_INFOS = '[mst] SET_SVG_INFOS';\nexport const SET_DEBUG = '[mst] SET_DEBUG';\nexport const SET_ONGEPLANDE_ACTIES_BEPAALD = '[mst] SET_ONGEPLANDE_ACTIES_BEPAALD';\nexport const BEWEGING_INVOEGEN = '[mst] BewegingInvoegen';\nexport const SHOW_PROGRESS_INDICATOR = '[progress] Show the progress indicator';\nexport const CLEAR_PROGRESS_INDICATOR = '[progress] Clear the progress indicator';\nexport const KEUR_ALLE_ACTIES_GOED = '[progress] KeurAlleActiesGoed';\nexport const UPDATE_RIT = '[progress] UpdateRit';\nexport const SET_BASE_URL = '[progress] Set BaseUrl';\nexport const NAVIGEER_BUITEN_RIT = '[mst] NavigeerBuitenRit';\nexport const LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO = '[mst] laadEnVerwerkSignaleringsbeeldInfo';\n\nexport const FOCUS_OP_RITDEEL = '[mst] focusOpRitdeel';\nexport const FOCUS_OP_IDS = '[mst] focusOpIds';\nexport const BEPAAL_SB_INFOS = '[mst] bepaalSbInfos';\nexport const SET_SELECTED_RITDEEL = '[mst] SetSelectedRitdeel';\n\nexport const setEditable = createAction(SET_EDITABLE, (editable: boolean) => ({ editable }));\n\nexport const SetRitSelectieIds = createAction(SET_RIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetGeplandeActies = createAction(SET_GEPLANDE_ACTIES,\n (geplandeActiesMap: ArrayMultimap<Actie, string>) => ({ geplandeActiesMap }));\n\nexport const DeleteGeplandeActie = createAction(DELETE_GEPLANDE_ACTIES, (actie: Actie, puics: string[]) => ({ actie, puics }));\n\nexport const AddGeplandeActie = createAction(ADD_GEPLANDE_ACTIES, (actie: Actie, puics: string[]) => ({ actie, puics }));\n\nexport const SetActieOpRitSelectieIds = createAction(SET_ACTIEOPRIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetOngeplandeActieSelectieIds = createAction(SET_ONGEPLANDEACTIE_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const DeleteOngeplandeActieSelectieId = createAction(DELETE_ONGEPLANDE_ACTIE_SELECTIE_ID, (id: string) => ({ id }));\n\nexport const AddOngeplandeActie = createAction(ADD_ONGEPLANDE_ACTIE, (ongeplandeActie: OngeplandeActie) => ({ ongeplandeActie }));\n\nexport const DeleteOngeplandeActie = createAction(DELETE_ONGEPLANDE_ACTIE, (ongeplandeActie: OngeplandeActie) => ({ ongeplandeActie }));\n\nexport const BepaalOngeplandeActies = createAction(BEPAAL_ONGEPLANDE_ACTIES, (ongeplandeActies: any[]) => ({ ongeplandeActies }));\n\nexport const SetOngeplandeActies = createAction(SET_ONGEPLANDE_ACTIES,\n (ongeplandeActiesMap: ArrayMultimap<string, OngeplandeActie>) => ({ ongeplandeActiesMap }));\n\nexport const SetGebrokenRitSelectieIds = createAction(SET_GEBROKENRIT_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetAlternatievenSelectieIds = createAction(SET_ALTERNATIEVEN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetBeginSeinSelectieIds = createAction(SET_BEGINSEIN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetEindSeinSelectieIds = createAction(SET_EINDSEIN_SELECTIE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetAlternatievenClickableIds = createAction(SET_ALTERNATIEVEN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetEindSeinenClickableIds = createAction(SET_EINDSEINEN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetConnectorenClickableIds = createAction(SET_CONNECTOREN_CLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetBeginSeinRightClickableIds = createAction(SET_BEGINSEIN_RIGHTCLICKABLE_IDS, (ids: string[]) => ({ ids }));\n\nexport const SetNieuwRouteBeginSein = createAction(SET_NIEUW_ROUTE_BEGINSEIN,\n (startSeinOpRitdeel: SeinOpRitdeel) => ({ startSeinOpRitdeel }));\n\nexport const SetNieuwRouteEindSein = createAction(SET_NIEUW_ROUTE_EINDSEIN,\n (combinatieVoorEindsein: RijwegplanRijwegDwangCombinatie) => ({ combinatieVoorEindsein }));\n\nexport const ResetNieuweRoute = createAction(RESET_NIEUWE_ROUTE);\n\nexport const SetSignaleringsbeeldInfoDtos = createAction(SET_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[], iaversieinfo: any, treinpad: any, paginationSize: number, ritGewijzigdToegestaan: boolean) =>\n ({ dtos, iaversieinfo, treinpad, paginationSize, ritGewijzigdToegestaan }));\n\nexport const UpdateSignaleringsbeeldInfoDtos = createAction(UPDATE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const SetVisibleSignaleringsbeeldInfoDtos = createAction(SET_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const UpdateVisibleSignaleringsbeeldInfoDtos = createAction(UPDATE_VISIBLE_SIGNALERINGSBEELD_INFO_DTOS,\n (dtos: ISignaleringsbeeldInfoDto[]) => ({ dtos }));\n\nexport const SetIaVersie = createAction(SET_IA_VERSIE, (iaVersie: InfraModel) => ({ iaVersie }));\n\nexport const SetSvgInfos = createAction(SET_SVG_INFOS, (svgInfos: SvgInfo[]) => ({ svgInfos }));\n\nexport const SetDebug = createAction(SET_DEBUG, (debug: boolean) => ({ debug }));\n\nexport const SetAlgemeneRitInfo = createAction(SET_ALGEMENE_RIT_INFO, (algemeneRitInfoDto: AlgemeneRitInfoDto) => ({ algemeneRitInfoDto }));\n\nexport const SetOngeplandeActiesBepaald = createAction(SET_ONGEPLANDE_ACTIES_BEPAALD, (bepaald: boolean) => ({ bepaald }));\n\nexport const ShowProgress = createAction(SHOW_PROGRESS_INDICATOR);\nexport const ClearProgress = createAction(CLEAR_PROGRESS_INDICATOR);\nexport const BewegingInvoegen = createAction(BEWEGING_INVOEGEN,\n (startSeinOpRitdeel: SeinOpRitdeel, puicNaarEindSeinCombinatie: Map<string, RijwegplanRijwegDwangCombinatie>) =>\n ({ startSeinOpRitdeel, puicNaarEindSeinCombinatie }));\n\nexport const KeurAlleActiesGoed = createAction(KEUR_ALLE_ACTIES_GOED, (bewegingen: Beweging[], ongeplandeActies: Actie[]) => ({ bewegingen, ongeplandeActies }));\nexport const UpdateRit = createAction(UPDATE_RIT, (bewegingen: Beweging[]) => ({ bewegingen }));\nexport const SetBaseUrl = createAction(SET_BASE_URL, (baseUrl: string) => ({ baseUrl }));\n\nexport const laadEnVerwerkSignaleringsbeeldInfo = createAction(LAAD_EN_VERWERK_SIGNALERINGSBEELD_INFO,\n (rit: Rit, paginationSize: number, pplgs: string[], ritGewijzigdToegestaan: boolean) => ({ rit, paginationSize, pplgs, ritGewijzigdToegestaan }));\nexport const navigeerBuitenRit = createAction(NAVIGEER_BUITEN_RIT, (randPuic: string) => ({ randPuic }));\n\nexport const focusOpRitdeel = createAction(FOCUS_OP_RITDEEL, (ritdeel: Ritdeel, paginationSize: number, iaVersieInfo: InfraModel) => ({ ritdeel, paginationSize, iaVersieInfo }) )\nexport const focusOpIds = createAction(FOCUS_OP_IDS, (puics: string[]) => ({ puics }));\nexport const bepaalSbInfos = createAction(BEPAAL_SB_INFOS, (rit: Rit, ongeplandeActies: Actie[], iaVersie: string, ritGewijzigdToegestaan: boolean, paginationSize: number) => ({ rit, ongeplandeActies, iaVersie, ritGewijzigdToegestaan, paginationSize }));\nexport const SetSelectedRitdeel = createAction(SET_SELECTED_RITDEEL, (id: number) => ({ id }));\n\n// do not export return value\nconst mstActions = union({\n setEditable,\n SetRitSelectieIds,\n SetGeplandeActies,\n DeleteGeplandeActie,\n AddGeplandeActie,\n SetActieOpRitSelectieIds,\n SetOngeplandeActieSelectieIds,\n DeleteOngeplandeActieSelectieId,\n AddOngeplandeActie,\n DeleteOngeplandeActie,\n BepaalOngeplandeActies,\n SetOngeplandeActies,\n SetGebrokenRitSelectieIds,\n SetAlternatievenSelectieIds,\n SetBeginSeinSelectieIds,\n SetEindSeinSelectieIds,\n SetAlternatievenClickableIds,\n SetEindSeinenClickableIds,\n SetBeginSeinRightClickableIds,\n SetNieuwRouteBeginSein,\n SetNieuwRouteEindSein,\n ResetNieuweRoute,\n SetSignaleringsbeeldInfoDtos,\n UpdateSignaleringsbeeldInfoDtos,\n SetVisibleSignaleringsbeeldInfoDtos,\n UpdateVisibleSignaleringsbeeldInfoDtos,\n SetIaVersie,\n SetSvgInfos,\n SetDebug,\n SetAlgemeneRitInfo,\n SetOngeplandeActiesBepaald,\n ShowProgress,\n ClearProgress,\n BewegingInvoegen,\n KeurAlleActiesGoed,\n UpdateRit,\n setSelectedRitdeel: SetSelectedRitdeel\n});\n\n// export only type\nexport type MstActionsUnion = typeof mstActions;\n\n\n\n","import {createAction, union} from '@ngrx/store';\nimport {AlternatiefRitDeel} from '../../model/alternatief-rit-deel';\nimport {NieuweRoute} from '../../model/nieuwe-route';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {Actie} from '../../optimo';\n\nexport const SET_RIT_DELEN = '[mst] SetRitDelen';\nexport const SET_RIT_DELEN_AFTER_UPDATE = '[mst] SetRitDelenAfterUpdate';\nexport const UPDATE_RIT_DELEN = '[mst] UpdateRitDelen';\nexport const TOGGLE_RITDEEL_ZICHTBAAR = '[mst] ToggleRitdeelZichtbaar';\nexport const SET_RITDEEL_ZICHTBAAR = '[mst] ZetRitdeelZichtbaar';\nexport const SET_ZICHTBAARHEID_ALLE_RITDELEN = '[mst] SetZichtbaarheidAlleRitdelen';\nexport const TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN = '[mst] ToggleZichtbaarheidVoorBewegingen';\nexport const SET_ALTERNATIEVE_RIT_DELEN = '[mst] SetAlternatieveRitDelen';\nexport const RITDEEL_INVOEGEN = '[mst] RitdeelInvoegen';\nexport const DELETE_RITDEEL = '[mst] DeleteRitdeel';\nexport const DELETE_RITDEEL_ACTIE = '[mst] DeleteRitdeelActie';\nexport const ADD_RITDEEL_ACTIE = '[mst] AddRitdeelActie';\nexport const NAVIGEER = '[mst] Navigeer';\nexport const NAVIGEER_VANAF = '[mst] NavigeerVanaf';\n\nexport const setRitDelen = createAction(SET_RIT_DELEN,\n (ritDelen: Ritdeel[], paginationSize: number, iaversieinfo: any) => ({ ritDelen, paginationSize, iaversieinfo }));\nexport const setRitdelenAfterUpdate = createAction(SET_RIT_DELEN_AFTER_UPDATE,\n (ritDelen: Ritdeel[]) => ({ ritDelen }));\nexport const navigeer = createAction(NAVIGEER,\n (stapSize: number, paginationSize: number, iaversieinfo: any) => ({ stapSize, paginationSize, iaversieinfo }));\nexport const navigeerVanaf = createAction(NAVIGEER_VANAF,\n (paginationSize: number, iaversieinfo: any, ritdeel: Ritdeel) => ({ paginationSize, iaversieinfo, ritdeel }));\nexport const updateRitDelen = createAction(UPDATE_RIT_DELEN,\n (ritDelen: Ritdeel[]) => ({ ritDelen }));\nexport const toggleRitdeelZichtbaar = createAction(TOGGLE_RITDEEL_ZICHTBAAR, (ritDeel: Ritdeel) => ({ ritDeel }));\nexport const setRitdeelZichtbaar = createAction(SET_RITDEEL_ZICHTBAAR,\n (ritDeel: Ritdeel, zichtbaar: boolean) => ({ ritDeel, zichtbaar }));\nexport const deleteRitdeel = createAction(DELETE_RITDEEL, (ritDeel: Ritdeel) => ({ ritDeel }));\nexport const deleteRitdeelActie = createAction(DELETE_RITDEEL_ACTIE, (ritDeel: Ritdeel, actie: Actie) => ({ ritDeel, actie }));\nexport const addRitdeelActie = createAction(ADD_RITDEEL_ACTIE, (ritDeel: Ritdeel, actie: Actie) => ({ ritDeel, actie }));\nexport const setZichtbaarheidAlleRitdelen = createAction(SET_ZICHTBAARHEID_ALLE_RITDELEN,\n (zichtbaarheid: boolean) => ({ zichtbaarheid }));\nexport const toggleZichtbaarheidVoorBewegingen = createAction(TOGGLE_ZICHTBAARHEID_VOOR_BEWEGINGEN,\n (bewegingIds: number[]) => ({ bewegingIds }));\nexport const setAlternatieveRitDelen = createAction(SET_ALTERNATIEVE_RIT_DELEN,\n (alternatieveRitDeel: AlternatiefRitDeel) => ({ alternatieveRitDeel }));\nexport const ritdeelInvoegen = createAction(RITDEEL_INVOEGEN,\n (nieuweRoute: NieuweRoute) => ({ nieuweRoute }));\n\n// do not export return value\nconst ritdeelActions = union({\n setRitDelen,\n updateRitDelen,\n setRitdelenAfterUpdate,\n toggleRitdeelZichtbaar,\n setRitdeelZichtbaar,\n deleteRitdeel,\n deleteRitdeelActie,\n addRitdeelActie,\n setZichtbaarheidAlleRitdelen,\n toggleZichtbaarheidVoorBewegingen,\n setAlternatieveRitDelen,\n ritdeelInvoegen\n});\n\n// export only type\nexport type RitDeelActionsUnion = typeof ritdeelActions;\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n IResourceMethodPromise,\n Resource,\n ResourceAction,\n ResourceHandler,\n ResourceModel,\n ResourceParams,\n ResourceRequestMethod\n} from '@ngx-resource/core';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsbeeldInfoDto } from './signaleringsbeeldinfo.resource';\nimport { Subscription } from 'rxjs';\n\n@Injectable()\n@ResourceParams({\n pathPrefix: '/mst/services/rest/logging'\n})\n\nexport class MstLoggingResource extends Resource implements OnDestroy{\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(restHandler: ResourceHandler, private store: Store<MstEditorState>) {\n super(restHandler);\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.$setUrl(baseUrl)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @ResourceAction({\n path: '/',\n method: ResourceRequestMethod.Post\n })\n logErrorMessages: IResourceMethodPromise<MstLoggingDto[], void>;\n}\n\nexport interface IMstLoggingDto {\n iaVersie: string;\n meldingLevel: string;\n meldingMessage: string;\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n actieDto: ActieDto;\n sbinfoDtos: SignaleringsbeeldInfoDto[];\n}\n\nexport class MstLoggingDto extends ResourceModel implements IMstLoggingDto {\n $resource = MstLoggingResource;\n iaVersie: string;\n meldingLevel: string;\n meldingMessage: string;\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n actieDto: ActieDto;\n sbinfoDtos: SignaleringsbeeldInfoDto[];\n\n constructor(data?: IMstLoggingDto) {\n super();\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n iaVersie: this.iaVersie,\n meldingLevel: this.meldingLevel,\n meldingMessage: this.meldingMessage,\n algemeneRitInfoDto: this.algemeneRitInfoDto,\n actieDto: this.actieDto,\n sbinfoDtos: this.sbinfoDtos\n };\n }\n\n toString(): string {\n return `${ this.iaVersie },${ this.meldingLevel },${ this.meldingMessage },${ this.algemeneRitInfoDto },\n ${ this.actieDto },${ this.sbinfoDtos }`;\n }\n\n $setData(data: IMstLoggingDto): this {\n if (data) {\n this.iaVersie = data.iaVersie;\n this.meldingLevel = data.meldingLevel;\n this.meldingMessage = data.meldingMessage;\n this.algemeneRitInfoDto = data.algemeneRitInfoDto;\n this.actieDto = data.actieDto;\n this.sbinfoDtos = data.sbinfoDtos;\n }\n return this;\n }\n}\n\nexport interface IActieDto {\n pplgNaam: string;\n ritActieTypeOmschrijving: string;\n ritActieStatus: string;\n bewegingId: number;\n wisselType: string;\n wisselNaam: string;\n wisselKantCode: string;\n vanKilometerlint?: string;\n vanKilometrering?: number;\n totKilometerlint?: string;\n totKilometrering?: number;\n}\n\nexport class ActieDto implements IActieDto {\n pplgNaam: string;\n ritActieTypeOmschrijving: string;\n ritActieStatus: string;\n bewegingId: number;\n wisselType: string;\n wisselNaam: string;\n wisselKantCode: string;\n vanKilometerlint: string;\n vanKilometrering: number;\n totKilometerlint: string;\n totKilometrering: number;\n\n constructor(data?: IActieDto) {\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n pplgNaam: this.pplgNaam,\n ritActieTypeOmschrijving: this.ritActieTypeOmschrijving,\n ritActieStatus: this.ritActieStatus,\n bewegingId: this.bewegingId,\n wisselType: this.wisselType,\n wisselNaam: this.wisselNaam,\n wisselKantCode: this.wisselKantCode,\n vanKilometerlint: this.vanKilometerlint,\n vanKilometrering: this.vanKilometrering,\n totKilometerlint: this.totKilometerlint,\n totKilometrering: this.totKilometrering\n };\n }\n\n toString(): string {\n return `${ this.pplgNaam },${ this.ritActieTypeOmschrijving },${ this.ritActieStatus },\n ${ this.bewegingId },${ this.wisselType },${ this.wisselNaam },${ this.wisselKantCode },\n ${ this.vanKilometerlint },${ this.vanKilometrering },${ this.totKilometerlint },${ this.totKilometrering }`;\n }\n\n $setData(data: IActieDto): this {\n if (data) {\n this.pplgNaam = data.pplgNaam;\n this.ritActieTypeOmschrijving = data.ritActieTypeOmschrijving;\n this.ritActieStatus = data.ritActieStatus;\n this.bewegingId = data.bewegingId;\n this.wisselType = data.wisselType;\n this.wisselNaam = data.wisselNaam;\n this.wisselKantCode = data.wisselKantCode;\n this.vanKilometerlint = data.vanKilometerlint;\n this.vanKilometrering = data.vanKilometrering;\n this.totKilometerlint = data.totKilometerlint;\n this.totKilometrering = data.totKilometrering;\n }\n return this;\n }\n}\n\nexport interface IAlgemeneRitInfoDto {\n id: string;\n jaarplanId: string;\n volgnummer: string;\n machineTypeId: string;\n machineTypeOmschrijving: string;\n ritDatum: string;\n startDatum: string;\n eindDatum: string;\n ritNaam: string;\n startLocatie: string;\n eindLocatie: string;\n ritStatus: string;\n modified: string;\n modifiedBy: string;\n planJobId: string;\n}\n\nexport class AlgemeneRitInfoDto implements IAlgemeneRitInfoDto {\n id: string;\n jaarplanId: string;\n volgnummer: string;\n machineTypeId: string;\n machineTypeOmschrijving: string;\n ritDatum: string;\n startDatum: string;\n eindDatum: string;\n ritNaam: string;\n startLocatie: string;\n eindLocatie: string;\n ritStatus: string;\n modified: string;\n modifiedBy: string;\n planJobId: string;\n\n constructor(data?: IAlgemeneRitInfoDto) {\n this.$setData(data);\n }\n\n toJSON(): any {\n return {\n id: this.id,\n jaarplanId: this.jaarplanId,\n volgnummer: this.volgnummer,\n machineTypeId: this.machineTypeId,\n machineTypeOmschrijving: this.machineTypeOmschrijving,\n ritDatum: this.ritDatum,\n startDatum: this.startDatum,\n eindDatum: this.eindDatum,\n ritNaam: this.ritNaam,\n startLocatie: this.startLocatie,\n eindLocatie: this.eindLocatie,\n ritStatus: this.ritStatus,\n modified: this.modified,\n modifiedBy: this.modifiedBy,\n planJobId: this.planJobId\n };\n }\n\n toString(): string {\n return `${ this.id },${ this.jaarplanId },${ this.volgnummer },${ this.machineTypeId },${ this.machineTypeOmschrijving }\n ,${ this.ritDatum },${ this.startDatum },${ this.eindDatum },${ this.ritNaam },${ this.startLocatie }\n ,${ this.eindLocatie },${ this.ritStatus },${ this.modified },${ this.modifiedBy },${ this.planJobId }`;\n }\n\n $setData(data: IAlgemeneRitInfoDto): this {\n if (data) {\n this.id = data.id;\n this.jaarplanId = data.jaarplanId;\n this.volgnummer = data.volgnummer;\n this.machineTypeId = data.machineTypeId;\n this.machineTypeOmschrijving = data.machineTypeOmschrijving;\n this.ritDatum = data.ritDatum;\n this.startDatum = data.startDatum;\n this.eindDatum = data.eindDatum;\n this.ritNaam = data.ritNaam;\n this.startLocatie = data.startLocatie;\n this.eindLocatie = data.eindLocatie;\n this.ritStatus = data.ritStatus;\n this.modified = data.modified;\n this.modifiedBy = data.modifiedBy;\n this.planJobId = data.planJobId;\n }\n return this;\n }\n}\n","export default class Utils {\n\n public static flatMap(xs, f): any {\n return xs.reduce((acc, x) => acc.concat(f(x)), []);\n }\n\n public static getValidErorrMessage(err: any): string {\n let errorMsg = '';\n if (err.msg) {\n errorMsg += err.msg;\n }\n\n if (Array.isArray(err.body)) {\n err.body.forEach(x => errorMsg += x);\n } else if (err.body) {\n if (err.body instanceof ProgressEvent) {\n errorMsg = 'Kon geen verbinding maken met de server';\n } else if (err.body.text) {\n errorMsg += err.body.text;\n } else {\n errorMsg += err.body;\n }\n }\n if (err.message) {\n errorMsg += err.message;\n }\n if (typeof err === 'string' || err instanceof String) {\n errorMsg += err;\n }\n if (errorMsg !== '') {\n return errorMsg;\n }\n }\n}\n","import Utils from './utils';\n\n/**\n * https://gist.github.com/jordanluyke/609a4fffb69d1ebafdadd313ee2ee804\n *\n * @author Jordan Luyke <jordanluyke@gmail.com>\n */\n\nexport class MultimapEntry<K, V> {\n constructor(readonly key: K, readonly value: V) {\n }\n}\n\nexport interface Multimap<K, V> {\n entries: MultimapEntry<K, V>[];\n\n clear(): void;\n\n containsKey(key: K): boolean;\n\n containsValue(value: V): boolean;\n\n containsEntry(key: K, value: V): boolean;\n\n delete(key: K, value?: V): boolean;\n\n get(key: K): V[];\n\n keys(): K[];\n\n values(): V[];\n\n put(key: K, value: V): MultimapEntry<K, V>[];\n\n size(): number;\n}\n\nexport class ArrayMultimap<K, V> implements Multimap<K, V> {\n\n private _entries: MultimapEntry<K, V>[] = [];\n\n constructor(map?: Multimap<K, V>) {\n if (map) {\n this._entries = map.entries.slice();\n }\n }\n\n public size(): number {\n return this.keys().length;\n }\n\n public clear(): void {\n this._entries = [];\n }\n\n public containsKey(key: K): boolean {\n return this._entries\n .filter(entry => entry.key === key)\n .length > 0;\n }\n\n public containsValue(value: V): boolean {\n return this._entries\n .filter(entry => entry.value === value)\n .length > 0;\n }\n\n public containsEntry(key: K, value: V): boolean {\n return this._entries\n .filter(entry => entry.key === key && entry.value === value)\n .length > 0;\n }\n\n public delete(key: K, value?: V): boolean {\n const temp = this._entries;\n this._entries = this._entries\n .filter(entry => {\n if (value) {\n return entry.key !== key || entry.value !== value;\n }\n return entry.key !== key;\n });\n return temp.length !== this._entries.length;\n }\n\n public get entries(): MultimapEntry<K, V>[] {\n return this._entries;\n }\n\n public get(key: K): V[] {\n const valueMap = this._entries\n .filter(entry => entry.key === key)\n .map(entry => entry.value);\n return valueMap || [];\n }\n\n public keys(): K[] {\n return Array.from(new Set(this._entries.map(entry => entry.key)));\n }\n\n public values(): V[] {\n return Utils.flatMap(this._entries, x => x.value);\n }\n\n public put(key: K, value: V): MultimapEntry<K, V>[] {\n this._entries.push(new MultimapEntry(key, value));\n return this._entries;\n }\n\n public putAll(key: K, values: V[]): MultimapEntry<K, V>[] {\n values.forEach(value => this._entries.push(new MultimapEntry(key, value)));\n return this._entries;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil, sbblad } from '@loxia/rijwegen';\n\n@Injectable()\nexport class SignaleringsBeeldManagerService {\n private signaleringsBeeldManager;\n\n /*\n * SignaleringsBeeldManager gezet vanuit GWT\n */\n set(signaleringsBeeldManager: any): void {\n this.signaleringsBeeldManager = signaleringsBeeldManager;\n }\n\n isReady(): boolean {\n return !!this.signaleringsBeeldManager;\n }\n\n bepaalRouteElementen(route: domein.Route): sbblad.TopologyElement[] {\n try {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalRouteElementenStrict(route));\n } catch (e) {\n console.log(e.message);\n return [];\n }\n }\n\n getPuicsVoorSeinenInRoute(route: domein.Route): string[] {\n try {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.getPuicsVoorSeinenInRoute(route));\n } catch (e) {\n console.log(e.message);\n return [];\n }\n }\n\n getSBSein(sein: domein.Sein): sbblad.Sein {\n return this.signaleringsBeeldManager.getSeinStrict(sein);\n }\n\n getSbSpoortak(takId: string): sbblad.Spoortak {\n return this.signaleringsBeeldManager ? this.signaleringsBeeldManager.getSpoortak(takId) : null;\n }\n\n getAlleSoortenWissels(): sbblad.Wissel[] {\n return this.signaleringsBeeldManager.getAlleSoortenWissels();\n }\n\n getSBWissel(wisselNaam: string, pplg: string): sbblad.Wissel {\n return this.signaleringsBeeldManager.getWissel(wisselNaam, pplg);\n }\n\n getSignaleringsElementen(): sbblad.SignaleringsElement[] {\n return this.signaleringsBeeldManager.getSignaleringsElementen();\n }\n\n bepaalAlternativeRoutes(rijweg: domein.Rijweg): sbblad.AlternativeRoute[] {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalAlternativeRoutes(rijweg));\n }\n\n bepaalAlternativeRouteHighlights(alternatieveRoute: sbblad.AlternativeRoute,\n topoElementen: sbblad.HasIdentifier[]): sbblad.HasIdentifier[] {\n return JsJavaUtil.listToArray(this.signaleringsBeeldManager.bepaalAlternativeRouteHighlights(alternatieveRoute, topoElementen));\n }\n\n getPuicsVoorSeinen(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSeinen();\n }\n\n getSeinen(): sbblad.Sein[] {\n return this.signaleringsBeeldManager.getSeinen();\n }\n\n getPuicsVoorWissels(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorWissels();\n }\n\n getPuicsVoorRanden(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorRanden();\n }\n\n getWisselMetStoringskaderPuic(storingskaderPuic: string): sbblad.Wissel {\n return this.signaleringsBeeldManager.getWisselMetStoringskaderPuic(storingskaderPuic);\n }\n\n getPuicsVoorWissel(wisselId: string, pplg: string): any {\n return this.signaleringsBeeldManager ? this.signaleringsBeeldManager.getPuicsVoorWissel(wisselId, pplg) : null;\n }\n\n getPuicsVoorSpoornummers(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSpoornummers();\n }\n\n getPuicsVoorSplitEngelseWissels(): string[] {\n return this.signaleringsBeeldManager.getPuicsVoorSplitEngelseWissels();\n }\n\n getTechnischAlternatiefSBSein(sein: sbblad.Sein): sbblad.Sein {\n return this.signaleringsBeeldManager.getTechnischAlternatiefSBSein(sein);\n }\n\n getTopologyElementByPuic(puic: string): sbblad.TopologyElement {\n return this.signaleringsBeeldManager.getTopologyElementByPuic(puic);\n }\n\n getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam: string, kantcode: string): any {\n return this.signaleringsBeeldManager.getEersteVerbindingPuicVoorSplitEngelseWissel(engelsWisselNaam, kantcode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein } from '@loxia/rijwegen';\nimport { from, Observable } from 'rxjs';\nimport { ISignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\n\n@Injectable()\nexport class EditorService {\n private editor;\n private resolveReadyPromise;\n private promise;\n\n constructor(private signaleringsBeeldManagerService: SignaleringsBeeldManagerService) {\n this.initReadyPromise();\n }\n\n setEditor(editor): void {\n this.editor = editor;\n\n this.resolveReadyPromise();\n }\n\n isReady(): Promise<void> {\n return this.promise;\n }\n\n setSignaleringsBeeldManager(signaleringsBeeldManager): void {\n this.signaleringsBeeldManagerService.set(signaleringsBeeldManager);\n }\n\n laadSignaleringsbeelden(iaVersie: string, dtos: ISignaleringsbeeldInfoDto[]): Observable<any> {\n const laadSignaleringsbeelden = this.editor.laadSignaleringsbeelden(iaVersie, dtos);\n return from(laadSignaleringsbeelden);\n }\n\n laadRouteFiles(iaVersie: string, pplgs: string[]): any {\n return this.editor.laadRouteFiles(iaVersie, pplgs);\n }\n\n getRijwegplan(pplg: string): domein.Rijwegplan {\n return this.editor.getRijwegplan(pplg);\n }\n\n getVrijebaanRijwegplan(pplg: string, vanSpoor: string): domein.VrijebaanRijwegplan {\n return this.editor.getVrijebaanRijwegplan(pplg, vanSpoor);\n }\n\n getRijwegplannen(): domein.Rijwegplan[] {\n return this.editor.getRijwegplannen();\n }\n\n private initReadyPromise(): void {\n const that = this;\n this.promise = this.promise === undefined ? new Promise(function(resolve, _reject) {\n that.resolveReadyPromise = resolve;\n }) : this.promise;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging } from '../optimo';\nimport { ArrayMultimap } from '../util/multi-map';\nimport { EditorService } from './editor.service';\n\n@Injectable()\nexport class BewegingUtils {\n static readonly GEWIJZIGD = 'Gewijzigd';\n static readonly TOEGEVOEGD = 'Toegevoegd';\n static readonly NORMAAL = 'Normaal';\n private static readonly SEIN_TYPE_FICTIEF = 'FICTIEF';\n private static readonly SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\n\n constructor(private readonly editorService: EditorService) {\n }\n\n public extractBewegingenUitRitdelen(ritDelen: Ritdeel[], origineleBewegingen: Beweging[]): Beweging[] {\n const retval: Beweging[] = [];\n retval.length = ritDelen.length;\n\n const origineleBewegingMap = this.bepaalOrigineleBewegingMap(origineleBewegingen);\n\n let vorigeBeweging: Beweging = null;\n for (let i = 0; i < ritDelen.length; i++) {\n const ritdeel = ritDelen[i];\n if (ritdeel.beweging) {\n retval[i] = ritdeel.beweging;\n const nieuwDwangNummer = BewegingUtils.toRouteFileDwangNummer(ritdeel.getDwangNummer());\n if (BewegingUtils.isGewijzigd(ritdeel, nieuwDwangNummer, origineleBewegingMap)) {\n retval[i].wijzigStatus = BewegingUtils.GEWIJZIGD;\n retval[i].dwangNummer = nieuwDwangNummer;\n ritdeel.beweging.ritActies = ritdeel.acties;\n BewegingUtils.removeKerenExtensie(retval[i]);\n BewegingUtils.removeKerenExtensie(vorigeBeweging);\n } else if (i === ritDelen.length - 1 && BewegingUtils.bewegingenZijnGewijzigd(ritDelen, origineleBewegingen)) {\n BewegingUtils.removeKerenExtensie(retval[i]);\n } else if (retval[i].wijzigStatus === BewegingUtils.TOEGEVOEGD) {\n BewegingUtils.removeKerenExtensie(vorigeBeweging);\n }\n } else {\n retval[i] = this.maakBeweging(ritdeel);\n }\n retval[i].volgnummerBinnenRit = i + 1;\n vorigeBeweging = ritdeel.beweging;\n }\n return retval;\n }\n\n private static bewegingenZijnGewijzigd(ritDelen: Ritdeel[], origineleBewegingen: Beweging[]): boolean {\n const ritDelenArray = ritDelen\n .filter(r => r.beweging)\n .map(r => r.beweging.id)\n .sort((a, b) => a - b);\n\n const bewegingenIdArray = origineleBewegingen.map(b => b.id).sort((a, b) => a - b);\n return JSON.stringify(ritDelenArray) !== JSON.stringify(bewegingenIdArray);\n }\n\n private static removeKerenExtensie(beweging: Beweging): void {\n if (beweging && this.containsExtensie('_k', beweging.naarSpoor)) {\n beweging.naarSpoor = beweging.naarSpoor.split('_k')[0];\n beweging.wijzigStatus = this.GEWIJZIGD;\n }\n }\n\n static containsExtensie(match: string, stringToCheck: string): boolean {\n return stringToCheck.indexOf(match) !== -1;\n }\n\n private static isGewijzigd(ritdeel: Ritdeel, nieuwDwangNummer, origineleBewegingenMap: ArrayMultimap<number, number>): boolean {\n const dwangGewijzigd = ritdeel.beweging.dwangNummer !== nieuwDwangNummer;\n let gewijzigd = false;\n if (ritdeel.beweging.wijzigStatus === this.NORMAAL) {\n const origineleBewegingActies = origineleBewegingenMap.get(ritdeel.beweging.id);\n const huidigeActies = this.createSortedActieIdList(ritdeel.acties);\n gewijzigd = JSON.stringify(huidigeActies) !== JSON.stringify(origineleBewegingActies);\n }\n return dwangGewijzigd || gewijzigd;\n }\n\n private bepaalOrigineleBewegingMap(origineleBewegingen: Beweging[]): ArrayMultimap<number, number> {\n const bewegingMap = new ArrayMultimap<number, number>();\n origineleBewegingen.forEach(b => {\n const actieIds = BewegingUtils.createSortedActieIdList(b.ritActies);\n bewegingMap.putAll(b.id, actieIds);\n });\n return bewegingMap;\n }\n\n private static createSortedActieIdList(acties: Actie[]): number[] {\n return acties.map(actie => actie.id).sort((a, b) => a - b);\n }\n\n public maakBeweging(newRitdeel: Ritdeel): Beweging {\n const eindSein = newRitdeel.getRoute().getEindSein();\n\n let naarSeinNaam;\n let naarSeinPplg;\n let naarSpoor = newRitdeel.getNaarPrlSpoor();\n if (eindSein.getTypeAlsString() === BewegingUtils.SEIN_TYPE_FICTIEF) {\n if (newRitdeel.heeftVrijebaanInfo()) {\n const vbEindSein = newRitdeel.getVrijebaanRijweg().getEindSein();\n naarSeinNaam = vbEindSein.getName();\n naarSeinPplg = vbEindSein.getPPLG();\n naarSpoor += BewegingUtils.SPOOR_NAAR_VRIJEBAAN_POSTFIX;\n } else {\n const rijwegplan = this.editorService.getRijwegplan(newRitdeel.getPplg());\n const rijwegAndereRichting = rijwegplan.getRijweg(newRitdeel.getVisueelNaarPrlSpoor(), newRitdeel.getVanPrlSpoor());\n const startSeinInAndereRichting = rijwegAndereRichting.getBeginSein();\n naarSeinNaam = startSeinInAndereRichting.getName();\n naarSeinPplg = startSeinInAndereRichting.getPPLG();\n }\n } else {\n naarSeinNaam = eindSein.getName();\n naarSeinPplg = eindSein.getPPLG();\n }\n return BewegingUtils.vulBeweging(newRitdeel, naarSeinNaam, naarSeinPplg, naarSpoor);\n }\n\n private static vulBeweging(newRitdeel: Ritdeel, naarSeinNaam: string, naarSeinPplg: string, naarSpoor: string): Beweging {\n return {\n id: 0,\n ritId: 0,\n volgnummerBinnenRit: -1,\n vanSeinType: 'BED_SEIN',\n vanSeinNaam: newRitdeel.getRoute().getBeginSein().getName(),\n vanSeinPplg: newRitdeel.getRoute().getBeginSein().getPPLG(),\n naarSeinType: 'BED_SEIN',\n naarSeinNaam,\n naarSeinPplg,\n dwangNummer: BewegingUtils.toRouteFileDwangNummer(newRitdeel.getDwangNummer()),\n vanPplg: newRitdeel.getPplg(),\n vanSpoor: newRitdeel.getVanPrlSpoor(),\n naarPplg: newRitdeel.getPplg(),\n naarSpoor,\n ritActies: [],\n wijzigStatus: this.TOEGEVOEGD\n };\n }\n\n private static toRouteFileDwangNummer(dwangNummer: number): number {\n return (dwangNummer === 0) ? -1 : dwangNummer;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectieInfo } from '@loxia/imx-viewer';\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging, Rit } from '../optimo';\nimport { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';\nimport { KeurAlleActiesGoed, SetAlgemeneRitInfo, ShowProgress } from '../state/actions/actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { BewegingUtils } from './beweging-utils.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewerControlService {\n private readonly subscriptions = new Subscription();\n\n private readonly valideRit$ = new BehaviorSubject(false);\n private readonly printing$ = new BehaviorSubject(false);\n\n private sideNavOpen = false;\n sideNavOpen$ = new BehaviorSubject(this.sideNavOpen);\n\n selectieInfos: SelectieInfo[];\n ritdelen: Ritdeel[];\n origineelTreinPad: Rit;\n\n constructor(private readonly store: Store<MstEditorState>,\n private readonly bewegingUtils: BewegingUtils) {\n this.subscriptions.add(combineLatest([\n store.select('ritSelectieIds'),\n store.select('actieOpRitSelectieIds'),\n store.select('ongeplandeActieSelectieIds'),\n store.select('gebrokenRitSelectieIds'),\n store.select('alternatievenSelectieIds'),\n store.select('beginSeinSelectieIds'),\n store.select('eindSeinSelectieIds')]\n ).subscribe(([rit, actieOpRitSelectieIds, ongeplandeActieSelectieIds, gebrokenrit, alternatieven, begin, eind]) => {\n const selectie = [];\n selectie.push(new SelectieInfo(rit, 'rit'));\n selectie.push(new SelectieInfo(actieOpRitSelectieIds, 'actieoprit'));\n selectie.push(new SelectieInfo(ongeplandeActieSelectieIds, 'ongeplandeActie'));\n selectie.push(new SelectieInfo(gebrokenrit, 'gebrokenrit'));\n selectie.push(new SelectieInfo(alternatieven, 'alternatieveRoute'));\n selectie.push(new SelectieInfo(begin, 'zigzagVan'));\n selectie.push(new SelectieInfo(eind, 'zigzagNaar'));\n this.selectieInfos = selectie;\n }\n ));\n\n this.subscriptions.add(store.select('ritDelen').subscribe(ritdelen => this.ritdelen = ritdelen));\n }\n\n toggleSideNavVisible(): void {\n this.sideNavOpen = !this.sideNavOpen;\n this.sideNavOpen$.next(this.sideNavOpen);\n }\n\n keurAlleActiesGoed(ongeplandeActies: Actie[]): void {\n if (this.ritdelen) {\n this.store.dispatch(ShowProgress());\n const bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(this.ritdelen, this.origineelTreinPad.bewegingen);\n const alleActies = this.verzamelAlleActies(this.ritdelen, ongeplandeActies);\n this.store.dispatch(KeurAlleActiesGoed(this.getBewegingenZonderActies(bewegingen), alleActies));\n }\n }\n\n setValideRit(valideRit: boolean): void {\n this.valideRit$.next(valideRit);\n }\n\n setPrinting(printing: boolean): void {\n this.printing$.next(printing);\n }\n\n private getBewegingenZonderActies(bewegingen: Beweging[]): Beweging[] {\n return bewegingen.map(beweging => {\n beweging.ritActies = [];\n return beweging;\n });\n }\n\n private verzamelAlleActies(ritDelen: Ritdeel[], ongeplandeActies: Actie[]): Actie[] {\n const retval = [];\n retval.push(...ongeplandeActies);\n retval.push(...ritDelen.filter(ritdeel => ritdeel.acties.length > 0).flatMap(ritdeel => ritdeel.acties));\n return retval;\n }\n\n setOrigineelTreinPad(treinpad: Rit): void {\n const rit = JSON.parse(JSON.stringify(treinpad));\n\n this.store.dispatch(SetAlgemeneRitInfo(\n new AlgemeneRitInfoDto({\n id: rit.id,\n jaarplanId: rit.jaarplanId,\n volgnummer: rit.volgnummer,\n machineTypeId: rit.machineTypeId,\n machineTypeOmschrijving: rit.machineTypeOmschrijving,\n ritDatum: rit.ritDatum,\n startDatum: rit.startDatum,\n eindDatum: rit.eindDatum,\n ritNaam: rit.ritNaam,\n startLocatie: rit.startLocatie,\n eindLocatie: rit.eindLocatie,\n ritStatus: rit.ritStatus,\n modified: rit.modified,\n modifiedBy: rit.modifiedBy,\n planJobId: rit.planJobId\n })\n ));\n this.origineelTreinPad = rit;\n }\n\n isValideRit$(): Observable<boolean> {\n return this.valideRit$;\n }\n\n isPrinting$(): Observable<boolean> {\n return this.printing$;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { SetDebug } from '../state/actions/actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DebugService {\n private readonly listener = this.debugEventListener();\n\n constructor(private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n setDebugFlag(debug: boolean): void {\n this.store.dispatch(SetDebug(debug));\n\n if (debug) {\n document.getElementById('svgContainer').addEventListener('mouseover', this.listener);\n } else {\n document.getElementById('svgContainer').removeEventListener('mouseover', this.listener);\n }\n }\n\n private debugEventListener(): (e: any) => void {\n return (event): void => {\n let elem = event.target;\n let id: string;\n let found = false;\n do {\n id = elem.id;\n if (id.startsWith('p')) {\n const tp = this.sbmService.getTopologyElementByPuic(id.substring(1));\n if (tp) {\n this.printKmInfo(tp);\n found = true;\n }\n }\n elem = elem.parentElement;\n } while (!found && elem);\n };\n }\n\n private printKmInfo(tp: sbblad.TopologyElement): void {\n const kms: sbblad.Kilometrering[] = JsJavaUtil.listToArray(tp.getKilometreringen());\n if (kms.length > 0) {\n let logline = 'Kminfo: ' + tp.getComponentName() + ', ';\n for (const km of kms) {\n logline += km.getKmLint() + ' ' + km.getKmWaarde() + ' ';\n }\n console.log(logline);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { Ritdeel } from '../model/ritdeel';\nimport { InfraModel } from '../optimo';\nimport * as MstActions from '../state/actions/actions';\nimport { ClearProgress, ShowProgress } from '../state/actions/actions';\nimport { navigeerVanaf, setZichtbaarheidAlleRitdelen, toggleZichtbaarheidVoorBewegingen } from '../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { SignaleringsBeeldManagerService } from './signalerings-beeld-manager.service';\nimport { ViewerControlService } from './viewer-control.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrintBewegingService {\n private ritdelen: Ritdeel[];\n\n constructor(private store: Store<MstEditorState>,\n private viewerControlService: ViewerControlService,\n private sbmService: SignaleringsBeeldManagerService) {\n this.store.select(s => s.ritDelen).subscribe(ritdelen => this.ritdelen = ritdelen);\n }\n\n printBeweging(bewegingId: number, paginationSize: number, iaVersieInfo: InfraModel): Promise<boolean> {\n const gevondenRitdeel: Ritdeel[] = this.ritdelen.filter(r => parseInt(r.getBewegingId(), 10) === bewegingId);\n\n // hide/show de knoppen\n const printing = !!bewegingId && gevondenRitdeel.length === 1;\n this.viewerControlService.setPrinting(printing);\n\n if (!printing) {\n return Promise.reject(new Error('Geen beweging gevonden voor ' + bewegingId));\n }\n\n return new Promise<boolean>((resolve) => {\n const ritdeel = gevondenRitdeel[0];\n if (ritdeel.isNietBeschikbaar()) {\n this.store.dispatch(navigeerVanaf(paginationSize, iaVersieInfo, ritdeel));\n this.store.dispatch(ShowProgress());\n setTimeout(() => this.focusOpBeweging(ritdeel, resolve), 1000);\n } else {\n this.focusOpBeweging(ritdeel, resolve);\n }\n });\n }\n\n private focusOpBeweging(ritdeel: Ritdeel, resolve: Function): void {\n // deselecteer alles\n this.store.dispatch(setZichtbaarheidAlleRitdelen(false));\n // enable ritacties (checkbox) voor alle ritdelen met beweging die matched met bewegingId(s)\n this.store.dispatch(toggleZichtbaarheidVoorBewegingen([parseInt(ritdeel.getBewegingId(), 10)]));\n setTimeout(() => {\n\n // dit neemt niet de vrijebaan elementen mee\n const topoElementen = this.sbmService.bepaalRouteElementen(ritdeel.getRoute());\n const dwangPuics = this.getPuics(topoElementen);\n this.store.dispatch(MstActions.focusOpIds(dwangPuics));\n\n setTimeout(() => {\n // resolve de promise, om aan te geven dat focus klaar is\n resolve(true);\n this.viewerControlService.setPrinting(false);\n this.store.dispatch(ClearProgress());\n }, 1000);\n });\n }\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n\n}\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rpe-component',\n templateUrl: './rpe.component.html'\n})\nexport class RpeComponent implements AfterViewInit {\n @Input() baseurl: string;\n @Input() path: string;\n\n @ViewChild('rpescript') script: ElementRef;\n\n convertToScript(): void {\n const element = this.script.nativeElement;\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (this.baseurl && this.path) {\n script.src = this.baseurl + this.path;\n // eslint-disable-next-line no-console\n console.log('Code geladen van: ' + script.src); //useful for debugging in GWT environment\n }\n const parent = element.parentElement;\n parent.parentElement.replaceChild(script, parent);\n }\n\n ngAfterViewInit(): void {\n this.convertToScript();\n }\n}\n","<div #rpescript style.display=\"none\">\n <ng-content></ng-content>\n</div>\n","import { Actie } from '../optimo';\n\nexport class OngeplandeActie {\n constructor(public actie: Actie,\n public puics: string[]) {\n }\n\n}\n","import { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport Kilometrering = sbblad.Kilometrering;\nimport TopologyElement = sbblad.TopologyElement;\n\nexport class KmRange {\n private constructor(public topologyElement: TopologyElement,\n public vanKilometreringen: Kilometrering[],\n public totKilometreringen: Kilometrering[]) {\n }\n\n public static rangeVoorPuntObject(topologyElement: TopologyElement): KmRange {\n return new KmRange(topologyElement,\n JsJavaUtil.listToArray(topologyElement.getKilometreringen()),\n JsJavaUtil.listToArray(topologyElement.getKilometreringen()));\n }\n\n public static rangeVoorStrekObject(topologyElement: TopologyElement,\n vanKilometreringen: Kilometrering[],\n totKilometreringen: Kilometrering[]): KmRange {\n return new KmRange(topologyElement, vanKilometreringen, totKilometreringen);\n }\n\n public static getKilometrering(lintNaam: string, kilometreringen: Kilometrering[]): Kilometrering {\n const result: Kilometrering[] = kilometreringen.filter(kilometrering => kilometrering.getKmLint() === lintNaam);\n if (result.length >= 1) {\n return result[0];\n }\n return null;\n }\n\n heeftOverlap(kilometrering1: Kilometrering, kilometrering2: Kilometrering): boolean {\n const vanKilometrering = KmRange.getKilometrering(kilometrering1.getKmLint(), this.vanKilometreringen);\n const totKilometrering = KmRange.getKilometrering(kilometrering2.getKmLint(), this.totKilometreringen);\n if (!vanKilometrering || !totKilometrering) {\n return false;\n }\n\n let startKmWaarde = vanKilometrering.getKmWaarde();\n let endKmWaarde = totKilometrering.getKmWaarde();\n if (startKmWaarde > endKmWaarde) {\n const temp = { end: endKmWaarde, start: startKmWaarde };\n startKmWaarde = temp.end;\n endKmWaarde = temp.start;\n }\n\n const actieStartKmWaarde = kilometrering1.getKmWaarde();\n const actieEndKmWaarde = kilometrering2.getKmWaarde();\n return endKmWaarde >= actieStartKmWaarde && actieEndKmWaarde >= startKmWaarde;\n }\n}\n","export class WisselKantCode {\n constructor(public naam: string, public kantCode: string) {\n }\n}\n","export class MeldingEvent {\n constructor(public meldingMessage: string, public meldingLevel: string) {\n }\n}\n","import { MeldingEvent } from '../model/melding-event';\n\nexport const MELDING_LEVEL_ERROR = 'error';\nexport const MELDING_LEVEL_WARNING = 'warn';\nexport const MELDING_LEVEL_INFO = 'info';\n\nexport class MeldingBuilder {\n\n public static nietGevondenTakkenOngeplandeActies(nietGevondenTakken: string[]): MeldingEvent {\n return new MeldingEvent('Niet gevonden takken uit \\'OngeplandeActies\\': ' + nietGevondenTakken, MELDING_LEVEL_INFO);\n }\n\n public static actieHighlightError(actieZonderElementen: number[]): MeldingEvent {\n return new MeldingEvent('Highlight error. Geen elementen kunnen vinden voor actie(s) met id: ' + actieZonderElementen,\n MELDING_LEVEL_ERROR);\n }\n}\n","import { Message, Severity } from '../atomic-components/message/';\nimport { Beweging } from '../optimo';\nimport Utils from './utils';\n\nexport class MessageBuilder {\n public static rwpDataNietGevonden(err: string): Message {\n return new Message(Severity.ERROR, 'Error bij ophalen van rijwegplan data: ' + err);\n }\n\n public static rijwegNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`);\n }\n\n public static rijwegplanNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Rijwegplan van PPLG ${ beweging.vanPplg } niet gevonden`);\n }\n\n public static dwangNietGevonden(beweging: Beweging): Message {\n return new Message(Severity.ERROR, `Dwang ${ beweging.dwangNummer } voor rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`);\n }\n\n public static nietGevondenSBI(err: string): Message {\n return new Message(Severity.ERROR, 'Error bij het ophalen van signaleringsbeeldinfo: ' + Utils.getValidErorrMessage(err));\n }\n\n public static actieHighlightError(actieZonderElementen: number[]): Message {\n return new Message(Severity.ERROR, 'Highlight error. Geen elementen kunnen vinden voor actie(s) met id: ' + actieZonderElementen);\n }\n\n public static ritFileAlGewijzigdError(beweging: Beweging): Message {\n return new Message(Severity.ERROR, 'Rit bevat een beweging met status \\'Gewijzigd\\': Beweging met ID:' + beweging.id);\n }\n\n public static meerDan12BladenGevonden(bladAmount: number): Message {\n return new Message(Severity.WARNING, 'Warning, Rit bevat ' + bladAmount + ' bladen. Er worden maximaal 12 bladen ondersteund.');\n }\n\n public static nietGevondenTakkenOngeplandeActies(nietGevondenTakken: string[]): Message {\n return new Message(Severity.INFORMATION, 'Info, Niet gevonden takken uit \\'OngeplandeActies\\': ' + nietGevondenTakken);\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { take } from 'rxjs/operators';\nimport { MeldingEvent } from '../model/melding-event';\nimport { Actie } from '../optimo';\nimport { ActieDto, AlgemeneRitInfoDto, MstLoggingDto } from '../resources/mstlogging.resource';\nimport { SignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable()\nexport class LoggingHelper {\n\n constructor(private sbmService: SignaleringsBeeldManagerService,\n private store: Store<MstEditorState>) {\n }\n\n public maakLogDTO(melding: MeldingEvent, actie: Actie): MstLoggingDto {\n let iaVersie = '';\n let algemeneRitInfoDto: AlgemeneRitInfoDto = null;\n let actieDto: ActieDto = null;\n\n this.store.select('algemeneRitInfoDto').pipe(take(1)).subscribe(dto => {\n algemeneRitInfoDto = dto;\n });\n this.store.select('iaVersie').pipe(take(1)).subscribe(ia => {\n iaVersie = ia.versie;\n });\n\n if (actie) {\n actieDto = new ActieDto({\n pplgNaam: actie.pplgNaam,\n ritActieTypeOmschrijving: actie.ritActieTypeOmschrijving,\n ritActieStatus: actie.ritActieStatus,\n bewegingId: actie.bewegingId,\n wisselType: actie.wisselType,\n wisselNaam: actie.wisselNaam,\n wisselKantCode: actie.wisselKantCode,\n vanKilometerlint: actie.vanKilometerlint,\n vanKilometrering: actie.vanKilometrering,\n totKilometerlint: actie.totKilometerlint,\n totKilometrering: actie.totKilometrering\n });\n }\n return new MstLoggingDto({\n iaVersie,\n meldingLevel: melding.meldingLevel,\n meldingMessage: melding.meldingMessage,\n actieDto,\n algemeneRitInfoDto,\n sbinfoDtos: this.getSbInfoDtos()\n });\n }\n\n public getSbInfoDtos(): SignaleringsbeeldInfoDto[] {\n const sbInfoDtos: SignaleringsbeeldInfoDto[] = [];\n this.store.select('visibleSbInfoDtos').pipe(take(1)).subscribe(dtos => {\n dtos.forEach(d => {\n sbInfoDtos.push(d as SignaleringsbeeldInfoDto);\n });\n });\n return sbInfoDtos;\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { MessagesService } from '../atomic-components/services/messages.service';\nimport { KmRange } from '../model/km-range';\nimport { MeldingEvent } from '../model/melding-event';\nimport { Ritdeel } from '../model/ritdeel';\nimport { WisselKantCode } from '../model/wissel-kant-code';\nimport { Actie } from '../optimo';\nimport { MstLoggingDto, MstLoggingResource } from '../resources/mstlogging.resource';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { LoggingHelper } from './logging-helper';\nimport { MeldingBuilder } from './melding-builder';\nimport { MessageBuilder } from './message-builder';\nimport { ArrayMultimap } from './multi-map';\nimport Kilometrering = sbblad.Kilometrering;\nimport TopologyElement = sbblad.TopologyElement;\n\n/**\n * export const RIT_ACTIE_1 = 1;\n * export const RIT_ACTIE_SLIJPEN_VIADUCT_KLEIN = 2;\n * export const RIT_ACTIE_SLIJPEN_BOOG = 3;\n */\nexport const RIT_ACTIE_SLIJPEN_WISSEL_KLEIN = 4;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_GROOT = 5;\n/**\n * export const RIT_ACTIE_SLIJPEN_OVERWEG = 6;\n * export const RIT_ACTIE_SLIJPEN_BRUG_GROOT = 7;\n * export const RIT_ACTIE_SLIJPEN_BRUG_KLEIN = 8;\n * export const RIT_ACTIE_SLIJPEN_SPOORTAK = 9;\n */\nexport const RIT_ACTIE_VST = 10;\n/**\n * export const RIT_ACTIE_BVLBLD_T = 11;\n * export const RIT_ACTIE_SLIJPEN_VIADUCT_GROOT = 12;\n * export const RIT_ACTIE_PANTCONT_T = 13;\n * export const RIT_ACTIE_RIJDRLIG_T = 14;\n * export const RIT_ACTIE_SPSTLAPR_T = 15;\n * export const RIT_ACTIE_SPSTOPPDEF_T = 16;\n * export const RIT_ACTIE_SPSTOPPBLD_T = 17;\n * export const RIT_ACTIE_SPSTDEF_T = 18;\n * export const RIT_ACTIE_SPSTDWPR_T = 19;\n * export const RIT_ACTIE_BAANBLD_T = 20;\n * export const RIT_ACTIE_SPGEOM_T = 21;\n * export const RIT_ACTIE_22 = 22;\n * export const RIT_ACTIE_23 = 23;\n * export const RIT_ACTIE_RIJDRDIK_T = 24;\n * export const RIT_ACTIE_SLIJPEN_TUNNEL = 25;\n */\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_2_KOMMA_5 = 26;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_29 = 27;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_20 = 28;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18_KOMMA_5 = 29;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18 = 30;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_15 = 31;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_12 = 32;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_10 = 33;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_34_KOMMA_7 = 34;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_9 = 35;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7_KOMMA_5 = 36;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7 = 37;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_6 = 38;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_5 = 39;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4_KOMMA_5 = 40;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4 = 41;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_3_KOMMA_5 = 42;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_8 = 43;\nexport const RIT_ACTIE_SLIJPEN_WISSEL_1_OP_39_KOMMA_1 = 44;\n\nexport class MstKilometrering implements sbblad.Kilometrering {\n constructor(private readonly kmLint: string, private readonly kmWaarde: number) {\n }\n\n getKmLint(): string {\n return this.kmLint;\n }\n\n getKmWaarde(): number {\n return this.kmWaarde;\n }\n}\n\n@Injectable()\nexport class ActieHelper {\n static readonly HALF_ENGELS_WISSEL = 'HalveEngelseWissel';\n static readonly ENGELS_WISSEL = 'EngelseWissel';\n static readonly SLIJPEN_WISSEL_ACTIES = [\n RIT_ACTIE_SLIJPEN_WISSEL_KLEIN,\n RIT_ACTIE_SLIJPEN_WISSEL_GROOT,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_2_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_29,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_20,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_18,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_15,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_12,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_10,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_34_KOMMA_7,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_9,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_7,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_6,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_4,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_3_KOMMA_5,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_8,\n RIT_ACTIE_SLIJPEN_WISSEL_1_OP_39_KOMMA_1];\n\n private debug: boolean;\n\n constructor(private readonly sbmService: SignaleringsBeeldManagerService,\n private readonly mstLogResource: MstLoggingResource,\n private readonly messagesService: MessagesService,\n private readonly store: Store<MstEditorState>,\n private readonly loggingHelper: LoggingHelper) {\n this.store.select('debug').subscribe(debug => this.debug = debug);\n }\n\n public static getActieTopoElements(ritDeel: Ritdeel, sbmService: SignaleringsBeeldManagerService): TopologyElement[] {\n const actieTopoElements = ritDeel.getTopologieElementen().slice();\n const extraTopoElement = ActieHelper.getVoorSectieVanBeginSein(ritDeel, sbmService);\n if (extraTopoElement) {\n actieTopoElements.splice(0, 0, extraTopoElement);\n }\n return actieTopoElements;\n }\n\n static isVSTActie(actie): boolean {\n return actie.ritActieTypeId === RIT_ACTIE_VST;\n }\n\n static isWisselSlijpenActie(actie): boolean {\n return this.SLIJPEN_WISSEL_ACTIES.indexOf(actie.ritActieTypeId) >= 0;\n }\n\n static bepaalTakId(actie): string {\n return actie.pplgNaam + '-' + actie.wisselNaam + '-' + actie.wisselKantCode;\n }\n\n static isHeelOfHalfEngelsWisselActie(actie: Actie): boolean {\n return actie.infraObjectType === this.HALF_ENGELS_WISSEL || actie.infraObjectType === this.ENGELS_WISSEL;\n }\n\n static getVSTActieOmschrijving(actie: Actie): string {\n if (this.isEngelseWissel(actie)) {\n const wisselNamen = this.getWisselDelen(actie.wisselNaam);\n const kantCodes = this.getKantCodes(actie.wisselKantCode);\n return `VST ${ wisselNamen[0] } ${ kantCodes[0] } - ${ wisselNamen[1] } ${ kantCodes[1] }`;\n } else {\n return `VST ${ actie.wisselNaam } ${ ActieHelper.getKantcodeTekst(actie.wisselKantCode) }`;\n }\n }\n\n public static actieComparator(actie1: Actie, actie2: Actie): number {\n if (actie1.vanKilometrering !== actie2.vanKilometrering) {\n return actie1.vanKilometrering > actie2.vanKilometrering ? 1 : -1;\n }\n if (actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {\n return actie1.ritActieTypeOmschrijving > actie2.ritActieTypeOmschrijving ? 1 : -1;\n }\n if (actie1.wisselNaam !== actie2.wisselNaam) {\n return actie1.wisselNaam > actie2.wisselNaam ? 1 : -1;\n }\n if (actie1.wisselKantCode !== actie2.wisselKantCode) {\n return actie1.wisselKantCode > actie2.wisselKantCode ? 1 : -1;\n }\n return 0;\n }\n\n static getWisselKantCodes(actie: Actie): WisselKantCode[] {\n const wisselKantCodes: WisselKantCode[] = [];\n\n const namen = this.getWisselDelen(actie.wisselNaam);\n const kantCodes = this.getKantCodes(actie.wisselKantCode);\n for (let i = 0; i < namen.length; i++) {\n wisselKantCodes.push(new WisselKantCode(namen[i], kantCodes[i]));\n }\n\n return wisselKantCodes;\n }\n\n static getWisselDelen(wisselNaam: string): string[] {\n return wisselNaam.split('|');\n }\n\n static getKantCodes(kantCodes: string): string[] {\n if (kantCodes.length === 2) {\n return [kantCodes.charAt(0), kantCodes.charAt(1)];\n }\n return [kantCodes];\n }\n\n private static getVoorSectieVanBeginSein(ritDeel: Ritdeel, sbmService: SignaleringsBeeldManagerService): TopologyElement {\n // RPE toont een rijweg vanaf de sectiescheiding behorend bij het beginsein. MST levert bewegingen waarbij acties gedaan moeten\n // worden tussen het beginsein en de genoemde sectiescheiding. Om deze te kunnen tonen voegen we de voorsectie van het beginsein\n // toe aan de lijst met route elementen.\n const beginRouteSein = ritDeel.getRoute().getBeginSein();\n const sbSein = sbmService.getSBSein(beginRouteSein);\n return sbSein ? sbSein.getVoorSectie() : null;\n }\n\n// make sure the elems are sorted in ascending order\n private static sorteerTopoElementen(topoElems: sbblad.TopologyElement[]): sbblad.TopologyElement[] {\n const topoElementen = topoElems.slice();\n let lint = null;\n let first = null;\n let second = null;\n\n for (const topoElement of topoElementen) {\n let kilometreringen = null;\n\n const kms = JsJavaUtil.listToArray(topoElement.getKilometreringen());\n if (kms !== null && kms.length > 0) {\n kilometreringen = kms;\n }\n\n if (kilometreringen && !first) {\n first = kilometreringen[0].getKmWaarde();\n lint = kilometreringen[0].getKmLint();\n } else if (kilometreringen && first && !second) {\n const km = KmRange.getKilometrering(lint, kilometreringen);\n if (km) {\n second = km.getKmWaarde();\n }\n }\n if (first && second && first > second) {\n topoElementen.reverse();\n break;\n }\n }\n return topoElementen;\n }\n\n private static corrigeerTopoElementenZonderKms(topoElementenZonderKms, vanKilometreringen: sbblad.Kilometrering[],\n totKilometreringen: sbblad.Kilometrering[], kmRanges: KmRange[]): void {\n topoElementenZonderKms.forEach(e => {\n if (!vanKilometreringen && totKilometreringen) {\n vanKilometreringen = [new MstKilometrering(totKilometreringen[0].getKmLint(), -100000)];\n }\n if (!totKilometreringen && vanKilometreringen) {\n totKilometreringen = [new MstKilometrering(vanKilometreringen[0].getKmLint(), 100000)];\n }\n\n if (vanKilometreringen[0] > totKilometreringen[0]) {\n kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, -1), this.addKm(totKilometreringen, 1)));\n } else {\n kmRanges.push(KmRange.rangeVoorStrekObject(e, this.addKm(vanKilometreringen, 1), this.addKm(totKilometreringen, -1)));\n }\n });\n }\n\n private static addKm(kms: Kilometrering[], aantal: number): Kilometrering[] {\n const retval = [];\n for (const km of kms) {\n retval.push(new MstKilometrering(km.getKmLint(), km.getKmWaarde() + aantal));\n }\n return retval;\n }\n\n private static kanActiesBepalen(ritdeel: Ritdeel): Actie[] {\n return ritdeel.isZichtbaar() && ritdeel.acties;\n }\n\n private static isKilometreringAanwezig(fragmenten: sbblad.TopologyElement[]): boolean {\n let aanwezig = false;\n for (const fragment of fragmenten) {\n const kms = JsJavaUtil.listToArray(fragment.getKilometreringen());\n if (kms !== null && kms.length > 0) {\n aanwezig = true;\n break;\n }\n }\n return aanwezig;\n }\n\n private static bepaalSpoortakFragmenten(spoortak: sbblad.Spoortak): sbblad.TopologyElement[] {\n return JsJavaUtil.listToArray(spoortak.getTakElementen());\n }\n\n private static bepaalSpoortakFragmentenPuics(fragmenten: sbblad.TopologyElement[]): string[] {\n const puics = [];\n fragmenten.forEach(deel => puics.push(deel.getPuic()));\n return puics;\n }\n\n private static isEngelseWissel(actie: Actie): boolean {\n return actie.wisselNaam.includes('|') && actie.wisselKantCode.length === 2;\n }\n\n private static getKantcodeTekst(kantcode: string): string {\n let tekst = 'Voor';\n if (this.isKantCodeLinks(kantcode)) {\n tekst = 'Links';\n } else if (this.isKantCodeRechts(kantcode)) {\n tekst = 'Rechts';\n }\n return tekst;\n }\n\n private static isKantCodeRechts(kantcode: string): boolean {\n return kantcode === 'R';\n }\n\n private static isKantCodeLinks(kantcode: string): boolean {\n return kantcode === 'L';\n }\n\n bepaalPuicsVoorActie(actie: Actie): string[] {\n let puics;\n if (ActieHelper.isVSTActie(actie)) {\n puics = this.bepaalPuicsVoorVSTActie(actie);\n } else if (ActieHelper.isWisselSlijpenActie(actie)) {\n puics = this.bepaalPuicVoorWisselSlijpenActie(actie);\n } else {\n puics = this.bepaalActiePuicsVoorSpoortak(actie);\n }\n return puics;\n }\n\n bepaalActiePuicsUitRitdeel(ritDeel): ArrayMultimap<Actie, string> {// voor highlights\n const map = new ArrayMultimap<Actie, string>();\n if (ActieHelper.kanActiesBepalen(ritDeel)) {\n ritDeel.acties.forEach(a => {\n map.putAll(a, this.bepaalPuicsVoorActie(a));\n });\n }\n return map;\n }\n\n bepaalActiesPuics(acties: Actie[], topoElem: TopologyElement[]): ArrayMultimap<Actie, string> {\n const topoElementen = ActieHelper.sorteerTopoElementen(topoElem);\n\n const kmRanges = this.verwerkTopoElementen(topoElementen);\n return this.verwerkActies(acties, kmRanges);\n }\n\n private verwerkActies(acties: Actie[], kmRanges: KmRange[]): ArrayMultimap<Actie, string> {\n const actieZonderElementen: number[] = [];\n const logMeldingDTOs: MstLoggingDto[] = [];\n\n const retval = new ArrayMultimap<Actie, string>();\n acties.forEach(actie => {\n if (ActieHelper.isWisselSlijpenActie(actie)) {\n const puicArray = this.bepaalPuicVoorWisselSlijpenActie(actie);\n retval.putAll(actie, puicArray);\n } else {\n const puics = [];\n kmRanges.forEach(kmRange => {\n let vanKilometrering = new MstKilometrering(actie.vanKilometerlint, actie.vanKilometrering);\n let totKilometrering = new MstKilometrering(actie.totKilometerlint, actie.totKilometrering);\n if (actie.vanKilometrering > actie.totKilometrering) {\n const temp = { van: vanKilometrering, tot: totKilometrering };\n vanKilometrering = temp.tot;\n totKilometrering = temp.van;\n }\n if (kmRange.heeftOverlap(vanKilometrering, totKilometrering)) {\n puics.push(kmRange.topologyElement.getPuic());\n }\n });\n if (puics.length === 0) {\n actieZonderElementen.push(actie.id);\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError(actieZonderElementen);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n }\n retval.putAll(actie, puics);\n }\n });\n this.logLegeMeldingDto(logMeldingDTOs);\n return retval;\n }\n\n private logLegeMeldingDto(logMeldingDTOs: MstLoggingDto[]): void {\n if (logMeldingDTOs.length > 0) {\n this.mstLogResource.logErrorMessages(logMeldingDTOs);\n }\n }\n\n private verwerkTopoElementen(topoElementen: sbblad.TopologyElement[]): KmRange[] {\n const kmRanges: KmRange[] = [];\n\n let topoElementenZonderKms = [];\n let laatstePuntKms: Kilometrering[] = null;\n topoElementen.forEach(elem => {\n const kms: Kilometrering[] = JsJavaUtil.listToArray(elem.getKilometreringen());\n if (kms.length > 0) {\n ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, kms, kmRanges);\n topoElementenZonderKms = [];\n kmRanges.push(KmRange.rangeVoorPuntObject(elem));\n laatstePuntKms = kms;\n } else {\n topoElementenZonderKms.push(elem);\n }\n });\n if (topoElementenZonderKms.length > 0 && laatstePuntKms) {\n ActieHelper.corrigeerTopoElementenZonderKms(topoElementenZonderKms, laatstePuntKms, null, kmRanges);\n }\n return kmRanges;\n }\n\n private bepaalActiePuicsVoorSpoortak(actie: Actie): string[] {\n const spoortak = this.sbmService.getSbSpoortak(ActieHelper.bepaalTakId(actie));\n\n let puics = [];\n if (!spoortak) {\n return puics;\n }\n const fragmenten = ActieHelper.bepaalSpoortakFragmenten(spoortak);\n if (ActieHelper.isKilometreringAanwezig(fragmenten)) {\n const map = this.bepaalActiesPuics([actie], fragmenten);\n for (const key of Array.from(map.keys())) {\n map.get(key).forEach(x => puics.push(x));\n }\n } else {\n puics = ActieHelper.bepaalSpoortakFragmentenPuics(fragmenten);\n }\n return puics;\n }\n\n private bepaalPuicsVoorVSTActie(actie: Actie): string[] {\n if (ActieHelper.isHeelOfHalfEngelsWisselActie(actie)) {\n const retval = [];\n const wisselDelen = ActieHelper.getWisselDelen(actie.wisselNaam);\n const puicsEersteWissel = this.bepaalWisselPuics(wisselDelen[0], actie.pplgNaam, actie.wisselKantCode[0]);\n const puicsTweedeWissel = this.bepaalWisselPuics(wisselDelen[1], actie.pplgNaam, actie.wisselKantCode[1]);\n\n const puic1 = this.sbmService.getEersteVerbindingPuicVoorSplitEngelseWissel(wisselDelen[0], actie.wisselKantCode[0]);\n if (puic1 !== '') {\n retval.push(puic1);\n }\n const puic2 = this.sbmService.getEersteVerbindingPuicVoorSplitEngelseWissel(wisselDelen[1], actie.wisselKantCode[1]);\n if (puic2 !== '') {\n retval.push(puic2);\n }\n retval.push(...puicsEersteWissel);\n retval.push(...puicsTweedeWissel);\n return retval;\n } else {\n return this.bepaalWisselPuics(actie.wisselNaam, actie.pplgNaam, actie.wisselKantCode);\n }\n }\n\n private bepaalWisselPuics(wisselNaam: string, pplgNaam: string, kantcode: string): string[] {\n const wissel = this.sbmService.getSBWissel(wisselNaam, pplgNaam);\n if (!wissel) {\n return [];\n }\n const kantElement = this.bepaalKantElement(kantcode, wissel);\n if (!kantElement) {\n return [];\n }\n const storingSymboolPuic = wissel.getStoringSymboolPuic();\n\n return [storingSymboolPuic, kantElement.getPuic()];\n }\n\n private bepaalKantElement(kantcode: string, wissel: sbblad.Wissel): sbblad.SpoortakFragment {\n if (ActieHelper.isKantCodeRechts(kantcode)) {\n return wissel.getRight();\n }\n if (ActieHelper.isKantCodeLinks(kantcode)) {\n return wissel.getLeft();\n }\n return null;\n }\n\n private bepaalPuicVoorWisselSlijpenActie(actie: Actie): string[] {\n const storingsSymboolPuic = this.sbmService.getSBWissel(actie.wisselNaam, actie.pplgNaam)?.getStoringSymboolPuic();\n if (!storingsSymboolPuic && this.debug) {\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError([actie.id]);\n this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));\n this.mstLogResource.logErrorMessages([this.loggingHelper.maakLogDTO(melding, actie)]);\n }\n return storingsSymboolPuic ? [storingsSymboolPuic] : [];\n }\n}\n\n\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output} from '@angular/core';\nimport {domein, JsJavaUtil} from '@loxia/rijwegen';\nimport {Store} from '@ngrx/store';\nimport {combineLatest, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {OngeplandeActie} from '../../model/ongeplande-actie';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {Actie} from '../../optimo';\nimport {SignaleringsBeeldManagerService} from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../../state/actions/actions';\nimport * as RitdelenActions from '../../state/actions/ritdelen.actions';\nimport {MstEditorState} from '../../state/mst-editor-state';\nimport {ActieHelper} from '../../util/actie-helper';\nimport {ArrayMultimap} from '../../util/multi-map';\n\n@Component({\n selector: 'ritdelen-lijst',\n templateUrl: './ritdelen-lijst.component.html',\n styleUrls: ['./ritdelen-lijst.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class RitdelenLijstComponent implements OnDestroy {\n @Input() nietGeplandeActies: Actie[];\n\n @Output() focusEmitter = new EventEmitter<Ritdeel>();\n @Output() keurAlleActiesGoed = new EventEmitter();\n\n ritdeelViewModels: RitdeelViewModel[];\n selectedRitdeel: Ritdeel;\n selectedRitdeelActies: Actie[] = [];\n selectedRitdeelOngeplandeActies: OngeplandeActie[] = [];\n disableActieKnoppenVanRitdeel: boolean;\n editable: boolean;\n\n private ongeplandeActiesMap: ArrayMultimap<string, OngeplandeActie>;\n private geplandeActies: ArrayMultimap<Actie, string>;\n private readonly NG_ACTIE_PREFIX = '* ';\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private readonly store: Store<MstEditorState>, private readonly sbmService: SignaleringsBeeldManagerService) {\n this.subscriptions.push(store.select('ritDelen').subscribe((ritdelen) => {\n this.ritdeelViewModels = ritdelen?.map(ritdeel => {\n return new RitdeelViewModel(\n ritdeel,\n this.selectedRitdeelClass(ritdeel),\n this.isRitdeelZichtbaar(ritdeel),\n this.getTitle(ritdeel),\n ritdeel.isNietBeschikbaar(),\n this.isRitdeelNieuw(ritdeel),\n ritdeel.getVanPrlSpoor(),\n ritdeel.getNaarPrlSpoorText(),\n ritdeel.getDwangNummer(),\n ritdeel.getPplgString(),\n this.getTreinNummer(ritdeel));\n })\n }));\n this.subscriptions.push(store.select('ongeplandeActies').subscribe(acties => this.ongeplandeActiesMap = acties));\n this.subscriptions.push(store.select('geplandeActies').subscribe(acties => this.geplandeActies = acties));\n this.subscriptions.push(store.select('editable').subscribe(editable => this.editable = editable));\n\n // listen to changes from svg-viewer-component, saving ritdeel in store isn't cool because of all the gwt in it. This is\n // just to make changes within the angular lifecycle.\n this.subscriptions.push(store.select('selectedRitdeelId').pipe(\n filter(id => !id)).subscribe(this.deselectRitdeel\n ));\n\n this.subscriptions.push(\n combineLatest([\n this.store.select('ritDelen'),\n this.store.select('ongeplandeActies')]\n ).subscribe(() => this.updateOngeplandeActiesList()));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n isRitdeelZichtbaar(ritdeel: Ritdeel): boolean {\n return ritdeel.isZichtbaar();\n }\n\n toggleRitdeelZichtbaarheid(ritdeel: Ritdeel): void {\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.toggleRitdeelZichtbaar(ritdeel));\n }\n\n toggleZichtbaarheidAlleRitdelen(checked: boolean): void {\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.setZichtbaarheidAlleRitdelen(checked));\n }\n\n isRitdeelNieuw(ritdeel: Ritdeel): string {\n return ritdeel.isNieuw() ? '+' : '';\n }\n\n getTitle(ritdeel: Ritdeel): string {\n return ritdeel.getBewegingId();\n }\n\n getTreinNummer(ritdeel: Ritdeel): string {\n return ritdeel.getTreinNummer();\n }\n\n deleteRitdeel(ritdeel: Ritdeel): void {\n ritdeel.acties.forEach(actie => {\n this.verhuisActieNaarOngepland(actie);\n });\n this.deselectRitdeel();\n this.store.dispatch(RitdelenActions.deleteRitdeel(ritdeel));\n }\n\n deleteActiesUitRit(): void {\n this.selectedRitdeel.acties.slice().forEach(actie => {\n this.deleteActieUitRit(actie);\n });\n }\n\n deleteActieUitRit(actie): void {\n const acties = this.selectedRitdeel.acties;\n const idx = acties.indexOf(actie);\n if (idx >= 0) {\n this.verhuisActieNaarOngepland(actie);\n this.store.dispatch(RitdelenActions.deleteRitdeelActie(this.selectedRitdeel, acties[idx]));\n }\n const index = this.nietGeplandeActies.indexOf(actie);\n if (index < 0) {\n this.nietGeplandeActies.push(actie);\n }\n }\n\n private verhuisActieNaarOngepland(actie): void {\n const puics = this.geplandeActies.get(actie);\n\n if (puics && puics.length > 0) {\n this.store.dispatch(MstActions.AddOngeplandeActie(new OngeplandeActie(actie, puics)));\n this.store.dispatch(MstActions.DeleteGeplandeActie(actie, puics));\n }\n }\n\n voegActiesToeAanRit(): void {\n const acties = this.selectedRitdeelOngeplandeActies;\n acties.slice().forEach(actie => {\n this.voegActieToeAanRit(actie);\n });\n }\n\n voegActieToeAanRit(ongeplandeActie: OngeplandeActie): void {\n const idx = this.selectedRitdeelOngeplandeActies.indexOf(ongeplandeActie);\n if (idx >= 0) {\n this.store.dispatch(RitdelenActions.addRitdeelActie(this.selectedRitdeel, this.selectedRitdeelOngeplandeActies[idx].actie));\n this.store.dispatch(MstActions.AddGeplandeActie(ongeplandeActie.actie, ongeplandeActie.puics));\n this.store.dispatch(MstActions.DeleteOngeplandeActie(ongeplandeActie));\n }\n }\n\n updateOngeplandeActiesList(): void {\n if (this.selectedRitdeel) {\n this.selectedRitdeelOngeplandeActies = [];\n const ritPuics: string[] = [];\n const ritdeelTopoElements = ActieHelper.getActieTopoElements(this.selectedRitdeel, this.sbmService);\n const wisselObjecten: domein.Wissel[] = JsJavaUtil.listToArray(this.selectedRitdeel.getRoute().getWisselObjectenInDeRoute());\n\n ritdeelTopoElements.forEach(elem => ritPuics.push(elem.getPuic()));\n const ongeplandeActiesArray = this.ongeplandeActiesMap.values();\n ongeplandeActiesArray.forEach(oa => {\n const acties = this.ritdeelViewModels.flatMap(rd => rd.ritdeel.acties);\n const alreadyAdded = acties.filter(a => a.id === oa.actie.id).length > 0;\n if (!alreadyAdded) {\n let oaMatch;\n if (ActieHelper.isVSTActie(oa.actie)) {\n oaMatch = this.matchedWisselMetKantCodeInVSTActie(oa, wisselObjecten) ? oa : undefined;\n } else if (oa.puics.filter(p => ritPuics.includes(p) || this.bevatWisselPuic(ritPuics, p)).length > 0) {\n oaMatch = oa;\n }\n\n const alreadyAddedAsOngepland = this.selectedRitdeelOngeplandeActies.filter(a => a.actie.id === oa.actie.id).length > 0;\n if (oaMatch && !alreadyAddedAsOngepland) {\n this.selectedRitdeelOngeplandeActies.push(oaMatch);\n }\n }\n });\n }\n }\n\n matchedWisselMetKantCodeInVSTActie(ongeplandeActie: OngeplandeActie, wissels: domein.Wissel[]): boolean {\n const pplg = ongeplandeActie.actie.pplgNaam;\n const wisselKantCodes = ActieHelper.getWisselKantCodes(ongeplandeActie.actie);\n\n let gevondenWissels = 0;\n let gevondenWisselKantCodes = 0;\n\n wisselKantCodes.forEach((wisselKantCode) => {\n const gevondenWissel = this.findWisselOpNaamEnPplg(wissels, wisselKantCode.naam, pplg);\n\n if (gevondenWissel) {\n gevondenWissels++;\n if (this.getKantCode(gevondenWissel.getStand()) === wisselKantCode.kantCode) {\n gevondenWisselKantCodes++;\n }\n }\n });\n\n return gevondenWissels > 0 && gevondenWissels === gevondenWisselKantCodes;\n }\n\n private findWisselOpNaamEnPplg(wissels: domein.Wissel[], wisselNaam: string, pplgNaam: string): domein.Wissel {\n return wissels.find(wo => wo.getName() === wisselNaam && wo.getPPLG() === pplgNaam);\n }\n\n private bevatWisselPuic(ritPuics: string[], p): boolean {\n return ritPuics.includes(this.sbmService.getWisselMetStoringskaderPuic(p)?.getPuic());\n }\n\n selectedRitdeelClass(ritdeel: Ritdeel): string {\n if (ritdeel.getZichtbaarheidBuitenPaginatie()) {\n if (ritdeel.equals(this.selectedRitdeel)) {\n return 'selected';\n }\n return 'visible-outside-window';\n }\n if (ritdeel.isNietBeschikbaar()) {\n return 'disabled';\n }\n if (ritdeel.equals(this.selectedRitdeel)) {\n return 'selected';\n }\n return '';\n }\n\n selectRitdeel(event: MouseEvent, ritdeel: Ritdeel): void {\n if (event?.ctrlKey) {\n this.focusEmitter.emit(ritdeel);\n } else {\n if (ritdeel?.equals(this.selectedRitdeel)) {\n this.deselectRitdeel();\n return;\n }\n\n this.selectedRitdeel = ritdeel;\n this.disableActieKnoppenVanRitdeel = !this.selectedRitdeel.isZichtbaar();\n\n if (ritdeel.acties) {\n this.selectedRitdeelActies = ritdeel.acties;\n this.updateOngeplandeActiesList();\n } else {\n this.selectedRitdeelActies = [];\n this.selectedRitdeelOngeplandeActies = [];\n }\n }\n }\n\n actieOmschrijvingTekst(actie: Actie): string {\n const prefix = this.bepaalPrefixVoorActieOmschrijving(actie);\n if (ActieHelper.isVSTActie(actie)) {\n return this.maakVstActieOmschrijving(actie, prefix);\n }\n return prefix + actie.ritActieTypeOmschrijving;\n }\n\n private maakVstActieOmschrijving(actie: Actie, prefix: string): string {\n return `${ prefix }${ ActieHelper.getVSTActieOmschrijving(actie) }`;\n }\n\n bepaalPrefixVoorActieOmschrijving(actie: Actie): string {\n const prefix = '';\n if (this.selectedRitdeel.acties.includes(actie)) {\n // Afwijkende naam bij niet gevisualiseerde actie in rit\n const puics = this.geplandeActies.get(actie);\n return puics.length > 0 ? prefix : this.NG_ACTIE_PREFIX;\n }\n return prefix;\n }\n\n actieVanKmTekst(actie: Actie): string {\n if (ActieHelper.isWisselSlijpenActie(actie)) {\n return actie.wisselNaam;\n }\n return actie.vanKilometerlint ? actie.vanKilometerlint + ' ' + actie.vanKilometrering : '-';\n }\n\n actieTotKmTekst(actie: Actie): string {\n return actie.totKilometerlint ? actie.totKilometerlint + ' ' + actie.totKilometrering : '-';\n }\n\n deselectRitdeel(): void {\n this.disableActieKnoppenVanRitdeel = false;\n this.selectedRitdeel = undefined;\n this.selectedRitdeelActies = [];\n this.selectedRitdeelOngeplandeActies = [];\n }\n\n getPplgString(ritdeel: Ritdeel): string {\n return ritdeel.getPplgString();\n }\n\n private getKantCode(stand: domein.Stand): string {\n if (stand === window['domein'].Stand.LINKS) {\n return 'L';\n }\n return 'R';\n }\n\n planAlleRitActies(): void {\n this.keurAlleActiesGoed.emit();\n this.deselectRitdeel();\n }\n}\n\nclass RitdeelViewModel {\n constructor(\n readonly ritdeel: Ritdeel,\n readonly selectedRitdeelClass: string,\n readonly isZichtbaar: boolean,\n readonly title: string,\n readonly isNietBeschikbaar: boolean,\n readonly isNieuw: string,\n readonly vanPrlSpoor: string,\n readonly naarPrlSpoor: string,\n readonly dwangNummer: number,\n readonly pplgString: string,\n readonly treinNummer: string\n ) {\n }\n}\n","<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","import {Component, EventEmitter, HostListener, OnDestroy, Output} from '@angular/core';\nimport {Store} from '@ngrx/store';\nimport {Subscription} from 'rxjs';\nimport {Ritdeel} from '../../model/ritdeel';\nimport {setRitdeelZichtbaar, setZichtbaarheidAlleRitdelen} from '../../state/actions/ritdelen.actions';\nimport {MstEditorState} from '../../state/mst-editor-state';\n\n@Component({\n selector: 'ritdelen-view',\n templateUrl: './ritdelen-view.component.html',\n styleUrls: ['./ritdelen-view.component.scss']\n})\nexport class RitdelenViewComponent implements OnDestroy {\n @Output() focusEmitter = new EventEmitter<Ritdeel>();\n\n @HostListener('window:keyup', ['$event'])\n keyEvent(event: KeyboardEvent): void {\n if (event.key === 'ArrowLeft' && this.selectedRitdeelIndex > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex - 1);\n } else if (event.key === 'ArrowRight' && this.selectedRitdeelIndex < this.ritdeelViewModels.length) {\n this.selectRitdeel(this.selectedRitdeelIndex + 1);\n }\n }\n\n ritdeelViewModels: RitdeelViewModel[] = [];\n selectedRitdeelIndex = -1;\n\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(private readonly store: Store<MstEditorState>) {\n this.subscriptions.push(store.select('ritDelen').subscribe(ritdelen => this.handleRitDelenUpdate(ritdelen)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n selectedRitdeelClass(ritdeel: Ritdeel): string {\n const ritdeelIndex = this.ritdeelViewModels.findIndex(r => r.ritdeel === ritdeel);\n if (this.selectedRitdeelIndex !== -1 && this.selectedRitdeelIndex === ritdeelIndex) {\n return 'selected';\n }\n if (ritdeel.getZichtbaarheidBuitenPaginatie()) {\n return 'visible-outside-window';\n }\n if (ritdeel.isNietBeschikbaar()) {\n return 'disabled';\n }\n return '';\n }\n\n selectRitdeel(index: number): void {\n if (this.selectedRitdeelIndex >= 0) {\n this.store.dispatch(setRitdeelZichtbaar(this.ritdeelViewModels[this.selectedRitdeelIndex].ritdeel, false));\n }\n this.selectedRitdeelIndex = index;\n const ritdeel = this.ritdeelViewModels[index].ritdeel;\n this.focusEmitter.emit(ritdeel);\n this.store.dispatch(setRitdeelZichtbaar(ritdeel, true));\n }\n\n private handleRitDelenUpdate(ritdelen: Ritdeel[]): void {\n this.ritdeelViewModels = ritdelen.map(ritdeel => new RitdeelViewModel(\n ritdeel,\n ritdeel.getVanPrlSpoor(),\n ritdeel.getNaarPrlSpoor(),\n ritdeel.getDwangNummer(),\n ritdeel.getVanSeinName(),\n ritdeel.getNaarSeinName(),\n ritdeel.getTreinNummer()\n ));\n\n setTimeout(() => {\n if (this.meerdereRitDelenZichtbaar()) {\n this.store.dispatch(setZichtbaarheidAlleRitdelen(false));\n if (this.ritdelenBeschikbaarMaarZonderSelectie()) {\n this.selectRitdeel(0);\n } else if (this.ritdeelViewModels.length > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex);\n }\n }\n });\n }\n\n private ritdelenBeschikbaarMaarZonderSelectie(): boolean {\n return this.ritdeelViewModels.length > 0 && this.selectedRitdeelIndex < 0;\n }\n\n private meerdereRitDelenZichtbaar(): boolean {\n let count = 0;\n for (const ritdeelViewModel of this.ritdeelViewModels) {\n if (ritdeelViewModel.ritdeel.isNietBeschikbaar()) {\n continue;\n }\n if (ritdeelViewModel.ritdeel.isZichtbaar()) {\n count++;\n if (count > 1) {\n return true;\n }\n }\n }\n return false;\n }\n}\n\nclass RitdeelViewModel {\n constructor(\n readonly ritdeel: Ritdeel,\n readonly vanPrlSpoor: string,\n readonly naarPrlSpoor: string,\n readonly dwangNummer: number,\n readonly vanSeinName: string,\n readonly naarSeinName: string,\n readonly treinNummer: string) {\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { filter, map } from 'rxjs/operators';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { InfraModel } from '../../optimo';\nimport { navigeer } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'carousel-controls',\n templateUrl: './carousel-controls.component.html',\n styleUrls: ['./carousel-controls.component.scss']\n})\nexport class CarouselControlsComponent {\n @Input() paginationSize = 4;\n @Input() iaversieinfo: InfraModel;\n @Input() sideNavOpen: boolean;\n\n ritdelen$ = this.store.select('ritDelen').pipe(filter(r => r?.length > 0));\n kanLinks$ = this.ritdelen$.pipe(map(r => this.kanLinksNavigeren(r)));\n kanRechts$ = this.ritdelen$.pipe(map(r => this.kanRechtsNavigeren(r)));\n\n constructor(private store: Store<MstEditorState>) {\n }\n\n private kanLinksNavigeren(ritDelen: Ritdeel[]): boolean {\n return ritDelen.length > this.paginationSize && !ritDelen[0].isBinnenWindow();\n }\n\n private kanRechtsNavigeren(ritDelen: Ritdeel[]): boolean {\n return ritDelen.length > this.paginationSize && !ritDelen[ritDelen.length - 1].isBinnenWindow();\n }\n\n navigeerNaarLinks(event: MouseEvent): void {\n this.store.dispatch(navigeer(event?.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize, this.iaversieinfo));\n }\n\n navigeerNaarRechts(event: MouseEvent): void {\n this.store.dispatch(navigeer(event?.ctrlKey ? 1 : this.paginationSize - 1, this.paginationSize, this.iaversieinfo));\n }\n}\n","<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","import { Component, EventEmitter, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { InfraModel, Rit } from '../../optimo';\nimport { BewegingUtils } from '../../services/beweging-utils.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'viewer-controls',\n templateUrl: './viewer-controls.component.html',\n styleUrls: ['./viewer-controls.component.scss']\n})\nexport class ViewerControlsComponent implements OnChanges {\n @Input() paginationSize = 4;\n @Input() iaversieinfo: InfraModel;\n @Input() treinpad: Rit;\n @Input() goedgekeurd: EventEmitter<Rit>;\n\n printing$ = this.viewerControlsService.isPrinting$();\n valideRit$ = this.viewerControlsService.isValideRit$();\n\n subscriptions = new Subscription();\n editable: boolean;\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private bewegingUtils: BewegingUtils) {\n this.subscriptions.add(this.store.select('editable').subscribe(editable => this.editable = editable));\n }\n\n ngOnChanges({ treinpad }: SimpleChanges): void {\n if (treinpad && this.treinpad) {\n this.viewerControlsService.setOrigineelTreinPad(this.treinpad);\n }\n }\n\n showGoedkeuren(): boolean {\n return this.editable && this.viewerControlsService.selectieInfos.length !== 0;\n }\n\n goedkeurenClick(): void {\n const ritDelen = this.viewerControlsService.ritdelen;\n if (ritDelen) {\n delete this.treinpad.aantalRitActies;\n this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);\n this.goedgekeurd.emit(this.treinpad);\n this.viewerControlsService.setOrigineelTreinPad(this.treinpad);\n }\n }\n\n}\n","<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","import { sbblad } from '@loxia/rijwegen';\nimport { Ritdeel } from './ritdeel';\n\nexport class AlternatiefRitDeel {\n\n constructor(public ritDeel: Ritdeel, public alternatieveRoute: sbblad.AlternativeRoute) {\n\n }\n\n}\n","import { domein } from '@loxia/rijwegen';\nimport { Ritdeel } from './ritdeel';\n\nexport class SeinOpRitdeel {\n constructor(public sein: domein.Sein, public ritdeel: Ritdeel) {\n }\n}\n","import { PopoverInfo } from '@loxia/imx-viewer';\nimport { OngeplandeActie } from '../model/ongeplande-actie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie } from '../optimo';\nimport { ActieHelper } from './actie-helper';\nimport { ArrayMultimap } from './multi-map';\n\ninterface TreinNummerActieInfo {\n treinNummer: number;\n actie: Actie;\n}\n\nexport class ActiePopoverBepaler {\n static bepaalPopoverInfos(ritDelen: Ritdeel[], ritActieTopoPuics: ArrayMultimap<Actie, string>,\n ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): PopoverInfo[] {\n const puicNaarActieMap = this.bepaalPuicNaarActieMap(ritDelen, ritActieTopoPuics);\n const puicNaarOngeplandeActieMap = this.bepaalPuicNaarOngeplandeActieMap(ongeplandeActies);\n\n const puics = puicNaarActieMap.keys();\n puics.push(...puicNaarOngeplandeActieMap.keys().filter(p => !puics.includes(p)));\n\n const infos = [];\n puics.forEach(puic => {\n let content = '';\n const treinNummerActieInfosGepland = puicNaarActieMap.get(puic).sort(this.sortTreinNummerActieInfo());\n const treinNummerActieInfosOngepland = puicNaarOngeplandeActieMap.get(puic).sort(this.sortTreinNummerActieInfo());\n const showTreinNummer = treinNummerActieInfosGepland.some(i => !!i.treinNummer)\n || treinNummerActieInfosOngepland.some(i => !!i.treinNummer);\n treinNummerActieInfosGepland.forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-gepland', showTreinNummer));\n treinNummerActieInfosOngepland.forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-ongepland', showTreinNummer));\n\n const info = this.createPopoverInfo(content, puic, showTreinNummer);\n infos.push(info);\n });\n return infos;\n }\n\n private static createPopoverInfo(content: string, puic: string, showTreinNummer: boolean): PopoverInfo {\n const info = new PopoverInfo([puic], content);\n info.popoverTitleContent = showTreinNummer ? '<span class=\"treinnummer\">Trein #</span><span>Acties</span>' : 'Acties';\n return info;\n }\n\n private static sortTreinNummerActieInfo(): (a: TreinNummerActieInfo, b: TreinNummerActieInfo) => number {\n return (a1, a2): number => ActieHelper.actieComparator(a1.actie, a2.actie);\n }\n\n private static bepaalPuicNaarOngeplandeActieMap(ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): ArrayMultimap<string, TreinNummerActieInfo> {\n const puicNaarOngeplandeActieMap = new ArrayMultimap<string, TreinNummerActieInfo>();\n if (ongeplandeActies.size() > 0) {\n ongeplandeActies.entries.forEach(entry => {\n const treinNummerActieInfos = puicNaarOngeplandeActieMap.get(entry.key);\n if (!treinNummerActieInfos?.map(({ actie }) => actie).includes(entry.value.actie)) {\n puicNaarOngeplandeActieMap.put(entry.key, { treinNummer: undefined, actie: entry.value.actie });\n }\n });\n }\n return puicNaarOngeplandeActieMap;\n }\n\n private static bepaalPuicNaarActieMap(ritDelen: Ritdeel[], ritActieTopoPuics: ArrayMultimap<Actie, string>): ArrayMultimap<string, TreinNummerActieInfo> {\n const puicNaarActieMap = new ArrayMultimap<string, TreinNummerActieInfo>();\n ritDelen.forEach(ritDeel => {\n if (ritDeel.isZichtbaar() && ritDeel.acties.length !== 0) {\n ritDeel.acties.forEach(ritActie => {\n const puics = ritActieTopoPuics.get(ritActie);\n puics.forEach(puic => {\n this.addToPuicNaarActieMapIfNotExists(puicNaarActieMap, puic, ritActie, ritDeel.beweging?.treinNummer);\n });\n });\n }\n });\n return puicNaarActieMap;\n }\n\n private static addToPuicNaarActieMapIfNotExists(puicNaarActieMap: ArrayMultimap<string, TreinNummerActieInfo>, puic: string, ritActie: Actie, treinNummer: number): void {\n const treinNummerActieInfos = puicNaarActieMap.get(puic);\n if (!(treinNummerActieInfos?.find(({ actie }) => actie === ritActie))) {\n const actieInfo: TreinNummerActieInfo = { treinNummer, actie: ritActie };\n puicNaarActieMap.put(puic, actieInfo);\n }\n }\n\n private static vulPopoverContent(content: string, { treinNummer, actie }: TreinNummerActieInfo, clazz: string, showTreinNummer: boolean): string {\n let retval = content;\n const treinnummerClass = showTreinNummer ? 'class=\"treinnummer\"' : 'class=\"no-treinnummer\"';\n\n retval += '<div class=\"nowrap ' + clazz + '\">';\n retval += `<span ${ treinnummerClass }>${ treinNummer || '-' }</span>`;\n\n let actieOmschrijving = '';\n if (ActieHelper.isVSTActie(actie)) {\n actieOmschrijving += ActieHelper.getVSTActieOmschrijving(actie);\n } else if (ActieHelper.isWisselSlijpenActie(actie)) {\n actieOmschrijving += `${ actie.ritActieTypeOmschrijving } ${ actie.wisselNaam }`;\n } else {\n actieOmschrijving += `${ actie.ritActieTypeOmschrijving } ${ actie.vanKilometerlint } ${ actie.vanKilometrering }`;\n actieOmschrijving += '-';\n if (actie.totKilometerlint !== actie.vanKilometerlint) {\n actieOmschrijving += actie.totKilometerlint;\n actieOmschrijving += ' ';\n }\n actieOmschrijving += actie.totKilometrering;\n }\n retval += `<span>${ actieOmschrijving }</span></div>`;\n return retval;\n }\n}\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ImxViewerComponent, PopoverInfo, SelectieEvent, SvgInfo } from '@loxia/imx-viewer';\nimport { domein, sbblad } from '@loxia/rijwegen';\nimport { Store } from '@ngrx/store';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { AlternatiefRitDeel } from '../../model/alternatief-rit-deel';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { SeinOpRitdeel } from '../../model/sein-op-ritdeel';\nimport { Actie } from '../../optimo';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport {\n AddOngeplandeActie,\n BepaalOngeplandeActies,\n BewegingInvoegen,\n ClearProgress, SetSelectedRitdeel,\n navigeerBuitenRit,\n ResetNieuweRoute,\n SetActieOpRitSelectieIds,\n SetAlternatievenClickableIds,\n SetAlternatievenSelectieIds,\n SetBeginSeinRightClickableIds,\n SetBeginSeinSelectieIds,\n SetEindSeinenClickableIds,\n SetEindSeinSelectieIds,\n SetGebrokenRitSelectieIds,\n SetGeplandeActies,\n SetNieuwRouteEindSein,\n SetRitSelectieIds\n} from '../../state/actions/actions';\nimport { ritdeelInvoegen, setAlternatieveRitDelen } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\nimport { ActieHelper } from '../../util/actie-helper';\nimport { ActiePopoverBepaler } from '../../util/actie-popover-bepaler';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport Utils from '../../util/utils';\n\n@Component({\n selector: 'svg-visualisatie',\n templateUrl: './svg-visualisatie.component.html',\n styleUrls: ['./svg-visualisatie.component.scss']\n})\nexport class SvgVisualisatieComponent implements OnInit, OnDestroy {\n\n @Input() nietGeplandeActies: Actie[];\n @Input() useClickArea: boolean;\n\n @ViewChild('imxviewercontainer') imxviewer: ImxViewerComponent;\n\n svgInfos$: Observable<SvgInfo[]> = this.store.select('svgInfos');\n popoverInfos: PopoverInfo[] = [];\n clickableIds: string[] = [];\n\n rightClickableIds: string[] = [];\n contextMenuActions: any = [];\n contextMenuStyle: any = { display: 'none' };\n editable: boolean;\n\n private puicNaarBeginSeinRitdeel = new Map<string, SeinOpRitdeel>();\n private puicNaarEindSeinCombinatie = new Map<string, RijwegplanRijwegDwangCombinatie>();\n private puicNaarAlternatieveRoute = new Map<string, AlternatiefRitDeel>();\n\n private ongeplandeActiesBepaald = false;\n private subscriptions: Subscription[] = [];\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private actieHelper: ActieHelper,\n private sbmService: SignaleringsBeeldManagerService,\n private editorService: EditorService) {\n this.onRitdelenUpdate();\n this.triggerClickableIdBepaling();\n this.triggerRightClickableIdBepaling();\n this.handleNieuweRouteToegevoegd();\n this.setupTriggerPopoverBepaling();\n\n this.subscriptions.push(this.store.select('editable').subscribe(editable => {\n this.editable = editable;\n }));\n this.subscriptions.push(this.store.select('ongeplandeActiesBepaald')\n .subscribe(ongeplandeActiesBepaald => this.ongeplandeActiesBepaald = ongeplandeActiesBepaald));\n this.subscriptions.push(this.store.select('focusIds')\n .subscribe(focusIds => {\n if (focusIds && this.imxviewer) {\n this.imxviewer.focusOnIds(focusIds);\n }\n }));\n }\n\n ngOnInit(): void {\n document.getElementById('contextMenu').addEventListener('mouseleave', () => this.hideContextMenu());\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n handleImxviewClick(evt: SelectieEvent): void {\n const puic = evt.id;\n const alternatieveRitDeel = this.puicNaarAlternatieveRoute.get(puic);\n const combinatie = this.puicNaarEindSeinCombinatie.get(puic);\n if (alternatieveRitDeel) {\n alternatieveRitDeel.ritDeel.acties.forEach(actie => {\n const puics = this.actieHelper.bepaalPuicsVoorActie(actie);\n if (puics.length > 0) {\n this.store.dispatch(AddOngeplandeActie(new OngeplandeActie(actie, puics)));\n }\n });\n this.store.dispatch(setAlternatieveRitDelen(alternatieveRitDeel));\n } else if (combinatie) {\n this.store.dispatch(SetNieuwRouteEindSein(combinatie));\n } else {\n const rand = this.sbmService.getTopologyElementByPuic(puic);\n if (rand) {\n this.store.dispatch(navigeerBuitenRit(puic));\n }\n }\n\n this.store.dispatch(SetSelectedRitdeel(undefined));\n }\n\n handleImxviewRightClick(evt: SelectieEvent): void {\n const fn = (): void => {\n const startSeinOpRitdeel = this.puicNaarBeginSeinRitdeel.get(evt.id);\n if (startSeinOpRitdeel) {\n this.bewegingInvoegen(startSeinOpRitdeel);\n }\n };\n this.contextMenuActions = [];\n this.contextMenuActions.push({ label: 'beweging invoegen', click: fn });\n this.contextMenuStyle = {\n left: (evt.event.offsetX - 5) + 'px',\n top: (evt.event.offsetY - 5) + 'px',\n display: 'inline',\n position: 'absolute'\n };\n }\n\n bewegingInvoegen(startSeinOpRitdeel: SeinOpRitdeel): void {\n this.hideContextMenu();\n this.store.dispatch(BewegingInvoegen(startSeinOpRitdeel, this.puicNaarEindSeinCombinatie));\n }\n\n hideContextMenu(): void {\n this.contextMenuStyle = {\n display: 'none',\n position: 'absolute'\n };\n }\n\n private handleNieuweRouteToegevoegd(): void {\n this.store.select('nieuweRoute')\n .subscribe((nieuweRoute) => {\n if (nieuweRoute.isValid()) {\n this.store.dispatch(ResetNieuweRoute());\n this.store.dispatch(ritdeelInvoegen(nieuweRoute));\n }\n }\n );\n }\n\n private onRitdelenUpdate(): void {\n this.subscriptions.push(this.store.select('ritDelen').subscribe(ritDelen => {\n if (ritDelen && ritDelen.length > 0) {\n this.bepaalRouteHighlights(ritDelen);\n if (this.editable) {\n this.bepaalContextMenuVoorBeginSeinen(ritDelen);\n }\n if (!this.ongeplandeActiesBepaald) {\n this.bepaalOngeplandeActies();\n }\n }\n }));\n }\n\n private triggerClickableIdBepaling(): void {\n this.subscriptions.push(combineLatest([\n this.store.select('alternatievenClickableIds'),\n this.store.select('eindSeinenClickableIds'),\n this.store.select('connectorClickableIds')]\n ).subscribe(([alternatievenClickableIds, eindSeinenClickableIds, connectorClickableIds]) =>\n this.clickableIds = [...alternatievenClickableIds, ...eindSeinenClickableIds, ...connectorClickableIds]));\n }\n\n private triggerRightClickableIdBepaling(): void {\n this.subscriptions.push(combineLatest([this.store.select('beginSeinRightClickableIds')]\n ).subscribe(([beginSeinRightClickableIds]) => {\n const ids = [];\n ids.push(...beginSeinRightClickableIds);\n this.rightClickableIds = ids;\n }\n ));\n }\n\n private setupTriggerPopoverBepaling(): void {\n this.subscriptions.push(combineLatest([\n this.store.select('ritDelen'),\n this.store.select('ongeplandeActies'),\n this.store.select('geplandeActies')]\n ).subscribe(([ritdelen, ongeplandeActies, geplandeActies]) => {\n if (ritdelen && ritdelen.length > 0 && geplandeActies && ongeplandeActies) {\n this.popoverInfos = ActiePopoverBepaler.bepaalPopoverInfos(ritdelen, geplandeActies, ongeplandeActies);\n }\n }\n ));\n }\n\n bepaalOngeplandeActies(): void {\n if (this.nietGeplandeActies) {\n this.store.dispatch(BepaalOngeplandeActies(this.nietGeplandeActies));\n }\n }\n\n private bepaalContextMenuVoorBeginSeinen(ritDelen: Ritdeel[]): void {\n if (!this.sbmService.isReady()) {\n return;\n }\n\n let ids = [];\n ritDelen.filter(ritDeel => ritDeel.isZichtbaar()).forEach(ritDeel => {\n const puics = ritDeel.getSeinen().flatMap(sein => this.verzamelBeginSeinInformatie(sein, ritDeel));\n ids = ids.concat(puics);\n });\n\n this.store.dispatch(SetBeginSeinRightClickableIds(ids));\n this.store.dispatch(SetBeginSeinSelectieIds([]));\n this.store.dispatch(SetEindSeinSelectieIds([]));\n this.store.dispatch(SetEindSeinenClickableIds([]));\n }\n\n private verzamelBeginSeinInformatie(sein: domein.Sein, ritDeel: Ritdeel): string[] {\n const puics: string[] = [];\n const sbSein = this.sbmService.getSBSein(sein);\n if (sbSein) {\n const puic = sbSein.getPuic();\n puics.push(puic);\n this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(sein, ritDeel));\n }\n const altSbSein = this.sbmService.getTechnischAlternatiefSBSein(sbSein);\n if (altSbSein) {\n const puic = altSbSein.getPuic();\n puics.push(puic);\n const rwp = this.editorService.getRijwegplan(altSbSein.getPPLG());\n const domeinSein = rwp.getBeginSein(altSbSein.getName());\n // sein kan niet altijd gevonden worden omdat er niet altijd een rijweg vanaf dit sein is, bijv bij veerwissel.\n if (domeinSein) {\n this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(domeinSein, ritDeel));\n }\n }\n return puics;\n }\n\n private bepaalRouteHighlights(ritDelen: Ritdeel[]): void {\n let ritSelectiePuics = [];\n const actieOpRitSelectiePuics = new ArrayMultimap<Actie, string>();\n let gebrokenRitSelectiePuics = [];\n const alternatieveRoutePuics = [];\n const clickableIds = [];\n let laatsteNaarSpoor: string;\n const bestaatUit1Ritdeel = ritDelen.length === 1;\n let gebrokenRit = false;\n ritDelen.forEach(ritDeel => {\n if (ritDeel.isZichtbaar()) {\n const map: ArrayMultimap<Actie, string> = this.actieHelper.bepaalActiePuicsUitRitdeel(ritDeel);\n map.keys().forEach(key => actieOpRitSelectiePuics.putAll(key, map.get(key)));\n\n const isGebrokenRitdeel = !bestaatUit1Ritdeel && this.isGebrokenRitdeel(ritDeel, laatsteNaarSpoor);\n const puics = [...this.getPuics(ritDeel.getTopologieElementen()),\n ...this.sbmService.getPuicsVoorSeinenInRoute(ritDeel.getRoute())];\n\n if (puics && isGebrokenRitdeel) {\n gebrokenRitSelectiePuics = gebrokenRitSelectiePuics.concat(puics);\n } else if (puics) {\n ritSelectiePuics = ritSelectiePuics.concat(puics);\n }\n\n this.bepaalAlternatieven(ritDeel, clickableIds, alternatieveRoutePuics);\n\n gebrokenRit = gebrokenRit || isGebrokenRitdeel;\n }\n laatsteNaarSpoor = ritDeel.getVisueelNaarPrlSpoor();\n });\n\n this.viewerControlsService.setValideRit(!gebrokenRit);\n\n this.store.dispatch(SetGeplandeActies(actieOpRitSelectiePuics));\n const actieOpRitSelectiePuicsArray = Utils.flatMap(Array.from(actieOpRitSelectiePuics.values()), x => x);\n this.store.dispatch(SetActieOpRitSelectieIds(actieOpRitSelectiePuicsArray));\n ritSelectiePuics = ritSelectiePuics.filter(item => actieOpRitSelectiePuicsArray.indexOf(item) < 0); // make mutually exclusive\n this.store.dispatch(SetRitSelectieIds(ritSelectiePuics));\n this.store.dispatch(SetGebrokenRitSelectieIds(gebrokenRitSelectiePuics));\n this.store.dispatch(SetAlternatievenClickableIds(this.editable ? clickableIds : []));\n this.store.dispatch(SetAlternatievenSelectieIds(this.editable ? alternatieveRoutePuics : []));\n this.store.dispatch(ClearProgress());\n }\n\n private bepaalAlternatieven(ritDeel: Ritdeel, clickableIds: string[], alternatieveRoutePuics: string[]): void {\n ritDeel.getAlternatieveRoutes()?.forEach(alternatieveRoute => {\n const alternatieveTopoElementen =\n this.sbmService.bepaalAlternativeRouteHighlights(alternatieveRoute, ritDeel.getTopologieElementen());\n\n const altPuics = this.getPuics(alternatieveTopoElementen);\n if (altPuics) {\n clickableIds.push(...altPuics);\n altPuics.forEach(puic => {\n this.puicNaarAlternatieveRoute.set(puic, new AlternatiefRitDeel(ritDeel, alternatieveRoute));\n alternatieveRoutePuics.push(puic);\n });\n }\n });\n }\n\n private isGebrokenRitdeel(ritDeel, laatsteNaarSpoor): boolean {\n const isGebrokenRitdeel = !(!laatsteNaarSpoor || ritDeel.getVanPrlSpoor() === laatsteNaarSpoor);\n if (isGebrokenRitdeel) {\n console.log('Rit van ' + ritDeel.getVanPrlSpoor() + ' naar ' + ritDeel.getNaarPrlSpoor()\n + ' in pplg ' + ritDeel.getPplg() + ' sluit niet aan op vorige beweging.');\n }\n return isGebrokenRitdeel;\n }\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n}\n","<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","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { version } from '../../../generated.version';\nimport { ProgressIndicator } from '../../atomic-components/progress-indicator/progress-indicator.entity';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { Actie, InfraModel, Rit } from '../../optimo';\nimport { DebugService } from '../../services/debug.service';\nimport { PrintBewegingService } from '../../services/print-beweging.service';\nimport { ViewerControlService } from '../../services/viewer-control.service';\nimport * as MstActions from '../../state/actions/actions';\nimport { SetBaseUrl, SetIaVersie, SetOngeplandeActiesBepaald } from '../../state/actions/actions';\nimport { setRitdelenAfterUpdate } from '../../state/actions/ritdelen.actions';\nimport { MstEditorState } from '../../state/mst-editor-state';\n\n@Component({\n selector: 'mst-viewer',\n templateUrl: './mstviewer.component.html',\n styleUrls: ['./mstviewer.component.scss']\n})\nexport class MstviewerComponent implements OnChanges, OnInit, OnDestroy {\n @Input() iaversieinfo: InfraModel;\n @Input() treinpad: Rit;\n @Input() ongeplandeActies: Actie[];\n @Input() paginationSize = 4;\n @Input() baseurl = 'https://acceptatie.raildesign.nl';\n @Input() debug: boolean;\n @Input() viewer: boolean;\n @Input() useClickArea: boolean;\n\n @Output() goedgekeurd: EventEmitter<Rit> = new EventEmitter();\n\n progressIndicator$: Observable<ProgressIndicator>;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private store: Store<MstEditorState>,\n public viewerControlsService: ViewerControlService,\n private debugService: DebugService,\n private printBewegingService: PrintBewegingService) {\n\n this.subscriptions.add(this.store.select('nieuweBewegingen').subscribe(nieuweRit => {\n if (this.treinpad) {\n this.treinpad.bewegingen = nieuweRit;\n store.dispatch(setRitdelenAfterUpdate([]));\n store.dispatch(SetOngeplandeActiesBepaald(false));\n this.bepaalSbInfos(true);\n }\n }));\n this.progressIndicator$ = this.store.pipe(select(s => s.progressState?.progressIndicator));\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line no-console\n console.log('MST viewer versie: ' + version);\n }\n\n ngOnChanges({ debug, baseurl, treinpad, ongeplandeActies, iaversieinfo }: SimpleChanges): void {\n if (debug) {\n this.debugService.setDebugFlag(debug.currentValue);\n }\n if (baseurl) {\n this.store.dispatch(SetBaseUrl(baseurl.currentValue));\n }\n if (treinpad || ongeplandeActies) {\n this.bepaalSbInfos();\n }\n if (iaversieinfo) {\n this.store.dispatch(SetIaVersie(iaversieinfo.currentValue));\n this.bepaalSbInfos();\n }\n if (ongeplandeActies) {\n this.store.dispatch(SetOngeplandeActiesBepaald(false));\n }\n }\n\n ngOnDestroy(): void {\n this.debugService.setDebugFlag(false);\n this.subscriptions.unsubscribe();\n }\n\n focusRitdeel(ritdeel: Ritdeel): void {\n this.store.dispatch(MstActions.focusOpRitdeel(ritdeel, this.paginationSize, this.iaversieinfo));\n }\n\n focusPuic(puics: string[]): void {\n this.store.dispatch(MstActions.focusOpIds(puics));\n }\n\n bepaalSbInfos(ritGewijzigdToegestaan = false): void {\n if (this.treinpad && this.ongeplandeActies && this.iaversieinfo?.versie) {\n this.store.dispatch(MstActions.bepaalSbInfos(this.treinpad, this.ongeplandeActies, this.iaversieinfo?.versie, ritGewijzigdToegestaan, this.paginationSize));\n }\n }\n\n printFocusBeweging(bewegingId: number): Promise<boolean> {\n return this.printBewegingService.printBeweging(bewegingId, this.paginationSize, this.iaversieinfo);\n }\n\n keurAlleActiesGoed(): void {\n this.viewerControlsService.keurAlleActiesGoed(this.ongeplandeActies);\n }\n}\n","<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()\">×</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","import { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n IResourceMethodObservable,\n Resource,\n ResourceAction,\n ResourceHandler,\n ResourceModel,\n ResourceParams,\n ResourceRequestMethod\n} from '@ngx-resource/core';\nimport { Subscription } from 'rxjs';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable()\n@ResourceParams({\n pathPrefix: '/mst/rest/signaleringsbeeldeninfo'\n})\n\nexport class SignaleringsbeeldInfoResource extends Resource implements OnDestroy{\n private subscriptions = new Subscription();\n\n constructor(restHandler: ResourceHandler, private store: Store<MstEditorState>) {\n super(restHandler);\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.$setUrl(baseUrl)));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n @ResourceAction({\n path: '/',\n method: ResourceRequestMethod.Post\n })\n laadSignaleringsbeeldInfo: IResourceMethodObservable<{\n pplgs: string[];\n versie: string;\n ingangsDatum: string;\n }, ISignaleringsbeeldInfoDto[]>;\n\n @ResourceAction({\n path: '/valideeriaversie'\n })\n getBestaatIALevering: IResourceMethodObservable<{ versie: string }, Response>;\n\n}\n\nexport interface ISignaleringsbeeldInfoDto {\n bladNaam: string;\n pplgs: string[];\n metVisualisatie: boolean;\n}\n\nexport class SignaleringsbeeldInfoDto extends ResourceModel implements ISignaleringsbeeldInfoDto {\n $resource = SignaleringsbeeldInfoResource;\n bladNaam: string;\n pplgs: string[];\n metVisualisatie: boolean;\n\n constructor(data?: ISignaleringsbeeldInfoDto) {\n super();\n this.$setData(data);\n }\n\n toJSON(): any {\n return { bladnaam: this.bladNaam, pplgs: this.pplgs, metVisualisatie: this.metVisualisatie };\n }\n\n toString(): string {\n return `${ this.bladNaam }, ${ this.pplgs }, ${ this.metVisualisatie }`;\n }\n\n $setData(data: ISignaleringsbeeldInfoDto): this {\n if (data) {\n this.bladNaam = data.bladNaam;\n this.pplgs = data.pplgs;\n this.metVisualisatie = data.metVisualisatie;\n }\n return this;\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { MstEditorState } from '../state/mst-editor-state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BaseRestService implements OnDestroy {\n\n private subscriptions: Subscription = new Subscription();\n protected baseUrl: string;\n protected iaVersie: string;\n\n constructor(protected httpClient: HttpClient, protected store: Store<MstEditorState>) {\n this.subscriptions.add(this.store.select('baseUrl').subscribe(baseUrl => this.baseUrl = baseUrl));\n this.subscriptions.add(this.store.select('iaVersie').subscribe(iaVersie => this.iaVersie = iaVersie.versie));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Actie, Beweging } from '../optimo';\nimport { ClearProgress } from '../state/actions/actions';\nimport { BaseRestService } from './base-rest.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BewegingVerrijkerService extends BaseRestService {\n\n public getBewegingen(bewegingen: Beweging[], ongeplandeActies: Actie[]): Observable<Beweging[]> {\n return this.httpClient.put<Beweging[]>(\n this.getUrl(this.iaVersie),\n { bewegingen, ongeplandeActies },\n { headers: new HttpHeaders().set('Accept', 'application/json').append('Content-Type', 'application/json') })\n .pipe(catchError((err, _caught) => this.errorHandler(err)));\n }\n\n private getUrl(iaVersie: string): string {\n return `${ this.baseUrl }/mst/rest/beweging/${ iaVersie }`;\n }\n\n errorHandler(error: any): [] {\n // eslint-disable-next-line no-console\n console.log('error bij verrijken', error);\n this.store.dispatch(ClearProgress());\n return [];\n }\n}\n","import { domein } from '@loxia/rijwegen';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\nexport class RijwegplanRijwegDwangCombinatie {\n constructor(public readonly rijwegplan: domein.Rijwegplan,\n public readonly rijweg: domein.Rijweg,\n public readonly dwang: domein.Dwang) {\n }\n\n getDwangNummer(): number {\n return this.dwang.getDwangNummer() === 0 ? -1 : this.dwang.getDwangNummer();\n }\n\n getVanPrlSpoor(): string {\n return this.dwang.getVanPrlSpoor();\n }\n\n getNaarPrlSpoor(): string {\n return this.dwang.getNaarPrlSpoor();\n }\n\n getRoute(): domein.Route {\n return this.dwang.getRoute();\n }\n\n isVrijeBaanRijweg(): boolean {\n const vbrwp = <VrijebaanRijwegplan>this.rijwegplan;\n return !!vbrwp.getVervolgSpoor;\n }\n}\n","import { domein, JsJavaUtil, sbblad } from '@loxia/rijwegen';\nimport { Actie, Beweging } from '../optimo';\nimport { BewegingUtils } from '../services/beweging-utils.service';\nimport { RijwegplanRijwegDwangCombinatie } from './rijwegplan-rijweg-dwang-combinatie';\n\nexport enum RitdeelZichtbaarheid {\n ZICHTBAAR = 1,\n ONZICHTBAAR_DOOR_GEBRUIKER = 2,\n ONZICHTBAAR_DOOR_SYSTEEM = 3\n}\n\nexport class Ritdeel {\n private alternatieveRoutes: sbblad.AlternativeRoute[] = [];\n private zichtbaarheid = RitdeelZichtbaarheid.ZICHTBAAR;\n private zichtbaarBuitenPaginatie = false;\n\n constructor(private readonly rijwegplanRijwegDwangCombi: RijwegplanRijwegDwangCombinatie,\n public acties: Actie[],\n public readonly beweging: Beweging,\n public vrijebaanRijwegplanRijwegDwangCombi: RijwegplanRijwegDwangCombinatie,\n public vervolgSpoor: string,\n private topoElementen: sbblad.TopologyElement[]) {\n }\n\n getAlternatieveRoutes(): sbblad.AlternativeRoute[] {\n return this.alternatieveRoutes;\n }\n\n copyMetDwang(nieuweDwang: domein.Dwang): Ritdeel {\n const nieuweRijwegplanRijwegDwangCombi =\n new RijwegplanRijwegDwangCombinatie(\n this.rijwegplanRijwegDwangCombi.rijwegplan, this.rijwegplanRijwegDwangCombi.rijweg, nieuweDwang);\n const copy = new Ritdeel(nieuweRijwegplanRijwegDwangCombi, [], this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n return copy;\n }\n\n copyMetAlternatieveRoutes(alternatieveRoutes: sbblad.AlternativeRoute[]): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetAlternatieveRoutesZonderActies(alternatieveRoutes: sbblad.AlternativeRoute[]): Ritdeel {\n const copy = this.copyMetAlternatieveRoutes(alternatieveRoutes);\n if (copy.beweging) {\n copy.acties = [];\n }\n return copy;\n }\n\n copyMetZichtbaarheid(zichtbaarheid: RitdeelZichtbaarheid): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = this.zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetZichtbaarheidEnPaginatie(zichtbaarheid: RitdeelZichtbaarheid, zichtbaarBuitenPaginatie: boolean): Ritdeel {\n const copy = this.copyMetZichtbaarheid(zichtbaarheid);\n copy.zichtbaarBuitenPaginatie = zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n copyMetZichtbaarheidBuitenPaginatie(zichtbaarBuitenPaginatie: boolean): Ritdeel {\n const copy = new Ritdeel(this.rijwegplanRijwegDwangCombi, this.acties, this.beweging,\n this.vrijebaanRijwegplanRijwegDwangCombi, this.vervolgSpoor, this.topoElementen);\n copy.alternatieveRoutes = this.alternatieveRoutes;\n copy.zichtbaarheid = this.zichtbaarheid;\n copy.zichtbaarBuitenPaginatie = zichtbaarBuitenPaginatie;\n\n return copy;\n }\n\n equals(other: Ritdeel): boolean {\n if (!other) {\n return false;\n }\n return other.rijwegplanRijwegDwangCombi === this.rijwegplanRijwegDwangCombi;\n }\n\n getRijwegplan(): domein.Rijwegplan {\n return this.rijwegplanRijwegDwangCombi.rijwegplan;\n }\n\n getRijweg(): domein.Rijweg {\n return this.rijwegplanRijwegDwangCombi.rijweg;\n }\n\n getDwang(): domein.Dwang {\n return this.rijwegplanRijwegDwangCombi.dwang;\n }\n\n getRoute(): domein.Route {\n return this.rijwegplanRijwegDwangCombi.getRoute();\n }\n\n getSeinen(): domein.Sein[] {\n const seinen: domein.Sein[] = JsJavaUtil.listToArray(this.rijwegplanRijwegDwangCombi.getRoute().getSeinen());\n if (this.vrijebaanRijwegplanRijwegDwangCombi) {\n const sein: domein.Sein[] = JsJavaUtil.listToArray(this.vrijebaanRijwegplanRijwegDwangCombi.getRoute().getSeinen());\n seinen.push(...sein);\n }\n return seinen;\n }\n\n getVanPrlSpoor(): string {\n return this.rijwegplanRijwegDwangCombi.getVanPrlSpoor();\n }\n\n getVisueelNaarPrlSpoor(): string {\n if (this.vervolgSpoor) {\n return this.vervolgSpoor;\n }\n\n return this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n }\n\n getNaarPrlSpoor(): string {\n return this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n }\n\n getNaarPrlSpoorText(): string {\n let retval = this.rijwegplanRijwegDwangCombi.getNaarPrlSpoor();\n if (this.vrijebaanRijwegplanRijwegDwangCombi) {\n retval += '_e';\n }\n if (this.vervolgSpoor) {\n retval += '(' + this.vervolgSpoor + ')';\n }\n return retval;\n }\n\n getVrijebaanRijwegplan(): domein.Rijwegplan {\n return this.vrijebaanRijwegplanRijwegDwangCombi.rijwegplan;\n }\n\n getVrijebaanRijweg(): domein.Rijweg {\n return this.vrijebaanRijwegplanRijwegDwangCombi.rijweg;\n }\n\n getVrijebaanDwang(): domein.Dwang {\n return this.vrijebaanRijwegplanRijwegDwangCombi.dwang;\n }\n\n getDwangNummer(): number {\n return this.rijwegplanRijwegDwangCombi.getDwangNummer();\n }\n\n getZichtbaarheid(): RitdeelZichtbaarheid {\n return this.zichtbaarheid;\n }\n\n isZichtbaar(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR;\n }\n\n isZichtbaarBinnenWindow(): boolean {\n return this.isZichtbaar() && !this.zichtbaarBuitenPaginatie;\n }\n\n isBinnenWindow(): boolean {\n return (this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR ||\n this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER)\n && this.zichtbaarBuitenPaginatie === false;\n }\n\n isNietBeschikbaar(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM;\n }\n\n isOnzichtbaarDoorGebruiker(): boolean {\n return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER;\n }\n\n isNieuw(): boolean {\n return !this.beweging || this.beweging.wijzigStatus === BewegingUtils.TOEGEVOEGD;\n }\n\n getPplg(): string {\n return this.rijwegplanRijwegDwangCombi.rijwegplan.getPPLG();\n }\n\n getPplgString(): string {\n if (this.getVanSeinPplg() === this.getNaarSeinPplg()) {\n return this.getVanSeinPplg();\n } else {\n return this.getVanSeinPplg() + ' / ' + this.getNaarSeinPplg();\n }\n }\n\n heeftVrijebaanInfo(): boolean {\n return this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;\n }\n\n getVrijebaanPrlRoute(): domein.Route {\n return this.vrijebaanRijwegplanRijwegDwangCombi.getRoute();\n }\n\n getTopologieElementen(): sbblad.TopologyElement[] {\n return this.topoElementen;\n }\n\n getBewegingId(): string {\n if (this.beweging) {\n return '' + this.beweging.id;\n }\n return '';\n }\n\n getTreinNummer(): string {\n if (this.beweging?.treinNummer) {\n return '' + this.beweging.treinNummer;\n }\n return '';\n }\n\n getVanSeinPplg(): string {\n return this.beweging ? this.beweging.vanSeinPplg : this.getRoute().getBeginSein().getPPLG();\n }\n\n getNaarSeinPplg(): string {\n return this.beweging ? this.beweging.naarSeinPplg : this.getRoute().getEindSein().getPPLG();\n }\n\n getVanSeinName(): string {\n return this.getRoute().getBeginSein().getName();\n }\n\n getNaarSeinName(): string {\n return this.getRoute().getEindSein().getName();\n }\n\n getZichtbaarheidBuitenPaginatie(): boolean {\n return this.zichtbaarBuitenPaginatie;\n }\n\n bepaalTopologieElementen(signaleringsBeeldManagerService): void {\n const topoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getRoute());\n\n if (this.heeftVrijebaanInfo()) {\n const vrijebaanTopoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getVrijebaanPrlRoute());\n topoElementen.push(...vrijebaanTopoElementen);\n }\n this.topoElementen = topoElementen;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { MessagesService } from '../atomic-components/services/messages.service';\nimport { RijwegplanRijwegDwangCombinatie } from '../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Beweging, Rit } from '../optimo';\nimport { MessageBuilder } from '../util/message-builder';\nimport { EditorService } from './editor.service';\n\nconst SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\nconst SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX = '_v';\n\n@Injectable()\nexport class RitLezerService {\n constructor(private rijwegPlanEditorService: EditorService,\n private readonly messagesService: MessagesService) {\n }\n\n public parseRit(rit: Rit, ritGewijzigdToegestaan: boolean): Ritdeel[] {\n const ritDelen = [];\n const missingPplgs = [];\n if (!this.ritBestandIsGewijzigd(rit, ritGewijzigdToegestaan)) {\n rit.bewegingen.forEach(beweging => this.parseBeweging(beweging, ritDelen, missingPplgs));\n }\n return ritDelen;\n }\n\n private parseBeweging(beweging: Beweging, ritDelen: any[], missingPplgs: string[]): void {\n const rijwegPlan = this.getRijwegPlan(beweging.vanPplg);\n if (!rijwegPlan) {\n if (!missingPplgs.includes(beweging.vanPplg)) {\n this.messagesService.showMessage(MessageBuilder.rijwegplanNietGevonden(beweging));\n missingPplgs.push(beweging.vanPplg);\n }\n return;\n }\n const rijweg = this.getRijweg(rijwegPlan, beweging.vanSpoor, beweging.naarSpoor);\n if (!rijweg) {\n this.messagesService.showMessage(MessageBuilder.rijwegNietGevonden(beweging));\n return;\n }\n\n const dwang = this.getDwang(rijweg, beweging.dwangNummer);\n if (!dwang) {\n this.messagesService.showMessage(MessageBuilder.dwangNietGevonden(beweging));\n return;\n }\n const { vrijebaanDwangInfo, vervolgSpoor } = this.extractVrijebaanDwangInfo(beweging, rijwegPlan, rijweg);\n const dwangInfo = new RijwegplanRijwegDwangCombinatie(rijwegPlan, rijweg, dwang);\n ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));\n }\n\n private extractVrijebaanDwangInfo(beweging: Beweging, rijwegPlan: domein.Rijwegplan, rijweg: domein.Rijweg) {\n let vrijebaanDwangInfo = null;\n let vervolgSpoor;\n if (beweging.naarSpoor.endsWith(SPOOR_NAAR_VRIJEBAAN_POSTFIX) ||\n beweging.naarSpoor.endsWith(SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX)) {\n let vrijebaanRijweg: domein.Rijweg;\n let vrijebaanDwang;\n const vrijebaanRijwegplan =\n this.rijwegPlanEditorService.getVrijebaanRijwegplan(rijwegPlan.getPPLG(),\n rijweg.getEindSein().getName());\n if (vrijebaanRijwegplan) {\n const rijwegenArray: domein.Rijweg[] = JsJavaUtil.listToArray(vrijebaanRijwegplan.getRijwegen());\n\n const vrijebaanRijwegen =\n rijwegenArray.filter(\n vbRijweg => vbRijweg.getBeginSein().getName() === rijweg.getEindSein().getName());\n if (vrijebaanRijwegen.length > 0) {\n vrijebaanRijweg = vrijebaanRijwegen[0];\n vrijebaanDwang = vrijebaanRijweg.getDwangVoorDwangNummer(0);\n vervolgSpoor = vrijebaanRijwegplan.getVervolgSpoor(vrijebaanRijweg);\n }\n vrijebaanDwangInfo =\n new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);\n }\n }\n return { vrijebaanDwangInfo, vervolgSpoor };\n }\n\n private getRijwegPlan(pplg: string): domein.Rijwegplan {\n return this.rijwegPlanEditorService.getRijwegplan(pplg);\n }\n\n private getDwang(rijweg: domein.Rijweg, dwangNummer: number): domein.Dwang {\n return rijweg.getDwangVoorDwangNummer(this.converteerDwangNummer(dwangNummer));\n }\n\n private getRijweg(rijwegPlan: domein.Rijwegplan, vanSpoor: string, naarSpoor: string): domein.Rijweg {\n const vanPrlSpoor = this.verwijderExtendedInformatie(vanSpoor);\n const naarPrlSpoor = this.verwijderExtendedInformatie(naarSpoor);\n return rijwegPlan.getRijweg(vanPrlSpoor, naarPrlSpoor);\n }\n\n private ritBestandIsGewijzigd(rit: Rit, ritGewijzigdToegestaan: boolean): boolean {\n for (const beweging of rit.bewegingen) {\n if (this.isGewijzigd(beweging) && !ritGewijzigdToegestaan) {\n this.messagesService.showMessage(MessageBuilder.ritFileAlGewijzigdError(beweging));\n return true;\n }\n }\n return false;\n }\n\n private verwijderExtendedInformatie(spoor: string): string {\n return spoor.split('_')[0];\n }\n\n private converteerDwangNummer(dwangNummer: number): number {\n return (dwangNummer === -1) ? 0 : dwangNummer;\n }\n\n private isGewijzigd(beweging: Beweging): boolean {\n return beweging.wijzigStatus === 'Gewijzigd';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { MessagesService } from '../../atomic-components/services/messages.service';\nimport { MeldingEvent } from '../../model/melding-event';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { MstLoggingDto, MstLoggingResource } from '../../resources/mstlogging.resource';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { ActieHelper } from '../../util/actie-helper';\nimport { LoggingHelper } from '../../util/logging-helper';\nimport { MeldingBuilder } from '../../util/melding-builder';\nimport { MessageBuilder } from '../../util/message-builder';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport {\n BepaalOngeplandeActies,\n SetOngeplandeActies,\n SetOngeplandeActiesBepaald,\n SetOngeplandeActieSelectieIds\n} from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class BepaalOngeplandeActiesEffect {\n bepaalOngeplandeActies$ = createEffect(() => this.actions$.pipe(\n ofType(BepaalOngeplandeActies),\n withLatestFrom(this.store),\n map(([action, store]) => {\n\n const puicActieMap = new ArrayMultimap<string, OngeplandeActie>();\n const nietGevondenTakken = [];\n const logMeldingDTOs: MstLoggingDto[] = [];\n\n const acties = store.ritDelen.flatMap(rd => rd.acties);\n\n action.ongeplandeActies.forEach(actie => {\n const alreadyAdded = acties.filter(a => a.id === actie.id).length > 0;\n if (!alreadyAdded) {\n const puics = this.actieHelper.bepaalPuicsVoorActie(actie);\n\n if (puics.length > 0) {\n const ongeplandeActie = new OngeplandeActie(actie, puics);\n this.updatePuicActieMap(puics, ongeplandeActie, puicActieMap);\n } else {\n const takId = ActieHelper.bepaalTakId(actie);\n const spoortak = this.sbmService.getSbSpoortak(takId);\n if (!spoortak && nietGevondenTakken.indexOf(takId) < 0) {\n nietGevondenTakken.push(takId);\n const melding: MeldingEvent = MeldingBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n } else if (spoortak) {\n const melding: MeldingEvent = MeldingBuilder.actieHighlightError([actie.id]);\n logMeldingDTOs.push(this.loggingHelper.maakLogDTO(melding, actie));\n this.messagesService.showMessage(MessageBuilder.actieHighlightError([actie.id]));\n }\n }\n }\n });\n if (nietGevondenTakken.length > 0) {\n this.messagesService.showMessage(MessageBuilder.nietGevondenTakkenOngeplandeActies(nietGevondenTakken));\n }\n if (logMeldingDTOs.length > 0) {\n this.mstLogResource.logErrorMessages(logMeldingDTOs);\n }\n\n this.store.dispatch(SetOngeplandeActies(puicActieMap));\n this.store.dispatch(SetOngeplandeActieSelectieIds(Array.from(puicActieMap.keys())));\n this.store.dispatch(SetOngeplandeActiesBepaald(true));\n })\n ), { dispatch: false });\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private messagesService: MessagesService,\n private actieHelper: ActieHelper,\n private loggingHelper: LoggingHelper\n ) {\n }\n\n private updatePuicActieMap(puics: string[], ongeplandeActie: OngeplandeActie, puicMap: ArrayMultimap<string, OngeplandeActie>): void {\n puics.forEach(puic => {\n puicMap.put(puic, ongeplandeActie);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateService {\n\n // simple method, in separate method/service to be able to make tests stable\n getCurrentDate(): Date {\n return new Date();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MessagesService, } from '../../atomic-components/services/messages.service';\nimport { Message, Severity } from '../../atomic-components/message/';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { Actie, Rit } from '../../optimo';\nimport { SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { DateService } from '../../util/date.service';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetIaVersie, ShowProgress } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class BepaalSbInfosEffect {\n\n bepaalSbInfos$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.bepaalSbInfos),\n map((actie) => {\n let pplgs = this.bepaalPplgs(actie.rit);\n pplgs = this.bepaalPplgsUitActies(actie.ongeplandeActies, pplgs);\n if (pplgs.length > 0) {\n this.laadSignaleringsbeeldInfo(pplgs, actie.ritGewijzigdToegestaan, actie.iaVersie, actie.rit, actie.paginationSize);\n }\n\n })), { dispatch: false }\n );\n\n constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly sbiResource: SignaleringsbeeldInfoResource,\n private readonly messagesService: MessagesService,\n private readonly dateService: DateService) {\n }\n\n bepaalPplgs(rit: Rit): Array<string> {\n const pplgs = [];\n rit?.bewegingen?.forEach(beweging => {\n this.voegNieuwePplgToe(pplgs, beweging.vanPplg);\n this.voegNieuwePplgToe(pplgs, beweging.naarPplg);\n this.voegNieuwePplgToe(pplgs, beweging.vanSeinPplg);\n this.voegNieuwePplgToe(pplgs, beweging.naarSeinPplg);\n });\n return pplgs;\n }\n\n bepaalPplgsUitActies(acties: Actie[], pplgs: string[]): string[] {\n acties.forEach(actie => this.voegNieuwePplgToe(pplgs, actie.pplgNaam));\n return pplgs;\n }\n\n private laadSignaleringsbeeldInfo(pplgs: string[], ritGewijzigdToegestaan: boolean, iaVersie: string, treinpad: Rit, paginationSize: number): void {\n const obs = this.sbiResource.getBestaatIALevering({ versie: iaVersie });\n this.store.dispatch(ShowProgress());\n obs.pipe(take(1)).subscribe({\n next: _res => this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(treinpad, paginationSize, pplgs, ritGewijzigdToegestaan)),\n error: err => {\n this.messagesService.showMessage(new Message(Severity.INFORMATION, Utils.getValidErorrMessage(err)));\n const iaVersieInfo = { versie: 'DONNA_97207_VER_1', ingangsDatum: this.dateService.getCurrentDate() };\n this.store.dispatch(SetIaVersie(iaVersieInfo));\n this.store.dispatch(MstActions.laadEnVerwerkSignaleringsbeeldInfo(treinpad, paginationSize, pplgs, ritGewijzigdToegestaan));\n }\n });\n }\n\n private voegNieuwePplgToe(pplgs: Array<string>, pplg: string): void {\n if (pplg && pplgs.indexOf(pplg) < 0) {\n pplgs.push(pplg);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport {\n BewegingInvoegen,\n SetBeginSeinSelectieIds,\n SetEindSeinenClickableIds,\n SetEindSeinSelectieIds,\n SetNieuwRouteBeginSein\n} from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\n@Injectable()\nexport class BewegingInvoegenEffect {\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private editorService: EditorService) {\n }\n\n bewegingInvoegen$ = createEffect(() => this.actions$.pipe(\n ofType(BewegingInvoegen),\n map(action => {\n const startSeinOpRitdeel = action.startSeinOpRitdeel;\n const sein = startSeinOpRitdeel.sein;\n const sbSein = this.sbmService.getSBSein(sein);\n const pplg = sbSein.getPPLG();\n\n const combinaties = [];\n const rijwegplan = this.editorService.getRijwegplan(pplg);\n const eindSeinen: domein.Sein[] = JsJavaUtil.listToArray(rijwegplan.getEindSeinen(sein.getName()));\n combinaties.push(...this.maakCombinaties(rijwegplan, startSeinOpRitdeel.sein, eindSeinen));\n\n if (startSeinOpRitdeel.ritdeel.heeftVrijebaanInfo()) {\n // vrije baan af\n const vbrwp = <VrijebaanRijwegplan>startSeinOpRitdeel.ritdeel.getVrijebaanRijwegplan();\n const otherPplg = vbrwp.getTegenOvergesteldePplg(rijwegplan.getPPLG());\n\n const rwp = this.editorService.getRijwegplan(otherPplg);\n const eSeinen: domein.Sein[] = JsJavaUtil.listToArray(rwp.getEindSeinen(startSeinOpRitdeel.sein.getName()));\n combinaties.push(...this.maakCombinaties(rwp, startSeinOpRitdeel.sein, eSeinen));\n } else {\n // vrije baan op\n const vrijebaanRijwegplan =\n this.editorService.getVrijebaanRijwegplan(pplg, startSeinOpRitdeel.sein.getName());\n if (vrijebaanRijwegplan) {\n const vrijebaanEindSeinen: domein.Sein[] = JsJavaUtil.listToArray(vrijebaanRijwegplan.getEindSeinen(startSeinOpRitdeel.sein.getName()));\n combinaties.push(...this.maakCombinaties(vrijebaanRijwegplan, startSeinOpRitdeel.sein, vrijebaanEindSeinen));\n }\n }\n\n const eindSeinenPuics = [];\n combinaties.forEach(c => {\n const sbEindSein = this.sbmService.getSBSein(c.rijweg.getEindSein());\n if (sbEindSein) {\n const eindSeinPuic = sbEindSein.getPuic();\n action.puicNaarEindSeinCombinatie.set(eindSeinPuic, c);\n eindSeinenPuics.push(eindSeinPuic);\n }\n });\n\n this.store.dispatch(SetNieuwRouteBeginSein(startSeinOpRitdeel));\n this.store.dispatch(SetBeginSeinSelectieIds([sbSein.getPuic()]));\n this.store.dispatch(SetEindSeinSelectieIds(eindSeinenPuics));\n this.store.dispatch(SetEindSeinenClickableIds(eindSeinenPuics));\n\n })\n ), { dispatch: false });\n\n private maakCombinaties(rijwegplan: domein.Rijwegplan, startSein: domein.Sein, eindSeinen: domein.Sein[]): any[] {\n const combinaties = [];\n eindSeinen.forEach(eindSein => {\n const rijweg = rijwegplan.getRijwegVoorSeinen(startSein, eindSein); // zoek rijweg van sein naar sein\n const dwang = rijweg.getVoorkeurDwang(); // pak voorkeursdwang van de rijweg\n combinaties.push(new RijwegplanRijwegDwangCombinatie(rijwegplan, rijweg, dwang));\n });\n return combinaties;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { ArrayMultimap } from '../../util/multi-map';\nimport { DeleteOngeplandeActie, DeleteOngeplandeActieSelectieId } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class DeleteOngeplandeActieEffect {\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>) {\n }\n\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(DeleteOngeplandeActie),\n withLatestFrom(this.store),\n map(([action, state]) => {\n const actie = action.ongeplandeActie;\n const ongeplandeActies = state.ongeplandeActies;\n\n this.updateOngeplandeActiesIdsOnDelete(actie, ongeplandeActies);\n })), { dispatch: false });\n\n updateOngeplandeActiesIdsOnDelete(actie, ongeplandeActies: ArrayMultimap<string, OngeplandeActie>): void {\n actie.puics.forEach(puic => {\n const acties = ongeplandeActies.get(puic);\n if (acties) {\n const index = acties.indexOf(actie);\n if (index > -1) {\n acties.splice(index, 1);\n }\n if (acties.length === 0) {\n ongeplandeActies.delete(puic);\n this.store.dispatch(DeleteOngeplandeActieSelectieId(puic));\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../actions/actions';\nimport { SetOngeplandeActiesBepaald } from '../actions/actions';\nimport { navigeerVanaf } from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class FocusEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n focusOpBeweging$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.focusOpRitdeel),\n withLatestFrom(this.store),\n map(([actie, _storeState]) => {\n const ritdeel = actie.ritdeel;\n const topoElementen = this.sbmService.bepaalRouteElementen(ritdeel.getRoute());\n const dwangPuics = this.getPuics(topoElementen);\n\n if (ritdeel.isNietBeschikbaar()) {\n this.store.dispatch(SetOngeplandeActiesBepaald(false));\n this.store.dispatch(navigeerVanaf(actie.paginationSize, actie.iaVersieInfo, ritdeel));\n }\n\n return MstActions.focusOpIds(dwangPuics);\n }))\n );\n\n private getPuics(topoElementen: sbblad.HasIdentifier[]): string[] {\n return topoElementen.map(e => e.getPuic());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MessagesService, } from '../../atomic-components/services/messages.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { ISignaleringsbeeldInfoDto } from '../../resources/signaleringsbeeldinfo.resource';\nimport { EditorService } from '../../services/editor.service';\nimport { RitLezerService } from '../../services/rit-lezer.service';\nimport { MessageBuilder } from '../../util/message-builder';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetSignaleringsbeeldInfoDtos } from '../actions/actions';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class LaadRouteFilesEffect {\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(SetSignaleringsbeeldInfoDtos),\n map(action => this.laadRouteFiles(action))), { dispatch: false }\n );\n\n constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly ritLezer: RitLezerService,\n private readonly editorService: EditorService,\n private readonly messagesService: MessagesService) {\n }\n\n laadRouteFiles(actie: {\n dtos: ISignaleringsbeeldInfoDto[];\n iaversieinfo: any;\n treinpad: any;\n paginationSize: number;\n ritGewijzigdToegestaan: boolean\n }): void {\n const isReady = this.editorService.isReady();\n isReady.then(() => {\n const pplgs = this.bepaalSbDtoPplgs(actie.dtos);\n const promise = this.editorService.laadRouteFiles(actie.iaversieinfo.versie, pplgs);\n\n promise.then(() => {\n this.updateRitdelen(actie);\n }, err => {\n this.messagesService.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n });\n }\n\n private updateRitdelen(actie: {\n dtos: ISignaleringsbeeldInfoDto[];\n iaversieinfo: any;\n treinpad: any;\n paginationSize: number;\n ritGewijzigdToegestaan: boolean\n }): void {\n setTimeout(() => {\n this.store.select('ritDelen').pipe(take(1)).subscribe(ritdelen => {\n if (ritdelen.length === 0) {\n ritdelen = this.ritLezer.parseRit(actie.treinpad, actie.ritGewijzigdToegestaan);\n }\n\n this.store.dispatch(RitdelenActions.setRitDelen(ritdelen, actie.paginationSize, actie.iaversieinfo));\n this.store.dispatch(MstActions.setEditable(actie.treinpad.ritStatus !== 'Definitief'));\n });\n }, 0);\n }\n\n private bepaalSbDtoPplgs(dtos: ISignaleringsbeeldInfoDto[]): any[] {\n const pplgs = [];\n dtos.forEach(dto => {\n dto.pplgs.forEach(pplg => {\n if (!pplgs.includes(pplg)) {\n pplgs.push(pplg);\n }\n });\n });\n return pplgs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ClearProgress } from '../state/actions/actions';\nimport { BaseRestService } from './base-rest.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConnectorService extends BaseRestService {\n\n public getOtherRand(puic: string): Observable<string> {\n return this.httpClient.get<string>(\n this.getUrl(this.iaVersie, puic))\n .pipe(catchError((err, _caught) => this.handleResult(err)));\n }\n\n private getUrl(iaVersie: string, puic: string): string {\n return `${ this.baseUrl }/mst/rest/connector/${iaVersie}/${ puic }`;\n }\n\n handleResult(res: any): [] {\n if (res.error) {\n console.log('error bij ophalen connector-info', res.error);\n }\n this.store.dispatch(ClearProgress());\n return [];\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { ImxViewerComponent, Point, SvgInfo } from '@loxia/imx-viewer';\nimport { sbblad } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { MessagesService } from '../../atomic-components/services/messages.service';\nimport { Ritdeel, RitdeelZichtbaarheid } from '../../model/ritdeel';\nimport { InfraModel } from '../../optimo';\nimport { ISignaleringsbeeldInfoDto, SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { ConnectorService } from '../../services/connector.service';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { MessageBuilder } from '../../util/message-builder';\nimport Utils from '../../util/utils';\nimport * as MstActions from '../actions/actions';\nimport { SetSignaleringsbeeldInfoDtos, SetVisibleSignaleringsbeeldInfoDtos } from '../actions/actions';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport TopologyElement = sbblad.TopologyElement;\n\ninterface NavigeerBuitenRitInput {\n rand: TopologyElement;\n randPuic: string;\n storeState: MstEditorState;\n otherPplg?: string;\n dtos?: ISignaleringsbeeldInfoDto[];\n svgDataUrls?: string[];\n}\n\ninterface SignaleringsbeeldInfoInput {\n dtos?: ISignaleringsbeeldInfoDto[];\n actie: any;\n storeState: MstEditorState;\n}\n\n@Injectable()\nexport class LaadSignaleringsbeeldenEffect {\n\n private SVG_PIXEL_RUIMTE = 30;\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private signaleringsBeeldManagerService: SignaleringsBeeldManagerService,\n private editorService: EditorService,\n private sbiResource: SignaleringsbeeldInfoResource,\n private connectorService: ConnectorService,\n private messagesSerivce: MessagesService) {\n }\n\n verwerkRitdelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.setRitDelen, RitdelenActions.navigeer, RitdelenActions.navigeerVanaf),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n this.store.dispatch(MstActions.SetOngeplandeActiesBepaald(false));\n this.verwerkRitdelen(actie, storeState);\n })), { dispatch: false }\n );\n\n laadEnVerwerkSignaleringsbeeldInfo$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.laadEnVerwerkSignaleringsbeeldInfo),\n withLatestFrom(this.store),\n switchMap(([actie, storeState]) => this.handleSignaleringsbeeldInfo({actie, storeState}))\n ), { dispatch: false });\n\n private handleSignaleringsbeeldInfo({actie, storeState} : SignaleringsbeeldInfoInput): Observable<ISignaleringsbeeldInfoDto[]> {\n return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(actie.pplgs, storeState.iaVersie)).pipe(\n take(1),\n tap((dtos) => this.processResponse({dtos, storeState, actie})),\n catchError((err) => {\n this.messagesSerivce.showMessage(MessageBuilder.nietGevondenSBI(err));\n return throwError(() => err);\n })\n );\n }\n\n private processResponse({ dtos, storeState, actie }: SignaleringsbeeldInfoInput): void {\n if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {\n this.messagesSerivce.showMessage(MessageBuilder.meerDan12BladenGevonden(dtos.length));\n }\n this.store.dispatch(SetSignaleringsbeeldInfoDtos(dtos, storeState.iaVersie, actie.rit, actie.paginationSize, actie.ritGewijzigdToegestaan));\n this.store.dispatch(SetVisibleSignaleringsbeeldInfoDtos(dtos));\n }\n\n navigeerBuitenRit$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.navigeerBuitenRit),\n withLatestFrom(this.store),\n switchMap(([actie, storeState]) =>\n of({\n rand: this.signaleringsBeeldManagerService.getTopologyElementByPuic(actie.randPuic),\n randPuic: actie.randPuic,\n storeState\n }).pipe(\n switchMap(this.getOtherRand.bind(this)),\n switchMap(this.loadRouteFilesAndSignaleringsbeeldInfo.bind(this)),\n switchMap(this.loadSignaleringsbeelden.bind(this)),\n map(this.processSvgsAndUpdateRitdelen.bind(this))\n )\n )\n ), { dispatch: false });\n\n private getOtherRand({ rand, randPuic, storeState}: NavigeerBuitenRitInput) {\n return this.connectorService.getOtherRand(randPuic).pipe(\n map(otherPplg => ({ otherPplg, rand, storeState }))\n );\n }\n\n private loadRouteFilesAndSignaleringsbeeldInfo({ otherPplg, rand, storeState }: NavigeerBuitenRitInput) {\n this.editorService.laadRouteFiles(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]);\n return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie)).pipe(\n map(dtos => ({ dtos, storeState }))\n );\n }\n\n private loadSignaleringsbeelden({ dtos, storeState }: NavigeerBuitenRitInput) {\n return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(\n map(svgDataUrls => ({ svgDataUrls, storeState, dtos }))\n );\n }\n\n private processSvgsAndUpdateRitdelen({ svgDataUrls, storeState, dtos }: NavigeerBuitenRitInput): void {\n this.verwerkSvgs(svgDataUrls);\n const nieuweRitdelen = this.updateRitdelen(storeState.ritDelen, dtos);\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(dtos));\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n }\n\n verwerkRitdelen(actie, storeState: MstEditorState): void {\n const isInit = actie.type === RitdelenActions.SET_RIT_DELEN;\n const ritDelen: Ritdeel[] = isInit ? actie.ritDelen : storeState.ritDelen;\n const storeDtos: ISignaleringsbeeldInfoDto[] = storeState.signaleringsbeeldInfoDtos;\n\n this.navigeer(ritDelen, actie, storeDtos);\n\n const visibleRitDelen = ritDelen.filter(n => n.isZichtbaarBinnenWindow());\n const visibleRitPplgs: string[] = visibleRitDelen.map(r => r.getPplg()).filter(this.distinct);\n\n const visibleDtos = this.bepaalZichtbareDtos(visibleRitPplgs, storeDtos);\n const loadingDtos = this.bepaalToLoadDtos(visibleDtos, ritDelen, visibleRitDelen, visibleRitPplgs, storeState);\n\n this.editorService.laadSignaleringsbeelden(actie.iaversieinfo.versie, loadingDtos).pipe(\n tap(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\n this.updateState(ritDelen, visibleDtos, storeState, visibleRitPplgs, loadingDtos, isInit, storeDtos);\n }),\n catchError(err => {\n this.messagesSerivce.showMessage(MessageBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n throw err;\n })\n ).subscribe();\n }\n\n private updateState(ritDelen: Ritdeel[], visibleDtos: ISignaleringsbeeldInfoDto[], storeState: MstEditorState, visibleRitPplgs: string[], loadingDtos: any[], isInit: boolean, storeDtos: ISignaleringsbeeldInfoDto[]): void {\n setTimeout(() => {\n const nieuweRitdelen = this.updateRitdelen(ritDelen, visibleDtos);\n this.debugLog(storeState.debug, visibleRitPplgs, loadingDtos);\n\n if (!isInit) {\n this.store.dispatch(MstActions.UpdateSignaleringsbeeldInfoDtos(storeDtos));\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(loadingDtos));\n }\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n }, 0);\n }\n\n private createSignaleringsbeeldInfoQueryDto(pplgs: string[], iainfo: InfraModel): any {\n const datum = iainfo.ingangsDatum && !isNaN(iainfo.ingangsDatum.getTime()) ? iainfo.ingangsDatum.toISOString() : undefined;\n return { pplgs, versie: iainfo.versie, ingangsDatum: datum };\n }\n\n private verwerkSvgs(svgDataUrls): void {\n this.store.dispatch(MstActions.SetSvgInfos(this.bepaalSvgInfos(svgDataUrls)));\n }\n\n private bepaalSvgInfos(svgDataUrls): SvgInfo[] {\n let nextCoords = new Point(0, 0);\n const infos: SvgInfo[] = [];\n svgDataUrls.forEach(svgDataUrl => {\n if (svgDataUrl) {\n const decoded = atob(svgDataUrl.substring('data:image/svg+xml;base64,'.length));\n infos.push(new SvgInfo('data:image/svg+xml,' + decoded, nextCoords));\n nextCoords = new Point(nextCoords.x + ImxViewerComponent.getXCoordinate(decoded) + this.SVG_PIXEL_RUIMTE, 0);\n }\n });\n return infos;\n }\n\n private bepaalToLoadDtos(visibleDtos, ritDelen: Ritdeel[], visibleRitDelen, visibleRitPplgs: string[], storeState: MstEditorState): any[] {\n const loadingDtos = [...visibleDtos];\n const firstIdx = ritDelen.indexOf(visibleRitDelen[0]) - 1;\n this.addPrevNonVisibleDto(firstIdx, ritDelen, loadingDtos, visibleRitPplgs, storeState.signaleringsbeeldInfoDtos);\n const lastIdx = ritDelen.indexOf(visibleRitDelen[visibleRitDelen.length - 1]) + 1;\n this.addNextNonVisibleDto(lastIdx, ritDelen, loadingDtos, visibleRitPplgs, storeState.signaleringsbeeldInfoDtos);\n return loadingDtos;\n }\n\n private bepaalZichtbareDtos(visibleRitPplgs: string[], dtos: ISignaleringsbeeldInfoDto[]): ISignaleringsbeeldInfoDto[] {\n const visibleDtos: ISignaleringsbeeldInfoDto[] = [];\n visibleRitPplgs.forEach(pplg => {\n dtos.filter(dto => dto.pplgs.includes(pplg)).forEach(dto => {\n if (!visibleDtos.includes(dto)) {\n visibleDtos.push(dto);\n }\n });\n });\n visibleDtos.forEach(dto => dto.metVisualisatie = true);\n dtos.filter(d => !visibleDtos.includes(d)).forEach(d => d.metVisualisatie = false);\n return visibleDtos;\n }\n\n private distinct(value, index, self): boolean {\n return self.indexOf(value) === index;\n }\n\n private addPrevNonVisibleDto(firstIdx, ritdelen: Ritdeel[], loadingDtos: ISignaleringsbeeldInfoDto[], visibleRitPplgs: string[],\n allDtos: ISignaleringsbeeldInfoDto[]): void {\n if (firstIdx >= 0) {\n const pplg = ritdelen[firstIdx].getPplg();\n const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));\n\n if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {\n ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {\n d.metVisualisatie = false;\n loadingDtos.push(d);\n });\n } else {\n this.addPrevNonVisibleDto(firstIdx - 1, ritdelen, loadingDtos, visibleRitPplgs, allDtos);\n }\n }\n }\n\n private addNextNonVisibleDto(lastIdx, ritdelen: Ritdeel[], loadingDtos: ISignaleringsbeeldInfoDto[], visibleRitPplgs: string[],\n allDtos: ISignaleringsbeeldInfoDto[]): void {\n if (lastIdx <= ritdelen.length - 1) {\n const pplg = ritdelen[lastIdx].getPplg();\n const ritdeelDtos = allDtos.filter(dto => dto.pplgs.includes(pplg)).filter(dto => !loadingDtos.includes(dto));\n\n if (!visibleRitPplgs.includes(pplg) && ritdeelDtos.length > 0) {\n ritdeelDtos.filter(d => !loadingDtos.includes(d)).forEach(d => {\n d.metVisualisatie = false;\n loadingDtos.push(d);\n });\n } else {\n this.addNextNonVisibleDto(lastIdx + 1, ritdelen, loadingDtos, visibleRitPplgs, allDtos);\n }\n }\n }\n\n private debugLog(debug, visibleRitPplgs: string[], loadingDtos): void {\n if (debug) {\n console.log('RIT PPLGs: ' + visibleRitPplgs);\n loadingDtos.forEach(dto => {\n let str = '\\nDTO-bladNaam: ' + dto.bladNaam;\n str += '\\nDTO-PPLGs : ' + dto.pplgs;\n str += '\\nVisible : ' + dto.metVisualisatie;\n console.log(str);\n });\n }\n }\n\n // acties: Navigeer|NavigeerVanaf|SetRitDelen\n private navigeer(ritDelen: Ritdeel[], actie: {\n paginationSize: number;\n stapSize: number;\n type: string;\n ritdeel\n }, storeDtos: ISignaleringsbeeldInfoDto[]): void {\n // alle ritdelen krijgen zichtbaarheidBuitenPaginatie => false\n if (actie.type === RitdelenActions.SET_RIT_DELEN) {\n this.bepaalZichtbaarheidRechts(0, ritDelen, actie.paginationSize, storeDtos);\n } else if (actie.type === RitdelenActions.NAVIGEER) {\n const isLinks = actie.stapSize < 0;\n const startIndex = this.bepaalStartIndex(ritDelen);\n const endIndex = this.bepaalEndIndex(ritDelen);\n const navigerenMogelijk = !(startIndex === 0 && isLinks || endIndex === ritDelen.length - 1 && !isLinks);\n if (navigerenMogelijk) {\n if (isLinks) {\n this.bepaalZichtbaarheidLinks(startIndex, ritDelen, actie.paginationSize, storeDtos);\n } else {\n this.bepaalZichtbaarheidRechts(endIndex, ritDelen, actie.paginationSize, storeDtos);\n }\n }\n } else if (actie.type === RitdelenActions.NAVIGEER_VANAF) {\n const idx = ritDelen.indexOf(actie.ritdeel);\n this.bepaalZichtbaarheidRechts(idx, ritDelen, actie.paginationSize, storeDtos);\n }\n }\n\n private updateRitdelen(ritdelen: Ritdeel[], visibleDtos: ISignaleringsbeeldInfoDto[]): Ritdeel[] {\n const visibleIndices = [];\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i].isZichtbaarBinnenWindow()) {\n visibleIndices.push(i);\n }\n }\n const min = Math.min(...visibleIndices);\n const max = Math.max(...visibleIndices);\n\n for (let i = 0; i < ritdelen.length; i++) {\n const rd = ritdelen[i];\n\n if (rd.isZichtbaarBinnenWindow()) {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0) {\n ritdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheid(RitdeelZichtbaarheid.ZICHTBAAR) : rd;\n } else {\n ritdelen[i] = this.maakOnzichtbaar(rd);\n }\n }\n }\n\n this.updateZichtbaarheidAangrezendeRitdelen(min, max, ritdelen, visibleDtos);\n\n return this.updateZichtbaarheidBuitenWindow(ritdelen, visibleDtos);\n }\n\n private updateZichtbaarheidBuitenWindow(nieuweRitdelen, visibleDtos: ISignaleringsbeeldInfoDto[]): Ritdeel[] {\n\n for (let i = 0; i < nieuweRitdelen.length; i++) {\n const rd = nieuweRitdelen[i];\n\n if (!rd.isZichtbaar() && this.bevatGevisualiseerdePplg(visibleDtos, rd.getPplg())) {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0 && this.isEersteLaatstePuicZichtbaar(rd.getTopologieElementen())) {\n nieuweRitdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ZICHTBAAR, true) :\n rd.copyMetZichtbaarheidBuitenPaginatie(true);\n }\n }\n }\n return nieuweRitdelen;\n }\n\n private updateZichtbaarheidAangrezendeRitdelen(min, max, nieuweRitdelen, visibleDtos: ISignaleringsbeeldInfoDto[]): void {\n let i = min - 1;\n while (i >= 0) {\n i = this.updateZichtbaarHeid(i, 0, visibleDtos, nieuweRitdelen) - 1;\n }\n\n i = max + 1;\n while (i < nieuweRitdelen.length) {\n i = this.updateZichtbaarHeid(i, nieuweRitdelen.length, visibleDtos, nieuweRitdelen) + 1;\n }\n }\n\n private updateZichtbaarHeid(i: number, end: number, visibleDtos: ISignaleringsbeeldInfoDto[], nieuweRitdelen: Ritdeel[]): number {\n const rd = nieuweRitdelen[i];\n if (this.bevatGevisualiseerdePplg(visibleDtos, rd.getPplg())) {\n i = this.updateZichtbaarheidAangrenzendeRitdeel(rd, nieuweRitdelen, i, end);\n } else {\n i = end;\n }\n return i;\n }\n\n private isEersteLaatstePuicZichtbaar(topoElementen: TopologyElement[]): boolean {\n return !!document.getElementById('p' + topoElementen[0].getPuic()) ||\n !!document.getElementById('p' + topoElementen[topoElementen.length - 1].getPuic());\n }\n\n private updateZichtbaarheidAangrenzendeRitdeel(rd: Ritdeel, nieuweRitdelen: Ritdeel[], i: number, end: number): any {\n rd.bepaalTopologieElementen(this.signaleringsBeeldManagerService);\n if (rd.getTopologieElementen().length > 0 && this.isEersteLaatstePuicZichtbaar(rd.getTopologieElementen())) {\n nieuweRitdelen[i] = rd.isNietBeschikbaar() ? rd.copyMetZichtbaarheid(RitdeelZichtbaarheid.ZICHTBAAR) : rd;\n\n } else {\n return end;\n }\n return i;\n }\n\n private bevatGevisualiseerdePplg(visibleDtos: ISignaleringsbeeldInfoDto[], pplg: string): boolean {\n for (const dto of visibleDtos) {\n for (const dtopplg of dto.pplgs) {\n if (dtopplg === pplg) {\n return true;\n }\n }\n }\n return false;\n }\n\n private maakOnzichtbaar(rd): Ritdeel {\n return rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n\n private bepaalZichtbaarheidRechts(idx: number, items: Ritdeel[], paginationSize: number, dtos: ISignaleringsbeeldInfoDto[]): void {\n const pplgsWindow = [];\n const dtosWindow = [];\n for (let i = 0; i < items.length; i++) {\n const rd = items[i];\n if (i >= idx && this.valtBinnenPaginatieWindow(pplgsWindow, paginationSize, dtosWindow)) {\n this.setZichtbaar(rd, pplgsWindow, dtos, dtosWindow, items, i);\n } else {\n items[i] = rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n }\n }\n\n private bepaalZichtbaarheidLinks(idx: number, items: Ritdeel[], paginationSize: number, dtos: ISignaleringsbeeldInfoDto[]): void {\n const pplgsWindow = [];\n const dtosWindow = [];\n for (let i = items.length - 1; i >= 0; i--) {\n const rd = items[i];\n if (i <= idx && this.valtBinnenPaginatieWindow(pplgsWindow, paginationSize, dtosWindow)) {\n this.setZichtbaar(rd, pplgsWindow, dtos, dtosWindow, items, i);\n } else {\n items[i] = rd.isZichtbaar() || rd.isOnzichtbaarDoorGebruiker() ?\n rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n }\n }\n\n private valtBinnenPaginatieWindow(pplgsWindow, paginationSize: number, dtosWindow): boolean {\n return pplgsWindow.length < paginationSize || dtosWindow.length < paginationSize;\n }\n\n private setZichtbaar(rd, pplgsWindow, dtos: ISignaleringsbeeldInfoDto[], dtosWindow, items: Ritdeel[], i: number): void {\n const itemPplg = rd.getPplg();\n if (!pplgsWindow.includes(itemPplg)) {\n pplgsWindow.push(itemPplg);\n }\n\n const pplgDtos = [];\n dtos.filter(dto => dto.pplgs.includes(itemPplg)).forEach(dto => {\n if (!pplgDtos.includes(dto)) {\n pplgDtos.push(dto);\n }\n });\n\n pplgDtos.filter(d => !dtosWindow.includes(d)).forEach(d => dtosWindow.push(d));\n\n items[i] = !rd.isZichtbaar() ? rd.copyMetZichtbaarheidEnPaginatie(RitdeelZichtbaarheid.ZICHTBAAR, false) :\n rd.copyMetZichtbaarheidBuitenPaginatie(false);\n }\n\n private bepaalStartIndex(ritDelen: Ritdeel[]): number {\n for (let i = 0; i < ritDelen.length; i++) {\n if (ritDelen[i].isBinnenWindow()) {\n return i;\n }\n }\n return -1;\n }\n\n private bepaalEndIndex(ritDelen: Ritdeel[]): number {\n for (let i = ritDelen.length - 1; i >= 0; i--) {\n if (ritDelen[i].isBinnenWindow()) {\n return i;\n }\n }\n return -1;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { from } from 'rxjs';\nimport { map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { Beweging } from '../../optimo';\nimport { BewegingVerrijkerService } from '../../services/beweging-verrijker.service';\nimport { KeurAlleActiesGoed, UpdateRit } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class RitGoedkeurenEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private bewegingVerrijker: BewegingVerrijkerService) {\n }\n\n keurAllesGoed$ = createEffect(() => this.actions$.pipe(\n ofType(KeurAlleActiesGoed),\n withLatestFrom(this.store),\n switchMap(([action, _store]) =>\n from(this.bewegingVerrijker.getBewegingen(action.bewegingen, action.ongeplandeActies)),\n ),\n map((bewegingen: Beweging[]) => UpdateRit(bewegingen))\n ));\n}\n","import { Injectable } from '@angular/core';\nimport { domein, JsJavaUtil } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { RijwegplanRijwegDwangCombinatie } from '../../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../../model/ritdeel';\nimport { EditorService } from '../../services/editor.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\nimport { MstEditorState } from '../mst-editor-state';\nimport VrijebaanRijwegplan = domein.VrijebaanRijwegplan;\n\n@Injectable()\nexport class RitdelenEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private rijwegPlanEditorService: EditorService) {\n }\n\n updateRitDelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.updateRitDelen),\n withLatestFrom(this.store),\n map(([actie, _storeState]) => {\n const nieuweRitDelen = actie.ritDelen.map(ritDeel => ritDeel.isZichtbaar() ?\n ritDeel.copyMetAlternatieveRoutes(this.sbmService.bepaalAlternativeRoutes(ritDeel.getRijweg())) : ritDeel);\n return RitdelenActions.setRitdelenAfterUpdate(nieuweRitDelen);\n }))\n );\n\n setAlternatieveRitDelen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.setAlternatieveRitDelen),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const alternatieveRitDeel = actie.alternatieveRitDeel;\n const ritDelen = storeState.ritDelen;\n const orgRitdeel = alternatieveRitDeel.ritDeel;\n let newRitDeel = orgRitdeel.copyMetDwang(alternatieveRitDeel.alternatieveRoute.getDwang());\n const alterRoutes = this.sbmService.bepaalAlternativeRoutes(alternatieveRitDeel.ritDeel.getRijweg());\n newRitDeel = newRitDeel.copyMetAlternatieveRoutesZonderActies(alterRoutes);\n newRitDeel.bepaalTopologieElementen(this.sbmService);\n this.vervangRitdeel(ritDelen, orgRitdeel, newRitDeel);\n\n return RitdelenActions.setRitdelenAfterUpdate(ritDelen);\n }))\n );\n\n ritdeelInvoegen$ = createEffect(() => this.actions$.pipe(\n ofType(RitdelenActions.ritdeelInvoegen),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const ritDelen = this.ritdeelInvoegenFunc(storeState.ritDelen, actie.nieuweRoute, this.rijwegPlanEditorService, this.sbmService);\n return RitdelenActions.setRitdelenAfterUpdate(ritDelen);\n }))\n );\n\n private ritdeelInvoegenFunc(ritDelen: Ritdeel[], nieuweRoute, rijwegPlanEditorService, sbmService): Ritdeel[] {\n const origineelRitdeel = nieuweRoute.beginSeinOpRitdeel.ritdeel;\n const beginSein = nieuweRoute.beginSeinOpRitdeel.sein;\n const rijwegplan = rijwegPlanEditorService.getRijwegplan(beginSein.getPPLG());\n const dwangen: domein.Dwang[] = JsJavaUtil.listToArray(rijwegplan.getOnderliggendeDwangenTotEnVanSein(origineelRitdeel.getDwang(), beginSein));\n const isSamengesteldeRoute = dwangen[0] && dwangen[1];\n\n let newRitdeel1 = origineelRitdeel;\n\n if (isSamengesteldeRoute) {\n newRitdeel1 = this.verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen);\n }\n\n if (nieuweRoute.combinatieVoorEindsein.isVrijeBaanRijweg()) {\n this.extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService);\n } else {\n this.maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen);\n }\n\n if (isSamengesteldeRoute) {\n ritDelen.splice(ritDelen.indexOf(origineelRitdeel), 1);\n }\n\n return [...ritDelen];\n }\n\n\n private vervangRitdeel(ritdelen: Ritdeel[], orgRitdeel: Ritdeel, newRitdeel: Ritdeel): void {\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i] === orgRitdeel) {\n ritdelen[i] = newRitdeel;\n break;\n }\n }\n }\n\n private verwerkSamengesteldeRoute(origineelRitdeel, rijwegplan, dwangen, sbmService, ritDelen): Ritdeel {\n // dwangen in 2 nieuwe ritdelen verwerken voor de knip\n const nieuweRijweg1 =\n rijwegplan.getRijwegVoorSeinen(dwangen[0].getRoute().getBeginSein(), dwangen[0].getRoute().getEindSein());\n const dwangInfo1 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg1, dwangen[0]);\n const newRitdeel1 = new Ritdeel(dwangInfo1, [], null, null, null, []);\n\n // remove vrijbaan info uit ritdeel\n newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = null;\n newRitdeel1.vervolgSpoor = null;\n\n newRitdeel1.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, origineelRitdeel, newRitdeel1);\n\n const nieuweRijweg2 =\n rijwegplan.getRijwegVoorSeinen(dwangen[1].getRoute().getBeginSein(), dwangen[1].getRoute().getEindSein());\n const dwangInfo2 = new RijwegplanRijwegDwangCombinatie(rijwegplan, nieuweRijweg2, dwangen[1]);\n const newRitdeel2 = new Ritdeel(dwangInfo2, [], null, null, null, []);\n\n newRitdeel2.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel2);\n\n return newRitdeel1;\n }\n\n private extendRitdeelMetVrijebaanInfo(newRitdeel1, nieuweRoute, sbmService): void {\n newRitdeel1.vrijebaanRijwegplanRijwegDwangCombi = nieuweRoute.combinatieVoorEindsein;\n\n const vbrwp = <VrijebaanRijwegplan>nieuweRoute.combinatieVoorEindsein.rijwegplan;\n newRitdeel1.vervolgSpoor = vbrwp.getVervolgSpoor(nieuweRoute.combinatieVoorEindsein.rijweg);\n\n newRitdeel1.bepaalTopologieElementen(sbmService);\n }\n\n private maakNieuwRitdeel(newRitdeel1, nieuweRoute, sbmService, ritDelen): void {\n let newRitdeel = this.createRitdeel(nieuweRoute);\n const altRoutes = sbmService.bepaalAlternativeRoutes(newRitdeel.getRijweg());\n newRitdeel = newRitdeel.copyMetAlternatieveRoutes(altRoutes);\n newRitdeel.bepaalTopologieElementen(sbmService);\n this.insertRitdeel(ritDelen, newRitdeel1, newRitdeel);\n }\n\n createRitdeel(nieuweRoute): Ritdeel {\n return new Ritdeel(nieuweRoute.combinatieVoorEindsein, [], null, null, null, []);\n }\n\n private insertRitdeel(ritdelen: Ritdeel[], naRitdeelPositie: Ritdeel, newRitdeel: Ritdeel): void {\n const idx = ritdelen.indexOf(naRitdeelPositie);\n ritdelen.splice(idx + 1, 0, newRitdeel);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { SignaleringsbeeldSvgUtilityService } from '@loxia/rijwegen';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map } from 'rxjs/operators';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport * as MstActions from '../actions/actions';\nimport { SetConnectorenClickableIds } from '../actions/actions';\nimport { MstEditorState } from '../mst-editor-state';\n\n@Injectable()\nexport class SvgViewEffect {\n\n constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private signaleringsBeeldManagerService: SignaleringsBeeldManagerService,\n private sbSvgUtilService: SignaleringsbeeldSvgUtilityService) {\n }\n\n updateSvgView$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.SetSvgInfos),\n map((_actie) => {\n setTimeout(() => {\n this.sbSvgUtilService.addSvgDefs();\n\n const wisselEnStoringskaderPuicMap = new Map<string, string>();\n this.signaleringsBeeldManagerService.getAlleSoortenWissels()\n .forEach(wissel => wisselEnStoringskaderPuicMap.set(wissel.getPuic(), wissel.getStoringSymboolPuic()));\n this.sbSvgUtilService.zetClassOpStoringSymbolenMetMap(wisselEnStoringskaderPuicMap);\n this.sbSvgUtilService.zetClassOpSpoornummers(this.signaleringsBeeldManagerService.getPuicsVoorSpoornummers());\n\n this.sbSvgUtilService.maakOngewensteElementenOnzichtbaar();\n this.sbSvgUtilService.zetClassOpLangeText();\n\n this.sbSvgUtilService.maakOngewensteSeindelenOnzichtbaar(this.signaleringsBeeldManagerService.getSeinen());\n this.sbSvgUtilService.maakSignaleringsElementenOnzichtbaar(this.signaleringsBeeldManagerService.getSignaleringsElementen());\n\n const puicsVoorRanden = this.signaleringsBeeldManagerService.getPuicsVoorRanden();\n this.zetClassOpRanden(puicsVoorRanden);\n this.sbSvgUtilService.zetClassOpRijrichtingen(this.signaleringsBeeldManagerService.getSeinen());\n this.store.dispatch(SetConnectorenClickableIds(puicsVoorRanden));\n\n }, 0);\n })), {dispatch: false}\n );\n\n private zetClassOpRanden(puics: string[]): void {\n puics.forEach(element => {\n const rand = document.getElementById('p' + element);\n rand?.classList.add('connector');\n });\n }\n}\n","import { RijwegplanRijwegDwangCombinatie } from './rijwegplan-rijweg-dwang-combinatie';\nimport { SeinOpRitdeel } from './sein-op-ritdeel';\n\nexport class NieuweRoute {\n\n constructor(public beginSeinOpRitdeel: SeinOpRitdeel, public combinatieVoorEindsein: RijwegplanRijwegDwangCombinatie) {\n }\n\n isValid(): boolean {\n return this.combinatieVoorEindsein !== null;\n }\n}\n","import { ActionReducer, createReducer, on } from '@ngrx/store';\nimport { Ritdeel, RitdeelZichtbaarheid } from '../../model/ritdeel';\nimport * as RitdelenActions from '../actions/ritdelen.actions';\n\nconst { ZICHTBAAR, ONZICHTBAAR_DOOR_GEBRUIKER, ONZICHTBAAR_DOOR_SYSTEEM } = RitdeelZichtbaarheid;\n\nexport const ritdelenReducer: ActionReducer<Ritdeel[], RitdelenActions.RitDeelActionsUnion> = createReducer(\n [] as Ritdeel[],\n on(RitdelenActions.setRitdelenAfterUpdate, setRitDelenAfterUpdateFunc),\n on(RitdelenActions.setRitdeelZichtbaar, setRitdeelZichtbaarFunc),\n on(RitdelenActions.toggleRitdeelZichtbaar, toggleRitdeelZichtbaarFunc),\n on(RitdelenActions.setZichtbaarheidAlleRitdelen, setZichtbaarheidAlleRitdelenFunc),\n on(RitdelenActions.toggleZichtbaarheidVoorBewegingen, toggleZichtbaarheidVoorBewegingenFunc),\n on(RitdelenActions.deleteRitdeel, deleteRitdeelFunc),\n on(RitdelenActions.deleteRitdeelActie, deleteRitdeelActieFunc),\n on(RitdelenActions.addRitdeelActie, addRitdeelActieFunc)\n);\n\nfunction setRitDelenAfterUpdateFunc(_: Ritdeel[], { ritDelen }): Ritdeel[] {\n return [...ritDelen];\n}\n\nfunction setRitdeelZichtbaarFunc(ritDelen: Ritdeel[], { ritDeel, zichtbaar }): Ritdeel[] {\n const gezetRitdeel = ritDeel.copyMetZichtbaarheid(zichtbaar ? ZICHTBAAR : ONZICHTBAAR_DOOR_GEBRUIKER);\n vervangRitdeel(ritDelen, ritDeel, gezetRitdeel);\n return [...ritDelen];\n}\n\nfunction toggleRitdeelZichtbaarFunc(ritDelen: Ritdeel[], { ritDeel }): Ritdeel[] {\n const getoggeldeRitdeel = ritDeel.copyMetZichtbaarheid(ritDeel.isZichtbaar() ? ONZICHTBAAR_DOOR_GEBRUIKER : ZICHTBAAR);\n vervangRitdeel(ritDelen, ritDeel, getoggeldeRitdeel);\n return [...ritDelen];\n}\n\nfunction setZichtbaarheidAlleRitdelenFunc(ritDelen: Ritdeel[], { zichtbaarheid }): Ritdeel[] {\n ritDelen.filter(r => r.getZichtbaarheid() !== ONZICHTBAAR_DOOR_SYSTEEM).forEach(ritDeel => {\n vervangRitdeel(ritDelen, ritDeel, ritDeel.copyMetZichtbaarheid(zichtbaarheid ? ZICHTBAAR : ONZICHTBAAR_DOOR_GEBRUIKER));\n });\n return [...ritDelen];\n}\n\nfunction toggleZichtbaarheidVoorBewegingenFunc(ritDelen: Ritdeel[], { bewegingIds }): Ritdeel[] {\n ritDelen.filter(r => r.beweging && bewegingIds.includes(Number(r.getBewegingId()))).forEach(ritDeel => {\n vervangRitdeel(ritDelen, ritDeel, ritDeel.copyMetZichtbaarheid(ZICHTBAAR));\n });\n return [...ritDelen];\n}\n\nfunction vervangRitdeel(ritdelen: Ritdeel[], orgRitdeel: Ritdeel, newRitdeel: Ritdeel): void {\n for (let i = 0; i < ritdelen.length; i++) {\n if (ritdelen[i] === orgRitdeel) {\n ritdelen[i] = newRitdeel;\n break;\n }\n }\n}\n\nfunction deleteRitdeelFunc(ritDelen: Ritdeel[], { ritDeel }): Ritdeel[] {\n const idx = ritDelen.indexOf(ritDeel);\n if (idx >= 0) {\n ritDelen.splice(idx, 1);\n }\n return [...ritDelen];\n}\n\nfunction deleteRitdeelActieFunc(ritDelen: Ritdeel[], { ritDeel, actie }): Ritdeel[] {\n for (const item of ritDelen) {\n // We gebruiken equals omdat het wel of niet zichtbaar zijn van een ritdeel niet relevant is\n if (item.equals(ritDeel)) {\n const acties = ritDeel.acties;\n const aidx = acties.indexOf(actie);\n acties.splice(aidx, 1);\n break;\n }\n }\n return [...ritDelen];\n}\n\nfunction addRitdeelActieFunc(ritDelen: Ritdeel[], { ritDeel, actie }): Ritdeel[] {\n ritDeel.acties.push(actie);\n return [...ritDelen];\n}\n\n","import { SvgInfo } from '@loxia/imx-viewer';\nimport { createReducer, on } from '@ngrx/store';\nimport { ProgressIndicator } from '../atomic-components/progress-indicator/progress-indicator.entity';\nimport { NieuweRoute } from '../model/nieuwe-route';\nimport { OngeplandeActie } from '../model/ongeplande-actie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Actie, Beweging, InfraModel } from '../optimo';\nimport { AlgemeneRitInfoDto } from '../resources/mstlogging.resource';\nimport { ISignaleringsbeeldInfoDto } from '../resources/signaleringsbeeldinfo.resource';\nimport { ArrayMultimap } from '../util/multi-map';\nimport * as MstActions from './actions/actions';\nimport { ritdelenReducer } from './reducer/rit-delen.reducer';\n\nexport interface MstEditorState {\n ritDelen: Ritdeel[]; // ons model van treinpad\n\n // puics voor SelectieInfos\n ritSelectieIds: string[];\n actieOpRitSelectieIds: string[];\n gebrokenRitSelectieIds: string[];\n alternatievenSelectieIds: string[];\n beginSeinSelectieIds: string[];\n eindSeinSelectieIds: string[];\n ongeplandeActieSelectieIds: string[];\n ongeplandeActies: ArrayMultimap<string, OngeplandeActie>;\n geplandeActies: ArrayMultimap<Actie, string>;\n\n // puics voor clicks\n alternatievenClickableIds: string[];\n eindSeinenClickableIds: string[];\n connectorClickableIds: string[];\n\n // puics voor rightclicks\n beginSeinRightClickableIds: string[];\n\n nieuweRoute: NieuweRoute;\n\n signaleringsbeeldInfoDtos: ISignaleringsbeeldInfoDto[];\n visibleSbInfoDtos: ISignaleringsbeeldInfoDto[];\n algemeneRitInfoDto: AlgemeneRitInfoDto;\n iaVersie: InfraModel;\n svgInfos: SvgInfo[];\n debug: boolean;\n editable: boolean;\n ongeplandeActiesBepaald: boolean;\n progressState: ProgressState;\n nieuweBewegingen: Beweging[];\n baseUrl: string;\n focusIds: string[];\n selectedRitdeelId: number;\n}\n\ninterface ProgressState {\n progressIndicator?: ProgressIndicator;\n}\n\nconst onIdsActionHandler = (action) => on(action, (_: string[], { ids }) => ids);\nconst createIdsReducer = (action) => createReducer([] as string[], onIdsActionHandler(action));\n\nexport const editableReducer = createReducer(true, on(MstActions.setEditable, (_, { editable }) => editable));\n\nexport const progressIndicatorReducer = createReducer(\n undefined,\n on(MstActions.ShowProgress, () => ({ progressIndicator: {} })),\n on(MstActions.ClearProgress, () => undefined)\n);\n\nexport const svgInfoReducer = createReducer([] as SvgInfo[], on(MstActions.SetSvgInfos, (_, { svgInfos }) => svgInfos));\nexport const debugReducer = createReducer(false, on(MstActions.SetDebug, (_, { debug }) => debug));\nexport const ritSelectieIdsReducer = createIdsReducer(MstActions.SetRitSelectieIds);\n\nexport const actieOpRitReducer = createReducer(\n new ArrayMultimap<Actie, string>(),\n on(MstActions.SetGeplandeActies, (_, { geplandeActiesMap }) => geplandeActiesMap),\n on(MstActions.AddGeplandeActie, (geplandeActies, { actie, puics }) => {\n geplandeActies.putAll(actie, puics);\n return new ArrayMultimap(geplandeActies);\n }),\n on(MstActions.DeleteGeplandeActie, (geplandeActies, { actie }) => {\n geplandeActies.delete(actie);\n return new ArrayMultimap(geplandeActies);\n })\n);\n\nexport const actieOpRitSelectieIdsReducer = createReducer(\n [] as string[],\n onIdsActionHandler(MstActions.SetActieOpRitSelectieIds),\n on(MstActions.AddGeplandeActie, (ids: string[], { puics }) => {\n puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));\n return [...ids];\n }),\n on(MstActions.DeleteGeplandeActie, (ids: string[], { puics }) => {\n puics.filter(puic => ids.includes(puic)).forEach(puic => ids = ids.filter(p => p !== puic));\n return [...ids];\n })\n);\n\nexport const ongeplandeActieReducer = createReducer(\n new ArrayMultimap<string, OngeplandeActie>(),\n on(MstActions.SetOngeplandeActies, (_, { ongeplandeActiesMap }) => ongeplandeActiesMap),\n on(MstActions.AddOngeplandeActie, (ongeplandeActies, { ongeplandeActie }) => {\n ongeplandeActie.puics.filter(puic => !ongeplandeActies.containsEntry(puic, ongeplandeActie))\n .forEach(puic => ongeplandeActies.put(puic, ongeplandeActie));\n return new ArrayMultimap(ongeplandeActies);\n }),\n on(MstActions.DeleteOngeplandeActie, (ongeplandeActies, { ongeplandeActie }) => {\n ongeplandeActie.puics.forEach(puic => ongeplandeActies.delete(puic, ongeplandeActie));\n return new ArrayMultimap(ongeplandeActies);\n })\n);\n\nexport const ongeplandeActieSelectieIdsReducer = createReducer(\n [] as string[],\n // on(MstActions.SetOngeplandeActieSelectieIds, (_, { ids }) => ids),\n onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds),\n on(MstActions.AddOngeplandeActie, (ids: string[], { ongeplandeActie }) => {\n ongeplandeActie.puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));\n return [...ids];\n }),\n on(MstActions.DeleteOngeplandeActieSelectieId, (ids: string[], { id }) => [].concat(ids.includes(id) ? ids.filter(_id => _id !== id) : ids))\n);\n\nexport const gebrokenRitSelectieIdsReducer = createIdsReducer(MstActions.SetGebrokenRitSelectieIds);\nexport const alternatievenSelectieIdsReducer = createIdsReducer(MstActions.SetAlternatievenSelectieIds);\nexport const beginSeinSelectieIdsReducer = createIdsReducer(MstActions.SetBeginSeinSelectieIds);\nexport const eindSeinSelectieIdsReducer = createIdsReducer(MstActions.SetEindSeinSelectieIds);\nexport const alternatievenClickableIdsReducer = createIdsReducer(MstActions.SetAlternatievenClickableIds);\nexport const eindSeinenClickableIdsReducer = createIdsReducer(MstActions.SetEindSeinenClickableIds);\nexport const connectorClickableIdsReducer = createIdsReducer(MstActions.SetConnectorenClickableIds);\nexport const beginSeinRightClickableIdsReducer = createIdsReducer(MstActions.SetBeginSeinRightClickableIds);\n\nexport const nieuweRouteReducer = createReducer(\n new NieuweRoute(null, null),\n on(MstActions.SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)),\n on(MstActions.SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)),\n on(MstActions.ResetNieuweRoute, () => new NieuweRoute(null, null))\n);\n\nexport const signaleringsbeeldInfoDtosReducer = createReducer(\n [] as ISignaleringsbeeldInfoDto[],\n on(MstActions.SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos),\n on(MstActions.UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos])\n);\n\nexport const visibleSbInfoDtosReducer = createReducer(\n [] as ISignaleringsbeeldInfoDto[],\n on(MstActions.SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos),\n on(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos])\n);\n\nexport const iaVersieReducer = createReducer({},\n on(MstActions.SetIaVersie,\n (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));\nexport const algemeneRitInfoDtoReducer = createReducer(new AlgemeneRitInfoDto(), on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));\nexport const ongeplandeActiesBepaaldReducer = createReducer(false, on(MstActions.SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));\n\nexport const nieuweBewegingReducer = createReducer({ }, on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));\n\nexport const baseUrlReducer = createReducer(undefined, on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));\n\nexport const focusIdsReducer = createReducer({ }, on(MstActions.focusOpIds, (_, { puics }) => puics));\n\nexport const selectedRitdeelIdReducer = createReducer({}, on(MstActions.SetSelectedRitdeel, (_, { id }) => id));\n\nexport const storeReducers = {\n ritDelen: ritdelenReducer,\n ritSelectieIds: ritSelectieIdsReducer,\n actieOpRitSelectieIds: actieOpRitSelectieIdsReducer,\n ongeplandeActieSelectieIds: ongeplandeActieSelectieIdsReducer,\n ongeplandeActies: ongeplandeActieReducer,\n gebrokenRitSelectieIds: gebrokenRitSelectieIdsReducer,\n alternatievenSelectieIds: alternatievenSelectieIdsReducer,\n beginSeinSelectieIds: beginSeinSelectieIdsReducer,\n eindSeinSelectieIds: eindSeinSelectieIdsReducer,\n alternatievenClickableIds: alternatievenClickableIdsReducer,\n eindSeinenClickableIds: eindSeinenClickableIdsReducer,\n connectorClickableIds: connectorClickableIdsReducer,\n beginSeinRightClickableIds: beginSeinRightClickableIdsReducer,\n nieuweRoute: nieuweRouteReducer,\n geplandeActies: actieOpRitReducer,\n signaleringsbeeldInfoDtos: signaleringsbeeldInfoDtosReducer,\n visibleSbInfoDtos: visibleSbInfoDtosReducer,\n iaVersie: iaVersieReducer,\n algemeneRitInfoDto: algemeneRitInfoDtoReducer,\n svgInfos: svgInfoReducer,\n debug: debugReducer,\n editable: editableReducer,\n ongeplandeActiesBepaald: ongeplandeActiesBepaaldReducer,\n progressState: progressIndicatorReducer,\n nieuweBewegingen: nieuweBewegingReducer,\n baseUrl: baseUrlReducer,\n focusIds: focusIdsReducer,\n selectedRitdeelId: selectedRitdeelIdReducer\n};\n\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class ZoneUtil {\n private readonly zoneHandler;\n\n constructor(private readonly ngZone: NgZone) {\n\n this.zoneHandler = {\n get: (target: any, name: string): () => any => {\n const _ZoneHandler = this;\n const delegate = target[name];\n if (this.isFunction(delegate)) {\n return function(...args) {\n const that = this;\n return _ZoneHandler.ngZone.run(() => delegate.apply(that, args));\n };\n }\n return delegate;\n }\n };\n }\n\n isFunction(obj): boolean {\n return !!(obj?.constructor && obj.call && obj.apply);\n }\n\n proxy(target: any): any {\n return new Proxy(target, this.zoneHandler);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MessageComponent } from './atomic-components/message';\nimport { ImxViewerModule } from '@loxia/imx-viewer';\nimport { RijwegenModule } from '@loxia/rijwegen';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { ResourceModule } from '@ngx-resource/handler-ngx-http';\nimport { MessagesComponent } from './atomic-components/messages/messages.component';\nimport { OverlayComponent } from './atomic-components/overlay/overlay.component';\nimport { ProgressIndicatorComponent } from './atomic-components/progress-indicator/progress-indicator.component';\nimport { MstviewerComponent } from './components/mstviewer/mstviewer.component';\nimport { RitdelenLijstComponent } from './components/ritdelen-lijst/ritdelen-lijst.component';\nimport { RitdelenViewComponent } from './components/ritdelen-view/ritdelen-view.component';\nimport { RpeComponent } from './components/rpe/rpe.component';\nimport { MstLoggingResource } from './resources/mstlogging.resource';\nimport { SignaleringsbeeldInfoResource } from './resources/signaleringsbeeldinfo.resource';\nimport { BewegingUtils } from './services/beweging-utils.service';\nimport { BewegingVerrijkerService } from './services/beweging-verrijker.service';\nimport { EditorService } from './services/editor.service';\nimport { RitLezerService } from './services/rit-lezer.service';\nimport { SignaleringsBeeldManagerService } from './services/signalerings-beeld-manager.service';\nimport { BepaalOngeplandeActiesEffect } from './state/effect/bepaal-ongeplande-acties.effect';\nimport { BepaalSbInfosEffect } from './state/effect/bepaal-sb-infos.effect';\nimport { BewegingInvoegenEffect } from './state/effect/beweging-invoegen.effect';\nimport { DeleteOngeplandeActieEffect } from './state/effect/delete-ongeplande-actie.effect';\nimport { FocusEffect } from './state/effect/focus-effect';\nimport { LaadRouteFilesEffect } from './state/effect/laad-route-files.effect';\nimport { LaadSignaleringsbeeldenEffect } from './state/effect/laad-signaleringsbeelden.effect';\nimport { RitGoedkeurenEffect } from './state/effect/rit-goedkeuren.effect';\nimport { RitdelenEffect } from './state/effect/ritdelen.effect';\nimport { SvgViewEffect } from './state/effect/svg-view.effect';\nimport { storeReducers } from './state/mst-editor-state';\nimport { ActieHelper } from './util/actie-helper';\nimport { LoggingHelper } from './util/logging-helper';\nimport { ZoneUtil } from './util/zone-util';\nimport { CarouselControlsComponent } from './components/carousel-controls/carousel-controls.component';\nimport { ViewerControlsComponent } from './components/viewer-controls/viewer-controls.component';\nimport { SvgVisualisatieComponent } from './components/svg-visualisatie/svg-visualisatie.component';\n\nexport const STORE_CONFIG = {\n runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false,\n // strictStateSerializability: true, // geeft nog runtime errors, zou mooi zijn om aan te kunnen zetten\n // strictActionSerializability: true, // geeft nog runtime errors, zou mooi zijn om aan te kunnen zetten\n strictActionTypeUniqueness: false\n }\n};\n\nconst imports = [\n CommonModule,\n ImxViewerModule,\n RijwegenModule,\n ResourceModule.forRoot(),\n StoreModule.forRoot( storeReducers, STORE_CONFIG),\n EffectsModule.forRoot([\n DeleteOngeplandeActieEffect,\n LaadSignaleringsbeeldenEffect,\n LaadRouteFilesEffect,\n BepaalOngeplandeActiesEffect,\n BewegingInvoegenEffect,\n RitdelenEffect,\n RitGoedkeurenEffect,\n SvgViewEffect,\n BepaalSbInfosEffect,\n FocusEffect\n ])\n];\n\n@NgModule({\n imports,\n declarations: [\n MessageComponent,\n MstviewerComponent,\n OverlayComponent,\n ProgressIndicatorComponent,\n RpeComponent,\n RitdelenLijstComponent,\n RitdelenViewComponent,\n CarouselControlsComponent,\n ViewerControlsComponent,\n SvgVisualisatieComponent,\n MessagesComponent\n ],\n exports: [\n MstviewerComponent\n ],\n providers: [\n ZoneUtil,\n SignaleringsbeeldInfoResource,\n MstLoggingResource,\n EditorService,\n SignaleringsBeeldManagerService,\n RitLezerService,\n BewegingUtils,\n ActieHelper,\n LoggingHelper,\n BewegingVerrijkerService\n ]\n})\nexport class MstViewerModule {\n constructor(private service: EditorService, zoneUtil: ZoneUtil) {\n // maak de EditorService toegankelijk voor GWT code\n window['rpe'] = {\n EditorService: zoneUtil.proxy(service)\n };\n }\n}\n","export interface Rit {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n jaarplanId: number; // Id van het jaarplan. niet voor visualisatie\n volgnummer: number; // volgnummer van de rit binnen planmodule job. Niet voor visualisatie\n machineTypeId: number; // niet voor visualisatie\n machineTypeOmschrijving?: number; // BV UFM, UST, WOB, etc\n ritDatum?: Date;\n totaleTijd: number; // niet voor visualisatie\n omschrijving?: string; // beschrijving / naam van de rit\n wijzigStatus: string; // wordt na handmatige wijziging aangepast van 'Normaal' naar 'Gewijzigd'.\n ritStatus: string; // Concept / Definitief (e.v.t. tussen statussen n.t.b. Definitief betekent dat rit niet mag worden aangepast.\n aantalRitActies?: number; // Niet nodig voor visualisatie\n startLocatie?: string; // Startsein \"{IaGebiedType},{IaGebied},{SeinNaam},{SeinType}\"\n eindLocatie?: string; // Eindsein \"{IaGebiedType},{IaGebied},{SeinNaam},{SeinType}\"\n bewegingen: Beweging[]; // Lijst van bewegingen (routes)\n}\n\nexport interface Beweging {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n ritId: number; // Database Id van de rit. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n volgnummerBinnenRit: number; // volgnummer van beweging binnen de rit\n vanSeinType: string;\n vanSeinNaam: string;\n vanSeinPplg: string;\n vanGebiedType?: string;\n vanGebiedNaam?: string;\n naarSeinType: string;\n naarSeinNaam: string;\n naarSeinPplg: string;\n naarGebiedType?: string;\n naarGebiedNaam?: string;\n dwangNummer: number;\n vanPplg: string;\n vanSpoor: string;\n naarPplg: string;\n naarSpoor: string;\n treinNummer?: number; // Treinnummer (Donna) zodra bekend\n tijdstip?: Date; // Start tijdstip (Donna) zodra bekend\n opmerking?: string; // textuele opmerking\n wijzigStatus: string; // Wijzigstatus specifiek voor de Beweging. kan mogelijk vervangen\n ritActies: Actie[]; // Lijst van ritacties binnen deze route\n}\n\nexport interface Actie {\n id: number; // Database Id. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n bewegingId: number; // Database Id van de rit. Teruggeven wat wij sturen. Als nieuw record, instellen op 0\n volgnummerBinnenBeweging: number; // volgnummer van ritactie binnen de beweging / route\n volgnummerBinnenPlanningsRegel: number;\n ritActieTypeId: number; // Database Id van ritactieType. Overnemen van planningsregel als een nieuwe wordt toegevoegd\n ritActieTypeOmschrijving?: string; // omscrhijving van de ritActieType. Overnemen van planningsregel als een nieuwe wordt toegevoegd\n planningsRegelId?: number; // overnemen van planningsregel\n infraObjectType: string; // overnemen van planningsregel (Wissel of Spoortak)\n iaGebiedType: string; // overnemen van planningsregel\n iaGebiedNaam: number; // overnemen van planningsregel\n pplgNaam: string;\n wisselType: string; // overnemen van planningsregel\n wisselNaam: string; // overnemen van planningsregel\n wisselKantCode: string; // overnemen van planningsregel\n vanKilometerlint?: string; // overnemen van planningsregel (leeg bij Wissel)\n vanKilometrering?: number; // overnemen van planningsregel (leeg bij Wissel)\n totKilometerlint?: string; // overnemen van planningsregel (leeg bij Wissel)\n totKilometrering?: number; // overnemen van planningsregel (leeg bij Wissel)\n werkorderId: string; // overnemen van planningsregel (SAP werkorderId of bij meten bestandsnaam + regelnummer)\n infraBron: string; // overnemen van planningsregel (EquipmentId of BBK SpoortakNaam)\n opmerking: string;\n ritActieStatus: string; // Status van de ritactie. 'Gepland' als al gepland is. Anders moet het nog gepland worden.\n}\n\n// IA informatie\nexport interface InfraModel {\n versie: string;\n ingangsDatum: Date;\n}\n\n// enum WijzigSatussen {\n// 'Normaal', // Record ongewijzigd na eerste aanmaak (b.v. uit de planmodule)\n// 'Gewijzigd', // Record dat handmatig gewijzigd is na aanmaken (via b.v. visualisatie)\n// 'Toegevoegd', // Record volledig handmatig aangemaakt\n// 'Verwijderd', // Record dat verwijderd is maar gewaard wordt vanwege historie\n// 'Ongeldig', // Record dat om een of andere reden ongeldig is (b.v. infra specificatie bestaat niet)\n// }\n","/*\n * Public API Surface of mst-viewer\n */\n\nexport * from './lib/mst-viewer.module';\nexport * from './lib/components/mstviewer/mstviewer.component';\nexport * from './lib/resources/signaleringsbeeldinfo.resource';\nexport * from './lib//model/melding-event';\nexport * from './lib/optimo';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MessagesService","i3.MessageComponent","i2","i1.SignaleringsBeeldManagerService","i1.EditorService","i2.BewegingUtils","i2.SignaleringsBeeldManagerService","MstActions.focusOpIds","i2.ViewerControlService","i3.SignaleringsBeeldManagerService","i2.MstLoggingResource","i3.MessagesService","i4","i5.LoggingHelper","RitdeelViewModel","RitdelenActions.toggleRitdeelZichtbaar","RitdelenActions.setZichtbaarheidAlleRitdelen","RitdelenActions.deleteRitdeel","RitdelenActions.deleteRitdeelActie","MstActions.AddOngeplandeActie","MstActions.DeleteGeplandeActie","RitdelenActions.addRitdeelActie","MstActions.AddGeplandeActie","MstActions.DeleteOngeplandeActie","i3","i3.BewegingUtils","i5.CarouselControlsComponent","i3.ActieHelper","i4.SignaleringsBeeldManagerService","i5.EditorService","i6","MstActions.focusOpRitdeel","MstActions.bepaalSbInfos","i3.DebugService","i4.PrintBewegingService","i5","i6.OverlayComponent","i7.ProgressIndicatorComponent","i8.RpeComponent","i9.RitdelenLijstComponent","i10.RitdelenViewComponent","i11.ViewerControlsComponent","i12.SvgVisualisatieComponent","i13.MessagesComponent","i2.MessagesService","i4.MstLoggingResource","i5.MessagesService","i6.ActieHelper","i7.LoggingHelper","MstActions.laadEnVerwerkSignaleringsbeeldInfo","i3.SignaleringsbeeldInfoResource","i4.MessagesService","i5.DateService","i4.EditorService","RitdelenActions.setRitDelen","MstActions.setEditable","i3.RitLezerService","RitdelenActions.navigeer","RitdelenActions.navigeerVanaf","MstActions.SetOngeplandeActiesBepaald","MstActions.navigeerBuitenRit","MstActions.UpdateVisibleSignaleringsbeeldInfoDtos","RitdelenActions.updateRitDelen","RitdelenActions.SET_RIT_DELEN","MstActions.UpdateSignaleringsbeeldInfoDtos","MstActions.SetSvgInfos","RitdelenActions.NAVIGEER","RitdelenActions.NAVIGEER_VANAF","i5.SignaleringsbeeldInfoResource","i6.ConnectorService","i7.MessagesService","i3.BewegingVerrijkerService","RitdelenActions.setRitdelenAfterUpdate","RitdelenActions.setAlternatieveRitDelen","RitdelenActions.ritdeelInvoegen","RitdelenActions.setRitdeelZichtbaar","RitdelenActions.toggleZichtbaarheidVoorBewegingen","MstActions.ShowProgress","MstActions.ClearProgress","MstActions.SetDebug","MstActions.SetRitSelectieIds","MstActions.SetGeplandeActies","MstActions.SetActieOpRitSelectieIds","MstActions.SetOngeplandeActies","MstActions.SetOngeplandeActieSelectieIds","MstActions.DeleteOngeplandeActieSelectieId","MstActions.SetGebrokenRitSelectieIds","MstActions.SetAlternatievenSelectieIds","MstActions.SetBeginSeinSelectieIds","MstActions.SetEindSeinSelectieIds","MstActions.SetAlternatievenClickableIds","MstActions.SetEindSeinenClickableIds","MstActions.SetConnectorenClickableIds","MstActions.SetBeginSeinRightClickableIds","MstActions.SetNieuwRouteBeginSein","MstActions.SetNieuwRouteEindSein","MstActions.ResetNieuweRoute","MstActions.SetSignaleringsbeeldInfoDtos","MstActions.SetVisibleSignaleringsbeeldInfoDtos","MstActions.SetIaVersie","MstActions.SetAlgemeneRitInfo","MstActions.UpdateRit","MstActions.SetBaseUrl","MstActions.SetSelectedRitdeel","i2.ZoneUtil"],"mappings":"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"}
|