aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/Page.svelte2
-rw-r--r--src/lib/RenderUtil.ts31
-rw-r--r--src/lib/Timetable.svelte28
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={{