org/internal/ui/agenda.go

32 lines
840 B
Go

package ui
import (
"time"
"github.com/rwejlgaard/org/internal/model"
)
// getAgendaItems returns items with scheduling or deadlines within the next 7 days
func (m uiModel) getAgendaItems() []*model.Item {
var items []*model.Item
now := time.Now()
startOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
endOfWeek := startOfDay.AddDate(0, 0, 7)
// Get all items regardless of folding for agenda view
var getAllItems func([]*model.Item)
getAllItems = func(list []*model.Item) {
for _, item := range list {
if item.Scheduled != nil && item.Scheduled.Before(endOfWeek) {
items = append(items, item)
}
if item.Deadline != nil && item.Deadline.Before(endOfWeek) {
items = append(items, item)
}
getAllItems(item.Children)
}
}
getAllItems(m.orgFile.Items)
return items
}