summaryrefslogtreecommitdiff
path: root/internal/tui/eventstream/model.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-08 22:35:34 +0200
committerPaul Buetow <paul@buetow.org>2026-03-08 22:35:34 +0200
commitd8bf918e83515f48564e0d0b98d30907944a1e0d (patch)
treeed155b0c365b0d322494a96ff799c3a59a1d9ec8 /internal/tui/eventstream/model.go
parent9f21f1004beeac10be9223bc8c5514261e397b6e (diff)
tui: unify table navigation and rendering
Diffstat (limited to 'internal/tui/eventstream/model.go')
-rw-r--r--internal/tui/eventstream/model.go56
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