From 71dc20c0ca3e39aa719ca68c3e316629c1f05cd0 Mon Sep 17 00:00:00 2001 From: Luke Else Date: Sun, 9 Feb 2025 20:03:48 +0000 Subject: [PATCH] #5 Styled cards, changed content in me.json --- src/app.html | 1 - src/lib/api/git.ts | 23 +++++++++++++++++++++++ src/lib/components/Cards/Card.svelte | 2 ++ src/main.svelte | 1 + src/routes/repos/+page.svelte | 9 ++++++--- static/json/me.json | 9 +++++++-- 6 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/app.html b/src/app.html index d772768..bfd3cb5 100644 --- a/src/app.html +++ b/src/app.html @@ -96,7 +96,6 @@ } .container { - padding-top: 3em; max-width: 90%; margin: auto; } diff --git a/src/lib/api/git.ts b/src/lib/api/git.ts index bb44000..cdef558 100644 --- a/src/lib/api/git.ts +++ b/src/lib/api/git.ts @@ -23,4 +23,27 @@ export async function fetchRepos(): Promise { console.error("Failed to fetch repos:", error); return []; } +} + +export function timeSince(inputDate: Date | string): string { + const date = new Date(inputDate); // Ensure it's a Date object + if (isNaN(date.getTime())) { + throw new Error("Invalid date provided"); + } + + const now: Date = new Date(); + const diffInMs: number = now.getTime() - date.getTime(); + const diffInSeconds: number = Math.floor(diffInMs / 1000); + const diffInMinutes: number = Math.floor(diffInSeconds / 60); + const diffInHours: number = Math.floor(diffInMinutes / 60); + const diffInDays: number = Math.floor(diffInHours / 24); + const diffInMonths: number = Math.floor(diffInDays / 30); // Approximate + const diffInYears: number = Math.floor(diffInDays / 365); // Approximate + + if (diffInDays === 0) return "Today"; + if (diffInDays === 1) return "Yesterday"; + if (diffInDays < 7) return `${diffInDays} days ago`; + if (diffInDays < 30) return `${Math.floor(diffInDays / 7)} week${diffInDays >= 14 ? 's' : ''} ago`; + if (diffInMonths < 12) return `${diffInMonths} month${diffInMonths > 1 ? 's' : ''} ago`; + return `${diffInYears} year${diffInYears > 1 ? 's' : ''} ago`; } \ No newline at end of file diff --git a/src/lib/components/Cards/Card.svelte b/src/lib/components/Cards/Card.svelte index c5f4ab9..d13957c 100644 --- a/src/lib/components/Cards/Card.svelte +++ b/src/lib/components/Cards/Card.svelte @@ -20,7 +20,9 @@ border-radius: .5em; scroll-snap-align: start; transition: all 0.2s; + box-shadow: .25em .25em .5em var(--hover); } + .card:hover { box-shadow: .5em .5em .5em var(--hover); } diff --git a/src/main.svelte b/src/main.svelte index 3214fba..ef2b849 100644 --- a/src/main.svelte +++ b/src/main.svelte @@ -14,6 +14,7 @@ border-radius: 1em; padding: .2em 2em 2em 2em; box-shadow: .5em .5em .5em var(--glow); + margin-bottom: 4em; } .flex-container { diff --git a/src/routes/repos/+page.svelte b/src/routes/repos/+page.svelte index 88d0848..017d0b1 100644 --- a/src/routes/repos/+page.svelte +++ b/src/routes/repos/+page.svelte @@ -1,15 +1,19 @@

My Projects

+

This here is a list of my most recently worked on projects. Note this does not show any private repositories. For more in depth information Click Here.

{#if $repos.length > 0} +
{addToast(new Toast("See a snapshot of my latest work.", ToastType.Info, true, 8_000))}
{#each $repos as repo} @@ -23,8 +27,7 @@
{repo.name} - {repo.size}KiB - {repo.updated_at} + {timeSince(repo.updated_at)}
{/each} diff --git a/static/json/me.json b/static/json/me.json index 1ac2375..df11f9d 100644 --- a/static/json/me.json +++ b/static/json/me.json @@ -44,7 +44,12 @@ { "duration" : "September 2022 - Present", "title" : "Thales UK - Software Engineer", - "description" : "As a software engineering apprentice at Thales UK, I find myself partaking in agile / scrum development methodologies in a strong team of 6 other engineers. The team iterates on a pre-existing system designed for the MOD, written in C++, using internal frameworks to assist.

To extend this, the apprenticeship includes allocated time for studying a Digital and Thechnology Solutions degree with the University of Warwick, including modules relevant to business management, devlopment processes and data integrity etc..." + "description" : "As a software engineering apprentice at Thales UK, I find myself partaking in agile / scrum development methodologies in a strong team of 6 other engineers. The team iterates on a pre-existing system designed for the MOD, written in C++, using internal frameworks to assist." + }, + { + "duration" : "September 2022 - Present", + "title" : "University of Warwick - Digital and Technology Solutions", + "description" : "The apprenticeship includes allocated time for studying a Digital and Thechnology Solutions degree with the University of Warwick, including modules relevant to business management, devlopment processes and data integrity etc..." }, { "duration" : "September 2020 - July 2022", @@ -54,7 +59,7 @@ { "duration" : "September 2015 - July 2020", "title" : "The Norton Knatchbull School (GCSEs)", - "description" : "FSMQ (C)
Maths (8)
Geography (9)
Biology (9)
Chemistry (9)
Physics (9)
Spanish (7)
English (Literature & Language) (7, 7)
Computer Science (9)" + "description" : "Computer Science (9)
Physics (9)
Chemistry (9)
Biology (9)
Geography (9)
FSMQ (C)
Maths (8)
Spanish (7)
English (Literature & Language) (7, 7)
" } ] } \ No newline at end of file