Files
yovision/Sense/ui/src/views/sense/edge-node/edgeNodeState.js
T

37 lines
1.4 KiB
JavaScript

const stateLabels = {
online: '在线',
offline: '离线',
recovering: '恢复中',
ready: '正常',
unavailable: '不可用',
idle: '无待回填',
pending: '等待回填'
}
const eventLabels = {
heartbeat_received: '首次心跳',
heartbeat_timeout: '心跳超时',
node_recovered: '心跳恢复',
recovery_started: '开始恢复'
}
export function stateLabel(value) { return stateLabels[value] || value || '未知' }
export function eventLabel(value) { return eventLabels[value] || value || '状态变化' }
export function stateType(value) { return ({ online: 'success', offline: 'danger', recovering: 'warning', ready: 'success', unavailable: 'danger', idle: 'info', pending: 'warning' })[value] || 'info' }
export function freshnessText(item) {
if (!item?.lastHeartbeatAt) return '从未收到心跳'
const seconds = Math.max(0, Number(item.freshnessSeconds) || 0)
if (item.stale) return `已陈旧 ${durationText(seconds)}`
return `${durationText(seconds)}前`
}
export function durationText(seconds) {
const value = Math.max(0, Number(seconds) || 0)
if (value < 60) return `${Math.floor(value)} 秒`
if (value < 3600) return `${Math.floor(value / 60)} 分钟`
if (value < 86400) return `${Math.floor(value / 3600)} 小时`
return `${Math.floor(value / 86400)} 天`
}
export function buildEdgeNodeQuery(query) {
return { pageIndex: Number(query.pageIndex) || 1, pageSize: Number(query.pageSize) || 10 }
}