@@ -137,6 +137,28 @@ async function initialize() {
137137}
138138
139139let options = { } ;
140+
141+ function isEventEnded ( event ) {
142+ if ( ! event . time || ! event . date_text ) return false ;
143+ const timeParts = event . time . split ( ' to ' ) ;
144+ const start = new Date ( `${ event . date_text } ${ timeParts [ 0 ] } ` ) ;
145+ if ( isNaN ( start . getTime ( ) ) ) return false ;
146+ let end ;
147+ if ( timeParts [ 1 ] ) {
148+ const startDate = start . toLocaleDateString ( 'sv-SE' ) ;
149+ if ( timeParts [ 1 ] . slice ( - 2 ) === 'am' && timeParts [ 0 ] . slice ( - 2 ) === 'pm' ) {
150+ const endDate = new Date ( start ) ;
151+ endDate . setDate ( endDate . getDate ( ) + 1 ) ;
152+ end = new Date ( `${ endDate . toLocaleDateString ( 'sv-SE' ) . replace ( / - / gi, '/' ) } ${ timeParts [ 1 ] } ` ) ;
153+ } else {
154+ end = new Date ( `${ startDate . replace ( / - / gi, '/' ) } ${ timeParts [ 1 ] } ` ) ;
155+ }
156+ } else {
157+ end = new Date ( start . getTime ( ) + 60 * 60 * 1000 ) ;
158+ }
159+ return end < new Date ( ) ;
160+ }
161+
140162/**
141163 * Callback for datepicker, filters all visible events to specified date and category
142164 * @param {object } filters
@@ -150,6 +172,11 @@ window.filter = async function (filters = {}) {
150172 date = options . date . replace ( / - / gi, '/' ) ;
151173 date = new Date ( date ) ;
152174 }
175+ const today = new Date ( ) ;
176+ const isToday = date &&
177+ date . getFullYear ( ) === today . getFullYear ( ) &&
178+ date . getMonth ( ) === today . getMonth ( ) &&
179+ date . getDate ( ) === today . getDate ( ) ;
153180 let categories = [ ] ;
154181 if ( options . category ) {
155182 categories = options . category . split ( CATEGORY_DELIMITER )
@@ -230,6 +257,11 @@ window.filter = async function (filters = {}) {
230257 if ( event . marker . content . style . opacity === '0' ) {
231258 intersectionObserver . observe ( event . marker . content ) ;
232259 }
260+ if ( isToday && isEventEnded ( event ) ) {
261+ event . marker . content . classList . add ( 'event-ended' ) ;
262+ } else {
263+ event . marker . content . classList . remove ( 'event-ended' ) ;
264+ }
233265 }
234266 } else {
235267 // Multiple events at same location - create cluster marker
0 commit comments