| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package diagview
- import (
- "fmt"
- "strings"
- "fbtop/internal/shared"
- "charm.land/lipgloss/v2"
- )
- var (
- errorStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("196")).Bold(true)
- warningStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("214"))
- idleStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("245"))
- okStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("42"))
- panelStyle = lipgloss.NewStyle().Border(lipgloss.NormalBorder(), true).Padding(0, 1)
- titleStyle = lipgloss.NewStyle().Bold(true)
- hintStyle = lipgloss.NewStyle().Faint(true).Italic(true)
- )
- func Render(diags []shared.Diag, width int) string {
- if len(diags) == 0 {
- ok := okStyle.Render("● No issues detected — pipeline is healthy")
- return panelStyle.Width(width - 2).Render(
- titleStyle.Render("Diagnostics") + "\n" + ok,
- )
- }
- var b strings.Builder
- b.WriteString(titleStyle.Render("Diagnostics"))
- b.WriteString("\n")
- for _, d := range diags {
- var badge string
- switch d.Level {
- case shared.HealthError:
- badge = errorStyle.Render("✖ ERROR")
- case shared.HealthWarning:
- badge = warningStyle.Render("▲ WARN ")
- case shared.HealthIdle:
- badge = idleStyle.Render("○ IDLE ")
- default:
- badge = " OK "
- }
- comp := ""
- if d.CompID != "" {
- comp = fmt.Sprintf(" [%s]", d.CompID)
- }
- b.WriteString(fmt.Sprintf(" %s %s%s\n", badge, d.Message, comp))
- if d.Hint != "" {
- b.WriteString(fmt.Sprintf(" %s\n", hintStyle.Render("💡 "+d.Hint)))
- }
- }
- return panelStyle.Width(width - 2).Render(b.String())
- }
|