diff options
refactor: maybe also move notices out
-rw-r--r-- | src/lib/Page.svelte | 2 | ||||
-rw-r--r-- | src/lib/RenderUtil.ts | 31 | ||||
-rw-r--r-- | src/lib/Timetable.svelte | 28 |
3 files changed, 34 insertions, 27 deletions
diff --git a/src/lib/Page.svelte b/src/lib/Page.svelte index 92cd92a..f71a56d 100644 --- a/src/lib/Page.svelte +++ b/src/lib/Page.svelte @@ -18,7 +18,7 @@ </script> <svelte:head> - <title>{title}</title> + <title>{title ?? 'No Title'}</title> <meta name="description" content={description} /> </svelte:head> diff --git a/src/lib/RenderUtil.ts b/src/lib/RenderUtil.ts index c6963bc..bf360ab 100644 --- a/src/lib/RenderUtil.ts +++ b/src/lib/RenderUtil.ts @@ -83,3 +83,34 @@ export const stopTimeShouldRenderGlyph = ( (stopTime.mode === 'METRO' && stopTime.routeShortName.startsWith('S'))) && !stopTime.routeShortName.startsWith('FlixTrain'); export const blacklistedAgencyURLs = ['http://www.rta.ae']; + +export const getNotices = ( + stopTime: StopTime, + delayMinutes: number, + isArrivals: boolean +) => { + let notices = [] as [pictogram: string[], content: string][]; + if (stopTime.cancelled) + notices.push([['Cancellation', 'Attention'], m.connection_cancelled()]); + if (delayMinutes < -0.5) { + notices.push([ + ['Hint'], + m.connection_early({ + minutes: -delayMinutes, + arrival: isArrivals.toString(), + }), + ]); + } else if (delayMinutes >= 1) { + notices.push([ + delayMinutes >= 3 + ? ['Delay', 'Attention'] + : delayMinutes >= 2 + ? ['Delay', 'Hint'] + : ['Hint'], + m.connection_delayed({ + minutes: delayMinutes.toFixed(0), + }), + ]); + } + return notices; +}; diff --git a/src/lib/Timetable.svelte b/src/lib/Timetable.svelte index 1ed0900..868050e 100644 --- a/src/lib/Timetable.svelte +++ b/src/lib/Timetable.svelte @@ -9,6 +9,7 @@ import { m } from './paraglide/messages'; import { blacklistedAgencyURLs, + getNotices, getPictogram, stopTimeShouldRenderGlyph, stopTimeToShortName, @@ -167,32 +168,7 @@ {@const delayMinutes = receivedTime - expectedTime} {@const routeShortName = stopTimeToShortName(departure)} {@const pictogram = getPictogram(departure.mode)} - {@const notices = (() => { - let notices = [] as [pictogram: string[], content: string][]; - if (departure.cancelled) - notices.push([['Cancellation', 'Attention'], m.connection_cancelled()]); - if (delayMinutes < -0.5) { - notices.push([ - ['Hint'], - m.connection_early({ - minutes: -delayMinutes, - arrival: isArrivals.toString(), - }), - ]); - } else if (delayMinutes >= 1) { - notices.push([ - delayMinutes >= 3 - ? ['Delay', 'Attention'] - : delayMinutes >= 2 - ? ['Delay', 'Hint'] - : ['Hint'], - m.connection_delayed({ - minutes: delayMinutes.toFixed(0), - }), - ]); - } - return notices; - })()} + {@const notices = getNotices(departure, delayMinutes, isArrivals)} {@const situationIsBad = notices.find((v) => v[0].includes('Attention'))} <div class={{ |