Release Please / Release Please (push) Skipped
Tests / Test (Go 1.22) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Release / GoReleaser (push) Failing after 38s
Polish the office TUI with proportional pane layout, drag resize, live filtering, HTML mail preview, paginated mail lists, overflow scrollbars, flattened navigation, and project save/status fixes; add UpdateProjectStatus. Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
955 B
Go
41 lines
955 B
Go
package model
|
|
|
|
import "fmt"
|
|
|
|
// ClassifyCalendarRow decides whether an API row is a calendar or an event.
|
|
func ClassifyCalendarRow(raw map[string]any) (Kind, string) {
|
|
if raw == nil {
|
|
return KindCalendar, "Calendar"
|
|
}
|
|
if strRaw(raw, "start") != "" || strRaw(raw, "end") != "" {
|
|
return KindEvent, "Event"
|
|
}
|
|
if strRaw(raw, "eventType") != "" {
|
|
return KindEvent, "Event"
|
|
}
|
|
return KindCalendar, "Calendar"
|
|
}
|
|
|
|
// CalendarTypeLabel returns the type column text for a calendar list row.
|
|
func CalendarTypeLabel(it Item) string {
|
|
if it.Raw != nil {
|
|
if t := strRaw(it.Raw, "type"); t != "" {
|
|
return t
|
|
}
|
|
}
|
|
_, label := ClassifyCalendarRow(it.Raw)
|
|
return label
|
|
}
|
|
|
|
// FormatCalendarDateTime formats start/end timestamps for the calendar table.
|
|
func FormatCalendarDateTime(v any) string {
|
|
t, ok := parseDeadlineTime(v)
|
|
if !ok {
|
|
if s := fmt.Sprint(v); s != "" && s != "<nil>" {
|
|
return s
|
|
}
|
|
return ""
|
|
}
|
|
return t.Format("Jan 2 15:04")
|
|
}
|