You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

72 lines
1.7 KiB

package shelves
import (
"fmt"
"strings"
"git.brettb.xyz/goinv/client/internal/ui/style"
"github.com/rivo/tview"
)
const tableHeaderOffset = 1
func (a *Shelves) refresh() {
shelfs := a.getShelfData()
a.shelfTable.Clear()
a.updateShelfTableTitle(len(shelfs))
a.writeTableHeaders()
for i, shelf := range shelfs {
row := i + tableHeaderOffset
// ID, Name, Building, Room
a.shelfTable.SetCell(row, 0,
tview.NewTableCell(fmt.Sprintf("%d", shelf.ID)).
SetExpansion(a.shelfTableExpansions[0]).
SetAlign(tview.AlignLeft))
a.shelfTable.SetCell(row, 1,
tview.NewTableCell(shelf.Name).
SetExpansion(a.shelfTableExpansions[1]).
SetAlign(tview.AlignLeft))
building := ""
if shelf.Building != nil {
building = shelf.Building.Name
}
a.shelfTable.SetCell(row, 2,
tview.NewTableCell(building).
SetExpansion(a.shelfTableExpansions[2]).
SetAlign(tview.AlignLeft))
a.shelfTable.SetCell(row, 3,
tview.NewTableCell(shelf.RoomNumber).
SetExpansion(a.shelfTableExpansions[3]).
SetAlign(tview.AlignLeft))
}
}
func (a *Shelves) updateShelfTableTitle(count int) {
dirtyFlag := ""
if a.shelfList.dirty {
dirtyFlag = "*"
}
title := fmt.Sprintf("[::b]SHELVES [%s%d]", dirtyFlag, count)
a.shelfTable.SetTitle(title)
}
func (a *Shelves) writeTableHeaders() {
for i, headerText := range a.shelfTableHeaders {
header := fmt.Sprintf("[::b]%s", strings.ToUpper(headerText))
a.shelfTable.SetCell(0, i,
tview.NewTableCell(header).
SetExpansion(a.shelfTableExpansions[i]).
SetBackgroundColor(style.TableHeaderBgColor).
SetTextColor(style.TableHeaderFgColor).
SetAlign(tview.AlignLeft).
SetSelectable(false))
}
}