refactor and unit test filters
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user