diff --git a/src/fgai/dashboard.py b/src/fgai/dashboard.py index 09c328c..390cae1 100644 --- a/src/fgai/dashboard.py +++ b/src/fgai/dashboard.py @@ -304,6 +304,7 @@ async function refresh() { const displayedRawEvents = mcp.status === 'refreshing' ? Number(mcp.previous_raw_events_fetched || mcp.previous_events_fetched || 0) : Number(mcp.raw_events_fetched || mcp.events_fetched || 0); const displayedFetchMode = mcp.fetch_mode || mcp.previous_fetch_mode || configuration.graylog_fetch_mode || 'raw'; const displayedCoverage = mcp.coverage_status || mcp.previous_coverage_status || 'unknown'; + const zeroRawWindow = mcp.status === 'refreshing' ? 'previous completed poll' : 'this poll'; const rawCorrelations = data.cross_source_correlations || []; const correlationsCached = rawCorrelations.length === 0 && uiCache.correlations.length > 0; const correlations = rawCorrelations.length ? rawCorrelations : uiCache.correlations; @@ -348,7 +349,7 @@ async function refresh() { `MCP coverage: ${esc(displayedCoverage)}${mcp.partial_streams ? ` (${esc(mcp.partial_streams)} partial)` : ''}${mcp.truncated_streams ? ` (${esc(mcp.truncated_streams)} truncated)` : ''}${mcp.sample_limited_streams ? ` (${esc(mcp.sample_limited_streams)} sample capped)` : ''}`, configuration.log_source === 'graylog_mcp' && mcp.status === 'no_streams_enabled' ? `No Graylog streams are enabled. Open Settings, Load streams, tick streams, then click Save streams.` : '', configuration.log_source === 'graylog_mcp' && mcp.status !== 'refreshing' && enabledStreams.length > 0 && displayedRawEvents === 0 ? `No raw events fetched from enabled streams. Check poll window, Graylog query, stream permissions, and Diagnostics -> Stream Coverage.` : '', - enabledWithNoRawEvents.length ? `${esc(enabledWithNoRawEvents.length)} enabled stream(s) returned zero raw events in this poll.` : '', + enabledWithNoRawEvents.length ? `${esc(enabledWithNoRawEvents.length)} enabled stream(s) returned zero raw events in ${esc(zeroRawWindow)}.` : '', mcp.coverage_warning ? `${esc(mcp.coverage_warning)}` : '', advisor.status === 'error' ? `Profile advisor error: ${esc(advisor.error || 'unknown error')}` : '' ].filter(Boolean).join('
');