add tests
This commit is contained in:
61
apps/website/lib/display-objects/HealthMetricDisplay.ts
Normal file
61
apps/website/lib/display-objects/HealthMetricDisplay.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* Health Metric Display Object
|
||||
*
|
||||
* Provides formatting and display logic for health metrics.
|
||||
* This display object isolates UI-specific formatting from business logic.
|
||||
*/
|
||||
|
||||
export class HealthMetricDisplay {
|
||||
static formatUptime(uptime?: number): string {
|
||||
if (uptime === undefined || uptime === null) return 'N/A';
|
||||
if (uptime < 0) return 'N/A';
|
||||
|
||||
// Format as percentage with 2 decimal places
|
||||
return `${uptime.toFixed(2)}%`;
|
||||
}
|
||||
|
||||
static formatResponseTime(responseTime?: number): string {
|
||||
if (responseTime === undefined || responseTime === null) return 'N/A';
|
||||
if (responseTime < 0) return 'N/A';
|
||||
|
||||
// Format as milliseconds with appropriate units
|
||||
if (responseTime < 1000) {
|
||||
return `${responseTime.toFixed(0)}ms`;
|
||||
} else if (responseTime < 60000) {
|
||||
return `${(responseTime / 1000).toFixed(2)}s`;
|
||||
} else {
|
||||
return `${(responseTime / 60000).toFixed(2)}m`;
|
||||
}
|
||||
}
|
||||
|
||||
static formatErrorRate(errorRate?: number): string {
|
||||
if (errorRate === undefined || errorRate === null) return 'N/A';
|
||||
if (errorRate < 0) return 'N/A';
|
||||
|
||||
// Format as percentage with 2 decimal places
|
||||
return `${errorRate.toFixed(2)}%`;
|
||||
}
|
||||
|
||||
static formatTimestamp(timestamp: string): string {
|
||||
const date = new Date(timestamp);
|
||||
return date.toLocaleString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
});
|
||||
}
|
||||
|
||||
static formatSuccessRate(checksPassed?: number, checksFailed?: number): string {
|
||||
const passed = checksPassed || 0;
|
||||
const failed = checksFailed || 0;
|
||||
const total = passed + failed;
|
||||
|
||||
if (total === 0) return 'N/A';
|
||||
|
||||
const successRate = (passed / total) * 100;
|
||||
return `${successRate.toFixed(1)}%`;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user