diff --git a/src/apps/metrics-systems/components/MetricsDashboard.tsx b/src/apps/metrics-systems/components/MetricsDashboard.tsx index a7b56c7..119b2d6 100644 --- a/src/apps/metrics-systems/components/MetricsDashboard.tsx +++ b/src/apps/metrics-systems/components/MetricsDashboard.tsx @@ -291,10 +291,34 @@ const MetricsDashboard = ({ onConnectionStateChange, activeTab = 'system', onTab } const getRequestSuccessCountData = () => { - if (!portraitTimeseries?.series) return [] + if (!portraitTimeseries?.series) { + // Return default zero data points for the last 30 minutes + const now = new Date() + const points = [] + for (let i = 29; i >= 0; i--) { + const time = new Date(now.getTime() - i * 30 * 1000) // 30-second intervals + points.push({ + time: formatTimestamp(time.toISOString()), + count: 0 + }) + } + return points + } const successSeries = portraitTimeseries.series.find(s => s.metric_name === 'request_success_count') - if (!successSeries?.values?.length) return [] + if (!successSeries?.values?.length) { + // Return default zero data points for the current time range + const now = new Date() + const points = [] + for (let i = 29; i >= 0; i--) { + const time = new Date(now.getTime() - i * 30 * 1000) // 30-second intervals + points.push({ + time: formatTimestamp(time.toISOString()), + count: 0 + }) + } + return points + } return successSeries.values.map(v => ({ time: formatTimestamp(v.timestamp), @@ -303,10 +327,34 @@ const MetricsDashboard = ({ onConnectionStateChange, activeTab = 'system', onTab } const getRequestFailureCountData = () => { - if (!portraitTimeseries?.series) return [] + if (!portraitTimeseries?.series) { + // Return default zero data points for the last 30 minutes + const now = new Date() + const points = [] + for (let i = 29; i >= 0; i--) { + const time = new Date(now.getTime() - i * 30 * 1000) // 30-second intervals + points.push({ + time: formatTimestamp(time.toISOString()), + count: 0 + }) + } + return points + } const failureSeries = portraitTimeseries.series.find(s => s.metric_name === 'request_failure_count') - if (!failureSeries?.values?.length) return [] + if (!failureSeries?.values?.length) { + // Return default zero data points for the current time range + const now = new Date() + const points = [] + for (let i = 29; i >= 0; i--) { + const time = new Date(now.getTime() - i * 30 * 1000) // 30-second intervals + points.push({ + time: formatTimestamp(time.toISOString()), + count: 0 + }) + } + return points + } return failureSeries.values.map(v => ({ time: formatTimestamp(v.timestamp), @@ -601,47 +649,39 @@ const MetricsDashboard = ({ onConnectionStateChange, activeTab = 'system', onTab {/* Request Success Count */}

Request Success Count

- {getRequestSuccessCountData().length > 0 ? ( - - - - - - - [`${Number(value).toFixed(0)}`, 'Success Count']} - /> - - - - - ) : ( - - )} + + + + + + + [`${Number(value).toFixed(0)}`, 'Success Count']} + /> + + + +
{/* Request Error Count */}

Request Error Count

- {getRequestFailureCountData().length > 0 ? ( - - - - - - - [`${Number(value).toFixed(0)}`, 'Error Count']} - /> - - - - - ) : ( - - )} + + + + + + + [`${Number(value).toFixed(0)}`, 'Error Count']} + /> + + + +
{/* Combined Portrait Metrics */}