diff --git a/src/lib/components/SpaceCard.svelte b/src/lib/components/SpaceCard.svelte
index aa14527..56bd89d 100644
--- a/src/lib/components/SpaceCard.svelte
+++ b/src/lib/components/SpaceCard.svelte
@@ -114,7 +114,7 @@
.compulsoryContainer {
display: grid;
- grid-template-columns: repeat(auto-fit, minmax(3.75rem, 1fr));
+ grid-template-columns: repeat(auto-fit, minmax(3.7rem, 1fr));
gap: 0.3rem;
font-size: 0.8rem;
}
diff --git a/src/lib/index.ts b/src/lib/index.ts
index 41d52c4..d8d8d52 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -18,7 +18,7 @@ export const availableStudySpaceTags = [
"Air conditioned",
"Cold",
"PCs",
- "Cringe"
+ "Rodent-ridden"
];
export const volumeTags = ["Silent", "Some Noise", "Loud"];
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 5f0100f..d0ef663 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -99,6 +99,33 @@
})
);
+ const sortedByOpenNow = $derived(
+ filteredStudySpaces.toSorted((a, b) => {
+ const now = new Date();
+ const time = now.toTimeString().slice(0, 5);
+ const today = now.getDay();
+ let openUntil = [0, 0] as number[];
+ for (const [index, day] of [a, b].entries()) {
+ const timingsPerDay = collectTimings(day.study_space_hours);
+ for (const timing of timingsPerDay[today]) {
+ if (timing.open_today_status === true) {
+ openUntil[index] = 24 * 60;
+ break;
+ } else if (timing.open_today_status === false) {
+ break;
+ } else {
+ const opensFor = timeUntilClosing(timing.opens_at, timing.closes_at, time);
+ if (opensFor) {
+ openUntil[index] = opensFor;
+ break;
+ }
+ }
+ }
+ }
+ return openUntil[1] - openUntil[0];
+ })
+ );
+
const sortedStudySpaces = $derived(
sortNear
? filteredStudySpaces.toSorted((a, b) => {
@@ -122,7 +149,7 @@
);
return aDistance - bDistance;
})
- : filteredStudySpaces
+ : sortedByOpenNow
);
// Open now
@@ -170,10 +197,18 @@
+ {/if}
+ {#if adminMode}
+
+
+
+ {/if}
+ {#if session}
{/if}
+
--
2.49.1