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.
 

97 lines
2.3 KiB

package assets
import (
"fmt"
"strings"
"git.brettb.xyz/goinv/client/internal/ui/style"
"github.com/rivo/tview"
)
const tableHeaderOffset = 1
func (a *Assets) refresh() {
assets := a.getAssetData()
a.assetTable.Clear()
a.updateAssetTableTitle(len(assets))
a.writeTableHeaders()
for i, asset := range assets {
row := i + tableHeaderOffset
a.assetTable.SetCell(row, 0,
tview.NewTableCell(fmt.Sprintf("%d", asset.ID)).
SetExpansion(a.assetTableExpansions[0]).
SetAlign(tview.AlignLeft))
a.assetTable.SetCell(row, 1,
tview.NewTableCell(asset.Name).
SetExpansion(a.assetTableExpansions[1]).
SetAlign(tview.AlignLeft))
quantity := ""
if asset.Quantity < 0 {
quantity = "DNI"
} else {
quantity = fmt.Sprintf("%d", asset.Quantity)
}
a.assetTable.SetCell(row, 2,
tview.NewTableCell(quantity).
SetExpansion(a.assetTableExpansions[2]).
SetAlign(tview.AlignLeft))
shelfLocation := ""
if asset.ShelfLocation != nil {
shelfLocation = asset.ShelfLocation.Name
}
a.assetTable.SetCell(row, 3,
tview.NewTableCell(shelfLocation).
SetExpansion(a.assetTableExpansions[3]).
SetAlign(tview.AlignLeft))
a.assetTable.SetCell(row, 4,
tview.NewTableCell(asset.Manufacturer).
SetExpansion(a.assetTableExpansions[4]).
SetAlign(tview.AlignLeft))
a.assetTable.SetCell(row, 5,
tview.NewTableCell(asset.ModelName).
SetExpansion(a.assetTableExpansions[5]).
SetAlign(tview.AlignLeft))
category := ""
if asset.Category != nil {
category = asset.Category.Name
}
a.assetTable.SetCell(row, 6,
tview.NewTableCell(category).
SetExpansion(a.assetTableExpansions[6]).
SetAlign(tview.AlignLeft))
}
}
func (a *Assets) updateAssetTableTitle(count int) {
dirtyFlag := ""
if a.assetList.dirty {
dirtyFlag = "*"
}
title := fmt.Sprintf("[::b]ASSETS [%s%d]", dirtyFlag, count)
a.assetTable.SetTitle(title)
}
func (a *Assets) writeTableHeaders() {
for i, headerText := range a.assetTableHeaders {
header := fmt.Sprintf("[::b]%s", strings.ToUpper(headerText))
a.assetTable.SetCell(0, i,
tview.NewTableCell(header).
SetExpansion(a.assetTableExpansions[i]).
SetBackgroundColor(style.TableHeaderBgColor).
SetTextColor(style.TableHeaderFgColor).
SetAlign(tview.AlignLeft).
SetSelectable(false))
}
}