mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
fix(voice): leave out an unreported altitude instead of saying 0 feet
select_nearest_aircraft passes altitudeM: null for an airborne contact without a barometric altitude (military rows from adsb.lol can lack alt_baro). The speech builder coerced it with Number(), and Number(null) is 0, so the reply said "..., 0 feet." and the voice card showed "Altitude 0 feet". Read the altitude only when it is a finite number, so an unknown one is left out as the builder already intends.
This commit is contained in:
1 parent
15de9d738c
commit
ea1b0d8d55
3 files changed
+19
-3
No files matched your search
@@ -5115,6 +5115,8 @@ and unreachable upstream (502/504) separately from road geometry.
|
||||
cannot race the nearest-aircraft query ahead of layer enablement. A healthy fallback feed is
|
||||
queried normally and its source is returned with the selection; fallback with
|
||||
no airborne records remains an honest no-data result, not an enable failure.
|
||||
The spoken reply and the card leave out an altitude the feed did not report
|
||||
rather than reading it as 0 feet.
|
||||
- Voice treats the parent Context panel and Contacts as separate intents. An
|
||||
explicit request to open Context expands only `global-context-panel`; it does
|
||||
not choose a mode. An explicit request to open Contacts expands that parent
|
||||
|
||||
+3
-3
@@ -74,9 +74,9 @@ function listPhrase(items) {
|
||||
}
|
||||
|
||||
function feetRounded(meters) {
|
||||
const value = Number(meters);
|
||||
return Number.isFinite(value)
|
||||
? Math.round((value * 3.28084) / 100) * 100
|
||||
// A missing altitude is unknown, not sea level: Number(null) is 0.
|
||||
return Number.isFinite(meters)
|
||||
? Math.round((meters * 3.28084) / 100) * 100
|
||||
: null;
|
||||
}
|
||||
|
||||
|
||||
@@ -217,6 +217,20 @@ test('nearest-aircraft results name the aircraft, distance and altitude briefly'
|
||||
assert.equal(stale.say, 'Selected AAL1, 3.3 km from Austin, stale.');
|
||||
});
|
||||
|
||||
test('nearest-aircraft results leave out an altitude the feed did not report', () => {
|
||||
// gevActions sends `altitudeM: null` for an airborne military contact
|
||||
// without a barometric altitude; that is unknown, not sea level.
|
||||
const unknown = envelope('select_nearest_aircraft', {
|
||||
ok: true,
|
||||
location: 'Ramstein',
|
||||
layerId: 'military',
|
||||
feed: { state: 'nominal' },
|
||||
aircraft: { callsign: 'RCH123', altitudeM: null, distanceKm: 8.2 },
|
||||
});
|
||||
assert.equal(unknown.say, 'Selected RCH123, 8.2 km from Ramstein.');
|
||||
assert.deepEqual(unknown.display.lines, ['8.2\u00a0km from Ramstein']);
|
||||
});
|
||||
|
||||
test('frame_overhead keeps the essential scope audible and lists referents', () => {
|
||||
const framed = envelope('frame_overhead', {
|
||||
ok: true,
|
||||
|
||||
Reference in new issue
Block a user