Add station data and parser for the script.

Need to do:
 - Write the StationIfno modal and enable toggling it's display.
This commit is contained in:
2026-03-11 17:26:57 +00:00
parent 904942e078
commit 11ec2574f0
24 changed files with 410 additions and 283 deletions

View File

@@ -3,7 +3,9 @@ import fs from 'fs';
import path from 'path';
const inputDir = './static/mapFiles/yaml';
const stationInputDir = './static/stations';
const outputDir = './src/lib/assets/route';
const stationOutputDir = './src/lib/assets/station';
const indexFile = './static/map-index.json';
const noiseRegex = /\s+(single line|junction|jn|junc|jct|gf|north|south|east|west)\.?$/i;
@@ -11,6 +13,23 @@ const noiseRegex = /\s+(single line|junction|jn|junc|jct|gf|north|south|east|wes
if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
const mapList = [];
const stationList = [];
fs.readdirSync(stationInputDir).forEach((file) => {
if (file.endsWith('.yaml')) {
const fullPath = path.join(stationInputDir, file);
const content = yaml.load(fs.readFileSync(fullPath, 'utf8'));
if (content.crs) {
stationList.push(content.crs)
}
const fileName = file.replace('.yaml', '.json');
fs.writeFileSync(path.join(stationOutputDir, fileName), JSON.stringify(content));
}
});
console.log(`Found station declarations for the following: ${JSON.stringify(stationList)}`);
fs.readdirSync(inputDir).forEach((file) => {
if (file.endsWith('.yaml')) {
@@ -18,12 +37,19 @@ fs.readdirSync(inputDir).forEach((file) => {
const content = yaml.load(fs.readFileSync(fullPath, 'utf8'));
const fileName = file.replace('.yaml', '.json');
fs.writeFileSync(path.join(outputDir, fileName), JSON.stringify(content));
const contentSet = new Set();
// Use this loop to add a 'link' to each station if its CRS exists in 'stationList'
if (Array.isArray(content.routeDetail)) {
content.routeDetail.forEach((item) => {
if ((item.type === 'station') && (item.crs)) {
// Edit the item if item.crs exists in 'stationList' - maybe a `linkable: true`?
if (stationList.includes(item.crs)) {
item.stationInfo = true;
}
}
if ((item.type === 'junction' || item.type === 'station') && item.name) {
let cleanName = item.name;
@@ -44,6 +70,8 @@ fs.readdirSync(inputDir).forEach((file) => {
});
}
fs.writeFileSync(path.join(outputDir, fileName), JSON.stringify(content));
mapList.push({
routeId: content.routeId || null,
routeStart: content.routeStart || null,
@@ -55,6 +83,7 @@ fs.readdirSync(inputDir).forEach((file) => {
}
});
fs.writeFileSync(indexFile, JSON.stringify(mapList));
console.log(`Generated ${mapList.length} map files and index.`);

View File

@@ -0,0 +1 @@
{"name":"Aldermaston","crs":"amt","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Up","platformLength":115,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[2,10]},{"kind":"IET9","doors":[2,9]},{"kind":"IET10","doors":[2,10]},{"kind":"DMU","max-car":5}]},{"platformId":"2Dn","platformLength":115,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,7]},{"kind":"IET9","doors":[1,7]},{"kind":"IET10","doors":[1,7]},{"kind":"DMU","max-car":5}]}]}

View File

@@ -0,0 +1 @@
{"name":"Bedwyn","crs":"bdw","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":121,"signal":true,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[1,9]},{"kind":"IET9","doors":[1,9]},{"kind":"IET10","doors":[1,9]},{"kind":"DMU","max-car":5}]},{"platformId":"2Up","platformLength":123,"signal":true,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[2,10]},{"kind":"IET9","doors":[2,10]},{"kind":"IET10","doors":[2,10]},{"kind":"DMU","max-car":5}]}]}

View File

@@ -0,0 +1 @@
{"name":"Hungerford","crs":"hgd","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Up","platformLength":153,"signal":false,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[8,18]},{"kind":"IET10","doors":[9,20]},{"kind":"DMU","max-car":6}]},{"platformId":"2Dn","platformLength":150,"signal":false,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[1,11]},{"kind":"IET10","doors":[1,11]},{"kind":"DMU","max-car":6}]}]}

View File

@@ -0,0 +1 @@
{"name":"Kintbury","crs":"kit","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":105,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[2,9]},{"kind":"IET9","doors":[2,9]},{"kind":"IET10","doors":[2,9]},{"kind":"DMU","max-car":4}]},{"platformId":"2Up","platformLength":106,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[4,10]},{"kind":"IET9","doors":[12,18]},{"kind":"IET10","doors":[14,20]},{"kind":"DMU","max-car":4}]}]}

View File

@@ -0,0 +1 @@
{"name":"Midgham","crs":"mdg","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":120,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[4,10]},{"kind":"IET9","doors":[4,10]},{"kind":"IET10","doors":[4,10]},{"kind":"DMU","max-car":5}]},{"platformId":"2Up","platformLength":117,"signal":true,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,7]},{"kind":"IET9","doors":[1,7]},{"kind":"IET10","doors":[1,7]},{"kind":"DMU","max-car":5}]}]}

View File

@@ -0,0 +1 @@
{"name":"Newbury","crs":"nby","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":291,"signal":true,"dispatch":true,"dispatchNote":"Staffed until 22:00 Daily","stepFree":true,"stepFreeNote":"Accessible from street & via lifts","doorPattern":[{"kind":"IET5","doors":"all"},{"kind":"IET9","doors":"all"},{"kind":"IET10","doors":"all"},{"kind":"DMU","max-car":12}]},{"platformId":"1Up","platformLength":291,"signal":true,"dispatch":true,"dispatchNote":"Staffed until 22:00 Daily","stepFree":true,"stepFreeNote":"Accessible from street & via lifts","doorPattern":[{"kind":"IET5","doors":"all"},{"kind":"IET9","doors":"all"},{"kind":"IET10","doors":"all"},{"kind":"DMU","max-car":12}]},{"platformId":"2Dn","platformLength":327,"signal":true,"dispatch":true,"dispatchNote":"Staffed until 22:00 Daily","stepFree":true,"stepFreeNote":"Accessible from street & via lifts","doorPattern":[{"kind":"IET5","doors":"all"},{"kind":"IET9","doors":"all"},{"kind":"IET10","doors":"all"},{"kind":"DMU","max-car":14}]},{"platformId":"2Up","platformLength":327,"signal":true,"dispatch":true,"dispatchNote":"Staffed until 22:00 Daily","stepFree":true,"stepFreeNote":"Accessible from street & via lifts","doorPattern":[{"kind":"IET5","doors":"all"},{"kind":"IET9","doors":"all"},{"kind":"IET10","doors":"all"},{"kind":"DMU","max-car":14}]},{"platformId":3,"platformLength":129,"signal":true,"dispatch":true,"dispatchNote":"Staffed until 22:00 Daily","stepFree":true,"stepFreeNote":"Accessible from street & via lifts","doorPattern":[{"kind":"IET5","doors":"all"},{"kind":"IET9","doors":null},{"kind":"IET10","doors":null},{"kind":"DMU","max-car":5}]}]}

View File

@@ -0,0 +1 @@
{"name":"Newbury Racecourse","crs":"nrc","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":89,"signal":false,"dispatch":false,"stepFree":false,"doorPattern":[{"kind":"IET5","doors":[1,6]},{"kind":"IET9","doors":[1,6]},{"kind":"IET10","doors":[1,6]},{"kind":"DMU","max-car":4}]},{"platformId":"2Up","platformLength":74,"signal":true,"dispatch":false,"stepFree":true,"doorPattern":[{"kind":"IET5","doors":[4,9]},{"kind":"IET9","doors":[4,9]},{"kind":"IET10","doors":[4,9]},{"kind":"DMU","max-car":4}]},{"platformId":"3Up","platformLength":225,"signal":false,"dispatch":false,"stepFree":true,"doorPattern":[{"kind":"IET5","doors":[2,10]},{"kind":"IET9","doors":[2,15]},{"kind":"IET10","doors":[2,16]},{"kind":"DMU","max-car":9}]},{"platformId":"3Dn","platformLength":225,"signal":false,"dispatch":false,"stepFree":true,"doorPattern":[{"kind":"IET5","doors":[2,10]},{"kind":"IET9","doors":[2,15]},{"kind":"IET10","doors":[2,16]},{"kind":"DMU","max-car":9}]}]}

View File

@@ -0,0 +1 @@
{"name":"Pewsey","crs":"pew","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":170,"signal":true,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[2,15]},{"kind":"IET10","doors":[2,15]},{"kind":"DMU","max-car":7}]},{"platformId":"2Up","platformLength":177,"signal":true,"dispatch":false,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[2,15]},{"kind":"IET10","doors":[2,15]},{"kind":"DMU","max-car":7}]}]}

View File

@@ -0,0 +1 @@
{"name":"Thatcham","crs":"tha","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Dn","platformLength":168,"signal":true,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[1,12]},{"kind":"IET10","doors":[1,12]},{"kind":"DMU","max-car":7}]},{"platformId":"2Up","platformLength":168,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[7,18]},{"kind":"IET10","doors":[9,20]},{"kind":"DMU","max-car":7}]}]}

View File

@@ -0,0 +1 @@
{"name":"Theale","crs":"the","updated":"2026-03-11T00:00:00.000Z","checked":"2026-03-11T00:00:00.000Z","platforms":[{"platformId":"1Up","platformLength":168,"signal":true,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[1,13]},{"kind":"IET10","doors":[1,13]},{"kind":"DMU","max-car":7}]},{"platformId":"2Dn","platformLength":168,"signal":false,"dispatch":false,"stepFree":null,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[1,13]},{"kind":"IET10","doors":[1,13]},{"kind":"DMU","max-car":7}]},{"platformId":3,"platformLength":153,"signal":false,"dispatch":false,"stepFree":true,"doorPattern":[{"kind":"IET5","doors":[1,10]},{"kind":"IET9","doors":[1,11]},{"kind":"IET10","doors":[1,11]}]}]}

View File

@@ -1,7 +1,7 @@
<script lang="ts">
import { components } from '$lib/mapRegistry';
import type { ElecType } from '$lib/railStyles';
import { IconArrowNarrowRight } from '@tabler/icons-svelte';
import { IconArrowNarrowRight, IconInfoCircle } from '@tabler/icons-svelte';
type featureType = "station" | "junction" | "crossovers" | "siteof" | "bridge" | "minorBridge" | "crossover" | "crossing" | "loop" | "loops" | "signallerChange" | "electrificationChange" | "default" | "tunnel";
export let feature: {name: string; type: featureType; goto?: string; entryPoint?: string; miles: number; chains: number; description?: string}; // Raw Object
@@ -13,9 +13,14 @@
// Linking Logic
$: isLinkable = !!(feature.goto && feature.entryPoint);
$: href = `/map/${feature.goto}#${feature.entryPoint}`;
$: stationInfo = (feature.type === "station" && feature.stationInfo && feature.crs);
const slugify = (str?: string) =>
str?.toLocaleLowerCase().trim().replace(/\s+/g, '-') ?? 'unknown';
function stationInfo(crs) {
console.log(`Date requested for CRS: ${crs}`)
}
</script>
<div class="row-container" id={slugify(feature.name)}>
@@ -37,6 +42,12 @@
<div class="feature-desc">{feature.description}</div>
{/if}
</div>
{#if stationInfo}
<div class="link-indicator" on:click={stationInfo(feature.crs)}>
<IconInfoCircle />
</div>
{/if}
{#if isLinkable}
<div class="link-indicator">
<IconArrowNarrowRight />

View File

@@ -0,0 +1,16 @@
<script lang="ts">
/*
Loads and displayes a 'Station Info' Modal
*/
let crs = $props();
const allStations = import.meta.glob('$lib/assets/station/*.json', { query: '?json' });
const stationData = $derived(allStations[`../data/stations/${crs}.json`]);
</script>
{#if stationData}
<!-- RENDER STATION DATA DISPLAY HERE -->
{/if}

View File

@@ -76,6 +76,7 @@ routeDetail:
- type: station
name: Theale
crs: the
description: Temporary Platform 3 on Theale Goods Loop (OOU)
miles: 41
chains: 22
@@ -106,6 +107,7 @@ routeDetail:
- type: station
name: Aldermaston
crs: amt
miles: 44
chains: 61
@@ -124,6 +126,7 @@ routeDetail:
- type: station
name: Midgham
crs: mdg
miles: 46
chains: 59
@@ -147,6 +150,7 @@ routeDetail:
- type: station
name: Thatcham
crs: tha
miles: 49
chains: 45
@@ -171,11 +175,13 @@ routeDetail:
- type: station
name: Newbury Racecourse
crs: nrc
miles: 52
chains: 31
- type: station
name: Newbury
crs: nby
miles: 53
chains: 6
@@ -203,6 +209,7 @@ routeDetail:
- type: station
name: Kintbury
crs: kit
miles: 58
chains: 38
@@ -226,6 +233,7 @@ routeDetail:
- type: station
name: Hungerford
crs: hgd
miles: 61
chains: 43
@@ -262,6 +270,7 @@ routeDetail:
- type: station
name: Bedwyn
crs: bdw
miles: 66
chains: 22
@@ -310,6 +319,7 @@ routeDetail:
- type: station
name: Pewsey
crs: pew
miles: 75
chains: 26

33
static/stations/amt.yaml Normal file
View File

@@ -0,0 +1,33 @@
name: Aldermaston
crs: amt
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Up
platformLength: 115
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [2,10]
- kind: IET9
doors: [2,9]
- kind: IET10
doors: [2,10]
- kind: DMU
max-car: 5
- platformId: 2Dn
platformLength: 115
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,7]
- kind: IET9
doors: [1,7]
- kind: IET10
doors: [1,7]
- kind: DMU
max-car: 5

View File

@@ -9,81 +9,23 @@ platforms:
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,0]
doors: [1,9]
- kind: IET9
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,0]
6: [0,0]
7: [0,0]
8: [0,0]
9: [0,0]
doors: [1,9]
- kind: IET10
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,0]
6: [0,0]
7: [0,0]
8: [0,0]
9: [0,0]
10: [0,0]
doors: [1,9]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
max-car: 5
- platformId: 2Up
platformLength: 123
signal: true
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [2,10]
- kind: IET9
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [0,0]
7: [0,0]
8: [0,0]
9: [0,0]
doors: [2,10]
- kind: IET10
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [0,0]
7: [0,0]
8: [0,0]
9: [0,0]
10: [0,0]
doors: [2,10]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
max-car: 5

View File

@@ -5,87 +5,27 @@ checked: 2026-03-11
platforms:
- platformId: 1Up
platformLength: 153
signal: true
signal: false
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [1,10]
- kind: IET9
doors:
1: [0,0]
2: [0,0]
3: [0,0]
4: [0,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,1]
9: [1,1]
doors: [8,18]
- kind: IET10
doors:
1: [0,0]
2: [0,0]
3: [0,0]
4: [0,0]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,1]
9: [1,1]
10: [1,1]
doors: [9,20]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
max-car: 6
- platformId: 2Dn
platformLength: 150
signal: true
signal: false
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [1,10]
- kind: IET9
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,0]
7: [0,0]
8: [0,0]
9: [0,0]
doors: [1,11]
- kind: IET10
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,0]
7: [0,0]
8: [0,0]
9: [0,0]
10: [0,0]
doors: [1,11]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
max-car: 6

View File

@@ -1,92 +1,33 @@
name: Kintbury
crs: kit
--- INCOMPLETE --- NOTHING DONE BWLOW LINE
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Up
platformLength: 153
signal: true
- platformId: 1Dn
platformLength: 105
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [2,9]
- kind: IET9
doors:
1: [0,0]
2: [0,0]
3: [0,0]
4: [0,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,1]
9: [1,1]
doors: [2,9]
- kind: IET10
doors:
1: [0,0]
2: [0,0]
3: [0,0]
4: [0,0]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,1]
9: [1,1]
10: [1,1]
doors: [2,9]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
- platformId: 2Dn
platformLength: 150
signal: true
max-car: 4
- platformId: 2Up
platformLength: 106
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [4,10]
- kind: IET9
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,0]
7: [0,0]
8: [0,0]
9: [0,0]
doors: [12,18]
- kind: IET10
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,0]
7: [0,0]
8: [0,0]
9: [0,0]
10: [0,0]
doors: [14,20]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
max-car: 4

33
static/stations/mdg.yaml Normal file
View File

@@ -0,0 +1,33 @@
name: Midgham
crs: mdg
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Dn
platformLength: 120
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [4,10]
- kind: IET9
doors: [4,10]
- kind: IET10
doors: [4,10]
- kind: DMU
max-car: 5
- platformId: 2Up
platformLength: 117
signal: true
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,7]
- kind: IET9
doors: [1,7]
- kind: IET10
doors: [1,7]
- kind: DMU
max-car: 5

85
static/stations/nby.yaml Normal file
View File

@@ -0,0 +1,85 @@
name: Newbury
crs: nby
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Dn
platformLength: 291
signal: true
dispatch: true
dispatchNote: Staffed until 22:00 Daily
stepFree: true
stepFreeNote: Accessible from street & via lifts
doorPattern:
- kind: IET5
doors: all
- kind: IET9
doors: all
- kind: IET10
doors: all
- kind: DMU
max-car: 12
- platformId: 1Up
platformLength: 291
signal: true
dispatch: true
dispatchNote: Staffed until 22:00 Daily
stepFree: true
stepFreeNote: Accessible from street & via lifts
doorPattern:
- kind: IET5
doors: all
- kind: IET9
doors: all
- kind: IET10
doors: all
- kind: DMU
max-car: 12
- platformId: 2Dn
platformLength: 327
signal: true
dispatch: true
dispatchNote: Staffed until 22:00 Daily
stepFree: true
stepFreeNote: Accessible from street & via lifts
doorPattern:
- kind: IET5
doors: all
- kind: IET9
doors: all
- kind: IET10
doors: all
- kind: DMU
max-car: 14
- platformId: 2Up
platformLength: 327
signal: true
dispatch: true
dispatchNote: Staffed until 22:00 Daily
stepFree: true
stepFreeNote: Accessible from street & via lifts
doorPattern:
- kind: IET5
doors: all
- kind: IET9
doors: all
- kind: IET10
doors: all
- kind: DMU
max-car: 14
- platformId: 3
platformLength: 129
signal: true
dispatch: true
dispatchNote: Staffed until 22:00 Daily
stepFree: true
stepFreeNote: Accessible from street & via lifts
doorPattern:
- kind: IET5
doors: all
- kind: IET9
doors: null
- kind: IET10
doors: null
- kind: DMU
max-car: 5

61
static/stations/nrc.yaml Normal file
View File

@@ -0,0 +1,61 @@
name: Newbury Racecourse
crs: nrc
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Dn
platformLength: 89
signal: false
dispatch: false
stepFree: false
doorPattern:
- kind: IET5
doors: [1,6]
- kind: IET9
doors: [1,6]
- kind: IET10
doors: [1,6]
- kind: DMU
max-car: 4
- platformId: 2Up
platformLength: 74
signal: true
dispatch: false
stepFree: true
doorPattern:
- kind: IET5
doors: [4,9]
- kind: IET9
doors: [4,9]
- kind: IET10
doors: [4,9]
- kind: DMU
max-car: 4
- platformId: 3Up
platformLength: 225
signal: false
dispatch: false
stepFree: true
doorPattern:
- kind: IET5
doors: [2,10]
- kind: IET9
doors: [2,15]
- kind: IET10
doors: [2,16]
- kind: DMU
max-car: 9
- platformId: 3Dn
platformLength: 225
signal: false
dispatch: false
stepFree: true
doorPattern:
- kind: IET5
doors: [2,10]
- kind: IET9
doors: [2,15]
- kind: IET10
doors: [2,16]
- kind: DMU
max-car: 9

View File

@@ -9,85 +9,23 @@ platforms:
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [1,10]
- kind: IET9
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,0]
9: [0,0]
doors: [2,15]
- kind: IET10
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,0]
9: [0,0]
10: [0,0]
doors: [2,15]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
max-car: 7
- platformId: 2Up
platformLength: 177
signal: true
dispatch: false
doorPattern:
- kind: IET5
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
doors: [1,10]
- kind: IET9
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,0]
9: [0,0]
doors: [2,15]
- kind: IET10
doors:
1: [0,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
8: [1,0]
9: [0,0]
10: [0,0]
doors: [2,15]
- kind: DMU
doors:
1: [1,1]
2: [1,1]
3: [1,1]
4: [1,1]
5: [1,1]
6: [1,1]
7: [1,1]
max-car: 7

33
static/stations/tha.yaml Normal file
View File

@@ -0,0 +1,33 @@
name: Thatcham
crs: tha
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Dn
platformLength: 168
signal: true
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,10]
- kind: IET9
doors: [1,12]
- kind: IET10
doors: [1,12]
- kind: DMU
max-car: 7
- platformId: 2Up
platformLength: 168
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,10]
- kind: IET9
doors: [7,18]
- kind: IET10
doors: [9,20]
- kind: DMU
max-car: 7

45
static/stations/the.yaml Normal file
View File

@@ -0,0 +1,45 @@
name: Theale
crs: the
updated: 2026-03-11
checked: 2026-03-11
platforms:
- platformId: 1Up
platformLength: 168
signal: true
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,10]
- kind: IET9
doors: [1,13]
- kind: IET10
doors: [1,13]
- kind: DMU
max-car: 7
- platformId: 2Dn
platformLength: 168
signal: false
dispatch: false
stepFree:
doorPattern:
- kind: IET5
doors: [1,10]
- kind: IET9
doors: [1,13]
- kind: IET10
doors: [1,13]
- kind: DMU
max-car: 7
- platformId: 3
platformLength: 153
signal: false
dispatch: false
stepFree: true
doorPattern:
- kind: IET5
doors: [1,10]
- kind: IET9
doors: [1,11]
- kind: IET10
doors: [1,11]