{"version":3,"file":"metromobilite-m-features-realtime-data.mjs","sources":["../../../projects/lib-m-features/realtime-data/src/realtime-data-template.directive.ts","../../../projects/lib-m-features/realtime-data/src/strategies/strategy.interface.ts","../../../projects/lib-m-features/realtime-data/src/realtime-data/realtime-data.component.ts","../../../projects/lib-m-features/realtime-data/src/realtime-data/realtime-data.component.html","../../../projects/lib-m-features/realtime-data/src/realtime-icon/realtime-icon.component.ts","../../../projects/lib-m-features/realtime-data/src/realtime-data.token.ts","../../../projects/lib-m-features/realtime-data/src/realtime-data.service.ts","../../../projects/lib-m-features/realtime-data/src/strategies/chrono.strategy.ts","../../../projects/lib-m-features/realtime-data/src/strategies/per-lines.strategy.ts","../../../projects/lib-m-features/realtime-data/src/realtime-data.module.ts","../../../projects/lib-m-features/realtime-data/metromobilite-m-features-realtime-data.ts"],"sourcesContent":["import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n\tselector: '[mfRealtimeDataTemplate]'\r\n})\r\nexport class RealtimeDataTemplateDirective {\r\n\r\n\tconstructor() { }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { RealTimeDataItem } from '../models/realtime-data-item.model';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\nimport { RealtimeDataService } from '../realtime-data.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { StopTime } from '../models/cluster-stoptimes.model';\r\nimport { Line } from '@metromobilite/m-features/core';\r\n\r\n\r\nexport interface RealtimeDataStrategy {\r\n\tname: string;\r\n\r\n\tload(poi: Poi, originalItems: RealTimeDataItem[], lines: Line[]): Observable<[StopTime[], boolean]>;\r\n\r\n\tpreTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void;\r\n\r\n\tsort(a: RealTimeDataItem, b: RealTimeDataItem): number;\r\n\r\n\tpostTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void;\r\n}\r\n\r\nexport abstract class RealtimeDataStrategyBase implements RealtimeDataStrategy {\r\n\r\n\tname: string;\r\n\r\n\tconstructor(protected realtimeDataService: RealtimeDataService) { }\r\n\r\n\tload(poi: Poi, originalItems: RealTimeDataItem[], lines: Line[]): Observable<[StopTime[], boolean]> {\r\n\t\tconst lineIds = lines.map(line => line.id);\r\n\t\treturn this.realtimeDataService.getClusterStoptimes(poi.properties.code, lineIds.join(',')).pipe(\r\n\t\t\tmap(stopTimes => {\r\n\t\t\t\tthis.preTransform(poi, originalItems, stopTimes);\r\n\t\t\t\toriginalItems.sort((a, b) => this.sort(a, b));\r\n\t\t\t\tthis.postTransform(poi, originalItems, stopTimes);\r\n\t\t\t\treturn [stopTimes, originalItems.length === 0];\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tpreTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void { }\r\n\r\n\tabstract sort(a: RealTimeDataItem, b: RealTimeDataItem): number;\r\n\r\n\tpostTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void { }\r\n\r\n\r\n}\r\n\r\nexport const REALTIME_DATA_STRATEGY = new InjectionToken<RealtimeDataStrategy>('RealtimeDataStrategy');\r\n","import { Component, OnInit, Input, ContentChild, TemplateRef, HostBinding, OnDestroy, Inject, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { RealtimeDataTemplateDirective } from '../realtime-data-template.directive';\r\nimport { RealTimeDataItem } from '../models/realtime-data-item.model';\r\nimport { AppVisibilityService, Interval, IntervalBuilderService, Line} from '@metromobilite/m-features/core';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\nimport { REALTIME_DATA_STRATEGY, RealtimeDataStrategy } from '../strategies/strategy.interface';\r\nimport { Subject } from 'rxjs';\r\nimport { StopTime } from '../models/cluster-stoptimes.model';\r\n\r\n\r\n@Component({\r\n\tselector: 'mf-realtime-data',\r\n\ttemplateUrl: './realtime-data.component.html',\r\n\texportAs: 'realtimeData',\r\n})\r\nexport class RealtimeDataComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n\t@Input() poi: Poi;\r\n\t@Input() lines: Line[] = [];\r\n\t/**\r\n\t * Display/hide the loader.\r\n\t */\r\n\t@Input() loader = true;\r\n\t/**\r\n\t * Set the period between each loads.\r\n\t */\r\n\t@Input() period = 15000;\r\n\t/**\r\n\t * Enable/disable the auto load behavior.\r\n\t * If this property change during loading, only future loads will be disabled.\r\n\t */\r\n\t@Input() refresh = true;\r\n\t/**\r\n\t * The strategy to use to display realtime data (per-lines or chrono).\r\n\t * You can define a custom strategy by extending the RealtimeDataStrategyBase abstract class or implement the RealtimeDataStrategy interface.\r\n\t */\r\n\t@Input() strategy: 'per-lines' | 'chrono' | string = 'per-lines';\r\n\r\n\t@ContentChild(RealtimeDataTemplateDirective, { read: TemplateRef }) realtimeDataTemplate: TemplateRef<any>;\r\n\r\n\t@HostBinding('class.realtime-data') realtTimeDataClass = true;\r\n\r\n\titems: RealTimeDataItem[] = [];\r\n\tloading: boolean;\r\n\tunavailable = false;\r\n\tempty = false;\r\n\tdisplayLoader: boolean;\r\n\tanimationState: string | number = 'pre-init';\r\n\t/**\r\n\t * List of reasons for data unavailability.\r\n\t */\r\n\treasons: { reason: string }[] = [];\r\n\r\n\tprivate originalStopTimes: StopTime[];\r\n\tprivate interval: Interval;\r\n\tprivate loadUnsubscriber = new Subject();\r\n\tprivate componentUnsubscriber = new Subject();\r\n\r\n\tconstructor(\r\n\t\tprivate intervalBuilderService: IntervalBuilderService,\r\n\t\tprivate appVisibility: AppVisibilityService,\r\n\t\t@Inject(REALTIME_DATA_STRATEGY) private strategies: RealtimeDataStrategy[]\r\n\t) { }\r\n\r\n\tngOnInit(): void { }\r\n\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (changes.period) {\r\n\t\t\tif (this.interval) {\r\n\t\t\t\tthis.interval.destroy();\r\n\t\t\t\tif (this.refresh) {\r\n\t\t\t\t\tthis.buildInterval(changes.period.currentValue);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.refresh) {\r\n\t\t\t\t\tthis.buildInterval(changes.period.currentValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (changes.refresh && !changes.period) {\r\n\t\t\tif (this.interval) {\r\n\t\t\t\tif (changes.refresh.currentValue) {\r\n\t\t\t\t\tthis.interval.resume();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.interval.pause();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.period && changes.refresh.currentValue) {\r\n\t\t\t\t\tthis.buildInterval();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (changes.strategy && !changes.strategy.firstChange) {\r\n\t\t\tthis.items.splice(0, this.items.length);\r\n\t\t\tif (!this.loading) {\r\n\t\t\t\tconst strategy = this.strategies.find(strat => strat.name === this.strategy);\r\n\t\t\t\tstrategy.preTransform(this.poi, this.items, this.originalStopTimes);\r\n\t\t\t\tthis.items.sort((a, b) => strategy.sort(a, b));\r\n\t\t\t\tstrategy.postTransform(this.poi, this.items, this.originalStopTimes);\r\n\t\t\t} else {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (changes.poi) {\r\n\t\t\tthis.items = [];\r\n\t\t\tthis.animationState = 'pre-init';\r\n\t\t\tthis.load();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this.interval) {\r\n\t\t\tthis.interval.destroy();\r\n\t\t}\r\n\t\tthis.loadUnsubscriber.next();\r\n\t\tthis.loadUnsubscriber.complete();\r\n\t\tthis.componentUnsubscriber.next();\r\n\t\tthis.componentUnsubscriber.complete();\r\n\t}\r\n\r\n\tprivate load() {\r\n\t\tthis.reasons = [];\r\n\t\tthis.loading = true;\r\n\t\tlet timeout: any;\r\n\t\tif (timeout) {\r\n\t\t\tclearTimeout(timeout);\r\n\t\t}\r\n\t\ttimeout = setTimeout(() => {\r\n\t\t\tthis.displayLoader = true;\r\n\t\t}, 1000);\r\n\t\tconst strategy = this.strategies.find(strat => strat.name === this.strategy);\r\n\t\tthis.loadUnsubscriber.next();\r\n\t\tconst lines = this.lines.filter(line => line !== undefined);\r\n\t\tif (this.lines.length > 0 && lines.length === 0) {\r\n\t\t\tthis.reasons.push({ reason: 'line-not-found' });\r\n\t\t\tthis.unavailable = true;\r\n\t\t\tthis.displayLoader = false;\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tstrategy.load(this.poi, this.items, lines).pipe(\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tif (timeout) {\r\n\t\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\ttakeUntil(this.loadUnsubscriber)\r\n\t\t).subscribe(([stopTimes, isEmpty]) => {\r\n\t\t\tif (!stopTimes || stopTimes.length === 0) {\r\n\t\t\t\t// No wee-woo wee-woo\r\n\t\t\t\tthis.reasons.push({ reason: 'no-service' });\r\n\t\t\t\tthis.unavailable = true;\r\n\t\t\t\tthis.displayLoader = false;\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.originalStopTimes = stopTimes;\r\n\t\t\t\tthis.animationState = !['pre-init'].includes((this.animationState as string)) ? Math.random() : 'init';\r\n\t\t\t\tthis.empty = isEmpty;\r\n\t\t\t\tthis.unavailable = false;\r\n\t\t\t\tthis.displayLoader = false;\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t}\r\n\t\t}, error => {\r\n\t\t\tconsole.error(error);\r\n\t\t\tthis.reasons.push({ reason: 'server-error' });\r\n\t\t\tthis.unavailable = true;\r\n\t\t\tthis.displayLoader = false;\r\n\t\t\tthis.loading = false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate buildInterval(period = this.period) {\r\n\t\tthis.interval = this.intervalBuilderService.build(period);\r\n\t\tthis.interval.onTick$.subscribe(() => {\r\n\t\t\tif (this.appVisibility.visible) {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","<mat-progress-bar mode=\"query\" *ngIf=\"loader && displayLoader\"></mat-progress-bar>\r\n<ng-container *ngTemplateOutlet=\"realtimeDataTemplate; context:{ $implicit: items, loading: loading, unavailable: unavailable, empty: empty, animationState: animationState, reasons: reasons }\">\r\n</ng-container>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'mf-realtime-icon',\r\n\ttemplate: `\r\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n        <path d=\"m 8.77625,23.22375 2,-2 c -4.97,-4.97 -4.97,-13.03 0,-18 l -2,-2 c -6.07,6.07 -6.07,15.92 0,22 z\"/>\r\n        <path d=\"m 12.77625,19.22375 2,-2 c -2.76,-2.76 -2.76,-7.24 0,-10 l -2,-2 c -3.86,3.86 -3.86,10.13 0,14 z\"/>\r\n        <path d=\"m 16.77625,15.22375 3,-3 -3,-3 c -1.66,1.65 -1.66,4.34 0,6 z\"/>\r\n      </svg>\r\n  `,\r\n\tstyleUrls: ['./realtime-icon.component.scss']\r\n})\r\nexport class RealtimeIconComponent { }\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ChronoStrategyOptions } from './strategies/chrono.strategy';\r\n\r\n\r\nexport const STRATEGY_CHRONO_OPTIONS = new InjectionToken<ChronoStrategyOptions>('ChronoStrategyOptions');\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { StopTime } from './models/cluster-stoptimes.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RealtimeDataService {\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t) { }\r\n\r\n\tgetClusterStoptimes(cluster: string, line?: string): Observable<StopTime[]> {\r\n\t\tconst _params: any = {};\r\n\t\tif (line) {\r\n\t\t\t_params.route = line;\r\n\t\t}\r\n\t\tconst params = new HttpParams({ fromObject: _params });\r\n\t\treturn this.http.get<StopTime[]>(`@domain/@api/routers/default/index/clusters/${cluster}/stoptimes`, { params });\r\n\t}\r\n\r\n\t/**\r\n\t * We don't need all patterns (multiple patterns, same direction).\r\n\t * Merge stoptimes using the pattern.lastStop property.\r\n\t */\r\n\tmergeStopTimes(stopTimes: StopTime[]): StopTime[] {\r\n\t\treturn stopTimes.reduce((acc: StopTime[], stopTime) => {\r\n\t\t\tconst _st = acc.find(st => st.pattern.lastStop === stopTime.pattern.lastStop \r\n\t\t\t\t\t\t\t\t\t\t&& st.pattern.id.split(':').splice(0, 2).join(':') === stopTime.pattern.id.split(':').splice(0, 2).join(':')\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\tif (!_st) {\r\n\t\t\t\tacc.push(stopTime);\r\n\t\t\t} else {\r\n\t\t\t\t// Add time entries to the already added stopTime.\r\n\t\t\t\t_st.times.push(...stopTime.times);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t}, []);\r\n\t}\r\n\r\n\tfilterStopTimes(stopTimes: StopTime[]) {\r\n\t\treturn stopTimes.filter(stopTime => {\r\n\t\t\treturn (\r\n\t\t\t\tstopTime.times.length > 0 &&\r\n\t\t\t\t!stopTime.pattern.desc.includes('SANS VOYAGEUR') &&\r\n\t\t\t\tstopTime.pattern.lastStop !== stopTime.times[0].stopId\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sort stoptimes by the first time object on each stoptimes (using realtimeDeparture OR scheduledDeparture and serviceDay properties).\r\n\t * The times property of each stoptimes must be sorted before using this method.\r\n\t */\r\n\tsortStopTimes(a: StopTime, b: StopTime) {\r\n\t\t// Copied from pwa.\r\n\t\tif (!a || a.times.length === 0) return -1;\r\n\t\tif (!b.times || b.times.length === 0) return 1;\r\n\t\tconst depA = (a.times[0].realtimeDeparture ? a.times[0].realtimeDeparture : a.times[0].scheduledDeparture) + a.times[0].serviceDay;\r\n\t\tconst depB = (b.times[0].realtimeDeparture ? b.times[0].realtimeDeparture : b.times[0].scheduledDeparture) + b.times[0].serviceDay;\r\n\t\tif (depA > depB) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (depA < depB) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sort the times array of a stoptime.\r\n\t */\r\n\tsortTimes(stopTime: StopTime) {\r\n\t\tstopTime.times.sort((a, b) => {\r\n\t\t\t// Copied from pwa.\r\n\t\t\tconst depA = (a.realtimeDeparture ? a.realtimeDeparture : a.scheduledDeparture) + a.serviceDay;\r\n\t\t\tconst depB = (b.realtimeDeparture ? b.realtimeDeparture : b.scheduledDeparture) + b.serviceDay;\r\n\t\t\tif (depA > depB) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\tif (depA < depB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\treturn stopTime;\r\n\t}\r\n\r\n\tparseStopTimes(stopTimes: StopTime[]) {\r\n\t\tconst _stopTimes = this.filterStopTimes(this.mergeStopTimes(stopTimes));\r\n\t\t//const _stopTimes = this.filterStopTimes(stopTimes);\r\n\t\t_stopTimes.map(stopTime => {\r\n\t\t\tthis.sortTimes(stopTime);\r\n\t\t});\r\n\t\t_stopTimes.sort(this.sortStopTimes);\r\n\t\treturn _stopTimes;\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { RealtimeDataStrategyBase } from './strategy.interface';\r\nimport { RealTimeDataItem } from '../models/realtime-data-item.model';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\nimport { RealtimeDataService } from '../realtime-data.service';\r\nimport { STRATEGY_CHRONO_OPTIONS } from '../realtime-data.token';\r\nimport { StopTime } from '../models/cluster-stoptimes.model';\r\n\r\nexport interface ChronoStrategyOptions {\r\n\tmaximumPresenceLine: number;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ChronoStrategy extends RealtimeDataStrategyBase {\r\n\r\n\tname = 'chrono';\r\n\r\n\tconstructor(\r\n\t\tprotected realtimeDataService: RealtimeDataService,\r\n\t\t@Inject(STRATEGY_CHRONO_OPTIONS) private options: ChronoStrategyOptions\r\n\t) {\r\n\t\tsuper(realtimeDataService);\r\n\t}\r\n\r\n\tpreTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void {\r\n\t\tconst _stopTimes: StopTime[] = this.realtimeDataService.filterStopTimes(stopTimes)\r\n\t\t\t// Flatten times => 1 stoptime per time.\r\n\t\t\t.reduce((list, stopTime) => {\r\n\t\t\t\tstopTime.times.forEach(time => {\r\n\t\t\t\t\tlist.push({\r\n\t\t\t\t\t\t...stopTime,\r\n\t\t\t\t\t\ttimes: [time]\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\treturn list;\r\n\t\t\t}, []);\r\n\t\t// Deletes useless items.\r\n\t\titems.forEach((stopTime, index) => {\r\n\t\t\tconst found = _stopTimes.find(item => item.times[0].tripId === stopTime.times[0].tripId);\r\n\t\t\tif (!found) {\r\n\t\t\t\titems.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t_stopTimes.forEach(newStopTime => {\r\n\t\t\tconst found = items.find(item => item.times[0].tripId === newStopTime.times[0].tripId);\r\n\t\t\tif (!found) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\tpattern: newStopTime.pattern,\r\n\t\t\t\t\ttimes: newStopTime.times,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\tline: newStopTime.pattern.id.split(':').splice(0, 2).join(':'),\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfound.times = newStopTime.times;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsort(a: RealTimeDataItem, b: RealTimeDataItem): number {\r\n\t\treturn this.realtimeDataService.sortStopTimes(a, b);\r\n\t}\r\n\r\n\tpostTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]) {\r\n\t\tconst presences: { [key: string]: number } = {};\r\n\t\t// Control the line presence.\r\n\t\titems.forEach((item, index) => {\r\n\t\t\tlet id = item.pattern.id.split(':').splice(0, 2).join(':');\r\n\t\t\tid += `_${item.pattern.dir}`;\r\n\t\t\tif (!presences[id]) {\r\n\t\t\t\tpresences[id] = 0;\r\n\t\t\t}\r\n\t\t\tif (presences[id] >= this.options.maximumPresenceLine) {\r\n\t\t\t\t(item as any)._toDelete = true;\r\n\t\t\t}\r\n\t\t\tpresences[id] += 1;\r\n\t\t});\r\n\t\t// Delete items.\r\n\t\titems.filter(item => (item as any)._toDelete).forEach(item => {\r\n\t\t\tconst index = items.findIndex(i => i.times[0].tripId === item.times[0].tripId);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\titems.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RealtimeDataStrategyBase } from './strategy.interface';\r\nimport { RealTimeDataItem } from '../models/realtime-data-item.model';\r\nimport { Poi } from '@metromobilite/m-features/reference';\r\nimport { RealtimeDataService } from '../realtime-data.service';\r\nimport { StopTime } from '../models/cluster-stoptimes.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PerLinesStrategy extends RealtimeDataStrategyBase {\r\n\r\n\tname = 'per-lines';\r\n\r\n\tconstructor(\r\n\t\tprotected realtimeDataService: RealtimeDataService\r\n\t) {\r\n\t\tsuper(realtimeDataService);\r\n\t}\r\n\r\n\tpreTransform(poi: Poi, items: RealTimeDataItem[], stopTimes: StopTime[]): void {\r\n\t\tconst _stopTimes = this.realtimeDataService.parseStopTimes(stopTimes);\r\n\t\t// Deletes useless items.\r\n\t\titems.forEach((stopTime, index) => {\r\n\t\t\tconst found = _stopTimes.find(item => {\r\n\t\t\t\tconst [stNetwork, stLine, _] = stopTime.pattern.id.split(':');\r\n\t\t\t\tconst [refNetwork, refLine, __] = item.pattern.id.split(':');\r\n\t\t\t\tconst stDir = stopTime.pattern.dir;\r\n\t\t\t\tconst refDir = item.pattern.dir;\r\n\t\t\t\treturn stNetwork === refNetwork && stLine === refLine && stopTime.pattern.lastStop === item.pattern.lastStop && refDir === stDir;\r\n\t\t\t});\r\n\t\t\tif (!found) {\r\n\t\t\t\titems.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t\t_stopTimes.forEach(newStopTime => {\r\n\t\t\tconst found = items.find(item => {\r\n\t\t\t\tconst [stNetwork, stLine, _] = newStopTime.pattern.id.split(':');\r\n\t\t\t\tconst [refNetwork, refLine, __] = item.pattern.id.split(':');\r\n\t\t\t\tconst stDir = newStopTime.pattern.dir;\r\n\t\t\t\tconst refDir = item.pattern.dir;\r\n\t\t\t\treturn stNetwork === refNetwork && stLine === refLine && newStopTime.pattern.lastStop === item.pattern.lastStop && refDir === stDir;\r\n\t\t\t});\r\n\t\t\tif (!found) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\tpattern: newStopTime.pattern,\r\n\t\t\t\t\ttimes: newStopTime.times,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\tline: newStopTime.pattern.id.split(':').splice(0, 2).join(':'),\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfound.times = newStopTime.times;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsort(a: RealTimeDataItem, b: RealTimeDataItem): number {\r\n\t\tconst [an, al, ad, ap] = a.pattern.id.split(':');\r\n\t\tconst [bn, bl, bd, bp] = b.pattern.id.split(':');\r\n\t\tif (an === bn) {\r\n\t\t\tif (isNaN(+al) && !isNaN(+bl)) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (isNaN(+bl) && !isNaN(+al)) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else if (al.length === 1 && bl.length > 1) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (bl.length === 1 && al.length > 1) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else {\r\n\t\t\t\tif (al === bl) {\r\n\t\t\t\t\tif (ad === bd) {\r\n\t\t\t\t\t\treturn +ap > +bp ? 1 : -1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn +ad > +bd ? 1 : -1;\r\n\t\t\t\t}\r\n\t\t\t\treturn al > bl ? 1 : al < bl ? -1 : 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (an === 'SEM' && bn !== an) return -1;\r\n\t\t\tif (an === 'C38' && ['GSV', 'TPV'].includes(bn)) return -1;\r\n\t\t\tif (an === 'GSV' && ['TPV'].includes(bn)) return -1;\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\nimport { RealtimeDataComponent } from './realtime-data/realtime-data.component';\r\nimport { RealtimeDataTemplateDirective } from './realtime-data-template.directive';\r\nimport { ReferenceModule } from '@metromobilite/m-features/reference';\r\nimport { CoreModule } from '@metromobilite/m-features/core';\r\nimport { RealtimeIconComponent } from './realtime-icon/realtime-icon.component';\r\nimport { REALTIME_DATA_STRATEGY } from './strategies/strategy.interface';\r\nimport { ChronoStrategy } from './strategies/chrono.strategy';\r\nimport { PerLinesStrategy } from './strategies/per-lines.strategy';\r\nimport { STRATEGY_CHRONO_OPTIONS } from './realtime-data.token';\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tRealtimeDataComponent,\r\n\t\tRealtimeDataTemplateDirective,\r\n\t\tRealtimeIconComponent,\r\n\t],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tHttpClientModule,\r\n\t\tCoreModule,\r\n\t\tReferenceModule,\r\n\t\tMatProgressBarModule\r\n\t],\r\n\tproviders: [\r\n\t\t{ provide: STRATEGY_CHRONO_OPTIONS, useValue: { maximumPresenceLine: 3 } },\r\n\t\t{ provide: REALTIME_DATA_STRATEGY, useClass: ChronoStrategy, multi: true },\r\n\t\t{ provide: REALTIME_DATA_STRATEGY, useClass: PerLinesStrategy, multi: true },\r\n\t],\r\n\texports: [\r\n\t\tRealtimeDataComponent,\r\n\t\tRealtimeDataTemplateDirective,\r\n\t\tRealtimeIconComponent,\r\n\t]\r\n})\r\nexport class RealtimeDataModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.RealtimeDataService"],"mappings":"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"}