// 服务器管理共享纯函数/常量 // Logan.Li
import { Badge } from '@/components/ui/badge';
import type { Server as ServerType } from '@/types';
import type { JsonData } from '@/types/common';
// 解析标签:后端 tags 可能是 JSON 字符串(JSON数组/对象)、逗号分隔字符串或数组 // Logan.Li
export function getTags(server: JsonData): string[] {
const tags = server.tags;
if (!tags) return [];
if (Array.isArray(tags)) return tags;
try {
const parsed = JSON.parse(tags);
if (Array.isArray(parsed)) return parsed;
// JSON 对象 → key:value 格式展示(如 project:prod) // Logan.Li
if (typeof parsed === 'object' && parsed !== null) {
return Object.entries(parsed).map(([k, v]) => `${k}:${String(v)}`);
}
return [String(parsed)];
} catch {
return String(tags)
.split(',')
.map((t: string) => t.trim())
.filter(Boolean);
}
}
// 服务器状态徽章 // Logan.Li
export function getStatusBadge(status: ServerType['status']) {
switch (status) {
case 'running':
return (
运行中
);
case 'stopped':
return (
已停止
);
case 'maintenance':
return (
维护中
);
case 'offline':
return (
离线
);
default:
return null;
}
}
// 使用率进度条颜色(CPU/内存通用)— 绿色<60% 黄色60-80% 红色>80% // Logan.Li
export function getUsageColor(usage: number): string {
return usage > 80 ? 'bg-red-400' : usage > 60 ? 'bg-amber-400' : 'bg-emerald-400';
}