diff --git a/config.yml b/config.yml index ba840130..f55d8344 100644 --- a/config.yml +++ b/config.yml @@ -10,7 +10,7 @@ wtf: git: commitCount: 10 refreshInterval: 8 - repository: "/Users/chris/Documents/Lendesk/core-api" + repository: "/Users/chris/go/src/github.com/senorprogrammer/wtf" github: refreshInterval: 900 repo: "core-api" diff --git a/gcal/widget.go b/gcal/widget.go index d3bf30a2..9d56dbfc 100644 --- a/gcal/widget.go +++ b/gcal/widget.go @@ -65,24 +65,53 @@ func (widget *Widget) contentFrom(events *calendar.Events) string { return "" } - str := "\n" + var prevEvent *calendar.Event + str := "" for _, event := range events.Items { - startTime, _ := time.Parse(time.RFC3339, event.Start.DateTime) - timestamp := startTime.Format("Mon, Jan 2, 15:04") - until := widget.until(startTime) + str = str + fmt.Sprintf( + "%s\n [%s]%s[white]\n [%s]%s %s[white]\n", + widget.dayDivider(event, prevEvent), + widget.titleColor(event), + widget.eventSummary(event), + widget.descriptionColor(event), + widget.eventTimestamp(event), + widget.until(event), + ) - summary := event.Summary - if widget.eventIsNow(event) { - summary = "🔥 " + summary - } - - str = str + fmt.Sprintf(" [%s]%s[white]\n [%s]%s %s[white]\n\n", widget.titleColor(event), summary, widget.descriptionColor(event), timestamp, until) + prevEvent = event } return str } +func (widget *Widget) dayDivider(event, prevEvent *calendar.Event) string { + if prevEvent != nil { + prevStartTime, _ := time.Parse(time.RFC3339, prevEvent.Start.DateTime) + currStartTime, _ := time.Parse(time.RFC3339, event.Start.DateTime) + + if currStartTime.Day() != prevStartTime.Day() { + return "[green]⎯[white]" + } + } + + return "" +} + +func (widget *Widget) eventSummary(event *calendar.Event) string { + summary := event.Summary + if widget.eventIsNow(event) { + summary = "🔥 " + summary + } + + return summary +} + +func (widget *Widget) eventTimestamp(event *calendar.Event) string { + startTime, _ := time.Parse(time.RFC3339, event.Start.DateTime) + return startTime.Format("Mon, Jan 2, 15:04") +} + // eventIsNow returns true if the event is happening now, false if it not func (widget *Widget) eventIsNow(event *calendar.Event) bool { startTime, _ := time.Parse(time.RFC3339, event.Start.DateTime) @@ -119,8 +148,9 @@ func (widget *Widget) titleColor(event *calendar.Event) string { // until returns the number of hours or days until the event // If the event is in the past, returns nil -func (widget *Widget) until(start time.Time) string { - duration := time.Until(start) +func (widget *Widget) until(event *calendar.Event) string { + startTime, _ := time.Parse(time.RFC3339, event.Start.DateTime) + duration := time.Until(startTime) duration = duration.Round(time.Minute)