refactor and unit test filters

This commit is contained in:
bel
2020-01-20 16:24:43 -07:00
parent b47327dfe6
commit cb73169eeb
2 changed files with 68 additions and 21 deletions

View File

@@ -13,21 +13,25 @@ import (
func (a *Ajax) loadTasks(w http.ResponseWriter, r *http.Request) error {
listID, _, _ := a.Cur(r)
filterComplete := func(t *task.Task) bool {
if form.Get(r, "compl") == "" {
return true
}
return form.Get(r, "compl") == "1" || !t.Complete
filterComplete := filterComplete(form.Get(r, "compl"))
filterTags := filterTags(form.ToStrArr(form.Get(r, "t")))
filterSubstr := filterSubstr(form.Get(r, "s"))
tasks, err := a.storageListTasks(listID, filterComplete, filterTags, filterSubstr)
if err != nil {
return err
}
filterTags := func(t *task.Task) bool {
if form.Get(r, "t") == "" {
return true
}
whitelistTags := form.ToStrArr(form.Get(r, "t"))
if len(whitelistTags) == 0 {
return true
}
for _, whitelisted := range whitelistTags {
return json.NewEncoder(w).Encode(map[string]interface{}{"list": tasks})
}
func filterComplete(compl string) func(t *task.Task) bool {
return func(t *task.Task) bool {
return compl == "" || (compl == "0" && !t.Complete) || (compl == "1" && t.Complete)
}
}
func filterTags(tags []string) func(t *task.Task) bool {
return func(t *task.Task) bool {
for _, whitelisted := range tags {
found := false
for _, tag := range t.Tags {
if whitelisted == tag {
@@ -40,15 +44,12 @@ func (a *Ajax) loadTasks(w http.ResponseWriter, r *http.Request) error {
}
return true
}
filterSubstr := func(t *task.Task) bool {
substr := form.Get(r, "s")
}
func filterSubstr(substr string) func(t *task.Task) bool {
return func(t *task.Task) bool {
return substr == "" || strings.Contains(fmt.Sprintf("%+v", t), substr)
}
tasks, err := a.storageListTasks(listID, filterComplete, filterTags, filterSubstr)
if err != nil {
return err
}
return json.NewEncoder(w).Encode(map[string]interface{}{"list": tasks})
}
func (a *Ajax) newTask(w http.ResponseWriter, r *http.Request) error {