const STATUS_COLORS = {
active: '#4fc3f7',
waiting: '#ffa726',
done: '#66bb6a'
};
const STATUS_LABELS = {
active: '执行中',
waiting: '等待中',
done: '已完成'
};
function renderSystemStatus(data) {
const c = document.getElementById('sys-status');
if (!c) return;
c.innerHTML = `
🟢${data.system_status === 'running' ? '运行中' : '异常'}系统状态
⏱️${data.uptime}运行时长
📡${data.api_calls_today}今日API调用
👥${data.active_developers}活跃开发者
🚀${data.version}版本
📦${data.last_deploy}最后部署
`;
}
function renderDevelopers(data) {
const c = document.getElementById('dev-list');
if (!c) return;
let html = '';
for (let i = 0; i < data.length; i++) {
const d = data[i];
const color = STATUS_COLORS[d.status] || '#78909c';
html += `
${d.id}
${d.name}
${STATUS_LABELS[d.status] || d.status}
${d.module} · ${d.phase}
${d.progress}%
`;
}
c.innerHTML = html;
}
function renderBroadcasts(data) {
const c = document.getElementById('bc-list');
if (!c) return;
let html = '';
for (let i = 0; i < data.length; i++) {
const b = data[i];
let cls = 'wait';
if (b.status === '已完成' || b.status === 'done') cls = 'done';
else if (b.status === '执行中' || b.status === 'active') cls = 'active';
html += `
${b.id}
${b.dev || ''}
${b.module} · ${b.phase}
${b.status}
${b.time}
`;
}
c.innerHTML = html;
}
function updateConnStatus(isLive) {
const el = document.getElementById('conn-status');
if (!el) return;
el.innerHTML = isLive
? ' 已连接 guanghulab.com'
: ' 离线模式(模拟数据)';
}
async function refreshDashboard() {
try {
const result = await loadAllData();
renderSystemStatus(result.status);
renderDevelopers(result.developers);
renderBroadcasts(result.broadcasts);
updateConnStatus(result.isLive);
} catch (err) {
console.error('[HoloLake] 刷新失败:', err);
updateConnStatus(false);
}
}
document.addEventListener('DOMContentLoaded', function() {
refreshDashboard();
setInterval(refreshDashboard, API_CONFIG.REFRESH_INTERVAL);
});