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)) } }