show informational logs, skipped reasons, and some formatting fixes

This commit is contained in:
Will Greenberg
2025-04-16 14:31:16 -07:00
parent 2ee4ab5082
commit d3f70fee01
4 changed files with 89 additions and 28 deletions

View File

@@ -10,32 +10,75 @@
timeStyle: "long",
dateStyle: "short",
});
const skipped_messages: Map<string, number> = $derived.by(() => {
let map = new Map();
for (const row of report.rows) {
for (const message of row.skipped_message_reasons) {
let count = map.get(message);
if (count === undefined) {
count = 0;
}
map.set(message, count + 1);
}
}
return map;
});
</script>
<p class="text-lg underline">Warnings</p>
<table class="table-auto text-left border">
<thead class="p-2">
<tr class="bg-gray-300">
<th scope="col">Timestamp</th>
<th scope="col">Warning</th>
<th scope="col">Severity</th>
</tr>
</thead>
<tbody>
{#each report.rows as row, row_idx}
{#each row.analysis as analysis}
{@const parsed_date = new Date(analysis.timestamp)}
{@const warnings = analysis.events.filter(e => e.type === EventType.Warning)}
{#each warnings as warning}
{@const severity = ['Low', 'Medium', 'High'][warning.severity]}
{@const severity_class = ['bg-red-200', 'bg-red-400', 'bg-red-600'][warning.severity]}
<tr class="even:bg-gray-400 border-b">
<th class="p-2">{date_formatter.format(parsed_date)}</th>
<td class="p-2">{warning.message}</td>
<td class="p-2 {severity_class}">{severity}</td>
</tr>
<p class="text-lg underline">Warnings and Informational Logs</p>
{#if report.statistics.num_warnings === 0 && report.statistics.num_informational_logs === 0}
<p>Nothing to show!</p>
{:else}
<table class="table-auto text-left border">
<thead class="p-2">
<tr class="bg-gray-300">
<th scope="col">Timestamp</th>
<th scope="col">Warning</th>
<th scope="col">Severity</th>
</tr>
</thead>
<tbody>
{#each report.rows as row, row_idx}
{#each row.analysis as analysis}
{@const parsed_date = new Date(analysis.timestamp)}
{#each analysis.events.filter(e => e !== null) as event}
<tr class="even:bg-gray-200 border-b">
{#if event.type === EventType.Warning}
{@const severity = ['Low', 'Medium', 'High'][event.severity]}
{@const severity_class = ['bg-red-200', 'bg-red-400', 'bg-red-600'][event.severity]}
<th class="p-2">{date_formatter.format(parsed_date)}</th>
<td class="p-2">{event.message}</td>
<td class="p-2 {severity_class}">{severity}</td>
{:else if event.type === EventType.Informational}
<th class="p-2">{date_formatter.format(parsed_date)}</th>
<td class="p-2">{event.message}</td>
<td class="p-2">Info</td>
{/if}
</tr>
{/each}
{/each}
{/each}
{/each}
</tbody>
</table>
</tbody>
</table>
{/if}
{#if report.statistics.num_skipped_packets > 0}
<p class="text-lg underline">Unparsed Messages</p>
<p>These are due to a limitation or bug in Rayhunter's parser, and aren't ususally a problem.</p>
<table class="table-auto text-left border">
<thead class="p-2">
<tr class="bg-gray-300">
<th scope="col"># of messages affected</th>
<th scope="col">Reason/Error</th>
</tr>
</thead>
<tbody>
{#each skipped_messages.entries() as [message, count]}
<tr class="even:bg-gray-200 border-b">
<td>{count}</td>
<td>{message}</td>
</tr>
{/each}
</tbody>
</table>
{/if}

View File

@@ -20,7 +20,7 @@
<p>Error getting analysis report: {entry.analysis_report}</p>
{:else}
{@const metadata: ReportMetadata = entry.analysis_report.metadata}
<div class="flex flex-col p-2 w-3/4">
<div class="flex flex-col pl-2 pr-10 w-full">
{#if entry.analysis_report.rows.length > 0}
<AnalysisTable report={entry.analysis_report} />
{:else}
@@ -28,7 +28,7 @@
{/if}
<div>
<p class="text-lg underline">Metadata</p>
<p><b>Rayhunter version:</b> {metadata.rayhunter.rayhunter_version}</p>
<p>Analysis by Rayhunter version {metadata.rayhunter.rayhunter_version}</p>
<p><b>Device system OS:</b> {metadata.rayhunter.system_os}</p>
<p class="text-lg underline">Analyzers</p>
{#each metadata.analyzers as analyzer}

View File

@@ -39,7 +39,7 @@
</td>
{/if}
</tr>
<tr class="{row_color} border-b {analysis_visible ? '' : 'collapse'}">
<tr class="{normal_row_color} border-b {analysis_visible ? '' : 'collapse'}">
<td class="font-bold p-2 bg-blue-100"></td>
<td class="border-t border-dashed p-2" colspan="7">
<AnalysisView {entry} />