Week view: relative start-day offset for non-7-day counts; hide week-only settings elsewhere
Build and push server image / build-and-push (push) Successful in 53s
Build and push server image / build-and-push (push) Successful in 53s
calendar_week_start's fixed-weekday anchor ("start on the most recent
Monday") stops making sense once the view isn't a literal calendar
week, so a non-7-day week view now starts calendar_week_start_offset
days from today instead (0 = starts today, negative/positive = past/
future) -- calendar_week_start still governs at the default 7 days,
unchanged.
Also hides the Calendar tab's week-only fields (days to show, layout,
start offset) unless View is actually set to Week, and further hides
the new start-offset field specifically when Days to show is 7 (where
it has no effect). "Week starts on" stays visible for Month too, since
it actually still applies there.
This commit is contained in:
@@ -104,6 +104,7 @@ def api_config_save(
|
||||
calendar_week_start: int | None = Form(None),
|
||||
calendar_week_days: int | None = Form(None),
|
||||
calendar_week_layout: str | None = Form(None),
|
||||
calendar_week_start_offset: int | None = Form(None),
|
||||
calendar_weather_enabled: bool | None = Form(None),
|
||||
calendar_weather_units: str | None = Form(None),
|
||||
calendar_tasks_enabled: bool | None = Form(None),
|
||||
@@ -194,6 +195,11 @@ def api_config_save(
|
||||
cfg.calendar_week_days = new_days
|
||||
if calendar_week_layout is not None:
|
||||
cfg.calendar_week_layout = calendar_week_layout if calendar_week_layout in ("horizontal", "vertical") else "horizontal"
|
||||
if calendar_week_start_offset is not None:
|
||||
new_offset = max(-30, min(30, calendar_week_start_offset))
|
||||
if new_offset != cfg.calendar_week_start_offset:
|
||||
cfg.calendar_browse_offset = 0
|
||||
cfg.calendar_week_start_offset = new_offset
|
||||
if calendar_weather_enabled is not None:
|
||||
cfg.calendar_weather_enabled = calendar_weather_enabled
|
||||
if calendar_weather_units is not None and calendar_weather_units in ("fahrenheit", "celsius"):
|
||||
@@ -571,6 +577,7 @@ def api_preview_calendar(frame: Frame = Depends(require_frame_view), db: Session
|
||||
week_start=frame.calendar_week_start,
|
||||
weather_cities=weather_cities, weather_units=frame.calendar_weather_units,
|
||||
week_days=frame.calendar_week_days, week_layout=frame.calendar_week_layout, tasks=tasks,
|
||||
week_start_offset=frame.calendar_week_start_offset,
|
||||
)
|
||||
return Response(content=png, media_type="image/png")
|
||||
|
||||
|
||||
@@ -149,6 +149,7 @@ def _render_calendar_mode(db: Session, frame: Frame, request: Request, manage: d
|
||||
week_start = locked.calendar_week_start
|
||||
week_days = locked.calendar_week_days
|
||||
week_layout = locked.calendar_week_layout
|
||||
week_start_offset = locked.calendar_week_start_offset
|
||||
inlay_wanted = locked.calendar_photo_inlay
|
||||
|
||||
events, summary = get_or_refresh_calendar_events(db, frame)
|
||||
@@ -183,7 +184,7 @@ def _render_calendar_mode(db: Session, frame: Frame, request: Request, manage: d
|
||||
palette_rgb=frame.palette_rgb, timezone=frame.timezone,
|
||||
photo_inlay=photo_inlay, fetch_summary=summary, manage=manage, week_start=week_start,
|
||||
weather_cities=weather_cities, weather_units=frame.calendar_weather_units,
|
||||
week_days=week_days, week_layout=week_layout, tasks=tasks,
|
||||
week_days=week_days, week_layout=week_layout, tasks=tasks, week_start_offset=week_start_offset,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user