k9s/internal/model/table.go

38 lines
684 B
Go

package model
import (
"github.com/derailed/k9s/internal/resource"
)
// TableListener tracks tabular data changes.
type TableListener interface {
Refreshed(resource.TableData)
RowAdded(resource.RowEvent)
RowUpdated(resource.RowEvent)
RowDeleted(resource.RowEvent)
}
// Table represents tabular data.
type Table struct {
data resource.TableData
listeners []TableListener
}
// NewTable returns a new table.
func NewTable() *Table {
return &Table{}
}
// Load the initial tabular data
func (t *Table) Load(data resource.TableData) {
t.data = data
t.fireTableRefreshed()
}
func (t *Table) fireTableRefreshed() {
for _, l := range t.listeners {
l.Refreshed(t.data)
}
}