From ad1aadd0a72327547ca5edcf9c8dd02338267ffd Mon Sep 17 00:00:00 2001 From: derailed Date: Fri, 21 Jun 2019 17:48:13 -0600 Subject: [PATCH] refact table --- internal/views/registrar.go | 109 ++++++++++++++++++------------------ internal/views/table.go | 31 ++++++---- 2 files changed, 76 insertions(+), 64 deletions(-) diff --git a/internal/views/registrar.go b/internal/views/registrar.go index 0762f857..14a3960b 100644 --- a/internal/views/registrar.go +++ b/internal/views/registrar.go @@ -129,7 +129,7 @@ func resourceViews(c k8s.Connection, m map[string]resCmd) { } } -func coreRes(m map[string]resCmd) { +func primRes(m map[string]resCmd) { m["cm"] = resCmd{ title: "ConfigMaps", crdCmd: crdCmd{ @@ -138,6 +138,61 @@ func coreRes(m map[string]resCmd) { viewFn: newResourceView, listFn: resource.NewConfigMapList, } + m["no"] = resCmd{ + title: "Nodes", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newNodeView, + listFn: resource.NewNodeList, + colorerFn: nsColorer, + } + m["ns"] = resCmd{ + title: "Namespaces", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newNamespaceView, + listFn: resource.NewNamespaceList, + colorerFn: nsColorer, + } + m["po"] = resCmd{ + title: "Pods", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newPodView, + listFn: resource.NewPodList, + colorerFn: podColorer, + } + m["sa"] = resCmd{ + title: "ServiceAccounts", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newResourceView, + listFn: resource.NewServiceAccountList, + enterFn: showSAPolicy, + } + m["sec"] = resCmd{ + title: "Secrets", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newSecretView, + listFn: resource.NewSecretList, + } + m["svc"] = resCmd{ + title: "Services", + crdCmd: crdCmd{ + api: "", + }, + viewFn: newSvcView, + listFn: resource.NewServiceList, + } +} + +func coreRes(m map[string]resCmd) { m["ctx"] = resCmd{ title: "Contexts", crdCmd: crdCmd{ @@ -173,33 +228,6 @@ func coreRes(m map[string]resCmd) { listFn: resource.NewEventList, colorerFn: evColorer, } - m["no"] = resCmd{ - title: "Nodes", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newNodeView, - listFn: resource.NewNodeList, - colorerFn: nsColorer, - } - m["ns"] = resCmd{ - title: "Namespaces", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newNamespaceView, - listFn: resource.NewNamespaceList, - colorerFn: nsColorer, - } - m["po"] = resCmd{ - title: "Pods", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newPodView, - listFn: resource.NewPodList, - colorerFn: podColorer, - } m["pv"] = resCmd{ title: "PersistentVolumes", crdCmd: crdCmd{ @@ -227,31 +255,6 @@ func coreRes(m map[string]resCmd) { listFn: resource.NewReplicationControllerList, colorerFn: rsColorer, } - m["sa"] = resCmd{ - title: "ServiceAccounts", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newResourceView, - listFn: resource.NewServiceAccountList, - enterFn: showSAPolicy, - } - m["sec"] = resCmd{ - title: "Secrets", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newSecretView, - listFn: resource.NewSecretList, - } - m["svc"] = resCmd{ - title: "Services", - crdCmd: crdCmd{ - api: "", - }, - viewFn: newSvcView, - listFn: resource.NewServiceList, - } } func custRes(m map[string]resCmd) { diff --git a/internal/views/table.go b/internal/views/table.go index 82f6c030..5397ca4e 100644 --- a/internal/views/table.go +++ b/internal/views/table.go @@ -285,15 +285,7 @@ func (v *tableView) filtered() resource.TableData { return filtered } -func (v *tableView) doUpdate(data resource.TableData) { - v.currentNS = data.Namespace - if v.currentNS == resource.AllNamespaces && v.currentNS != "*" { - v.actions[KeyShiftP] = newKeyAction("Sort Namespace", v.sortColCmd(0), true) - } else { - delete(v.actions, KeyShiftP) - } - v.Clear() - +func (v *tableView) adjustSorter(data resource.TableData) { // Going from namespace to non namespace or vice-versa? switch { case v.sortCol.colCount == 0: @@ -306,9 +298,19 @@ func (v *tableView) doUpdate(data resource.TableData) { if v.sortCol.index < 0 { v.sortCol.index = 0 } +} + +func (v *tableView) doUpdate(data resource.TableData) { + v.currentNS = data.Namespace + if v.currentNS == resource.AllNamespaces && v.currentNS != "*" { + v.actions[KeyShiftP] = newKeyAction("Sort Namespace", v.sortColCmd(0), true) + } else { + delete(v.actions, KeyShiftP) + } + v.Clear() + + v.adjustSorter(data) - pads := make(maxyPad, len(data.Header)) - computeMaxColumns(pads, v.sortCol.index, data) var row int fg := config.AsColor(v.app.styles.Table().Header.FgColor) bg := config.AsColor(v.app.styles.Table().Header.BgColor) @@ -320,6 +322,13 @@ func (v *tableView) doUpdate(data resource.TableData) { } row++ + v.sort(data, row) +} + +func (v *tableView) sort(data resource.TableData, row int) { + pads := make(maxyPad, len(data.Header)) + computeMaxColumns(pads, v.sortCol.index, data) + sortFn := defaultSort if v.sortFn != nil { sortFn = v.sortFn