Merge branch 'worktree-agent-ad7403b5194d75449'
This commit is contained in:
102 files changed
+6538
-1
No files matched your search
@@ -0,0 +1,43 @@
|
||||
# 361 KanbanBoard · 任务看板
|
||||
|
||||
## 用途
|
||||
|
||||
任务看板用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
tasks := []mujica.Task{{ID: "ENG-1", Title: "Plan the release", Status: "todo"}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.KanbanBoard(c, &tasks, mujica.KanbanBoardOptions{Columns: []mujica.KanbanColumn{{Status: "todo"}, {Status: "done", WIP: 2}}, Statuses: statuses})
|
||||
if move, ok := r.Moved(); ok {
|
||||
log.Println("move", move.ID, move.To, move.Index)
|
||||
}
|
||||
if id, ok := r.Opened(); ok {
|
||||
log.Println("open", id)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`tasks *[]Task` 为受控数据。`Columns` 至少一列;`Statuses` 提供其状态;`Members`、`Labels` 解析关联 ID。`Version` 标识原地数据更改;`Disabled` 禁用移动与打开;`Label` 为无障碍名称。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Moved()` 返回已应用的 `KanbanMove{ID, From, To, Index}`;`Opened()` 返回卡片 ID。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦卡片;Enter/Space 打开;Alt+左右跨列;Alt+上下排序;可拖放到卡片之前或列末。
|
||||
|
||||
## 限制
|
||||
|
||||
修改原切片任务时递增 `Version`。列按 `Columns` 顺序排列;`WIP=0` 表示自由容量。网络与持久化由调用方处理。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 362 TaskList · 任务列表
|
||||
|
||||
## 用途
|
||||
|
||||
任务列表用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
tasks := []mujica.Task{{ID: "ENG-1", Title: "Plan the release", Status: "todo"}}
|
||||
filter := mujica.TaskShowAll
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.TaskList(c, tasks, &filter, mujica.TaskListOptions{GroupBy: mujica.TaskGroupStatus, Statuses: statuses})
|
||||
if id, ok := r.Changed(); ok {
|
||||
log.Println("edit", id)
|
||||
}
|
||||
if id, ok := r.Opened(); ok {
|
||||
log.Println("open", id)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`tasks []Task`、`filter *TaskFilter`;`GroupBy` 为无分组、状态或优先级。按状态分组必传 `Statuses`。`Members` 解析负责人;`Today` 为逾期基准;`Version`、`Disabled`、`Label` 控制数据刷新与交互。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 返回编辑任务 ID;`Opened()` 返回打开任务 ID。筛选值直接写入 `filter`。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 在筛选器和任务控件间移动;空格切换完成;Enter 打开;F2 编辑标题。
|
||||
|
||||
## 限制
|
||||
|
||||
可见行虚拟化;外部原地数据修改递增 `Version`。列表需父容器提供有限高度。
|
||||
@@ -0,0 +1,42 @@
|
||||
# 363 TaskItem · 任务行
|
||||
|
||||
## 用途
|
||||
|
||||
任务行用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
task := mujica.Task{ID: "ENG-1", Title: "Plan the release", Status: "todo", Priority: mujica.PriorityHigh}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.TaskItem(c, &task, mujica.TaskItemOptions{})
|
||||
if id, ok := r.Changed(); ok {
|
||||
log.Println("edit", id)
|
||||
}
|
||||
if id, ok := r.Opened(); ok {
|
||||
log.Println("open", id)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`task *Task` 保存标题、完成、优先级、日期、负责人;`Members` 解析负责人;`Today` 默认当前日期;`Disabled` 禁用输入。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 返回完成或标题编辑的任务 ID;`Opened()` 返回打开任务 ID。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 在复选框和标题间移动;空格切换完成;Enter 打开;F2 或双击开始编辑;Enter 保存;Escape 取消。
|
||||
|
||||
## 限制
|
||||
|
||||
任务标题保存时去除首尾空白;空标题保留编辑态。业务字段来自调用方。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 364 TaskDetailPanel · 任务详情侧栏
|
||||
|
||||
## 用途
|
||||
|
||||
任务详情侧栏用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
task := mujica.Task{ID: "ENG-1", Title: "Plan the release", Status: "todo", Priority: mujica.PriorityHigh}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.TaskDetailPanel(c, &task, mujica.TaskDetailPanelOptions{Statuses: statuses, Activity: func() { ui.Text(c, "Release planned") }})
|
||||
if r.Changed() {
|
||||
log.Println("task edited", task.ID)
|
||||
}
|
||||
if r.Closed() {
|
||||
log.Println("close", task.ID)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`task *Task` 为受控任务;`Statuses`、`Members`、`Labels` 为关联数据;`Activity func()` 构建活动记录;`Today`、`Disabled` 控制日期与交互;`Version` 用于外部原地修改任务、成员或子任务。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示字段更改;`Closed()` 表示关闭按钮或 Escape。由调用方控制侧栏显隐。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 在字段间移动;选择框使用方向键和 Enter;Escape 返回关闭事件;子任务 Enter 新增。
|
||||
|
||||
## 限制
|
||||
|
||||
组件是可嵌入的侧栏内容;容器负责布局与滚动。活动记录通过 `Activity` 插槽构建;外部原地更改后递增 `Version`。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 365 SubtaskList · 子任务列表
|
||||
|
||||
## 用途
|
||||
|
||||
子任务列表用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
subtasks := []mujica.Subtask{{ID: "one", Title: "Review", Done: true}, {ID: "two", Title: "Ship"}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.SubtaskList(c, &subtasks, mujica.SubtaskListOptions{}).Changed() {
|
||||
log.Println("subtasks changed", len(subtasks))
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`subs *[]Subtask` 保存子任务;`Disabled` 禁用所有操作;`Label` 为进度与列表名称;`Version` 用于外部原地修改。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示勾选、新增、删除或排序;变更已写入切片。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 移动;Space 切换完成;新增输入框 Enter 提交;Alt+上下排序;拖动握柄排序。
|
||||
|
||||
## 限制
|
||||
|
||||
新增 ID 按 `sub-N` 生成;原有 ID 必须唯一且非空。空白新增内容保留输入。列表虚拟化,最多显示八行高度。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 368 SprintBoard · 迭代看板
|
||||
|
||||
## 用途
|
||||
|
||||
迭代看板用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
tasks := []mujica.Task{{ID: "ENG-1", Title: "Plan the release", Status: "todo"}}
|
||||
sprint := mujica.Sprint{Name: "Release sprint", Goal: "Ship", Start: mujica.Date{Year: 2026, Month: 10, Day: 1}, End: mujica.Date{Year: 2026, Month: 10, Day: 14}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.SprintBoard(c, sprint, &tasks, mujica.SprintBoardOptions{Board: mujica.KanbanBoardOptions{Columns: []mujica.KanbanColumn{{Status: "todo"}, {Status: "done", WIP: 2}}, Statuses: statuses}})
|
||||
if move, ok := r.Moved(); ok {
|
||||
log.Println("move", move.ID, move.To)
|
||||
}
|
||||
if id, ok := r.Opened(); ok {
|
||||
log.Println("open", id)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`Sprint{Name, Goal, Start, End}`;日期必填且顺序有效。`Board` 为看板参数;`Today` 默认当前日期。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
与 `KanbanBoard` 相同;移动更新受控任务并刷新完成数。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
看板卡片支持 Tab、Enter/Space、Alt+方向键与拖放。
|
||||
|
||||
## 限制
|
||||
|
||||
完成度按工作流状态统计,取消状态排除。日期为包含首尾的区间;外部原地修改递增 `Board.Version`。
|
||||
@@ -0,0 +1,46 @@
|
||||
# 369 BurndownChart · 燃尽图
|
||||
|
||||
## 用途
|
||||
|
||||
燃尽图用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
remaining := []float64{40, 32, 25, 18}
|
||||
opts := mujica.BurndownChartOptions{Frame: mujica.ChartFrame{Label: "Release burndown"}, Start: mujica.Date{Year: 2026, Month: 10, Day: 1}, End: mujica.Date{Year: 2026, Month: 10, Day: 14}, Total: 40}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.BurndownChart(c, remaining, opts)
|
||||
if r.Changed() {
|
||||
log.Println("point", r.Point)
|
||||
}
|
||||
if name, ok := r.Toggled(); ok {
|
||||
log.Println("series", name)
|
||||
}
|
||||
if r.Retried() {
|
||||
log.Println("retry")
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`Frame` 提供必填 `Label`、默认 240 DIP `Height`、`Status/Error/Empty`;`Start < End`,`Total > 0`;`Format` 自定义读数;`Version` 刷新原地修改。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 与 `Point` 返回活跃日期索引;`Toggled()` 返回图例名称;`Retried()` 请求重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦图例与图表;Space 切换图例;方向键逐日读取;Home/End 首尾;Escape 清除读数。
|
||||
|
||||
## 限制
|
||||
|
||||
实际值以 `NaN` 表示缺失;数组从 Start 连续对应日期。数据加载与失败由调用方提供;数值须有限且非负。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 370 PriorityIndicator · 优先级指示
|
||||
|
||||
## 用途
|
||||
|
||||
优先级指示用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
priority := mujica.PriorityHigh
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.PriorityIndicator(c, priority, mujica.PriorityIndicatorOptions{})
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`p Priority` 决定等级;`IconOnly` 默认 false,开启后保留无障碍名称。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
静态展示。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
静态展示,通过无障碍名称读取完整等级。
|
||||
|
||||
## 限制
|
||||
|
||||
等级仅接受 None、Low、Medium、High、Urgent。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 371 StatusSelect · 状态选择
|
||||
|
||||
## 用途
|
||||
|
||||
状态选择用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
value := "todo"
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.StatusSelect(c, &value, statuses, mujica.StatusSelectOptions{}).Changed() {
|
||||
log.Println("status", value)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`value *string`、`statuses []WorkflowStatus`;状态 `Group` 为 Backlog、Unstarted、Started、Completed、Canceled;`Disabled` 和 `Label` 控制交互与名称。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示受控状态 ID 更改。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Enter/Space 或上下键打开;上下、Home/End 定位;Enter 确认;Escape 关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
状态 ID 唯一且非空;当前值须属于状态列表。状态按五个工作流阶段分组。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 372 AssigneePicker · 负责人选择
|
||||
|
||||
## 用途
|
||||
|
||||
负责人选择用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
members := []mujica.Member{{ID: "ann", Name: "Ann"}, {ID: "ben", Name: "Ben"}}
|
||||
ids := []string{"ann"}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.AssigneePicker(c, &ids, members, mujica.AssigneePickerOptions{Max: 2}).Changed() {
|
||||
log.Println("assignees", ids)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`ids *[]string`、`members []Member`;`Max=0` 表示自由数量;`Disabled`、`Label` 控制交互与名称;`Version` 用于外部原地修改。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示受控成员 ID 列表更改。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Enter/Space 打开;输入搜索;下键进入选项;Space/Enter 勾选;Backspace 移除最后一项;Escape 关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
成员 ID 唯一且非空;所有已选 ID 必须存在。头像使用姓名回退;网络成员查询由调用方提供。搜索结果按可见行虚拟化。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 373 DueDatePicker · 截止日期选择
|
||||
|
||||
## 用途
|
||||
|
||||
截止日期选择用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
var due mujica.Date
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.DueDatePicker(c, &due, mujica.DueDatePickerOptions{}).Changed() {
|
||||
log.Println("due", due)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`value *Date`;`Today` 默认当前日期;`WeekStart` 默认本地周起始;`Done`、`Disabled`、`Label` 控制展示与交互。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示日期更改;返回 `Input` 为日期编辑器。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 到快捷项、日期输入与日历按钮;Enter 选择;日历方向键移动;Escape 关闭。
|
||||
|
||||
## 限制
|
||||
|
||||
零日期表示清空;Next week 选择下一个周起始日。`Done` 让已完成任务显示普通日期。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 374 LabelManager · 标签管理
|
||||
|
||||
## 用途
|
||||
|
||||
标签管理用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
labels := []mujica.TaskLabel{{ID: "ui", Name: "UI", Color: mujica.EventInfo}}
|
||||
selected := []string{}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.LabelManager(c, &labels, &selected, mujica.LabelManagerOptions{}).Changed() {
|
||||
log.Println("labels changed", len(labels), selected)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`labels *[]TaskLabel`、`selected *[]string`;ID 非空唯一;`Color` 为六种 EventColor;`Disabled`、`Label` 控制交互与名称;`Version` 用于外部原地修改。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示选择、创建、重命名、颜色或删除变更。删除同步移除已选 ID。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 移动;Space 勾选;新增输入 Enter 创建;编辑颜色按钮打开编辑;Enter 保存名称;Escape 结束编辑。
|
||||
|
||||
## 限制
|
||||
|
||||
名称去除首尾空白并按大小写折叠检测重复;颜色选中立即提交。列表虚拟化,最多显示八行高度。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 375 IssueCard · 任务卡片
|
||||
|
||||
## 用途
|
||||
|
||||
任务卡片用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
statuses := []mujica.WorkflowStatus{{ID: "todo", Name: "To do", Group: mujica.StatusUnstarted}, {ID: "done", Name: "Done", Group: mujica.StatusCompleted}}
|
||||
task := mujica.Task{ID: "ENG-1", Title: "Plan the release", Status: "todo", Priority: mujica.PriorityHigh}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.IssueCard(c, task, mujica.IssueCardOptions{Statuses: statuses}).Clicked() {
|
||||
log.Println("open", task.ID)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`task Task`;`Statuses` 解析状态;`Members`、`Labels` 解析关联数据;`Selected` 显示选中底色与边标;`Disabled` 禁用激活。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `Element.Clicked()` 为卡片激活。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦;Enter/Space 激活。
|
||||
|
||||
## 限制
|
||||
|
||||
长标题最多两行;头像组折叠到三个;字段与关联数据由调用方提供。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 376 IssueIdBadge · 任务编号
|
||||
|
||||
## 用途
|
||||
|
||||
任务编号用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
id := "ENG-123"
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.IssueIdBadge(c, id, mujica.IssueIdBadgeOptions{Copyable: true}).Changed() {
|
||||
log.Println("copied", id)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`id string`;`Copyable` 默认 false;`Disabled` 禁用复制。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示复制,剪贴板由组件写入;同时朗读复制结果。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Copyable 开启时 Tab 聚焦,Enter/Space 复制。
|
||||
|
||||
## 限制
|
||||
|
||||
编号匹配大写项目名、连字符、正整数,例如 ENG-123。复制提示保持 1500 ms。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 377 MilestoneProgress · 里程碑进度
|
||||
|
||||
## 用途
|
||||
|
||||
里程碑进度用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
milestone := mujica.Milestone{Title: "Release", Due: mujica.Date{Year: 2026, Month: 10, Day: 14}, Done: 3, Total: 8}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.MilestoneProgress(c, milestone, mujica.MilestoneProgressOptions{})
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`Milestone{Title, Due, Done, Total}`;`Today` 默认当前日期;零 Due 表示无日期。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
静态展示。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
静态展示,进度条通过无障碍名称与百分比读取。
|
||||
|
||||
## 限制
|
||||
|
||||
要求 0 ≤ Done ≤ Total;零总量显示 0%;完成后显示达成标记。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 378 WorkloadView · 成员负载
|
||||
|
||||
## 用途
|
||||
|
||||
成员负载用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
loads := []mujica.Workload{{Member: mujica.Member{ID: "ann", Name: "Ann"}, Assigned: 46, Capacity: 40}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.WorkloadView(c, loads, mujica.WorkloadViewOptions{})
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`loads []Workload`;`Unit` 默认小时;`Label` 为列表名称;`Version` 刷新原地数据更改。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
静态展示。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
静态行通过无障碍名称读取负载与超出量;滚动查看更多成员。
|
||||
|
||||
## 限制
|
||||
|
||||
成员 ID 唯一;Assigned 有限非负,Capacity 有限正数。可见行虚拟化;父容器需提供有限高度;原地修改递增 Version。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 379 TimeTracker · 工时计时
|
||||
|
||||
## 用途
|
||||
|
||||
工时计时用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
var state mujica.TimeTrackerState
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
if mujica.TimeTracker(c, &state, mujica.TimeTrackerOptions{}).Changed() {
|
||||
log.Println("tracked", state.Total(c.Now()))
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`state *TimeTrackerState`;`Now` 固定时钟供测试;`Disabled` 禁用操作;`Label` 为读数名称。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示开始、停止或手动修正;`Entries` 和 `Adjust` 由调用方持有。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 移动;Enter/Space 开始停止;停止后打开修正,编辑时长,Apply 提交。
|
||||
|
||||
## 限制
|
||||
|
||||
只有最后一项可处于运行态;时段按顺序且互不重叠;累计时长非负。隐藏时保留计时状态。
|
||||
@@ -0,0 +1,42 @@
|
||||
# 380 PomodoroTimer · 番茄钟
|
||||
|
||||
## 用途
|
||||
|
||||
番茄钟用于项目管理界面。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
var state mujica.PomodoroState
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
r := mujica.PomodoroTimer(c, &state, mujica.PomodoroTimerOptions{Focus: 25 * time.Minute})
|
||||
if r.Changed() {
|
||||
log.Println("timer", state.Phase(), state.Running())
|
||||
}
|
||||
if phase, ok := r.Finished(); ok {
|
||||
log.Println("finished", phase)
|
||||
}
|
||||
}
|
||||
ui.Render(view, 1000, 700, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`state *PomodoroState`;`Focus/Break/LongBreak` 默认 25/5/15 分钟;`LongEvery` 默认 4;`Now` 固定时钟;`Disabled`、`Label` 控制交互与名称。
|
||||
|
||||
## 状态
|
||||
|
||||
业务状态由调用方持有;主题、密度与文本缩放遵循窗口设置。交互控件提供焦点、悬停和禁用状态;展示组件保留语义名称。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 返回操作事件;`Finished()` 返回自然完成的阶段,调用方可播放提示。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 移动;Enter/Space 开始、暂停、跳过与重置。
|
||||
|
||||
## 限制
|
||||
|
||||
时长为整秒;自然完成后等待用户启动下一阶段。隐藏组件停止请求帧,恢复显示时读取经过时间。
|
||||
Reference in new issue
Block a user