From 8a56977446b7b596852a205c5f1f34b2765021ed Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 24 Jan 2024 12:09:14 -0500 Subject: [PATCH] Add checkbox to invert sort of leaderboards --- src/views/LeaderboardView.vue | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/views/LeaderboardView.vue b/src/views/LeaderboardView.vue index dbf3156..c324d41 100644 --- a/src/views/LeaderboardView.vue +++ b/src/views/LeaderboardView.vue @@ -5,11 +5,13 @@

Season {{ seasonNumber }} Leaders

Week {{ weekNumber }}

{{ statType }} Leaderboards - Min {{ statMinimum }}

- + + +
+
- + +
@@ -119,6 +123,7 @@ export default { seasonNumber: CURRENT_SEASON, statType: 'Batting' as 'Batting' | 'Pitching' | 'Fielding', pitchingType: 'All' as 'All' | 'Starters' | 'Relievers', + invertSort: false as boolean, weekNumber: undefined! as number } }, @@ -278,8 +283,8 @@ export default { // concat an empty array so that the existing array is not sorted as a side effect const statBase: BattingStat[] = paExemptStat.includes(stat) ? this.allPlayersBattingStats.concat([]) : this.qualifyingBattingStats.concat([]) - // concat an empty array so that the existing array is not sorted as a side effect - return statBase.sort((a, b) => (b[stat] as number) - (a[stat] as number)).slice(0, 10) + const sortMultiplier = this.invertSort ? -1 : 1 + return statBase.sort((a, b) => sortMultiplier * ((b[stat] as number) - (a[stat] as number))).slice(0, 10) }, getTop10PitchingStatByCategory(stat: keyof PitchingStat): PitchingStat[] { // qualifying IP exempt stats @@ -297,7 +302,7 @@ export default { ) const reverseSortStats = ['era', 'whip', 'bbPer9'] - const sortMultiplier = reverseSortStats.includes(stat) ? -1 : 1 + const sortMultiplier = (reverseSortStats.includes(stat) ? -1 : 1) * (this.invertSort ? -1 : 1) return filteredStatBase.sort((a, b) => sortMultiplier * ((b[stat] as number) - (a[stat] as number))).slice(0, 10) }, @@ -322,14 +327,16 @@ export default { // 'xCheckCountLeftField' | 'xCheckCountCenterField' | 'xCheckCountRightField' const xCheckCountProperty = `xCheckCount${position[1]}` as keyof FlatFieldingStat + const sortMultiplier = this.invertSort ? -1 : 1 return this.allPlayersFieldingStats.concat([]) .filter(stat => (stat[xCheckCountProperty] as number) >= Math.floor(xCheckCountPerWeek * this.weekNumberForCalcs)) - .sort((a, b) => ((b[stat] as number) - (a[stat] as number))).slice(0, 10) + .sort((a, b) => sortMultiplier * ((b[stat] as number) - (a[stat] as number))).slice(0, 10) } // non-wF% stats currently won't have any qualifying minimum + const sortMultiplier = this.invertSort ? -1 : 1 return this.allPlayersFieldingStats.concat([]) - .sort((a, b) => ((b[stat] as number) - (a[stat] as number))) + .sort((a, b) => sortMultiplier * ((b[stat] as number) - (a[stat] as number))) .slice(0, 10) }, formatNumericalStat(stat: BattingStat | PitchingStat | FlatFieldingStat, property: keyof BattingStat | keyof PitchingStat | keyof FlatFieldingStat, precision: number): number | string { @@ -459,4 +466,13 @@ export default { } } } - \ No newline at end of file + + + \ No newline at end of file