{"version":3,"file":"metromobilite-m-features-route-search.mjs","sources":["../../../projects/lib-m-features/route-search/src/pipes/leg-nsv.pipe.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-content-leg/itinerary-content-leg.component.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-content-leg/itinerary-content-leg.component.html","../../../projects/lib-m-features/route-search/src/helpers/itineraries.helper.ts","../../../projects/lib-m-features/route-search/src/pipes/itinerary-time.pipe.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-content/itinerary-content.component.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-content/itinerary-content.component.html","../../../projects/lib-m-features/route-search/src/pipes/leg-stop-name.pipe.ts","../../../projects/lib-m-features/route-search/src/route-search.model.ts","../../../projects/lib-m-features/route-search/src/route-search.data.ts","../../../projects/lib-m-features/route-search/src/route-search.token.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-details/itinerary-details.component.ts","../../../projects/lib-m-features/route-search/src/components/itinerary-details/itinerary-details.component.html","../../../projects/lib-m-features/route-search/src/flows/calculate/calculate.actions.ts","../../../projects/lib-m-features/route-search/src/helpers/modes.helper.ts","../../../projects/lib-m-features/route-search/src/helpers/params.helper.ts","../../../projects/lib-m-features/route-search/src/helpers/route-search-results.helper.ts","../../../projects/lib-m-features/route-search/src/helpers/cov.helper.ts","../../../projects/lib-m-features/route-search/src/helpers/wrapper.helper.ts","../../../projects/lib-m-features/route-search/src/flows/calculate/calculate.transitions.ts","../../../projects/lib-m-features/route-search/src/route-search.module.ts","../../../projects/lib-m-features/route-search/src/route-search.service.ts","../../../projects/lib-m-features/route-search/metromobilite-m-features-route-search.ts"],"sourcesContent":["import {Pipe, PipeTransform} from '@angular/core';\r\nimport {Disturbance} from '@metromobilite/m-features/dyn';\r\nimport {Leg} from '../route-search.model';\r\n\r\n@Pipe({\r\n\tname: 'mfLegNsv',\r\n})\r\nexport class MfRouteSearchLegNsvPipe implements PipeTransform {\r\n\r\n\ttransform(value: Leg) {\r\n\t\tif (!value.matchingDisturbances) return 1;\r\n\t\tif (value.matchingDisturbances.length === 0) return value.matchingDisturbances[0].nsv_id;\r\n\t\treturn this.getBiggestNsvId(value.matchingDisturbances);\r\n\t}\r\n\r\n\r\n\tprivate getBiggestNsvId(disturbances: Disturbance[]): number | undefined {\r\n\t\treturn disturbances.reduce<number | undefined>((maxNsvId, disturbance) => {\r\n\t\t\tif (disturbance.nsv_id != null && (maxNsvId == null || disturbance.nsv_id > maxNsvId)) {\r\n\t\t\t\treturn disturbance.nsv_id;\r\n\t\t\t}\r\n\t\t\treturn maxNsvId;\r\n\t\t}, undefined);\r\n\t}\r\n\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\r\nimport {Line, LinesService} from '@metromobilite/m-features/core';\r\nimport {Leg} from '../../route-search.model';\r\n\r\n\r\n@Component({\r\n\tselector: 'mf-itinerary-content-leg',\r\n\ttemplateUrl: './itinerary-content-leg.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfItineraryContentLegComponent {\r\n\r\n\tlabel: string;\r\n\t@Input() hasWheelChair = false;\r\n\tline: Line;\r\n\tisSmaller: boolean;\r\n\tstopsCounter: string;\r\n\r\n\tconstructor(private linesService: LinesService) {\r\n\t}\r\n\r\n\tprivate _leg: Leg;\r\n\r\n\tget leg(): Leg {\r\n\t\treturn this._leg;\r\n\t}\r\n\r\n\t@Input() set leg(leg: Leg) {\r\n\t\tthis._leg = JSON.parse(JSON.stringify(leg));\r\n\t\tconst agencyId = leg.agencyId?.split(':')[0];\r\n\t\tthis.line = this.linesService.find(`${agencyId}:${leg.routeShortName}`);\r\n\t\tif (this.line) {\r\n\t\t\tif (this.line.shortName.includes('NAV')) {\r\n\t\t\t\tlet lineRelais = this.line.shortName.substring(this.line.shortName.length - 1);\r\n\t\t\t\tthis.label = `Bus Relais ${lineRelais}`;\r\n\t\t\t} else {\r\n\t\t\t\tthis.label = this.line.shortName;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._leg.mode === \"RAIL\") {\r\n\t\t\tthis.label = 'TER';\r\n\t\t}\r\n\t\t// We check for M covoit' Lignes+ here because the MCO is not really a COV, it's a TC...\r\n\t\tif (agencyId === 'MCO') {\r\n\t\t\tthis._leg.mode = 'COV';\r\n\t\t\tthis.label = 'M covoit\\'';\r\n\t\t}\r\n\t\tif (leg.intermediateStops) {\r\n\t\t\tconst count = leg.intermediateStops.length + 1;\r\n\t\t\tthis.stopsCounter = count + (count > 1 ? ' arrêts' : ' arrêt');\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","<span class=\"leg-type\" [mfHasDisturbance]=\"{lineOrNsv: leg | mfLegNsv, activateHostBinding: false}\" #disturbance=\"mfHasDisturbance\">\r\n\t<!-- [ngClass]=\"{'has-disturbance' : leg.matchingDisturbances && leg.matchingDisturbances.length > 0} -->\r\n\t<ng-container *ngIf=\"leg.routeId; else nonTransitLeg\">\r\n\t\t<span class=\"upper-leg\">\r\n\t\t\t<span class=\"mf-itinerary\" [ngClass]=\"[disturbance.calculatedClasses]\"></span>\r\n\t\t\t<m-icons *ngIf=\"leg.mode=='WALK' && hasWheelChair; else mfIcon\">accessible</m-icons>\r\n\t\t\t<ng-template #mfIcon>\r\n\t\t\t\t<m-icons [type]=\"leg.mode\"></m-icons>\r\n\t\t\t</ng-template>\r\n\r\n\t\t\t<span *ngIf=\"line\">\r\n\t\t\t\t{{ label }}\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t</ng-container>\r\n\t<span *ngIf=\"line\" class=\"lower-leg\" [style.background-color]=\"'#'+line.color\">\r\n\t\t<span *ngIf=\"leg.agencyId !== 'MCO'\" [style.color]=\"'#'+line.textColor\">{{ stopsCounter }}</span>\r\n\t\t<span *ngIf=\"leg.agencyId === 'MCO'\" [style.color]=\"'#'+line.textColor\">~ {{ leg.duration | duration }}</span>\r\n\t</span>\r\n\r\n\t<span *ngIf=\"!line\" class=\"lower-leg\">\r\n\t\t<span>{{ leg.duration | duration }}</span>\r\n\t</span>\r\n</span>\r\n\r\n<ng-template #nonTransitLeg>\r\n\t<span class=\"upper-leg\">\r\n\t\t<m-icons *ngIf=\"leg.mode=='WALK' && hasWheelChair; else mfIcon\">accessible</m-icons>\r\n\t\t<ng-template #mfIcon>\r\n\t\t\t<m-icons [type]=\"leg.mode\"></m-icons>\r\n\t\t</ng-template>\r\n\r\n\t\t<span *ngIf=\"line\">\r\n\t\t\t{{ label }}\r\n\t\t</span>\r\n\t</span>\r\n</ng-template>\r\n","import {Injectable} from '@angular/core';\r\nimport {Itinerary} from '../route-search.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchItinerariesHelper {\r\n\r\n\tnonTransitModes = ['WALK', 'BICYCLE', 'CAR', 'COV'];\r\n\r\n\r\n\tpopWrongTime(itineraires: any[], compareTime: string, arriveBy: 'false' | 'true') {\r\n\t\treturn itineraires.filter((item) => {\r\n\t\t\tif (arriveBy === 'false') {\r\n\t\t\t\treturn this.compareTime(this.getTime(item.startTime), compareTime);\r\n\t\t\t}\r\n\t\t\treturn this.compareTime(compareTime, this.getTime(item.endTime));\r\n\t\t});\r\n\t}\r\n\r\n\tcompareTime(timeA: string, timeB: string) {\r\n\t\tconst s1 = parseInt(timeA.split(':')[0], 10) * 3600 + parseInt(timeA.split(':')[1], 10) * 60;\r\n\t\tconst s2 = parseInt(timeB.split(':')[0], 10) * 3600 + parseInt(timeB.split(':')[1], 10) * 60;\r\n\t\treturn s1 >= s2;\r\n\t}\r\n\r\n\tgetTime(timeStamp: any) {\r\n\t\treturn new Date(timeStamp).toLocaleTimeString().substr(0, 5);\r\n\t}\r\n\r\n\tcheckItineraryDoublons(itineraries: Itinerary[]): Itinerary[] {\r\n\t\treturn itineraries\r\n\t\t\t// Remove duplicates.\r\n\t\t\t.reduce((acc, i) => {\r\n\t\t\t\tconst foundDuplicate = acc.some(_i => {\r\n\t\t\t\t\tconst duplicated = this.compareIti(_i, i);\r\n\t\t\t\t\tif (duplicated && ((!_i.next && i.startTime > _i.startTime) || (_i.next && i.startTime < _i.next))) {\r\n\t\t\t\t\t\t_i.next = i.startTime;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn duplicated;\r\n\t\t\t\t});\r\n\t\t\t\tif (!foundDuplicate) {\r\n\t\t\t\t\ti.next = null;\r\n\t\t\t\t\tacc.push(i);\r\n\t\t\t\t}\r\n\t\t\t\treturn acc;\r\n\t\t\t}, []);\r\n\t}\r\n\r\n\tcompareIti(itineraireA: Itinerary, itineraireB: Itinerary) {\r\n\t\tlet index = 0;\r\n\t\tlet isEqual = true;\r\n\t\tif (itineraireA.legs.length !== itineraireB.legs.length) isEqual = false;\r\n\t\twhile (index < itineraireA.legs.length && isEqual) {\r\n\t\t\tconst legA = itineraireA.legs[index];\r\n\t\t\tconst legB = itineraireB.legs[index];\r\n\t\t\tif (\r\n\t\t\t\t(this.nonTransitModes.includes(legA.mode) && legA.mode === legB.mode &&\r\n\t\t\t\t\tlegA.legGeometry.points === legB.legGeometry.points\r\n\t\t\t\t) ||\r\n\t\t\t\t(legA.mode === legB.mode && legA.routeId === legB.routeId && legA.intermediateStops && legB.intermediateStops &&\r\n\t\t\t\t\tlegA.intermediateStops.length === legB.intermediateStops.length)\r\n\t\t\t) {\r\n\t\t\t\tindex += 1;\r\n\t\t\t} else {\r\n\t\t\t\tisEqual = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isEqual) {\r\n\t\t\tconst durationA = itineraireA.duration;\r\n\t\t\tconst durationB = itineraireB.duration;\r\n\t\t\tconst coef = (durationA * 35) / 100;\r\n\t\t\tif (coef > (60 * 15) && durationB > durationA + coef) isEqual = false;\r\n\t\t}\r\n\r\n\t\tif(isEqual) {\r\n\t\t\tconst startTimeA = itineraireA.startTime;\r\n\t\t\tconst startTimeB = itineraireB.startTime;\r\n\t\t\tisEqual = startTimeA === startTimeB;\r\n\t\t}\t\t\r\n\t\treturn isEqual;\r\n\t}\r\n\r\n\tadditionalFilters(itineraries: Itinerary[], params: any): Itinerary[] {\r\n\t\treturn itineraries.filter(itinerary => {\r\n\t\t\t// Check itinerary start time.\r\n\t\t\t// const startDate = new Date(itinerary.startTime);\r\n\t\t\t// if (startDate.toLocaleDateString('fr', { day: '2-digit' }) !== params.date.split('-')[2]) {\r\n\t\t\t// \treturn false;\r\n\t\t\t// }\r\n\t\t\t// Cov (M Covoit ligne+) specific.\r\n\t\t\tif (params.carpooling === 'true' && params.publicTransport !== 'true' && params.car !== 'true' && params.bike !== 'true') {\r\n\t\t\t\treturn itinerary.legs.some(leg => leg.mode === 'COV' || leg.agencyId === 'MCO');\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tfixLegsAgencyId(itineraries: Itinerary[]): Itinerary[] {\r\n\t\titineraries.map(itinerary => {\r\n\t\t\t// AgencyID has a specific pattern: FeedID:AgencyID\r\n\t\t\t// But in our case, we'll be ALWAYS having both identical\r\n\t\t\titinerary.legs.forEach(leg => leg.agencyId = leg.agencyId?.split(':')[0]);\r\n\t\t});\r\n\t\treturn itineraries;\r\n\t}\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'mfItineraryTime'\r\n})\r\nexport class MfRouteSearchItineraryTimePipe implements PipeTransform {\r\n\r\n\ttransform(value: number): string {\r\n\t\treturn new Date(value).toLocaleTimeString().substr(0, 5);\r\n\t}\r\n\r\n}\r\n","import {\r\n\tAfterContentInit,\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tContentChild,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tTemplateRef,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport {THEMES, UserSettingsService} from '@metromobilite/m-features/core';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {RouteSearchItinerariesHelper} from '../../helpers/itineraries.helper';\r\nimport {ItineraryWrapper} from '../../route-search.model';\r\n\r\n@Component({\r\n\tselector: 'mf-itinerary-content',\r\n\ttemplateUrl: './itinerary-content.component.html',\r\n\tstyles: [':host { display: block; width: 100%; }'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfItineraryContentComponent implements OnInit, AfterContentInit, OnDestroy {\r\n\r\n\t@Input() itinerary: ItineraryWrapper;\r\n\t@Input() hasWheelChair = false;\r\n\tdurationMode: TemplateRef<any>;\r\n\ttimeFare: TemplateRef<any>;\r\n\tcov: TemplateRef<any>;\r\n\ttransit: TemplateRef<any>;\r\n\tdefault: TemplateRef<any>;\r\n\tTHEMES = THEMES;\r\n\tcurrent: THEMES;\r\n\tunSubscriber = new Subject<void>();\r\n\tnonTransitModes: string[];\r\n\t@ViewChild('defaultDurationMode', {\r\n\t\tstatic: true,\r\n\t\tread: TemplateRef,\r\n\t}) private defaultDurationModeTemplate: TemplateRef<any>;\r\n\t@ViewChild('defaultTimeFare', {static: true, read: TemplateRef}) private defaultTimeFareTemplate: TemplateRef<any>;\r\n\t@ViewChild('defaultCov', {static: true, read: TemplateRef}) private defaultCovTemplate: TemplateRef<any>;\r\n\t@ViewChild('defaultTransit', {static: true, read: TemplateRef}) private defaultTransitTemplate: TemplateRef<any>;\r\n\t@ViewChild('_default', {static: true, read: TemplateRef}) private defaultTemplate: TemplateRef<any>;\r\n\t@ContentChild('durationMode', {read: TemplateRef}) private customDurationModeTemplate: TemplateRef<any>;\r\n\t@ContentChild('timeFare', {read: TemplateRef}) private customTimeFareTemplate: TemplateRef<any>;\r\n\t@ContentChild('cov', {read: TemplateRef}) private customCovTemplate: TemplateRef<any>;\r\n\t@ContentChild('transit', {read: TemplateRef}) private customTransitTemplate: TemplateRef<any>;\r\n\t@ContentChild('default', {read: TemplateRef}) private customDefaultTemplate: TemplateRef<any>;\r\n\r\n\tconstructor(private itinerariesHelper: RouteSearchItinerariesHelper, private userSettingsService: UserSettingsService) {\r\n\t\tthis.nonTransitModes = this.itinerariesHelper.nonTransitModes;\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\r\n\t\tthis.current = this.userSettingsService.theme;\r\n\r\n\t\tthis.userSettingsService.theme$.pipe(takeUntil(this.unSubscriber)).subscribe(theme => {\r\n\t\t\tthis.current = theme;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tthis.durationMode = this.customDurationModeTemplate || this.defaultDurationModeTemplate;\r\n\t\tthis.timeFare = this.customTimeFareTemplate || this.defaultTimeFareTemplate;\r\n\t\tthis.cov = this.customCovTemplate || this.defaultCovTemplate;\r\n\t\tthis.transit = this.customTransitTemplate || this.defaultTransitTemplate;\r\n\t\tthis.default = this.customDefaultTemplate || this.defaultTemplate;\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.unSubscriber.next();\r\n\t\tthis.unSubscriber.complete();\r\n\t}\r\n}\r\n","<ng-template #defaultDurationMode let-itinerary>\r\n\t<span class=\"m-multiline\">\r\n\t\t<span>{{ itinerary.itinerary.duration | duration }}</span>\r\n\t\t<span *ngIf=\"itinerary.modes.length < 4\">\r\n\t\t\t<span *ngIf=\"itinerary.mainMode\">\r\n\t\t\t\t<ng-container [ngSwitch]=\"itinerary.mainMode\">\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"'WALK'\">Marche</ng-container>\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"'CAR'\">Voiture</ng-container>\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"'BICYCLE'\">Vélo</ng-container>\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"'COV'\">Covoiturage</ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</span>\r\n\t\t</span>\r\n\t\t<span *ngIf=\"!nonTransitModes.includes(itinerary.mainMode) && itinerary.itinerary.next\">Prochain trajet: {{ itinerary.itinerary.next | mfItineraryTime }}</span>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultTimeFare let-itinerary>\r\n\t<span class=\"m-multiline text-align-right\">\r\n\t\t<span class=\"time\">\r\n\t\t\t{{ itinerary.itinerary.startTime | mfItineraryTime }}\r\n\t\t\t<m-icons>arrow_forward</m-icons>\r\n\t\t\t{{ itinerary.itinerary.endTime | mfItineraryTime }}\r\n\t\t</span>\r\n\t\t<!-- TODO: En attente d'un bon retour de OTP -->\r\n\t\t<!-- Affiche la tarification uniquement pour les covoiturages -->\r\n\t\t<ng-container *ngIf=\"itinerary.modes.includes('COV')\">\r\n\t\t\t<!-- Tarification -->\r\n\t\t\t<span *ngIf=\"itinerary.displayFare; else noFare\">{{ itinerary.displayFare }}</span>\r\n\t\t\t<ng-template #noFare>\r\n\t\t\t\t<span *ngIf=\"!nonTransitModes.includes(itinerary.mainMode)\">Non renseigné</span>\r\n\t\t\t</ng-template>\r\n\t\t</ng-container>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultCov let-itinerary let-durationMode=\"durationMode\" let-timeFare=\"timeFare\">\r\n\t<span class=\"layout column full-width\">\r\n\t\t<span class=\"layout align-center full-width\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"durationMode; context: {$implicit: itinerary}\"></ng-container>\r\n\t\t\t<span class=\"flex\" aria-hidden=\"true\"></span>\r\n\t\t\t<ng-container *ngTemplateOutlet=\"timeFare; context: {$implicit: itinerary}\"></ng-container>\r\n\t\t</span>\r\n\t\t<span class=\"driver-info layout align-center\" *ngFor=\"let leg of itinerary.itinerary.legs\">\r\n\t\t\t<ng-container *ngIf=\"(leg.duration > 120 || leg.mode != 'WALK') && leg.carSharing.length > 0\">\r\n\t\t\t\t<ng-container *ngIf=\"current === THEMES.DARK\">\r\n\t\t\t\t\t<img class=\"driver-picture\" mfImage [src]=\"leg.carSharing[0].journeys.driver.image\" default=\"./assets/cov_driver_fallback--dark-mode.svg\" />\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-container *ngIf=\"current === THEMES.LIGHT\">\r\n\t\t\t\t\t<img class=\"driver-picture\" mfImage [src]=\"leg.carSharing[0].journeys.driver.image\" default=\"./assets/cov_driver_fallback--light-mode.svg\" />\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<span class=\"flex\">{{ leg.carSharing[0].journeys.driver.alias }}</span>\r\n\t\t\t\t<ng-container [ngSwitch]=\"leg.carSharing[0].journeys.origin\">\r\n\t\t\t\t\t<span class=\"badge\" *ngSwitchCase=\"'movici.auvergnerhonealpes.fr'\">\r\n\t\t\t\t\t\t<img src=\"./assets/logo/movici.svg\" alt=\"Mov'ici\">\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"badge\" *ngSwitchCase=\"'movici-rhone.auvergnerhonealpes.fr'\">\r\n\t\t\t\t\t\t<img src=\"./assets/logo/movici.svg\" alt=\"Mov'ici\">\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"badge\" *ngSwitchCase=\"'www.karos.fr'\">\r\n\t\t\t\t\t\t<img src=\"./assets/logo/karos.svg\" alt=\"Karos\">\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"badge\" *ngSwitchCase=\"'www.klaxit.com'\">\r\n\t\t\t\t\t\t<img src=\"./assets/logo/klaxit.svg\" alt=\"Klaxit\">\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span class=\"badge\" *ngSwitchCase=\"'blablacardaily.com'\">\r\n\t\t\t\t\t\t<ng-container *ngIf=\"current === THEMES.LIGHT\">\r\n\t\t\t\t\t\t\t<img src=\"./assets/logo/blablacardaily.svg\" alt=\"BlablacarDaily\">\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t<ng-container *ngIf=\"current === THEMES.DARK\">\r\n\t\t\t\t\t\t\t<img src=\"./assets/logo/blablacardaily_blanc.svg\" alt=\"BlablacarDaily\">\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</span>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultTransit let-itinerary let-durationMode=\"durationMode\" let-timeFare=\"timeFare\">\r\n\t<span class=\"layout column full-width\">\r\n\t\t<span class=\"layout align-center full-width\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"durationMode; context: {$implicit: itinerary}\"></ng-container>\r\n\t\t\t<span class=\"flex\" aria-hidden=\"true\"></span>\r\n\t\t\t<ng-container *ngTemplateOutlet=\"timeFare; context: {$implicit: itinerary}\"></ng-container>\r\n\t\t</span>\r\n\t\t<span class=\"legs-wrapper layout align-center\">\r\n\t\t\t<ng-container *ngFor=\"let leg of itinerary.itinerary.legs\">\r\n\t\t\t\t<mf-itinerary-content-leg *ngIf=\"leg.duration >= 120 || leg.mode != 'WALK'\" [leg]=\"leg\" [hasWheelChair]='hasWheelChair'></mf-itinerary-content-leg>\r\n\t\t\t</ng-container>\r\n\t\t</span>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-template #_default let-itinerary let-durationMode=\"durationMode\" let-timeFare=\"timeFare\">\r\n\t<span class=\"layout align-center full-width\">\r\n\t\t<ng-container *ngTemplateOutlet=\"durationMode; context: {$implicit: itinerary}\"></ng-container>\r\n\t\t<span class=\"flex layout content-center\">\r\n\t\t\t<m-icons *ngIf=\"itinerary.modes.includes('WALK') && !hasWheelChair\" color=\"primary\">directions_walk</m-icons>\r\n\t\t\t<m-icons *ngIf=\"itinerary.modes.includes('WALK') && hasWheelChair\" color=\"primary\">accessible</m-icons>\r\n\t\t\t<m-icons *ngIf=\"itinerary.modes.includes('CAR')\" color=\"primary\">directions_car</m-icons>\r\n\t\t\t<m-icons *ngIf=\"itinerary.modes.includes('BICYCLE')\" color=\"primary\">directions_bike</m-icons>\r\n\t\t</span>\r\n\t\t<ng-container *ngTemplateOutlet=\"timeFare; context: {$implicit: itinerary}\"></ng-container>\r\n\t</span>\r\n</ng-template>\r\n\r\n<ng-container *ngIf=\"itinerary.hasCOV\">\r\n\t<ng-container *ngTemplateOutlet=\"cov; context: { $implicit: itinerary, durationMode: durationMode, timeFare: timeFare }\"></ng-container>\r\n</ng-container>\r\n<ng-container *ngIf=\"itinerary.hasPublicTransport\">\r\n\t<ng-container *ngTemplateOutlet=\"transit; context: { $implicit: itinerary, durationMode: durationMode, timeFare: timeFare }\"></ng-container>\r\n</ng-container>\r\n<ng-container *ngIf=\"!itinerary.hasPublicTransport && !itinerary.hasCOV\">\r\n\t<ng-container *ngTemplateOutlet=\"default; context: { $implicit: itinerary, durationMode: durationMode, timeFare: timeFare }\"></ng-container>\r\n</ng-container>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'mfLegStopName'\r\n})\r\nexport class MfRouteSearchLegStopNamePipe implements PipeTransform {\r\n\r\n\ttransform(value: string) {\r\n\t\tconst stopName = value.split(',');\r\n\t\treturn stopName.length > 1 ? stopName[1] : stopName[0];\r\n\t}\r\n\r\n}\r\n","import { Params } from '@angular/router';\r\nimport { Disturbance } from '@metromobilite/m-features/dyn';\r\n\r\nexport interface TransportMode {\r\n\tid: string;\r\n\tname: string;\r\n\ttranslatableName?: string;\r\n\tselected?: boolean;\r\n\tdisabled?: boolean;\r\n\t/**\r\n\t * Is the transport mode available with PMR enabled ?\r\n\t */\r\n\tpmr?: boolean;\r\n}\r\n\r\nexport enum ROUTE_SORT_FIELD {\r\n\tDURATION = 'itinerary.duration',\r\n\tARRIVAL_TIME = 'itinerary.endTime',\r\n\tPRICE = 'itinerary.fare.fare.regular.cents',\r\n\tECOLOGICAL_IMPACT = 'itinerary.emissions_totales.indice'\r\n}\r\n\r\nexport interface RouteSortOption {\r\n\tname: string;\r\n\ttranslatableName?: string;\r\n\tvalue: ROUTE_SORT_FIELD;\r\n\ticon?: string;\r\n}\r\n\r\nexport interface OTPConfig {\r\n\twalk: OTPWalk;\r\n\ttransit: OTPTransit;\r\n\ttransit_MCO: OTPTransitMCO;\r\n\tbikeTransit: OTPBikeTransit;\r\n\tbike: OTPBike;\r\n\tcar: OTPCar;\r\n\tcov: OTPWalk;\r\n\tmcoTransit: OTPmcoTransit;\r\n\twalkSpeed: number;\r\n\twalkReluctance: number;\r\n\tcarTransit: OTPCarTransit;\r\n}\r\n\r\nexport interface OTPmcoTransit {\r\n\tmode: string;\r\n\tshowIntermediateStops: boolean;\r\n\tminTransferTime: number;\r\n\ttransferPenalty: number;\r\n\tnumItineraries: number;\r\n\twalkBoardCost: number;\r\n}\r\n\r\nexport interface OTPCarTransit {\r\n\tmode: string;\r\n\tshowIntermediateStops: boolean;\r\n\tminTransferTime: number;\r\n\ttransferPenalty: number;\r\n\tnumItineraries: number;\r\n\twalkBoardCost: number;\r\n\tunpreferredAgencies: string;\r\n}\r\n\r\nexport interface OTPCar {\r\n\tmode: string;\r\n\tcarParkCost: number;\r\n\tcarDropoffTime: number;\r\n}\r\n\r\nexport interface OTPBike {\r\n\tmode: string;\r\n\tbikeSpeed: number;\r\n\toptimize: string;\r\n\ttriangleSlopeFactor: number;\r\n\ttriangleTimeFactor: number;\r\n\ttriangleSafetyFactor: number;\r\n\tstairsReluctance: number;\r\n}\r\n\r\nexport interface OTPBikeTransit {\r\n\tmode: string;\r\n\tshowIntermediateStops: boolean;\r\n\tbikeSwitchCost: number;\r\n\tnumItineraries: number;\r\n\tbikeSpeed: number;\r\n\tminTransferTime: number;\r\n\ttransferPenalty: number;\r\n\twalkBoardCost: number;\r\n\tbikeBoardCost: number;\r\n\toptimize: string;\r\n\ttriangleSlopeFactor: number;\r\n\ttriangleTimeFactor: number;\r\n\ttriangleSafetyFactor: number;\r\n\tstairsReluctance: number;\r\n\tunpreferredAgencies: string;\r\n}\r\n\r\nexport interface OTPTransitMCO {\r\n\tmode: string;\r\n\tshowIntermediateStops: boolean;\r\n\tminTransferTime: number;\r\n\ttransferPenalty: number;\r\n\tnumItineraries: number;\r\n\twalkBoardCost: number;\r\n\tpreferredAgencies: string;\r\n}\r\n\r\nexport interface OTPTransit {\r\n\tmode: string;\r\n\tshowIntermediateStops: boolean;\r\n\tminTransferTime: number;\r\n\ttransferPenalty: number;\r\n\tnumItineraries: number;\r\n\twalkBoardCost: number;\r\n\tunpreferredAgencies: string;\r\n}\r\n\r\nexport interface OTPWalk {\r\n\tmode: string;\r\n}\r\n\r\nexport interface PMRConfig {\r\n\tmaxWalkDistance: number;\r\n\twheelchair: boolean;\r\n}\r\n\r\nexport interface OTPResponse {\r\n\trequestParameters: RequestParameters;\r\n\tplan: TripPlan;\r\n\tdebugOutput: DebugOutput;\r\n\televationMetadata: ElevationMetadata;\r\n}\r\n\r\nexport interface ElevationMetadata {\r\n\tellipsoidToGeoidDifference: number;\r\n\tgeoidElevation: boolean;\r\n}\r\n\r\nexport interface DebugOutput {\r\n\tprecalculationTime: number;\r\n\tpathCalculationTime: number;\r\n\tpathTimes: number[];\r\n\trenderingTime: number;\r\n\ttotalTime: number;\r\n\ttimedOut: boolean;\r\n}\r\n\r\nexport interface RequestParameters {\r\n\tdate: string;\r\n\twalkSpeed: string;\r\n\twalkReluctance: string;\r\n\twheelchair: string;\r\n\tfromPlace: string;\r\n\ttransferPenalty: string;\r\n\tmaxWalkDistance: string;\r\n\tlocale: string;\r\n\tnumItineraries: string;\r\n\tmode: string;\r\n\tarriveBy: string;\r\n\tminTransferTime: string;\r\n\tshowIntermediateStops: string;\r\n\toptimize: string;\r\n\trouterId: string;\r\n\twalkBoardCost: string;\r\n\ttoPlace: string;\r\n\ttime: string;\r\n}\r\n\r\nexport interface Place {\r\n\tname: string;\r\n\tstopId?: AgencyAndId;\r\n\tstopCode?: string;\r\n\tplatformCode?: string;\r\n\tlon: number;\r\n\tlat: number;\r\n\tarrival?: number;\r\n\tdeparture?: number;\r\n\torig: string;\r\n\tzoneId?: string;\r\n\tstopIndex?: number;\r\n\tstopSequence?: number;\r\n\tvertexType: string;\r\n\tbikeShareId?: string;\r\n}\r\n\r\nexport interface AgencyAndId {\r\n\tid: string;\r\n\tagencyId?: string;\r\n}\r\nexport interface TripPlan {\r\n\tdate: number;\r\n\tfrom: Place;\r\n\tto: Place;\r\n\titineraries: Itinerary[];\r\n}\r\n\r\nexport interface Itinerary {\r\n\tduration: number;\r\n\tstartTime: number;\r\n\tendTime: number;\r\n\twalkTime: number;\r\n\ttransitTime: number;\r\n\twaitingTime: number;\r\n\twalkDistance: number;\r\n\twalkLimitExceeded: boolean;\r\n\televationLost: number;\r\n\televationGained: number;\r\n\ttransfers: number;\r\n\tfare: Fare;\r\n\tlegs: Leg[];\r\n\ttooSloped: boolean;\r\n\tnext?: string;\r\n}\r\n\r\nexport interface ItineraryMeta {\r\n\tnext: {\r\n\t\ttime: number;\r\n\t\tnextPageCursor: string;\r\n\t};\r\n\tprevious: {\r\n\t\ttime: number;\r\n\t\tpreviousPageCursor: string;\r\n\t};\r\n}\r\n\r\nexport interface FareCurrency {\r\n\tcurrency: string;\r\n\tcurrencyCode: string;\r\n\tdefaultFractionDigits: number;\r\n\tsymbol: string;\r\n}\r\n\r\nexport interface FarePrice {\r\n\tcents: number;\r\n\tcurrency: FareCurrency;\r\n}\r\n\r\nexport interface Fare {\r\n\tdetails: {\r\n\t\tregular: { fareId: string, price: FarePrice, routes: string[] }[]\r\n\t};\r\n\tfare: { [key: string]: any };\r\n}\r\n\r\nexport interface Leg {\r\n\tstartTime: number;\r\n\tendTime: number;\r\n\tdepartureDelay: number;\r\n\tarrivalDelay: number;\r\n\trealTime: boolean;\r\n\tisNonExactFrequency: boolean;\r\n\theadway: number;\r\n\tdistance: number;\r\n\tpathway: boolean;\r\n\tmode: string;\r\n\troute: string;\r\n\tagencyName: string;\r\n\tagencyUrl: string;\r\n\tagencyTimeZoneOffset: number;\r\n\trouteColor: string;\r\n\trouteType: number;\r\n\trouteId: string;\r\n\trouteTextColor: string;\r\n\tinterlineWithPreviousLeg: boolean;\r\n\ttripShortName: string;\r\n\ttripBlockId: string;\r\n\theadsign: string;\r\n\tagencyId: string;\r\n\ttripId: AgencyAndId;\r\n\tserviceDate: string;\r\n\tfrom: Place;\r\n\tto: Place;\r\n\tintermediateStops: Place[];\r\n\tlegGeometry: EncodedPolylineBean;\r\n\tsteps: WalkStep[];\r\n\talerts: LocalizedAlert[];\r\n\trouteShortName: string;\r\n\trouteLongName: string;\r\n\tboardRule: string;\r\n\talightRule: string;\r\n\trentedBike: boolean;\r\n\ttransitLeg: boolean;\r\n\tduration: number;\r\n\tcarSharing?: any[];\r\n\tstopToStop?: boolean;\r\n\tmatchingDisturbances?: Disturbance[];\r\n}\r\n\r\nexport interface WalkStep {\r\n\tdistance: number;\r\n\trelativeDirection: string;\r\n\tstreetName: string;\r\n\tabsoluteDirection: string;\r\n\texit: string;\r\n\tstayOn: boolean;\r\n\tarea: boolean;\r\n\tbogusName: boolean;\r\n\tlon: number;\r\n\tlat: number;\r\n\talerts: LocalizedAlert[];\r\n\televation: string;\r\n}\r\n\r\nexport interface EncodedPolylineBean {\r\n\tpoints: string;\r\n\tlevels: string;\r\n\tlength: number;\r\n}\r\n\r\nexport interface LocalizedAlert {\r\n\talertHeaderText: string;\r\n\talertDescriptionText: string;\r\n\talertUrl: string;\r\n\teffectiveStartDate: number;\r\n}\r\n\r\nexport interface ItineraryWrapper {\r\n\titinerary: Itinerary;\r\n\thasCOV: boolean;\r\n\thasPublicTransport: boolean;\r\n\thasWalk: boolean;\r\n\thasWheelchair: boolean;\r\n\thasBicycle: boolean;\r\n\thasCar: boolean;\r\n\thasMCO: boolean;\r\n\tmodes: string[];\r\n\tmainMode: string | undefined;\r\n\tdisplayFare: string | undefined;\r\n}\r\n\r\nexport interface RouteSearchParams extends Params {\r\n\t/**\r\n\t * Format: \"latitude,longitude\"\r\n\t */\r\n\tfromPlace: string;\r\n\t/**\r\n\t * Format: \"latitude,longitude\"\r\n\t */\r\n\ttoPlace: string;\r\n\ttime: string;\r\n\t/**\r\n\t * Format: YYYY-MM-DD\r\n\t * => 2021-01-07\r\n\t */\r\n\tdate: string;\r\n\tarriveBy: 'true' | 'false';\r\n\tpmr: 'true' | 'false';\r\n\tpublicTransport: 'true' | 'false';\r\n\tbike: 'true' | 'false';\r\n\tcar: 'true' | 'false';\r\n\tcarpooling: 'true' | 'false';\r\n\t[key: string]: any;\r\n}\r\n","import { RouteSortOption, ROUTE_SORT_FIELD, TransportMode } from './route-search.model';\r\n\r\nexport const transportModes: TransportMode[] = [\r\n\t{ id: 'tc', name: 'Tram / Bus', translatableName: 'ROUTE_SEARCH.MODES.TC', selected: true, disabled: false, pmr: true },\r\n\t{ id: 'voiture', name: 'Voiture', translatableName: 'ROUTE_SEARCH.MODES.VOITURE', selected: false, disabled: false, pmr: true },\r\n\t{ id: 'velo', name: 'Vélo', translatableName: 'ROUTE_SEARCH.MODES.VELO', selected: false, disabled: false, pmr: false },\r\n\t{ id: 'covoiturage', name: 'Covoiturage', translatableName: 'ROUTE_SEARCH.MODES.COVOITURAGE', disabled: false, pmr: true }\r\n];\r\n\r\nexport const routeSortOptions: RouteSortOption[] = [\r\n\t{ name: 'Par durée', translatableName: 'ROUTE_SEARCH.SORT.DURATION', value: ROUTE_SORT_FIELD.DURATION, icon: 'flash_on' },\r\n\t{ name: 'Par heure d\\'arrivée', translatableName: 'ROUTE_SEARCH.SORT.ARRIVAL_TIME', value: ROUTE_SORT_FIELD.ARRIVAL_TIME, icon: 'access_time' },\r\n\t// { name: 'Par prix', translatableName: 'ROUTE_SEARCH.SORT.PRICE', value: ROUTE_SORT_FIELD.PRICE, icon: 'euro_symbol' },\r\n\t// {\r\n\t// \tname: 'Par impact écologique',\r\n\t// \ttranslatableName: 'ROUTE_SEARCH.SORT.ECOLOGICAL_IMPACT',\r\n\t// \tvalue: ROUTE_SORT_FIELD.ECOLOGICAL_IMPACT,\r\n\t// \ticon: 'ac_unit'\r\n\t// },\r\n];\r\n","import { InjectionToken } from '@angular/core';\r\nimport { OTPConfig, PMRConfig, RouteSortOption, TransportMode } from './route-search.model';\r\n\r\nexport const TRANSPORT_MODES = new InjectionToken<TransportMode[]>('MF_TRANSPORT_MODES');\r\n\r\nexport const ROUTE_SORT_OPTIONS = new InjectionToken<RouteSortOption[]>('MF_ROUTE_SORT_ITEMS');","import { trigger, style, transition, animate } from '@angular/animations';\r\nimport { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport {TAD_C38_PHONE, TAD_GSV_LINK, TAD_LINK, TAD_TPV_PHONE} from '@metromobilite/m-features';\r\nimport {Line, LinesService} from '@metromobilite/m-features/core';\r\nimport { McoHelper } from '@metromobilite/m-features/point-cov';\r\nimport { RouteSearchItinerariesHelper } from '../../helpers/itineraries.helper';\r\nimport { ItineraryWrapper, Leg, Place } from '../../route-search.model';\r\nimport { Shape } from '@metromobilite/m-ui/m-logo-lines';\r\n\r\nexport interface Row {\r\n\ttype: 'before' | 'after' | 'leg' | 'intermediates' | 'intermediate' | 'tad' | 'other';\r\n\ttime?: number;\r\n\tleg?: Leg;\r\n\tprevLeg?: Leg;\r\n\tfirst?: boolean;\r\n\tlast?: boolean;\r\n\tintermediate?: Place;\r\n\tintermediates?: number;\r\n\ttoggler?: { collapsed: boolean };\r\n\tbefore?: boolean;\r\n\tafter?: boolean;\r\n\tline?: Line;\r\n\tnoIntermediates?: boolean;\r\n\tmcoUrl?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'mf-itinerary-details',\r\n\ttemplateUrl: './itinerary-details.component.html',\r\n\tstyles: [':host { width: 100% }'],\r\n\tanimations: [\r\n\t\ttrigger('collapseAnimation', [\r\n\t\t\ttransition(':enter', [\r\n\t\t\t\tstyle({ opacity: 0, height: '0', overflow: 'hidden' }),\r\n\t\t\t\tanimate('250ms', style({ opacity: 1, height: '*' }))\r\n\t\t\t]),\r\n\t\t\ttransition(':leave', [\r\n\t\t\t\tstyle({ overflow: 'hidden' }),\r\n\t\t\t\tanimate('250ms', style({ opacity: 0, height: '0' }))\r\n\t\t\t]),\r\n\t\t])\r\n\t]\r\n})\r\nexport class ItineraryDetailsComponent implements OnInit {\r\n\r\n\t@Input() wrapper: ItineraryWrapper;\r\n\r\n\trows: Row[] = [];\r\n\tnonTransitModes: string[];\r\n\tpublic tadInformation: any;\r\n\r\n\tShape = Shape;\r\n\r\n\tconstructor(\r\n\t\tprivate linesService: LinesService,\r\n\t\tprivate itinerariesHelper: RouteSearchItinerariesHelper,\r\n\t\tprivate mcoHelper: McoHelper,\r\n\t\t@Inject(TAD_LINK) public tadLink: string,\r\n\t\t@Inject(TAD_GSV_LINK) public tadGsvLink: string,\r\n\t\t@Inject(TAD_TPV_PHONE) public tadPhone: string,\r\n\t\t@Inject(TAD_C38_PHONE) public tadC38Phone: string\r\n\t) {\r\n\t\tthis.tadInformation = {\r\n\t\t\tC38: `tel:${this.tadC38Phone}`,\r\n\t\t\tTPV: `tel:${this.tadPhone}`,\r\n\t\t\tTAD: this.tadLink,\r\n\t\t\tGSV: this.tadGsvLink\r\n\t\t};\r\n\t\tthis.nonTransitModes = this.itinerariesHelper.nonTransitModes;\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tconst legs = this.wrapper.itinerary.legs.filter(leg => {\r\n\t\t\treturn !(leg.duration < 120 && leg.mode === 'WALK');\r\n\t\t});\r\n\t\tlegs.forEach((leg, index) => {\r\n\t\t\tconst first = index === 0;\r\n\t\t\tconst last = index === legs.length - 1;\r\n\t\t\tconst line = leg.routeId ? this.linesService.find(`${leg.agencyId}:${leg.routeShortName}`) : undefined;\r\n\t\t\tconst haveIntermediates = leg.intermediateStops && leg.intermediateStops.length > 0;\r\n\t\t\tconst toggler = { collapsed: true };\r\n\t\t\t// Start leg\r\n\t\t\tthis.rows.push({ type: 'before', time: leg.startTime, leg, line, first, last, before: true, prevLeg: legs[index - 1], toggler });\r\n\r\n\t\t\tif (leg.agencyId === 'MCO') {\r\n\t\t\t\tconst fare = this.wrapper.itinerary.fare?.details?.regular?.find(f => {\r\n\t\t\t\t\treturn f.fareId.includes('MCO:') && f.routes.includes(leg.routeId as never as string);\r\n\t\t\t\t}) || 0;\r\n\t\t\t\tconst urlParams = this.mcoHelper.buildURLSearchParams({\r\n\t\t\t\t\ttripId: leg.tripId as never as string,\r\n\t\t\t\t\tstartStation: leg.from.name,\r\n\t\t\t\t\tendStation: leg.to.name,\r\n\t\t\t\t\tfare,\r\n\t\t\t\t});\r\n\t\t\t\tthis.rows.push({ type: 'other', leg, toggler, mcoUrl: `${this.mcoHelper.pmUrl}?${urlParams}` });\r\n\t\t\t} else if (leg.boardRule === 'mustPhone') {\r\n\t\t\t\tthis.rows.push({ type: 'tad', leg, toggler });\r\n\t\t\t}\r\n\r\n\t\t\t// Leg content\r\n\t\t\tthis.rows.push({ type: 'leg', first, last, time: leg.startTime, leg, noIntermediates: !haveIntermediates });\r\n\t\t\tif (haveIntermediates) {\r\n\t\t\t\tthis.rows.push({ type: 'intermediates', intermediates: leg.intermediateStops.length, leg, toggler });\r\n\t\t\t\tleg.intermediateStops.forEach((place, j) => {\r\n\t\t\t\t\tthis.rows.push({ type: 'intermediate', intermediate: place, leg, toggler, last: j === leg.intermediateStops.length - 1 });\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t// End leg\r\n\t\t\tthis.rows.push({ type: 'after', first, last, time: leg.endTime, leg, after: true, noIntermediates: !haveIntermediates });\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","<div class=\"legs-grid\" *ngIf=\"rows.length > 0\">\r\n\t<ng-container *ngFor=\"let row of rows\"\r\n\t\t[mfHasDisturbance]=\"{lineOrNsv: row.leg | mfLegNsv, activateHostBinding: false}\"\r\n\t\t#disturbance=\"mfHasDisturbance\">\r\n\t\t<ng-container *ngTemplateOutlet=\"rowTpl; context: { $implicit: row, disturbance }\">\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>\r\n\r\n<ng-template #rowTpl let-row let-first=\"first\" let-last=\"last\" let-disturbance=\"disturbance\">\r\n\t<ng-container *ngIf=\"nonTransitModes.includes(row.leg.mode); else transitRow\">\r\n\t\t<ng-container *ngTemplateOutlet=\"nonTransitRowTpl; context: { $implicit: row }\"></ng-container>\r\n\t</ng-container>\r\n\t<ng-template #transitRow>\r\n\t\t<ng-container *ngTemplateOutlet=\"transitRowTpl; context: { $implicit: row, disturbance }\"></ng-container>\r\n\t</ng-template>\r\n</ng-template>\r\n\r\n<ng-template #nonTransitRowTpl let-row>\r\n\t<ng-container>\r\n\r\n\t\t<p class=\"hourLine\" [ngClass]=\"{firstHour: (row.before &&row.first)}\" [attr.aria-hidden]=\"\r\n\t\t\t\t!(\r\n\t\t\t\t\t(['before'].includes(row.type) && row.first) ||\r\n\t\t\t\t\t(['after'].includes(row.type) && row.last)\r\n\t\t\t\t)\r\n\t\t\t\" [class.after]=\"row.after\">\r\n\t\t\t<ng-container *ngIf=\"\r\n\t\t\t\t\t(['before'].includes(row.type) && row.first) ||\r\n\t\t\t\t\t(['after'].includes(row.type) && row.last)\r\n\t\t\t\t\" >\r\n\t\t\t\t{{ row.time | mfItineraryTime }}\r\n\t\t\t</ng-container>\r\n\t\t</p>\r\n\t\t<div class=\"deco non-transit\" [ngClass]=\"{noTrail : row.prevLeg}\" aria-hidden=\"true\" [class.after]=\"row.after\">\r\n\t\t\t<div class=\"deco-bar default\" [class.has-previous]=\"!!row.prevLeg\" [class.start]=\"row.before\"\r\n\t\t\t\t[class.end]=\"row.after && row.last\"></div>\r\n\t\t\t<div *ngIf=\"row.prevLeg\" class=\"deco-bar previous\" [class.default]=\"!row.prevLeg.routeColor\" [ngStyle]=\"{\r\n\t\t\t\t\tbackground: '#' + row.prevLeg.routeColor || 'initial'\r\n\t\t\t\t}\"></div>\r\n\t\t\t<div class=\"icon-wrapper icon-end\" *ngIf=\"row.type === 'after' && row.last\">\r\n\t\t\t\t<mat-icon>flag</mat-icon>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"icon-wrapper icon-start\" *ngIf=\"row.type === 'before' && row.first\">\r\n\t\t\t\t<mat-icon>my_location</mat-icon>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"icon-wrapper\" *ngIf=\"row.type === 'leg'\">\r\n\t\t\t\t<mat-icon *ngIf=\"row.leg.mode === 'WALK' && !wrapper.hasWheelchair\" class=\"walk\">directions_walk</mat-icon>\r\n\t\t\t\t<mat-icon *ngIf=\"row.leg.mode === 'WALK' && wrapper.hasWheelchair\" class=\"walk\">accessible</mat-icon>\r\n\t\t\t\t<mat-icon *ngIf=\"row.leg.mode === 'CAR'\" class=\"walk\">directions_car</mat-icon>\r\n\t\t\t\t<mat-icon *ngIf=\"row.leg.mode === 'COV'\" class=\"walk\">directions_car</mat-icon>\r\n\t\t\t\t<mat-icon *ngIf=\"row.leg.mode === 'BICYCLE'\" class=\"walk\">directions_bike</mat-icon>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"row-content alignInfos\" [attr.aria-hidden]=\"\r\n\t\t\t\t(row.before && !row.first) || (row.after && !row.last)\r\n\t\t\t\" [class.before]=\"row.before\" [class.after]=\"row.after\" [class.start]=\"row.before && row.first\">\r\n\t\t\t<ng-container [ngSwitch]=\"row.type\">\r\n\t\t\t\t<ng-container *ngSwitchCase=\"'leg'\">\r\n\t\t\t\t\t<p *ngIf=\"row.leg.mode === 'WALK' || row.leg.mode === 'CAR' || row.leg.mode === 'COV' || row.leg.mode === 'BICYCLE'\" class=\"non-transit trail text-secondary\">\r\n\t\t\t\t\t\t{{ row.leg.duration | duration }}, {{ row.leg.distance | distance }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-container *ngSwitchCase=\"'after'\">\r\n\t\t\t\t\t<p *ngIf=\"row.last\">\r\n\t\t\t\t\t\t{{ row.leg.to.name | mfLegStopName }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-container *ngSwitchCase=\"'before'\">\r\n\t\t\t\t\t<p *ngIf=\"row.first\">\r\n\t\t\t\t\t\t{{ row.leg.from.name | mfLegStopName }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-template>\r\n\r\n<ng-template #transitRowTpl let-row let-disturbance=\"disturbance\">\r\n\t<p class=\"hourLine\" [attr.aria-hidden]=\"\r\n\t\t\t!(\r\n\t\t\t\t!nonTransitModes.includes(row.leg.mode) &&\r\n\t\t\t\t['leg', 'after'].includes(row.type)\r\n\t\t\t)\r\n\t\t\" [class.after]=\"row.after\">\r\n\t\t<ng-container *ngIf=\"\r\n\t\t\t\t!nonTransitModes.includes(row.leg.mode) &&\r\n\t\t\t\t['leg', 'after'].includes(row.type)\r\n\t\t\t\">{{ row.time | mfItineraryTime }}</ng-container>\r\n\t</p>\r\n\t<div class=\"deco\" aria-hidden=\"true\" [class.after]=\"row.after\" [class.leg]=\"row.type === 'leg'\">\r\n\t\t<div class=\"deco-bar default\" *ngIf=\"row.before && !!row.prevLeg\"></div>\r\n\t\t<div class=\"deco-bar\" [class.has-previous]=\"!!row.prevLeg\" [class.start]=\"row.before\"\r\n\t\t\t[class.end]=\"row.after && row.last\" [class.default]=\"!row.leg.routeColor\"\r\n\t\t\t[ngStyle]=\"{ background: '#' + row.leg.routeColor || 'initial' }\"></div>\r\n\t\t<div *ngIf=\"row.prevLeg && row.before\" class=\"deco-bar previous\" [class.default]=\"!row.prevLeg.routeColor\" [ngStyle]=\"{\r\n\t\t\t\tbackground: '#' + row.prevLeg.routeColor || 'initial'\r\n\t\t\t}\"></div>\r\n\t\t<div *ngIf=\"\r\n\t\t\t\t!['other', 'tad'].includes(row.type) &&\r\n\t\t\t\t!row.before &&\r\n\t\t\t\t!row.intermediates &&\r\n\t\t\t\t(!row.last || (row.last && !row.after))\r\n\t\t\t\" class=\"circle stop\" [class.intermediate]=\"!!row.intermediate\"\r\n\t\t\t[class.collapsed]=\"row.intermediate && row.toggler.collapsed\"\r\n\t\t\t[ngStyle]=\"{ background: '#' + row.leg.routeColor || 'initial' }\">\r\n\t\t\t<div class=\"circle stop-content\"></div>\r\n\t\t</div>\r\n\t\t<div class=\"icon-wrapper icon-end\" *ngIf=\"row.last && row.after\">\r\n\t\t\t<mat-icon>flag</mat-icon>\r\n\t\t</div>\r\n\t\t<svg class=\"intermediate-icon\" height=\"16\" width=\"16\" *ngIf=\"row.intermediates && row.toggler.collapsed\"\r\n\t\t\t@collapseAnimation>\r\n\t\t\t<line x1=\"16\" y1=\"0\" x2=\"0\" y2=\"8\" />\r\n\t\t\t<line x1=\"16\" y1=\"8\" x2=\"0\" y2=\"16\" />\r\n\t\t</svg>\r\n\t</div>\r\n\t<div class=\"row-content\" [class.before]=\"row.before\" [class.after]=\"row.after\"\r\n\t\t[class.start]=\"row.before && row.first\" [class.intermediates]=\"row.intermediates\"\r\n\t\t[class.last-intermediate]=\"row.intermediate && row.last\" [class.leg]=\"row.type === 'leg'\"\r\n\t\t[class.no-intermediates]=\"row.noIntermediates\" [class.collapsed]=\"row.toggler && row.toggler.collapsed\"\r\n\t\t[class.previous-non-transit]=\"\r\n\t\t\trow.prevLeg && nonTransitModes.includes(row.prevLeg.mode)\r\n\t\t\">\r\n\t\t<ng-container [ngSwitch]=\"row.type\">\r\n\t\t\t<ng-container *ngSwitchCase=\"'before'\">\r\n\t\t\t\t<ng-container *ngIf=\"row.leg.agencyId !== 'MCO' && row.line; else other\">\r\n\t\t\t\t\t<div class=\"layout align-center\">\r\n\t\t\t\t\t\t<m-logo-lines [ligne]=\"row.line\" [class.icon-left]=\"row.leg.boardRule === 'mustPhone'\"></m-logo-lines>\r\n\t\t\t\t\t\t<span *ngIf=\"row.leg.boardRule === 'mustPhone'\">Transport à la demande</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t\t<ng-template #other>\r\n\t\t\t\t\t<button *ngIf=\"row.leg.agencyId === 'MCO'\" mat-button class=\"toggle-button\" (click)=\"row.toggler.collapsed = !row.toggler.collapsed\">\r\n\t\t\t\t\t\t<img class=\"logo-mco icon-left\" src=\"./assets/poi/m_covoit_logo.svg\" alt=\"Logo M'Covoit\">\r\n\t\t\t\t\t\t<span>M covoit' - {{ row.line.shortName }}</span>\r\n\t\t\t\t\t\t<mat-icon color=\"primary\" iconPositionEnd>help_outline</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'after'\">\r\n\t\t\t\t<p>{{ row.leg.to.name | mfLegStopName }}</p>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'leg'\">\r\n\t\t\t\t<p class=\"m-multiline\">\r\n\t\t\t\t\t<span class='higherFontSize'>{{ row.leg.from.name | mfLegStopName }}</span>\r\n\t\t\t\t\t<span>Direction {{ row.leg.headsign }}</span>\r\n\t\t\t\t</p>\r\n\t\t\t\t<ng-container *ngIf=\"row.leg.matchingDisturbances\">\r\n\t\t\t\t\t<m-disturbance-display\r\n\t\t\t\t\t\t[disturbance]=\"disturbance\"\r\n\t\t\t\t\t\t[disturbanceCollection]=\"row.leg.matchingDisturbances\"\r\n\t\t\t\t\t\t[link]=\"row.leg.matchingDisturbances | mfDisturbanceRouterLink : row.leg.agencyId + ':' + row.leg.routeShortName\"></m-disturbance-display>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'intermediates'\">\r\n\t\t\t\t<ng-container *ngIf=\"row.intermediates > 0\">\r\n\t\t\t\t\t<button mat-button class=\"m-theme toggle-button stops\" (click)=\"row.toggler.collapsed = !row.toggler.collapsed\">\r\n\t\t\t\t\t\t<span [ngPlural]=\"row.intermediates\" class=\"text-secondary\">\r\n\t\t\t\t\t\t\t<p>{{row.leg.duration | duration }}\r\n\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"=0\">, 1 Arrêt</ng-template>\r\n\t\t\t\t\t\t\t\t<ng-template ngPluralCase=\"other\">, {{ row.leg.intermediateStops.length + 1 }} Arrêts</ng-template>\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<mat-icon class=\"icon-right reverse-animation\"\r\n\t\t\t\t\t\t\t[class.reverse]=\"row.toggler.collapsed\">expand_less</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'intermediate'\">\r\n\t\t\t\t<ng-container *ngIf=\"row.intermediate && !row.toggler.collapsed\">\r\n\t\t\t\t\t<p class=\"intermediate-name ellipsis\" @collapseAnimation>\r\n\t\t\t\t\t\t{{ row.intermediate.name | mfLegStopName }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'other'\">\r\n\t\t\t\t<ng-container *ngIf=\"row.leg.agencyId === 'MCO' && !row.toggler.collapsed\">\r\n\t\t\t\t\t<div class=\"mco-wrapper\" @collapseAnimation>\r\n\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\tCovoiturez avec M covoit’ Lignes+ pour vos trajets quotidiens sur le Grésivaudan, le Vercors et le Voironnais vers et depuis Grenoble.\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t<div class=\"layout align-center content-between wrap\">\r\n\t\t\t\t\t\t\t<!-- <a mat-stroked-button color=\"primary\" class=\"m-theme\" href=\"https://go.lignesplus-m.fr/g5gVkPVwK8\" target=\"_blank\">Plus d'info</a> -->\r\n\t\t\t\t\t\t\t<a mat-stroked-button color=\"primary\" class=\"m-theme\" [attr.href]=\"row.mcoUrl\" mfMcoEnabled\r\n\t\t\t\t\t\t\t\t[startAt]=\"row.leg.startTime\" [at]=\"[row.leg.from.lon, row.leg.from.lat]\"\r\n\t\t\t\t\t\t\t\t#mco=\"mfMcoEnabled\" [disabled]=\"mco.isDisabled$ | async\">\r\n\t\t\t\t\t\t\t\t<mat-icon class=\"icon-left\">near_me</mat-icon>\r\n\t\t\t\t\t\t\t\t<span>Go !</span>\r\n\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<p class=\"text-secondary\" *ngIf=\"mco && mco.reasons.length > 0\">\r\n\t\t\t\t\t\t\tPour pouvoir covoiturer, veuillez vous rendre au\r\n\t\t\t\t\t\t\tpoint de prise en charge de départ du trajet M\r\n\t\t\t\t\t\t\tcovoit' Lignes+ souhaité.\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container *ngSwitchCase=\"'tad'\">\r\n\r\n\t\t\t\t<ng-container *ngIf=\"row.leg.agencyId === 'SEM' || row.leg.agencyId === 'GSV'\">\r\n\t\t\t\t\t<a mat-stroked-button color=\"primary\" class=\"m-theme tad-link\" [attr.href]=\"tadInformation[row.leg.agencyId]\" target=\"_blank\"\r\n\t\t\t\t\t   rel=\"noopener noreferrer\">\r\n\t\t\t\t\t\t<div class=\"layout align-center content-center\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"tad\" class=\"icon-left\"></mat-icon>\r\n\t\t\t\t\t\t\t<span class=\"tad-link-label\">Réserver<span> ce passage</span></span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<ng-container *ngIf=\"row.leg.agencyId === 'TPV' || row.leg.agencyId === 'C38'\">\r\n\t\t\t\t\t<a mat-stroked-button color=\"primary\" class=\"m-theme tad-link tad-phone\" [attr.href]=\"tadInformation[row.leg.agencyId]\" target=\"_blank\"\r\n\t\t\t\t\t   rel=\"noopener noreferrer\">\r\n\t\t\t\t\t\t<div class=\"layout align-center content-center\">\r\n\t\t\t\t\t\t\t<mat-icon>call</mat-icon>\r\n\t\t\t\t\t\t\t<span>Réserver par Téléphone</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</div>\r\n</ng-template>\r\n<!--  -->\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Action, FlowEnd, FlowStart } from '@metromobilite/m-features/core';\r\nimport {\r\n\tItinerary,\r\n\tItineraryWrapper,\r\n\tRouteSearchParams,\r\n\tROUTE_SORT_FIELD,\r\n\tItineraryMeta,\r\n} from '../../route-search.model';\r\nimport { DisturbancesCollection } from '@metromobilite/m-features/dyn';\r\n\r\nexport enum CALCULATE_ACTIONS {\r\n\tSTART = 'MF_CALCULATE_START',\r\n\tRESULT = 'MF_CALCULATE_RESULT',\r\n\tREQUEST = 'MF_CALCULATE_REQUEST',\r\n\tSORT = 'MF_CALCULATE_SORT',\r\n\tFILTER = 'MF_CALCULATE_FILTER',\r\n\tWRAP = 'MF_CALCULATE_WRAP',\r\n}\r\n\r\nexport interface CalculatePayload {\r\n\tparams: RouteSearchParams;\r\n\tsort: ROUTE_SORT_FIELD;\r\n\torder: 'asc' | 'desc';\r\n\trequestsParams?: HttpParams[];\r\n}\r\n\r\nexport interface CalculateRequestPayload extends CalculatePayload {\r\n\trequestsParams: HttpParams[];\r\n}\r\n\r\nexport interface MetaPayload extends CalculatePayload {\r\n\tresults: MetaPayloadData<Itinerary>;\r\n\tdisturbances?: DisturbancesCollection;\r\n}\r\n\r\nexport interface MetaPayloadData<T> {\r\n\tmeta: ItineraryMeta;\r\n\titineraries: T[];\r\n}\r\n\r\n\r\nexport interface Payload<T> {\r\n\tdisturbances?: DisturbancesCollection;\r\n\torder?: 'asc' | 'desc';\r\n\tparams?: RouteSearchParams;\r\n\trequestsParams?: HttpParams[];\r\n\tresults?: MetaPayloadData<T>;\r\n\tsort?: ROUTE_SORT_FIELD;\r\n}\r\n\r\nexport interface CalculateFilterPayload extends CalculatePayload {\r\n\tresults: Itinerary[];\r\n\tdisturbances?: DisturbancesCollection;\r\n}\r\n\r\nexport interface CalculateSortPayload extends CalculatePayload {\r\n\tresults: ItineraryWrapper[];\r\n}\r\n\r\nexport class CalculateStartAction extends FlowStart {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.START;\r\n\r\n\tconstructor(public payload?: CalculatePayload) { super(); }\r\n}\r\n\r\nexport class CalculateResultAction extends FlowEnd {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.RESULT;\r\n\r\n\tconstructor(public results: MetaPayloadData<ItineraryWrapper>) { super(); }\r\n}\r\n\r\nexport class CalculateRequestAction extends Action {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.REQUEST;\r\n\r\n\t// No payload type because no itineraries\r\n\tconstructor(public payload: Payload<any>) { super(); }\r\n}\r\n\r\nexport class CalculateSortAction extends Action {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.SORT;\r\n\r\n\tconstructor(public payload: Payload<ItineraryWrapper>) { super(); }\r\n}\r\n\r\nexport class CalculateFilterAction extends Action {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.FILTER;\r\n\r\n\tconstructor(public payload: Payload<Itinerary>) { super(); }\r\n}\r\n\r\nexport class CalculateWrapItinerariesAction extends Action {\r\n\tname: CALCULATE_ACTIONS = CALCULATE_ACTIONS.WRAP;\r\n\r\n\t// Payload type is not static because it can be Itinerary or ItineraryWrapper\r\n\tconstructor(public payload: Payload<any>) { super(); }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { ConfigService, FRONT_CONFIG } from '@metromobilite/m-features/core';\r\nimport { OTPConfig } from '../route-search.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchModesHelper {\r\n\r\n\tconstructor(\r\n\t\tprivate configService: ConfigService\r\n\t) { }\r\n\r\n\tgetModesFromParams(params: Params, otpConfig: OTPConfig) {\r\n\t\tconst modes = [];\r\n\t\tconst transit = params.publicTransport === 'true';\r\n\t\tconst car = params.car === 'true';\r\n\t\tconst bike = params.bike === 'true';\r\n\t\tconst cov = params.carpooling === 'true';\r\n\t\tconst walk = params.walk === 'true';\r\n\r\n\t\tif (walk) modes.push(otpConfig.walk);\r\n\t\tif (bike) modes.push(otpConfig.bike);\r\n\t\tif (car) modes.push(otpConfig.car);\r\n\t\tif (cov) modes.push(otpConfig.cov);\r\n\r\n\t\tif (!cov && transit && (!(transit && bike) || (transit && bike && walk))) modes.push(otpConfig.transit);\r\n\t\tif (!cov && transit && bike) modes.push(otpConfig.bikeTransit);\r\n\t\tif(!cov && transit && car) modes.push(otpConfig.carTransit);\r\n\r\n\t\tif (cov && !transit) {\r\n\t\t\tmodes.push(otpConfig.transit_MCO);\r\n\t\t} else if (cov && transit) {\r\n\t\t\tmodes.push(otpConfig.mcoTransit);\r\n\t\t}\r\n\t\treturn modes;\r\n\t}\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { ConfigService } from '@metromobilite/m-features/core';\r\nimport { OTPConfig, PMRConfig } from '../route-search.model';\r\nimport { RouteSearchModesHelper } from './modes.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchParamsHelper {\r\n\r\n\tconstructor(\r\n\t\tprivate configService: ConfigService,\r\n\t\tprivate modesHelper: RouteSearchModesHelper\r\n\t) { }\r\n\r\n\tgetOTPParamsFromParams(params: Params): HttpParams[] {\r\n\t\tconst otpConfig: OTPConfig = this.configService.config.otp?.default.paramsModesOTP;\r\n\t\tconst otpPmrConfig: OTPConfig = this.configService.config.otp?.default.paramsPmr;\r\n\t\tconst modes = this.modesHelper.getModesFromParams(params, otpConfig);\r\n\t\tconst requestsParams = [];\r\n\t\tfor (const mode of modes) {\r\n\t\t\tlet otpParams = {\r\n\t\t\t\tfromPlace: params.fromPlace,\r\n\t\t\t\ttoPlace: params.toPlace,\r\n\t\t\t\tarriveBy: params.arriveBy,\r\n\t\t\t\ttime: params.time,\r\n\t\t\t\tdate: params.date,\r\n\t\t\t\trouterId: 'default',\r\n\t\t\t\toptimize: 'QUICK',\r\n\t\t\t\twalkSpeed: `${otpConfig.walkSpeed}`,\r\n\t\t\t\twalkReluctance: `${otpConfig.walkReluctance}`,\r\n\t\t\t\tlocale: 'fr',\r\n\t\t\t\t...mode,\r\n\t\t\t};\r\n\r\n\t\t\tif (params.pageCursor && mode.mode.includes('TRANSIT')) {\r\n\t\t\t\totpParams = { ...otpParams, ...{ pageCursor: params.pageCursor } };\r\n\t\t\t}\r\n\r\n\t\t\tif (params.pmr === 'true') {\r\n\t\t\t\totpParams = { ...otpParams, ...otpPmrConfig };\r\n\t\t\t}\r\n\t\t\trequestsParams.push(new HttpParams({ fromObject: otpParams }));\r\n\t\t}\r\n\t\treturn requestsParams;\r\n\t}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchResultsHelper {\r\n\r\n\tconstructor() { }\r\n\r\n\tsegregateResultsData(results: any[]) {\r\n\t\treturn results.reduce(\r\n\t\t(acc, item) => {\r\n\r\n\t\t\tif ('metadata' in item) {\r\n\t\t\t\tacc.metadata = {};\r\n\r\n\t\t\t\tif (item.metadata.nextDateTime &&\r\n\t\t\t\t\t(item.metadata.nextDateTime && item.metadata.prevDateTime) &&\r\n\t\t\t\t\t(item.nextPageCursor && item.previousPageCursor)) {\r\n\r\n\t\t\t\t\tacc.metadata = {\r\n\t\t\t\t\t\tnext: { time: item.metadata.nextDateTime, nextPageCursor: item.nextPageCursor },\r\n\t\t\t\t\t\tprevious: { time: item.metadata.prevDateTime, previousPageCursor: item.previousPageCursor }\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ('plan' in item) {\r\n\t\t\t\tacc.routeSearch.push(item);\r\n\t\t\t} else {\r\n\t\t\t\tObject.keys(item).forEach(key => {\r\n\t\t\t\t\tacc.disturbances[key] = item[key];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t},\r\n\t\t{\r\n\t\t\trouteSearch: [],\r\n\t\t\tmetaData: {},\r\n\t\t\tdisturbances: {},\r\n\t\t}\r\n\t);\r\n}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Itinerary } from '../route-search.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchCovHelper {\r\n\r\n\thandleCov(itineraries: Itinerary[]): void {\r\n\t\tconst covItinerary = itineraries.find(itinerary => itinerary.legs.some(leg => leg.mode === 'COV'));\r\n\t\tif (covItinerary) {\r\n\t\t\tconst index = itineraries.indexOf(covItinerary);\r\n\t\t\titineraries.splice(index, 1);\r\n\t\t\tcovItinerary.legs[0].carSharing.forEach(journey => {\r\n\t\t\t\tconst cloneCovItinerary = JSON.parse(JSON.stringify(covItinerary));\r\n\t\t\t\tcloneCovItinerary.legs[0].carSharing = [journey];\r\n\t\t\t\tlet price = (journey.journeys.cost.fixed ? journey.journeys.cost.fixed : 0);\r\n\t\t\t\tprice += journey.journeys.cost.variable * journey.journeys.distance / 1000;\r\n\t\t\t\tcloneCovItinerary.fare = {\r\n\t\t\t\t\tfare: {\r\n\t\t\t\t\t\tregular: {\r\n\t\t\t\t\t\t\tcents: price.toFixed(2) * 100,\r\n\t\t\t\t\t\t\tcurrency: {\r\n\t\t\t\t\t\t\t\tcurrency: 'EUR',\r\n\t\t\t\t\t\t\t\tcurrencyCode: 'EUR',\r\n\t\t\t\t\t\t\t\tdefaultFractionDigits: 2,\r\n\t\t\t\t\t\t\t\tsymbol: '€'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\titineraries.push(cloneCovItinerary);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Disturbance, DisturbancesCollection} from '@metromobilite/m-features/dyn';\r\nimport {CalculateWrapItinerariesAction} from '../flows/calculate/calculate.actions';\r\nimport {Itinerary, ItineraryWrapper, Leg} from '../route-search.model';\r\nimport {RouteSearchItinerariesHelper} from './itineraries.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchWrapperHelper {\r\n\r\n\tconstructor(private itinerariesHelper: RouteSearchItinerariesHelper) { }\r\n\r\n\thandle(action: CalculateWrapItinerariesAction): ItineraryWrapper[] {\r\n\t\tconst hasWheelchair = (/true/i).test(action.payload.params.pmr);\r\n\t\treturn action.payload.results.itineraries.map(itinerary => this.wrap(itinerary, hasWheelchair, action.payload.disturbances));\r\n\t}\r\n\r\n\twrap(itinerary: Itinerary, hasWheelchair, disturbances?): ItineraryWrapper {\r\n\t\tconst hasWalk = itinerary.legs.some(leg => leg.mode === 'WALK');\r\n\t\t// Define the main mode\r\n\t\tconst tmp = itinerary.legs\r\n\t\t\t.reduce((acc, leg) => {\r\n\t\t\t\tlet modeCount = acc.find(mc => mc.mode === leg.mode);\r\n\t\t\t\tif (!modeCount) {\r\n\t\t\t\t\tmodeCount = { mode: leg.mode, count: 0 };\r\n\t\t\t\t\tacc.push(modeCount);\r\n\t\t\t\t}\r\n\t\t\t\tmodeCount.count += 1;\r\n\t\t\t\treturn acc;\r\n\t\t\t}, [])\r\n\t\t\t.filter(mc => mc.mode !== 'WALK')\r\n\t\t\t.sort((a: any, b: any) => a.count > b.count ? 1 : b.count < a.count ? -1 : 0)\r\n\t\t\t.map(mc => mc.mode);\r\n\t\tlet mainMode: string;\r\n\t\tif (tmp.length > 0) {\r\n\t\t\tmainMode = tmp[tmp.length - 1];\r\n\t\t} else if (hasWalk) {\r\n\t\t\tmainMode = 'WALK';\r\n\t\t}\r\n\t\t// Add custom data to legs.\r\n\t\titinerary.legs.forEach((leg: Leg, index, legs) => {\r\n\t\t\tleg.stopToStop = false;\r\n\t\t\tif (index + 1 < legs.length) {\r\n\t\t\t\tconst nextLeg = legs[index + 1];\r\n\t\t\t\tif (\r\n\t\t\t\t\t(\r\n\t\t\t\t\t\t!this.itinerariesHelper.nonTransitModes.includes(leg.mode) &&\r\n\t\t\t\t\t\t!this.itinerariesHelper.nonTransitModes.includes(nextLeg.mode) &&\r\n\t\t\t\t\t\tleg.to.stopCode === nextLeg.from.stopCode\r\n\t\t\t\t\t) ||\r\n\t\t\t\t\t(\r\n\t\t\t\t\t\tthis.itinerariesHelper.nonTransitModes.includes(nextLeg.mode) &&\r\n\t\t\t\t\t\tnextLeg.duration <= 120 && index < legs.length - 2\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\tleg.stopToStop = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add disturbances -  if any - to the leg\r\n\t\t\tif (!this.itinerariesHelper.nonTransitModes.includes(leg.mode) && disturbances) {\r\n\t\t\t\tconst matchingDisturbances = this.getMatchingDisturbances(leg, { ...disturbances });\r\n\t\t\t\tif (matchingDisturbances && matchingDisturbances.length) {\r\n\t\t\t\t\tleg.matchingDisturbances = matchingDisturbances;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\titinerary,\r\n\t\t\thasCOV: itinerary.legs.some(leg => leg.mode === 'COV'),\r\n\t\t\thasPublicTransport: itinerary.legs.some(leg => !this.itinerariesHelper.nonTransitModes.includes(leg.mode)),\r\n\t\t\thasWalk,\r\n\t\t\thasWheelchair,\r\n\t\t\thasBicycle: itinerary.legs.some(leg => leg.mode === 'BICYCLE'),\r\n\t\t\thasCar: itinerary.legs.some(leg => leg.mode === 'CAR'),\r\n\t\t\thasMCO: itinerary.legs.some(leg => leg.agencyId === 'MCO'),\r\n\t\t\tmodes: itinerary.legs.reduce((acc: string[], leg: any) => {\r\n\t\t\t\tif (!acc.find((mode: string) => leg.mode === mode)) {\r\n\t\t\t\t\tacc.push(leg.mode);\r\n\t\t\t\t}\r\n\t\t\t\treturn acc;\r\n\t\t\t}, []),\r\n\t\t\tmainMode,\r\n\t\t\tdisplayFare: itinerary.fare && itinerary.fare.fare ? this.displayFare(itinerary.fare.fare) : undefined,\r\n\t\t};\r\n\t}\r\n\r\n\tdisplayFare(fare: any) {\r\n\t\tif (Object.keys(fare).length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst fareDetails = fare.regular;\r\n\t\tif (fareDetails.cents > 0)\r\n\t\t\treturn (fareDetails.cents / (Math.pow(10, fareDetails.currency.defaultFractionDigits))).toFixed(2) + ' ' + fareDetails.currency.symbol;\r\n\t}\r\n\r\n\t// Returns disturbances that meet the date criteria of the given Leg\r\n\r\n\tgetMatchingDisturbances(leg: Leg, disturbancesCollection: DisturbancesCollection): Disturbance[] {\r\n\r\n\t\tconst legStartTime = new Date(leg.startTime);\r\n\r\n\t\treturn Object.values(disturbancesCollection).filter(disturbance => {\r\n\r\n\t\t\tconst disturbanceStart = this.parseDate(disturbance.dateDebut);\r\n\t\t\tconst disturbanceEnd = this.parseDate(disturbance.dateFin);\r\n\r\n\t\t\tif (disturbance.listeLigne) {\r\n\t\t\t\tconst legRouteId = `${leg.agencyId}_${leg.routeShortName}`;\r\n\r\n\t\t\t\treturn disturbance.listeLigne.split(',').includes(legRouteId)\r\n\t\t\t\t\t&& (\r\n\t\t\t\t\t\tlegStartTime >= disturbanceStart && !disturbance.dateFin ||\r\n\t\t\t\t\t\tlegStartTime >= disturbanceStart && legStartTime <= disturbanceEnd);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t});\r\n\t}\r\n\r\n\tparseDate(dateTimeString): Date {\r\n\t\tconst [dateString, timeString] = dateTimeString.split(' ');\r\n\t\tconst [day, month, year] = dateString.split('/');\r\n\t\tconst [hour, minute] = timeString.split(':');\r\n\t\treturn new Date(year, month - 1, day, hour, minute);\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ArrayHelper, DefineTransition, Transition } from '@metromobilite/m-features/core';\r\nimport { zip } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { RouteSearchCovHelper } from '../../helpers/cov.helper';\r\nimport { RouteSearchItinerariesHelper } from '../../helpers/itineraries.helper';\r\nimport { RouteSearchParamsHelper } from '../../helpers/params.helper';\r\nimport { RouteSearchWrapperHelper } from '../../helpers/wrapper.helper';\r\nimport { Itinerary, ItineraryWrapper, OTPResponse, RouteSearchParams } from '../../route-search.model';\r\nimport {\r\n\tCalculateFilterAction,\r\n\tCalculateRequestAction,\r\n\tCalculateResultAction,\r\n\tCalculateSortAction,\r\n\tCalculateStartAction,\r\n\tCalculateWrapItinerariesAction,\r\n\tCALCULATE_ACTIONS,\r\n\tMetaPayloadData\r\n} from './calculate.actions';\r\nimport { DisturbancesService } from '@metromobilite/m-features/dyn';\r\nimport { RouteSearchResultsHelper } from '../../helpers/route-search-results.helper';\r\n\r\n@Injectable()\r\nexport class RouteSearchCalculateTransitions {\r\n\r\n\t@DefineTransition(CALCULATE_ACTIONS.START)\r\n\tonStart: Transition<CalculateStartAction> = {\r\n\t\tpipe: map((action: CalculateStartAction) => {\r\n\t\t\treturn new CalculateRequestAction({\r\n\t\t\t\t...action.payload,\r\n\t\t\t\trequestsParams: this.paramsHelper.getOTPParamsFromParams(action.payload.params)\r\n\t\t\t});\r\n\t\t})\r\n\t};\r\n\r\n\t@DefineTransition(CALCULATE_ACTIONS.REQUEST)\r\n\tonRequest: Transition<CalculateRequestAction> = {\r\n\t\tpipe: switchMap((action: CalculateRequestAction) => {\r\n\t\t\tconst requests: any[] = [];\r\n\t\t\tfor (const requestParams of action.payload.requestsParams) {\r\n\t\t\t\tif (requestParams.has('wheelchair')) {\r\n\t\t\t\t\tthis.hasWheelchair = true;\r\n\t\t\t\t}\r\n\t\t\t\trequests.push(this.http.get<OTPResponse>(`@domain/@api/routers/default/plan`, { params: requestParams }));\r\n\t\t\t}\r\n\r\n\t\t\trequests.push(this.disturbancesService.getData());\r\n\r\n\t\t\treturn zip<OTPResponse[]>(...requests).pipe(\r\n\t\t\t\tmap((results: OTPResponse[]) => {\r\n\t\t\t\t\tconst segregatedResults = this.routeSearchResultHelper.segregateResultsData(results);\r\n\t\t\t\t\tconst itineraries = segregatedResults.routeSearch.filter(response => !(response as any).error).reduce((list, response) => {\r\n\t\t\t\t\t\t// Add meta data OTP response for keep pagination's token\r\n\t\t\t\t\t\tif (segregatedResults.metadata) {\r\n\t\t\t\t\t\t\tlist.meta = segregatedResults.metadata;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Add itineraries\r\n\t\t\t\t\t\tlist.itineraries.push(...response.plan.itineraries);\r\n\r\n\t\t\t\t\t\treturn list;\r\n\t\t\t\t\t}, {meta: null, itineraries: [] } as any);\r\n\r\n\t\t\t\t\treturn new CalculateFilterAction({\r\n\t\t\t\t\t\t...action.payload,\r\n\t\t\t\t\t\tresults: itineraries,\r\n\t\t\t\t\t\tdisturbances: segregatedResults.disturbances\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t})\r\n\t};\r\n\r\n\t@DefineTransition(CALCULATE_ACTIONS.FILTER)\r\n\tonFilter: Transition<CalculateFilterAction> = {\r\n\t\tpipe: map((action: CalculateFilterAction) => {\r\n\t\t\tlet results: Itinerary[] = this.itinerariesHelper.fixLegsAgencyId(action.payload.results.itineraries);\r\n\t\t\t// results = this.itinerariesHelper.popWrongTime(action.payload.results.itineraries, action.payload.params.time, action.payload.params.arriveBy);\r\n\t\t\tresults = this.itinerariesHelper.checkItineraryDoublons(results);\r\n\t\t\tresults = this.itinerariesHelper.additionalFilters(results, action.payload.params);\r\n\t\t\tthis.covHelper.handleCov(results);\r\n\t\t\t// Set data to itineraries\r\n\t\t\taction.payload.results.itineraries = results;\r\n\t\t\treturn new CalculateWrapItinerariesAction({\r\n\t\t\t\t...action.payload\r\n\t\t\t});\r\n\t\t})\r\n\t};\r\n\r\n\t@DefineTransition(CALCULATE_ACTIONS.WRAP)\r\n\tonWrap: Transition<CalculateWrapItinerariesAction> = {\r\n\t\tpipe: map((action: CalculateWrapItinerariesAction) => {\r\n\t\t\taction.payload.results.itineraries = this.wrapperHelper.handle(action);\r\n\t\t\treturn new CalculateSortAction({\r\n\t\t\t\t...action.payload\r\n\t\t});\r\n\t})};\r\n\r\n\t@DefineTransition(CALCULATE_ACTIONS.SORT)\r\n\tonSort: Transition<CalculateSortAction> = {\r\n\t\tpipe: map((action: CalculateSortAction) => {\r\n\r\n\t\t\tconst itineraries: ItineraryWrapper[] = this.arrayHelper.sortByField(\r\n\t\t\t\taction.payload.results.itineraries,\r\n\t\t\t\t[action.payload.sort, action.payload.order]\r\n\t\t\t);\r\n\t\t\t// Specific \"carpooling only\".\r\n\t\t\tconst params: RouteSearchParams = action.payload.params;\r\n\t\t\tif (params.carpooling === 'true' && params.bike === 'false' && params.car === 'false' && params.publicTransport === 'false') {\r\n\t\t\t\titineraries.sort((a, b) => a.hasMCO && !b.hasMCO ? -1 : 0);\r\n\t\t\t}\r\n\t\t\tconst results: MetaPayloadData<ItineraryWrapper> = { meta: action.payload.results.meta, itineraries };\r\n\t\t\treturn new CalculateResultAction(results);\r\n\t\t})\r\n\t};\r\n\r\n\thasWheelchair = false;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate paramsHelper: RouteSearchParamsHelper,\r\n\t\tprivate routeSearchResultHelper: RouteSearchResultsHelper,\r\n\t\tprivate itinerariesHelper: RouteSearchItinerariesHelper,\r\n\t\tprivate covHelper: RouteSearchCovHelper,\r\n\t\tprivate wrapperHelper: RouteSearchWrapperHelper,\r\n\t\tprivate arrayHelper: ArrayHelper,\r\n\t\tprivate disturbancesService: DisturbancesService\r\n\t) { }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CoreModule, FLOW_TRANSITIONS } from '@metromobilite/m-features/core';\r\nimport { MDisturbanceDisplay } from '@metromobilite/m-ui/lib/m-disturbance-display';\r\nimport { MIcons } from '@metromobilite/m-ui/lib/m-icons';\r\nimport { MLogoLines } from '@metromobilite/m-ui/lib/m-logo-lines';\r\nimport { MfItineraryContentLegComponent } from './components/itinerary-content-leg/itinerary-content-leg.component';\r\nimport { MfItineraryContentComponent } from './components/itinerary-content/itinerary-content.component';\r\nimport { MfRouteSearchItineraryTimePipe } from './pipes/itinerary-time.pipe';\r\nimport { MfRouteSearchLegStopNamePipe } from './pipes/leg-stop-name.pipe';\r\nimport { routeSortOptions, transportModes } from './route-search.data';\r\nimport { ROUTE_SORT_OPTIONS, TRANSPORT_MODES } from './route-search.token';\r\nimport { ItineraryDetailsComponent } from './components/itinerary-details/itinerary-details.component';\r\nimport { RouteSearchCalculateTransitions } from './flows/calculate/calculate.transitions';\r\nimport { PointCovModule } from '@metromobilite/m-features/point-cov';\r\nimport { DisturbancesModule } from '@metromobilite/m-features/disturbances';\r\nimport { MfRouteSearchLegNsvPipe } from './pipes/leg-nsv.pipe';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tMfRouteSearchItineraryTimePipe,\r\n\t\tMfItineraryContentComponent,\r\n\t\tMfItineraryContentLegComponent,\r\n\t\tMfRouteSearchLegStopNamePipe,\r\n\t\tItineraryDetailsComponent,\r\n\t\tMfRouteSearchLegNsvPipe\r\n\t],\r\n    imports: [\r\n        CommonModule,\r\n        HttpClientModule,\r\n        CoreModule,\r\n        MatIconModule,\r\n        MatButtonModule,\r\n        MatRippleModule,\r\n        MatExpansionModule,\r\n        PointCovModule,\r\n        DisturbancesModule,\r\n        MIcons,\r\n        MLogoLines,\r\n\t\tMDisturbanceDisplay\r\n    ],\r\n\texports: [\r\n\t\tMfRouteSearchItineraryTimePipe,\r\n\t\tMfItineraryContentComponent,\r\n\t\tMfItineraryContentLegComponent,\r\n\t\tMfRouteSearchLegStopNamePipe,\r\n\t\tItineraryDetailsComponent,\r\n\t\tMfRouteSearchLegNsvPipe\r\n\t],\r\n\tproviders: [\r\n\t\t{ provide: TRANSPORT_MODES, useValue: transportModes },\r\n\t\t{ provide: ROUTE_SORT_OPTIONS, useValue: routeSortOptions },\r\n\t\t{ provide: FLOW_TRANSITIONS, useClass: RouteSearchCalculateTransitions, multi: true },\r\n\t]\r\n})\r\nexport class RouteSearchModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { FlowBuilder } from '@metromobilite/m-features/core';\r\nimport { CalculateResultAction, CalculateStartAction } from './flows/calculate/calculate.actions';\r\nimport { RouteSearchParams, ROUTE_SORT_FIELD } from './route-search.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteSearchService {\r\n\r\n\tconstructor(\r\n\t\tprivate flowBuilder: FlowBuilder\r\n\t) { }\r\n\r\n\tcalculate(params: RouteSearchParams, sort: ROUTE_SORT_FIELD = ROUTE_SORT_FIELD.DURATION, order: 'asc' | 'desc' = 'asc') {\r\n\t\treturn this.flowBuilder.build<CalculateResultAction>(new CalculateStartAction({ params, sort, order }));\r\n\t}\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i5.MfRouteSearchLegNsvPipe","i1.RouteSearchItinerariesHelper","i5.MfItineraryContentLegComponent","i6.MfRouteSearchItineraryTimePipe","i10.MfRouteSearchItineraryTimePipe","i11.MfRouteSearchLegStopNamePipe","i12.MfRouteSearchLegNsvPipe","i2.RouteSearchModesHelper","i1","i2.RouteSearchParamsHelper","i3.RouteSearchResultsHelper","i4.RouteSearchItinerariesHelper","i5.RouteSearchCovHelper","i6.RouteSearchWrapperHelper","i7","i8"],"mappings":"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"}