From b0b07269a0dc1166811d09e27a8b11f3e7b2d52e Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Fri, 29 Nov 2024 14:02:31 +0100 Subject: [PATCH] update watchlist page --- src/lib/utils.ts | 58 ++++++ src/routes/+page.svelte | 28 +-- src/routes/watchlist/stocks/+page.svelte | 255 +++++++++++++++++------ 3 files changed, 248 insertions(+), 93 deletions(-) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 79f8a695..24691939 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -19,6 +19,64 @@ type FlyAndScaleParams = { }; + + + export const compareTimes = (time1, time2) => { + const [hours1, minutes1] = time1.split(":").map(Number); + const [hours2, minutes2] = time2.split(":").map(Number); + + if (hours1 > hours2) return 1; + if (hours1 < hours2) return -1; + if (minutes1 > minutes2) return 1; + if (minutes1 < minutes2) return -1; + return 0; + } + + export const formatTime = (timeString) => { + // Split the time string into components + const [hours, minutes, seconds] = timeString.split(":").map(Number); + + // Determine AM or PM + const period = hours >= 12 ? "PM" : "AM"; + + // Convert hours from 24-hour to 12-hour format + const formattedHours = hours % 12 || 12; // Converts 0 to 12 for midnight + + // Format the time string + const formattedTimeString = `${formattedHours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")} ${period}`; + + return formattedTimeString; + } + +export const groupEarnings = (earnings) => { + return Object.entries( + earnings + ?.reduce((acc, item) => { + const dateKey = new Intl.DateTimeFormat('en-US', { + day: '2-digit', + month: 'short', + year: 'numeric', + }).format(new Date(item?.date)); + + if (!acc[dateKey]) acc[dateKey] = []; + acc[dateKey].push(item); + return acc; + }, {}) + ) + // Sort the grouped dates in descending order + ?.sort(([dateA], [dateB]) => new Date(dateA) - new Date(dateB)) + ?.map(([date, earnings]) => [ + date, + // Sort earnings within the date by time + earnings.sort((a, b) => { + const timeA = new Date(`1970-01-01T${a.time}`); + const timeB = new Date(`1970-01-01T${b.time}`); + return timeB - timeA; + }) + ]); +}; + + export const groupNews = (news, watchList) => { return Object.entries( news diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3ffa5696..f0c6e053 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,37 +9,11 @@ import { abbreviateNumber } from "$lib/utils"; import * as Tabs from "$lib/components/shadcn/tabs/index.js"; import HoverStockChart from "$lib/components/HoverStockChart.svelte"; - import { screenWidth, numberOfUnreadNotification } from "$lib/store"; + import { compareTimes, formatTime } from "$lib/utils"; export let data; let optionsMode = "premium"; - function compareTimes(time1, time2) { - const [hours1, minutes1] = time1.split(":").map(Number); - const [hours2, minutes2] = time2.split(":").map(Number); - - if (hours1 > hours2) return 1; - if (hours1 < hours2) return -1; - if (minutes1 > minutes2) return 1; - if (minutes1 < minutes2) return -1; - return 0; - } - - function formatTime(timeString) { - // Split the time string into components - const [hours, minutes, seconds] = timeString.split(":").map(Number); - - // Determine AM or PM - const period = hours >= 12 ? "PM" : "AM"; - - // Convert hours from 24-hour to 12-hour format - const formattedHours = hours % 12 || 12; // Converts 0 to 12 for midnight - - // Format the time string - const formattedTimeString = `${formattedHours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")} ${period}`; - - return formattedTimeString; - } function reformatDate(dateString) { return ( diff --git a/src/routes/watchlist/stocks/+page.svelte b/src/routes/watchlist/stocks/+page.svelte index ca03a567..68cac3b9 100644 --- a/src/routes/watchlist/stocks/+page.svelte +++ b/src/routes/watchlist/stocks/+page.svelte @@ -1,6 +1,13 @@