mirror of
https://github.com/RWejlgaard/org.git
synced 2026-05-06 04:34:45 +00:00
32 lines
840 B
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
|
|
}
|