Count the log under any two of its fields

N1MM's statistics window. `StatisticsPivot` counts the contacts under one row
field and one column field, with the row total, the running total and the
column totals N1MM prints. The fields are N1MM's own two lists: 29 down the
rows, 20 of them across the columns, sorted the way N1MM's SQL sorts them, so
zone 10 comes after zone 2 and 80M before 20M.

The window has N1MM's two tabs. The table is the grid with `Tot` and `Accum`
and a `Total` line; the graph is a stacked column per row, one segment per
column, in one of N1MM's twelve palettes. "Include Dupes & X-QSOs" counts the
contacts left out of the claimed score and the ones marked as dupes.

Checked against a 3775-contact CQ WW SSB log: 3762 counted, which is what
`select count(*) ... where CLAIMEDQSO = 1 and ContactType <> 'D'` returns, and
the per-band totals match band by band.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdAYHcdRktqKry7nk414TU
This commit is contained in:
2026-09-04 07:47:30 +00:00
co-authored by Claude Opus 5
parent 4eb8071d57
commit acd22a9b5e
15 changed files with 1145 additions and 1 deletions
+22
View File
@@ -664,6 +664,28 @@ What still differs, and why:
nothing and counts no multiplier; the code is trimmed here and counts. Both
contacts are the same station in the 2026 log.
**The statistics window: what N1MM has and this does not.** The window counts
the log under any two of its fields, in N1MM's own two lists — 29 fields down
the rows, 20 of them across the columns — with N1MM's `Tot` and `Accum` columns,
its `Total` line, its "Include Dupes & X-QSOs" box and its stacked column graph.
Left out: printing to a printer, which needs a print dialog this program has
nowhere else, and N1MM's font size spinner, because the theme dialog sets the
fonts here. Copy All copies the table as text on both tabs; N1MM copies the
graph as an image on the graph tab, which the clipboard on Linux would need a
per-toolkit path for, so the graph is written to a PNG through File ▸ Save Graph
instead.
The palette names are N1MM's twelve, which are the .NET chart control's. The
colours are not: they are chosen to match the name, because the control's own
values are not published anywhere this could read them from. Berry is purple
through magenta, Fire is red through yellow, and so on.
**The statistics graph is drawn here rather than by a chart library.**
`StatisticsChart` draws the axis, the stacked columns, the labels and the
legend. It has no tooltips, no zoom and no 3-D, all of which N1MM's chart
control gives it for free. A column label that will not fit under its column is
turned on its side, and one that will not fit even then is left out.
## Known rough edges
**The band plan covers 160M to 2M only.** 60M and everything above 2M get no