@loxia/mst-viewer 6.8.1 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loxia-mst-viewer.mjs","sources":["../../../projects/mst-viewer/src/lib/atomic-components/atomic-color-class.enum.ts","../../../projects/mst-viewer/src/lib/atomic-components/icon/icon.component.ts","../../../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/services/melding-emitter.service.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/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":["export enum COLOR_CLASS {\n DEFAULT = 'default',\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { COLOR_CLASS } from '../atomic-color-class.enum';\n\n@Component({\n selector: 'loxia-icon',\n template: `\n <div class=\"loxia-icon circle {{colorClass}}\" [ngClass]=\"{'border': border, 'inverted': inverted}\">\n <span class=\"icon\" [ngClass]=\"iconClass\"></span>\n </div>\n `,\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconComponent {\n\n @Input()\n iconClass: string;\n\n @Input()\n border = true;\n\n @Input()\n inverted = false;\n\n @Input()\n colorClass: COLOR_CLASS = COLOR_CLASS.DEFAULT;\n\n @HostBinding('class.atomic-grid-2-2')\n get getGridClass(): boolean {\n return true;\n }\n\n}\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, HostBinding, Input } from '@angular/core';\nimport { COLOR_CLASS } from '../atomic-color-class.enum';\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 @HostBinding('class')\n className = 'atomic-grid-4-4';\n\n @Input()\n iconClass: string;\n\n @Input()\n border = true;\n\n @Input()\n primary = false;\n\n @Input()\n inverted = true;\n\n @Input()\n disabled = false;\n\n @Input()\n background = true;\n\n @Input()\n upperText = 'Load';\n\n @Input()\n lowerText = '';\n\n color_class = COLOR_CLASS;\n\n}\n","<div>\n <div class=\"empty\">\n <div class=\"circle\">\n <div class=\"text\">\n <div class=\"upperText\" [ngClass]=\"{'inverted': inverted}\">{{upperText}}</div>\n <div class=\"fill\"></div>\n <div class=\"lowerText\" [ngClass]=\"{'inverted': inverted}\">{{lowerText}}</div>\n </div>\n <div class=\"center\">\n <loxia-icon [iconClass]=\"iconClass\" [border]=\"border\" [inverted]=\"inverted\"></loxia-icon>\n </div>\n </div>\n </div>\n <div class=\"Spinner\">\n <div class=\"Spinner-line Spinner-line--1\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--2\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--3\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--4\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n </div>\n</div>\n","export const version = '6.8.1';\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 { EventEmitter, Injectable } from '@angular/core';\nimport { MeldingEvent } from '../model/melding-event';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MeldingEmitterService {\n private meldingen: EventEmitter<MeldingEvent> = new EventEmitter<MeldingEvent>();\n private debug: boolean;\n\n setDebug(debug: boolean): void {\n this.debug = debug;\n }\n\n getEmitter(): EventEmitter<MeldingEvent> {\n return this.meldingen;\n }\n\n emit(m: MeldingEvent): void {\n this.meldingen.emit(m);\n }\n\n debugEmit(m: MeldingEvent): void {\n if (this.debug) {\n this.emit(m);\n }\n }\n}\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 ? 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 { 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[]): any {\n return this.editor.laadSignaleringsbeelden(iaVersie, dtos);\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 GEWIJZIGD = 'Gewijzigd';\n static TOEGEVOEGD = 'Toegevoegd';\n static NORMAAL = 'Normaal';\n private static SEIN_TYPE_FICTIEF = 'FICTIEF';\n private static SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\n\n constructor(private 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 = [];\n const bewegingenIdArray = [];\n\n ritDelen.forEach(r => {\n if (r.beweging) {\n ritDelenArray.push(r.beweging.id);\n }\n });\n origineleBewegingen.forEach(b => {\n bewegingenIdArray.push(b.id);\n });\n\n ritDelenArray.sort();\n bewegingenIdArray.sort();\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, string>): 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, string> {\n const bewegingMap = new ArrayMultimap<number, string>();\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[]): string[] {\n const actieIds = [];\n acties.forEach(ra => actieIds.push(ra.id));\n actieIds.sort();\n return actieIds;\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 const beweging: Beweging = {\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 return beweging;\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 subscriptions = new Subscription();\n\n private valideRit$ = new BehaviorSubject(false);\n private 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 store: Store<MstEditorState>,\n private bewegingUtils: BewegingUtils) {\n this.subscriptions.add(combineLatest([ // todo refactor\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 { MeldingEmitterService } from './melding-emitter.service';\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 meldingEmitterService: MeldingEmitterService,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n setDebugFlag(debug: boolean): void {\n this.meldingEmitterService.setDebug(debug);\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 console.log('Code geladen van: ' + script.src);\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';\nimport { Beweging } from '../optimo';\nimport Utils from '../util/utils';\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 rwpDataNietGevonden(err: string): MeldingEvent {\n return new MeldingEvent('Error bij ophalen van rijwegplan data:' + err, 'error');\n }\n\n public static rijwegNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(\n `Rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } + naarSpoor ${ beweging.naarSpoor } niet gevonden`,\n MELDING_LEVEL_ERROR);\n }\n\n public static rijwegplanNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(`Rijwegplan van PPLG ${ beweging.vanPplg } niet gevonden`, MELDING_LEVEL_ERROR);\n }\n\n public static dwangNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(\n `Dwang ${ beweging.dwangNummer } voor rijweg van ${ beweging.vanSpoor } `\n + `in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`, MELDING_LEVEL_ERROR);\n\n }\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 vstActieMetKantcodeVoor(): MeldingEvent {\n return new MeldingEvent('VST actie ontvangen met kantcode \\'V\\'', MELDING_LEVEL_ERROR);\n }\n\n static wisselNietGevondenInSbModel(wisselNaam: string, pplg: string): MeldingEvent {\n return new MeldingEvent(`Wissel met naam '${ wisselNaam }' en pplg '${ pplg }' niet gevonden.' `, MELDING_LEVEL_ERROR);\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 public static nietGevondenSBI(err: string): MeldingEvent {\n return new MeldingEvent('Error bij het ophalen van signaleringsbeeldinfo: ' + Utils.getValidErorrMessage(err), MELDING_LEVEL_ERROR);\n }\n\n public static ritFileAlGewijzigdError(beweging: Beweging): MeldingEvent {\n return new MeldingEvent('Rit bevat een beweging met status \\'Gewijzigd\\': Beweging met ID:' + beweging.id, MELDING_LEVEL_ERROR);\n }\n\n public static meerDan12BladenGevonden(bladAmount: number): MeldingEvent {\n return new MeldingEvent('Rit bevat ' + bladAmount + ' bladen. Er worden maximaal 12 bladen ondersteund.', MELDING_LEVEL_WARNING);\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 { 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 { MeldingEmitterService } from '../services/melding-emitter.service';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { ArrayMultimap } from './multi-map';\nimport { LoggingHelper } from './logging-helper';\nimport { MeldingBuilder } from './melding-builder';\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 kmLint: string, private 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 HALF_ENGELS_WISSEL = 'HalveEngelseWissel';\n static ENGELS_WISSEL = 'EngelseWissel';\n static 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 sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private meldingen: MeldingEmitterService,\n private store: Store<MstEditorState>,\n private loggingHelper: LoggingHelper) {\n this.store.select('debug').subscribe(debug => this.debug = debug);\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 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 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 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.debugMeldingActiesZonderElementen(actieZonderElementen);\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 debugMeldingActiesZonderElementen(actieZonderElementen: number[]): void {\n if (actieZonderElementen.length > 0) {\n this.meldingen.debugEmit(MeldingBuilder.actieHighlightError(actieZonderElementen));\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// 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 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 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 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 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 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 this.meldingen.debugEmit(MeldingBuilder.wisselNietGevondenInSbModel(wisselNaam, pplgNaam));\n return [];\n }\n const kantElement = this.bepaalKantElement(kantcode, wissel);\n if (!kantElement) {\n this.meldingen.debugEmit(MeldingBuilder.vstActieMetKantcodeVoor());\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 static isHeelOfHalfEngelsWisselActie(actie: Actie): boolean {\n return actie.infraObjectType === this.HALF_ENGELS_WISSEL || actie.infraObjectType === this.ENGELS_WISSEL;\n }\n\n private static isEngelseWissel(actie: Actie): boolean {\n return actie.wisselNaam.includes('|') && actie.wisselKantCode.length === 2;\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 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 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\n this.meldingen.emit(melding);\n this.mstLogResource.logErrorMessages([this.loggingHelper.maakLogDTO(melding, actie)]);\n }\n return storingsSymboolPuic ? [storingsSymboolPuic] : [];\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\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 ritdelen: Ritdeel[];\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 NG_ACTIE_PREFIX = '* ';\n private subscriptions: Subscription[] = [];\n\n constructor(private store: Store<MstEditorState>, private sbmService: SignaleringsBeeldManagerService) {\n this.subscriptions.push(store.select('ritDelen').subscribe(ritdelen => this.ritdelen = ritdelen));\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(ritdeelId => this.deselectRitdeel()\n ));\n\n this.subscriptions.push(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.ritdelen.flatMap(rd => rd.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","<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 ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(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]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</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(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.ritdelen.length) {\n this.selectRitdeel(this.selectedRitdeelIndex + 1);\n }\n }\n\n ritdelen: Ritdeel[] = [];\n selectedRitdeelIndex = -1;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private 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(index: number): string {\n const ritdeel = this.ritdelen[index];\n if (this.selectedRitdeelIndex !== -1 && this.selectedRitdeelIndex === index) {\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.ritdelen[this.selectedRitdeelIndex], false));\n }\n this.selectedRitdeelIndex = index;\n const ritdeel = this.ritdelen[index];\n this.focusEmitter.emit(ritdeel);\n this.store.dispatch(setRitdeelZichtbaar(ritdeel, true));\n }\n\n private handleRitDelenUpdate(ritdelen: Ritdeel[]): void {\n this.ritdelen = ritdelen;\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.ritdelen.length > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex);\n }\n }\n });\n }\n\n private ritdelenBeschikbaarMaarZonderSelectie(): boolean {\n return this.ritdelen.length > 0 && this.selectedRitdeelIndex < 0;\n }\n\n private meerdereRitDelenZichtbaar(): boolean {\n let count = 0;\n for (const ritdeel of this.ritdelen) {\n if (ritdeel.isNietBeschikbaar()) {\n continue;\n }\n if (ritdeel.isZichtbaar()) {\n count++;\n if (count > 1) {\n return true;\n }\n }\n }\n return false;\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 ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(i) }}\" 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)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel(i)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-vanSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeel.getVanSeinName()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeel.getNaarSeinName()}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel(i)\">{{ritdeel.getTreinNummer()}}</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.css']\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 && event.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize, this.iaversieinfo));\n }\n\n navigeerNaarRechts(event: MouseEvent): void {\n this.store.dispatch(navigeer(event && 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.css']\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);\n const treinNummerActieInfosOngepland = puicNaarOngeplandeActieMap.get(puic);\n const showTreinNummer = treinNummerActieInfosGepland.some(i => !!i.treinNummer)\n || treinNummerActieInfosOngepland.some(i => !!i.treinNummer);\n treinNummerActieInfosGepland.sort(this.sortTreinNummerActieInfo())\n .forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-gepland', showTreinNummer));\n treinNummerActieInfosOngepland.sort(this.sortTreinNummerActieInfo())\n .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.css']\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 = () => {\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 { MeldingEmitterService } from '../../services/melding-emitter.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() meldingen = this.meldingEmitterService.getEmitter();\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 private meldingEmitterService: MeldingEmitterService,\n public viewerControlsService: ViewerControlService,\n private debugService: DebugService,\n private printBewegingService: PrintBewegingService) {\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-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\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 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 && 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 { MeldingEvent } from '../model/melding-event';\nimport { RijwegplanRijwegDwangCombinatie } from '../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Beweging, Rit } from '../optimo';\nimport { MeldingBuilder } from '../util/melding-builder';\nimport { EditorService } from './editor.service';\nimport { MeldingEmitterService } from './melding-emitter.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, private meldingEmitterService: MeldingEmitterService) {\n }\n\n public parseRit(rit: Rit, ritGewijzigdToegestaan: boolean): Ritdeel[] {\n const ritDelen = [];\n const meldingEvents: MeldingEvent[] = [];\n RitLezerService.controleerRitBestand(rit, meldingEvents, ritGewijzigdToegestaan);\n if (meldingEvents.length === 0) {\n rit.bewegingen.forEach(beweging => this.parseBeweging(beweging, ritDelen, meldingEvents));\n }\n meldingEvents.forEach(m => this.meldingEmitterService.emit(m));\n return ritDelen;\n }\n\n private parseBeweging(beweging: Beweging, ritDelen: any[], meldingEvents: MeldingEvent[]): void {\n const rijwegPlan = this.getRijwegPlan(beweging.vanPplg);\n if (!rijwegPlan) {\n meldingEvents.push(MeldingBuilder.rijwegplanNietGevonden(beweging));\n return;\n }\n\n const rijweg = RitLezerService.getRijweg(rijwegPlan, beweging.vanSpoor, beweging.naarSpoor);\n if (!rijweg) {\n meldingEvents.push(MeldingBuilder.rijwegNietGevonden(beweging));\n return;\n }\n\n const dwang = RitLezerService.getDwang(rijweg, beweging.dwangNummer);\n if (!dwang) {\n meldingEvents.push(MeldingBuilder.dwangNietGevonden(beweging));\n return;\n }\n\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 const dwangInfo = new RijwegplanRijwegDwangCombinatie(rijwegPlan, rijweg, dwang);\n ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));\n }\n\n private getRijwegPlan(pplg: string): domein.Rijwegplan {\n return this.rijwegPlanEditorService.getRijwegplan(pplg);\n }\n\n private static getDwang(rijweg: domein.Rijweg, dwangNummer: number): domein.Dwang {\n return rijweg.getDwangVoorDwangNummer(RitLezerService.converteerDwangNummer(dwangNummer));\n }\n\n private static getRijweg(rijwegPlan: domein.Rijwegplan, vanSpoor: string, naarSpoor: string): domein.Rijweg {\n const vanPrlSpoor = RitLezerService.verwijderExtendedInformatie(vanSpoor);\n const naarPrlSpoor = RitLezerService.verwijderExtendedInformatie(naarSpoor);\n return rijwegPlan.getRijweg(vanPrlSpoor, naarPrlSpoor);\n }\n\n private static controleerRitBestand(rit: Rit, meldingEvents: MeldingEvent[], ritGewijzigdToegestaan: boolean): void {\n for (const beweging of rit.bewegingen) {\n if (RitLezerService.isGewijzigd(beweging) && !ritGewijzigdToegestaan) {\n meldingEvents.push(MeldingBuilder.ritFileAlGewijzigdError(beweging));\n }\n }\n }\n\n private static verwijderExtendedInformatie(spoor: string): string {\n return spoor.split('_')[0];\n }\n\n private static converteerDwangNummer(dwangNummer: number): number {\n return (dwangNummer === -1) ? 0 : dwangNummer;\n }\n\n private static 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 { MeldingEvent } from '../../model/melding-event';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { MstLoggingDto, MstLoggingResource } from '../../resources/mstlogging.resource';\nimport { MeldingEmitterService } from '../../services/melding-emitter.service';\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 { 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 constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private meldingService: MeldingEmitterService,\n private actieHelper: ActieHelper,\n private loggingHelper: LoggingHelper\n ) {\n }\n\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.meldingService.debugEmit(MeldingBuilder.actieHighlightError([actie.id]));\n }\n }\n }\n });\n if (nietGevondenTakken.length > 0) {\n this.meldingService.debugEmit(MeldingBuilder.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 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 { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { MeldingEvent } from '../../model/melding-event';\nimport { Actie, Rit } from '../../optimo';\nimport { SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { MeldingEmitterService } from '../../services/melding-emitter.service';\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 constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly sbiResource: SignaleringsbeeldInfoResource,\n private readonly meldingEmitter: MeldingEmitterService,\n private readonly dateService: DateService) {\n }\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 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.meldingEmitter.emit(new MeldingEvent(Utils.getValidErorrMessage(err), 'info'));\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 { 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 { MeldingEmitterService } from '../../services/melding-emitter.service';\nimport { RitLezerService } from '../../services/rit-lezer.service';\nimport { MeldingBuilder } from '../../util/melding-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 constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private ritLezer: RitLezerService,\n private editorService: EditorService,\n private meldingEmitterService: MeldingEmitterService) {\n }\n\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(SetSignaleringsbeeldInfoDtos),\n map(action => this.laadRouteFiles(action))), { dispatch: false }\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 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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n });\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 { map, take, withLatestFrom } from 'rxjs/operators';\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 { MeldingEmitterService } from '../../services/melding-emitter.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { MeldingBuilder } from '../../util/melding-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\n@Injectable()\nexport class LaadSignaleringsbeeldenEffect {\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 meldingEmitterService: MeldingEmitterService,\n private sbiResource: SignaleringsbeeldInfoResource,\n private connectorService: ConnectorService) {\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 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 // TODO stapsize van 1 werkt nu niet, er wordt alleen naar paginatiesize gekeken vanaf de laatste zichtbare ritdeel.\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 const promise = this.editorService.laadSignaleringsbeelden(actie.iaversieinfo.versie, loadingDtos);\n promise.then(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n }\n\n laadEnVerwerkSignaleringsbeeldInfo$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.laadEnVerwerkSignaleringsbeeldInfo),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const obs = this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(actie.pplgs, storeState.iaVersie));\n obs.pipe(take(1)).subscribe(res => {\n const dtos: ISignaleringsbeeldInfoDto[] = res;\n if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {\n this.meldingEmitterService.emit(MeldingBuilder.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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.nietGevondenSBI(err));\n });\n })), { dispatch: false }\n );\n\n navigeerBuitenRit$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.navigeerBuitenRit),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const rand = this.signaleringsBeeldManagerService.getTopologyElementByPuic(actie.randPuic);\n this.connectorService.getOtherRand(actie.randPuic).subscribe(otherPplg => {\n const obs = this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie));\n this.editorService.laadRouteFiles(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]);\n obs.pipe(take(1)).subscribe(res => {\n const promise = this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, res);\n promise.then(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\n const nieuweRitdelen = this.updateRitdelen(storeState.ritDelen, res);\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(res));\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n });\n\n });\n });\n\n })), { dispatch: false }\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: { paginationSize: number; stapSize: number; type: string; ritdeel }, 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[]): any {\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, nieuweRitdelen, i, end): 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 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 { 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 zoneHandler;\n\n constructor(private 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 && 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 { 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 { IconComponent } from './atomic-components/icon/icon.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 IconComponent,\n MstviewerComponent,\n OverlayComponent,\n ProgressIndicatorComponent,\n RpeComponent,\n RitdelenLijstComponent,\n RitdelenViewComponent,\n CarouselControlsComponent,\n ViewerControlsComponent,\n SvgVisualisatieComponent\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","i2.IconComponent","i1.SignaleringsBeeldManagerService","i1.EditorService","i2.BewegingUtils","i2.MeldingEmitterService","i3.SignaleringsBeeldManagerService","MstActions.focusOpIds","i2.ViewerControlService","i2.MstLoggingResource","i3.MeldingEmitterService","i4","i5.LoggingHelper","RitdelenActions.toggleRitdeelZichtbaar","RitdelenActions.setZichtbaarheidAlleRitdelen","RitdelenActions.deleteRitdeel","RitdelenActions.deleteRitdeelActie","MstActions.AddOngeplandeActie","MstActions.DeleteGeplandeActie","RitdelenActions.addRitdeelActie","MstActions.AddGeplandeActie","MstActions.DeleteOngeplandeActie","i2.SignaleringsBeeldManagerService","i3","i2","i3.BewegingUtils","i5.CarouselControlsComponent","i3.ActieHelper","i4.SignaleringsBeeldManagerService","i5.EditorService","MstActions.focusOpRitdeel","MstActions.bepaalSbInfos","i3.ViewerControlService","i4.DebugService","i5.PrintBewegingService","i7.OverlayComponent","i8.ProgressIndicatorComponent","i9.RpeComponent","i10.RitdelenLijstComponent","i11.RitdelenViewComponent","i12.ViewerControlsComponent","i13.SvgVisualisatieComponent","i4.MstLoggingResource","i5.MeldingEmitterService","i6.ActieHelper","i7.LoggingHelper","MstActions.laadEnVerwerkSignaleringsbeeldInfo","i3.SignaleringsbeeldInfoResource","i4.MeldingEmitterService","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","i6.SignaleringsbeeldInfoResource","i7.ConnectorService","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/atomic-color-class.enum.ts","../../../projects/mst-viewer/src/lib/atomic-components/icon/icon.component.ts","../../../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/services/melding-emitter.service.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/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":["export enum COLOR_CLASS {\n DEFAULT = 'default',\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { COLOR_CLASS } from '../atomic-color-class.enum';\n\n@Component({\n selector: 'loxia-icon',\n template: `\n <div class=\"loxia-icon circle {{colorClass}}\" [ngClass]=\"{'border': border, 'inverted': inverted}\">\n <span class=\"icon\" [ngClass]=\"iconClass\"></span>\n </div>\n `,\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconComponent {\n\n @Input()\n iconClass: string;\n\n @Input()\n border = true;\n\n @Input()\n inverted = false;\n\n @Input()\n colorClass: COLOR_CLASS = COLOR_CLASS.DEFAULT;\n\n @HostBinding('class.atomic-grid-2-2')\n get getGridClass(): boolean {\n return true;\n }\n\n}\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, HostBinding, Input } from '@angular/core';\nimport { COLOR_CLASS } from '../atomic-color-class.enum';\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 @HostBinding('class')\n className = 'atomic-grid-4-4';\n\n @Input()\n iconClass: string;\n\n @Input()\n border = true;\n\n @Input()\n primary = false;\n\n @Input()\n inverted = true;\n\n @Input()\n disabled = false;\n\n @Input()\n background = true;\n\n @Input()\n upperText = 'Load';\n\n @Input()\n lowerText = '';\n\n color_class = COLOR_CLASS;\n\n}\n","<div>\n <div class=\"empty\">\n <div class=\"circle\">\n <div class=\"text\">\n <div class=\"upperText\" [ngClass]=\"{'inverted': inverted}\">{{upperText}}</div>\n <div class=\"fill\"></div>\n <div class=\"lowerText\" [ngClass]=\"{'inverted': inverted}\">{{lowerText}}</div>\n </div>\n <div class=\"center\">\n <loxia-icon [iconClass]=\"iconClass\" [border]=\"border\" [inverted]=\"inverted\"></loxia-icon>\n </div>\n </div>\n </div>\n <div class=\"Spinner\">\n <div class=\"Spinner-line Spinner-line--1\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--2\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--3\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n <div class=\"Spinner-line Spinner-line--4\">\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--left\"></div>\n </div>\n <div class=\"Spinner-line-ticker\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--center\"></div>\n </div>\n <div class=\"Spinner-line-cog\">\n <div class=\"Spinner-line-cog-inner Spinner-line-cog-inner--right\"></div>\n </div>\n </div>\n </div>\n</div>\n","export const version = '6.9.0';\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 { EventEmitter, Injectable } from '@angular/core';\nimport { MeldingEvent } from '../model/melding-event';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MeldingEmitterService {\n private meldingen: EventEmitter<MeldingEvent> = new EventEmitter<MeldingEvent>();\n private debug: boolean;\n\n setDebug(debug: boolean): void {\n this.debug = debug;\n }\n\n getEmitter(): EventEmitter<MeldingEvent> {\n return this.meldingen;\n }\n\n emit(m: MeldingEvent): void {\n this.meldingen.emit(m);\n }\n\n debugEmit(m: MeldingEvent): void {\n if (this.debug) {\n this.emit(m);\n }\n }\n}\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 ? 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 { 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[]): any {\n return this.editor.laadSignaleringsbeelden(iaVersie, dtos);\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 GEWIJZIGD = 'Gewijzigd';\n static TOEGEVOEGD = 'Toegevoegd';\n static NORMAAL = 'Normaal';\n private static SEIN_TYPE_FICTIEF = 'FICTIEF';\n private static SPOOR_NAAR_VRIJEBAAN_POSTFIX = '_e';\n\n constructor(private 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 = [];\n const bewegingenIdArray = [];\n\n ritDelen.forEach(r => {\n if (r.beweging) {\n ritDelenArray.push(r.beweging.id);\n }\n });\n origineleBewegingen.forEach(b => {\n bewegingenIdArray.push(b.id);\n });\n\n ritDelenArray.sort();\n bewegingenIdArray.sort();\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, string>): 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, string> {\n const bewegingMap = new ArrayMultimap<number, string>();\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[]): string[] {\n const actieIds = [];\n acties.forEach(ra => actieIds.push(ra.id));\n actieIds.sort();\n return actieIds;\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 const beweging: Beweging = {\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 return beweging;\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 subscriptions = new Subscription();\n\n private valideRit$ = new BehaviorSubject(false);\n private 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 store: Store<MstEditorState>,\n private bewegingUtils: BewegingUtils) {\n this.subscriptions.add(combineLatest([ // todo refactor\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 { MeldingEmitterService } from './melding-emitter.service';\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 meldingEmitterService: MeldingEmitterService,\n private sbmService: SignaleringsBeeldManagerService) {\n }\n\n setDebugFlag(debug: boolean): void {\n this.meldingEmitterService.setDebug(debug);\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 console.log('Code geladen van: ' + script.src);\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';\nimport { Beweging } from '../optimo';\nimport Utils from '../util/utils';\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 rwpDataNietGevonden(err: string): MeldingEvent {\n return new MeldingEvent('Error bij ophalen van rijwegplan data:' + err, 'error');\n }\n\n public static rijwegNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(\n `Rijweg van ${ beweging.vanSpoor } in PPLG ${ beweging.vanPplg } + naarSpoor ${ beweging.naarSpoor } niet gevonden`,\n MELDING_LEVEL_ERROR);\n }\n\n public static rijwegplanNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(`Rijwegplan van PPLG ${ beweging.vanPplg } niet gevonden`, MELDING_LEVEL_ERROR);\n }\n\n public static dwangNietGevonden(beweging: Beweging): MeldingEvent {\n return new MeldingEvent(\n `Dwang ${ beweging.dwangNummer } voor rijweg van ${ beweging.vanSpoor } `\n + `in PPLG ${ beweging.vanPplg } naar ${ beweging.naarSpoor } niet gevonden`, MELDING_LEVEL_ERROR);\n\n }\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 vstActieMetKantcodeVoor(): MeldingEvent {\n return new MeldingEvent('VST actie ontvangen met kantcode \\'V\\'', MELDING_LEVEL_ERROR);\n }\n\n static wisselNietGevondenInSbModel(wisselNaam: string, pplg: string): MeldingEvent {\n return new MeldingEvent(`Wissel met naam '${ wisselNaam }' en pplg '${ pplg }' niet gevonden.' `, MELDING_LEVEL_ERROR);\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 public static nietGevondenSBI(err: string): MeldingEvent {\n return new MeldingEvent('Error bij het ophalen van signaleringsbeeldinfo: ' + Utils.getValidErorrMessage(err), MELDING_LEVEL_ERROR);\n }\n\n public static ritFileAlGewijzigdError(beweging: Beweging): MeldingEvent {\n return new MeldingEvent('Rit bevat een beweging met status \\'Gewijzigd\\': Beweging met ID:' + beweging.id, MELDING_LEVEL_ERROR);\n }\n\n public static meerDan12BladenGevonden(bladAmount: number): MeldingEvent {\n return new MeldingEvent('Rit bevat ' + bladAmount + ' bladen. Er worden maximaal 12 bladen ondersteund.', MELDING_LEVEL_WARNING);\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 { 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 { MeldingEmitterService } from '../services/melding-emitter.service';\nimport { SignaleringsBeeldManagerService } from '../services/signalerings-beeld-manager.service';\nimport { MstEditorState } from '../state/mst-editor-state';\nimport { ArrayMultimap } from './multi-map';\nimport { LoggingHelper } from './logging-helper';\nimport { MeldingBuilder } from './melding-builder';\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 kmLint: string, private 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 HALF_ENGELS_WISSEL = 'HalveEngelseWissel';\n static ENGELS_WISSEL = 'EngelseWissel';\n static 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 sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private meldingen: MeldingEmitterService,\n private store: Store<MstEditorState>,\n private loggingHelper: LoggingHelper) {\n this.store.select('debug').subscribe(debug => this.debug = debug);\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 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 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 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.debugMeldingActiesZonderElementen(actieZonderElementen);\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 debugMeldingActiesZonderElementen(actieZonderElementen: number[]): void {\n if (actieZonderElementen.length > 0) {\n this.meldingen.debugEmit(MeldingBuilder.actieHighlightError(actieZonderElementen));\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// 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 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 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 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 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 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 this.meldingen.debugEmit(MeldingBuilder.wisselNietGevondenInSbModel(wisselNaam, pplgNaam));\n return [];\n }\n const kantElement = this.bepaalKantElement(kantcode, wissel);\n if (!kantElement) {\n this.meldingen.debugEmit(MeldingBuilder.vstActieMetKantcodeVoor());\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 static isHeelOfHalfEngelsWisselActie(actie: Actie): boolean {\n return actie.infraObjectType === this.HALF_ENGELS_WISSEL || actie.infraObjectType === this.ENGELS_WISSEL;\n }\n\n private static isEngelseWissel(actie: Actie): boolean {\n return actie.wisselNaam.includes('|') && actie.wisselKantCode.length === 2;\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 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 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\n this.meldingen.emit(melding);\n this.mstLogResource.logErrorMessages([this.loggingHelper.maakLogDTO(melding, actie)]);\n }\n return storingsSymboolPuic ? [storingsSymboolPuic] : [];\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\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 ritdelen: Ritdeel[];\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 NG_ACTIE_PREFIX = '* ';\n private subscriptions: Subscription[] = [];\n\n constructor(private store: Store<MstEditorState>, private sbmService: SignaleringsBeeldManagerService) {\n this.subscriptions.push(store.select('ritDelen').subscribe(ritdelen => this.ritdelen = ritdelen));\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(ritdeelId => this.deselectRitdeel()\n ));\n\n this.subscriptions.push(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.ritdelen.flatMap(rd => rd.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","<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 ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(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]=\"isRitdeelZichtbaar(ritdeel)\"\n [title]=\"getTitle(ritdeel)\"\n (change)=\"toggleRitdeelZichtbaarheid(ritdeel)\"\n [hidden]=\"ritdeel.isNietBeschikbaar()\"/>\n </td>\n <td id=\"ritdetails-r{{i}}-gewijzigd\" (click)=\"selectRitdeel($event, ritdeel)\">{{isRitdeelNieuw(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-vanSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-pplgs\" (click)=\"selectRitdeel($event, ritdeel)\">{{getPplgString(ritdeel)}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel($event, ritdeel)\">{{getTreinNummer(ritdeel)}}</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(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.ritdelen.length) {\n this.selectRitdeel(this.selectedRitdeelIndex + 1);\n }\n }\n\n ritdelen: Ritdeel[] = [];\n selectedRitdeelIndex = -1;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private 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(index: number): string {\n const ritdeel = this.ritdelen[index];\n if (this.selectedRitdeelIndex !== -1 && this.selectedRitdeelIndex === index) {\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.ritdelen[this.selectedRitdeelIndex], false));\n }\n this.selectedRitdeelIndex = index;\n const ritdeel = this.ritdelen[index];\n this.focusEmitter.emit(ritdeel);\n this.store.dispatch(setRitdeelZichtbaar(ritdeel, true));\n }\n\n private handleRitDelenUpdate(ritdelen: Ritdeel[]): void {\n this.ritdelen = ritdelen;\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.ritdelen.length > 0) {\n this.selectRitdeel(this.selectedRitdeelIndex);\n }\n }\n });\n }\n\n private ritdelenBeschikbaarMaarZonderSelectie(): boolean {\n return this.ritdelen.length > 0 && this.selectedRitdeelIndex < 0;\n }\n\n private meerdereRitDelenZichtbaar(): boolean {\n let count = 0;\n for (const ritdeel of this.ritdelen) {\n if (ritdeel.isNietBeschikbaar()) {\n continue;\n }\n if (ritdeel.isZichtbaar()) {\n count++;\n if (count > 1) {\n return true;\n }\n }\n }\n return false;\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 ritdeel of ritdelen; let i = index\"\n class=\"{{ selectedRitdeelClass(i) }}\" 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)\">{{ritdeel.getVanPrlSpoor()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSpoor\" (click)=\"selectRitdeel(i)\">{{ritdeel.getNaarPrlSpoorText()}}</td>\n <td id=\"ritdetails-r{{i}}-dwangNummer\" (click)=\"selectRitdeel(i)\">{{ritdeel.getDwangNummer()}}</td>\n <td id=\"ritdetails-r{{i}}-vanSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeel.getVanSeinName()}}</td>\n <td id=\"ritdetails-r{{i}}-naarSeinName\" (click)=\"selectRitdeel(i)\">{{ritdeel.getNaarSeinName()}}</td>\n <td id=\"ritdetails-r{{i}}-treinNummer\" (click)=\"selectRitdeel(i)\">{{ritdeel.getTreinNummer()}}</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.css']\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 && event.ctrlKey ? -1 : -(this.paginationSize - 1), this.paginationSize, this.iaversieinfo));\n }\n\n navigeerNaarRechts(event: MouseEvent): void {\n this.store.dispatch(navigeer(event && 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.css']\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);\n const treinNummerActieInfosOngepland = puicNaarOngeplandeActieMap.get(puic);\n const showTreinNummer = treinNummerActieInfosGepland.some(i => !!i.treinNummer)\n || treinNummerActieInfosOngepland.some(i => !!i.treinNummer);\n treinNummerActieInfosGepland.sort(this.sortTreinNummerActieInfo())\n .forEach(a => content = this.vulPopoverContent(content, a, 'popovertekst-gepland', showTreinNummer));\n treinNummerActieInfosOngepland.sort(this.sortTreinNummerActieInfo())\n .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.css']\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 = () => {\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 { MeldingEmitterService } from '../../services/melding-emitter.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() meldingen = this.meldingEmitterService.getEmitter();\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 private meldingEmitterService: MeldingEmitterService,\n public viewerControlsService: ViewerControlService,\n private debugService: DebugService,\n private printBewegingService: PrintBewegingService) {\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-overlay *ngIf=\"(progressIndicator$ | async)\">\n <loxia-progress-indicator id=\"progress-indicator\" [border]=\"false\" upperText=\"\">\n </loxia-progress-indicator>\n</loxia-overlay>\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 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 && 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 { MeldingEvent } from '../model/melding-event';\nimport { RijwegplanRijwegDwangCombinatie } from '../model/rijwegplan-rijweg-dwang-combinatie';\nimport { Ritdeel } from '../model/ritdeel';\nimport { Beweging, Rit } from '../optimo';\nimport { MeldingBuilder } from '../util/melding-builder';\nimport { EditorService } from './editor.service';\nimport { MeldingEmitterService } from './melding-emitter.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, private meldingEmitterService: MeldingEmitterService) {\n }\n\n public parseRit(rit: Rit, ritGewijzigdToegestaan: boolean): Ritdeel[] {\n const ritDelen = [];\n const meldingEvents: MeldingEvent[] = [];\n RitLezerService.controleerRitBestand(rit, meldingEvents, ritGewijzigdToegestaan);\n if (meldingEvents.length === 0) {\n rit.bewegingen.forEach(beweging => this.parseBeweging(beweging, ritDelen, meldingEvents));\n }\n meldingEvents.forEach(m => this.meldingEmitterService.emit(m));\n return ritDelen;\n }\n\n private parseBeweging(beweging: Beweging, ritDelen: any[], meldingEvents: MeldingEvent[]): void {\n const rijwegPlan = this.getRijwegPlan(beweging.vanPplg);\n if (!rijwegPlan) {\n meldingEvents.push(MeldingBuilder.rijwegplanNietGevonden(beweging));\n return;\n }\n\n const rijweg = RitLezerService.getRijweg(rijwegPlan, beweging.vanSpoor, beweging.naarSpoor);\n if (!rijweg) {\n meldingEvents.push(MeldingBuilder.rijwegNietGevonden(beweging));\n return;\n }\n\n const dwang = RitLezerService.getDwang(rijweg, beweging.dwangNummer);\n if (!dwang) {\n meldingEvents.push(MeldingBuilder.dwangNietGevonden(beweging));\n return;\n }\n\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 const dwangInfo = new RijwegplanRijwegDwangCombinatie(rijwegPlan, rijweg, dwang);\n ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));\n }\n\n private getRijwegPlan(pplg: string): domein.Rijwegplan {\n return this.rijwegPlanEditorService.getRijwegplan(pplg);\n }\n\n private static getDwang(rijweg: domein.Rijweg, dwangNummer: number): domein.Dwang {\n return rijweg.getDwangVoorDwangNummer(RitLezerService.converteerDwangNummer(dwangNummer));\n }\n\n private static getRijweg(rijwegPlan: domein.Rijwegplan, vanSpoor: string, naarSpoor: string): domein.Rijweg {\n const vanPrlSpoor = RitLezerService.verwijderExtendedInformatie(vanSpoor);\n const naarPrlSpoor = RitLezerService.verwijderExtendedInformatie(naarSpoor);\n return rijwegPlan.getRijweg(vanPrlSpoor, naarPrlSpoor);\n }\n\n private static controleerRitBestand(rit: Rit, meldingEvents: MeldingEvent[], ritGewijzigdToegestaan: boolean): void {\n for (const beweging of rit.bewegingen) {\n if (RitLezerService.isGewijzigd(beweging) && !ritGewijzigdToegestaan) {\n meldingEvents.push(MeldingBuilder.ritFileAlGewijzigdError(beweging));\n }\n }\n }\n\n private static verwijderExtendedInformatie(spoor: string): string {\n return spoor.split('_')[0];\n }\n\n private static converteerDwangNummer(dwangNummer: number): number {\n return (dwangNummer === -1) ? 0 : dwangNummer;\n }\n\n private static 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 { MeldingEvent } from '../../model/melding-event';\nimport { OngeplandeActie } from '../../model/ongeplande-actie';\nimport { MstLoggingDto, MstLoggingResource } from '../../resources/mstlogging.resource';\nimport { MeldingEmitterService } from '../../services/melding-emitter.service';\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 { 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 constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private sbmService: SignaleringsBeeldManagerService,\n private mstLogResource: MstLoggingResource,\n private meldingService: MeldingEmitterService,\n private actieHelper: ActieHelper,\n private loggingHelper: LoggingHelper\n ) {\n }\n\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.meldingService.debugEmit(MeldingBuilder.actieHighlightError([actie.id]));\n }\n }\n }\n });\n if (nietGevondenTakken.length > 0) {\n this.meldingService.debugEmit(MeldingBuilder.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 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 { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { map, take } from 'rxjs/operators';\nimport { MeldingEvent } from '../../model/melding-event';\nimport { Actie, Rit } from '../../optimo';\nimport { SignaleringsbeeldInfoResource } from '../../resources/signaleringsbeeldinfo.resource';\nimport { MeldingEmitterService } from '../../services/melding-emitter.service';\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 constructor(private readonly actions$: Actions,\n private readonly store: Store<MstEditorState>,\n private readonly sbiResource: SignaleringsbeeldInfoResource,\n private readonly meldingEmitter: MeldingEmitterService,\n private readonly dateService: DateService) {\n }\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 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.meldingEmitter.emit(new MeldingEvent(Utils.getValidErorrMessage(err), 'info'));\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 { 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 { MeldingEmitterService } from '../../services/melding-emitter.service';\nimport { RitLezerService } from '../../services/rit-lezer.service';\nimport { MeldingBuilder } from '../../util/melding-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 constructor(private actions$: Actions,\n private store: Store<MstEditorState>,\n private ritLezer: RitLezerService,\n private editorService: EditorService,\n private meldingEmitterService: MeldingEmitterService) {\n }\n\n authActions$ = createEffect(() => this.actions$.pipe(\n ofType(SetSignaleringsbeeldInfoDtos),\n map(action => this.laadRouteFiles(action))), { dispatch: false }\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 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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n });\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 { map, take, withLatestFrom } from 'rxjs/operators';\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 { MeldingEmitterService } from '../../services/melding-emitter.service';\nimport { SignaleringsBeeldManagerService } from '../../services/signalerings-beeld-manager.service';\nimport { MeldingBuilder } from '../../util/melding-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\n@Injectable()\nexport class LaadSignaleringsbeeldenEffect {\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 meldingEmitterService: MeldingEmitterService,\n private sbiResource: SignaleringsbeeldInfoResource,\n private connectorService: ConnectorService) {\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 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 // TODO stapsize van 1 werkt nu niet, er wordt alleen naar paginatiesize gekeken vanaf de laatste zichtbare ritdeel.\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 const promise = this.editorService.laadSignaleringsbeelden(actie.iaversieinfo.versie, loadingDtos);\n promise.then(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.rwpDataNietGevonden(Utils.getValidErorrMessage(err)));\n });\n }\n\n laadEnVerwerkSignaleringsbeeldInfo$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.laadEnVerwerkSignaleringsbeeldInfo),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const obs = this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto(actie.pplgs, storeState.iaVersie));\n obs.pipe(take(1)).subscribe(res => {\n const dtos: ISignaleringsbeeldInfoDto[] = res;\n if (dtos && dtos.filter(dto => dto.metVisualisatie).length > 12) {\n this.meldingEmitterService.emit(MeldingBuilder.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 }, err => {\n this.meldingEmitterService.emit(MeldingBuilder.nietGevondenSBI(err));\n });\n })), { dispatch: false }\n );\n\n navigeerBuitenRit$ = createEffect(() => this.actions$.pipe(\n ofType(MstActions.navigeerBuitenRit),\n withLatestFrom(this.store),\n map(([actie, storeState]) => {\n const rand = this.signaleringsBeeldManagerService.getTopologyElementByPuic(actie.randPuic);\n this.connectorService.getOtherRand(actie.randPuic).subscribe(otherPplg => {\n const obs = this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie));\n this.editorService.laadRouteFiles(storeState.iaVersie.versie, [rand.getPPLG(), otherPplg]);\n obs.pipe(take(1)).subscribe(res => {\n const promise = this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, res);\n promise.then(svgDataUrls => {\n this.verwerkSvgs(svgDataUrls);\n const nieuweRitdelen = this.updateRitdelen(storeState.ritDelen, res);\n this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(res));\n this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));\n });\n\n });\n });\n\n })), { dispatch: false }\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: { paginationSize: number; stapSize: number; type: string; ritdeel }, 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[]): any {\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, nieuweRitdelen, i, end): 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 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 { 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 zoneHandler;\n\n constructor(private 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 && 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 { 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 { IconComponent } from './atomic-components/icon/icon.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 IconComponent,\n MstviewerComponent,\n OverlayComponent,\n ProgressIndicatorComponent,\n RpeComponent,\n RitdelenLijstComponent,\n RitdelenViewComponent,\n CarouselControlsComponent,\n ViewerControlsComponent,\n SvgVisualisatieComponent\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","i2.IconComponent","i1.SignaleringsBeeldManagerService","i1.EditorService","i2.BewegingUtils","i2.MeldingEmitterService","i3.SignaleringsBeeldManagerService","MstActions.focusOpIds","i2.ViewerControlService","i2.MstLoggingResource","i3.MeldingEmitterService","i4","i5.LoggingHelper","RitdelenActions.toggleRitdeelZichtbaar","RitdelenActions.setZichtbaarheidAlleRitdelen","RitdelenActions.deleteRitdeel","RitdelenActions.deleteRitdeelActie","MstActions.AddOngeplandeActie","MstActions.DeleteGeplandeActie","RitdelenActions.addRitdeelActie","MstActions.AddGeplandeActie","MstActions.DeleteOngeplandeActie","i2.SignaleringsBeeldManagerService","i3","i2","i3.BewegingUtils","i5.CarouselControlsComponent","i3.ActieHelper","i4.SignaleringsBeeldManagerService","i5.EditorService","MstActions.focusOpRitdeel","MstActions.bepaalSbInfos","i3.ViewerControlService","i4.DebugService","i5.PrintBewegingService","i7.OverlayComponent","i8.ProgressIndicatorComponent","i9.RpeComponent","i10.RitdelenLijstComponent","i11.RitdelenViewComponent","i12.ViewerControlsComponent","i13.SvgVisualisatieComponent","i4.MstLoggingResource","i5.MeldingEmitterService","i6.ActieHelper","i7.LoggingHelper","MstActions.laadEnVerwerkSignaleringsbeeldInfo","i3.SignaleringsbeeldInfoResource","i4.MeldingEmitterService","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","i6.SignaleringsbeeldInfoResource","i7.ConnectorService","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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"}
|