fix(traffic): проверять live-срез и прекращать опрос выключенных устройств
This commit is contained in:
1 parent
1275dd7b9b
commit
2358ecef60
29 files changed
+1620
-114
No files matched your search
@@ -793,6 +793,7 @@ export default function TrafficPage() {
|
||||
const [range, setRange] = useState<Range>("1h")
|
||||
const [search, setSearch] = useState("")
|
||||
const [trafficRetry, setTrafficRetry] = useState(0)
|
||||
const [liveRetry, setLiveRetry] = useState(0)
|
||||
const trafficKey = JSON.stringify([isLive, backendUrl, range, groupMode, trafficRetry])
|
||||
const [trafficState, setTrafficState] = useState<{ key: string; status: "ready" | "error"; receivedAt?: number; error?: string } | null>(null)
|
||||
const trafficReady = trafficState?.key === trafficKey && trafficState.status === "ready"
|
||||
@@ -843,6 +844,7 @@ export default function TrafficPage() {
|
||||
backendUrl,
|
||||
serverId: selectedId,
|
||||
iface: selectedIface,
|
||||
reloadKey: liveRetry,
|
||||
})
|
||||
const confirmedFlowSelection = isLive && Boolean(currentFlows) && !liveError && (
|
||||
range === "30d"
|
||||
@@ -1472,7 +1474,14 @@ export default function TrafficPage() {
|
||||
</>}
|
||||
{isLive && effectiveMode === "servers" && detailServer && <>
|
||||
<TrafficDataTime label="Получение истории сервера" receivedAt={currentDetail?.receivedAt} source="API" />
|
||||
<TrafficDataTime label="Последнее измерение сервера" receivedAt={liveReceivedAt} source="live-поток" serverAt={liveSample?.at} />
|
||||
<TrafficDataTime label="Последнее измерение сервера" receivedAt={liveReceivedAt} source="live-поток" serverAt={liveSample?.at}
|
||||
serverTimeLabel={liveSample?.timestampKind === "backend-receipt" ? "ответ RouterOS получен приложением" : undefined} />
|
||||
{liveStreamError && <Alert variant={liveStreamError === "Ожидание нового live-измерения" ? "default" : "warning"} role="status" className="mb-3">
|
||||
<AlertTitle>{liveStreamError === "Ожидание нового live-измерения" ? "Подключение live-потока" : "Live-поток: нет свежих данных"}</AlertTitle>
|
||||
<AlertDescription className="break-words">{liveStreamError}
|
||||
<Button size="sm" variant="outline" disabled={liveStreamError === "Ожидание нового live-измерения"} onClick={() => setLiveRetry(value => value + 1)}>Переподключить live</Button>
|
||||
</AlertDescription>
|
||||
</Alert>}
|
||||
</>}
|
||||
{effectiveMode === "servers" && detailServer && (
|
||||
<ServerDetail
|
||||
@@ -1481,8 +1490,9 @@ export default function TrafficPage() {
|
||||
setRange={setRange}
|
||||
liveRx={liveSample?.rxMbps}
|
||||
liveTx={liveSample?.txMbps}
|
||||
liveHint={liveStreamError
|
||||
? (liveSample ? "Последнее live-измерение · поток недоступен" : "История · live недоступен")
|
||||
liveHint={liveStreamError === "Ожидание нового live-измерения"
|
||||
? (liveSample ? "Последнее live" : "История · ожидание live") : liveStreamError
|
||||
? (liveSample ? "Последнее live" : "История · live недоступен")
|
||||
: liveSample ? "live" : isLive ? "История · ожидание live" : undefined}
|
||||
/>
|
||||
)}
|
||||
|
||||
Reference in new issue
Block a user