From b73bd7cecf91a7b5fd3abb643570240c0944475b Mon Sep 17 00:00:00 2001 From: Bruno Meneguello <1322552+bkmeneguello@users.noreply.github.com> Date: Fri, 8 Nov 2019 09:58:30 -0300 Subject: [PATCH] Move mark logic to Table --- internal/resource/list.go | 19 ------------------- internal/ui/table.go | 17 ++++++++++++++--- internal/views/resource.go | 3 +-- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/internal/resource/list.go b/internal/resource/list.go index 0fa03995..cf8c2620 100644 --- a/internal/resource/list.go +++ b/internal/resource/list.go @@ -66,7 +66,6 @@ type ( Rows RowEvents NumCols map[string]bool Namespace string - Marks map[string]bool } // List protocol to display and update a collection of resources @@ -85,7 +84,6 @@ type ( SetFieldSelector(string) SetLabelSelector(string) HasSelectors() bool - ToggleMark(sk string) } // Columnar tracks resources that can be diplayed in a tabular fashion. @@ -129,15 +127,9 @@ type ( verbs int resource Resource cache RowEvents - marks map[string]bool } ) -// IsMarked checks if key is marked. -func (t *TableData) IsMarked(sk string) bool { - return t.Marks[sk] -} - func newRowEvent(a watch.EventType, f, d Row) *RowEvent { return &RowEvent{Action: a, Fields: f, Deltas: d} } @@ -150,7 +142,6 @@ func NewList(ns, name string, res Resource, verbs int) *list { verbs: verbs, resource: res, cache: RowEvents{}, - marks: make(map[string]bool), } } @@ -241,7 +232,6 @@ func (l *list) Data() TableData { Rows: l.cache, NumCols: l.resource.NumCols(l.namespace), Namespace: l.namespace, - Marks: l.marks, } } @@ -353,19 +343,10 @@ func (l *list) ensureDeletes(kk []string) { } if !found { delete(l.cache, k) - l.removeMark(k) } } } -func (l *list) removeMark(sk string) { - delete(l.marks, sk) -} - -func (l *list) ToggleMark(sk string) { - l.marks[sk] = !l.marks[sk] -} - // Helpers... func computeDeltas(evt *RowEvent, newRow, deltas Row) watch.EventType { diff --git a/internal/ui/table.go b/internal/ui/table.go index 5815acb0..4c2e0489 100644 --- a/internal/ui/table.go +++ b/internal/ui/table.go @@ -42,6 +42,7 @@ type Table struct { selectedRow int selectedFn func(string) string selListeners []SelectedRowFunc + marks map[string]bool } // NewTable returns a new table view. @@ -53,6 +54,7 @@ func NewTable(title string, styles *config.Styles) *Table { cmdBuff: NewCmdBuff('/', FilterBuff), baseTitle: title, sortCol: SortColumn{0, 0, true}, + marks: make(map[string]bool), } v.SetFixed(1, 0) @@ -171,9 +173,9 @@ func (v *Table) GetSelectedItem() string { // GetSelectedItems return currently marked or selected items names. func (v *Table) GetSelectedItems() []string { - if len(v.data.Marks) > 0 { + if len(v.marks) > 0 { var items []string - for item, marked := range v.data.Marks { + for item, marked := range v.marks { if marked { items = append(items, item) } @@ -332,7 +334,7 @@ func (v *Table) buildRow(row int, data resource.TableData, sk string, pads MaxyP if v.colorerFn != nil { f = v.colorerFn } - m := data.IsMarked(sk) + m := v.isMarked(sk) for col, field := range data.Rows[sk].Fields { header := data.Header[col] field, align := v.formatCell(data.NumCols[header], header, field+Deltas(data.Rows[sk].Deltas[col], field), pads[col]) @@ -540,3 +542,12 @@ func (v *Table) SortInvertCmd(evt *tcell.EventKey) *tcell.EventKey { return nil } + +// ToggleMark toggles marked row +func (v *Table) ToggleMark() { + v.marks[v.GetSelectedItem()] = !v.marks[v.GetSelectedItem()] +} + +func (v *Table) isMarked(item string) bool { + return v.marks[item] +} diff --git a/internal/views/resource.go b/internal/views/resource.go index 5da2b784..929bd69a 100644 --- a/internal/views/resource.go +++ b/internal/views/resource.go @@ -225,8 +225,7 @@ func (v *resourceView) markCmd(evt *tcell.EventKey) *tcell.EventKey { return evt } - sel := v.masterPage().GetSelectedItem() - v.list.ToggleMark(sel) + v.masterPage().ToggleMark() v.refresh() v.app.Draw() return nil