mirror of
https://github.com/bcicen/ctop.git
synced 2024-08-30 18:23:19 +00:00
2bcfc365f7
Truncation Id inside of NewSingle() doesn't work. It even doesn't have any effect. Instead truncate the ID inside of NewMeta() call
58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package single
|
|
|
|
import (
|
|
"strings"
|
|
|
|
ui "github.com/gizak/termui"
|
|
)
|
|
|
|
var displayInfo = []string{"id", "name", "image", "ports", "IPs", "state", "created", "health"}
|
|
|
|
type Info struct {
|
|
*ui.Table
|
|
data map[string]string
|
|
}
|
|
|
|
func NewInfo() *Info {
|
|
p := ui.NewTable()
|
|
p.Height = 4
|
|
p.Width = colWidth[0]
|
|
p.FgColor = ui.ThemeAttr("par.text.fg")
|
|
p.Separator = false
|
|
i := &Info{p, make(map[string]string)}
|
|
return i
|
|
}
|
|
|
|
func (w *Info) Set(k, v string) {
|
|
w.data[k] = v
|
|
|
|
// rebuild rows
|
|
w.Rows = [][]string{}
|
|
for _, k := range displayInfo {
|
|
if v, ok := w.data[k]; ok {
|
|
w.Rows = append(w.Rows, mkInfoRows(k, v)...)
|
|
}
|
|
}
|
|
|
|
w.Height = len(w.Rows) + 2
|
|
}
|
|
|
|
// Build row(s) from a key and value string
|
|
func mkInfoRows(k, v string) (rows [][]string) {
|
|
lines := strings.Split(v, "\n")
|
|
|
|
// initial row with field name
|
|
rows = append(rows, []string{k, lines[0]})
|
|
|
|
// append any additional lines in separate row
|
|
if len(lines) > 1 {
|
|
for _, line := range lines[1:] {
|
|
if line != "" {
|
|
rows = append(rows, []string{"", line})
|
|
}
|
|
}
|
|
}
|
|
|
|
return rows
|
|
}
|