package tui import ( "fmt" "time" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" ) type ModelHeader struct { t time.Time DCUTopVersion string SMIVersion string DriverVersion string } func (mh *ModelHeader) Init() tea.Cmd { mh.t = time.Now() return nil } func (mh *ModelHeader) Update(inputMsg tea.Msg) (tea.Model, tea.Cmd) { switch msg := inputMsg.(type) { case ModelMsg: mh.t = msg.t mh.DCUTopVersion = msg.MyVersion mh.DriverVersion = msg.Version.DriverVersion mh.SMIVersion = msg.Version.SMIVersion return mh, nil case *ModelMsg: mh.t = msg.t mh.DCUTopVersion = msg.MyVersion mh.DriverVersion = msg.Version.DriverVersion mh.SMIVersion = msg.Version.SMIVersion return mh, nil } return mh, nil } func (mh *ModelHeader) View() string { header := fmt.Sprintf("%s (Press h for help or q for quit)\n", mh.t.Format("2006-01-02 15:04:05")) style := lipgloss.NewStyle().Width(40) borderStyle := lipgloss.NewStyle().Border(myBorder, true, true, false, true) hyv := fmt.Sprintf("hytop %s", mh.DCUTopVersion) drv := fmt.Sprintf("Driver Version: %s", mh.DriverVersion) smiv := fmt.Sprintf("SMI Version: %s", mh.SMIVersion) return header + borderStyle.Render(style.Render(hyv)+style.Render(drv)+style.Render(smiv)) + "\n" }