From 1d1c500c6361cb9c886c2a25779f1ef5c341d9ee Mon Sep 17 00:00:00 2001 From: Kiril Videlov Date: Tue, 21 Feb 2023 00:44:30 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Refactor:=20Add=20SessionV2=20pa?= =?UTF-8?q?ge=20and=20features?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add a new page for sessionv2 with features to load session data, deltas, list of files, prerender flag, and navigation to previous and next session - Add a sticky header for the timeline and a list of files and entries for the timeline - Add a link to the v2 page for project session page [src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.svelte] - Add a new file for the session page - Add a function to convert timestamp to column index - Add a sticky header for the timeline - Add a list of files for the timeline - Add a list of entries for the timeline [src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.ts] - Add a new page for sessionv2 with the following features: - Load session data - Load deltas from the backend - Load list of files from the backend - Add a prerender flag - Add a navigation to the previous and next session if available [src/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte] - Add link to v2 page for project session page --- .../sessions/[sessionId]/+page.svelte | 1 + .../sessionv2/[sessionId]/+page.svelte | 178 ++++++++++++++++++ .../sessionv2/[sessionId]/+page.ts | 51 +++++ 3 files changed, 230 insertions(+) create mode 100644 src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.svelte create mode 100644 src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.ts diff --git a/src/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte b/src/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte index 021a59bd3..f1228e6c6 100644 --- a/src/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte +++ b/src/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte @@ -73,6 +73,7 @@ nextSession={$nextSession} previousSesssion={$previousSesssion} /> + v2
diff --git a/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.svelte b/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.svelte new file mode 100644 index 000000000..f8a02e4e2 --- /dev/null +++ b/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.svelte @@ -0,0 +1,178 @@ + +
+
+ +
+ + +
+
+ +
+
+
+
+ {format(start, "hh:mm")} +
+
+ {format(quarter, "hh:mm")} +
+
+ {format(midpoint, "hh:mm")} +
+
+ {format(threequarters, "hh:mm")} +
+
+ {format(end, "hh:mm")} +
+
+
+
+ + +
+ +
+ + + {#each Object.keys($deltas) as filePath} +
+ {filePath.split("/").pop()} +
+ {/each} +
+ + +
+
+
+
+
+
+
+
+ + +
    + {#each Object.entries($deltas) as [filePath, fileDeltas], idx} + {#each fileDeltas as delta} +
  1. + +

    + +

    +
    +
  2. + {/each} + {/each} +
+
+
+
+
+
diff --git a/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.ts b/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.ts new file mode 100644 index 000000000..4d0756047 --- /dev/null +++ b/src/routes/projects/[projectId]/sessionv2/[sessionId]/+page.ts @@ -0,0 +1,51 @@ +import type { PageLoad } from "./$types"; +import { derived, readable } from "svelte/store"; +import { building } from "$app/environment"; +import type { Delta } from "$lib/deltas"; + +export const prerender = false; +export const load: PageLoad = async ({ parent, params }) => { + const { sessions } = await parent(); + const deltas = building + ? readable({} as Record) + : (await import("$lib/deltas")).default({ + projectId: params.projectId, + sessionId: params.sessionId, + }); + const files = building + ? ({} as Record) + : (await import("$lib/sessions")).listFiles({ + projectId: params.projectId, + sessionId: params.sessionId, + }); + return { + session: derived(sessions, (sessions) => { + const result = sessions.find( + (session) => session.id === params.sessionId + ); + return result ? result : sessions[0]; + }), + previousSesssion: derived(sessions, (sessions) => { + const currentSessionIndex = sessions.findIndex( + (session) => session.id === params.sessionId + ); + if (currentSessionIndex - 1 < sessions.length) { + return sessions[currentSessionIndex - 1]; + } else { + return undefined; + } + }), + nextSession: derived(sessions, (sessions) => { + const currentSessionIndex = sessions.findIndex( + (session) => session.id === params.sessionId + ); + if (currentSessionIndex + 1 < sessions.length) { + return sessions[currentSessionIndex + 1]; + } else { + return undefined; + } + }), + files: files, + deltas: deltas, + } +}