diff --git a/src/lib/server/eventManager.ts b/src/lib/server/eventManager.ts index 24a5dfd..4d9b5b9 100644 --- a/src/lib/server/eventManager.ts +++ b/src/lib/server/eventManager.ts @@ -3,20 +3,18 @@ import { db } from '$lib/server/db'; import { eq } from 'drizzle-orm'; import * as schema from '$lib/server/db/schema'; -let testScore = 0; - // Emitter that emits export const globalEmitter = new EventEmitter(); +//// REFERENCE CODE // Increment score for testing (remove ts) -const increment = () => { - testScore++; - console.log('score incremented', testScore); - globalEmitter.emit('scoreUpdate'); -}; - +// const increment = () => { +// testScore++; +// console.log('score incremented', testScore); +// globalEmitter.emit('scoreUpdate'); +// }; // Increment scores when there is an emit -globalEmitter.on('incrementScores', increment); +// globalEmitter.on('incrementScores', increment); // For page.server.ts so that it doesnt look weird before loading export async function getAllInitialInfo() { @@ -29,11 +27,17 @@ export async function getAllInitialInfo() { // Get teams object from database export async function getTeams() { const allTeams = await db.select().from(schema.teamScoresView); + for (let team in allTeams) { + let currentTeam = allTeams[team]; + if (!currentTeam.totalPoints) { + currentTeam.totalPoints = 0; + } + } return { teams: allTeams.map((team) => ({ name: team.teamName, color: team.teamColor, - points: team.totalPoints || testScore + points: team.totalPoints })) }; } diff --git a/src/lib/ui/Table.svelte b/src/lib/ui/Table.svelte new file mode 100644 index 0000000..ae4c5af --- /dev/null +++ b/src/lib/ui/Table.svelte @@ -0,0 +1,90 @@ + + +
+ + {#if header} + + {@render header()} + + {/if} + + + {#each data as d (d.id)} + + {@render row(d)} + + {/each} + +
+
+ + diff --git a/src/lib/ui/fitText.ts b/src/lib/ui/fitText.ts new file mode 100644 index 0000000..b79899c --- /dev/null +++ b/src/lib/ui/fitText.ts @@ -0,0 +1,36 @@ +import type { Action } from 'svelte/action'; + +export const fitText: Action = (node) => { + const container = node.parentElement; + + if (!container) return {}; + + function fit() { + node.style.whiteSpace = 'nowrap'; + node.style.transformOrigin = 'top left'; + node.style.transform = 'none'; + + // Step 1: fit to height + let size = 1; + node.style.fontSize = size + 'px'; + while (node.scrollHeight <= container!.clientHeight) { + size++; + node.style.fontSize = size + 'px'; + } + node.style.fontSize = size - 1 + 'px'; + + // Step 2: stretch width to fill container + const scaleX = container!.clientWidth / node.scrollWidth; + node.style.transform = `scaleX(${scaleX})`; + } + + const observer = new ResizeObserver(fit); + observer.observe(container); + fit(); + + return { + destroy() { + observer.disconnect(); + } + }; +}; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 19f0160..0794777 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,7 +1,7 @@ - - - {#if header} - - {@render header()} - - {/if} - - - {#each data as d} - {@render row(d)} - {/each} - -
- -