diff --git a/server/ajax/form/form.go b/server/ajax/form/form.go index 825deb2..b42e152 100755 --- a/server/ajax/form/form.go +++ b/server/ajax/form/form.go @@ -61,6 +61,18 @@ func ToStrArr(k string) []string { } func ToTime(s string) time.Time { - v, _ := time.Parse("2006-01-02 15:04:05", s) + v, err := time.Parse("2006-01-02 15:04:05", s) + if err != nil || v.IsZero() { + v, err = time.Parse("2006-01-02", s) + } + if err != nil || v.IsZero() { + v, err = time.Parse("1/2/06", s) + } + if err != nil || v.IsZero() { + v, err = time.Parse("02 Jan 2006 3:04 PM", s) + } + if err != nil || v.IsZero() { + v, err = time.Parse("02 Jan 2006 3:04 PM", strings.ReplaceAll(s, "+", " ")) + } return v } diff --git a/server/ajax/form/form_test.go b/server/ajax/form/form_test.go index 1535e7a..0bbf482 100755 --- a/server/ajax/form/form_test.go +++ b/server/ajax/form/form_test.go @@ -79,6 +79,18 @@ func TestToTime(t *testing.T) { in: "5", out: "0001-01-01 00:00:00", }, + { + in: "1/2/03", + out: "2003-01-02 00:00:00", + }, + { + in: "11/12/03", + out: "2003-11-12 00:00:00", + }, + { + in: "01+Jan+2020+12:00+PM", + out: "2020-01-01 12:00:00", + }, } for _, c := range cases { diff --git a/server/ajax/storage.go b/server/ajax/storage.go index 34a2605..9742f37 100755 --- a/server/ajax/storage.go +++ b/server/ajax/storage.go @@ -94,6 +94,7 @@ func (a *Ajax) storageListTasks(listID string, filters ...func(t *task.Task) boo } } if filtered { + //task.Title = fmt.Sprintf("[%d] %s", task.Index, task.Title) tasks = append(tasks, task) } } diff --git a/server/ajax/task/task.go b/server/ajax/task/task.go index dfa8f13..1730ca3 100755 --- a/server/ajax/task/task.go +++ b/server/ajax/task/task.go @@ -39,7 +39,7 @@ func New(r *http.Request) (*Task, error) { UUID: form.NewUUID(), Title: form.Get(r, "title"), Priority: form.ToInt(form.Get(r, "prio")), - Tags: StrList(form.ToStrArr(form.Get(r, "tags"))), + Tags: append(StrList(form.ToStrArr(form.Get(r, "tag"))), StrList(form.ToStrArr(form.Get(r, "tags")))...), Created: time.Now(), Edited: time.Now(), @@ -110,6 +110,13 @@ func (t *Task) MarshalJSON() ([]byte, error) { "dueInt": t.Due.Unix(), "dueTitle": "Due ", } + if t.Due.IsZero() { + for k := range m { + if strings.HasPrefix(k, "due") { + delete(m, k) + } + } + } if t.Complete { m["dateCompleted"] = t.Completed.Format(fullFormat) m["dateCompletedInline"] = t.Completed.Format(shortFormat)