Fix schedule
This commit is contained in:
parent
0976150ebe
commit
4750bb5f00
@ -81,36 +81,17 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="weekNumber in 21" :key="weekNumber">
|
||||
<tr v-for="week in scheduleWeeks" :key="week.weekNumber">
|
||||
<td>
|
||||
<RouterLink
|
||||
:to="{ name: 'schedule', params: { seasonNumber: seasonNumber, weekNumber: weekNumber } }">
|
||||
Week {{ weekNumber }}
|
||||
:to="{ name: 'schedule', params: { seasonNumber: seasonNumber, weekNumber: week.weekNumber } }">
|
||||
Week {{ week.weekNumber }}
|
||||
</RouterLink>
|
||||
</td>
|
||||
<td>{{ weekStart(weekNumber) }}</td>
|
||||
<td>{{ weekEnd(weekNumber) }}</td>
|
||||
<td>{{ weekSpecialInfo(weekNumber) }}</td>
|
||||
<td>{{ week.weekStart }}</td>
|
||||
<td>{{ week.weekEnd }}</td>
|
||||
<td>{{ week.weekSpecialInfo }}</td>
|
||||
</tr>
|
||||
|
||||
<!-- <tr id="week-23">
|
||||
<td><a href="/schedule?week=23">Week 23</a></td>
|
||||
<td>06/05/23</td>
|
||||
<td>06/11/23</td>
|
||||
<td>Division Series - Best of 5</td>
|
||||
</tr>
|
||||
<tr id="week-24">
|
||||
<td><a href="/schedule?week=24">Week 24</a></td>
|
||||
<td>06/12/23</td>
|
||||
<td>06/25/23</td>
|
||||
<td>League Championship Series - Best of 7</td>
|
||||
</tr>
|
||||
<tr id="week-25">
|
||||
<td><a href="/schedule?week=24">Week 25</a></td>
|
||||
<td>06/26/23</td>
|
||||
<td>07/09/23</td>
|
||||
<td>World Series Best of 7</td>
|
||||
</tr> -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -124,14 +105,23 @@
|
||||
<script lang="ts">
|
||||
import type { Game } from '@/services/apiResponseTypes'
|
||||
import { type LeagueInfo, fetchCurrentLeagueInfo } from '@/services/currentService'
|
||||
import { CURRENT_SEASON } from '@/services/utilities'
|
||||
import { CURRENT_SEASON, WEEKS_PER_SEASON } from '@/services/utilities'
|
||||
import { fetchGamesBySeasonAndWeek } from '@/services/gameService'
|
||||
import dayjs from 'dayjs'
|
||||
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
||||
dayjs.extend(customParseFormat)
|
||||
|
||||
// TODO: Annually update this start date or get it from the DB
|
||||
interface ScheduleWeekRow {
|
||||
weekNumber: number
|
||||
weekStart: string
|
||||
weekEnd: string
|
||||
weekSpecialInfo: string
|
||||
}
|
||||
|
||||
// TODO: Annually update this start date and holidays with two week series or get it from the DB
|
||||
const SEASON_START_DATE: dayjs.Dayjs = dayjs('07-31-2023', 'MM/DD/YYYY')
|
||||
const THANKSGIVING: dayjs.Dayjs = dayjs('11-23-2023', 'MM/DD/YYYY')
|
||||
const CHRISTMAS: dayjs.Dayjs = dayjs('12-25-2023', 'MM/DD/YYYY')
|
||||
|
||||
export default {
|
||||
name: 'ScheduleView',
|
||||
@ -168,6 +158,28 @@ export default {
|
||||
}, {} as { [key: string]: Game[] })
|
||||
|
||||
return Object.values(groupedGames)
|
||||
},
|
||||
scheduleWeeks(): ScheduleWeekRow[] {
|
||||
const schedule = []
|
||||
let currentWeekStartDate = SEASON_START_DATE
|
||||
|
||||
for (let week = 1; week <= 21; week++) {
|
||||
const weekStartDate = currentWeekStartDate
|
||||
const weekEndDate = this.isLongSeries(week, weekStartDate)
|
||||
? currentWeekStartDate.add(13, 'd')
|
||||
: currentWeekStartDate.add(6, 'd')
|
||||
|
||||
schedule.push({
|
||||
weekNumber: week,
|
||||
weekStart: weekStartDate.format('MM/DD/YYYY'),
|
||||
weekEnd: weekEndDate.format('MM/DD/YYYY'),
|
||||
weekSpecialInfo: this.weekSpecialInfo(week)
|
||||
})
|
||||
|
||||
currentWeekStartDate = weekEndDate.add(1, 'd')
|
||||
}
|
||||
|
||||
return schedule
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -188,6 +200,13 @@ export default {
|
||||
async fetchData(): Promise<void> {
|
||||
this.weekGames = await fetchGamesBySeasonAndWeek(this.seasonNumber, this.selectedWeekNumber)
|
||||
},
|
||||
isLongSeries(weekNumber: number, weekStartDate: dayjs.Dayjs): boolean {
|
||||
// current 18-week schedule has 2 week series for LCS and WS (wk 20 & 21 respectively)
|
||||
// and any game week that falls on the week of Thanksgiving or Christmas becomes a 2 week series
|
||||
return weekNumber >= WEEKS_PER_SEASON + 2
|
||||
|| Math.abs(weekStartDate.diff(THANKSGIVING, 'days')) < 6
|
||||
|| Math.abs(weekStartDate.diff(CHRISTMAS, 'days')) < 6
|
||||
},
|
||||
weekStart(weekNumber: number): string {
|
||||
// Only WS week gets delayed by LCS
|
||||
if (weekNumber === 21) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user