diff --git a/src/lib/components/Table/Table.svelte b/src/lib/components/Table/Table.svelte index 0b82a94d..d1e9a302 100644 --- a/src/lib/components/Table/Table.svelte +++ b/src/lib/components/Table/Table.svelte @@ -35,7 +35,7 @@ export let hideLastRow = false; let originalData = [...rawData]; // Unaltered copy of raw data - let ruleOfList = defaultList; + let ruleOfList = [...defaultList]; let socket; const defaultRules = defaultList?.map((item) => item?.rule); @@ -105,6 +105,7 @@ { name: "Altman-Z-Score", rule: "altmanZScore", type: "float" }, { name: "Piotroski F-Score", rule: "piotroskiScore", type: "float" }, { name: "Total Liabilities", rule: "totalLiabilities", type: "int" }, + { name: "RSI", rule: "rsi", type: "float" }, { name: "Short Ratio", rule: "shortRatio", type: "int" }, { name: "Short Interest", rule: "sharesShort", type: "int" }, { name: "Short % Float", rule: "shortFloatPercent", type: "percent" }, @@ -150,7 +151,8 @@ ?.map((item) => item?.name), // Map the remaining items to their names ); - checkedItems = new Set(ruleOfList.map((item) => item.name)); + checkedItems = new Set(ruleOfList?.map((item) => item.name)); + allRows = sortIndicatorCheckMarks(allRows); const handleDownloadMessage = (event) => { let updateData = event?.data?.rawData ?? []; // Use a new variable for updated data @@ -168,7 +170,7 @@ Object.assign(newData, updateData[i]); // Merge fields from defaultRules that are missing in updateData - defaultRules.forEach((rule) => { + defaultRules?.forEach((rule) => { if (!(rule in updateData[i]) && rule in rawData[i]) { newData[rule] = rawData[i][rule]; } @@ -494,7 +496,6 @@ score: "AI Score", researchAndDevelopmentExpenses: "R&D", counter: "Ratings Count", - rsi: "RSI", // Add more key-label mappings here as needed }; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e467befb..937aee5c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -325,18 +325,6 @@ > - - Top Shorted Stocks - - Top Analyst Stocks - Top Shorted Stocks Penny Stocks + + Most Shorted Stocks + Oversold Stocks { + + const getStocks = async () => { + const { apiKey, apiURL } = locals; + const postData = { filterList: 'most-shorted-stocks' }; + + 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(); + setHeaders({ "cache-control": "public, max-age=60*5" }); + + return output; + }; + + // Make sure to return a promise + return { + getStocks: await getStocks(), + }; +}; diff --git a/src/routes/list/most-shorted-stocks/+page.svelte b/src/routes/list/most-shorted-stocks/+page.svelte new file mode 100644 index 00000000..ec08fec9 --- /dev/null +++ b/src/routes/list/most-shorted-stocks/+page.svelte @@ -0,0 +1,45 @@ + + + + + + + A list of the stocks with the highest number of shares shorted relative to + the stock's float. Float is the amount of shares that are considered + available for trading. + + + + + diff --git a/src/routes/list/overbought-stocks/+page.svelte b/src/routes/list/overbought-stocks/+page.svelte index 1306434a..afc63ece 100644 --- a/src/routes/list/overbought-stocks/+page.svelte +++ b/src/routes/list/overbought-stocks/+page.svelte @@ -9,6 +9,16 @@ { name: "% Change", rule: "changesPercentage" }, { name: "Market Cap", rule: "marketCap" }, ]; + + const excludedRules = new Set([ + "volume", + "price", + "changesPercentage", + "revenue", + "eps", + "marketCap", + "rsi", + ]); @@ -32,5 +42,10 @@ - + diff --git a/src/routes/list/oversold-stocks/+page.svelte b/src/routes/list/oversold-stocks/+page.svelte index 01084f02..f2a1f67e 100644 --- a/src/routes/list/oversold-stocks/+page.svelte +++ b/src/routes/list/oversold-stocks/+page.svelte @@ -9,6 +9,16 @@ { name: "% Change", rule: "changesPercentage" }, { name: "Market Cap", rule: "marketCap" }, ]; + + const excludedRules = new Set([ + "volume", + "price", + "changesPercentage", + "revenue", + "eps", + "marketCap", + "rsi", + ]); @@ -33,5 +43,10 @@ - + diff --git a/src/routes/most-shorted-stocks/+page.server.ts b/src/routes/most-shorted-stocks/+page.server.ts deleted file mode 100644 index efd6e233..00000000 --- a/src/routes/most-shorted-stocks/+page.server.ts +++ /dev/null @@ -1,25 +0,0 @@ -export const load = async ({ locals, setHeaders }) => { - const getMostShortedStocks = async () => { - const { apiKey, apiURL, user } = locals; - - const response = await fetch(apiURL + "/most-shorted-stocks", { - method: "GET", - headers: { - "Content-Type": "application/json", - "X-API-KEY": apiKey, - }, - }); - - let output = await response.json(); - output = user?.tier !== "Pro" ? output?.reverse()?.slice(0, 6) : output; - - setHeaders({ "cache-control": "public, max-age=3000" }); - - return output; - }; - - // Make sure to return a promise - return { - getMostShortedStocks: await getMostShortedStocks(), - }; -}; diff --git a/src/routes/most-shorted-stocks/+page.svelte b/src/routes/most-shorted-stocks/+page.svelte deleted file mode 100644 index 687c7c5c..00000000 --- a/src/routes/most-shorted-stocks/+page.svelte +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} High - Short Interest Stocks · stocknear - - - - - - - - - - - - - - - - - - - - Home - Top Shorted Stocks - - - - - - - - - - Top Shorted Stocks - - - High short-interest stocks are volatile and prone to short - squeezes. - - - - - - - - - - - - - -
- High short-interest stocks are volatile and prone to short - squeezes. -