diff --git a/config.go b/config.go index 7282221..cee4b32 100644 --- a/config.go +++ b/config.go @@ -18,6 +18,15 @@ func updateConfig(k, v string) { configChan <- ConfigMsg{k, v} } +// Toggle a boolean option +func (c Config) toggle(k string) { + if c[k] == "0" { + c[k] = "1" + } else { + c[k] = "0" + } +} + func NewDefaultConfig() Config { docker := os.Getenv("DOCKER_HOST") if docker == "" { @@ -26,6 +35,7 @@ func NewDefaultConfig() Config { config := Config{ "dockerHost": docker, "sortField": "id", + "sortReverse": "0", "enableHeader": "0", } go func() { diff --git a/grid.go b/grid.go index e543737..4e9ce1e 100644 --- a/grid.go +++ b/grid.go @@ -145,11 +145,14 @@ func Display(g *Grid) bool { menu = HelpMenu ui.StopLoop() }) - ui.Handle("/sys/kbd/s", func(ui.Event) { - menu = SortMenu + ui.Handle("/sys/kbd/q", func(ui.Event) { ui.StopLoop() }) - ui.Handle("/sys/kbd/q", func(ui.Event) { + ui.Handle("/sys/kbd/r", func(ui.Event) { + GlobalConfig.toggle("sortReversed") + }) + ui.Handle("/sys/kbd/s", func(ui.Event) { + menu = SortMenu ui.StopLoop() }) ui.Handle("/timer/1s", func(e ui.Event) { diff --git a/menus.go b/menus.go index bbcd606..aa7f10f 100644 --- a/menus.go +++ b/menus.go @@ -8,6 +8,7 @@ import ( var helpDialog = []string{ "[h] - open this help dialog", "[s] - select container sort field", + "[r] - reverse container sort order", "[q] - exit ctop", } diff --git a/sort.go b/sort.go index 465e984..d4b09d4 100644 --- a/sort.go +++ b/sort.go @@ -30,6 +30,9 @@ func (a Containers) Len() int { return len(a) } func (a Containers) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a Containers) Less(i, j int) bool { f := Sorters[GlobalConfig["sortField"]] + if GlobalConfig["sortReversed"] == "1" { + return f(a[j], a[i]) + } return f(a[i], a[j]) }