From df92c378e76bc59836d10ace3d998d6e603e1a64 Mon Sep 17 00:00:00 2001 From: Antonio De Lucreziis Date: Thu, 21 Nov 2024 15:22:12 +0100 Subject: [PATCH] more features --- bun.lockb | Bin 220615 -> 220959 bytes package.json | 1 + src/components/ActionRegistry.tsx | 65 +++++++++++++++++++++--------- src/components/AdminPage.tsx | 31 ++++++++++++++ src/components/NewRoom.tsx | 7 +--- src/components/SubmitAction.tsx | 28 +++++++++++-- src/ggwp/index.ts | 13 +++++- src/styles.css | 37 ++++++++++++++++- 8 files changed, 151 insertions(+), 31 deletions(-) diff --git a/bun.lockb b/bun.lockb index e199d0ba6b652c2c8184dffb6cf7ecc167947dd4..a3d6f37e9f0cdf34d18e60b6fa27f8a00e3ec055 100755 GIT binary patch delta 39011 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 Lt5KjGKJtG6)xZzu delta 38733 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 Jv-%4!{vSryrj`Hz diff --git a/package.json b/package.json index 4479caf..52d3974 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "astro": "^4.16.13", "better-sqlite3": "^11.5.0", "clsx": "^2.1.1", + "date-fns": "^4.1.0", "nanoid": "^5.0.8", "preact": "^10.24.3", "typescript": "^5.6.3" diff --git a/src/components/ActionRegistry.tsx b/src/components/ActionRegistry.tsx index 0ce9be2..d4eed9b 100644 --- a/src/components/ActionRegistry.tsx +++ b/src/components/ActionRegistry.tsx @@ -1,6 +1,7 @@ import { sendJSON } from '@/client/utils' import type { Room } from '@/db/model' import type { Action, ActionAnswer, ActionJolly } from '@/ggwp' +import { format } from 'date-fns' import { type Dispatch, type StateUpdater } from 'preact/hooks' type ActionCardProps = { @@ -40,35 +41,61 @@ const CardActions = ({ moveUp, moveDown, remove }: ActionCardProps) => ( const ActionCardAnswer = ({ action, ...props }: { action: ActionAnswer } & ActionCardProps) => { return ( -
-
Risposta
-
- Team: {action.team} -
-
- Domanda: {action.question} +
+
+
Risposta
+
+
schedule
+
+ {action.timestamp && format(new Date(action.timestamp), 'dd/MM/yyyy HH:mm:ss')} + + {action.timestamp && ' ' + format(new Date(action.timestamp), 'SSS')} + +
+
-
- Risultato: {action.outcome} +
+
+ Team: {action.team} +
+
+ Domanda: {action.question} +
+
+ Risultato: {action.outcome} +
+
+
-
-
) } const ActionCardJolly = ({ action, ...props }: { action: ActionJolly } & ActionCardProps) => { return ( -
-
Jolly
-
- Team: {action.team} +
+
+
Jolly
+
+
schedule
+
+ {action.timestamp && format(new Date(action.timestamp), 'dd/MM/yyyy HH:mm:ss')} + + {action.timestamp && ' ' + format(new Date(action.timestamp), 'SSS')} + +
+
-
- Problem: {action.group} +
+
+ Team: {action.team} +
+
+ Problem: {action.group} +
+
+
-
-
) } diff --git a/src/components/AdminPage.tsx b/src/components/AdminPage.tsx index 1192d52..8dadee9 100644 --- a/src/components/AdminPage.tsx +++ b/src/components/AdminPage.tsx @@ -7,6 +7,15 @@ import { computeScoreboardState } from '@/ggwp' import { Leaderboard } from './Leaderboard' export const AdminPage = ({ roomId }: { roomId: string }) => { + const [password, setPassword] = useState(null) + + useEffect(() => { + const url = new URL(location.href) + setPassword(url.searchParams.get('password')) + url.searchParams.delete('password') + history.replaceState({}, '', url.toString()) + }, []) + const listeners = useRef void>>({}) const [room, setRoom] = useState(null) @@ -35,6 +44,28 @@ export const AdminPage = ({ roomId }: { roomId: string }) => { return ( <>

Admin

+ + {password && ( + <> +

Password

+
+

Password Pannello Admin

+

+ Non perdere questa password, serve per accedere a questo pannello da un altro pc (altrimeni + chiedi ad Antonio) +

+ {password} + +
+ + )} +

{room.id}

{ diff --git a/src/components/SubmitAction.tsx b/src/components/SubmitAction.tsx index 2d8c584..e27908d 100644 --- a/src/components/SubmitAction.tsx +++ b/src/components/SubmitAction.tsx @@ -14,7 +14,7 @@ export const SubmitActionAnswer = ({ sendAction: (action: Action) => void onTeamQuestionIndex?: Receiver<{ team: string; question: string }> }) => { - const [answer, setAnswer] = useState({ + const [answer, setAnswer] = useState>({ question: '', team: '', outcome: 'correct', @@ -71,7 +71,17 @@ export const SubmitActionAnswer = ({ - +
) } @@ -99,7 +109,7 @@ export const SubmitActionJolly = ({ questionToGroup[question.id] = question.group }) - const [answer, setAnswer] = useState({ + const [answer, setAnswer] = useState>({ team: '', group: '', }) @@ -143,7 +153,17 @@ export const SubmitActionJolly = ({ ))} - +
) } diff --git a/src/ggwp/index.ts b/src/ggwp/index.ts index 3ec3962..fbcbbf0 100644 --- a/src/ggwp/index.ts +++ b/src/ggwp/index.ts @@ -47,17 +47,27 @@ function getTimeBonus(index: number): number { } export type ActionAnswer = { + timestamp: string + team: string question: string outcome: 'correct' | 'partial' | 'wrong' } export type ActionJolly = { + timestamp: string + team: string group: string } -export type Action = ({ type: 'answer' } & ActionAnswer) | ({ type: 'jolly' } & ActionJolly) +export type Action = + | ({ + type: 'answer' + } & ActionAnswer) + | ({ + type: 'jolly' + } & ActionJolly) export function computeScoreboardState(game: Game, rawActions: Action[]): Scoreboard { // filter out actions for the same question by the same team, keeping only the last one @@ -89,6 +99,7 @@ export function computeScoreboardState(game: Game, rawActions: Action[]): Scoreb } const questionActions: { + timestamp: string type: 'answer' team: string question: string diff --git a/src/styles.css b/src/styles.css index 9672c56..c8321ce 100644 --- a/src/styles.css +++ b/src/styles.css @@ -105,15 +105,32 @@ a { display: inline-block; align-content: center; - height: 1.75rem; + font-size: 15px; + font-weight: 700; + + height: 1.5rem; padding: 0 0.5rem; border-radius: 0.25rem; - color: oklch(from var(--tint) 0.15 0.1 h); + color: oklch(from var(--tint) 0.3 0.1 h); background: oklch(from var(--tint) calc(l + 0.3) c h); box-shadow: 2px 2px 0 oklch(from var(--tint) calc(l - 0.2) 0.1 h); } +.text { + &.small { + font-size: 16px; + } + + &.smaller { + font-size: 14px; + } + + &.dimmed { + color: oklch(from var(--tint) 0.4 0.1 h); + } +} + .text-large { font-size: 20px; } @@ -157,6 +174,14 @@ a { flex-direction: column; gap: 0.75rem; + &.gap-sm { + gap: 0.25rem; + } + + &.start { + align-items: start; + } + &.center { align-items: center; } @@ -175,6 +200,14 @@ a { flex-direction: row; gap: 0.75rem; + &.gap-sm { + gap: 0.25rem; + } + + &.start { + align-items: start; + } + &.center { align-items: center; }