49 lines
1.8 KiB
HTML
49 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>boehmitools · Läufe</title>
|
|
<link rel="stylesheet" href="/shared/boehmi.css">
|
|
</head>
|
|
<body data-bt-title="Läufe" data-bt-icon="↻">
|
|
<main class="bt-main">
|
|
<div class="bt-pagehead">
|
|
<h1>Läufe</h1>
|
|
<p>Alle Ausführungen der Kommandozeilen-Tools dieser Sitzung.</p>
|
|
</div>
|
|
<div class="bt-card bt-card-flush">
|
|
<table class="bt-table">
|
|
<thead><tr><th>Tool</th><th>Aufgabe</th><th>Status</th><th>Dauer</th><th></th></tr></thead>
|
|
<tbody id="rows"></tbody>
|
|
</table>
|
|
</div>
|
|
<div id="empty" class="bt-empty bt-hidden">Noch keine Läufe in dieser Sitzung.</div>
|
|
</main>
|
|
<script src="/shared/boehmi.js"></script>
|
|
<script>
|
|
const badge = (s) => ({
|
|
running: '<span class="bt-badge info"><span class="bt-dot"></span>läuft</span>',
|
|
done: '<span class="bt-badge ok">erfolgreich</span>',
|
|
failed: '<span class="bt-badge err">fehlgeschlagen</span>',
|
|
cancelled: '<span class="bt-badge warn">abgebrochen</span>',
|
|
}[s] || s);
|
|
|
|
async function load() {
|
|
const { jobs } = await fetch("/api/jobs").then((r) => r.json());
|
|
document.getElementById("empty").classList.toggle("bt-hidden", jobs.length > 0);
|
|
document.getElementById("rows").innerHTML = jobs.map((j) => `
|
|
<tr>
|
|
<td><b>${BT.escape(j.plugin_name)}</b></td>
|
|
<td>${BT.escape(j.label)}<div class="bt-muted bt-mono" style="font-size:11px">${BT.escape(j.command)}</div></td>
|
|
<td>${badge(j.status)}</td>
|
|
<td class="bt-muted">${j.duration}s</td>
|
|
<td><a class="bt-btn mini" href="/plugins/${BT.escape(j.plugin)}/?job=${BT.escape(j.id)}">Protokoll</a></td>
|
|
</tr>`).join("");
|
|
}
|
|
load();
|
|
setInterval(load, 4000);
|
|
</script>
|
|
</body>
|
|
</html>
|