diff --git a/server/ajax/ajax_test.go b/server/ajax/ajax_test.go index 040aa9a..8c358ed 100755 --- a/server/ajax/ajax_test.go +++ b/server/ajax/ajax_test.go @@ -2,6 +2,7 @@ package ajax import ( "local/todo-server/config" + "local/todo-server/server/ajax/list" "testing" ) @@ -15,5 +16,12 @@ func mockAjax() *Ajax { if err != nil { panic(err) } + list := &list.List{ + Name: "list", + UUID: "list", + } + if err := ajax.storageSetList(list); err != nil { + panic(err) + } return ajax } diff --git a/server/ajax/list/list.go b/server/ajax/list/list.go index 9f8bf3b..938570c 100755 --- a/server/ajax/list/list.go +++ b/server/ajax/list/list.go @@ -14,6 +14,7 @@ type List struct { ShowCompl int `json:"showCompl"` ShowNotes int `json:"showNotes"` Hidden int `json:"hidden"` + Max int `json:"max"` } func New(r *http.Request) (*List, error) { @@ -47,6 +48,11 @@ func (l *List) SetHideList(state bool) { set(state, &l.Hidden) } +func (l *List) NextIndex() int { + l.Max += 1 + return l.Max +} + func set(b bool, i *int) { *i = 1 if !b { diff --git a/server/ajax/storage.go b/server/ajax/storage.go index f747f49..11562ec 100755 --- a/server/ajax/storage.go +++ b/server/ajax/storage.go @@ -77,7 +77,10 @@ func (a *Ajax) storageListTasks(listID string, filters ...func(t *task.Task) boo } } sort.SliceStable(tasks, func(i, j int) bool { - return tasks[i].Created.Before(tasks[j].Created) + if tasks[i].Index == tasks[j].Index { + return tasks[i].Created.Before(tasks[j].Created) + } + return tasks[i].Index < tasks[j].Index }) return tasks, nil } diff --git a/server/ajax/storage_test.go b/server/ajax/storage_test.go index 8ed6214..6b37c64 100755 --- a/server/ajax/storage_test.go +++ b/server/ajax/storage_test.go @@ -33,7 +33,7 @@ func TestAjaxStorageListLists(t *testing.T) { if results, err := ajax.storageListLists(); err != nil { t.Error(err) - } else if len(results) != 3 { + } else if len(results) < 3 { t.Error(results) } diff --git a/server/ajax/task.go b/server/ajax/task.go index 3548b7b..933383d 100755 --- a/server/ajax/task.go +++ b/server/ajax/task.go @@ -68,6 +68,14 @@ func (a *Ajax) makeTask(r *http.Request) (string, *task.Task, error) { if err != nil { return "", nil, err } + list, err := a.storageGetList(listID) + if err != nil { + return "", nil, err + } + task.Index = list.NextIndex() + if err := a.storageSetList(list); err != nil { + return "", nil, err + } task.AppendTags(tags) return listID, task, nil } diff --git a/server/ajax/task/task.go b/server/ajax/task/task.go index 15a15c2..a2f9213 100755 --- a/server/ajax/task/task.go +++ b/server/ajax/task/task.go @@ -23,6 +23,8 @@ type Task struct { Complete bool Note []string Due time.Time + + Index int } type StrList []string