From 62cd5853936a54ceb8472046abbb0f4d81aa4d82 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Wed, 13 Nov 2024 12:10:24 +0100 Subject: [PATCH] add indicator button to stock list --- src/lib/components/Table/Table.svelte | 50 ++-- src/routes/list/+layout.svelte | 4 +- src/routes/list/+page.svelte | 4 +- src/routes/list/country/[slug]/+page.svelte | 192 +-------------- .../list/dividend-aristocrats/+page.server.ts | 22 -- .../list/dividend-aristocrats/+page.svelte | 209 ---------------- .../list/dividend-kings/+page.server.ts | 22 -- src/routes/list/dividend-kings/+page.svelte | 209 ---------------- .../list/dividend/[slug]/+page.server.ts | 28 +++ src/routes/list/dividend/[slug]/+page.svelte | 50 ++++ src/routes/list/exchange/[slug]/+page.svelte | 174 +------------- src/routes/list/index/[slug]/+page.svelte | 4 - .../list/magnificent-seven/+page.server.ts | 1 + .../list/magnificent-seven/+page.svelte | 167 +------------ .../list/market-cap/[slug]/+page.svelte | 197 +--------------- src/routes/list/reit-stocks/+page.svelte | 189 ++------------- src/routes/list/sector/[slug]/+page.svelte | 223 +----------------- 17 files changed, 150 insertions(+), 1595 deletions(-) delete mode 100644 src/routes/list/dividend-aristocrats/+page.server.ts delete mode 100644 src/routes/list/dividend-aristocrats/+page.svelte delete mode 100644 src/routes/list/dividend-kings/+page.server.ts delete mode 100644 src/routes/list/dividend-kings/+page.svelte create mode 100644 src/routes/list/dividend/[slug]/+page.server.ts create mode 100644 src/routes/list/dividend/[slug]/+page.svelte diff --git a/src/lib/components/Table/Table.svelte b/src/lib/components/Table/Table.svelte index 1851272a..af2e01ed 100644 --- a/src/lib/components/Table/Table.svelte +++ b/src/lib/components/Table/Table.svelte @@ -11,6 +11,23 @@ export let data; export let rawData; + export let excludedRules = new Set([ + "volume", + "price", + "changesPercentage", + "revenue", + "eps", + "marketCap", + ]); + + export let defaultList = [ + { name: "Market Cap", rule: "marketCap" }, + { name: "Price", rule: "price" }, + { name: "% Change", rule: "changesPercentage" }, + { name: "Revenue", rule: "revenue" }, + ]; + + let ruleOfList = defaultList; let pagePathName = $page?.url?.pathname; let testList = []; @@ -108,20 +125,6 @@ }, ]; - let ruleOfList = [ - { name: "Market Cap", rule: "marketCap" }, - { name: "Price", rule: "price" }, - { name: "% Change", rule: "changesPercentage" }, - { name: "Revenue", rule: "revenue" }, - ]; - - const excludedRules = new Set([ - "volume", - "price", - "changesPercentage", - "revenue", - "eps", - ]); const proOnlyItems = new Set( allRows ?.filter((item) => !excludedRules?.has(item?.rule)) // Exclude the items based on the rule @@ -141,15 +144,23 @@ for (let i = 0; i < updateData.length; i++) { if (rawData[i]) { - // Check if "rank" is missing in updateData[i] and only add that key if it is + // Check if "rank" is missing in updateData[i] and add it if it exists in rawData[i] if (!("rank" in updateData[i]) && "rank" in rawData[i]) { updateData[i] = { ...updateData[i], rank: rawData[i]["rank"], }; } + // Check if "years" is missing in updateData[i] and add it if it exists in rawData[i] + if (!("years" in updateData[i]) && "years" in rawData[i]) { + updateData[i] = { + ...updateData[i], + years: rawData[i]["years"], + }; + } } } + rawData = updateData; stockList = rawData?.slice(0, 50); // Assign to stockList instead of rawData directly columns = generateColumns(rawData); @@ -174,12 +185,7 @@ async function handleResetAll() { searchQuery = ""; - ruleOfList = [ - { name: "Market Cap", rule: "marketCap" }, - { name: "Price", rule: "price" }, - { name: "% Change", rule: "changesPercentage" }, - { name: "Revenue", rule: "revenue" }, - ]; + ruleOfList = defaultList; ruleOfList = [...ruleOfList]; checkedItems = new Set(ruleOfList.map((item) => item.name)); allRows = sortIndicatorCheckMarks(allRows); @@ -449,7 +455,7 @@
- + diff --git a/src/routes/list/+layout.svelte b/src/routes/list/+layout.svelte index 27db6457..b244b55a 100644 --- a/src/routes/list/+layout.svelte +++ b/src/routes/list/+layout.svelte @@ -156,11 +156,11 @@ }, { title: "Dividend Kings", - link: "/list/dividend-kings", + link: "/list/dividend/dividend-kings", }, { title: "Dividend Aristocrats", - link: "/list/dividend-aristocrats", + link: "/list/dividend/dividend-aristocrats", }, { title: "All Active REITs on the US Stock Market", diff --git a/src/routes/list/+page.svelte b/src/routes/list/+page.svelte index 1ab326ec..b3af167c 100644 --- a/src/routes/list/+page.svelte +++ b/src/routes/list/+page.svelte @@ -508,7 +508,7 @@
  • Dividend Kings @@ -516,7 +516,7 @@
  • Dividend Aristocrats diff --git a/src/routes/list/country/[slug]/+page.svelte b/src/routes/list/country/[slug]/+page.svelte index 7a317634..5fc655c5 100644 --- a/src/routes/list/country/[slug]/+page.svelte +++ b/src/routes/list/country/[slug]/+page.svelte @@ -1,15 +1,10 @@
    @@ -173,89 +69,5 @@
  • -
    - -
    - - -
    - -
    -
    - - - - - - {#each stockList as item, index} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {abbreviateNumber(item?.marketCap)} - - {item.price?.toFixed(2)} - - {#if item?.changesPercentage >= 0} - +{item?.changesPercentage?.toFixed(2)}% - {:else} - {item?.changesPercentage?.toFixed(2)}% - {/if} - - {item?.revenue !== null - ? abbreviateNumber(item?.revenue) - : "-"} -
    -
    -
    -
    + diff --git a/src/routes/list/dividend-aristocrats/+page.server.ts b/src/routes/list/dividend-aristocrats/+page.server.ts deleted file mode 100644 index 56d4aa45..00000000 --- a/src/routes/list/dividend-aristocrats/+page.server.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const load = async ({ locals }) => { - const getDividendAristocrats = async () => { - const { apiKey, apiURL } = locals; - - const response = await fetch(apiURL + "/dividend-aristocrats", { - method: "GET", - headers: { - "Content-Type": "application/json", - "X-API-KEY": apiKey, - }, - }); - - const output = await response.json(); - - return output; - }; - - // Make sure to return a promise - return { - getDividendAristocrats: await getDividendAristocrats(), - }; -}; diff --git a/src/routes/list/dividend-aristocrats/+page.svelte b/src/routes/list/dividend-aristocrats/+page.svelte deleted file mode 100644 index 63ff754d..00000000 --- a/src/routes/list/dividend-aristocrats/+page.svelte +++ /dev/null @@ -1,209 +0,0 @@ - - -
    -
    - - - Dividend Aristocrats are companies in the S&P500 index that have been - raising their dividends every year for 25 or more years. This is a list of - all the dividend aristocrats. -
    - -
    - -
    - - -
    - - -
    -
    - - - - - {#each displayList as item} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {item?.price} - - {#if item?.changesPercentage >= 0} - +{item.changesPercentage?.toFixed(2)}% - {:else} - {item.changesPercentage?.toFixed(2)}% - - {/if} - - {item?.dividendYield}% - - {item?.years} -
    - - - diff --git a/src/routes/list/dividend-kings/+page.server.ts b/src/routes/list/dividend-kings/+page.server.ts deleted file mode 100644 index 352a35ff..00000000 --- a/src/routes/list/dividend-kings/+page.server.ts +++ /dev/null @@ -1,22 +0,0 @@ -export const load = async ({ locals }) => { - const getDividendKings = async () => { - const { apiKey, apiURL } = locals; - - const response = await fetch(apiURL + "/dividend-kings", { - method: "GET", - headers: { - "Content-Type": "application/json", - "X-API-KEY": apiKey, - }, - }); - - const output = await response.json(); - - return output; - }; - - // Make sure to return a promise - return { - getDividendKings: await getDividendKings(), - }; -}; diff --git a/src/routes/list/dividend-kings/+page.svelte b/src/routes/list/dividend-kings/+page.svelte deleted file mode 100644 index 914ffc07..00000000 --- a/src/routes/list/dividend-kings/+page.svelte +++ /dev/null @@ -1,209 +0,0 @@ - - -
    -
    - - - Dividend Kings are companies that have been raising their dividend payments - every year for 50 or more years. This is a list of all the dividend kings on - the US stock market. -
    - -
    - -
    - - -
    - -
    - - - - - - {#each displayList as item} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {item?.price} - - {#if item?.changesPercentage >= 0} - +{item.changesPercentage?.toFixed(2)}% - {:else} - {item.changesPercentage?.toFixed(2)}% - - {/if} - - {item?.dividendYield}% - - {item?.years} -
    -
    -
    -
    diff --git a/src/routes/list/dividend/[slug]/+page.server.ts b/src/routes/list/dividend/[slug]/+page.server.ts new file mode 100644 index 00000000..7bae353f --- /dev/null +++ b/src/routes/list/dividend/[slug]/+page.server.ts @@ -0,0 +1,28 @@ +export const load = async ({ locals, params }) => { + const getParams = async () => { + return params.slug; + }; + const getDividendCategory = async () => { + const { apiKey, apiURL } = locals; + const postData = { filterList: params.slug }; + + const response = await fetch(apiURL + "/list-category", { + method: "POST", + headers: { + "Content-Type": "application/json", + "X-API-KEY": apiKey, + }, + body: JSON.stringify(postData), + }); + + const output = await response.json(); + + return output; + }; + + // Make sure to return a promise + return { + getDividendCategory: await getDividendCategory(), + getParams: await getParams(), + }; +}; diff --git a/src/routes/list/dividend/[slug]/+page.svelte b/src/routes/list/dividend/[slug]/+page.svelte new file mode 100644 index 00000000..d9a9ae70 --- /dev/null +++ b/src/routes/list/dividend/[slug]/+page.svelte @@ -0,0 +1,50 @@ + + +
    +
    + + + Dividend Kings are companies that have been raising their dividend payments + every year for 50 or more years. This is a list of all the dividend kings on + the US stock market. +
    + + + + diff --git a/src/routes/list/exchange/[slug]/+page.svelte b/src/routes/list/exchange/[slug]/+page.svelte index 8ca05f27..3e74670b 100644 --- a/src/routes/list/exchange/[slug]/+page.svelte +++ b/src/routes/list/exchange/[slug]/+page.svelte @@ -1,10 +1,7 @@
    @@ -170,89 +84,5 @@ -
    - -
    - - -
    - -
    -
    -
    - - - - - {#each stockList as item, index} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {abbreviateNumber(item?.marketCap)} - - {item.price?.toFixed(2)} - - {#if item?.changesPercentage >= 0} - +{item?.changesPercentage?.toFixed(2)}% - {:else} - {item?.changesPercentage?.toFixed(2)}% - {/if} - - {item?.revenue !== null - ? abbreviateNumber(item?.revenue) - : "-"} -
    - - - + diff --git a/src/routes/list/index/[slug]/+page.svelte b/src/routes/list/index/[slug]/+page.svelte index e33d470e..904c86e1 100644 --- a/src/routes/list/index/[slug]/+page.svelte +++ b/src/routes/list/index/[slug]/+page.svelte @@ -1,8 +1,6 @@
    diff --git a/src/routes/list/magnificent-seven/+page.server.ts b/src/routes/list/magnificent-seven/+page.server.ts index 6657883a..9e1ddeb5 100644 --- a/src/routes/list/magnificent-seven/+page.server.ts +++ b/src/routes/list/magnificent-seven/+page.server.ts @@ -1,4 +1,5 @@ export const load = async ({ locals }) => { + const getMagnificentSeven = async () => { const { apiURL, apiKey } = locals; diff --git a/src/routes/list/magnificent-seven/+page.svelte b/src/routes/list/magnificent-seven/+page.svelte index 83e55c62..bf881d93 100644 --- a/src/routes/list/magnificent-seven/+page.svelte +++ b/src/routes/list/magnificent-seven/+page.svelte @@ -1,14 +1,9 @@
    @@ -157,82 +71,5 @@ -
    - -
    - - -
    - -
    -
    - - - - - {#each stockList as item} - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {item.price?.toFixed(2)} - - {#if item?.changesPercentage >= 0} - +{item.changesPercentage?.toFixed(2)}% - {:else} - {item.changesPercentage?.toFixed(2)}% - - {/if} - - {item?.marketCap !== null - ? abbreviateNumber(item?.marketCap) - : "-"} - - {item?.revenue !== null ? abbreviateNumber(item?.revenue) : "-"} -
    - - + diff --git a/src/routes/list/market-cap/[slug]/+page.svelte b/src/routes/list/market-cap/[slug]/+page.svelte index 0cd6fff4..9a6974e3 100644 --- a/src/routes/list/market-cap/[slug]/+page.svelte +++ b/src/routes/list/market-cap/[slug]/+page.svelte @@ -1,11 +1,8 @@
    @@ -126,77 +38,6 @@ the US stock market. -
    - -
    - -
    - -
    -
    - - - - - {#each stockList as item} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {item?.price} - - {#if item?.changesPercentage >= 0} - +{item.changesPercentage?.toFixed(2)}% - {:else} - {item.changesPercentage?.toFixed(2)}% - - {/if} - - {item?.dividendYield}% - - {abbreviateNumber(item?.marketCap)} -
    - - + diff --git a/src/routes/list/sector/[slug]/+page.svelte b/src/routes/list/sector/[slug]/+page.svelte index 46bb8b33..e9c858f2 100644 --- a/src/routes/list/sector/[slug]/+page.svelte +++ b/src/routes/list/sector/[slug]/+page.svelte @@ -1,136 +1,19 @@
    @@ -177,89 +60,5 @@ -
    - -
    - - -
    - -
    -
    -
    - - - - - {#each marketCapList as item} - - - - - - - - - - - - - - - - - {/each} - -
    - {item?.rank} - - - - {item?.name?.length > charNumber - ? item?.name?.slice(0, charNumber) + "..." - : item?.name} - - {abbreviateNumber(item?.marketCap)} - - {item.price?.toFixed(2)} - - {#if item?.changesPercentage >= 0} - +{item?.changesPercentage?.toFixed(2)}% - {:else} - {item?.changesPercentage?.toFixed(2)}% - {/if} - - {item?.revenue !== null - ? abbreviateNumber(item?.revenue) - : "-"} -
    - - - +