Debug
This commit is contained in:
@@ -42,6 +42,8 @@ let debugPhpLoaded = false;
|
||||
let debugPhpLoading = false;
|
||||
let debugLogsLoaded = false;
|
||||
let debugActiveTab = 'php';
|
||||
let debugLogsRefreshTimer = null;
|
||||
let debugSelectedLogName = '';
|
||||
let phpInfoContainer;
|
||||
let consoleContainer;
|
||||
let logsListContainer;
|
||||
@@ -949,6 +951,9 @@ function ensureDebugDialog() {
|
||||
<div class="debug-logs-list" id="debugLogsList">Keine Logs geladen.</div>
|
||||
<div class="debug-logs-detail" id="debugLogDetail">Bitte Log auswaehlen.</div>
|
||||
</div>
|
||||
<div class="mt-3 flex justify-end">
|
||||
<button type="button" class="btn" id="debugLogsRefresh">Logs aktualisieren</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
document.body.appendChild(debugDialog);
|
||||
@@ -956,6 +961,7 @@ function ensureDebugDialog() {
|
||||
consoleContainer = debugDialog.querySelector('#debugConsoleContent');
|
||||
logsListContainer = debugDialog.querySelector('#debugLogsList');
|
||||
logDetailContainer = debugDialog.querySelector('#debugLogDetail');
|
||||
debugDialog.querySelector('#debugLogsRefresh')?.addEventListener('click', () => loadDebugLogs(true));
|
||||
debugDialog.querySelector('[data-debug-close]')?.addEventListener('click', () => closeDebugDialog());
|
||||
debugDialog.addEventListener('close', () => setDebugTab('php'));
|
||||
debugDialog.querySelectorAll('[data-debug-tab]').forEach(btn => {
|
||||
@@ -975,6 +981,10 @@ function openDebugDialog(tab = 'php') {
|
||||
}
|
||||
|
||||
function closeDebugDialog() {
|
||||
if (debugLogsRefreshTimer) {
|
||||
clearInterval(debugLogsRefreshTimer);
|
||||
debugLogsRefreshTimer = null;
|
||||
}
|
||||
if (debugDialog?.open) debugDialog.close();
|
||||
}
|
||||
|
||||
@@ -993,7 +1003,19 @@ function setDebugTab(tab) {
|
||||
} else if (debugActiveTab === 'console') {
|
||||
renderConsolePanel();
|
||||
} else if (debugActiveTab === 'logs') {
|
||||
loadDebugLogs();
|
||||
loadDebugLogs(true);
|
||||
if (!debugLogsRefreshTimer) {
|
||||
debugLogsRefreshTimer = setInterval(() => {
|
||||
if (debugDialog?.open && debugActiveTab === 'logs') {
|
||||
loadDebugLogs(true);
|
||||
}
|
||||
}, 5000);
|
||||
}
|
||||
} else {
|
||||
if (debugLogsRefreshTimer) {
|
||||
clearInterval(debugLogsRefreshTimer);
|
||||
debugLogsRefreshTimer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1033,10 +1055,12 @@ function renderConsolePanel() {
|
||||
consoleContainer.innerHTML = lines.join('');
|
||||
}
|
||||
|
||||
async function loadDebugLogs() {
|
||||
if (debugLogsLoaded || !logsListContainer || !logDetailContainer) return;
|
||||
async function loadDebugLogs(force = false) {
|
||||
if ((!force && debugLogsLoaded) || !logsListContainer || !logDetailContainer) return;
|
||||
logsListContainer.textContent = 'Lade Logs…';
|
||||
logDetailContainer.textContent = 'Bitte Log auswaehlen.';
|
||||
if (!debugSelectedLogName) {
|
||||
logDetailContainer.textContent = 'Bitte Log auswaehlen.';
|
||||
}
|
||||
try {
|
||||
const res = await apiAction('debug.logs.list', { method: 'GET' });
|
||||
if (!res?.ok) throw new Error(res?.error || 'Logs konnten nicht geladen werden');
|
||||
@@ -1047,17 +1071,31 @@ async function loadDebugLogs() {
|
||||
}
|
||||
logsListContainer.innerHTML = '';
|
||||
items.forEach((item, idx) => {
|
||||
const name = item.name || item.file || `Log ${idx + 1}`;
|
||||
const btn = document.createElement('button');
|
||||
btn.type = 'button';
|
||||
btn.textContent = item.name || item.file || `Log ${idx + 1}`;
|
||||
btn.textContent = name;
|
||||
btn.addEventListener('click', () => {
|
||||
logsListContainer.querySelectorAll('button').forEach(b => b.classList.remove('active'));
|
||||
btn.classList.add('active');
|
||||
loadDebugLogFile(item.name || item.file || '');
|
||||
debugSelectedLogName = name;
|
||||
loadDebugLogFile(name);
|
||||
});
|
||||
logsListContainer.appendChild(btn);
|
||||
if (idx === 0) btn.click();
|
||||
if (debugSelectedLogName && debugSelectedLogName === name) {
|
||||
btn.classList.add('active');
|
||||
}
|
||||
});
|
||||
if (!debugSelectedLogName) {
|
||||
const first = logsListContainer.querySelector('button');
|
||||
if (first) first.click();
|
||||
} else {
|
||||
const active = logsListContainer.querySelector('button.active');
|
||||
if (!active) {
|
||||
const first = logsListContainer.querySelector('button');
|
||||
if (first) first.click();
|
||||
}
|
||||
}
|
||||
debugLogsLoaded = true;
|
||||
} catch (err) {
|
||||
logsListContainer.textContent = err.message || 'Logs konnten nicht geladen werden';
|
||||
|
||||
Reference in New Issue
Block a user