From 097a0df526a12e5c99e979b76a7559c44aa83fec Mon Sep 17 00:00:00 2001 From: Stuart Skelton Date: Thu, 20 Jul 2017 00:07:55 +0100 Subject: Added filtering between dates, in an inclusive and exclusive mode. Inclusive allows for the due date to be equal to the begin date, exclusive is between the dates. --- todolist/date_filter.go | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/todolist/date_filter.go b/todolist/date_filter.go index 13c3705..5a40e27 100644 --- a/todolist/date_filter.go +++ b/todolist/date_filter.go @@ -78,7 +78,6 @@ func (f *DateFilter) filterToExactDate(pivot time.Time) []*Todo { return ret } - func (f *DateFilter) filterToday(pivot time.Time) []*Todo { return f.filterToExactDate(pivot) } @@ -101,12 +100,9 @@ func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { return f.filterToExactDate(pivot) } -func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { +func (f *DateFilter) filterBetweenDatesInclusive(begin, end time.Time) []*Todo { var ret []*Todo - begin := bod(f.FindSunday(pivot)) - end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) if (begin.Before(dueTime) || begin.Equal(dueTime)) && end.After(dueTime) { @@ -116,12 +112,17 @@ func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { return ret } -func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo { - var ret []*Todo +func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { - begin := f.FindSunday(pivot).AddDate(0, 0, 7) + begin := bod(f.FindSunday(pivot)) end := begin.AddDate(0, 0, 7) + return f.filterBetweenDatesInclusive(begin, end) +} + +func (f *DateFilter) filterBetweenDatesExclusive(begin, end time.Time) []*Todo { + var ret []*Todo + for _, todo := range f.Todos { dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) if begin.Before(dueTime) && end.After(dueTime) { @@ -131,19 +132,20 @@ func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo { return ret } +func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo { + + begin := f.FindSunday(pivot).AddDate(0, 0, 7) + end := begin.AddDate(0, 0, 7) + + return f.filterBetweenDatesExclusive(begin, end) +} + func (f *DateFilter) filterLastWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := f.FindSunday(pivot).AddDate(0, 0, -7) end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { - dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if begin.Before(dueTime) && end.After(dueTime) { - ret = append(ret, todo) - } - } - return ret + return f.filterBetweenDatesExclusive(begin, end) } func (f *DateFilter) filterOverdue(pivot time.Time) []*Todo { -- cgit v1.3