From 4532dd671e7962a76c9440e899860588399ba8f3 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Nov 2024 10:01:11 -0600 Subject: [PATCH 1/6] Normalize pitching stats for fetchPitchingStatsBySeries and add fetchPitchingStatsForLastTwoWeeksByTeam --- src/services/pitchingStatsService.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/services/pitchingStatsService.ts b/src/services/pitchingStatsService.ts index 9ab0f79..cb9405a 100644 --- a/src/services/pitchingStatsService.ts +++ b/src/services/pitchingStatsService.ts @@ -241,6 +241,22 @@ export async function fetchPitchingStatsForLastFourGamesBySeasonAndPlayerId(seas return pitchingStatsResponse.stats.map(normalizePitchingStat) } +export async function fetchPitchingStatsForLastTwoWeeksByTeam(seasonNumber: number, weekNumber: number, teamId: number): Promise { + // no support for pre-modern games yet + if (seasonNumber < MODERN_STAT_ERA_START) { + return [] + } + + const response = await fetch(`${SITE_URL}/api/v3/plays/pitching?season=${seasonNumber}&week_start=${weekNumber - 1}&week_end=${weekNumber}&team_id=${teamId}&group_by=playergame`) + + const pitchingStatsResponse: { + count: number + stats: PitchingStatRaw[] + } = await response.json() + + return pitchingStatsResponse.stats.map(normalizePitchingStat) +} + export async function fetchPitchingStatsBySeries(seasonNumber: number, weekNumber: number, homeTeamId: number, awayTeamId: number): Promise { // no support for pre-modern games yet if (seasonNumber < MODERN_STAT_ERA_START) { @@ -251,10 +267,10 @@ export async function fetchPitchingStatsBySeries(seasonNumber: number, weekNumbe const pitchingStatsResponse: { count: number - stats: PitchingStat[] + stats: PitchingStatRaw[] } = await response.json() - return pitchingStatsResponse.stats + return pitchingStatsResponse.stats.map(normalizePitchingStat) } export function aggregatePitchingStats(pitchingStats: PitchingStat[]): PitchingStat { From b991fbff983ea3fff21bdbbde7b08d53a5ed35e1 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Nov 2024 10:10:38 -0600 Subject: [PATCH 2/6] Add Bullpen Table POC --- components.d.ts | 1 + src/components/BullpenTable.vue | 117 ++++++++++++++++++++++++++++++++ src/views/TeamView.vue | 6 +- 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 src/components/BullpenTable.vue diff --git a/components.d.ts b/components.d.ts index 3bdcdd8..2aa0cfb 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,6 +9,7 @@ export {} declare module '@vue/runtime-core' { export interface GlobalComponents { + BullpenTable: typeof import('./src/components/BullpenTable.vue')['default'] CardImagesDisplay: typeof import('./src/components/CardImagesDisplay.vue')['default'] ExtendedStandingsTable: typeof import('./src/components/ExtendedStandingsTable.vue')['default'] IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default'] diff --git a/src/components/BullpenTable.vue b/src/components/BullpenTable.vue new file mode 100644 index 0000000..9e28564 --- /dev/null +++ b/src/components/BullpenTable.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/views/TeamView.vue b/src/views/TeamView.vue index d346110..fbd359c 100644 --- a/src/views/TeamView.vue +++ b/src/views/TeamView.vue @@ -155,6 +155,8 @@ + + @@ -191,10 +193,12 @@ import TeamScheduleTable from '@/components/TeamScheduleTable.vue' import TeamPitchingTable from '@/components/TeamPitchingTable.vue' import TeamBattingTable from '@/components/TeamBattingTable.vue' import TeamFieldingTable from '@/components/TeamFieldingTable.vue' +import BullpenTable from '@/components/BullpenTable.vue' export default { name: 'TeamView', components: { + BullpenTable, TeamScheduleTable, TeamPitchingTable, TeamBattingTable, @@ -309,7 +313,7 @@ export default { allPositions(player: Player): string { let positions = [] positions.push(player.pos_1, player.pos_2, player.pos_3, player.pos_4, player.pos_5, player.pos_6, player.pos_7) - return positions.join(' ') + return positions.filter(p => p).join(' ') }, swarTotal(players: Player[]): number { return players.map(p => p.wara).reduce((prev, curr) => prev + curr, 0) From 3f2b2869cabc0f29d17e1331a4db9ad0e7dac546 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Nov 2024 10:13:03 -0600 Subject: [PATCH 3/6] Rename method for future broader usage --- src/components/BullpenTable.vue | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/BullpenTable.vue b/src/components/BullpenTable.vue index 9e28564..eaf4536 100644 --- a/src/components/BullpenTable.vue +++ b/src/components/BullpenTable.vue @@ -36,20 +36,20 @@ {{ allPositions(player) }} - {{getIPForPitcherGame(player, weekNumber - 1, 1)}} - {{getIPForPitcherGame(player, weekNumber - 1, 2)}} - {{getIPForPitcherGame(player, weekNumber - 1, 3)}} - {{getIPForPitcherGame(player, weekNumber - 1, 4)}} - {{getIPForPitcherGame(player, weekNumber - 1, 5)}} - {{getIPForPitcherGame(player, weekNumber - 1, 6)}} - {{getIPForPitcherGame(player, weekNumber - 1, 7)}} - {{getIPForPitcherGame(player, weekNumber, 1)}} - {{getIPForPitcherGame(player, weekNumber, 2)}} - {{getIPForPitcherGame(player, weekNumber, 3)}} - {{getIPForPitcherGame(player, weekNumber, 4)}} - {{getIPForPitcherGame(player, weekNumber, 5)}} - {{getIPForPitcherGame(player, weekNumber, 6)}} - {{getIPForPitcherGame(player, weekNumber, 7)}} + {{getStatForPitcherGame(player, weekNumber - 1, 1)}} + {{getStatForPitcherGame(player, weekNumber - 1, 2)}} + {{getStatForPitcherGame(player, weekNumber - 1, 3)}} + {{getStatForPitcherGame(player, weekNumber - 1, 4)}} + {{getStatForPitcherGame(player, weekNumber - 1, 5)}} + {{getStatForPitcherGame(player, weekNumber - 1, 6)}} + {{getStatForPitcherGame(player, weekNumber - 1, 7)}} + {{getStatForPitcherGame(player, weekNumber, 1)}} + {{getStatForPitcherGame(player, weekNumber, 2)}} + {{getStatForPitcherGame(player, weekNumber, 3)}} + {{getStatForPitcherGame(player, weekNumber, 4)}} + {{getStatForPitcherGame(player, weekNumber, 5)}} + {{getStatForPitcherGame(player, weekNumber, 6)}} + {{getStatForPitcherGame(player, weekNumber, 7)}} @@ -105,12 +105,12 @@ export default { alternateRecordKeySelector(player: Player, weekNumber: number, gameNumber: number): string { return `${player.name}-${weekNumber}-${gameNumber}` }, - getIPForPitcherGame(player: Player, weekNumber: number, gameNumber: number): string { + getStatForPitcherGame(player: Player, weekNumber: number, gameNumber: number): string { const key = this.alternateRecordKeySelector(player, weekNumber, gameNumber) const stat: PitchingStat = this.pitcherStatsByNameWeekGame[key] if (!stat) return '-' - return `${stat?.ip.toFixed(1)}IP` + return `${stat.ip.toFixed(1)}IP` } } } From 1bc05eccc03c98582628b50be1d2ad5aa701994a Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Nov 2024 11:43:57 -0600 Subject: [PATCH 4/6] Fix IDE warnings --- src/components/PlayerCareerBattingTable.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/PlayerCareerBattingTable.vue b/src/components/PlayerCareerBattingTable.vue index 882a677..026452f 100644 --- a/src/components/PlayerCareerBattingTable.vue +++ b/src/components/PlayerCareerBattingTable.vue @@ -36,7 +36,7 @@ - + S{{ stat.seasonNumber }}{{ stat.isRegularSeason ? '' : ' / Playoffs' }} {{ stat.pa }} {{ stat.ab }} @@ -67,7 +67,7 @@ - + Career{{ idx > 0 ? ' / Playoffs' : '' }} {{ stat.pa }} {{ stat.ab }} @@ -112,7 +112,7 @@ interface BattingStatWithSeason extends BattingStat { } export default { - name: "PlayerCareerBattingTable", + name: 'PlayerCareerBattingTable', props: { regularSeasonBattingStats: { type: Array, required: true }, postSeasonBattingStats: { type: Array, required: true }, From a7e1f4a755109af152de4e6da3b0f53b52d3ec35 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 9 Nov 2024 11:44:19 -0600 Subject: [PATCH 5/6] Show/hide bullpen --- src/components/BullpenTable.vue | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/components/BullpenTable.vue b/src/components/BullpenTable.vue index eaf4536..a19ce63 100644 --- a/src/components/BullpenTable.vue +++ b/src/components/BullpenTable.vue @@ -1,7 +1,14 @@