feat: add sleep report page
This commit is contained in:
55
src/pages/report/report-utils.ts
Normal file
55
src/pages/report/report-utils.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
export type ReportTone = "excellent" | "good" | "warning" | "danger";
|
||||
|
||||
export function getSleepLevel(score: number): { label: string; tone: ReportTone } {
|
||||
if (score >= 90) {
|
||||
return { label: "优秀", tone: "excellent" };
|
||||
}
|
||||
|
||||
if (score >= 75) {
|
||||
return { label: "良好", tone: "good" };
|
||||
}
|
||||
|
||||
if (score >= 60) {
|
||||
return { label: "合格", tone: "warning" };
|
||||
}
|
||||
|
||||
return { label: "异常", tone: "danger" };
|
||||
}
|
||||
|
||||
export function getStatusTone(status: string): ReportTone {
|
||||
if (status === "正常" || status === "优秀") {
|
||||
return "excellent";
|
||||
}
|
||||
|
||||
if (status === "良好") {
|
||||
return "good";
|
||||
}
|
||||
|
||||
if (status === "注意" || status === "合格") {
|
||||
return "warning";
|
||||
}
|
||||
|
||||
return "danger";
|
||||
}
|
||||
|
||||
export function pickReportRecord<T>(
|
||||
records: Record<string, Record<string, Record<string, T>>>,
|
||||
dateKey: string,
|
||||
roomKey: string,
|
||||
deviceKey: string
|
||||
): T {
|
||||
const rooms = records[dateKey] ?? {};
|
||||
const devices = rooms[roomKey] ?? {};
|
||||
|
||||
if (deviceKey in devices) {
|
||||
return devices[deviceKey];
|
||||
}
|
||||
|
||||
const fallback = Object.values(devices)[0];
|
||||
|
||||
if (!fallback) {
|
||||
throw new Error("未找到报告数据");
|
||||
}
|
||||
|
||||
return fallback;
|
||||
}
|
||||
Reference in New Issue
Block a user