diff --git a/cursor.go b/cursor.go index 6c5a6e8..e518531 100644 --- a/cursor.go +++ b/cursor.go @@ -17,6 +17,16 @@ type GridCursor struct { func (gc *GridCursor) Len() int { return len(gc.filtered) } +func (gc *GridCursor) MemoryUsage() int64 { + var size int64 + size = 0 + for _, c := range gc.filtered { + size += c.MemUsage + } + gc.Reset() + return size +} + func (gc *GridCursor) Selected() *container.Container { idx := gc.Idx() if idx < gc.Len() { diff --git a/grid.go b/grid.go index 655e000..d370e1d 100644 --- a/grid.go +++ b/grid.go @@ -52,6 +52,7 @@ func RedrawRows(clr bool) { y := 1 if config.GetSwitchVal("enableHeader") { header.SetCount(cursor.Len()) + header.SetMemoryUsage(cursor.MemoryUsage()) header.SetFilter(config.GetVal("filterStr")) y += header.Height() } diff --git a/widgets/header.go b/widgets/header.go index a7ab786..e607b84 100644 --- a/widgets/header.go +++ b/widgets/header.go @@ -3,7 +3,7 @@ package widgets import ( "fmt" "time" - + "github.com/bcicen/ctop/cwidgets" ui "github.com/gizak/termui" ) @@ -11,6 +11,7 @@ type CTopHeader struct { Time *ui.Par Count *ui.Par Filter *ui.Par + Mem *ui.Par bg *ui.Par } @@ -19,6 +20,7 @@ func NewCTopHeader() *CTopHeader { Time: headerPar(2, ""), Count: headerPar(24, "-"), Filter: headerPar(40, ""), + Mem: headerPar(70, ""), bg: headerBg(), } } @@ -30,6 +32,7 @@ func (c *CTopHeader) Buffer() ui.Buffer { buf.Merge(c.Time.Buffer()) buf.Merge(c.Count.Buffer()) buf.Merge(c.Filter.Buffer()) + buf.Merge(c.Mem.Buffer()) return buf } @@ -58,6 +61,10 @@ func headerBg() *ui.Par { return bg } +func (c *CTopHeader) SetMemoryUsage(val int64) { + c.Mem.Text = cwidgets.ByteFormat(val) +} + func (c *CTopHeader) SetCount(val int) { c.Count.Text = fmt.Sprintf("%d containers", val) }