Navigation: jump to a date, with a calendar marking days that hold data

Open
#79 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

Reaching a day three months back means dragging the minimap and hoping. There is no calendar, no date picker and no jump-to-date anywhere in the repository; the only absolute navigation is the Jump to Now button.

Wanted

  • A window that takes a date and time and moves the view there. It cancels sticky, and it shares the navigation API added by #71.
  • A calendar in that window marking which days hold data, so the operator sees the gaps instead of landing in one. A day with no rows is drawn as empty.

The part that needs a decision

Day coverage has no API. IDataProvider has five members and none of them answers it (SemiPlot.Core/Data/IDataProvider.cs:7-27); the only coverage information in the whole system is the single first-and-last pair of ArchiveExtent.

Two sources, and they answer different questions:

Partition metadata. The archive is partitioned one per calendar day, tpYYYYmMMdDD, created automatically (docs/architecture/scada-archive.md:54-60). Reading pg_class is cheap and constant-cost. It says a partition exists, which is not the same as holding rows, and says nothing per pen.

Aggregating the rows. Accurate, and constrained by the index: the primary key is (id, l, t) with id leading (scada-archive.md:47-50), so a scan by time without a pen list degenerates, and ExplainPlanTests forbids a sequential scan on those partitions (docs/architecture/bench.md:235). Over a year that is 365 partitions to touch.

Partition metadata is the cheap default and honest if the calendar means "the archive was running that day" rather than "this pen has data". The plan should say which sentence the shading makes, because the operator will read it as one of them. #76 supplies the cost of the accurate version.

Related specification: docs/architecture/trend-feature-spec.md:38-40 (TM-6, SHOULD), the calendar half.

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.