Add record-detail helpers (title picker, cell formatter)
This commit is contained in:
41
src/app/record-detail.test.ts
Normal file
41
src/app/record-detail.test.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { pickRecordTitle, formatCellValue } from "./record-detail";
|
||||
import type { DataRow } from "./table-filters";
|
||||
|
||||
describe("pickRecordTitle", () => {
|
||||
it("prefers 生产订单号", () => {
|
||||
const row: DataRow = { 生产订单号: "PO-1", 总排号: "X", ID: 1 };
|
||||
expect(pickRecordTitle(row)).toBe("PO-1");
|
||||
});
|
||||
it("falls back to 总排号 when 生产订单号 blank", () => {
|
||||
const row: DataRow = { 生产订单号: " ", 总排号: "X-9", ID: 1 };
|
||||
expect(pickRecordTitle(row)).toBe("X-9");
|
||||
});
|
||||
it("falls back to ID when earlier are null/empty", () => {
|
||||
const row: DataRow = { 生产订单号: null, 总排号: "", ID: 42 };
|
||||
expect(pickRecordTitle(row)).toBe("42");
|
||||
});
|
||||
it("returns (未命名) when all blank", () => {
|
||||
const row: DataRow = { 生产订单号: null, 总排号: null, ID: null };
|
||||
expect(pickRecordTitle(row)).toBe("(未命名)");
|
||||
});
|
||||
});
|
||||
|
||||
describe("formatCellValue", () => {
|
||||
it("null -> em dash", () => {
|
||||
expect(formatCellValue(null)).toBe("—");
|
||||
});
|
||||
it("empty / whitespace -> em dash", () => {
|
||||
expect(formatCellValue("")).toBe("—");
|
||||
expect(formatCellValue(" ")).toBe("—");
|
||||
});
|
||||
it("0 is NOT blank", () => {
|
||||
expect(formatCellValue(0)).toBe("0");
|
||||
});
|
||||
it("number stringified", () => {
|
||||
expect(formatCellValue(123)).toBe("123");
|
||||
});
|
||||
it("text preserved", () => {
|
||||
expect(formatCellValue("量程0-1.6MPa")).toBe("量程0-1.6MPa");
|
||||
});
|
||||
});
|
||||
26
src/app/record-detail.ts
Normal file
26
src/app/record-detail.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type { DataRow } from "./table-filters";
|
||||
|
||||
/**
|
||||
* 取记录的友好标识(用于详情 Modal 标题)。
|
||||
* 优先级:生产订单号 > 总排号 > ID > (未命名)。
|
||||
*/
|
||||
export function pickRecordTitle(record: DataRow): string {
|
||||
for (const key of ["生产订单号", "总排号", "ID"]) {
|
||||
const v = record[key];
|
||||
if (v !== null && v !== undefined && String(v).trim() !== "") {
|
||||
return String(v);
|
||||
}
|
||||
}
|
||||
return "(未命名)";
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化单元格值用于详情 Modal 完整展示。
|
||||
* null / 空串 / 纯空白 -> "—";其余 String(value)。0 视为非空(与 isBlank 一致)。
|
||||
*/
|
||||
export function formatCellValue(value: string | number | null): string {
|
||||
if (value === null || value === undefined) return "—";
|
||||
const s = String(value);
|
||||
if (s.trim() === "") return "—";
|
||||
return s;
|
||||
}
|
||||
Reference in New Issue
Block a user