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