Fix completing tasks, showing completed tasks, and stable display order. Sorting broken.

master
Bel LaPointe 2019-11-21 12:11:55 -07:00
parent b6397a71d4
commit 4b5542b833
3 changed files with 16 additions and 4 deletions

View File

@ -3,6 +3,7 @@ package main
import ( import (
"local/todo-server/config" "local/todo-server/config"
"local/todo-server/server" "local/todo-server/server"
"log"
"net/http" "net/http"
) )
@ -11,6 +12,7 @@ func main() {
if err := s.Routes(); err != nil { if err := s.Routes(); err != nil {
panic(err) panic(err)
} }
log.Println("listening on", config.Port)
if err := http.ListenAndServe(config.Port, s); err != nil { if err := http.ListenAndServe(config.Port, s); err != nil {
panic(err) panic(err)
} }

View File

@ -8,6 +8,7 @@ import (
"local/todo-server/server/ajax/task" "local/todo-server/server/ajax/task"
"net/http" "net/http"
"path" "path"
"sort"
"strings" "strings"
) )
@ -75,6 +76,9 @@ func (a *Ajax) storageListTasks(listID string, filters ...func(t *task.Task) boo
tasks = append(tasks, task) tasks = append(tasks, task)
} }
} }
sort.SliceStable(tasks, func(i, j int) bool {
return tasks[i].Created.Before(tasks[j].Created)
})
return tasks, nil return tasks, nil
} }

View File

@ -16,7 +16,7 @@ func (a *Ajax) loadTasks(w http.ResponseWriter, r *http.Request) error {
if form.Get(r, "compl") == "" { if form.Get(r, "compl") == "" {
return true return true
} }
return t.Complete == (form.Get(r, "compl") != "0") return form.Get(r, "compl") == "1" || !t.Complete
} }
filterTags := func(t *task.Task) bool { filterTags := func(t *task.Task) bool {
if form.Get(r, "t") == "" { if form.Get(r, "t") == "" {
@ -79,12 +79,18 @@ func (a *Ajax) deleteTask(w http.ResponseWriter, r *http.Request) error {
func (a *Ajax) completeTask(w http.ResponseWriter, r *http.Request) error { func (a *Ajax) completeTask(w http.ResponseWriter, r *http.Request) error {
listID, taskID, _ := a.Cur(r) listID, taskID, _ := a.Cur(r)
task, err := a.storageGetTask(taskID) completedTask, err := a.storageGetTask(taskID)
if err != nil { if err != nil {
return err return err
} }
task.SetComplete(form.Get(r, "compl") == "1") completedTask.SetComplete(form.Get(r, "compl") == "1")
return a.storageSetTask(listID, task) if err := a.storageSetTask(listID, completedTask); err != nil {
return err
}
return json.NewEncoder(w).Encode(map[string]interface{}{
"total": 1,
"list": []*task.Task{completedTask},
})
} }
func (a *Ajax) editNote(w http.ResponseWriter, r *http.Request) error { func (a *Ajax) editNote(w http.ResponseWriter, r *http.Request) error {