Inspector - msupino/NavigationApp GitHub Wiki

🇮🇱 עברית

Inspector

The panel that opens when you select something on the map. What it shows depends on what you selected — a waypoint, a leg, a note, or an overlay item.

The inspector on a selected waypoint, showing its name, position and actions

Opening and closing

  • Click a waypoint, leg, note, VOR or NOTAM — the inspector opens on that item, on the release. A press that turns into a drag never opens it: you grabbed the thing to move it, and the panel would sit over the ground you are moving it across. A panel that was already open before the drag stays open. The same rule covers waypoints, notes, nav and cumulative-time kites, and leg lines.
  • Esc, or the ✕ in its header — closes it.
  • Drag the header to move it; the position is remembered per language (navaid.inspPos.<lang>).
  • Resize from the bottom-right corner (desktop). The size is remembered per kind of panel — waypoint, leg, airfield, VOR, bubble, airspace… — so a two-row bubble does not open in the panel an airfield was stretched to. A kind you have never resized fits its content, at the width you last used (navaid.inspSize).

With no route on the map, clicking a chart point (nav waypoint, airfield, VOR) inspects it. On a first run, while the "click to start a route" hint is still up, that first click starts the route instead — see Route and Legs.

Waypoint

Row Notes
Waypoint name Editable. Defaults to WP 1, WP 2, … or the snapped point's name
Latitude / Longitude Read-only, in degrees + decimal minutes (32°18.0'N)
Nearest field The closest published airfield, its distance and magnetic bearing
Highest terrain The highest terrain in the ~1.2 × 1 NM grid square holding the point (the MSA grid)
Satellite A thumbnail of the point, with Expand for a larger view
VOR ref Optional per-waypoint VOR; overrides the global reference for this point's radial/DME
Add freq change (Z) Drops a frequency-change callout at this waypoint
🗑 Delete waypoint (D) Removes it, re-syncing the legs
↻ Reset waypoint name Back to the automatic name
Direct to Replace the route with a direct leg from the aircraft to this point (asks first; dimmed without a position)

Every point you can fly to — a map point, a reporting point, an airfield and a VOR — carries the same pair, Direct to and Add to route (a VOR then Use as reference VOR). A note's panel is titled Note (or Identification point).

Every button in the inspector carries an icon, beside its text on the same line. A chart point, a VOR station and a spot held on the map show the same Nearest field and Highest terrain rows under the position. A right-click on the map offers these same buttons as a menu — see Keyboard and Touch.

Leg

Row Notes
Speed (kt) Per-leg planned speed. Drives ETE and fuel
Heading Computed magnetic course, read-only
Inbound / Outbound altitude (ft) Planned altitudes. Blank is allowed and means "not set"
Safe altitude (ft) Only with Terrain vs altitude on (Extra layers) and terrain data loaded: ceil((highest terrain along the leg + msaBufferFt) / 100) × 100, shown red if the planned altitude is below it. The map shading beside it uses the VFR clearance instead — see Terrain vs altitude
↻ Reset marker position Returns the leg's labels to their default offsets
+ Add identification point Anchors a reporting-point oval to this leg
NOTAMs The NOTAMs in force that cross this leg, by the same route test the plan uses. Each is a card with its number, an until time and its text; tap it to open it in the NOTAM list

MSA here is a planning aid built from an SRTM grid, not a terrain-warning system.

Airfield: density altitude

Inside the Weather box — above the METAR it reads from, and above the satellite thumbnail — an airfield shows the density altitude — what the aeroplane thinks the field elevation is once temperature and pressure are counted. On a hot afternoon at Haifa, Megiddo or Masada the air is thin enough that the takeoff roll stops resembling the number in the book, and nothing in an elevation figure says so. The value turns red once it is more than daWarnAboveElevFt (2000 ft) above the field.

The arithmetic is the approximation the manuals and the E6-B teach — checkable in your head, which the exact barometric form is not:

PA  = elevation + 30 × (1013 − QNH)
ISA = 15 − 1.98 × (PA / 1000)
DA  = PA + 120 × (OAT − ISA)

Beneath it: the temperature and QNH used, in both scales (33 °C · 1009 hPa · 29.80″), and where they came from. Hour zero prefers the field's own METAR — measured there — and falls back to the hourly forecast (Open-Meteo) at fields that publish no observation, which is most of them.

It answers to the clock on the map, up to 24 hours ahead (daForecastHours), because the useful question is rarely what is it now but what time can I get out of here. It re-reads the fetched hours rather than asking again, so scrubbing costs nothing.

The panel has no slider of its own. It used to, and beside a runway wind that names an hour without offering one to change, that read as a control of something else. Scrub the map clock — or the copy of it at the top of the panel on a phone — and the density altitude moves with the NOTAMs, the winds and everything else timed. Opening an airfield while the chart is already scrubbed forward opens on that hour.

With neither an observation nor a forecast the row shows — and says no temperature available, rather than quietly computing a standard day — which would read as a measurement and be wrong by thousands of feet.

The hour it is showing is named above the figure, so a density altitude is never read without the time it belongs to. The runways and the wind on each of them follow directly after the weather box: density altitude and head/crosswind answer one question between them — can this aeroplane use this runway today — and they used to sit a satellite photograph apart.

featureDensityAltitude in the tuning gist removes the section entirely.

Airfield: weather (METAR / TAF)

Below the density altitude, an ICAO-coded field shows its live METAR and TAF, decoded into plain language — wind, visibility, weather, cloud, temperature and QNH (both hPa and inches). A Show raw toggle swaps the decode for the original coded report; Show decoded switches back. The TAF reads one line per forecast period, with the change indicators spelled out — From (FM), Becoming (BECMG) and Temporary (TEMPO); a period that changes only wind or cloud omits an empty visibility rather than printing a bare "Vis". The ↻ button re-fetches, bypassing the cache.

  • Read aloud — each report has its own 🔊 button: one on the METAR, one on the TAF, so you can hear just the one you want. It speaks on demand — independent of the in-flight voice alerts — always in an English voice (the decode is English), and reads whatever the panel is showing: the decoded text, or the raw code with the raw toggle on. Only one speaks at a time; pressing the speaking button, refreshing, or flipping the raw/decoded toggle stops it. Where the device has no speech engine the buttons are dimmed, not hidden.
  • AD / WS warnings — aerodrome (AD WRNG) and wind-shear (WS WRNG) warnings the IMS publishes for the field are listed here too, or None when none is in force.

Source: the METAR/TAF feed is published to the wx-data branch (NOAA AWC), with a same-origin data/wx.json offline fallback. A field with no ICAO code — and so no METAR — still shows its density altitude.

Airfield: Hours

An Hours frame, before Communication, gives the field's published operating hours from the CAA AIP: the AIP wording (Hebrew as published, English translated) and a source line — AIP, amendment 1/26 (2026-08-06) · Israel local time · check NOTAMs. Fifteen fields publish hours: Ben Gurion, Haifa, Ramon (LLER), Herzliya, Rosh Pina, Rishon, Masada, Ktziot, Ein Yahav, Habonim, Megiddo, Ein Shemer, Fiq, Kiryat Shmona and Beer Sheva. The others (the military bases, Arad, Gvulot, Kedem, Ein Vered) say No hours published in the AIP — never an empty frame, which would read as "no restriction". The text starts folded, so the frame is title and verdict; Show the published hours ▾ opens it.

Beside the title, a verdict for right now: Within published hours · until 14:00, or Outside published hours · opens 16:00, with prior coordination required where the AIP says so. It refreshes every minute while the panel is open, and follows the panel's time slider: slid ahead it answers for that hour — At 15:00 local · Outside published hours · opens 16:00. It says published hours, never "open/closed", and a within verdict always carries, unfolded, Published hours only: weather, security, NOTAMs or the operator may still close the field.

  • Israel local time, including summer time (Rosh Pina's Saturdays depend on it).
  • The sun — sunrise, sunset and civil twilight are computed for the field (to within about two minutes), so Herzliya's 10 minutes before the end of evening civil twilight or 19:30, whichever is earlier is decided — read from Ben Gurion's twilight, as the AIP says.
  • Holidays come from the device's Hebrew calendar: Rosh Hashana, Yom Kippur, Sukkot, Shemini Atzeret, Pesach (first and seventh days) and Shavuot, each with its eve — so Haifa, Herzliya and Rosh Pina close early on the eve and stay closed on Yom Kippur.
  • No verdict where the rules do not decide it: civil twilight at a daytime-only field, three minutes either side of a sun-based edge, Yom HaAtzmaut's week (2–6 Iyar) and Purim, and the evening after Yom Kippur. The text is still there; only the verdict is withheld.

The hours live in docs/data/airfield-hours.json, read by hand from each field's AIP page, with that page's amendment and hash; scripts/aip-drift.py reports a page the CAA has since amended.

Airfield: Communication

Primary, Clearance and ATIS sit in their own titled frame. On a field with all three this is five rows of bare numbers otherwise, which reads as a list of settings rather than as the radios to set.

After the frequencies, a Phone row gives the field's published number as a link that dials it (☎), for a clearance by phone, a closed field or a dead radio. It is labelled Phone, not Tower, because most fields have no tower. A field with no number on file gets no row.

Airspace

Tapping an area of controlled or restricted airspace opens a read-only panel:

Row What it says
Class Prohibited — closed, Restricted — conditional, or Controlled — clearance required
Vertical limits Lower – upper, in feet. GND and UNL where the AIP says so
Your route With a route loaded: clear of it, crosses it, inside its limits, crosses it, above the top / below the base with the gap in feet
Activity Training, Military, Live fire, Parachuting…
Hours As printed, plus active now / not active now where the text decides it
Activation By NOTAM, for the areas that say so
Frequencies TMA sectors: the controlling position and its frequency (APP/DEP control 120.500, TMA control 119.500, secondaries)
Notes What the remarks column says once the schedule and activity are lifted out of it
Size / From you Area in nm², and distance + bearing from your position (or the map centre)
NOTAMs Live NOTAMs naming this area, with Show
Source The AIP section and edition it was read from

Where several areas overlap, the tap offers the smallest first — a sector inside a TMA inside a restricted area is usually the one you meant.

LSA bubble

Tapping a bubble on the Low Alt chart opens its panel. Below its details come the NOTAMs in force that name the bubble, found by the same matcher that draws them on the chart. When one closes the bubble, the active row says so — Closed — NOTAM C1833/26, in the NOTAM amber — instead of "Open all day".

NOTAM cards follow the time slider, here and on a leg: the panel lists what is in force at the time the slider shows, as the NOTAM layer does, and rebuilds as you move it.

What the inspector does not show

  • No free-text note field on a waypoint — notes are separate objects you add to the map (see Waypoints and Notes).
  • No distance-from-previous, bearing-to-next, or sequence number. Those live in the Flight Plan table, per leg.

On a phone

The inspector becomes a bottom sheet with a capped height, so the map stays visible above it, and its Delete / Reset actions stick to the bottom edge rather than sliding below the fold.

A panel that is open when a drag starts is hidden for the duration and comes back, with the same selection, when the finger lifts — on a phone it covers the half of the map the point is being dragged towards.

While a fix is driving the map

Recording a track, showing your location, or a connected simulator locks the route layout: the waypoints, kites, notes and comm callouts cannot be dragged. A nudge in flight rewrites the plan underneath the alerts that are measuring against it, and on a kneeboard the nudge is usually accidental. The page frame (print layout) is not route data and stays free.

The panel itself stays shut, for the same reason: in flight the chart is what is being read, and the inspector covers it. A tap meant to check where you are — or a stray one on a kneeboard-mounted phone — should not put a waypoint panel over the map. Where several things overlap, or on a frequency-change arrow, the chooser that would ask which one is refused too, rather than opening a modal over the chart in flight.

It says so once per tracking session rather than doing nothing, and it is a switch, not a rule: Map → "Panel while showing position" (off). Your choice is remembered and travels with you; a device that has never touched it takes the gist's answer (featureInspectorWhileTracking).

Aircraft are the exception either way: a tap on ADS-B traffic opens its panel while tracking, because those marks exist only while a fix is driving the map.

See also

⚠️ **GitHub.com Fallback** ⚠️