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 +48 -21
- package/index.js +361 -92
- package/package.json +1 -1
- package/public/app.js +137 -31
- package/public/index.html +5 -1
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
|
-
- **
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
135
|
-
capturing its last known AIS position if one's available. You
|
|
136
|
-
call-off for a future time (mirrors Schedule Start), and mark or
|
|
137
|
-
individual boat DNF by hand at any point, independent of the whole
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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.
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|