-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
AmeyPhil.tsx
5459 lines (5209 loc) · 129 KB
/
AmeyPhil.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
import React, { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react'
import StationAnnouncementSystem from '@announcement-data/StationAnnouncementSystem'
import CallingAtSelector, { CallingAtPoint } from '@components/CallingAtSelector'
import CustomAnnouncementPane, { ICustomAnnouncementPaneProps, ICustomAnnouncementPreset } from '@components/PanelPanes/CustomAnnouncementPane'
import CustomButtonPane from '@components/PanelPanes/CustomButtonPane'
import { getStationByCrs } from '@data/StationManipulators'
import crsToStationItemMapper, { stationItemCompleter } from '@helpers/crsToStationItemMapper'
import { AudioItem, CustomAnnouncementTab } from '../../AnnouncementSystem'
import FullscreenIcon from 'mdi-react/FullscreenIcon'
import DelayCodeMapping from './DarwinDelayCodes_Male1.json'
import NREPowered from '@assets/NRE_Powered_logo.png'
export type ChimeType = 'three' | 'four' | 'none'
interface INextTrainAnnouncementOptions {
chime: ChimeType
platform: string
hour: string
min: string
isDelayed: boolean
toc: string
terminatingStationCode: string
vias: CallingAtPoint[]
callingAt: CallingAtPoint[]
coaches: string | null
}
interface IDisruptedTrainAnnouncementOptions {
chime: ChimeType
hour: string
min: string
toc: string
terminatingStationCode: string
vias: CallingAtPoint[]
disruptionType: 'delay' | 'delayedBy' | 'cancel'
disruptionReason: string | string[]
delayTime: string
}
interface IFastTrainAnnouncementOptions {
chime: ChimeType
platform: string
fastTrainApproaching: boolean
}
interface ITrainApproachingAnnouncementOptions {
chime: ChimeType
platform: string
hour: string
min: string
isDelayed: boolean
toc: string
terminatingStationCode: string
vias: CallingAtPoint[]
originStationCode: string
callingAt?: CallingAtPoint[]
}
interface SplitInfoStop {
crsCode: string
shortPlatform: string
requestStop: boolean
portion: {
position: 'any' | 'front' | 'middle' | 'rear' | 'unknown'
length: number | null
}
}
export default class AmeyPhil extends StationAnnouncementSystem {
readonly NAME: string = 'Amey/Ditra - Phil Sayer'
readonly ID: string = 'AMEY_PHIL_V1'
readonly FILE_PREFIX: string = 'station/ketech/phil'
readonly SYSTEM_TYPE = 'station'
protected readonly BEFORE_TOC_DELAY: number = 150
protected readonly BEFORE_SECTION_DELAY: number = 870
readonly DelayCodeMapping = DelayCodeMapping
protected readonly callingPointsOptions = {
beforeCallingAtDelay: this.BEFORE_SECTION_DELAY,
afterCallingAtDelay: 0,
betweenStopsDelay: 320,
aroundAndDelay: 100,
}
protected readonly requestStopOptions = {
andId: 'm.or-2',
}
get DEFAULT_CHIME(): ChimeType {
return 'four'
}
private get announcementPresets(): Readonly<Record<string, ICustomAnnouncementPreset[]>> {
return {
nextTrain: [
{
name: '12:28 | SN Littlehampton to Brighton',
state: {
chime: this.DEFAULT_CHIME,
platform: '2',
hour: '12',
min: '28',
toc: 'southern',
terminatingStationCode: 'BTN',
vias: [],
callingAt: ['ANG', 'GBS', 'DUR', 'WWO', 'WRH', 'SWK', 'PLD', 'HOV'].map(crsToStationItemMapper),
coaches: '8 coaches',
},
},
{
name: '16:05 | SN Victoria to Portsmouth & Bognor',
state: {
chime: this.DEFAULT_CHIME,
platform: '12',
hour: '16',
min: '05',
toc: 'southern',
terminatingStationCode: 'PMS',
vias: [],
callingAt: [
'CLJ',
'ECR',
'GTW',
'TBD',
'CRW',
{
crsCode: 'HRH',
splitType: 'splits' as const,
splitForm: 'rear.4',
splitCallingPoints: ['CHH', 'BIG', 'PUL', 'AMY', 'ARU', 'FOD', 'BAA', 'BOG'].map(crsToStationItemMapper),
},
'BAA',
'CCH',
'FSB',
'BOH',
'SOB',
'EMS',
'HAV',
'FTN',
].map(stationItemCompleter),
coaches: '8 coaches',
},
},
{
name: '17:15 | GX Brighton to London Victoria',
state: {
chime: this.DEFAULT_CHIME,
platform: '5',
hour: '17',
min: '15',
toc: 'gatwick express',
terminatingStationCode: 'VIC',
vias: ['GTW'].map(crsToStationItemMapper),
callingAt: ['PRP', 'HSK', 'BUG', 'HHE', 'GTW'].map(crsToStationItemMapper),
coaches: '8 coaches',
},
},
{
name: '11:18 | VT Euston to Edinburgh',
state: {
chime: this.DEFAULT_CHIME,
platform: '6',
hour: '11',
min: '18',
toc: 'virgin pendolino',
terminatingStationCode: 'EDB',
vias: ['BHM'].map(crsToStationItemMapper),
callingAt: [
'MKC',
'RUG',
'COV',
'BHI',
'BHM',
'SAD',
'WVH',
'STA',
'CRE',
'WBQ',
'WGN',
'PRE',
'LAN',
'PNR',
'CAR',
{ crsCode: 'HYM', shortPlatform: 'front.9' },
].map(stationItemCompleter),
coaches: '11 coaches',
},
},
{
name: '13:15 | VT Manchester to Euston',
state: {
chime: this.DEFAULT_CHIME,
platform: '6',
hour: '13',
min: '15',
toc: 'virgin pendolino',
terminatingStationCode: 'EUS',
vias: [],
callingAt: ['SPT', 'MAC', 'SOT', 'RUG', 'MKC'].map(stationItemCompleter),
coaches: '9 coaches',
},
},
{
name: '08:20 | XC Aberdeen to Penzance',
state: {
chime: this.DEFAULT_CHIME,
platform: '3',
hour: '08',
min: '20',
toc: 'crosscountry',
terminatingStationCode: 'PNZ',
vias: ['LDS'].map(crsToStationItemMapper),
callingAt: [
'STN',
'MTS',
'ARB',
'DEE',
'LEU',
'CUP',
'LDY',
'MNC',
'KDY',
'INK',
'HYM',
'EDB',
'BWK',
'ALM',
'NCL',
'DHM',
'DAR',
'YRK',
'LDS',
'WKF',
'SHF',
'DBY',
'BUT',
'BHM',
'CNM',
'BPW',
'BRI',
'TAU',
'TVP',
'EXD',
'NTA',
'TOT',
'PLY',
'LSK',
'BOD',
'SAU',
'TRU',
'RED',
'SER',
].map(crsToStationItemMapper),
coaches: '5 coaches',
},
},
{
// http://www.1s76.com/1S76%202008.htm
name: '08:20 | 1O23 XC Manchester to Brighton (2008)',
state: {
chime: this.DEFAULT_CHIME,
platform: '3',
hour: '08',
min: '20',
toc: 'crosscountry',
terminatingStationCode: 'BTN',
vias: ['BHM', 'KPA'].map(crsToStationItemMapper),
callingAt: ['SPT', 'MAC', 'CNG', 'SOT', 'WVH', 'BHM', 'LMS', 'BAN', 'OXF', 'RDG', 'KPA', 'ECR', 'GTW', 'HHE'].map(
crsToStationItemMapper,
),
coaches: '5 coaches',
},
},
{
name: '18:07 | Chiltern MYB - Stourbridge',
state: {
chime: this.DEFAULT_CHIME,
platform: '2',
hour: '18',
min: '07',
toc: 'chiltern railways',
terminatingStationCode: 'SBJ',
vias: [],
callingAt: ['HDM', 'BCS', 'BAN', 'LMS', 'WRW', 'WRP', 'DDG', 'SOL', 'BMO', 'BSW', 'ROW'].map(crsToStationItemMapper),
coaches: '5 coaches',
},
},
{
name: '12:50 | SN Eastbourne - Ashford',
state: {
chime: this.DEFAULT_CHIME,
platform: '2',
hour: '12',
min: '50',
toc: 'southern',
terminatingStationCode: 'AFK',
vias: [],
callingAt: [
'HMD',
'COB',
'PEV',
'CLL',
'BEX',
'SLQ',
'HGS',
'ORE',
{ crsCode: 'TOK', shortPlatform: 'front.1' },
'WSE',
'RYE',
{ crsCode: 'APD', shortPlatform: 'front.2' },
'HMT',
].map(stationItemCompleter),
coaches: '3 coaches',
},
},
],
disruptedTrain: [
{
name: '21:39 +44 | SN Havant to SOU',
// Modelled on https://www.realtimetrains.co.uk/service/gb-nr:Y50425/2023-11-24/detailed
state: {
chime: this.DEFAULT_CHIME,
hour: '21',
min: '39',
toc: 'southern',
terminatingStationCode: 'SOU',
vias: ['FRM'].map(crsToStationItemMapper),
disruptionType: 'delayedBy',
delayTime: '44',
disruptionReason: 'awaiting a member of the train crew',
},
},
],
}
}
protected get AVAILABLE_TOCS() {
return {
withServiceToFrom: [
'a replacement bus',
'additional',
'additional Chiltern Railways',
'additional football special',
'Alphaline',
'Anglia Railways',
'Anglia Railways Train',
'Arriva CrossCountry',
'Arriva Trains Merseyside',
'Arriva Trains Northern',
'Arriva Trains Wales',
'Blackheath and Woolwich',
'Blackheath and Woolwich Arsenal',
'Blackheath and Woolwich Arsenal Line',
'c2c',
'c2c Rail',
'Cardiff Railways',
'Central Trains',
'Charter',
'Chiltern Line',
'Chiltern Railway Company',
'Chiltern Railways',
'Chiselhurst and Maidstone East',
'Chiselhurst and Maidstone East Line',
'Chiselhurst Sevenoaks and Canterbury West',
'Chiselhurst Sevenoaks and Canterbury West Line',
'Connex',
'Connex Express',
'Connex Metro',
'Connex Racecourse Special',
'Connex Rail',
'Connex South Central',
'Connex South Eastern',
'Country',
'CrossCountry',
'diverted',
'East Midlands',
'East Midlands Trains',
'Eurostar',
'express',
'First Capital Connect',
'First Great Western',
'First Great Western Adelante',
'First Great Western Atlantic Coast Express',
'First Great Western Bristolian',
'First Great Western Cathedrals Express',
'First Great Western Cheltenham Flier',
'First Great Western Cheltenham Spa Express',
'First Great Western Cornish Riviera',
'First Great Western Devon Belle',
'First Great Western Golden Hind',
'First Great Western Hibernian',
'First Great Western High Speed',
'First Great Western Intercity',
'First Great Western Link',
'First Great Western Mayflower',
'First Great Western Merchant Venturer',
'First Great Western Motorail',
'First Great Western Night Riviera',
'First Great Western Pembroke Coast Express',
'First Great Western Red Dragon',
'First Great Western Royal Duchy',
'First Great Western Royal Wessex',
'First Great Western St David',
'First Great Western Torbay Express',
'First Transpennine Express',
'First Transpennine Service',
'football special',
'for seat reservations holders only',
'Gatwick Express',
'GNER',
'Grand Central',
'Great Eastern',
'Great Eastern Railway',
'Great North Eastern Railway',
'Great North Eastern Railways',
'Great North Eastern Railways White Rose',
'Great North Eastern Railways Yorkshire Pullman',
'Great Northern',
'Great Western',
'Heathrow Express',
'Holidaymaker',
'Holidaymaker Express',
'Hull Trains',
'Island Line',
'London Midland',
'London Midland City',
'London Midland Express',
'London Overground',
'London Transport Buses',
'London Underground',
'LTS Rail',
'Maidstone East and Ashford International Line',
'Maidstone East and Ashford Line',
'Maidstone East and Canterbury West Line',
'Maidstone East and Dover Priory Line',
'Merseyside Electrics',
'Midland Mainline',
'Midland Mainline High Speed Train',
'Midland Mainline Turbostar',
'National Express',
'National Express East Coast',
'New Southern Railway',
'New Southern Railway Brighton Express',
'North London Railway',
'Northern',
'Northern Rail',
'Northern Spirit',
'One',
'One Anglia',
'Orient Express',
'private charter train',
'Racecourse Special',
'replacement bus',
'return charter train',
'rugby special',
'ScotRail',
'ScotRail Railways',
'Silverlink County',
'Silverlink Metro',
'South Central',
'South Central Trains',
'South West Trains',
'Southeastern',
'Southeastern Trains',
'Southern',
'Southern Railway',
'Southern Railway Brighton Express',
'special charter',
'Stansted Express',
'steam charter train',
'stopping',
'Tarka Line',
'Thames Trains',
'Thameslink',
'Thameslink City Flier',
'Thameslink City Metro',
'The Mid Hants Steam Railway',
'The National Express East Coast',
// 'The Swanage Railway',
'The Watercress Line',
'The Yorkshire Pullman',
'Tramlink',
'Tyne and Wear Metro',
'Valley Lines',
'Virgin Pendolino',
'Virgin Trains',
'Virgin Trains Armada',
'Virgin Trains Cornish Scot',
'Virgin Trains Cornishman',
'Virgin Trains Cross Country',
'Virgin Trains Devon Scot',
'Virgin Trains Devonian',
'Virgin Trains Dorset Scot',
'Virgin Trains Midland Scot',
'Virgin Trains Pines Express',
'Virgin Trains Sussex Scot',
'Virgin Trains Wessex Scot',
'Virgin Voyager',
'WAGN',
'Wales and Borders',
'Wales and West',
'Wales and West Alphaline',
'Wales and West Weymouth Sand and Cycle Explorer',
'Wessex',
'West Anglia',
'West Anglia Great Northern Railway',
'West Anglia Great Northern Railways',
'West Coast Railway Company',
'White Rose',
'Yorkshire Pullman',
],
standaloneOnly: [
'Channel Tunnel Rail Link',
'Chiltern Railway company',
'Croydon Tramlink',
'First Transpennine',
'Great Western Railway',
'intercity charter train',
'international',
'London North Western Railway',
'mainline',
'North London Railways',
'North Western Trains',
'Regional Railways charter train',
'ScotRail Express',
'South London Metro',
'South Western Railway',
'Sussex Scot',
'Transpennine',
'Transpennine Express',
'Virgin Trains the Sussex Scot',
'West Midlands Railway',
'West Yorkshire metro train',
],
}
}
protected get DISRUPTION_REASONS() {
return [
'a broken down freight train',
'a broken down preceding train',
'a broken down train',
'a broken rail',
'a cable fire',
'a chemical spillage',
'a currently unidentified reason which is under investigation',
'a customer having been taken ill on a preceding train',
'a customer having been taken ill on this train',
'a dangerous gas leak',
'a derailment',
'a driver shortage',
'a failed train',
'a failure of level crossing apparatus',
'a failure of signalling equipment',
'a fallen tree on the line',
'a fatality',
'a fault on a level crossing',
'a fault on a preceding that has now been rectified',
'a fault on a preceding train',
'a fault on the train that has now been rectified',
'a fault on the train',
'a fault on this train which cannot be rectified',
'a fault on this train which is being attended to',
'a fault on trackside equipment',
'a fault that has occurred whilst attaching coaches to this train',
'a fault that has occurred whilst detaching coaches from this train',
'a fault with the door mechanism on board a preceding train',
'a fault with the door mechanism on board this train',
'a fire',
'a gas leak in the area',
'a lack of suitable carriages',
'a landslide',
'a landslip',
'a late-running preceding service',
'a lightning strike affecting the signalling equipment',
'a lightning strike',
'a line blockage',
'a lineside fire',
'a major electrical power fault',
'a mechanical fault on a level crossing',
'a member of staff providing assistance to a passenger',
'a passenger incident',
'a passenger requiring urgent attention',
'a points failure',
'a power failure',
'a problem on property adjacent to the railway',
'a report of an injury to a person on the track',
'a road vehicle damaging a level crossing',
'a road vehicle on the line',
'a road vehicle striking a railway bridge',
'a security alert',
'a shortage of available coaches',
'a shortage of serviceable trains',
'a shortage of train dispatch staff',
'a signal failure',
'a signalling apparatus failure',
'a slow-running preceding freight train running behind schedule',
'a slow-running preceding train with a technical fault',
'a staff shortage',
'a suspected fatality',
'a technical fault on the service',
'a technical fault to lineside equipment',
'a technical problem',
'a temporary fault with the signalling equipment',
'a temporary shortage of drivers',
'a temporary shortage of train crews',
'a temporary speed restriction because of signalling equipment repairs',
'a temporary speed restriction because of track repairs',
// 'a temporary speed restriction',
'a ticket irregularity on board a preceding train',
'a ticket irregularity on board this train',
'a track circuit failure',
'a train failure',
'a train speed restriction caused by a technical fault on this train',
'additional cleaning duties',
'additional coaches being attached to the train',
'additional maintenance requirements at the depot',
'additional safety duties being carried out on board this train',
'additional train movements to remove a broken down train',
'adverse weather conditions',
// 'after having been held awaiting late running connection (old cut)',
// 'after having been held for a late running connection',
'ambulance attending an incident on the train',
'ambulance attending an incident on this train',
'an accident on a level crossing',
'an accident to a member of the public',
'an act of vandalism on this train',
'an earlier act of vandalism on this train',
'an earlier blockage of the line',
'an earlier broken down train causing congestion',
'an earlier broken down train',
'an earlier electrical power supply problem',
'an earlier fallen tree on the line',
'an earlier fallen tree',
'an earlier fatality',
'an earlier fault on a level crossing',
'an earlier fault that occurred whilst attaching coaches to this train',
'an earlier fault that occurred whilst detaching coaches from this train',
'an earlier fault with the door mechanism on board a preceding train',
'an earlier fault with the door mechanism on board this train',
'an earlier fault with the signalling equipment',
'an earlier landslide',
'an earlier lineside fire',
'an earlier road vehicle striking a railway bridge',
'an earlier security alert',
'an earlier trespassing incident causing congestion',
'an earlier trespassing incident',
'an electrical power supply problem',
'an external cause beyond our control',
'an incident on the line',
'an injury to a person on the track',
'an obstruction on the line',
'animals on the railway line',
'animals on the track',
'awaiting a connecting service',
'awaiting a member of the train crew',
// 'awaiting a member of train crew',
'awaiting a portion of the train',
'awaiting a replacement driver',
'awaiting an available platform because of service congestion',
'awaiting replacement coaches',
'awaiting signal clearance',
'bad weather conditions',
'being held awaiting a late running connection',
'being held awaiting a replacement bus connection',
'cancellation of the incoming service',
'caused by servicing problems in the depot',
'children playing near the line',
'christmas holidays',
'coaches being detached from this train',
'conductor rail problems',
'confusion caused by a fault with the station information board',
'congestion caused by a failed train',
'congestion',
'crewing difficulties',
'damaged track',
'debris blown on the line',
'debris on the line',
'delay to a preceding train',
'earlier emergency track repairs',
'earlier engineering works',
'earlier overrunning engineering work',
'earlier reports of a disturbance on board this train',
'earlier reports of animals on the line',
'earlier reports of debris on the line',
'earlier reports of trespassers on the line',
'earlier vandalism',
'electric conductor rail problems',
'electrical problems with the train',
'emergency engineering work',
'emergency track repairs',
'engineering works',
'engineering work',
'extreme weather conditions',
'failure of a preceding train',
'flooding on the line',
'flooding',
'fog',
'following signal staff instructions',
'heavy rain',
'high winds',
'industrial action',
// 'large numbers of passengers alighting from the trains at',
// 'large numbers of passengers joining the trains at',
'late running of a previous train',
'mechanical problems with the train',
'mechanical problems',
'no driver available',
'objects being thrown onto the line',
'objects on the line',
'on a preceding train',
'overcrowding caused by the short formation of this service today',
'overcrowding caused by the',
'overcrowding on the train',
'overcrowding',
'overhead electric line problems',
'overhead line damage',
'overhead line problems',
'overrunning engineering work',
'passenger illness',
'police activity on the line',
'police attending a disturbance on a preceding train',
'police attending a disturbance on this train',
'police attending an incident on the train',
'police attending an incident on this train',
'police persuing suspects on the line',
'poor rail conditions caused by frost',
'poor rail conditions caused by leaf fall',
'poor rail conditions',
'power car problems',
'refueling',
'replacing emergency equipment on this train',
'reports of a blockage on the line',
'reports of a disturbance on board this train',
'reports of animals on the line',
'reports of debris on the line',
'reports of trespass on the line',
'revenue protection officers attending this train',
'severe weather conditions',
'short formation of this train',
'signal testing',
'signalling difficulties',
'signalling equipment repairs',
'sliding train door problems',
'slippery rail conditions',
'snow',
'staff shortages',
'staff sickness',
'suspected damage to a railway bridge by a road vehicle',
'suspected damage to a railway bridge',
'suspected terrorist threat',
'the advice of the emergency services',
'the emergency communication cord being activated on this train',
'the emergency communication cord being activated',
'the emergency communication cord being pulled on the service',
'the emergency communication cord being pulled on the train',
'the emergency cord being pulled on the service',
'the emergency cord being pulled on the train',
'the extreme heat',
'the fire brigade attending an incident on the train',
'the fire brigade attending an incident on this train',
'the late arrival of an incoming train',
// 'the late arrival of the coaches and train crew to form this service',
'the late running of a preceding train',
'the london fire brigade attending an incident on the train',
'the london fire brigade attending an incident on this train',
'the previous service being delayed',
'the short formation of this train',
'the train being diverted from its scheduled route',
'the train running on reduced engine power',
'the unfortunate action of vandals',
'third rail problems',
'this train making additional stops on its journey',
// ['a temporary speed restriction', 'to run at a reduced speed while inspecting the line'],
'track repairs',
'train being held awaiting an available platform',
'train door problems',
'trespass on the line',
'vandalism on a preceding train',
'vandalism on the service',
'vandalism',
// 'who has been delayed by the earlier disruption',
// 'who in turn has been delayed by the current disruption',
// 'who is delayed on a late-running service',
]
}
get PLATFORMS() {
return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
.flatMap(x => [`${x}`, `${x}a`, `${x}b`, `${x}c`, `${x}d`])
.concat(['13', '14', '15', '16', '17', '18', '19', '20', 'a', 'b'])
}
get STATIONS() {
return [
'AAP',
'AAT',
'ABA',
'ABC',
'ABD',
'ABE',
'ABH',
'ABW',
'ABY',
'ACB',
'ACC',
'ACG',
'ACH',
'ACK',
'ACL',
'ACN',
'ACR',
'ACT',
'ADC',
'ADD',
'ADK',
'ADL',
'ADM',
'ADN',
'ADR',
'ADS',
'ADV',
'ADW',
'AFK',
'AFS',
'AFV',
'AGL',
'AGS',
'AGT',
'AGV',
'AHD',
'AHN',
'AHS',
'AHT',
'AHV',
'AIG',
'AIN',
'AIR',
'ALB',
'ALD',
'ALF',
'ALK',
'ALM',
'ALN',
'ALP',
'ALR',
'ALT',
'ALV',
'ALW',
'ALX',
'AMB',
'AMF',
'AML',
'AMR',
'AMT',
'AMY',
'ANC',
'AND',
'ANF',
'ANG',
'ANL',
'ANN',
'ANS',
'ANZ',
'AON',
'APB',
'APD',
'APF',
'APG',
'APP',
'APS',
'ARB',
'ARD',
'ARG',
'ARL',
'ARM',
'ARN',
'ARR',
'ART',
'ARU',
'ASB',
'ASC',
'ASG',
'ASH',
'ASK',
'ASN',
'ASP',
'ASS',
'AST',
'ASY',
'ATB',
'ATH',
'ATL',
'ATN',
'ATT',
'AUD',
'AUG',
'AUI',
'AUK',
'AUR',
'AUW',
'AVF',
'AVM',
'AVN',
'AVY',
'AWK',
'AWM',
'AWT',
'AXM',
'AXP',
'AYH',
'AYL',
'AYP',
'AYR',
'AYS',
'AYW',
'BAA',
'BAB',
'BAC',
'BAD',
'BAG',
'BAH',
'BAI',
'BAJ',
'BAK',
'BAL',
'BAM',
'BAN',
'BAR',
'BAS',
'BAT',
'BAU',
'BAV',
'BAW',
'BAY',
'BBG',
'BBK',
'BBL',
'BBN',
'BBS',
'BBW',
'BCB',
'BCC',
'BCE',
'BCF',
'BCG',
'BCH',
'BCJ',
'BCK',
'BCN',
'BCS',
'BCU',
'BCV',
'BCY',
'BDA',
'BDB',
'BDC',
'BDG',
'BDH',
'BDI',
'BDK',
'BDL',
'BDM',
'BDN',
'BDQ',
'BDS',
'BDT',
'BDW',
'BDY',
'BEA',
'BEB',
'BEC',
'BEE',
'BEF',
'BEG',
'BEH',
'BEL',
'BEM',
'BEN',
'BES',
'BET',
'BEU',
'BEV',
'BEX',
'BEY',
'BFD',
'BFE',
'BFF',
'BFN',
'BFR',
'BGA',
'BGD',
'BGE',
'BGG',
'BGH',
'BGI',
'BGL',
'BGM',