Auto-commit local changes before build (2026-01-08 13:31:57)

This commit is contained in:
Ivo Oskamp 2026-01-08 13:31:57 +01:00
parent b8f86c183c
commit 60f6f8e3d6

View File

@ -219,84 +219,92 @@
<script>
(function () {
var table = document.getElementById('mailAuditTable');
var modalEl = document.getElementById('mailMessageModal');
if (!table || !modalEl) return;
function initAdminAllMailPopup() {
var table = document.getElementById('mailAuditTable');
var modalEl = document.getElementById('mailMessageModal');
if (!table || !modalEl) return;
var modal = new bootstrap.Modal(modalEl);
// base.html loads Bootstrap JS after the page content. Initialize after DOMContentLoaded
// so bootstrap.Modal is guaranteed to be available.
if (typeof bootstrap === 'undefined' || !bootstrap.Modal) return;
function setText(id, value) {
var el = document.getElementById(id);
if (el) el.textContent = value || '';
}
var modal = new bootstrap.Modal(modalEl);
function renderObjects(objects) {
var container = document.getElementById('msg_objects_container');
if (!container) return;
container.innerHTML = '';
if (!objects || !objects.length) {
container.innerHTML = '<div class="text-muted">No objects stored.</div>';
return;
function setText(id, value) {
var el = document.getElementById(id);
if (el) el.textContent = value || '';
}
var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' +
'<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>';
function renderObjects(objects) {
var container = document.getElementById('msg_objects_container');
if (!container) return;
container.innerHTML = '';
for (var i = 0; i < objects.length; i++) {
var o = objects[i] || {};
tableHtml += '<tr>' +
'<td>' + (o.name || '') + '</td>' +
'<td>' + (o.type || '') + '</td>' +
'<td>' + (o.status || '') + '</td>' +
'<td style="white-space: pre-wrap;">' + (o.error_message || '') + '</td>' +
'</tr>';
if (!objects || !objects.length) {
container.innerHTML = '<div class="text-muted">No objects stored.</div>';
return;
}
var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' +
'<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>';
for (var i = 0; i < objects.length; i++) {
var o = objects[i] || {};
tableHtml += '<tr>' +
'<td>' + (o.name || '') + '</td>' +
'<td>' + (o.type || '') + '</td>' +
'<td>' + (o.status || '') + '</td>' +
'<td style="white-space: pre-wrap;">' + (o.error_message || '') + '</td>' +
'</tr>';
}
tableHtml += '</tbody></table></div>';
container.innerHTML = tableHtml;
}
tableHtml += '</tbody></table></div>';
container.innerHTML = tableHtml;
}
function setIframeHtml(html) {
var iframe = document.getElementById('msg_body_container_iframe');
if (!iframe) return;
iframe.srcdoc = html || '<p>No message content stored.</p>';
}
async function openMessage(messageId) {
try {
var res = await fetch('{{ url_for('main.inbox_message_detail', message_id=0) }}'.replace('/0', '/' + messageId));
if (!res.ok) throw new Error('Failed to load message');
var data = await res.json();
if (!data || data.status !== 'ok') throw new Error('Invalid response');
var meta = data.meta || {};
setText('msg_from', meta.from_address);
setText('msg_backup', meta.backup_software);
setText('msg_type', meta.backup_type);
setText('msg_job', meta.job_name);
setText('msg_overall', meta.overall_status);
setText('msg_customer', meta.customer_name);
setText('msg_received', meta.received_at);
setText('msg_parsed', meta.parsed_at);
setText('msg_overall_message', meta.overall_message);
setIframeHtml(data.body_html);
renderObjects(data.objects);
modal.show();
} catch (e) {
alert('Unable to open message details.');
function setIframeHtml(html) {
var iframe = document.getElementById('msg_body_container_iframe');
if (!iframe) return;
iframe.srcdoc = html || '<p>No message content stored.</p>';
}
async function openMessage(messageId) {
try {
var res = await fetch('{{ url_for('main.inbox_message_detail', message_id=0) }}'.replace('/0', '/' + messageId));
if (!res.ok) throw new Error('Failed to load message');
var data = await res.json();
if (!data || data.status !== 'ok') throw new Error('Invalid response');
var meta = data.meta || {};
setText('msg_from', meta.from_address);
setText('msg_backup', meta.backup_software);
setText('msg_type', meta.backup_type);
setText('msg_job', meta.job_name);
setText('msg_overall', meta.overall_status);
setText('msg_customer', meta.customer_name);
setText('msg_received', meta.received_at);
setText('msg_parsed', meta.parsed_at);
setText('msg_overall_message', meta.overall_message);
setIframeHtml(data.body_html);
renderObjects(data.objects);
modal.show();
} catch (e) {
alert('Unable to open message details.');
}
}
table.addEventListener('click', function (e) {
var tr = e.target.closest('tr.mail-row');
if (!tr) return;
var id = tr.getAttribute('data-message-id');
if (!id) return;
openMessage(id);
});
}
table.addEventListener('click', function (e) {
var tr = e.target.closest('tr.mail-row');
if (!tr) return;
var id = tr.getAttribute('data-message-id');
if (!id) return;
openMessage(id);
});
document.addEventListener('DOMContentLoaded', initAdminAllMailPopup);
})();
</script>