From c417462e7cb6a2ba909360523fb324d4625d3ae0 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 25 Aug 2023 10:58:16 +0200 Subject: [PATCH] Directly show the first event in the calendar --- .../frontend/components/calendar/Calendar.vue | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/aleksis/core/frontend/components/calendar/Calendar.vue b/aleksis/core/frontend/components/calendar/Calendar.vue index 1cff82c35..188c3e522 100644 --- a/aleksis/core/frontend/components/calendar/Calendar.vue +++ b/aleksis/core/frontend/components/calendar/Calendar.vue @@ -15,6 +15,8 @@ :events="events" :type="internalCalendarType" :event_color="getColorForEvent" + :first-time="firstTime" + interval-height="60" @click:date="viewDay" @click:day="viewDay" @click:more="viewDay" @@ -89,6 +91,8 @@ export default { start: null, end: null, }, + + firstTime: 1, }; }, emits: ["changeCalendarType", "changeCalendarFocus", "selectEvent"], @@ -171,10 +175,17 @@ export default { }, range: { handler() { + this.updateMinTime(); this.fetch(); }, deep: true, }, + events: { + handler() { + this.updateMinTime(); + }, + deep: true, + }, internalCalendarType(val) { this.$emit("changeCalendarType", val); }, @@ -242,6 +253,24 @@ export default { } return GenericCalendarFeedEventBar; }, + updateMinTime() { + // Set the minimum time of the calendar + const visibileEvents = this.events.filter( + (event) => + event.end >= new Date(this.range.start.date) && + event.start <= new Date(this.range.end.date) + ); + const minuteTimes = visibileEvents.map((event) => + this.getMinutesAfterMidnight(event.start) + ); + + const minTime = + minuteTimes.length > 0 ? Math.min.apply(Math, minuteTimes) : 0; + this.firstTime = minTime; + }, + getMinutesAfterMidnight(date) { + return 60 * date.getHours() + date.getMinutes(); + }, getColorForEvent(event) { return event.color; }, -- GitLab