diff --git a/src/plugins/calendar/calendar.py b/src/plugins/calendar/calendar.py index 67d5b008c..e2d8c4303 100644 --- a/src/plugins/calendar/calendar.py +++ b/src/plugins/calendar/calendar.py @@ -51,13 +51,16 @@ def generate_image(self, settings, device_config): if not events: logger.warning("No events found for ics url") - if view == 'timeGridWeek' and settings.get("displayPreviousDays") != "true": + initial_date = None + if view == 'timeGridWeek': view = 'timeGrid' + initial_date = start.strftime("%Y-%m-%d") template_params = { "view": view, "events": events, "current_dt": current_dt.replace(minute=0, second=0, microsecond=0).isoformat(), + "initial_date": initial_date, "timezone": timezone, "plugin_settings": settings, "time_format": time_format, @@ -105,7 +108,7 @@ def get_view_range(self, view, current_dt, settings): offset = (current_dt.weekday() - python_week_start) % 7 start = current_dt - timedelta(days=offset) start = datetime(start.year, start.month, start.day) - end = start + timedelta(days=7) + end = start + timedelta(days=int(settings.get("numDays") or 7)) elif view == "dayGrid": start = current_dt - timedelta(weeks=1) end = current_dt + timedelta(weeks=int(settings.get("displayWeeks") or 4)) diff --git a/src/plugins/calendar/render/calendar.html b/src/plugins/calendar/render/calendar.html index 506a2dca7..55d97d0d2 100644 --- a/src/plugins/calendar/render/calendar.html +++ b/src/plugins/calendar/render/calendar.html @@ -33,6 +33,7 @@ const calendar = new FullCalendar.Calendar(calendarEl, { initialView: '{{ view }}', + {% if initial_date %}initialDate: '{{ initial_date }}',{% endif %} events: events, now: '{{ current_dt }}', timeZone: '{{ timezone }}', @@ -49,7 +50,7 @@ weekends: {{ (plugin_settings.displayWeekends == "true") | tojson}}, nowIndicator: {{ (plugin_settings.displayNowIndicator == "true") | tojson}}, fixedWeekCount: false, - {% if view == 'timeGrid' %}duration: {days : 7 },{% endif %} + {% if view == 'timeGrid' %}duration: {days : {{ plugin_settings.numDays | default(7) | int }} },{% endif %} {% if view == 'dayGrid' %}duration: {weeks : "{{ plugin_settings.displayWeeks or 4}}" },{% endif %} headerToolbar: { left: '', diff --git a/src/plugins/calendar/settings.html b/src/plugins/calendar/settings.html index 07282eaf8..315219303 100644 --- a/src/plugins/calendar/settings.html +++ b/src/plugins/calendar/settings.html @@ -77,6 +77,11 @@ +
+ + +
+
@@ -201,6 +206,8 @@ document.getElementById("endTimeInterval").value = pluginSettings.endTimeInterval; document.getElementById("displayWeeks").value = pluginSettings.displayWeeks; + + document.getElementById("numDays").value = pluginSettings.numDays || 7; if (pluginSettings["calendarURLs[]"]) { calendars = pluginSettings["calendarURLs[]"].map((url, i) => ({