aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStuart Skelton <stuarts@broadbean.com>2017-07-20 00:07:55 +0100
committerStuart Skelton <stuarts@broadbean.com>2017-07-20 00:47:17 +0100
commit097a0df526a12e5c99e979b76a7559c44aa83fec (patch)
tree81eb3bad2948df36701c1ba0f27c3185cc2ce75b
parent29242153da9632b1decef8491fc5549719c85d7b (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.go34
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 {