Read the statement by Michael Teeuw here.
module calendar showing full day events one day to long
-
@striiker I guess this forum got too crowded to have everything solved properly. I feel you.
-
@andurii OK I found a way to properly deal with one-day events. Will send a PR to the develop branch.
If you want to include it already:Exchange the if-clause starting at line 292 with this.
if(this.config.showEnd){ if(event.endDate - event.startDate > oneDay) { timeWrapper.innerHTML += "-" ; timeWrapper.innerHTML += this.capFirst(moment(event.endDate , "x").format(this.config.fullDayEventDateFormat)); } }
BEWARE OF CHANGING THE MODULE FILES THEMSELVES.
Only do it if you know what you’re doing.
(You’re not breaking anything irreversibly however)This only shows the end date for a more-than-one-day-full-day-event.
However, still a workaround. Still searching into the problem itself -
@lavolp3 thank’s a lot man, you are much faster and way more skilled than me :-)
Just a little discussion: your code only adds the if clause to check if it’s longer than a day to prevent single full day events to be displayed as two day. But what about a multi day event beeing displayed one day to long (which is also happening right now)? -
@andurii
Yeah that’s what is still missing and why i said this is still only some type of workaround.
However, the if-clause will be needed in the end because for a full one-day event you do not want to be shown an endDate. As soon as the full-day-event is longer than one day, you may want it again.
E.g.
Mario’s birthday Nov 16th
(and NOT Nov 16th - Nov 16th)
Luigi’s Holiday Nov 16th - Nov 23rdWhat you’re pointing at is the root cause and it lies somewhere else. I’m sure it can be solved. Give me one weekend ;-)
-
So I guess I have found a “solution”.
This is in fact a systemic problem.A full day event is given by the ical source as starting at 0:00 on a day and ending at 0:00, but one day ahead. The duration is exactly a multiple of 24h.
There is a one-liner as workaround, but I’d invite everyone to find a more gentle solution.
The workaround: subtract one second from the endDate time:
Include this line into calendar.js just at the beginning of the if clause in line 262:event.endDate -= 1000;
So it looks like this:
if (event.fullDayEvent) { event.endDate -= 1000; if (event.today) {
This should solve the issue. It worked for me at least.
-
@lavolp3 great, your fix worked. Only thing I noticed is if the date is tomorrow it still shows ‘Tomorrow - Nov. 22’
Now I still have to fiddle a few glitches in the calendar module:- Having a event with start and end time it will be displayed like ‘in 3 days - 18:00’. It would be better to include starting time ‘in 3 days 15:00 - 18:00’
- For a ongoing event it keeps the end time, but start time gets relative for how long it still goes on ‘1 hour left - 18:00’ (hope my translation is correct, my mirror is german). Maybe this could be changed to ‘for 4 hours - 18:00’ or similiar.
-
@andurii I agree with you on both points and I’m working on it :-)
Basically the implementation of showEnd is quite messed up.
I’m trying to use my freshly gained JS beginner skills on this :-)Have send a PR for the fulldayevent fix and I expect this to be included in the next release.