mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
- i18n scanner: lastError sink, no false sinks on defaults and ternaries - shared src/i18n/marker.js for modules that only mark strings - wind field messages move to wind/fields.js; CITY_POIS imports from cityPois.js - drop review IDs, change history and stale references from comments and docs Co-Authored-By: Claude Opus 5.5 <[email protected]>
52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
import { t } from '../../i18n/index.js';
|
|
|
|
/**
|
|
* @module headingConfidence
|
|
*
|
|
* Consumers for the catalog's per-camera `headingConfidence` flag (#639).
|
|
*
|
|
* Packs whose feed publishes no facing get a synthetic bearing from
|
|
* `fallbackHeadingFromId` — a hash of the id string, with no geographic
|
|
* input — and are marked `headingConfidence: 'low'`. Until now nothing read
|
|
* the flag, so a guessed bearing rendered exactly like a surveyed one. These
|
|
* helpers make the guess visible: the HUD heading token gains an
|
|
* `(ESTIMATED)` tag and the coverage wireframe draws dashed instead of solid.
|
|
*
|
|
* A human-vouched pose always wins over the pack flag: a manually saved
|
|
* calibration (`calSource:'manual'`) or a hand-authored catalog entry
|
|
* (`poseSource:'curated'`) is never presented as estimated, mirroring the
|
|
* CAL badge states in calibration.js.
|
|
*/
|
|
|
|
/**
|
|
* Whether a camera's bearing is a synthetic guess that should present as
|
|
* provisional.
|
|
* @param {{headingConfidence?: string|null, calSource?: string|null,
|
|
* poseSource?: string|null}} camera - Catalog camera (or public state).
|
|
* @returns {boolean}
|
|
*/
|
|
export function isHeadingEstimated(camera) {
|
|
if (!camera) return false;
|
|
if (camera.calSource === 'manual') return false;
|
|
if (camera.poseSource === 'curated') return false;
|
|
return (
|
|
String(camera.headingConfidence || '')
|
|
.trim()
|
|
.toLowerCase() === 'low'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* HUD heading token: `HDG 194°`, tagged `(ESTIMATED)` when the bearing is
|
|
* synthetic — so a hash can never read as a surveyed facing.
|
|
* @param {{headingDeg?: number, headingConfidence?: string|null,
|
|
* calSource?: string|null, poseSource?: string|null}} camera
|
|
* @returns {string}
|
|
*/
|
|
export function headingHudToken(camera) {
|
|
const hdg = Math.round(Number(camera?.headingDeg) || 0);
|
|
return isHeadingEstimated(camera)
|
|
? t('HDG {value}° (ESTIMATED)', { value: hdg })
|
|
: t('HDG {value}°', { value: hdg });
|
|
}
|