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 /todolist | |
| 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.
Diffstat (limited to 'todolist')
| -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 { |
