signalk-race-control 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,12 +49,21 @@ and a live projected finishing order — during and after the race.
49
49
  default** — turn it on in the plugin's settings (`vetEnabled`) for clubs that
50
50
  actually race under VET-tall; see **Cross-race TCF memory** below for what happens
51
51
  to handicaps while it's off.
52
- - **Cross-race TCF memory for boats outside VET** — whenever a boat isn't matched in
53
- the VET register (or the register is disabled altogether), the TCF you set for it by
54
- hand is remembered by boat name and applied automatically the next time a boat with
55
- that name is added to any race. A boat that *is* VET-matched never has its TCF
56
- carried over this way — it always starts from the default until you pick a VET
57
- alternative or edit it again.
52
+ - **KTK import** — the same idea as VET-tall, for [Klassisk Treseiler
53
+ Klubb](http://klassisktreseilerklubb.blogspot.com/)'s (KTK) own KLR handicap
54
+ register, published each season as a table in a blog post — this plugin always
55
+ reads whichever post is most recent, so it tracks the current season without
56
+ needing an update. A KLR number isn't a TCF directly: corrected time is elapsed ×
57
+ (KLR / 100), so that conversion happens automatically. Off by default — turn it on
58
+ in the plugin's settings (`ktkEnabled`) for clubs that race under KLR. If a boat is
59
+ listed in **both** VET-tall and KTK, the dropdown shows alternatives from both
60
+ (labeled by which is which), rather than picking one register over the other.
61
+ - **Cross-race TCF memory for boats outside every register** — whenever a boat isn't
62
+ matched in VET-tall or KTK (or both are disabled), the TCF you set for it by hand is
63
+ remembered by boat name and applied automatically the next time a boat with that
64
+ name is added to any race. A boat matched in either register never has its TCF
65
+ carried over this way — it always starts from the default until you pick an
66
+ alternative from the dropdown or edit it again.
58
67
  - **MMSI and sail number, remembered across races** — set once per boat (MMSI can
59
68
  also be picked up automatically from a live AIS/self vessel with a matching name),
60
69
  both are remembered in a small cross-race registry: add a boat with the same name
@@ -78,7 +87,10 @@ and a live projected finishing order — during and after the race.
78
87
  ended up as the name.
79
88
  - **Editable finish times** — click **Now** to record a finish as it happens, type a
80
89
  specific `HH:MM:SS` into the finish-time field to correct a mistimed click, or
81
- **Clear** to undo. Handles races that cross midnight.
90
+ **Clear** to undo. Handles races that cross midnight. **DNS** marks a boat as never
91
+ having started at all, distinct from **DNF** (started but didn't finish) — both show
92
+ up as their own status in the Excel export and rank last, and either one can be
93
+ undone the same way. Recording a real finish time clears either.
82
94
  - **Start timer** — once a start line is set and a start is scheduled, an expandable
83
95
  **Start timer** panel shows a countdown to the gun alongside three live numbers for
84
96
  this vessel specifically (from its own SignalK GPS/speed, not any other tracked
@@ -131,13 +143,17 @@ and a live projected finishing order — during and after the race.
131
143
  rounding.
132
144
  - **Stop / call off the race** — freezes elapsed/corrected time for everyone without
133
145
  touching boats, finish times, or the course (unlike Reset, which clears the race
134
- back to not-started), and marks every boat that hadn't finished as **DNF**,
135
- capturing its last known AIS position if one's available. You can also schedule a
136
- call-off for a future time (mirrors Schedule Start), and mark or un-mark an
137
- individual boat DNF by hand at any point, independent of the whole race. There's no
146
+ back to not-started), and marks every boat that hadn't finished or already been
147
+ marked DNS as **DNF**, capturing its last known AIS position if one's available. You
148
+ can also schedule a call-off for a future time (mirrors Schedule Start), and mark or
149
+ un-mark an individual boat DNF or DNS by hand at any point, independent of the whole
150
+ race. There's no
138
151
  true pause: **Resume** discards the stop, un-DNFs everyone it DNF'd, and the clock
139
152
  jumps straight back to real elapsed time — the time spent stopped isn't excluded
140
153
  from anyone's result. Recording a real finish time on a DNF'd boat clears its DNF.
154
+ Also happens automatically the moment every boat has either finished or been marked
155
+ DNF — nothing left to time, so the race calls itself off rather than sitting there
156
+ with an idle clock until someone remembers to click Stop.
141
157
  - **Compare to a "self" boat** — click the star next to a boat's name to mark it as
142
158
  self. Every other boat then shows, in the **vs Self** column: a live-ticking
143
159
  countdown to the moment self would tie them on corrected time if that boat has
@@ -146,10 +162,15 @@ and a live projected finishing order — during and after the race.
146
162
  both have finished. With no boat marked self, the column instead compares everyone
147
163
  against the current **leader** (tagged accordingly), so it's never just blank.
148
164
  - **Export to Excel** — a genuine `.xlsx` snapshot of the current standings (same
149
- ranking, same rows as the on-screen table: rank, boat, sail number, MMSI, TCF,
150
- start time, elapsed, corrected, finish time, status), with the time columns
151
- rendered in your browser's own timezone rather than the server's (and with the
152
- date included, for a multi-day race).
165
+ ranking, same rows as the on-screen table: rank, boat, sail number, MMSI, TCF, start
166
+ time, finish time, elapsed, corrected, status), with the time columns rendered in
167
+ your browser's own timezone rather than the server's (and with the date included,
168
+ for a multi-day race). Start/finish are real date-time cells, and Elapsed/Corrected
169
+ are live formulas from them (elapsed × TCF), not numbers baked in at export time —
170
+ correct a start or finish time directly in the spreadsheet afterward and the rest
171
+ recalculates. Left blank for a boat with no finish time (DNF, DNS, or still racing)
172
+ rather than a snapshot of elapsed-so-far that would go stale the moment the file is
173
+ reopened later.
153
174
  - **Download Offline Timer** — a single self-contained `.html` file, seeded with the
154
175
  current race's boats, TCF, and multi-day setting, that runs the core of race timing
155
176
  (start/stop/resume/reset, add/remove boats, edit TCF, individual start times,
@@ -164,7 +185,10 @@ and a live projected finishing order — during and after the race.
164
185
  download time and a **Refresh VET register** link lets the offline page re-fetch the
165
186
  current sheet straight from Google Sheets (no plugin server needed for that — just
166
187
  whatever internet connection the browser has), with the same alternatives dropdown
167
- and autocomplete as the main webapp. AIS boat names/positions, the course/chart, and
188
+ and autocomplete as the main webapp. If KTK is enabled too, its KLR numbers are
189
+ seeded in the same way, but — since KTK's own page doesn't allow that kind of direct
190
+ browser fetch — only as a snapshot from download time, with no offline refresh
191
+ equivalent. AIS boat names/positions, the course/chart, and
168
192
  importing a fleet from Manage2Sail still need the live server (Manage2Sail's own API
169
193
  doesn't allow browser-side fetches at all) — TCF is entered by hand for anything the
170
194
  VET register doesn't cover. Also has its own "Download results as CSV" button.
@@ -236,11 +260,14 @@ finish time/rank for boats still racing, when the plugin has enough to estimate
236
260
  tracks for a fresh run.
237
261
  - The VET-tall source page can be overridden in the plugin's settings
238
262
  (`handicapSourceUrl`) — point it at a specific year's Google Sheet link directly to
239
- skip the SSCA page lookup, e.g. if a club uses its own register.
240
- - Whether the VET-tall register is used at all (`vetEnabled`, off by default) is also a plugin
241
- setting, not a per-race or webapp-side option — change it under
242
- **Server → Plugin Config → Race Control** and restart the plugin (the server does
243
- this automatically on save) for the webapp to pick it up.
263
+ skip the SSCA page lookup, e.g. if a club uses its own register. KTK's source page
264
+ can likewise be overridden (`ktkSourceUrl`) — point it at a specific post directly to
265
+ skip the label-listing lookup.
266
+ - Whether the VET-tall register is used at all (`vetEnabled`, off by default) is also a
267
+ plugin setting, not a per-race or webapp-side option — same for KTK's KLR register
268
+ (`ktkEnabled`) — change either under **Server → Plugin Config → Race Control** and
269
+ restart the plugin (the server does this automatically on save) for the webapp to
270
+ pick it up.
244
271
  - The mark-rounding radius used for the estimated finish time and remaining-distance
245
272
  calculations (`markRoundingRadiusM`, 100m by default) is also a plugin setting —
246
273
  loosen it for a fleet with noisier AIS tracks, or tighten it if marks sit close