mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
fix(awareness): keep cohort reasons English in data
summarizeAwarenessCohort() translated `reason`, which is retained in the awareness context snapshot. Mark the four reasons with msg() instead; the awareness panel already shows them through translateKnown().
This commit is contained in:
1 parent
3d64a54a21
commit
e82f6d5c9c
2 files changed
+27
-6
No files matched your search
@@ -1,6 +1,6 @@
|
|||||||
/** Pure proximity helpers for Global Context. No capability modeling. */
|
/** Pure proximity helpers for Global Context. No capability modeling. */
|
||||||
|
|
||||||
import { t } from '../i18n/index.js';
|
import { msg, t } from '../i18n/index.js';
|
||||||
import { UNNAMED_PLACE_NAMES } from './installationNames.js';
|
import { UNNAMED_PLACE_NAMES } from './installationNames.js';
|
||||||
|
|
||||||
const UNNAMED_NAMES = new Set(UNNAMED_PLACE_NAMES);
|
const UNNAMED_NAMES = new Set(UNNAMED_PLACE_NAMES);
|
||||||
@@ -84,7 +84,8 @@ export function formatAwarenessLabel(value) {
|
|||||||
/**
|
/**
|
||||||
* Summarize sorted nearby results without promoting missing/stale feeds to a
|
* Summarize sorted nearby results without promoting missing/stale feeds to a
|
||||||
* negative finding. `UNKNOWN` is an input-data state, never an out-of-range
|
* negative finding. `UNKNOWN` is an input-data state, never an out-of-range
|
||||||
* claim in this MVP.
|
* claim in this MVP. `reason` is English data; the awareness panel shows it
|
||||||
|
* in the UI language.
|
||||||
*/
|
*/
|
||||||
export function summarizeAwarenessCohort(
|
export function summarizeAwarenessCohort(
|
||||||
items,
|
items,
|
||||||
@@ -95,14 +96,14 @@ export function summarizeAwarenessCohort(
|
|||||||
relationship: AWARENESS_RELATIONSHIP.UNKNOWN,
|
relationship: AWARENESS_RELATIONSHIP.UNKNOWN,
|
||||||
count: null,
|
count: null,
|
||||||
nearest: [],
|
nearest: [],
|
||||||
reason: t('feed unavailable'),
|
reason: msg('feed unavailable'),
|
||||||
};
|
};
|
||||||
if (stale)
|
if (stale)
|
||||||
return {
|
return {
|
||||||
relationship: AWARENESS_RELATIONSHIP.UNKNOWN,
|
relationship: AWARENESS_RELATIONSHIP.UNKNOWN,
|
||||||
count: null,
|
count: null,
|
||||||
nearest: [],
|
nearest: [],
|
||||||
reason: t('feed stale'),
|
reason: msg('feed stale'),
|
||||||
};
|
};
|
||||||
const normalized = (Array.isArray(items) ? items : [])
|
const normalized = (Array.isArray(items) ? items : [])
|
||||||
.filter(
|
.filter(
|
||||||
@@ -119,8 +120,8 @@ export function summarizeAwarenessCohort(
|
|||||||
count: normalized.length,
|
count: normalized.length,
|
||||||
nearest: normalized.slice(0, limit),
|
nearest: normalized.slice(0, limit),
|
||||||
reason: normalized.length
|
reason: normalized.length
|
||||||
? t('observed or mapped nearby context')
|
? msg('observed or mapped nearby context')
|
||||||
: t('no observed or mapped objects in current feeds'),
|
: msg('no observed or mapped objects in current feeds'),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import test from 'node:test';
|
import test from 'node:test';
|
||||||
import assert from 'node:assert/strict';
|
import assert from 'node:assert/strict';
|
||||||
|
import { setLocale, translateKnown } from '../i18n/index.js';
|
||||||
import {
|
import {
|
||||||
AWARENESS_RELATIONSHIP,
|
AWARENESS_RELATIONSHIP,
|
||||||
findByDoublingRadius,
|
findByDoublingRadius,
|
||||||
@@ -47,6 +48,25 @@ test('unavailable and stale feeds remain unknown', () => {
|
|||||||
assert.equal(summarizeAwarenessCohort([], { stale: true }).reason, 'feed stale');
|
assert.equal(summarizeAwarenessCohort([], { stale: true }).reason, 'feed stale');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('cohort reasons stay English in data and translate where the panel shows them', (t) => {
|
||||||
|
t.after(() => setLocale('en'));
|
||||||
|
setLocale('ru');
|
||||||
|
const reasons = [
|
||||||
|
summarizeAwarenessCohort([], { available: false }).reason,
|
||||||
|
summarizeAwarenessCohort([], { stale: true }).reason,
|
||||||
|
summarizeAwarenessCohort([{ id: 'near', distanceM: 10 }]).reason,
|
||||||
|
summarizeAwarenessCohort([]).reason,
|
||||||
|
];
|
||||||
|
assert.deepEqual(reasons, [
|
||||||
|
'feed unavailable',
|
||||||
|
'feed stale',
|
||||||
|
'observed or mapped nearby context',
|
||||||
|
'no observed or mapped objects in current feeds',
|
||||||
|
]);
|
||||||
|
// The awareness panel shows a reason through translateKnown().
|
||||||
|
for (const reason of reasons) assert.notEqual(translateKnown(reason), reason);
|
||||||
|
});
|
||||||
|
|
||||||
test('navigation prioritizes nearby targets from the selected cohort', () => {
|
test('navigation prioritizes nearby targets from the selected cohort', () => {
|
||||||
const cohorts = [
|
const cohorts = [
|
||||||
{ id: 'flights', summary: { nearest: [{ icao24: 'a1', distanceM: 1000 }, { icao24: 'a2', distanceM: 2000 }] } },
|
{ id: 'flights', summary: { nearest: [{ icao24: 'a1', distanceM: 1000 }, { icao24: 'a2', distanceM: 2000 }] } },
|
||||||
|
|||||||
Reference in new issue
Block a user