From ef252d5cab5ab8d597bdee5d5444b09ee138cbf5 Mon Sep 17 00:00:00 2001 From: mappu Date: Mon, 27 Mar 2017 20:16:12 +1300 Subject: [PATCH] tasks: always display list in sorted order (oldest first) --- tpl_Tasks.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tpl_Tasks.go b/tpl_Tasks.go index f253a2f..d0a932c 100644 --- a/tpl_Tasks.go +++ b/tpl_Tasks.go @@ -3,9 +3,29 @@ package webcmd import ( "fmt" "net/http" + "sort" "time" ) +type TaskListItem struct { + ref string + start int64 +} + +type TaskList []TaskListItem + +func (tl TaskList) Len() int { + return len(tl) +} + +func (tl TaskList) Swap(i, j int) { + tl[i], tl[j] = tl[j], tl[i] +} + +func (tl TaskList) Less(i, j int) bool { + return tl[i].start < tl[j].start +} + func (this *App) Serve_Tasks(w http.ResponseWriter) { w.Header().Set("Content-Type", "text/html;charset=UTF-8") @@ -26,7 +46,19 @@ func (this *App) Serve_Tasks(w http.ResponseWriter) { this.tasksMtx.RLock() defer this.tasksMtx.RUnlock() + + tl := make(TaskList, 0, len(this.tasks)) for ref, t := range this.tasks { + tl = append(tl, TaskListItem{ref, t.started}) + } + sort.Sort(tl) + + for _, tlRef := range tl { + ref := tlRef.ref + t := this.tasks[ref] + + startTime := time.Unix(t.started, 0) + fmt.Fprintf(w, ` %s