diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-24 08:49:57 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-24 08:49:57 +0200 |
| commit | 13a81c7fdbaab8ef650a7487270abb6776f0b4cd (patch) | |
| tree | 111a76dfb4516a62ed166b2a4486214f1034929d /internal/tui/dashboard/model.go | |
| parent | e5116514c33b2fce6ce2fc7904d6720c5236221f (diff) | |
tui: add dashboard processes table tab
Diffstat (limited to 'internal/tui/dashboard/model.go')
| -rw-r--r-- | internal/tui/dashboard/model.go | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/internal/tui/dashboard/model.go b/internal/tui/dashboard/model.go index a7dec14..44a6da7 100644 --- a/internal/tui/dashboard/model.go +++ b/internal/tui/dashboard/model.go @@ -31,9 +31,10 @@ type Model struct { width int height int - refreshEvery time.Duration - keys tui.KeyMap - syscallsOffset int + refreshEvery time.Duration + keys tui.KeyMap + syscallsOffset int + processesOffset int } // NewModel creates a dashboard model with default refresh cadence. @@ -94,6 +95,18 @@ func (m Model) handleKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { return m, nil } } + if m.activeTab == TabProcesses { + switch msg.String() { + case "down", "j": + m.processesOffset++ + return m, nil + case "up", "k": + if m.processesOffset > 0 { + m.processesOffset-- + } + return m, nil + } + } switch { case key.Matches(msg, m.keys.Tab): @@ -128,7 +141,7 @@ func (m Model) View() string { var b strings.Builder b.WriteString(renderTabBar(m.activeTab, m.width)) b.WriteString("\n") - b.WriteString(renderActiveTab(m.activeTab, m.latest, m.width, m.height, m.syscallsOffset)) + b.WriteString(renderActiveTab(m.activeTab, m.latest, m.width, m.height, m.syscallsOffset, m.processesOffset)) b.WriteString("\n") b.WriteString(renderHelpBar(m.keys)) return tui.ScreenStyle.Render(b.String()) @@ -138,7 +151,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, width, height, syscallsOffset int) string { +func renderActiveTab(tab Tab, snap *statsengine.Snapshot, width, height, syscallsOffset, processesOffset int) string { _ = width _ = height @@ -154,7 +167,7 @@ func renderActiveTab(tab Tab, snap *statsengine.Snapshot, width, height, syscall case TabFiles: return tui.PanelStyle.Render(fmt.Sprintf("Files: %d rows", len(snap.Files()))) case TabProcesses: - return tui.PanelStyle.Render(fmt.Sprintf("Processes: %d rows", len(snap.Processes()))) + return renderProcessesWithOffset(snap, width, height, processesOffset) case TabLatency: return tui.PanelStyle.Render("Latency histogram") case TabGaps: |
