From f758411703e0f0c0c3bfc7e5efcd97130dde81ee Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Tue, 17 Dec 2024 16:24:43 +0100 Subject: [PATCH] improve performance of market news page --- src/routes/market-news/+page.svelte | 174 ++++++++++-------- src/routes/market-news/general/+page.svelte | 163 +++++++++------- .../market-news/press-releases/+page.svelte | 2 +- 3 files changed, 190 insertions(+), 149 deletions(-) diff --git a/src/routes/market-news/+page.svelte b/src/routes/market-news/+page.svelte index c2278b85..ba46eb46 100644 --- a/src/routes/market-news/+page.svelte +++ b/src/routes/market-news/+page.svelte @@ -5,7 +5,7 @@ export let data; let rawData = data?.getData; - let news = rawData.slice(0, 15) ?? []; + let news = rawData.slice(0, 10) ?? []; const formatDate = (dateString) => { // Create a date object for the input dateString @@ -51,7 +51,6 @@ }; }); - let videoId = null; function checkIfYoutubeVideo(link) { const url = new URL(link); @@ -67,6 +66,12 @@ return null; } } + + // Track whether each video should be shown + let showVideo = {}; + function handlePlayClick(index: number) { + showVideo = { ...showVideo, [index]: true }; + } @@ -106,88 +111,97 @@
- {#if news.length !== 0} - {#each news as item} -
- {#if (videoId = checkIfYoutubeVideo(item?.url))} -
-

- {formatDate(item?.publishedDate)} ago · {item?.site} -

- + {#if checkIfYoutubeVideo(item.url)} + {#if showVideo[index]} + +
+ +
+ {:else} + +
+ + {/if} + - -
- {/each} + {:else} + + + {/if} +
+
+ {/each} {/if}
diff --git a/src/routes/market-news/general/+page.svelte b/src/routes/market-news/general/+page.svelte index 536741f3..7eb6c62d 100644 --- a/src/routes/market-news/general/+page.svelte +++ b/src/routes/market-news/general/+page.svelte @@ -5,7 +5,7 @@ export let data; let rawData = data?.getData; - let news = rawData.slice(0, 15) ?? []; + let news = rawData.slice(0, 10) ?? []; const formatDate = (dateString) => { // Create a date object for the input dateString @@ -51,7 +51,6 @@ }; }); - let videoId = null; function checkIfYoutubeVideo(link) { const url = new URL(link); @@ -66,6 +65,12 @@ } else { return null; } + } + + // Track whether each video should be shown + let showVideo = {}; + function handlePlayClick(index: number) { + showVideo = { ...showVideo, [index]: true }; } @@ -112,76 +117,97 @@
- {#if news.length !== 0} - {#each news as item} -
- {#if (videoId = checkIfYoutubeVideo(item?.url))} -
-

- {formatDate(item?.publishedDate)} ago · {item?.site} -

- + {#if checkIfYoutubeVideo(item.url)} + {#if showVideo[index]} + +
+ +
+ {:else} + +
+
+ {/each} {/if}
@@ -189,3 +215,4 @@
+ diff --git a/src/routes/market-news/press-releases/+page.svelte b/src/routes/market-news/press-releases/+page.svelte index 207e3de7..9dbf7256 100644 --- a/src/routes/market-news/press-releases/+page.svelte +++ b/src/routes/market-news/press-releases/+page.svelte @@ -5,7 +5,7 @@ export let data; let rawData = data?.getData; - let news = rawData.slice(0, 15) ?? []; + let news = rawData.slice(0, 10) ?? []; const formatDate = (dateString) => { // Create a date object for the input dateString