diff options
| author | Stuart Skelton <stuarts@broadbean.com> | 2017-07-20 00:07:55 +0100 |
|---|---|---|
| committer | Stuart Skelton <stuarts@broadbean.com> | 2017-07-20 00:47:17 +0100 |
| commit | 097a0df526a12e5c99e979b76a7559c44aa83fec (patch) | |
| tree | 81eb3bad2948df36701c1ba0f27c3185cc2ce75b | |
| parent | 29242153da9632b1decef8491fc5549719c85d7b (diff) | |
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.
| -rw-r--r-- | todolist/date_filter.go | 34 |
1 files 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 { |
