diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-08 22:35:34 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-08 22:35:34 +0200 |
| commit | d8bf918e83515f48564e0d0b98d30907944a1e0d (patch) | |
| tree | ed155b0c365b0d322494a96ff799c3a59a1d9ec8 /internal/tui/eventstream/model.go | |
| parent | 9f21f1004beeac10be9223bc8c5514261e397b6e (diff) | |
tui: unify table navigation and rendering
Diffstat (limited to 'internal/tui/eventstream/model.go')
| -rw-r--r-- | internal/tui/eventstream/model.go | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/internal/tui/eventstream/model.go b/internal/tui/eventstream/model.go index 600d40d..2780524 100644 --- a/internal/tui/eventstream/model.go +++ b/internal/tui/eventstream/model.go @@ -6,6 +6,8 @@ import ( "strconv" "strings" + "ior/internal/tui/common" + "charm.land/bubbles/v2/viewport" tea "charm.land/bubbletea/v2" ) @@ -321,7 +323,7 @@ func (m *Model) HandleKey(keyStr string) bool { return true case "G": if m.paused { - m.moveSelectionTo(len(m.filtered) - 1) + return m.handlePausedTableNavigation("G") } else { m.autoScroll = true m.viewport.GotoBottom() @@ -330,7 +332,7 @@ func (m *Model) HandleKey(keyStr string) bool { return true case "g": if m.paused { - m.moveSelectionTo(0) + return m.handlePausedTableNavigation("g") } else { m.autoScroll = false m.viewport.GotoTop() @@ -339,40 +341,38 @@ func (m *Model) HandleKey(keyStr string) bool { return true case "j", "down": if m.paused { - m.moveSelectionBy(1) + return m.handlePausedTableNavigation(keyStr) } else { m.handleViewportUpdate(keyMsgFromString("down")) } return true case "k", "up": if m.paused { - m.moveSelectionBy(-1) + return m.handlePausedTableNavigation(keyStr) } else { m.handleViewportUpdate(keyMsgFromString("up")) } return true case "left", "h": if m.paused { - m.moveSelectedColBy(-1) - return true + return m.handlePausedTableNavigation(keyStr) } return m.handleViewportUpdate(keyMsgFromString("left")) case "right", "l": if m.paused { - m.moveSelectedColBy(1) - return true + return m.handlePausedTableNavigation(keyStr) } return m.handleViewportUpdate(keyMsgFromString("right")) case "pgdown", "pgdn", "pagedown": if m.paused { - m.moveSelectionBy(m.pageStep()) + return m.handlePausedTableNavigation(keyStr) } else { m.handleViewportUpdate(keyMsgFromString("pgdown")) } return true case "pgup", "pageup": if m.paused { - m.moveSelectionBy(-m.pageStep()) + return m.handlePausedTableNavigation(keyStr) } else { m.handleViewportUpdate(keyMsgFromString("pgup")) } @@ -597,6 +597,24 @@ func (m *Model) pageStep() int { return rows - 1 } +func (m *Model) handlePausedTableNavigation(keyStr string) bool { + if len(m.filtered) == 0 { + m.selectedIdx = -1 + return true + } + m.ensureSelection() + m.ensureSelectedCol() + row := m.selectedIdx + col := m.selectedCol + if !common.HandleTableNavigationKey(keyStr, &row, &col, len(m.filtered), streamColumnCount, m.pageStep()) { + return false + } + m.selectedIdx = row + m.selectedCol = col + m.centerSelection() + return true +} + func (m *Model) openFDTraceView() bool { if m.fdTraceView.visible || m.selectedIdx < 0 || m.selectedIdx >= len(m.filtered) { return false @@ -666,16 +684,6 @@ func (m *Model) scrollFDTraceByLines(delta int) { m.fdTraceView.offset = next } -func (m *Model) moveSelectionBy(delta int) { - if len(m.filtered) == 0 { - m.selectedIdx = -1 - return - } - m.ensureSelection() - m.ensureSelectedCol() - m.moveSelectionTo(m.selectedIdx + delta) -} - func (m *Model) moveSelectionTo(idx int) { if len(m.filtered) == 0 { m.selectedIdx = -1 @@ -718,14 +726,6 @@ func (m *Model) ensureSelectedCol() { } } -func (m *Model) moveSelectedColBy(delta int) { - if delta == 0 { - return - } - m.ensureSelectedCol() - m.selectedCol = clamp(m.selectedCol+delta, 0, streamColumnCount-1) -} - func (m *Model) requestGlobalFilterFromSelectedCell() bool { if m.fdTraceView.visible || m.selectedIdx < 0 || m.selectedIdx >= len(m.filtered) { return false |
