Add working tview, add working load ond Tables, remove giu
This commit is contained in:
80
cmd/sqv-tview/main.go
Normal file
80
cmd/sqv-tview/main.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
engine "git.pablu.de/pablu/sqv-engine"
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/rivo/tview"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := tview.NewApplication()
|
||||
|
||||
menu := tview.NewList()
|
||||
table := tview.NewTable().SetBorders(true)
|
||||
table.SetBorder(true).SetTitle("TABLE")
|
||||
|
||||
menu.SetTitle("TABLES").SetBorder(true)
|
||||
menu.ShowSecondaryText(false).SetDoneFunc(func() {
|
||||
table.Clear()
|
||||
})
|
||||
|
||||
flex := tview.NewFlex().
|
||||
AddItem(menu, 0, 1, true).
|
||||
AddItem(table, 0, 3, true)
|
||||
|
||||
m, err := engine.NewManager("db.sqlite")
|
||||
if err != nil {
|
||||
log.Fatalf("Ran into an error on opening Manager, err: %v\n", err)
|
||||
}
|
||||
m.Start()
|
||||
|
||||
tables := m.GetTables()
|
||||
|
||||
for _, t := range tables {
|
||||
menu.AddItem(t.Name, "", 0, nil)
|
||||
}
|
||||
menu.SetChangedFunc(func(index int, mainText, secondaryText string, shortcut rune) {
|
||||
table.Clear()
|
||||
|
||||
t, ok := m.GetTable(mainText)
|
||||
if !ok {
|
||||
panic("AHHHHHHH")
|
||||
}
|
||||
|
||||
for i, c := range t.Columns {
|
||||
color := tcell.ColorDarkGreen
|
||||
table.SetCell(0, i, tview.NewTableCell(c.Name).SetTextColor(color).SetAlign(tview.AlignCenter))
|
||||
}
|
||||
|
||||
err = m.LoadTable(&t)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for ri, r := range t.Rows {
|
||||
for rc, c := range r.Values {
|
||||
table.SetCell(ri+1, rc, tview.NewTableCell(c).SetTextColor(tcell.ColorWhite).SetAlign(tview.AlignCenter))
|
||||
}
|
||||
}
|
||||
})
|
||||
menu.SetCurrentItem(1)
|
||||
|
||||
table.Select(0, 0).SetFixed(1, 1).SetDoneFunc(func(key tcell.Key) {
|
||||
switch key {
|
||||
case tcell.KeyEscape:
|
||||
app.Stop()
|
||||
case tcell.KeyEnter:
|
||||
table.SetSelectable(true, true)
|
||||
}
|
||||
}).SetSelectedFunc(func(row, column int) {
|
||||
table.GetCell(row, column).SetTextColor(tcell.ColorRed)
|
||||
table.SetSelectable(false, false)
|
||||
})
|
||||
|
||||
if err := app.SetRoot(flex, true).EnableMouse(true).Run(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user