feat: support tui
This commit is contained in:
53
tui/layout.go
Normal file
53
tui/layout.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package tui
|
||||
|
||||
import "fmt"
|
||||
|
||||
// --- 辅助函数 ---
|
||||
|
||||
func renderField(label, value string) string {
|
||||
if value == "" {
|
||||
value = "-"
|
||||
}
|
||||
return fieldLabelStyle.Render(label) + fieldValueStyle.Render(value) + "\n"
|
||||
}
|
||||
|
||||
func renderFlowField(flow string) string {
|
||||
if flow == "" {
|
||||
flow = "-"
|
||||
}
|
||||
label := fieldLabelStyle.Render("Flow")
|
||||
if flow != "writing" && flow != "-" && flow != "" {
|
||||
return label + highlightValueStyle.Render(flow) + "\n"
|
||||
}
|
||||
return label + fieldValueStyle.Render(flow) + "\n"
|
||||
}
|
||||
|
||||
func renderHighlightField(label, value string) string {
|
||||
return fieldLabelStyle.Render(label) + highlightValueStyle.Render(value) + "\n"
|
||||
}
|
||||
|
||||
func formatNumber(n int) string {
|
||||
if n == 0 {
|
||||
return "0"
|
||||
}
|
||||
s := fmt.Sprintf("%d", n)
|
||||
result := make([]byte, 0, len(s)+len(s)/3)
|
||||
for i, c := range s {
|
||||
if i > 0 && (len(s)-i)%3 == 0 {
|
||||
result = append(result, ',')
|
||||
}
|
||||
result = append(result, byte(c))
|
||||
}
|
||||
return string(result)
|
||||
}
|
||||
|
||||
func truncate(s string, max int) string {
|
||||
runes := []rune(s)
|
||||
if len(runes) <= max {
|
||||
return s
|
||||
}
|
||||
if max < 4 {
|
||||
return string(runes[:max])
|
||||
}
|
||||
return string(runes[:max-3]) + "..."
|
||||
}
|
||||
Reference in New Issue
Block a user