Skip to content

Track editor

iOS Android
Status ⏳ ⏳
Code — —

Source: click dummies docs/companion_app/sailever-ios.html, docs/companion_app/sailever-android.html (Edit track). Verified against code: 2026-10-11 (no code yet; checked against the click dummies)

Purpose

Fix one track: trim the harbour drift at the start or end, name the departure and destination, move the track to another trip, or delete it. Same rules as the website's track editor (/my/tracks/:id/edit). Trimming is non-destructive: the recorded points stay.

Server API

Need Status
Points with time, SOG and vessel state: GET /api/v1/tracks/:id/points ⏳ missing (website: GET /my/tracks/:id/points.json, which has an engine flag but no vessel state)
Save trim, names, auto flags, trip: PATCH /api/v1/tracks/:id ⏳ missing (website: PATCH /my/tracks/:id)
Delete: DELETE /api/v1/tracks/:id ⏳ missing (website: DELETE /my/tracks/:id)

Layout / behaviour

Pushed screen from a track row on the trip detail.

Element Content & format Behaviour iOS vs Android
Bar Back, title "Edit track", Save. Save: writes trim, names and trip, goes back. Toast/snackbar "Track saved. The numbers are being recalculated…" when the trim changed, otherwise "Track saved." (as on the website). iOS: route as a large display title below the bar, tinted "Save" capsule. Android: route as a subtitle under "Edit track", filled "Save" button.
Badges Device; "{day label} · {HH:MM}" of the kept start; the sync badge as on the trip detail. — —

Trim

Element Content & format Behaviour iOS vs Android
Section head "Trim start and end". — iOS: group header. Android: card title with the lede inside the card.
Lede "Cut off what doesn't belong to the track, like the walk to the marina or the drive home. The recorded points stay, so you can undo it at any time." — iOS: shown as footnote under the card.
Map 180–190 px. Whole track as a grey line, the kept part coloured by vessel state, small pins at IN (ink) and OUT (signal). Not interactive. Updates while trimming. —
SOG chart 72 px. Speed over ground; scale top = highest SOG, at least 8 kn and at most 25 kn, as on the website. Line coloured by vessel state. Cut-off parts shaded. Updates while trimming. —
Range slider Two thumbs, IN and OUT, over the track's points. The kept part of the rail is in the action colour. IN and OUT can't cross; they stay at least one point apart. —
Start Label "Start", time HH:MM. Buttons "One point earlier" / "One point later" (chevrons). Steps IN by one point. —
End Label "End", time HH:MM. Same buttons for OUT. Steps OUT by one point. —
Kept "Kept" · "{x} NM" (big) · "{h} h {mm} min" · "Sailed {x} NM · Engine {x.x} h", computed on the phone like the website preview. Updates while trimming. —
Preview note "Preview from the GPS points. The saved numbers are recalculated from the watch's distance." — —
Reset trim Button. Sets IN and OUT back to the first and last point. Saved only with Save. —

Names

Element Content & format Behaviour iOS vs Android
Section head "Departure and destination". — —
Departure Text field, placeholder "Marina Split". A typed name is stored and kept by later recomputes. iOS: inline label; Android: outlined field with floating label.
Auto (departure) Switch "Named automatically from the position". On: the server names it from the position again, right away (naming rules). iOS: own row below the field. Android: below the field.
Destination Text field, placeholder "Hvar". — —
Auto (destination) Same switch. — —

Trip

Element Content & format Behaviour iOS vs Android
This track belongs to Picker: all trips, then "No trip". Hint "Pick another trip to move the track there." On save the track moves and both trips are recomputed. If the old trip is empty then, it's deleted and the app goes back to the trip list. —

Delete

Element Content & format Behaviour iOS vs Android
Delete track Destructive button. Android: danger zone "Deletes this recording and its points. Its trip stays and is recalculated. This can't be undone." Confirmation "Delete this track? This can't be undone." On confirm: deleted, toast/snackbar "Track deleted." The trip stays and is recomputed, even when it is now empty. —

States and edge cases

  • Track still syncing from the watch: OUT is locked (lock icon, no step buttons, thumb disabled) at the last point received. Note: "The watch is still sending this track. You can trim the end once the last part has arrived." Moving and deleting work as for any track.
  • Trimmed track: the track row on the trip detail shows "Trimmed".

Known deviations

  • The dummies step IN / OUT by 3 points per tap and keep them 3 points apart; the website steps by one point and keeps them one point apart. This spec follows the website.
  • Dummy behaviour this spec replaces with the website's: SOG scale fixed at 0–7 kn; empty name keeps the old name; destination placeholder "Named when the track ends" while receiving; move and delete refused while receiving ("Stop the track on the watch before deleting it"); deleting the last track also deletes the trip ("Track and its empty trip deleted"); "Track moved to {trip}" (Android); delete confirmation "{route} on {day label} will be removed from “{trip}”."; "Synced" badge; engine time as {h:mm} h in the preview.
  • Copy aligned with the website (logbook.editor.*, app.tracks.*): section heads, lede, "No trip" (dummies: "Standalone track"), "Syncing from watch" (dummies: "Receiving"), the receiving note (dummies: "This track is still receiving data. You can trim the end once the watch stops the track."), and the save message (iOS dummy: "Track saved", Android: "Track saved. Trip totals are recalculated.").
  • The dummies lack the preview note. This spec adds it, as the website shows it.