async function populateDivs() { const systemStats = await getSystemStats(); const systemStatsDiv = document.getElementById('system-stats'); systemStatsDiv.innerHTML = JSON.stringify(systemStats, null, 2); const analysisReport = await getAnalysisReport(); const analysisReportDiv = document.getElementById('analysis-report'); analysisReportDiv.innerHTML = JSON.stringify(analysisReport, null, 2); const qmdlManifest = await getQmdlManifest(); updateQmdlManifestTable(qmdlManifest); } function updateQmdlManifestTable(manifest) { const table = document.getElementById('qmdl-manifest-table'); const numRows = table.rows.length; for (let i=1; i row.length > 0) .map(row => JSON.parse(row)); } async function getSystemStats() { return JSON.parse(await req('GET', '/api/system-stats')); } async function getQmdlManifest() { const manifest = JSON.parse(await req('GET', '/api/qmdl-manifest')); if (manifest.current_entry) { manifest.current_entry.start_time = new Date(manifest.current_entry.start_time); if (manifest.current_entry.last_message_time === undefined) { manifest.current_entry.last_message_time = "N/A"; } else { manifest.current_entry.last_message_time = new Date(manifest.current_entry.last_message_time); } } for (entry of manifest.entries) { entry.start_time = new Date(entry.start_time); entry.last_message_time = new Date(entry.last_message_time); } // sort them in reverse chronological order manifest.entries.reverse(); return manifest; } async function startRecording() { await req('POST', '/api/start-recording'); populateDivs(); } async function stopRecording() { await req('POST', '/api/stop-recording'); populateDivs(); } async function req(method, url) { const response = await fetch(url, { method: method, }); const body = await response.text(); if (response.status >= 200 && response.status < 300) { return body; } else { throw new Error(body); } }