diff --git a/static/index.html b/static/index.html index 66f81c0..f728ff8 100644 --- a/static/index.html +++ b/static/index.html @@ -273,10 +273,21 @@ async function loadStatus() { // Last run badge const lr = d.log.last_run; const badge = document.getElementById('last-run'); + let isAnyRunning = false; + let runningScripts = []; + if (lr) { - const ok = !lr.has_error && lr.scripts.every(s => s.status === 'ok'); - badge.textContent = ok ? '✓ OK' : '⚠ Erro'; - badge.className = `badge ${ok ? 'green' : 'red'}`; + const isRunning = lr.scripts.some(s => s.status === 'running'); + if (isRunning) { + isAnyRunning = true; + runningScripts = lr.scripts.filter(s => s.status === 'running').map(s => s.name); + badge.innerHTML = ' Em andamento'; + badge.className = 'badge yellow'; + } else { + const ok = !lr.has_error && lr.scripts.every(s => s.status === 'ok'); + badge.textContent = ok ? '✓ Concluído' : '⚠ Erro'; + badge.className = `badge ${ok ? 'green' : 'red'}`; + } } else { badge.textContent = '—'; badge.className = 'badge yellow'; @@ -284,24 +295,47 @@ async function loadStatus() { // Cards const s = d.stats; + const isAppsRunning = runningScripts.includes('Backup Apps'); + const isBdRunning = runningScripts.includes('Backup BD'); + const isGitRunning = runningScripts.includes('Backup Git'); + const isReposRunning = runningScripts.includes('Backup repos Git'); + const cards = [ - {id:'apps', icon:'📦', name:'Apps', desc:`${s.apps.count} backup${s.apps.count!==1?'s':''}`, meta: s.apps.latest ? `Último: ${timeAgo(s.apps.latest)}` : '', size: formatSize(s.apps.size)}, - {id:'bd', icon:'🗄️', name:'Bancos', desc:`${s.bd.count} backup${s.bd.count!==1?'s':''}`, meta: s.bd.latest ? `Último: ${timeAgo(s.bd.latest)}` : '', size: formatSize(s.bd.size)}, - {id:'git', icon:'🐙', name:'Git Full', desc:`${s.git.count} backup${s.git.count!==1?'s':''}`, meta: s.git.latest ? `Último: ${timeAgo(s.git.latest)}` : '', size: formatSize(s.git.size)}, - {id:'repos', icon:'📁', name:'Repos', desc:`${s.repos.count} backup${s.repos.count!==1?'s':''}`, meta: s.repos.latest ? `Último: ${timeAgo(s.repos.latest)}` : '', size: formatSize(s.repos.size)}, + {id:'apps', icon:'📦', name:'Apps', count: s.apps.count, meta: s.apps.latest ? `Último: ${formatDateTime(s.apps.latest)}` : 'Nenhum backup', size: formatSize(s.apps.size), running: isAppsRunning}, + {id:'bd', icon:'🗄️', name:'Bancos', count: s.bd.count, meta: s.bd.latest ? `Último: ${formatDateTime(s.bd.latest)}` : 'Nenhum backup', size: formatSize(s.bd.size), running: isBdRunning}, + {id:'git', icon:'🐙', name:'Git Full', count: s.git.count, meta: s.git.latest ? `Último: ${formatDateTime(s.git.latest)}` : 'Nenhum backup', size: formatSize(s.git.size), running: isGitRunning}, + {id:'repos', icon:'📁', name:'Repos', count: s.repos.count, meta: s.repos.latest ? `Último: ${formatDateTime(s.repos.latest)}` : 'Nenhum backup', size: formatSize(s.repos.size), running: isReposRunning}, ]; + document.getElementById('cards').innerHTML = cards.map(c => ` -