Files
nginx-stream-server/web/static/js/index.js
2025-09-21 19:20:28 +02:00

36 lines
1.2 KiB
JavaScript

async function load(){
let data;
try {
const r = await fetch('/api/streams', { cache: 'no-store' });
if (!r.ok) throw new Error('api '+r.status);
data = await r.json();
} catch (e) {
console.warn('streams api error:', e);
// UI freundlich degradieren
document.getElementById('list').innerHTML =
'<div class="card"><div class="muted">Keine Daten (API-Fehler)</div></div>';
return;
}
const q = (document.getElementById('filter').value||'').toLowerCase();
const list = document.getElementById('list');
list.innerHTML = '';
data.items.filter(it => !q || it.name.toLowerCase().includes(q)).forEach(it => {
const a = document.createElement('a');
a.href = '/' + encodeURIComponent(it.name);
a.className = 'card';
a.innerHTML = `
<div class="row space-between">
<div>
<div class="title-strong">${it.name}</div>
<div class="muted">Zuschauer: ${it.viewers}</div>
</div>
<div class="pill ${it.live ? 'live':'off'}">${it.live ? 'LIVE' : 'Offline'}</div>
</div>`;
list.appendChild(a);
});
}
document.getElementById('filter').addEventListener('input', load);
document.getElementById('reload').addEventListener('click', load);
load();
setInterval(load, 3000);