diff --git a/src/routes/politicians/[slug]/+page.svelte b/src/routes/politicians/[slug]/+page.svelte index 8b7120ea..46948c54 100644 --- a/src/routes/politicians/[slug]/+page.svelte +++ b/src/routes/politicians/[slug]/+page.svelte @@ -25,17 +25,65 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) let displayList = []; let optionsData = {}; - let name = rawData?.at(0)?.representative ?? 'n/a'; - let numOfTrades = rawData?.length; - let lastTradedDate = rawData?.at(0)?.transactionDate; + let name = rawData?.history?.at(0)?.representative ?? 'n/a'; + let numOfTrades = rawData?.history?.length; + let lastTradedDate = rawData?.history?.at(0)?.transactionDate; let buySellRatio = 0 let totalAmountTraded = 0; - let politicianImage = data?.getPolitician?.politicianImage; let politicianDistrict = data?.getPolitician?.politicianDistrict; let politicianCongress = data?.getPolitician?.politicianCongress; - let numOfAssets = new Set(rawData?.map(item => item?.ticker))?.size; + let numOfAssets = new Set(rawData?.history?.map(item => item?.ticker))?.size; let politicianParty = data?.getPolitician?.politicianParty; + function sectorSelector(sector) { + let path; + switch(sector) { + case 'Financials': + path = "financial-sector"; + break; + case 'Healthcare': + path = "healthcare-sector"; + break; + case 'Information Technology': + path = "technology-sector"; + break; + case 'Technology': + path = "technology-sector"; + break; + case 'Financial Services': + path = "financial-sector"; + break; + case 'Industrials': + path = "industrials-sector"; + break; + case 'Energy': + path = "energy-sector"; + break; + case 'Utilities': + path = "utilities-sector"; + break; + case 'Consumer Cyclical': + path = "consumer-cyclical-sector"; + break; + case 'Real Estate': + path = "real-estate-sector"; + break; + case 'Basic Materials': + path = "basic-materials-sector"; + break; + case 'Communication Services': + path = "communication-services-sector"; + break; + case 'Consumer Defensive': + path = "consumer-defensive-sector"; + break; + default: + // Handle default case if needed + break; + } + goto("/list/" + path); +} + function getYearFromDate(dateString) { return new Date(dateString).getFullYear(); @@ -60,7 +108,7 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) } // Calculate the total sum - totalAmountTraded = rawData?.reduce((sum, item) => { + totalAmountTraded = rawData?.history?.reduce((sum, item) => { const amount = item?.amount; const parsedAmount = extractNumberFromAmount(amount); return sum + parsedAmount; @@ -71,11 +119,11 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) async function infiniteHandler({ detail: { loaded, complete } }) { - if (displayList?.length === rawData?.length) { + if (displayList?.length === rawData?.history?.length) { complete(); } else { const nextIndex = displayList?.length; - const newArticles = rawData?.slice(nextIndex, nextIndex + 20); + const newArticles = rawData?.history?.slice(nextIndex, nextIndex + 20); displayList = [...displayList, ...newArticles]; loaded(); } @@ -106,11 +154,11 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) // Calculate the total bought and sold amounts for each year uniqueYears?.forEach(year => { - const boughtAmount = rawData + const boughtAmount = rawData?.history ?.filter(item => getYearFromDate(item?.transactionDate) === year && item?.type === 'Bought') ?.reduce((sum, item) => sum + extractNumberFromAmount(item?.amount), 0); - const soldAmount = rawData + const soldAmount = rawData?.history ?.filter(item => getYearFromDate(item.transactionDate) === year && item?.type === 'Sold') ?.reduce((sum, item) => sum + extractNumberFromAmount(item?.amount), 0); @@ -200,14 +248,14 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) onMount(async () => { optionsData = await getPlotOptions(); - const typeCounts = rawData?.reduce((counts, item) => { + const typeCounts = rawData?.history?.reduce((counts, item) => { counts[item?.type] = (counts[item?.type ] || 0) + 1; return counts; }, {}); buySellRatio = typeCounts['Bought'] > 0 && typeCounts['Sold'] === undefined ? 1 : typeCounts['Bought'] === undefined ? 0 : typeCounts["Bought"]/typeCounts["Sold"]; - displayList = rawData?.slice(0,20) ?? []; + displayList = rawData?.history?.slice(0,20) ?? []; isLoaded = true; @@ -307,10 +355,10 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer]) -
+
-
+
Total Amount @@ -324,7 +372,7 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer])
-
+
Buy/Sell @@ -354,6 +402,48 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer])
+ +
+
+

+ Top Sectors +

+ {#if rawData?.topSectors?.length !== 0} + + +
+ + + + + + + + + {#each rawData?.topSectors as item} + {#each Object.entries(item) as [name, value]} + sectorSelector(name)} class="text-white cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] bg-[#141417] border-b border-[#141417]"> + + + + {/each} + {/each} + +
Sector% Portfolio
+ {name} + + {value?.toFixed(2)}% +
+
+ + {:else} +
+ No data available +
+ {/if} + +
+
@@ -397,7 +487,7 @@ use([BarChart, GridComponent, TooltipComponent, CanvasRenderer])
- {#if rawData?.length !== 0} + {#if rawData?.history?.length !== 0}