Pen catalogue: read units, per-pen scale, visibility and multiple groups
@mrcsin is already working on this.
Since Sep 10, 2026.
Assessment
This issue has not been assessed yet.
Description
Why
A pen carries only PenId, Name, Group, Color, LineStyle (SemiPlot.Core/Trends/Pen.cs:3-7). The catalogue query never selects unit (SemiPlot.DataSource.Postgres/ArchiveStatements.cs:21-25), a pen has one group, its scale is stored nowhere, and there is no stored visibility. Semiteq/SemiBase#9 extends the schema; this is the client half.
Wanted
PengrowsUnit,Enabled,ScaleMin,ScaleMax(both nullable,NULLmeaning autoscale) andGroupsas a list instead of a singleGroup.ArchiveStatements.PenCatalogreads the new shape:semiplot_tagsjoined tosemiplot_pen_groupsandsemiplot_groups. The currentORDER BY coalesce(group_name, ''), namehas to go, because a pen now has several groups and no single sort key.PostgresDataProvidermaps the rows (PostgresDataProvider.cs:437-462). It already logs and falls back on an unknownline_style;colorgets the same treatment instead of today'snew Color("")on a NULL row (Chart/TrendChartViewModel.cs:367,Legend/LegendConverters.cs:11-12).- The startup probe refuses a database whose
semiplot_meta.schema_versionis older than this client, reporting it in the existing startup-failure window rather than throwing on a missing column. - The bench seeder fills the new tables.
SyntheticPenCatalogalready holdsMinValueandMaxValueper pen with nowhere to store them (SemiPlot.Tools.ArchiveSeeder/SyntheticPenCatalog.cs:24-36) and assigns colours round-robin (:14-18). It gains units per group and writes the group tables throughTagCatalogWriter(TagCatalogWriter.cs:10-19). - Legend headers come from group membership. A pen in two groups appears under both. A pen with no group shows under one "Ungrouped" header.
- Docs:
docs/architecture/postgres-instance.md(the table description, and the line at:70recording that no query readsunit),data-integration.md,bench.md.
Notes
- The catalogue is read once at startup (
App.axaml.cs:121-124) andPenis immutable. Re-reading a changed configuration in a running viewer belongs to #67. - The stored per-pen scale is consumed by #66, which replaces the group axis key.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Semiteq/SemiPlot
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
question
-
enhancement
-
enhancement
-
enhancement
All issues in Semiteq/SemiPlot
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100