From ad32edac09cf18a7f6a4be57e9d4467ab05d409c Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 25 Feb 2026 10:30:22 +0200 Subject: Wire grouped files mode into active tab rendering --- internal/tui/dashboard/model.go | 18 ++++++++++++++++-- internal/tui/dashboard/model_test.go | 14 ++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'internal') diff --git a/internal/tui/dashboard/model.go b/internal/tui/dashboard/model.go index d3d8322..8b2c814 100644 --- a/internal/tui/dashboard/model.go +++ b/internal/tui/dashboard/model.go @@ -264,7 +264,18 @@ func (m Model) View() string { var b strings.Builder b.WriteString(renderTabBar(m.activeTab, width)) b.WriteString("\n") - b.WriteString(renderActiveTab(m.activeTab, m.latest, &m.streamModel, width, height, m.syscallsOffset, m.filesOffset, m.processesOffset)) + b.WriteString(renderActiveTab( + m.activeTab, + m.latest, + &m.streamModel, + width, + height, + m.syscallsOffset, + m.filesOffset, + m.filesDirGrouped, + m.filesDirOffset, + m.processesOffset, + )) b.WriteString("\n") b.WriteString(common.HighlightStyle.Render("Press ? for help")) b.WriteString("\n") @@ -276,7 +287,7 @@ func tickCmd(d time.Duration) tea.Cmd { return tea.Tick(d, func(time.Time) tea.Msg { return refreshTickMsg{} }) } -func renderActiveTab(tab Tab, snap *statsengine.Snapshot, streamModel *eventstream.Model, width, height, syscallsOffset, filesOffset, processesOffset int) string { +func renderActiveTab(tab Tab, snap *statsengine.Snapshot, streamModel *eventstream.Model, width, height, syscallsOffset, filesOffset int, filesDirGrouped bool, filesDirOffset, processesOffset int) string { if tab == TabStream { if streamModel == nil { return common.PanelStyle.Render("Stream: waiting for source...") @@ -294,6 +305,9 @@ func renderActiveTab(tab Tab, snap *statsengine.Snapshot, streamModel *eventstre case TabSyscalls: return renderSyscallsWithOffset(snap, width, height, syscallsOffset) case TabFiles: + if filesDirGrouped { + return renderFilesDirGrouped(snap, width, height, filesDirOffset) + } return renderFilesWithOffset(snap, width, height, filesOffset) case TabProcesses: return renderProcessesWithOffset(snap, width, height, processesOffset) diff --git a/internal/tui/dashboard/model_test.go b/internal/tui/dashboard/model_test.go index c243018..c1b2e1d 100644 --- a/internal/tui/dashboard/model_test.go +++ b/internal/tui/dashboard/model_test.go @@ -291,3 +291,17 @@ func TestViewRendersTabBarAndHelp(t *testing.T) { t.Fatalf("expected help bar text in view") } } + +func TestRenderActiveTabUsesDirectoryFilesViewWhenGrouped(t *testing.T) { + snap := statsengine.NewSnapshot( + nil, nil, nil, nil, + []statsengine.FileSnapshot{{Path: "/tmp/a.log", Accesses: 2}}, + nil, + statsengine.HistogramSnapshot{}, + statsengine.HistogramSnapshot{}, + ) + out := renderActiveTab(TabFiles, &snap, nil, 120, 30, 0, 0, true, 0, 0) + if !strings.Contains(out, "Directory") { + t.Fatalf("expected grouped directory files view header, got %q", out) + } +} -- cgit v1.2.3