38 lines
684 B
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)
|
|
}
|
|
}
|