diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 513f0815..f6d6adc4 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -487,6 +487,19 @@ export function pageTransitionOut(node, { duration }) { }; } +export function convertTimestamp(timestamp) { + const date = new Date(timestamp * 1000); // Convert seconds to milliseconds + + return date.toLocaleString("en-US", { + year: "numeric", // e.g., "2024" + month: "short", // e.g., "Aug" + day: "2-digit", // e.g., "23" + hour: "numeric", // e.g., "3" + minute: "2-digit", // e.g., "59" + hour12: true, // e.g., "PM" + }); +} + /* function convertNYTimeToLocalTime(nyTimeString) { // New York Time Zone diff --git a/src/routes/options-flow/+page.svelte b/src/routes/options-flow/+page.svelte index 38d54bfa..440acf2c 100644 --- a/src/routes/options-flow/+page.svelte +++ b/src/routes/options-flow/+page.svelte @@ -469,7 +469,6 @@ $: { - diff --git a/src/routes/stocks/[tickerID]/+page.svelte b/src/routes/stocks/[tickerID]/+page.svelte index 40d8d306..37472123 100644 --- a/src/routes/stocks/[tickerID]/+page.svelte +++ b/src/routes/stocks/[tickerID]/+page.svelte @@ -8,7 +8,6 @@ corporateLobbyingComponent, taRatingComponent, swapComponent, - analystInsightComponent, governmentContractComponent, optionsNetFlowComponent, borrowedShareComponent, @@ -16,8 +15,6 @@ optionComponent, failToDeliverComponent, marketMakerComponent, - analystEstimateComponent, - sentimentComponent, screenWidth, displayCompanyName, numberOfUnreadNotification, @@ -28,10 +25,6 @@ darkPoolComponent, retailVolumeComponent, shareholderComponent, - trendAnalysisComponent, - revenueSegmentationComponent, - priceAnalysisComponent, - fundamentalAnalysisComponent, isCrosshairMoveActive, realtimePrice, priceIncrease, @@ -46,6 +39,7 @@ import NextEarnings from "$lib/components/NextEarnings.svelte"; import CommunitySentiment from "$lib/components/CommunitySentiment.svelte"; import Lazy from "$lib/components/Lazy.svelte"; + import { convertTimestamp } from '$lib/utils'; export let data; export let form; @@ -83,7 +77,7 @@ } } } else if (displayData === "6M") { - currentDataRow = sixMonthPrice?.slice(-1)[0]; + currentDataRow = sixMonthPrice?.slice(-1)?.at(0); } //currentDataRow = oneWeekPrice.slice(-1)[0] @@ -100,9 +94,19 @@ }; //const formattedDate = (displayData === '1D' || displayData === '1W' || displayData === '1M') ? date.toLocaleString('en-GB', options).replace(/\//g, '.') : date.toLocaleDateString('en-GB', { day: '2-digit', month: '2-digit', year: 'numeric' }).replace(/\//g, '.'); - const formattedDate = displayData === "1D" || displayData === "1W" || displayData === "1M" ? date.toLocaleString("en-US", options) : date.toLocaleDateString("en-US", { day: "2-digit", month: "short", year: "numeric" }); + const formattedDate = displayData === "1D" || displayData === "1W" || displayData === "1M" + ? date.toLocaleString("en-US", options) + : date.toLocaleDateString("en-US", { day: "2-digit", month: "short", year: "numeric" }); + + const safeFormattedDate = formattedDate === "Invalid Date" ? convertTimestamp(data?.getStockQuote?.timestamp) : formattedDate; + displayLegend = { + close: currentDataRow?.value === '-' && currentDataRow?.close === undefined + ? data?.getStockQuote?.price + : (currentDataRow?.close ?? currentDataRow?.value), + date: safeFormattedDate, + change: change + }; - displayLegend = { close: currentDataRow?.close ?? currentDataRow?.value, date: formattedDate, change: change }; } } @@ -533,6 +537,16 @@ } } + $: dataMapping = { + "1D": oneDayPrice, + "1W": oneWeekPrice, + "1M": oneMonthPrice, + "6M": sixMonthPrice, + "1Y": oneYearPrice, + "MAX": threeYearPrice, + }; + + $: { if ($stockTicker && typeof window !== "undefined") { // add a check to see if running on client-side @@ -720,18 +734,13 @@ {#if output !== null}
- {#if displayData === "1D" && oneDayPrice?.length === 0} -

No data available

- {:else if displayData === "1W" && oneWeekPrice?.length === 0} -

No data available

- {:else if displayData === "1M" && oneMonthPrice?.length === 0} -

No data available

- {:else if displayData === "6M" && sixMonthPrice?.length === 0} -

No data available

- {:else if displayData === "1Y" && oneYearPrice?.length === 0} -

No data available

- {:else if displayData === "MAX" && threeYearPrice?.length === 0} -

No data available

+ {#if dataMapping[displayData]?.length === 0} +
+
+ + No {displayData} chart data available +
+
{:else} (chart = ref)} on:crosshairMove={handleCrosshairMove}> {#if displayData === "1D"}