From a30d93fb7b6d288f430b1f37fdcd5b66055ba90b Mon Sep 17 00:00:00 2001 From: Aaron Brethorst Date: Sun, 24 Nov 2024 16:01:10 -0800 Subject: [PATCH] Extract RouteScheduleTable component from ScheduleAccordionItem ...and use it on the schedule page. By extracting the inner component from the accordion item, we decouple some implementation details of the Flowbite accordion from this piece of UI, and allow ourselves to further reuse it elsewhere if and when we need to. This commit is a WIP. - [ ] Show all routes/Collapse all routes buttons aren't working - [ ] Sticky route schedule headers have a gap above them - [ ] The datepicker appears behind the sticky headers - [ ] All schedules should be expanded by default --- .../RouteScheduleTable.svelte | 108 +++++++++++++++++ .../ScheduleAccordionItem.svelte | 114 ------------------ .../stops/[stopID]/schedule/+page.svelte | 16 +-- 3 files changed, 116 insertions(+), 122 deletions(-) create mode 100644 src/components/schedule-for-stop/RouteScheduleTable.svelte delete mode 100644 src/components/schedule-for-stop/ScheduleAccordionItem.svelte diff --git a/src/components/schedule-for-stop/RouteScheduleTable.svelte b/src/components/schedule-for-stop/RouteScheduleTable.svelte new file mode 100644 index 0000000..85b0f78 --- /dev/null +++ b/src/components/schedule-for-stop/RouteScheduleTable.svelte @@ -0,0 +1,108 @@ + + +
+ + + + + + + + + + + + {#if renderScheduleTable(schedule).amTimes.length === 0} + + + + {:else} + {#each renderScheduleTable(schedule).amTimes as [hour, times]} + + + + + {/each} + {/if} + + + + + {#if renderScheduleTable(schedule).pmTimes.length === 0} + + + + {:else} + {#each renderScheduleTable(schedule).pmTimes as [hour, times]} + + + + + {/each} + {/if} + +
{$t('schedule_for_stop.hour')}{$t('schedule_for_stop.minutes')}
AM
+ {$t('schedule_for_stop.no_am_schedules_available')} +
+ {formatHour(hour)} AM + + {#each times as stopTime, index (index)} + + {extractMinutes(stopTime.arrivalTime)} + {index < times.length - 1 ? ', ' : ''} + + {/each} +
PM
+ {$t('schedule_for_stop.no_pm_schedules_available')} +
+ {formatHour(hour)} PM + + {#each times as stopTime, index (index)} + + {extractMinutes(stopTime.arrivalTime)} + {index < times.length - 1 ? ', ' : ''} + + {/each} +
+
diff --git a/src/components/schedule-for-stop/ScheduleAccordionItem.svelte b/src/components/schedule-for-stop/ScheduleAccordionItem.svelte deleted file mode 100644 index d5c50cd..0000000 --- a/src/components/schedule-for-stop/ScheduleAccordionItem.svelte +++ /dev/null @@ -1,114 +0,0 @@ - - - - - {schedule.tripHeadsign} - -
- - - - - - - - - - - - {#if renderScheduleTable(schedule).amTimes.length === 0} - - - - {:else} - {#each renderScheduleTable(schedule).amTimes as [hour, times]} - - - - - {/each} - {/if} - - - - - {#if renderScheduleTable(schedule).pmTimes.length === 0} - - - - {:else} - {#each renderScheduleTable(schedule).pmTimes as [hour, times]} - - - - - {/each} - {/if} - -
{$t('schedule_for_stop.hour')}{$t('schedule_for_stop.minutes')}
AM
- {$t('schedule_for_stop.no_am_schedules_available')} -
- {formatHour(hour)} AM - - {#each times as stopTime, index (index)} - - {extractMinutes(stopTime.arrivalTime)} - {index < times.length - 1 ? ', ' : ''} - - {/each} -
PM
- {$t('schedule_for_stop.no_pm_schedules_available')} -
- {formatHour(hour)} PM - - {#each times as stopTime, index (index)} - - {extractMinutes(stopTime.arrivalTime)} - {index < times.length - 1 ? ', ' : ''} - - {/each} -
-
-
diff --git a/src/routes/stops/[stopID]/schedule/+page.svelte b/src/routes/stops/[stopID]/schedule/+page.svelte index 71243cc..dec45b2 100644 --- a/src/routes/stops/[stopID]/schedule/+page.svelte +++ b/src/routes/stops/[stopID]/schedule/+page.svelte @@ -1,11 +1,12 @@