Switch departure board to use Inconsolata monospaced font (varying widths, weights, etc.)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import type { ApiTrainsTrainDetails } from '@owlboard/owlboard-ts';
|
||||
|
||||
export const estClass = (act: any, est: any) => (!act && est ? 'est' : 'act');
|
||||
export const estClass = (act: any, est: any) => (act ? 'act' : 'est');
|
||||
|
||||
/**
|
||||
* Converts ISO/JSON time to UK-formatted HH:MM string, with optional (default off) seconds
|
||||
@@ -10,10 +10,10 @@ export function formatUkTime(
|
||||
dateStr: string | Date | undefined,
|
||||
includeSeconds: boolean = false
|
||||
): string {
|
||||
if (!dateStr) return '--:--';
|
||||
if (!dateStr) return '-';
|
||||
const date = typeof dateStr === 'string' ? new Date(dateStr) : dateStr;
|
||||
|
||||
if (isNaN(date.getTime())) return '--:--';
|
||||
if (isNaN(date.getTime())) return '-';
|
||||
|
||||
return date.toLocaleTimeString('en-GB', {
|
||||
hour: '2-digit',
|
||||
@@ -56,15 +56,21 @@ export function formatUkDateTime(
|
||||
* Specific type that can handle the TrainDetails.ServiceLocation and the ApiStationsBoard.BoardService types for delay calculation
|
||||
*/
|
||||
interface DelayInput {
|
||||
// Board types
|
||||
sta?: string | null; std?: string | null;
|
||||
eta?: string | null; etd?: string | null;
|
||||
ata?: string | null; atd?: string | null;
|
||||
|
||||
// Journey types
|
||||
pta?: string | null; ptd?: string | null;
|
||||
wta?: string | null; wtd?: string | null;
|
||||
atp?: string | null; wtp?: string | null;
|
||||
// Board types
|
||||
sta?: string | null;
|
||||
std?: string | null;
|
||||
eta?: string | null;
|
||||
etd?: string | null;
|
||||
ata?: string | null;
|
||||
atd?: string | null;
|
||||
|
||||
// Journey types
|
||||
pta?: string | null;
|
||||
ptd?: string | null;
|
||||
wta?: string | null;
|
||||
wtd?: string | null;
|
||||
atp?: string | null;
|
||||
wtp?: string | null;
|
||||
etp?: string | null;
|
||||
}
|
||||
|
||||
@@ -79,13 +85,13 @@ export function calculateDelay(loc: DelayInput): {
|
||||
type: string;
|
||||
} {
|
||||
const pairs = [
|
||||
// Departure check (Board: atd/etd vs std | Journey: atd vs ptd/wtd)
|
||||
{ actual: loc.atd || loc.etd, sched: loc.std || loc.ptd || loc.wtd },
|
||||
// Arrival check (Board: ata/eta vs sta | Journey: ata vs pta/wta)
|
||||
{ actual: loc.ata || loc.eta, sched: loc.sta || loc.pta || loc.wta },
|
||||
// Passing check
|
||||
{ actual: loc.atp || loc.etp, sched: loc.wtp }
|
||||
];
|
||||
// Departure check (Board: atd/etd vs std | Journey: atd vs ptd/wtd)
|
||||
{ actual: loc.atd || loc.etd, sched: loc.std || loc.ptd || loc.wtd },
|
||||
// Arrival check (Board: ata/eta vs sta | Journey: ata vs pta/wta)
|
||||
{ actual: loc.ata || loc.eta, sched: loc.sta || loc.pta || loc.wta },
|
||||
// Passing check
|
||||
{ actual: loc.atp || loc.etp, sched: loc.wtp }
|
||||
];
|
||||
|
||||
const match = pairs.find((p) => p.actual && p.sched);
|
||||
|
||||
@@ -109,20 +115,20 @@ export function calculateDelay(loc: DelayInput): {
|
||||
* @param act Actual Time (string, Date)
|
||||
*/
|
||||
export function delayClassFromTimePair(sched: any, act: any): string {
|
||||
if (!sched || !act) return '';
|
||||
if (!sched || !act) return '';
|
||||
|
||||
const s = new Date(sched).getTime();
|
||||
const a = new Date(act).getTime();
|
||||
const s = new Date(sched).getTime();
|
||||
const a = new Date(act).getTime();
|
||||
|
||||
if (isNaN(s) || isNaN(a)) return '';
|
||||
if (isNaN(s) || isNaN(a)) return '';
|
||||
|
||||
const diff = a - s;
|
||||
const oneMinute = 60000;
|
||||
const diff = a - s;
|
||||
const oneMinute = 60000;
|
||||
|
||||
// on-time if within one minute
|
||||
if (Math.abs(diff) < oneMinute) {
|
||||
return 'delay-rt';
|
||||
}
|
||||
// on-time if within one minute
|
||||
if (Math.abs(diff) < oneMinute) {
|
||||
return 'delay-rt';
|
||||
}
|
||||
|
||||
return diff > 0 ? 'delay-late' : 'delay-early';
|
||||
return diff > 0 ? 'delay-late' : 'delay-early';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user