From 245292c4d0915d2106f139ef53c8a57f5a474a20 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Tue, 26 Jul 2022 22:20:42 +0300 Subject: [PATCH] Show many days on event page --- app/db/models/calendar.server.ts | 11 +++++++- app/routes/calendar/$id.tsx | 43 +++++++++++++++++++------------- app/styles/calendar-event.css | 10 ++++++-- 3 files changed, 43 insertions(+), 21 deletions(-) diff --git a/app/db/models/calendar.server.ts b/app/db/models/calendar.server.ts index 5d29c530e..2a7e08e7a 100644 --- a/app/db/models/calendar.server.ts +++ b/app/db/models/calendar.server.ts @@ -60,10 +60,11 @@ const findByIdStm = sql.prepare(` join "CalendarEventDate" on "CalendarEvent"."id" = "CalendarEventDate"."eventId" join "User" on "CalendarEvent"."authorId" = "User"."id" where "CalendarEvent"."id" = $id + order by "CalendarEventDate"."startTime" asc `); export function findById(id: CalendarEvent["id"]) { - return findByIdStm.get({ id }) as Nullable< + const rows = findByIdStm.all({ id }) as Array< Pick & Pick & Pick< @@ -71,6 +72,14 @@ export function findById(id: CalendarEvent["id"]) { "discordName" | "discordDiscriminator" | "discordId" | "discordAvatar" > >; + + if (rows.length === 0) return null; + + return { + ...rows[0], + startTimes: rows.map((row) => row.startTime), + startTime: undefined, + }; } const startTimesOfRangeStm = sql.prepare(` diff --git a/app/routes/calendar/$id.tsx b/app/routes/calendar/$id.tsx index aa747ca5b..17562ec21 100644 --- a/app/routes/calendar/$id.tsx +++ b/app/routes/calendar/$id.tsx @@ -13,6 +13,7 @@ import { actualNumber, id } from "~/utils/zod"; import styles from "~/styles/calendar-event.css"; import { Avatar } from "~/components/Avatar"; import { discordFullName } from "~/utils/strings"; +import * as React from "react"; export const links: LinksFunction = () => { return [{ rel: "stylesheet", href: styles }]; @@ -34,29 +35,35 @@ export default function CalendarEventPage() { const { i18n } = useTranslation(); const isMounted = useIsMounted(); - // xxx: not taking in account many dates + // xxx: should not say day 1 if we only have one day + // -> implement badges + // -> implement tags return (
-
- +
+ {event.startTimes.map((startTime, i) => ( + + Day {i + 1} + + + ))}
+ {/* xxx: are we even loading these styles? */}

{event.name}

{event.discordUrl || event.bracketUrl ? (
diff --git a/app/styles/calendar-event.css b/app/styles/calendar-event.css index 6bf4052cf..924257cab 100644 --- a/app/styles/calendar-event.css +++ b/app/styles/calendar-event.css @@ -2,9 +2,15 @@ line-height: 1.35; } -.event__time { - height: 1rem; +.event__day { + color: var(--text-lighter); +} + +.event__times { font-weight: var(--semi-bold); + display: grid; + grid-template-columns: max-content 1fr; + column-gap: var(--s-1-5); } .event__author {