wrap the today page in the shared header + container/stack shell, render scheduled nodes as cards via list-cards, and add a muted empty-state message that toggles when no nodes are scheduled. existing #scheduled-nodes-list and li selectors used by cypress tests are preserved (the empty message lives in its own element).
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
const scheduledNodesList = document.getElementById(
|
|
'scheduled-nodes-list'
|
|
);
|
|
const emptyMessage = document.getElementById('scheduled-nodes-empty');
|
|
|
|
function todayDateString() {
|
|
const today = new Date();
|
|
const year = today.getFullYear();
|
|
const month = String(today.getMonth() + 1).padStart(2, '0');
|
|
const day = String(today.getDate()).padStart(2, '0');
|
|
return year + '-' + month + '-' + day;
|
|
}
|
|
|
|
async function loadScheduledNodes() {
|
|
const date = todayDateString();
|
|
const response = await fetch(
|
|
'/api/scheduled-nodes?date=' + date,
|
|
{ credentials: 'same-origin' }
|
|
);
|
|
if (!response.ok) {
|
|
return;
|
|
}
|
|
const scheduledNodes = await response.json();
|
|
scheduledNodesList.innerHTML = scheduledNodes
|
|
.map((scheduledNode) =>
|
|
'<li class="card">' +
|
|
'<span class="muted">' + scheduledNode.planName +
|
|
'</span>: ' +
|
|
'<span class="node-title">' + scheduledNode.nodeTitle +
|
|
'</span>' +
|
|
'</li>'
|
|
)
|
|
.join('');
|
|
if (emptyMessage !== null) {
|
|
emptyMessage.hidden = scheduledNodes.length > 0;
|
|
}
|
|
}
|
|
|
|
loadScheduledNodes();
|
|
});
|