-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO
295 lines (274 loc) · 14 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
UPSTREAM bugs?
- renderer for padding causes infinite recursion error in vue, possible related to conditional rendering
BUGS:
- TWA predictor discrepancies, try adding 10sec heuristics, still a problem?
- Fleet layer & traces out-of-sync after multiple highlight pans
- Safari (v10) draws black wind arrows/barbs but correctly colored predictor & polar bg curve colors
- iPad crosshair missing? (mullionman)
- iPad missing chat "send" button
Check:
- Verify that there are no useless tile redraws (print redraw count to tile).
- Chrome dc dot w/o cc/twa values
- up/down keys in chat textarea don't work with something? FF doesn't always work.
Other bits
- Tools buttons don't work well with wheel.png
- validate delay better in mutation to prevent errors spreading
- Don't auto-delete DCs when server is broken (to allow deleting old DCs).
- limit contours drawing to existing tile ranges
- This is hard than I initially thought. Maybe keep track of lon array 1+ tiles state?
- check all store diag calls to have root: true argument
- refactor solapi stats init so that stat setup can be called independently (tiled wx fetch loop should report errors through there)
- multiple "start" DCs and/or other DCs during towback
- towback aware predictor
- status line, for unranked, say so "Boat guest (no rank) with ...
- dc checkbox auto
- polar vmg markers (on map ones in particular)
- "reset" button quick help
- contours func to use tile indexes properly
- refactor wx fetching code
- cleanup wx layers when wx meta is fetched
- linkify chat & in-race messages?
- center on DC button?
- DC marker wrap copies
- don't use dcFetchTime but figure out if DCs were really changed
- gybe to +180 shows "tack" button
- wx update markers on predictor
- dc markers only major w/ low-zoom (setTimeout local data var to reduce load on update)
- init transient can have boat id != null but no instruments (break at least predictor?)
- race between dc auto-reload and expiring command (visual & also commit race)
- delete first in ruler does not update total distance, should it?
- non-existing chat channel in config (if made invisible) works?
- polar butterfly at wx dot
- Reactivity fails for latLng (null -> non-null fails), at least delayLatLng
- Miniscule wx cell TWS contours speed ups (draw only on edges)
- Save leaderboard sort column
- Splitpanes save & restore & multi-orientation handling
- Trace length limiter
- POI notes field
- Dual own trace removal when own boat is in fleettraces
- Send steering button feedback improvement
- Change tab while dc update in progress closes the editor?? Does it?
- Steering retry & correct time offsets inside the post call's caller
- Move wx cell size into frame to allow multi sized
- Allow cell size switch, fake midpoint data by interpolating
- WX tiles
- New DC API code & testing
- Boat keys zindex, behind the fleet boats?
- Standalone => unauthenticated before retrying, multiple tries & late failure
- Timestamp for parallel logins to skip earlier initialized
- DC list possibly stale warning
- Nav lights on boat, solve the scaling challenge, add option for hull+lights
- Add icon for tools custom from pos, or red GC arc
- Dim GC/Rh from tools when bearing is written manually.
- separate tools bearing input from bearing used for calculations (refactor)
- Support stealth fleet mode (no position, cog, traces, dtf/dbl?)
- Dark TODO: graticules, no blend at all for label bgs?
- POI popup captures events (try as tooltips to have more control?)
- Map graticules / grid
- FIX tiles edge drawn when the canvas is cropped from the tile graticule
- Boatlists editor, handle non-racing names cleanly
- Tweak MAX_LATITUDE of Leaflet's SphericalMercator projection (extend it)
- Prune chat messages if needed
- Fix splitpanes resized caused windmap movement
- Add Vue.config.errorHandler to catch remaining errors
- Enter key higher prio popup focus handling when DC editor field/button has focus
- Select boats from map click in default ui mode, generalize hover find boats code
- DC list time delta column
- Highlight DCs with same time with red
- Highlight DCs with out-of-range COG/TWAs
- Predictor 10s at beginning
- POI meteogram
- POI small circles, to boat, to x nm
- Improve terminator & x3 it for twilights, #bbb only darkens colors a little
- Always/auto-select toggle for leaderboard lists (now easy w the new getter)
- Scroll position saving & chat room change scroll
- Selected DC saved
- Add generic poi/mark/boat targeter
- Localstore, clear previous race message shown ids, before that validate races.xml?filter=active to have at least the current race id
- 0.5px quirks to fleet & land
- Longer hover tooltips for all buttons & input fields & table headers.
- Add expected courses list on clearing DCs & when doing steering
- If current course not on list, trigger reloading all DCs
- Polar touch "hover"
- Validate WX cells vs bounds
- TWS contours gaps
- Quick access for gc/loxo, leader, polar always, arrows/barbs
- Reregister in timed races
- Upgrade sol/guest -> own credentials
- Larger draw outside renderer value, maybe make it configurable if perf impact
- Improve error reporting when invalid data arrives, the rest
- Network debug: click error number for errors popup
- boatlist lastclicked to store to avoid forgetting it?
- SOL API Time sync after start
- Pruning loaded tiles to free memory, add zero refCounted lists, do this only if needed.
- Predictors, consider performance improvements (smaller parts, bboxes, multi canvases)
- Put not moved into fleet and use as TWA=0 heuristic (towback needs to be taken into account)
- Race component fetch backup timer (if boat API dies)
- API calls, general robustness checks everywhere before accepting data
- Normalize cog/twa angles safely (brainaid etc may input us garbage)
- Boatname valid characters, enforce too
- Try e-17 format with all instruments
- Robust wx time parser (support also != 4 entries + validate time)
- These should be provided in xml by the server though
- VMC towards finish line on the last leg rather than the middle point
- Scale: use own calc based on lat, not map.distance to use correct EARTH_R
- API call prepare code safety (make sure bugs don't stall API retry loop)
- TWA given with "Port" / "P" / "Starboard" / "S" suffix
- TWA ~ 0 causes the TWA predictor to look large blob at the boat or other issues with markers not on predictor line (at least with +0.01)
- Dblclick timer ok?
- Notes?
- 100 nearest boats shown?
- Ability to compare prev & this wx (at least predictors)
- Ruler: show opposite heading
- Ruler wrap, detect anti-meridian crossing from mouse movements during panning
- Notification (any incl chat) sound.
- Popup zindex bring-to-top feature on titlebar click
- Local trace intersection finding (for recent turns)
- WX comparator (old wx vs current)
- Race planner (tile set changer, wp naming, wp moving)
- Trace wrap handler for >360 degree races
- Popup drag with hover
- No chatrooms in auth_raceinfo leads to crash, only one room leads to crash
- Still too frequent map tile retries
- Distance-in-lead
- Refetching race messages?
- Could skip fetching wx with - in the name
- Predictor refactor
- Predictor to normal Leaflet polyline. Is there enough accuracy? Leaflet allows configuring pruning for polylines
- Link predictor markers on hover to DC tab
- Aiming from predictor?
- Planning only predictor?
- Old wx predictor stored
DC list other
- Better time sync support, figure out optimal delay fixup delta
- How to counter latency spikes
- Or better DC setting API, please!
- Allow exec immediately (+clear DCs before it too?)
- Editor
- Support add new (without deleting the old one)
- Validate unique time
- Multiselect, generalize boatlist multiselect into mixin
- Show the time until DC fires somewhere for every DC?
Refactors
- kntToMs / msToKnt improvement, conv.js + constants for all conversions
- consider transforming API data @ fetch time to avoid most of knt/ms conversions
- Map events using vue2leaflet style, any to do? 2 in map.vue?
- veevalidate consider, looked too complicated but might be good
- generic timedelta -> string converter (as component?)
- config label component for ("experimental" or such easy add ones)
- check all L.latLng to avoid GCs if possible
- freq used functions, check if returning objects necessary (e.g., twd/tws calcs?)
- Tiles try remove waitList clearing
- Check if splitting in wx code needs also some idle calls, could take long?
- Refactor multiselect from boatlists
- Try projecting tiles beforehand, are the px values accurate?
- Rework boat color creation, lots of useless object done there
- name -> id map for msg during parse if available
- ResizeObserver available in very late versions of all browsers!
- wrappedLatLng -> raceLatLng
Visual low-prio stuff
- SYC flag preload to avoid header misposition (or use a timer)
- Add phantom container into hover coordinate to avoid constant bg resizing
- WX contour labels
- Improve wx slider fg color transparency
- Chat message max len tweak
- 2deg steer aim region?
- WX slider dragging show the wxTime in a "tooltip" above the slider
- Tool images
- Hide vs Show length in POI popup changes number of lines
- Boatlists by dtf distance
- Boatlists, select still highlights boats filtered away
- Try using tooltip for poi markers to make click functionality better
- select order in drawing fleet
- PR mark tooltip css to use zoom dependent padding?
- Towback start, refetch the fleet right away to avoid boats lingering on the sea
- After finishing, fetch fleet until own distance there becomes zero (for quicker results)
- Sadly, no finish_time for boats in race API
- Start time change notification: calculate delta part
- allMessagesShown getter to racemessages.js (for tab highlight & alert)
- Delay fleet fetch by some seconds to allow server to move all boats
- Chatroom visual separation
- 9999 ranking order?
- Edge: transparency using CSS not supported (poi & tools)
- Perhaps use mark nearness to refetch race more often?
- Perhaps username component to offload charset tricks (if needed)?
- Leaderboard tooltips (LOG, DBL, others?)
- Leaderboard relative DTF mode
- Investigate: are own boat's zoom issues due to updated position during zooming?
- Two laps think how to make "Rounded" vs "Leave to ...", perhaps delta to current ordered z-indexing?
- DC editor label click focus response for "Type" & "Date" labels
- Wind map, how to do calcs also during zooming, I read it's complicated but would look cool
- Sail angle improvements
- Consider drawing speedups:
- Use rbush for faster drawing when many small island polys in a tile?
- Avoid drawing complexity outside the screen (skip all points when in
the same side of a border)
- Graticules lat/lon numbers
- Draw leader on top to canvas (trace z-index too for own+leader?)
- Sort tile fetch list based on closeness to the center (needs map center tile information), add refCount === 0 into front to kill them as soon as possible
- race message datetime layouting, current title rows have an impact
- When anti-meridian is visible, instead of tile reuse, create shadow copies to -360/+360 to avoid tile flicker on pan over 180
- Brainaid style DC list, include button for abort everything related to DCs
- Only remove points from trace with dst > last trace point (how to handle tight turns then?)
- Perhaps use flyToBounds also for zooming if it gives more cb calls during zooming?
- Make steering button width constant
- Chat sizing to use flex / or dragable sizes?
- Textbox border everywhere (try global styling)
- Fix initial race area center sets >180 lngs?
- Placenames map
- Steering delay focus save
- Timed race duplicate names filter
- BBQ/TWA0 detection improvements (but only for non-buddies)
- Chat high priority fetching support (for newly opened languages, active chats, recently sent chats)
- Configrange, show current value
- Fix predictor or trace staleness (one tick horizontal line after pan)
- Polar url in links? From auth?
- "Reset" should consider not yet visible turns too (maybe block button until the next boat tick?)
- Wind level line for command boat
- Ruler:
- Bearing to other boat? Can be done by locking ruler points to boats
- Improve label display position, myabe use CSS to rotate the label?
Configs
- Steering digits: (2-4)
- Max distinct boats show on hover: range
- Background: dark blue sea, local day/night
- DTF: default, synthetized
- Route bisection lines bool (draw as dashed)?
- Instrument change dir/rate-of-change bools
- Pop-up race messages: pop-up, tab auto-select, tab alert (blinking !)
- Direct steering retry timer (send)
- DC editor retry timer
- Fleet/traces fetch freq reduction for lower BW use
- visual steering & steering tab fields in-sync (flash compatibility mode)?
- PR mark labels bool
- Steering button feedback mode ("slow UI"), something else was also in my mind but cannot remember it now
Warnings (to lower right corner?):
- DCs with the same timestamp
- DCs with an invalid value
- No start commands set
- Warn from DCs after start but no starting command
- Warning when unwinding a mark rounding, maybe show the bisecting line too then? Perhaps use maxVMG triangle to filter out most spurious warnings & sailing away from the mark?
- Warn from invalid WX
- Clock offsets
- Boat degraded mode (buggy chat)
- Setting start DC but already one existing? Clear other commands?
Discussion needed:
- Custom target WPs for VMC & WPBRG calculations
- WPBRG with red/green/grey dot/arrow/pointer to polar
- Setting DCs, time calc: from the last boat tick or SOL realtime?
- Configs:
- Predictor: extras (maxvmc, maxvmg, maxbs)?
- Steering tool max VMG limiter bool
- Dead-reckoning: off, own, nearby, all (or split to two?)
- High-zoom (edge lenght > x) show coast angles
- Advanced config filtering out some of the config options (also think "SOTP" filter same time)
- Dual steering UI, one for manual, other for DC?
- PR mark cut detector?
- Good projection for polar region?
UPSTREAM bugs, all worked around currently:
- UTC fix
- LGridLayer fix
- gridlayer zoom Math.ceil feature
- gridlayer prune bug
Seems unfixable:
- Track down the reason for the update memory limit warnings