Repository navigation
LocalStorage Schema
NavAid persists everything under the navaid.* key prefix. There is no other storage (no IndexedDB, no cookies).
| Key | Type | Default | Notes |
|---|---|---|---|
navaid.route |
JSON string | null |
Full route state: { waypoints, legs, notes }. |
navaid.lang |
"he" / "en"
|
"he" |
Last chosen language. |
navaid.layer |
string | "CVFR" |
Base layer. |
navaid.bearing |
number string | "0" |
Map rotation in degrees. |
navaid.toolbarPos |
JSON { x, y }
|
n/a | Toolbar screen position. |
navaid.toolbarCollapsed |
"0" / "1"
|
"1" on phones, "0" desktop |
Toolbar collapse state. |
navaid.yellowAlpha |
number string | "1" |
Label background opacity 0..1. |
navaid.mapOpacity |
number string | "1" |
Base-map brightness 0.1..1 on screen and in PNG export. |
navaid.wpSize |
number string | "1" |
Waypoint circle / name multiplier 0.6..2.0. |
navaid.legArrowSize |
number string | "1" |
Leg info marker size multiplier 0.3..2.0. |
navaid.showNavWP |
"0" / "1"
|
"1" |
"Show Navigation Waypoints" toggle. |
navaid.showAirfields |
"0" / "1"
|
"1" |
"Show Airfields" toggle. |
navaid.showWpNames |
"0" / "1"
|
"1" |
"Show Waypoint names" toggle. |
navaid.wpNameAngle |
"0" / "90" / "180" / "270"
|
"0" |
Rotation of waypoint name labels in degrees (cycled by the ⟳ button). |
navaid.showReturn |
"0" / "1"
|
"0" |
"Show return path" toggle. |
navaid.showMidLeg |
"0" / "1"
|
"0" |
"Show leg dist" toggle. |
navaid.highlightDiff |
"0" / "1"
|
"0" |
"Highlight alt/speed diff" toggle. |
navaid.sec.<id> |
"0" / "1"
|
"0" |
Per-section expand/collapse state. <id> is one of build, view, display, charts, export, print. Accordion: opening one section sets the others to "0". |
navaid.pageOrient |
"portrait" / "landscape"
|
"portrait" |
Print page orientation, flipped via the ▭/▯ button next to A3 / A4. Saved on every flip; restored on boot. |
navaid.aircraft |
JSON { gph, taxiGal }
|
{ gph: 8, taxiGal: 1.1 } |
Fuel calculator settings. Filled by the Flight Plan modal's Gallons per Hour + Taxi/T.O. (gal) inputs. |
navaid.fpPos |
JSON { x, y }
|
n/a | Flight-Plan modal screen position (draggable via the title bar). |
sessionStorage (per-tab, cleared on tab close):
| Key | Notes |
|---|---|
navaid.fpOpen |
"1" while the Flight Plan modal is open — restored across a language switch. |
navaid.selected |
JSON of the currently selected leg/waypoint/note — restored across a language switch. |
This list is normative as of v1.2.
All access goes through small helpers in core.js / ui.js that catch and ignore storage errors (private browsing, quota exceeded). Failure modes:
- Quota exceeded — NavAid surfaces an alert (errStorageFull) so the user can export the route before continuing.
-
JSON parse or schema error on
navaid.route- current versions warn and preserve the original saved blob instead of overwriting it with empty state.
legs.length === max(0, waypoints.length - 1).
inLabel / outLabel are marker offsets used by the renderer. Current route JSON validation is strict: all documented fields above are required and correctly typed; extras are allowed for forward compatibility.
To wipe everything NavAid owns:
Object.keys(localStorage)
.filter(k => k.startsWith('navaid.'))
.forEach(k => localStorage.removeItem(k));
location.reload();Old single-language keys ("Nav", "Heli") are migrated to the new layer names on first load by a small migration shim in core.js.
- Always prefix
navaid.. - Store strings; serialize objects via
JSON.stringify. - Read with
try { … } catch (e) { /* storage unavailable */ }. - Document the key here when you add it.
For pilots
- Quick Start
- Video tutorials (in Hebrew)
- Features
- The Map
- Auto zoom
- Toolbar
- Phone layout
- Safety notice
- Route and Legs
- Waypoints and Notes
- Inspector
- AI Assistant
- User Guide
- Frequency Changes
- VOR and Radial/DME
- Map Layers
- Bearing dial
- Extra Layers
- Airport charts
- Flight Plan
- Route check
- Flight planning form
- Submit a flight plan
- Fuel
- Print and Export
- Simulator Connect
- Google Earth
- GPS Track Recording
- Comm failure
- Follow me
- Bilingual UI
- Offline and PWA
- Settings and Persistence
- Keyboard and Touch
- FAQ and Troubleshooting
For developers
- Architecture
- Directory Structure
- Tuning Panel
- Hidden Tools
- LocalStorage Schema
- Nav-waypoints dataset
- Airfields dataset
- Service Worker
- Deployment
- Contributing
- Changelog
🇮🇱 עברית
לטייסים
- התחלה מהירה
- סרטוני הדרכה
- תכונות
- עוזר AI
- מדריך למשתמש
- זום אוטומטי
- שינויי תדר
- VOR ו-Radial/DME
- סרגל הכלים
- פריסת הטלפון
- הודעת הבטיחות
- שכבות מפה
- שכבות נוספות
- תוכנית טיסה
- בדיקת מסלול
- טופס תכנון טיסה
- הגשת תוכנית טיסה
- הדפסה וייצוא
- חיבור סימולטור
- Google Earth
- הקלטת מסלול GPS
- תקלת קשר
- עקבו אחריי
- ממשק דו-לשוני
- לא מקוון ו-PWA
- הגדרות ושמירה
- מקלדת ומגע
- שאלות נפוצות ופתרון תקלות
למפתחים
🌐 Live 🧪 Staging 📦 Repo 💡 Ideas / bugs
{ "waypoints": [ { "lat": 32.084, "lng": 34.778, "name": "TLV" // required string; use "" for unnamed waypoint } ], "legs": [ { "inboundAltitude": 3000, "outboundAltitude": 3000, "flightSpeed": 90, // kt "inLabel": { "a": 0, "p": 44 }, // marker offset: along leg & perpendicular px "outLabel": { "a": 0, "p": -44 } } ], "notes": [ { "lat": 32.55, "lng": 35.55, "text": "climb 4500ft", "color": "#ffd84a", "shape": "rect" // or "oval" } ] }