diff --git a/package.json b/package.json index 219502f..0157660 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "better-sqlite3": "^11.8.0", "drizzle-orm": "^0.38.4", "nanoid": "^5.0.9", + "runed": "^0.23.3", "spotify-web-api-node": "^5.0.2", "svelte-kit-sessions": "^0.4.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 179c8d0..0a8fe9c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: nanoid: specifier: ^5.0.9 version: 5.0.9 + runed: + specifier: ^0.23.3 + version: 0.23.3(svelte@5.19.1) spotify-web-api-node: specifier: ^5.0.2 version: 5.0.2 @@ -2323,8 +2326,8 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - runed@0.23.2: - resolution: {integrity: sha512-AhHCb5/B+YQW6ar1pzhGQOQy+byfjCH63ofuhrexSWwQKhC0EbQ60Z/wMYwETLo3ZubhwlNryxBt0seOMOrVFQ==} + runed@0.23.3: + resolution: {integrity: sha512-qmL6JOvI9fg2XrSI9eP8bVIaAyk1ztVZsoj37hTs4BSuOOyeLkrIPI16mwarXFYbxSfyJGCwAWgfpSq+ehQmgg==} peerDependencies: svelte: ^5.7.0 @@ -3615,7 +3618,7 @@ snapshots: '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.7.0 esm-env: 1.2.2 - runed: 0.23.2(svelte@5.19.1) + runed: 0.23.3(svelte@5.19.1) svelte: 5.19.1 svelte-toolbelt: 0.7.1(svelte@5.19.1) tabbable: 6.2.0 @@ -4592,7 +4595,7 @@ snapshots: dependencies: queue-microtask: 1.2.3 - runed@0.23.2(svelte@5.19.1): + runed@0.23.3(svelte@5.19.1): dependencies: esm-env: 1.2.2 svelte: 5.19.1 @@ -4818,7 +4821,7 @@ snapshots: svelte-toolbelt@0.7.1(svelte@5.19.1): dependencies: clsx: 2.1.1 - runed: 0.23.2(svelte@5.19.1) + runed: 0.23.3(svelte@5.19.1) style-to-object: 1.0.8 svelte: 5.19.1 diff --git a/src/lib/types.ts b/src/lib/types.ts index a3b8db0..4fccaeb 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -80,3 +80,9 @@ export type TagsObj = Record; export type Answer = typeof answers.$inferSelect; export type Question = typeof questions.$inferSelect & { answers: Answer[] }; + +export interface SoundCheckpoint { + title: string; + description: string; + image: EnhancedImage | undefined; +} diff --git a/src/routes/vinge/vaukuivali/+page.svelte b/src/routes/vinge/vaukuivali/+page.svelte index e53c798..9baccbb 100644 --- a/src/routes/vinge/vaukuivali/+page.svelte +++ b/src/routes/vinge/vaukuivali/+page.svelte @@ -1,4 +1,6 @@ @@ -321,11 +164,11 @@ {/snippet} -{#snippet timeCard(point: SoundCheckpoint)} +{#snippet timeCard(db: number | undefined)}

- {point.db}dBA - - {getElapsedTime(soundCheckpoints.at(0)?.crossedTime, point.crossedTime)} + {db}dBA - + {getElapsedTime(firstScroll, db ? checkpointTimes[db] : firstScroll)}

{/snippet} @@ -367,7 +210,7 @@
- {#each soundCheckpoints as { db }} + {#each checkpointDecibels as db}
- +

- {#if currentCheckpoint?.db === 0} + {#if currentCheckpoint === 0} Vau kui vali! {:else} - {currentCheckpoint?.title} + {soundCheckpoints[currentCheckpoint]?.title} {/if}

- {#if currentCheckpoint?.db === 0} + {#if currentCheckpoint === 0}

Nagu paljud võivad teada, on detsibellide skaala logaritmiline.
60dB on 2x valjem, kui 50dB. @@ -410,7 +256,7 @@

{:else}

- {currentCheckpoint?.description} + {soundCheckpoints[currentCheckpoint]?.description}

{/if}
@@ -430,10 +276,10 @@ {/snippet}
- {@render timeCard(soundCheckpoints.at(-1) as SoundCheckpoint)} + {@render timeCard(checkpointDecibels.at(-1))} - {#each soundCheckpoints.slice(1, -1).reverse() as point} - {@render timeCard(point)} + {#each checkpointDecibels.slice(1, -1).reverse() as db} + {@render timeCard(db)} {/each} @@ -450,7 +296,7 @@ Purdue University PPE training materialsPurdue University PPE training materials diff --git a/src/routes/vinge/vaukuivali/checkpoints.ts b/src/routes/vinge/vaukuivali/checkpoints.ts new file mode 100644 index 0000000..b867836 --- /dev/null +++ b/src/routes/vinge/vaukuivali/checkpoints.ts @@ -0,0 +1,178 @@ +import { ImageCreditType, type SoundCheckpoint } from '$lib/types'; + +import roomImg from '$lib/assets/vaukuivali/roomtone.jpg?enhanced'; +import watchImg from '$lib/assets/vaukuivali/oldwatch.jpg?enhanced'; +import convoImg from '$lib/assets/vaukuivali/conversation.jpg?enhanced'; +import gennImg from '$lib/assets/vaukuivali/genn.webp?enhanced'; +import tvImg from '$lib/assets/vaukuivali/tv.jpg?enhanced'; +import trafficImg from '$lib/assets/vaukuivali/kaubamaja.jpg?enhanced'; +import harleyImg from '$lib/assets/vaukuivali/harley.jpg?enhanced'; +import landingImg from '$lib/assets/vaukuivali/landing.jpg?enhanced'; +import carCrashImg from '$lib/assets/vaukuivali/carcrash.jpg?enhanced'; +import chainsawImg from '$lib/assets/vaukuivali/chainsaw.jpg?enhanced'; +import jetImg from '$lib/assets/vaukuivali/fighters.jpg?enhanced'; +import hearingaidImg from '$lib/assets/vaukuivali/eardamage.jpg?enhanced'; + +export const soundCheckpoints: Record = { + 0: { + title: '', + description: 'Kesket metsa mingis koopas, kedagi pole ümber', + image: undefined + }, + 30: { + title: '"Vaikus"', + description: 'ehk elutoa pasiivne müra', + image: { + src: roomImg, + credit: { + type: ImageCreditType.web, + author: 'Kam Idris', + href: 'https://unsplash.com/@ka_idris' + }, + alt: 'Modernse ja minimalistliku disainiga siseruum.' + } + }, + 40: { + title: 'Tikk takk', + description: 'Mehaanilise kella tiksumine (va täistundidel)', + image: { + src: watchImg, + credit: { + type: ImageCreditType.web, + author: 'János Venczák', + href: 'https://unsplash.com/@venczakjanos' + }, + alt: 'Lahti võetud vanamoodne käekell. Näha on kella sisemust, hammasrattaid.' + } + }, + 50: { + title: 'Tava jutt', + description: 'Rahulik vestlus kodus', + image: { + src: convoImg, + credit: { + type: ImageCreditType.web, + author: 'Toa Heftiba', + href: 'https://unsplash.com/@heftiba' + }, + alt: 'Noor paar köögis. Mees lõikab taldriku peal pannkooki, naine istub ta kõrval pliidi peal ja vaatab.' + } + }, + 60: { + title: 'Ma sain nurgad täis', + description: 'Bingo õhtu Gennis (keset mängu)', + image: { + src: gennImg, + credit: { + type: ImageCreditType.web, + author: 'Laila Kaasik', + href: 'https://tartu.postimees.ee/8154041/lallavad-pidutsejad-panid-tartu-otsima-tasakaalu-ooelu-ja-oorahu-vahel' + }, + alt: 'Genialistide klubi tegutseb Tartus Magasini tänavas. Pilt on õhtusest ajast, rohkelt inimesti klubi välialal.' + } + }, + 70: { + title: 'Pult on kadunud', + description: 'Telekas, mis mängib natuke liiga valjult', + image: { + src: tvImg, + credit: { + type: ImageCreditType.web, + author: 'Jonas Leupe', + href: 'https://unsplash.com/@jonasleupe' + }, + alt: 'Keegi vaatab televiisorist filmi. Esiplaanil fookuses teleka pult, tagaplaanil udune tuba, mille seina vastas on telekas.' + } + }, + 80: { + title: 'USAs oleks hullem', + description: 'Riia mäe liiklus (ootad bussi Kaubamaja ees)', + image: { + src: trafficImg, + credit: { + type: ImageCreditType.web, + author: 'Google Street View', + href: 'https://maps.app.goo.gl/ZfADP4LnUid7d571A' + }, + alt: 'Aastal 2012 tehtud Google Street View pilt. Näha on Tartu Kaubamaja ning selle Riia tänava küljel olevat bussipeatust.' + } + }, + 90: { + title: 'USAs oleks rohkem', + description: 'Harley sõidab sinust mööda', + image: { + src: harleyImg, + credit: { + type: ImageCreditType.web, + author: 'Harley-Davidson', + href: 'https://unsplash.com/@harleydavidson' + }, + alt: 'Uue välimusega Harley-Davidson mootorrattas sõidab kiiresti mööda sirget maanteed.' + } + }, + 100: { + title: 'Põgenesid terminalist', + description: 'Boeing 707 1 meremiil enne maandumist', + image: { + src: landingImg, + credit: { + type: ImageCreditType.web, + author: 'Scott Fillmer', + href: 'https://unsplash.com/@scottfillmer' + }, + alt: 'Continental Airlines Boeing 777 maandub uduses Houston IAH lennujaamas.' + } + }, + 110: { + title: 'Maanteeraev', + description: 'Autosignaal 1m kauguselt', + image: { + src: carCrashImg, + credit: { + type: ImageCreditType.instagram, + author: 'Jordan Besson', + href: 'https://www.instagram.com/mr.blue.photographie' + }, + alt: 'Dramaatiline auto trikk filmi jaoks. Kahe auto kokkupõrge.' + } + }, + 120: { + title: 'Mootorsaag', + description: 'Nüüd on juba valus. Soovitan kanda kõrvatroppe.', + image: { + src: chainsawImg, + credit: { + type: ImageCreditType.web, + author: 'Benjamin Jopen', + href: 'https://unsplash.com/@benjopen' + }, + alt: 'Oranži ja musta värvi mootorsega lõigatakse langenud puud väiksemateks tükkideks.' + } + }, + 130: { + title: 'Kuidas sa nii lähedale said?', + description: 'Turboreaktiivmootoriga hävitaja lendutõus 15m kauguselt', + image: { + src: jetImg, + credit: { + type: ImageCreditType.web, + author: 'Colin Lloyd', + href: 'https://unsplash.com/@onthesearchforpineapples' + }, + alt: 'Kaheksa F-16 hävitajat lendavad koos formatsioonis taevas.' + } + }, + 150: { + title: 'Aia mu kõrvad', + description: 'Tubli töö! Su trummikile rebenes!', + image: { + src: hearingaidImg, + credit: { + type: ImageCreditType.web, + author: 'Mark Paton', + href: 'https://unsplash.com/@heftiba' + }, + alt: 'Lähivõte inimesest sisestamas oma kõrva kuuldeaparaati.' + } + } +};