Skip to content

Swimlane: overlay maintenance windows per target #80

Description

@csoscd

Summary

The swimlane view shows when jobs are scheduled to run, but gives no indication of maintenance windows. Jobs that fall inside a maintenance window will be silently suppressed, which is invisible in the current swimlane layout.

Motivation / Use Case

When planning or reviewing a schedule it should be immediately obvious which jobs will be skipped due to maintenance. Overlaying maintenance windows on the swimlane lets operators spot conflicts (e.g. a critical job scheduled right in the middle of a maintenance window) at a glance.

Proposed Behaviour

  • Maintenance windows are rendered as a shaded/coloured band across the swimlane time grid, aligned to the affected target rows
  • Agent-wide maintenance windows (target = '_agent_') span all rows
  • Per-target windows span only the rows belonging to that target
  • Hovering a shaded band shows a tooltip with the window name, schedule, and duration
  • The shading is visually distinct from job execution blocks (e.g. a semi-transparent striped overlay)

Affected Component

  • Web UI
  • Agent

First Implementation Idea

  1. Agent — extend the swimlane data endpoint (or add a sidecar call to GET /maintenance/windows) to include active/upcoming maintenance windows with their computed next-occurrence timestamps and durations.
  2. SwimlaneController — fetch maintenance window data alongside job data; compute which time slots within the displayed window fall under maintenance for each target.
  3. swimlane.php template — render maintenance bands as absolutely-positioned <div> overlays on the time grid, using CSS (e.g. background: repeating-linear-gradient(...) for a hatched pattern). Z-index keeps job blocks visible on top.
  4. Legend — add a maintenance window entry to the swimlane legend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions