39 lines
940 B
Go
39 lines
940 B
Go
package dashboard
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/LazyBachelor/LazyPM/pkg/tui/styles"
|
|
"github.com/charmbracelet/bubbles/list"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
type IssueListDelegate struct{}
|
|
|
|
func (d IssueListDelegate) Height() int { return 2 }
|
|
func (d IssueListDelegate) Spacing() int { return 1 }
|
|
func (d IssueListDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd { return nil }
|
|
func (d IssueListDelegate) Render(w io.Writer, m list.Model, index int, listItem list.Item) {
|
|
issue, ok := listItem.(ListIssue)
|
|
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
id := issue.ID
|
|
title := issue.Title()
|
|
description := issue.Description()
|
|
|
|
str := fmt.Sprintf("ID: %s\t%s\nDescription:\t%s", id, title, description)
|
|
|
|
fn := styles.ItemStyle.Render
|
|
if index == m.Index() {
|
|
fn = func(s ...string) string {
|
|
return styles.SelectedItemStyle.Render(s...)
|
|
}
|
|
}
|
|
|
|
fmt.Fprint(w, fn(str))
|
|
}
|