diff --git a/app/data/updaters/StageScheduleUpdater.mjs b/app/data/updaters/StageScheduleUpdater.mjs index e0975cc..38f75bc 100644 --- a/app/data/updaters/StageScheduleUpdater.mjs +++ b/app/data/updaters/StageScheduleUpdater.mjs @@ -40,6 +40,16 @@ export default class StageScheduleUpdater extends DataUpdater id: '__splatoon3ink_id', values: 'name', }, + { + key: 'events', + nodes: '$..eventSchedules.nodes.*.leagueMatchSetting.leagueMatchEvent', + id: 'id', + values: [ + 'name', + 'desc', + 'regulation', + ], + }, ]; async getData(locale) { diff --git a/src/stores/schedules.mjs b/src/stores/schedules.mjs index 9fdc06b..80096b6 100644 --- a/src/stores/schedules.mjs +++ b/src/stores/schedules.mjs @@ -3,6 +3,8 @@ import { computed } from "vue"; import { useSchedulesDataStore } from "./data.mjs"; import { useTimeStore } from "./time.mjs"; import sortBy from 'lodash/sortBy.js'; +import min from 'lodash/min.js'; +import max from 'lodash/max.js'; // Schedule store definition (used for each type of schedule) function defineScheduleStore(id, options) { @@ -69,9 +71,14 @@ export const useSplatfestSchedulesStore = defineScheduleStore('splatfest', { settings: node => node.festMatchSetting, }); -// Challenges -export const useChallengeSchedulesStore = defineScheduleStore('challenge', { - nodes: () => useSchedulesDataStore().data?.eventSchedules.nodes, +// Challenge Events +export const useEventSchedulesStore = defineScheduleStore('event', { + nodes: () => useSchedulesDataStore().data?.eventSchedules.nodes.map(node => ({ + // Find the overall start/end times for the event based on all time periods + startTime: min(node.timePeriods.map(t => t.startTime)), + endTime: max(node.timePeriods.map(t => t.endTime)), + ...node, + })), settings: node => node.leagueMatchSetting, }); @@ -108,6 +115,7 @@ if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(useAnarchyOpenSchedulesStore, import.meta.hot)); import.meta.hot.accept(acceptHMRUpdate(useXSchedulesStore, import.meta.hot)); import.meta.hot.accept(acceptHMRUpdate(useSplatfestSchedulesStore, import.meta.hot)); + import.meta.hot.accept(acceptHMRUpdate(useEventSchedulesStore, import.meta.hot)); import.meta.hot.accept(acceptHMRUpdate(useSalmonRunSchedulesStore, import.meta.hot)); import.meta.hot.accept(acceptHMRUpdate(useEggstraWorkSchedulesStore, import.meta.hot)); import.meta.hot.accept(acceptHMRUpdate(useChallengeSchedulesStore, import.meta.hot));