RecurringPanel

The recurring panel of a spec: its switch, its settings, its runs and their trend.

Inherits QWidget
Group libtrove

In the namespace octomy::trove::workspace. Declared in src/libs/libtrove/trove/workspace/RecurringPanel.hpp.

Detailed description

trove-recurring §TRC-D-10. The panel is a part of the aggregate page of a spec in the Spec tab. Any spec can become recurring, so every spec shows the panel. It is closed for a spec that was never recurring, and open for one that was.

The switch

"Normal" and "recurring" are not two kinds (owner ruling R2, §TRC-D-1). The switch turns the schedule on and off. With the switch off, every setting stays visible and editable, greyed, with the line "Recurring is off: the settings are kept, and Run now still works".

The settings

  • The schedule, in the words of clockwork, with its next time. A button opens it in the Schedules app. Clockwork owns the rule.
  • The probes, each with its last value. A probe is edited in ProbeEditorDialog.
  • The template unit that each run copies, and the budget: "all" when empty (owner ruling R5).
  • Trust, with the badge "lands on main" in the warning color. Turning trust on asks the operator each time (owner ruling R4).
  • The landing of a trusted run: the delete limit, the window, the quiet minutes, the land mode and the verify step that must pass on the exact commit. With no verify step, nothing lands (§TRC-D-8, L6).
  • Run now, which works with the switch on or off.

The history and the chart

A table of runs (RecurringHistoryModel) for the probe that the selector names, newest first. A double click opens a run's work unit. Below it, the before and after values of each run as lines, with StackedAreaChartWidget, and the drift between runs as bars, with BarComparisonWidget. A probe that was deleted stays in the selector: its samples stay, and its line ends where it was deleted.

Writes and reads

Every write is a call of a task through SpecWorkspaceActions, as the work-unit editor does (trove-spec-workspace §SW-5). The reads go to the store. refresh() reads again after a write of any writer, and the history rows that changed flash (flash::rows).

See also SpecWorkspace, RecurringHistoryModel, ProbeEditorDialog.

In this section