mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
render global header independent of grid rows
This commit is contained in:
parent
3c28137873
commit
0e8480ce5d
23
grid.go
23
grid.go
@ -76,9 +76,12 @@ func (g *Grid) redrawRows() {
|
||||
|
||||
// build layout
|
||||
if config.GetSwitchVal("enableHeader") {
|
||||
ui.Body.Y = g.header.Height()
|
||||
g.header.SetCount(len(g.containers))
|
||||
g.header.SetFilter(config.GetVal("filterStr"))
|
||||
ui.Body.AddRows(g.header.Row())
|
||||
g.header.Render()
|
||||
} else {
|
||||
ui.Body.Y = 0
|
||||
}
|
||||
ui.Body.AddRows(fieldHeader())
|
||||
for _, c := range g.containers {
|
||||
@ -100,10 +103,7 @@ func (g *Grid) redrawRows() {
|
||||
func resizeIndicator() {
|
||||
xShift := 1
|
||||
toWidth := 3
|
||||
for i, r := range ui.Body.Rows {
|
||||
if config.GetSwitchVal("enableHeader") && i == 0 {
|
||||
continue
|
||||
}
|
||||
for _, r := range ui.Body.Rows {
|
||||
wDiff := r.Cols[0].Width - (toWidth + xShift)
|
||||
// set indicator x, width
|
||||
r.Cols[0].SetX(xShift)
|
||||
@ -137,14 +137,10 @@ func headerPar(s string) *ui.Par {
|
||||
return p
|
||||
}
|
||||
|
||||
func ResetView() {
|
||||
ui.DefaultEvtStream.ResetHandlers()
|
||||
ui.Clear()
|
||||
}
|
||||
|
||||
func (g *Grid) ExpandView() {
|
||||
ResetView()
|
||||
defer ResetView()
|
||||
ui.Clear()
|
||||
ui.DefaultEvtStream.ResetHandlers()
|
||||
defer ui.DefaultEvtStream.ResetHandlers()
|
||||
container := g.cmap.Get(g.cursorID)
|
||||
container.Expand()
|
||||
container.widgets.Render()
|
||||
@ -167,8 +163,7 @@ func Display(g *Grid) bool {
|
||||
|
||||
ui.DefaultEvtStream.Hook(logEvent)
|
||||
|
||||
// calculate layout
|
||||
ui.Body.Align()
|
||||
// initial draw
|
||||
g.redrawCursor()
|
||||
g.redrawRows()
|
||||
|
||||
|
@ -11,23 +11,45 @@ type CTopHeader struct {
|
||||
Time *ui.Par
|
||||
Count *ui.Par
|
||||
Filter *ui.Par
|
||||
bg *ui.Par
|
||||
}
|
||||
|
||||
func NewCTopHeader() *CTopHeader {
|
||||
return &CTopHeader{
|
||||
Time: headerPar(timeStr()),
|
||||
Count: headerPar("-"),
|
||||
Filter: headerPar(""),
|
||||
Time: headerPar(2, timeStr()),
|
||||
Count: headerPar(22, "-"),
|
||||
Filter: headerPar(42, ""),
|
||||
bg: headerBg(),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *CTopHeader) Row() *ui.Row {
|
||||
func (c *CTopHeader) Render() {
|
||||
c.Time.Text = timeStr()
|
||||
return ui.NewRow(
|
||||
ui.NewCol(2, 0, c.Time),
|
||||
ui.NewCol(2, 0, c.Count),
|
||||
ui.NewCol(8, 0, c.Filter),
|
||||
)
|
||||
ui.Render(c.bg)
|
||||
ui.Render(c.Time, c.Count, c.Filter)
|
||||
}
|
||||
|
||||
func (c *CTopHeader) Height() int {
|
||||
return c.bg.Height
|
||||
}
|
||||
|
||||
func headerBgBordered() *ui.Par {
|
||||
bg := ui.NewPar("")
|
||||
bg.X = 1
|
||||
bg.Width = ui.TermWidth() - 1
|
||||
bg.Height = 3
|
||||
bg.Bg = ui.ColorWhite
|
||||
return bg
|
||||
}
|
||||
|
||||
func headerBg() *ui.Par {
|
||||
bg := ui.NewPar("")
|
||||
bg.X = 1
|
||||
bg.Width = ui.TermWidth() - 1
|
||||
bg.Height = 1
|
||||
bg.Border = false
|
||||
bg.Bg = ui.ColorWhite
|
||||
return bg
|
||||
}
|
||||
|
||||
func (c *CTopHeader) SetCount(val int) {
|
||||
@ -46,8 +68,9 @@ func timeStr() string {
|
||||
return time.Now().Local().Format("15:04:05 MST")
|
||||
}
|
||||
|
||||
func headerPar(s string) *ui.Par {
|
||||
func headerPar(x int, s string) *ui.Par {
|
||||
p := ui.NewPar(fmt.Sprintf(" %s", s))
|
||||
p.X = x
|
||||
p.Border = false
|
||||
p.Height = 1
|
||||
p.Width = 20
|
||||
|
Loading…
Reference in New Issue
Block a user