diff --git a/frontend/src/components/StationControlPanel.tsx b/frontend/src/components/StationControlPanel.tsx index 8d33537..f29d5ec 100644 --- a/frontend/src/components/StationControlPanel.tsx +++ b/frontend/src/components/StationControlPanel.tsx @@ -99,8 +99,14 @@ type AntStatus = { enabled: boolean; type: string; connected: boolean; direction // only — per-element length adjustment. Heading/state is polled by the panel. function MotorAntennaWidget({ ant, refetch, t }: { ant: AntStatus; refetch: () => void; t: (k: string, v?: any) => string }) { const [err, setErr] = useState(''); - const [elDraft, setElDraft] = useState>({}); + const [elNum, setElNum] = useState('1'); // element to adjust (1..6) + const [elLen, setElLen] = useState(''); // target length (mm) const run = (p: Promise) => p.then(refetch).catch((e) => setErr(String(e?.message ?? e))); + const setElement = () => { + const n = parseInt(elNum, 10), mm = parseInt(elLen, 10); + if (!Number.isFinite(n) || !Number.isFinite(mm)) return; + run(MotorSetElement(n - 1, mm)); // protocol elements are 0-based (0..5) + }; const isUB = ant.type !== 'steppir'; const dirs: [number, string][] = [[0, 'N'], [1, '180°'], [2, t('station.bi')]]; return ( @@ -135,21 +141,27 @@ function MotorAntennaWidget({ ant, refetch, t }: { ant: AntStatus; refetch: () = {t('station.retract')} - {isUB && ant.elements.length > 0 && ( + {isUB && (
{t('station.elements')}
-
- {ant.elements.map((mm, i) => ( -
- {t('station.element')} {i + 1} - {mm} mm - setElDraft((d) => ({ ...d, [i]: e.target.value.replace(/[^0-9]/g, '') }))} - onKeyDown={(e) => { if (e.key === 'Enter' && elDraft[i]) run(MotorSetElement(i, parseInt(elDraft[i], 10))); }} /> - -
- ))} + {ant.elements.length > 0 && ( +
+ {ant.elements.map((mm, i) => ( + {t('station.element')} {i + 1}: {mm}mm + ))} +
+ )} +
+ + setElLen(e.target.value.replace(/[^0-9]/g, ''))} + onKeyDown={(e) => { if (e.key === 'Enter') setElement(); }} /> +

{t('station.elementsHint')}