diff --git a/src/lib/components/shadcn/tabs/tabs-list.svelte b/src/lib/components/shadcn/tabs/tabs-list.svelte index f478d69b..f85b640b 100644 --- a/src/lib/components/shadcn/tabs/tabs-list.svelte +++ b/src/lib/components/shadcn/tabs/tabs-list.svelte @@ -10,7 +10,7 @@ { }); -let timePeriod = '1D'; let outputList = data?.getDailyGainerLoserActive; -let gainerLoserActive = outputList?.gainers[timePeriod] +let gainerLoserActive = outputList?.gainers['1D'] let displaySection = 'gainer' let order = 'highToLow'; +let sortBy = ''; // Default sorting by change percentage let buttonText = 'Top Winners'; @@ -98,7 +100,7 @@ function changeOrder(state:string) { } } -const sortByHighestChange = (tickerList) => { +const sortByChange = (tickerList) => { return tickerList?.sort(function(a, b) { if(order === 'highToLow') { @@ -110,15 +112,15 @@ const sortByHighestChange = (tickerList) => { }); } -/* -const sortByLowestChange = (tickerList) => { + +const sortByPrice = (tickerList) => { return tickerList?.sort(function(a, b) { if(order === 'highToLow') { - return a?.changesPercentage - b?.changesPercentage; + return a?.price - b?.price; } else { - return b?.changesPercentage - a?.changesPercentage; + return b?.price - a?.price; } }); @@ -136,7 +138,7 @@ const sortByVolume = (tickerList) => { }); } -*/ + const sortByMarketCap = (tickerList) => { return tickerList?.sort(function(a, b) { if(order === 'highToLow') @@ -153,7 +155,9 @@ const sortByMarketCap = (tickerList) => { function changeSection(state) { displaySection = state; - timePeriod = '1D'; + const timePeriod = '1D'; + sortBy = ''; + order = ''; if (state === 'gainer') { @@ -175,8 +179,12 @@ function changeSection(state) { -function selectTimeInterval(interval) { - timePeriod = interval; +function selectTimeInterval(event) { + sortBy = ''; + order = ''; + + const timePeriod = event.target.value === 'oneDay' ? '1D' : event.target.value === 'oneWeek' ? '1W' : event.target.value === 'oneMonth' ? '1M' : event.target.value === 'threeMonths' ? '3M' : '6M'; + if (buttonText === 'Top Winners') { @@ -200,27 +208,23 @@ onMount( () => { $: { if(order) { - if(displaySection === 'gainer') - { - gainerLoserActive = sortByHighestChange(outputList?.gainers[timePeriod]); - } - else if(displaySection === 'loser') - { - gainerLoserActive = sortByHighestChange(outputList?.losers[timePeriod]); - } - else if(displaySection === 'active') - { - gainerLoserActive = sortByHighestChange(outputList?.active[timePeriod]); - } - + // Add this condition for market cap sorting if (sortBy === 'marketCap') { gainerLoserActive = sortByMarketCap(gainerLoserActive); } + else if (sortBy === 'change') { + gainerLoserActive = sortByChange(gainerLoserActive); + } + else if (sortBy === 'price') { + gainerLoserActive = sortByPrice(gainerLoserActive); + } + else if (sortBy === 'volume') { + gainerLoserActive = sortByVolume(gainerLoserActive); + } } } -let sortBy = 'change'; // Default sorting by change percentage $: charNumber = $screenWidth < 640 ? 20 : 30; @@ -280,7 +284,7 @@ $: charNumber = $screenWidth < 640 ? 20 : 30; -