diff --git a/config/columns.go b/config/columns.go index da9f7fa..fb539d8 100644 --- a/config/columns.go +++ b/config/columns.go @@ -6,47 +6,67 @@ import ( // defaults var defaultColumns = []Column{ - Column{ + { Name: "status", Label: "Status Indicator", Enabled: true, }, - Column{ + { Name: "name", Label: "Container Name", Enabled: true, }, - Column{ + { Name: "id", Label: "Container ID", Enabled: true, }, - Column{ + { + Name: "image", + Label: "Image name", + Enabled: false, + }, + { + Name: "ports", + Label: "Exposed ports", + Enabled: false, + }, + { + Name: "IPs", + Label: "Exposed IPs", + Enabled: false, + }, + { + Name: "created", + Label: "Date created", + Enabled: false, + }, + { Name: "cpu", Label: "CPU Usage", Enabled: true, }, - Column{ + { Name: "cpus", Label: "CPU Usage (% of system total)", Enabled: false, }, - Column{ + { Name: "mem", Label: "Memory Usage", Enabled: true, }, - Column{ + { Name: "net", Label: "Network RX/TX", Enabled: true, }, - Column{ + { Name: "io", Label: "Disk IO Read/Write", Enabled: true, }, - Column{ + { Name: "pids", Label: "Container PID Count", Enabled: true, diff --git a/cwidgets/compact/column.go b/cwidgets/compact/column.go index 4ff0793..7558dd9 100644 --- a/cwidgets/compact/column.go +++ b/cwidgets/compact/column.go @@ -9,15 +9,19 @@ import ( var ( allCols = map[string]NewCompactColFn{ - "status": NewStatus, - "name": NewNameCol, - "id": NewCIDCol, - "cpu": NewCPUCol, - "cpus": NewCpuScaledCol, - "mem": NewMemCol, - "net": NewNetCol, - "io": NewIOCol, - "pids": NewPIDCol, + "status": NewStatus, + "name": NewNameCol, + "id": NewCIDCol, + "image": NewImageCol, + "ports": NewPortsCol, + "IPs": NewIpsCol, + "created": NewCreatedCol, + "cpu": NewCPUCol, + "cpus": NewCpuScaledCol, + "mem": NewMemCol, + "net": NewNetCol, + "io": NewIOCol, + "pids": NewPIDCol, } ) diff --git a/cwidgets/compact/text.go b/cwidgets/compact/text.go index ef2642b..5b3432b 100644 --- a/cwidgets/compact/text.go +++ b/cwidgets/compact/text.go @@ -9,32 +9,44 @@ import ( ui "github.com/gizak/termui" ) -type NameCol struct { +// Column that shows container's meta property i.e. name, id, image tc. +type MetaCol struct { *TextCol + metaName string +} + +func (w *MetaCol) SetMeta(m models.Meta) { + w.setText(m.Get(w.metaName)) } func NewNameCol() CompactCol { - c := &NameCol{NewTextCol("NAME")} + c := &MetaCol{NewTextCol("NAME"), "name"} c.fWidth = 30 return c } -func (w *NameCol) SetMeta(m models.Meta) { - w.setText(m.Get("name")) -} - -type CIDCol struct { - *TextCol -} - func NewCIDCol() CompactCol { - c := &CIDCol{NewTextCol("CID")} + c := &MetaCol{NewTextCol("CID"), "id"} c.fWidth = 12 return c } -func (w *CIDCol) SetMeta(m models.Meta) { - w.setText(m.Get("id")) +func NewImageCol() CompactCol { + return &MetaCol{NewTextCol("IMAGE"), "image"} +} + +func NewPortsCol() CompactCol { + return &MetaCol{NewTextCol("PORTS"), "ports"} +} + +func NewIpsCol() CompactCol { + return &MetaCol{NewTextCol("IPs"), "IPs"} +} + +func NewCreatedCol() CompactCol { + c := &MetaCol{NewTextCol("CREATED"), "created"} + c.fWidth = 19 // Year will be stripped e.g. "Thu Nov 26 07:44:03" without 2020 at end + return c } type NetCol struct {