fix(ui): label connectivity checks as Проверка состояния
This commit is contained in:
@@ -59,7 +59,7 @@ export function boardAvailable(vehicle:Vehicle):boolean{
|
||||
return vehicle.enrollment==='paired'&&vehicle.connectivity==='online';
|
||||
}
|
||||
export function contourSummary(snapshot:ContourSnapshot|null){
|
||||
if(!snapshot)return {tone:'warning' as const,label:'Проверяем состояние',online:null,total:null};
|
||||
if(!snapshot)return {tone:'warning' as const,label:'Проверка состояния',online:null,total:null};
|
||||
const total=snapshot.workers!==null&&snapshot.vehicles!==null?1+snapshot.workers.length+snapshot.vehicles.length:null;
|
||||
const online=Number(snapshot.core!==null)+(snapshot.workers??[]).filter(item=>workerAvailable(item.telemetry)).length+(snapshot.vehicles??[]).filter(boardAvailable).length;
|
||||
if(snapshot.errors.length)return {tone:'warning' as const,label:'Проверка неполная',online,total};
|
||||
|
||||
@@ -45,12 +45,12 @@ export function ContourHealthWorkspace({state,headerToolsHost}:{state:MissionRun
|
||||
const summary=contourSummary(snapshot);
|
||||
const core=snapshot?.core;
|
||||
const {controlledDevice,deviceControlConnectivity}=contourRuntimeAuthorityPresentation(state);
|
||||
const refresh=<IconButton label={loading?"Проверяем состояние":"Обновить состояние контура"} disabled={loading} onClick={()=>setGeneration(value=>value+1)}><Icon name="refresh" size={16}/></IconButton>;
|
||||
const refresh=<IconButton label={loading?"Проверка состояния":"Обновить состояние контура"} disabled={loading} onClick={()=>setGeneration(value=>value+1)}><Icon name="refresh" size={16}/></IconButton>;
|
||||
return <div className="contour-health-dashboard">
|
||||
{headerToolsHost?createPortal(refresh,headerToolsHost):refresh}
|
||||
<section className="contour-health-summary">
|
||||
<div><h2>Узлы и связь</h2><p>Mission Core, зарегистрированные вычислители и бортовые компьютеры аппаратов.</p></div>
|
||||
<div className="contour-health-summary__status"><StatusBadge tone={loading?'warning':summary.tone}>{loading?'Проверяем состояние':summary.label}</StatusBadge></div>
|
||||
<div className="contour-health-summary__status"><StatusBadge tone={loading?'warning':summary.tone}>{loading?'Проверка состояния':summary.label}</StatusBadge></div>
|
||||
</section>
|
||||
<section className="contour-health-kpis" aria-label="Сводка состояния контура">
|
||||
<div><span>Узлы в сети</span><strong>{summary.online??'—'} / {summary.total??'—'}</strong><small>Core, вычислители и бортовые ПК</small></div>
|
||||
@@ -60,7 +60,7 @@ export function ContourHealthWorkspace({state,headerToolsHost}:{state:MissionRun
|
||||
</section>
|
||||
<section className="contour-node-grid" aria-label="Узлы контура">
|
||||
<article className="contour-node" data-state={core?(core.ok?'online':'degraded'):'unknown'}>
|
||||
<header><div><span className="section-eyebrow">КОМПЬЮТЕР ОПЕРАТОРА</span><h3>Mission Core</h3></div><StatusBadge tone={core?.ok?'success':'warning'}>{core?'В сети':snapshot?'Не в сети':'Проверяем состояние'}</StatusBadge></header>
|
||||
<header><div><span className="section-eyebrow">КОМПЬЮТЕР ОПЕРАТОРА</span><h3>Mission Core</h3></div><StatusBadge tone={core?.ok?'success':'warning'}>{core?'В сети':snapshot?'Не в сети':'Проверка состояния'}</StatusBadge></header>
|
||||
<dl><div><dt>Версия</dt><dd>{core?.version??'—'}</dd></div><div><dt>Время ответа</dt><dd>{snapshot?.latency==null?'—':`${Math.max(1,Math.round(snapshot.latency))} мс`}</dd></div><div><dt>Обработчики устройств готовы</dt><dd>{core?`${core.plugin_runtimes.ready} / ${core.plugin_runtimes.total}`:'—'}</dd></div></dl>
|
||||
{!core?.ok&&core?.components?.recording_cache?.status==='capacity-pressure'&&<small>Недостаточно свободного места для новых записей.</small>}
|
||||
</article>
|
||||
|
||||
Reference in New Issue
Block a user