Chart: time markers stored in the archive

Open
#77 0 comments 0 reactions 1 assignee View on GitHub

@mrcsin is already working on this.

Since Sep 10, 2026.

Assessment

This issue has not been assessed yet.

Description

enhancement

Why

An operator needs to mark a moment: the start of a process, an event worth returning to. Nothing in the viewer does that today.

Wanted

  • A vertical line placed at a timestamp, scrolling with the chart and leaving the view when the window moves past it.
  • Stored in the archive database (Semiteq/SemiBase#10), so it survives a restart and is visible from another station. Writing goes through the semiplot_writer role (Semiteq/SemiBase#8).
  • Draggable to another time, deletable from a context menu.
  • Every pen shows its value where the marker crosses it.

What exists to build on

The delta tool is the structural precedent and covers three of the four parts:

  • Two VerticalLine plottables, created once, pinned to the shared bottom axis, hidden by default (Chart/TrendChartView.axaml.cs:330-339). They are the only vertical lines in the repository.
  • Placement routed through ChartPressRouter (Chart/ChartPressRouter.cs:21-23) into a pure Core model (Core/Trends/DeltaCursorModel.cs:15-26).
  • Re-projection on every window change (TrendChartView.axaml.cs:347-363).
  • Value at a crossing already exists as a pure function: CursorReadoutModel.ReadAt interpolates each pen's centre and returns null in a gap or outside the range (Core/Trends/CursorReadoutModel.cs:5-30).

Genuinely new: dragging a plottable, which has no precedent since the only drag is a whole-canvas pan; a context menu, of which the repository has none; and persistence.

To settle

  • How many markers, and what happens when the window holds a hundred of them.
  • Whether a marker carries a label, and where it is drawn.
  • Whether a marker is the bookmark of docs/architecture/trend-feature-spec.md:144-146 (CU-4, SHOULD, placed by double-click in cursor mode), or the annotation that trend-interaction.md:84,282 declares out of scope. Persistence pushes it towards the second, so the docs need a decision recorded either way.
  • Whether markers reload when another station adds one, or only at startup.
Dominant language
C#
Stars
0
Forks
0
Avg merge
18m
Merged PRs (30d)
42

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Semiteq/SemiPlot

All issues in Semiteq/SemiPlot

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.