mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
continuing compact widget refactor
This commit is contained in:
parent
60875b179c
commit
eb8237cbb1
@ -1,152 +0,0 @@
|
|||||||
package compact
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/bcicen/ctop/config"
|
|
||||||
"github.com/bcicen/ctop/logging"
|
|
||||||
"github.com/bcicen/ctop/models"
|
|
||||||
ui "github.com/gizak/termui"
|
|
||||||
)
|
|
||||||
|
|
||||||
var log = logging.Init()
|
|
||||||
|
|
||||||
type CompactCol interface {
|
|
||||||
ui.GridBufferer
|
|
||||||
Reset()
|
|
||||||
Highlight()
|
|
||||||
UnHighlight()
|
|
||||||
SetMeta(models.Meta)
|
|
||||||
SetMetrics(models.Metrics)
|
|
||||||
}
|
|
||||||
|
|
||||||
type Compact struct {
|
|
||||||
Bg *RowBg
|
|
||||||
Cols []CompactCol
|
|
||||||
X, Y int
|
|
||||||
Width int
|
|
||||||
Height int
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewCompact(id string) *Compact {
|
|
||||||
// truncate container id
|
|
||||||
if len(id) > 12 {
|
|
||||||
id = id[:12]
|
|
||||||
}
|
|
||||||
row := &Compact{
|
|
||||||
Bg: NewRowBg(),
|
|
||||||
Cols: []CompactCol{
|
|
||||||
NewStatus(),
|
|
||||||
&NameCol{NewTextCol("-")},
|
|
||||||
&CIDCol{NewTextCol(id)},
|
|
||||||
&CPUCol{NewGaugeCol()},
|
|
||||||
&MemCol{NewGaugeCol()},
|
|
||||||
&NetCol{NewTextCol("-")},
|
|
||||||
&IOCol{NewTextCol("-")},
|
|
||||||
&PIDCol{NewTextCol("-")},
|
|
||||||
},
|
|
||||||
X: 1,
|
|
||||||
Height: 1,
|
|
||||||
}
|
|
||||||
return row
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) SetMeta(m models.Meta) {
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.SetMeta(m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) SetMetrics(m models.Metrics) {
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.SetMetrics(m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set gauges, counters, etc. to default unread values
|
|
||||||
func (row *Compact) Reset() {
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.Reset()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) GetHeight() int { return row.Height }
|
|
||||||
func (row *Compact) SetX(x int) { row.X = x }
|
|
||||||
|
|
||||||
func (row *Compact) SetY(y int) {
|
|
||||||
if y == row.Y {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
row.Bg.Y = y
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.SetY(y)
|
|
||||||
}
|
|
||||||
row.Y = y
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) SetWidth(width int) {
|
|
||||||
if width == row.Width {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
x := row.X
|
|
||||||
|
|
||||||
row.Bg.SetX(x + colWidths[0] + 1)
|
|
||||||
row.Bg.SetWidth(width)
|
|
||||||
|
|
||||||
autoWidth := calcWidth(width)
|
|
||||||
for n, w := range row.Cols {
|
|
||||||
// set static width, if provided
|
|
||||||
if colWidths[n] != 0 {
|
|
||||||
w.SetX(x)
|
|
||||||
w.SetWidth(colWidths[n])
|
|
||||||
x += colWidths[n]
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// else use auto width
|
|
||||||
w.SetX(x)
|
|
||||||
w.SetWidth(autoWidth)
|
|
||||||
x += autoWidth + colSpacing
|
|
||||||
}
|
|
||||||
row.Width = width
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) Buffer() ui.Buffer {
|
|
||||||
buf := ui.NewBuffer()
|
|
||||||
buf.Merge(row.Bg.Buffer())
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
buf.Merge(w.Buffer())
|
|
||||||
}
|
|
||||||
return buf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) Highlight() {
|
|
||||||
row.Cols[1].Highlight()
|
|
||||||
if config.GetSwitchVal("fullRowCursor") {
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.Highlight()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (row *Compact) UnHighlight() {
|
|
||||||
row.Cols[1].UnHighlight()
|
|
||||||
if config.GetSwitchVal("fullRowCursor") {
|
|
||||||
for _, w := range row.Cols {
|
|
||||||
w.UnHighlight()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type RowBg struct {
|
|
||||||
*ui.Par
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewRowBg() *RowBg {
|
|
||||||
bg := ui.NewPar("")
|
|
||||||
bg.Height = 1
|
|
||||||
bg.Border = false
|
|
||||||
bg.Bg = ui.ThemeAttr("par.text.bg")
|
|
||||||
return &RowBg{bg}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *RowBg) Highlight() { w.Bg = ui.ThemeAttr("par.text.fg") }
|
|
||||||
func (w *RowBg) UnHighlight() { w.Bg = ui.ThemeAttr("par.text.bg") }
|
|
Loading…
Reference in New Issue
Block a user