-
Notifications
You must be signed in to change notification settings - Fork 2
ObjectGrid 单元格类型渲染优化 — select Badge / 日期格式化 / Boolean 视觉化 #822
Copy link
Copy link
Closed
Labels
Description
背景
本 issue 为 #820 的遗留工作。#820 的 6 大模块中,第 4️⃣ 模块(ObjectGrid 单元格渲染器)是目前唯一完全未完成的部分,其余模块已在 PR #821、#805、#817、#799 等中基本落地。
现状问题
inferColumnType()自动推断类型后的渲染缺少视觉标识——select/status 类字段显示纯文本- 日期字段直接输出 ISO 字符串(如
2026-02-26T03:09:07.458Z),用户无法快速识别时间含义 - Boolean 字段无视觉渲染,显示
true/false原始值
涉及文件
packages/plugin-grid/src/ObjectGrid.tsx—inferColumnType()和列生成逻辑packages/fields/src/formatters.ts—formatDate()等格式化函数packages/fields/src/widgets/— 字段级渲染组件packages/fields/src/cell-renderers.ts—getCellRenderer()函数
具体改进
1. select/status 类型 Badge 渲染
- 当
field.type为select或status时,getCellRenderer()返回<Badge>组件 - 支持从
field.options映射颜色(如{ value: 'In Progress', color: 'blue' }→<Badge variant="blue">) - 未配置颜色时使用默认 muted 样式的 Badge
- Priority 字段支持语义配色(Critical → red, High → orange, Medium → yellow, Low → gray)
2. 日期类型格式化
-
formatDate()在packages/fields/src/formatters.ts中增加相对时间模式:- 今天 →
"Today" - 昨天 →
"Yesterday" - 7 天内 →
"3 days ago" - 逾期 → 红色文字
"Overdue 2d" - 超过 7 天 →
"Feb 26, 2026"人类可读格式
- 今天 →
- ObjectGrid
inferColumnType()推断为 date 类型时默认启用人类可读格式 - 保留 ISO 格式作为 hover tooltip 显示完整时间
3. Boolean 类型视觉渲染
- Boolean 字段渲染为
<Checkbox disabled checked={value} />或✓/—图标 - 支持
is_completed等布尔字段的语义化渲染(绿色圆形指示器) - null/undefined 值显示为空白或
—
4. 表头样式统一(已在 #821 中部分完成,需验证)
- 确认
ObjectGrid表头行使用text-[11px] font-semibold uppercase tracking-wider text-muted-foreground/70 bg-muted/5 - 如未完成,补齐表头样式
测试要求
- 为
getCellRenderer()的 select/date/boolean 类型新增单元测试 - 为
formatDate()相对时间模式新增测试用例(含 edge case:null、未来日期、逾期日期) -
pnpm test全量通过
验收标准
- ObjectGrid 中 select/status 字段显示为带颜色的 Badge
- 日期字段显示为人类可读格式,逾期用红色标记
- Boolean 字段显示为 Checkbox 或图标
- 全部测试通过
- ROADMAP.md 更新 ObjectUI 平台级界面风格与交互一致性优化 #820 第 4️⃣ 模块为已完成
关联
- Parent: ObjectUI 平台级界面风格与交互一致性优化 #820 ObjectUI 平台级界面风格与交互一致性优化
Reactions are currently unavailable