30 lines
895 B
JavaScript
30 lines
895 B
JavaScript
// A7 stub — full panel ships in D5.
|
|
import { api } from '../api.js';
|
|
import { el, mount } from '../dom.js';
|
|
|
|
function row(j) {
|
|
return el('li', {},
|
|
el('span', { class: 'status idle' }, j.state),
|
|
' ',
|
|
el('span', { style: { fontFamily: 'var(--font-mono)' } }, j.name),
|
|
' ',
|
|
el('span', { class: 'muted' }, (j.id || '').slice(0, 8))
|
|
);
|
|
}
|
|
|
|
export async function render(main) {
|
|
const wrap = el('div');
|
|
mount(main,
|
|
el('h1', { class: 'view-h1' }, 'Jobs'),
|
|
el('p', { class: 'view-sub muted' }, 'pg-boss queue — recent jobs across states.'),
|
|
wrap
|
|
);
|
|
try {
|
|
const rows = await api.get('/api/jobs?limit=50');
|
|
if (!rows.length) mount(wrap, el('p', { class: 'muted' }, 'No jobs yet.'));
|
|
else mount(wrap, el('ul', { class: 'plain' }, rows.map(row)));
|
|
} catch (e) {
|
|
mount(wrap, el('p', { class: 'muted' }, 'Could not load: ' + e.message));
|
|
}
|
|
}
|