From a84f4894f804ba7c6ba0450f2724f60730a3fea8 Mon Sep 17 00:00:00 2001 From: Tyler Koenig Date: Thu, 28 May 2026 15:40:18 -0400 Subject: [PATCH] =?UTF-8?q?fix(tui):=20maint=20tab=20=E2=80=94=20MONITORS?= =?UTF-8?q?=20is=20flex,=20dates=20get=20room,=20time=20adapts=20to=20widt?= =?UTF-8?q?h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TITLE was flex eating all space while dates/monitors squeezed. Flipped: MONITORS is now flex, TITLE fixed (12-24), dates min 14, STATUS min 11. fmtMaintTime uses compact format (Jan 02) at narrow widths. --- internal/tui/tab_maint.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/internal/tui/tab_maint.go b/internal/tui/tab_maint.go index e09383c..3eb216f 100644 --- a/internal/tui/tab_maint.go +++ b/internal/tui/tab_maint.go @@ -57,7 +57,7 @@ func fmtMaintMonitorW(monitorID int, sites []models.Site, maxW int) string { return fmt.Sprintf("#%d", monitorID) } -func fmtMaintTime(t time.Time) string { +func fmtMaintTime(t time.Time, colW int) string { if t.IsZero() { return subtleStyle.Render("—") } @@ -65,7 +65,10 @@ func fmtMaintTime(t time.Time) string { if t.Year() == now.Year() && t.YearDay() == now.YearDay() { return t.Format("15:04") } - return t.Format("15:04 Jan 02") + if colW >= 14 { + return t.Format("15:04 Jan 02") + } + return t.Format("Jan 02") } func (m Model) isMonitorInMaintenance(monitorID int) bool { @@ -99,16 +102,17 @@ func (m Model) viewMaintTab() string { cols := []colDef{ {"#", "#", 4, 4, false}, - {"TITLE", "TITLE", 10, 28, true}, + {"TITLE", "TITLE", 12, 24, false}, {"TYPE", "TYPE", 13, 14, false}, - {"MON", "MONITORS", 10, 22, false}, - {"ST", "STATUS", 8, 12, false}, - {"START", "STARTED", 8, 16, false}, - {"ENDS", "ENDS", 8, 16, false}, + {"MON", "MONITORS", 14, 22, true}, + {"ST", "STATUS", 11, 12, false}, + {"START", "STARTED", 14, 16, false}, + {"ENDS", "ENDS", 14, 16, false}, } headers, widths := m.computeTableLayout(cols, 0) titleW := widths[1] monW := widths[3] + timeW := widths[5] return m.renderTable( headers, @@ -124,8 +128,8 @@ func (m Model) viewMaintTab() string { fmtMaintType(mw.Type), fmtMaintMonitorW(mw.MonitorID, allSites, monW-2), fmtMaintStatus(mw), - fmtMaintTime(mw.StartTime), - fmtMaintTime(mw.EndTime), + fmtMaintTime(mw.StartTime, timeW), + fmtMaintTime(mw.EndTime, timeW), }) } return rows