Added some colours
This commit is contained in:
parent
9204947d5e
commit
0fb641cdfd
8 changed files with 110 additions and 29 deletions
|
|
@ -24,6 +24,7 @@ type Model struct {
|
|||
w, h int
|
||||
|
||||
// model state
|
||||
colOffset int
|
||||
rows []table.Row
|
||||
resultSet *models.ResultSet
|
||||
}
|
||||
|
|
@ -60,6 +61,12 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
case "k", "down":
|
||||
m.table.GoDown()
|
||||
return m, m.postSelectedItemChanged
|
||||
case "j":
|
||||
m.setLeftmostDisplayedColumn(m.colOffset - 1)
|
||||
return m, nil
|
||||
case "l":
|
||||
m.setLeftmostDisplayedColumn(m.colOffset + 1)
|
||||
return m, nil
|
||||
case "I", "pgup":
|
||||
m.table.GoPageUp()
|
||||
return m, m.postSelectedItemChanged
|
||||
|
|
@ -72,6 +79,17 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
return m, nil
|
||||
}
|
||||
|
||||
func (m *Model) setLeftmostDisplayedColumn(newCol int) {
|
||||
if newCol < 0 {
|
||||
m.colOffset = 0
|
||||
} else if newCol >= len(m.resultSet.Columns) {
|
||||
m.colOffset = len(m.resultSet.Columns) - 1
|
||||
} else {
|
||||
m.colOffset = newCol
|
||||
}
|
||||
m.rebuildTable()
|
||||
}
|
||||
|
||||
func (m *Model) View() string {
|
||||
return lipgloss.JoinVertical(lipgloss.Top, m.frameTitle.View(), m.table.View())
|
||||
}
|
||||
|
|
@ -85,23 +103,39 @@ func (m *Model) Resize(w, h int) layout.ResizingModel {
|
|||
}
|
||||
|
||||
func (m *Model) updateTable() {
|
||||
m.colOffset = 0
|
||||
|
||||
m.frameTitle.SetTitle("Table: " + m.resultSet.TableInfo.Name)
|
||||
m.rebuildTable()
|
||||
}
|
||||
|
||||
func (m *Model) rebuildTable() {
|
||||
resultSet := m.resultSet
|
||||
|
||||
m.frameTitle.SetTitle("Table: " + resultSet.TableInfo.Name)
|
||||
|
||||
newTbl := table.New(resultSet.Columns, m.w, m.h-m.frameTitle.HeaderHeight())
|
||||
newTbl := table.New(resultSet.Columns[m.colOffset:], m.w, m.h-m.frameTitle.HeaderHeight())
|
||||
newRows := make([]table.Row, 0)
|
||||
for i, r := range resultSet.Items() {
|
||||
if resultSet.Hidden(i) {
|
||||
continue
|
||||
}
|
||||
|
||||
newRows = append(newRows, itemTableRow{resultSet: resultSet, itemIndex: i, item: r})
|
||||
newRows = append(newRows, itemTableRow{
|
||||
resultSet: resultSet,
|
||||
itemIndex: i,
|
||||
colOffset: m.colOffset,
|
||||
item: r,
|
||||
})
|
||||
}
|
||||
|
||||
m.rows = newRows
|
||||
newTbl.SetRows(newRows)
|
||||
|
||||
for newTbl.Cursor() != m.table.Cursor() {
|
||||
if newTbl.Cursor() < m.table.Cursor() {
|
||||
newTbl.GoDown()
|
||||
} else if newTbl.Cursor() > m.table.Cursor() {
|
||||
newTbl.GoUp()
|
||||
}
|
||||
}
|
||||
m.table = newTbl
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,11 +17,15 @@ var (
|
|||
Foreground(lipgloss.Color("#e13131"))
|
||||
newRowStyle = lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color("#31e131"))
|
||||
|
||||
metaInfoStyle = lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color("#888888"))
|
||||
)
|
||||
|
||||
type itemTableRow struct {
|
||||
resultSet *models.ResultSet
|
||||
itemIndex int
|
||||
colOffset int
|
||||
item models.Item
|
||||
}
|
||||
|
||||
|
|
@ -30,17 +34,6 @@ func (mtr itemTableRow) Render(w io.Writer, model table.Model, index int) {
|
|||
isDirty := mtr.resultSet.IsDirty(mtr.itemIndex)
|
||||
isNew := mtr.resultSet.IsNew(mtr.itemIndex)
|
||||
|
||||
sb := strings.Builder{}
|
||||
for i, colName := range mtr.resultSet.Columns {
|
||||
if i > 0 {
|
||||
sb.WriteString("\t")
|
||||
}
|
||||
|
||||
if r := mtr.item.Renderer(colName); r != nil {
|
||||
sb.WriteString(r.StringValue())
|
||||
}
|
||||
}
|
||||
|
||||
var style lipgloss.Style
|
||||
|
||||
if index == model.Cursor() {
|
||||
|
|
@ -54,6 +47,21 @@ func (mtr itemTableRow) Render(w io.Writer, model table.Model, index int) {
|
|||
} else if isDirty {
|
||||
style = style.Copy().Inherit(dirtyRowStyle)
|
||||
}
|
||||
metaInfoStyle := style.Copy().Inherit(metaInfoStyle)
|
||||
|
||||
fmt.Fprintln(w, style.Render(sb.String()))
|
||||
sb := strings.Builder{}
|
||||
for i, colName := range mtr.resultSet.Columns[mtr.colOffset:] {
|
||||
if i > 0 {
|
||||
sb.WriteString(style.Render("\t"))
|
||||
}
|
||||
|
||||
if r := mtr.item.Renderer(colName); r != nil {
|
||||
sb.WriteString(style.Render(r.StringValue()))
|
||||
if mi := r.MetaInfo(); mi != "" {
|
||||
sb.WriteString(metaInfoStyle.Render(mi))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Fprintln(w, sb.String())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue