package glance import ( "errors" "html/template" "time" ) var calendarWidgetTemplate = mustParseTemplate("calendar.html", "widget-base.html") var calendarWeekdaysToInt = map[string]time.Weekday{ "sunday": time.Sunday, "monday": time.Monday, "tuesday": time.Tuesday, "wednesday": time.Wednesday, "thursday": time.Thursday, "friday": time.Friday, "saturday": time.Saturday, } type calendarWidget struct { widgetBase `yaml:",inline"` FirstDayOfWeek string `yaml:"first-day-of-week"` FirstDay int `yaml:"-"` cachedHTML template.HTML `yaml:"-"` } func (widget *calendarWidget) initialize() error { widget.withTitle("Calendar").withError(nil) if widget.FirstDayOfWeek == "" { widget.FirstDayOfWeek = "monday" } else if _, ok := calendarWeekdaysToInt[widget.FirstDayOfWeek]; !ok { return errors.New("invalid first day of week") } widget.FirstDay = int(calendarWeekdaysToInt[widget.FirstDayOfWeek]) widget.cachedHTML = widget.renderTemplate(widget, calendarWidgetTemplate) return nil } func (widget *calendarWidget) Render() template.HTML { return widget.cachedHTML }