Straw-man for discussion - built from the current dataset

Data Donut - a layered concept

One idea for resolving the timing-vs-dependencies tension: a clean cyclical overview (the "donut" — what happens across the year, at a glance) sitting on top of a timeline drill-down (the real multi-year detail, with a dependency chain you can trace). Same data, two zoom levels. React freely — this exists to be argued with.

What is on each tab

  • Timeline detail — every milestone on a real calendar, one lane per system. Track width, month grid, dependency trace and the draggable current-date line live here.
  • Cyclical overview — the same records wrapped into a circle, to show what recurs rather than when exactly.
  • Data table — every underlying record in one list, for checking the data behind both visuals.

The time window

  • The window control on the Timeline and Cyclical tabs picks how much of the calendar both views show: 1, 2 or 3 years. The two views always show the same period — changing it on one changes it on the other.
  • At 2 or 3 years the ring is partitioned, with a divider and a year label at each January.
  • A system with records outside the chosen window is labelled in its lane, so a narrow window never looks like missing data.

Before you read the dates

  • Positions are month-precise. Where several events share a month they are spread evenly across that month's cell to keep them apart — that spacing is ordering, not a day of the month.
  • Systems with no records show as an explicitly empty lane or ring rather than being dropped.
  • The current-date line is the only day-precise element on the page.
Placeholder — to be completed before this is shared.
  • Data current as of: TBC
  • Source of the milestone dates: TBC
  • Owner / who to contact about a wrong date: TBC
  • Update cadence: TBC
  • Where this is hosted: TBC
Timeline detail — the calendar view. One lane per system across the selected window.
  • Window sets the period, and the Cyclical tab follows it. Narrowing the window is what relieves crowding: at one year each month cell gets three times the width it has at three.
  • Month grid switches itself off when a month cell is too narrow to read as a guide; the hint next to it says how narrow.
  • Small dots with no label are crowded milestones — hover for the name, or use Show all labels.
  • The date handle above the lanes is draggable. Focus it and use ← → for a day, shift + ← → for a month, Home to return to today. It turns amber once moved, and a reload always restores today.
Cyclical overview — the recurring rhythm. The selected window wrapped into a circle, read clockwise from January.
  • Rings run outer to inner in the same order as the legend above; hover any marker for its system, name and month.
  • Each slot is one month of one year — 12 slots at a 1-year window, 24 at 2 years, 36 at 3. Nothing is folded, so no slot is ambiguous.
  • A ring with no markers says whether the system is awaiting data entirely, or simply has nothing inside this window.
Data table — every record behind both visuals. Built from the same array the timeline and ring read, so it cannot drift out of step with them.
  • Filter by system, by a month range, by frequency, or by searching the milestone text. Filters combine, and the count below the table reports what is showing.
  • Month is the milestone's real position. Where several events share a month the visuals spread them across the month's cell to keep them apart — that spacing is ordering, not a day of the month.
  • Frequency, Reviewed by and Reviewed date are empty columns awaiting data. Nothing is inferred into any of them; the frequency filter stays disabled until records carry values.
  • Use this view to check the dataset. Anything wrong here is wrong in both visuals.