@@ -14,7 +14,7 @@ dayjs.extend(timezone)
1414const TBD = 'TBD'
1515
1616export const getEvents = ( year ) => {
17- const events_path = year ? `content/${ year } /events` : 'content/events' ;
17+ const events_path = year ? `content/${ year } /events` : 'content/events'
1818 const eventFiles = fs . readdirSync ( events_path )
1919
2020 const events = eventFiles
@@ -30,13 +30,15 @@ export const getEvents = (year) => {
3030}
3131
3232export const getEventBySlug = ( slug , year ) => {
33- const event = getDataFromMD ( year ?`content/${ year } /events/${ slug } .md` :`content/events/${ slug } .md` )
34- const link = year ? `/${ year } /schedule/${ slug } ` : `/schedule/${ slug } ` ;
33+ const event = getDataFromMD (
34+ year ? `content/${ year } /events/${ slug } .md` : `content/events/${ slug } .md` ,
35+ )
36+ const link = year ? `/${ year } /schedule/${ slug } ` : `/schedule/${ slug } `
3537
3638 return {
3739 slug,
3840 ...event ,
39- link
41+ link,
4042 }
4143}
4244
@@ -59,6 +61,7 @@ export const parseEvent = (event) => {
5961 event . date ,
6062 event . UTCStartTime ,
6163 event . UTCEndTime ,
64+ event . endDate ,
6265 )
6366
6467 return {
@@ -68,9 +71,14 @@ export const parseEvent = (event) => {
6871}
6972
7073// TODO: refactor
71- const formatEventDateTime = ( date = dayjs . utc ( ) , startTime , endTime ) => {
74+ const formatEventDateTime = (
75+ startDate = dayjs . utc ( ) ,
76+ startTime ,
77+ endTime ,
78+ endDate ,
79+ ) => {
7280 // Date
73- const [ month , day ] = date . split ( '/' )
81+ const [ month , day ] = startDate . split ( '/' )
7482
7583 if ( isNaN ( month ) || isNaN ( day ) ) {
7684 throw new TypeError ( 'date must be in mm/dd format (e.g. 06/12).' )
@@ -80,61 +88,78 @@ const formatEventDateTime = (date = dayjs.utc(), startTime, endTime) => {
8088 . utc ( )
8189 . date ( day )
8290 . month ( month - 1 )
91+
8392 const formattedDate = UTCDate . format ( 'MMM D' )
8493
94+ let formattedEndDate = null
95+
96+ if ( endDate && endDate !== startDate ) {
97+ const [ endMonth , endDay ] = endDate . split ( '/' )
98+
99+ if ( isNaN ( endMonth ) || isNaN ( endDay ) ) {
100+ throw new TypeError ( 'date must be in mm/dd format (e.g. 06/12).' )
101+ }
102+
103+ const endUTCDate = dayjs
104+ . utc ( )
105+ . date ( endDay )
106+ . month ( endMonth - 1 )
107+
108+ formattedEndDate = endUTCDate . format ( 'MMM D' )
109+ }
110+
85111 // Start time
86- let formattedStartTime = { }
112+ let formattedStartTime = {
113+ utc : TBD ,
114+ pt : TBD ,
115+ }
87116
88- if ( startTime && startTime !== TBD ) {
117+ if ( startTime ) {
89118 const [ startHour , startMinute ] = startTime . split ( ':' )
90119
91120 const UTCStartTime = UTCDate . hour ( startHour ) . minute ( startMinute )
92121
93- if ( isNaN ( UTCStartTime ) ) {
94- throw new TypeError (
95- 'UTCStartTime must be in hh:mm format (e.g. 12:30) or be "TDB".' ,
96- )
97- }
98-
99- const PTStartTime = UTCStartTime . tz ( 'America/Los_Angeles' )
122+ if ( ! isNaN ( UTCStartTime ) ) {
123+ const PTStartTime = UTCStartTime . tz ( 'America/Los_Angeles' )
100124
101- const formattedUTCStartTime = UTCStartTime . format ( 'HH:mm a' )
102- const formattedPTStartTime = PTStartTime . format ( 'HH:mm a' )
125+ const formattedUTCStartTime = UTCStartTime . format ( 'HH:mm a' )
126+ const formattedPTStartTime = PTStartTime . format ( 'HH:mm a' )
103127
104- formattedStartTime = {
105- utc : formattedUTCStartTime ,
106- pt : formattedPTStartTime ,
128+ formattedStartTime = {
129+ utc : formattedUTCStartTime ,
130+ pt : formattedPTStartTime ,
131+ }
107132 }
108133 }
109134
110135 // End time
111- let formattedEndTime = { }
136+ let formattedEndTime = {
137+ utc : TBD ,
138+ pt : TBD ,
139+ }
112140
113141 if ( endTime && endTime !== TBD ) {
114142 const [ endHour , endMinute ] = endTime . split ( ':' )
115143
116144 const UTCEndTime = UTCDate . hour ( endHour ) . minute ( endMinute )
117145
118- if ( isNaN ( UTCEndTime ) ) {
119- throw new TypeError (
120- 'UTCEndTime must be in hh:mm format (e.g. 12:30) or be "TDB".' ,
121- )
122- }
123-
124- const PTEndTime = UTCEndTime . tz ( 'America/Los_Angeles' )
146+ if ( ! isNaN ( UTCEndTime ) ) {
147+ const PTEndTime = UTCEndTime . tz ( 'America/Los_Angeles' )
125148
126- const formattedUTCEndTime = UTCEndTime . format ( 'HH:mm a' )
127- const formattedPTEndTime = PTEndTime . format ( 'HH:mm a' )
149+ const formattedUTCEndTime = UTCEndTime . format ( 'HH:mm a' )
150+ const formattedPTEndTime = PTEndTime . format ( 'HH:mm a' )
128151
129- formattedEndTime = {
130- utc : formattedUTCEndTime ,
131- pt : formattedPTEndTime ,
152+ formattedEndTime = {
153+ utc : formattedUTCEndTime ,
154+ pt : formattedPTEndTime ,
155+ }
132156 }
133157 }
134158
135159 return {
136160 date : formattedDate ,
137161 startTime : formattedStartTime ,
138162 endTime : formattedEndTime ,
163+ endDate : formattedEndDate ,
139164 }
140165}
0 commit comments