Fix schedule
This commit is contained in:
parent
0976150ebe
commit
4750bb5f00
@ -81,36 +81,17 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="weekNumber in 21" :key="weekNumber">
|
<tr v-for="week in scheduleWeeks" :key="week.weekNumber">
|
||||||
<td>
|
<td>
|
||||||
<RouterLink
|
<RouterLink
|
||||||
:to="{ name: 'schedule', params: { seasonNumber: seasonNumber, weekNumber: weekNumber } }">
|
:to="{ name: 'schedule', params: { seasonNumber: seasonNumber, weekNumber: week.weekNumber } }">
|
||||||
Week {{ weekNumber }}
|
Week {{ week.weekNumber }}
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ weekStart(weekNumber) }}</td>
|
<td>{{ week.weekStart }}</td>
|
||||||
<td>{{ weekEnd(weekNumber) }}</td>
|
<td>{{ week.weekEnd }}</td>
|
||||||
<td>{{ weekSpecialInfo(weekNumber) }}</td>
|
<td>{{ week.weekSpecialInfo }}</td>
|
||||||
</tr>
|
</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>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -124,14 +105,23 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { Game } from '@/services/apiResponseTypes'
|
import type { Game } from '@/services/apiResponseTypes'
|
||||||
import { type LeagueInfo, fetchCurrentLeagueInfo } from '@/services/currentService'
|
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 { fetchGamesBySeasonAndWeek } from '@/services/gameService'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
||||||
dayjs.extend(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 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 {
|
export default {
|
||||||
name: 'ScheduleView',
|
name: 'ScheduleView',
|
||||||
@ -168,6 +158,28 @@ export default {
|
|||||||
}, {} as { [key: string]: Game[] })
|
}, {} as { [key: string]: Game[] })
|
||||||
|
|
||||||
return Object.values(groupedGames)
|
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: {
|
watch: {
|
||||||
@ -188,6 +200,13 @@ export default {
|
|||||||
async fetchData(): Promise<void> {
|
async fetchData(): Promise<void> {
|
||||||
this.weekGames = await fetchGamesBySeasonAndWeek(this.seasonNumber, this.selectedWeekNumber)
|
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 {
|
weekStart(weekNumber: number): string {
|
||||||
// Only WS week gets delayed by LCS
|
// Only WS week gets delayed by LCS
|
||||||
if (weekNumber === 21) {
|
if (weekNumber === 21) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user