fixup cursor, blinking

This commit is contained in:
2025-07-13 17:39:30 -07:00
parent 001992a688
commit 3fdac7d9d8
8 changed files with 167 additions and 24 deletions

View File

@@ -8,15 +8,17 @@ import (
)
type RowDetailModel struct {
Shared *SharedData
rowIndex int
FromQuery bool
Shared *SharedData
rowIndex int
selectedCol int
FromQuery bool
}
func NewRowDetailModel(shared *SharedData, rowIndex int) *RowDetailModel {
return &RowDetailModel{
Shared: shared,
rowIndex: rowIndex,
Shared: shared,
rowIndex: rowIndex,
selectedCol: 0,
}
}
@@ -35,11 +37,21 @@ func (m *RowDetailModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, func() tea.Msg { return SwitchToTableDataMsg{TableIndex: m.Shared.SelectedTable} }
case "e":
if len(m.Shared.FilteredData) > m.rowIndex && len(m.Shared.Columns) > 0 {
if len(m.Shared.FilteredData) > m.rowIndex && len(m.Shared.Columns) > m.selectedCol {
return m, func() tea.Msg {
return SwitchToEditCellMsg{RowIndex: m.rowIndex, ColIndex: 0}
return SwitchToEditCellMsg{RowIndex: m.rowIndex, ColIndex: m.selectedCol}
}
}
case "up", "k":
if m.selectedCol > 0 {
m.selectedCol--
}
case "down", "j":
if m.selectedCol < len(m.Shared.Columns)-1 {
m.selectedCol++
}
}
}
return m, nil
@@ -56,16 +68,23 @@ func (m *RowDetailModel) View() string {
return content.String()
}
// Show current row position
content.WriteString(fmt.Sprintf("Row %d of %d\n\n", m.rowIndex+1, len(m.Shared.FilteredData)))
row := m.Shared.FilteredData[m.rowIndex]
for i, col := range m.Shared.Columns {
if i < len(row) {
content.WriteString(fmt.Sprintf("%s: %s\n", col, row[i]))
if i == m.selectedCol {
content.WriteString(SelectedStyle.Render(fmt.Sprintf("> %s: %s", col, row[i])))
} else {
content.WriteString(NormalStyle.Render(fmt.Sprintf(" %s: %s", col, row[i])))
}
content.WriteString("\n")
}
}
content.WriteString("\n")
content.WriteString(HelpStyle.Render("e: edit • q: back"))
content.WriteString(HelpStyle.Render("↑/↓: navigate columns • e: edit • q: back"))
return content.String()
}