WIP components (as built)

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 15:51:57 -04:00
1 parent 299e5fe720
commit 4b8fdf8df7
71 files changed
+3241 -468

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
# 285 EvalResultTable 评测结果表
## 用途
列出评测用例、得分与通过/失败,顶部显示通过数,每行可查看差异。
## 最小示例
```go
var state mujica.DataTableState[string]
cases := []mujica.EvalCase{{ID: "c1", Name: "Greets by title", Score: 0.98, Passed: true}, {ID: "c2", Name: "Refuses forgery", Score: 0.41}}
view := func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
r := mujica.EvalResultTable(c, &state, cases, mujica.EvalResultTableOptions{})
r.Table.Element.Height(260)
if id, ok := r.Diff(); ok {
_ = id // open expected and actual output side by side
}
}
ui.Render(view, 400, 300, 1)
```
签名:`func EvalResultTable(c *ui.Context, s *DataTableState[string], cases []EvalCase, opts EvalResultTableOptions) EvalResultTableResult`
## 参数
`EvalCase`
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| ID | string | 必填 | 唯一标识。 |
| Name | string | "" | 用例名。 |
| Score | float64 | 0 | 得分;非有限值 panic。 |
| Passed | bool | false | 是否通过。 |
`EvalResultTableOptions`
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| Decimals | int | 0(即 2) | 得分小数位;为负 panic。 |
| Status | DataStatus | DataReady | 加载、失败状态。 |
| Error | string | "" | 失败说明。 |
| Version | int | 0 | 原地修改数据时递增;新切片或长度变化自动刷新。 |
返回 `EvalResultTableResult`,含命名字段 `Element` 与 `Table`(DataTableView)。给 `Element` 一个高度。通过数与数据校验按数据版本缓存。
## 状态
- 结果列为图标加“通过/失败”文字与颜色。
- 顶部“通过 n / m”与比例条。
## 事件
- `Diff()`:要查看差异的用例 ID。
- `Table` 的 `Changed()`、`SortChanged()`。
## 键盘操作
- ↑/↓ 选择行;差异按钮用 Tab 到达,Enter 或 Space 触发。
## 限制
- 差异内容由调用方显示,例如用 DiffViewer。