Add Calendar integration (read-only)
This commit is contained in:
@@ -533,6 +533,8 @@ type diarySection struct {
|
||||
EditURL string // year-file section edit URL ("" = no edit button)
|
||||
Body template.HTML // rendered markdown body (excludes the heading line)
|
||||
Photos []diaryPhoto
|
||||
Events string // day's calendar events, comma-separated (level 3 only)
|
||||
Weight string // day's weight from the weight calendar (level 3 only)
|
||||
}
|
||||
|
||||
type diaryContentData struct {
|
||||
@@ -623,6 +625,7 @@ func renderDiaryYear(yearFS, yearURL string) template.HTML {
|
||||
|
||||
out := buildFileSections(sections, photos, yearURL)
|
||||
out = appendVirtualEntries(out, sections, photos, year, yearURL)
|
||||
attachCalendarLines(out, year)
|
||||
return renderDiaryContent(out)
|
||||
}
|
||||
|
||||
@@ -746,6 +749,28 @@ func appendVirtualEntries(existing []diarySection, sections [][]byte, photos []d
|
||||
return out
|
||||
}
|
||||
|
||||
// attachCalendarLines fills the events and weight lines of every day section
|
||||
// (real or virtual) from the calendars' diary and weight roles.
|
||||
func attachCalendarLines(sections []diarySection, year int) {
|
||||
lines := calendarDayLines(
|
||||
time.Date(year, time.January, 1, 0, 0, 0, 0, time.Local),
|
||||
time.Date(year+1, time.January, 1, 0, 0, 0, 0, time.Local))
|
||||
if len(lines) == 0 {
|
||||
return
|
||||
}
|
||||
for i := range sections {
|
||||
s := §ions[i]
|
||||
if s.Level != 3 {
|
||||
continue
|
||||
}
|
||||
if _, _, _, ok := parseISODate(s.ID); !ok {
|
||||
continue
|
||||
}
|
||||
l := lines[s.ID[:10]]
|
||||
s.Events, s.Weight = l.Events, l.Weight
|
||||
}
|
||||
}
|
||||
|
||||
// isRealDateSection reports whether a rendered diarySection is one of the
|
||||
// date-headed slots (`## YYYY-MM` or `### YYYY-MM-DD`) the virtual-entry
|
||||
// interleave sorts against.
|
||||
|
||||
Reference in New Issue
Block a user