ssm-browse: added mark, filtering and delete items
This commit is contained in:
parent
c49f3913a8
commit
798150a403
10 changed files with 181 additions and 72 deletions
|
|
@ -17,6 +17,7 @@ type Model struct {
|
|||
w, h int
|
||||
|
||||
// model state
|
||||
rows []table.Row
|
||||
resultSet *models.ResultSet
|
||||
}
|
||||
|
||||
|
|
@ -52,6 +53,12 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
case "k", "down":
|
||||
m.table.GoDown()
|
||||
return m, m.postSelectedItemChanged
|
||||
case "I", "pgup":
|
||||
m.table.GoPageUp()
|
||||
return m, m.postSelectedItemChanged
|
||||
case "K", "pgdn":
|
||||
m.table.GoPageDown()
|
||||
return m, m.postSelectedItemChanged
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,22 +83,32 @@ func (m *Model) updateTable() {
|
|||
m.frameTitle.SetTitle("Table: " + resultSet.TableInfo.Name)
|
||||
|
||||
newTbl := table.New(resultSet.Columns, m.w, m.h-m.frameTitle.HeaderHeight())
|
||||
newRows := make([]table.Row, len(resultSet.Items))
|
||||
for i, r := range resultSet.Items {
|
||||
newRows[i] = itemTableRow{resultSet, r}
|
||||
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})
|
||||
}
|
||||
|
||||
m.rows = newRows
|
||||
newTbl.SetRows(newRows)
|
||||
|
||||
m.table = newTbl
|
||||
}
|
||||
|
||||
func (m *Model) SelectedItemIndex() int {
|
||||
return m.table.Cursor()
|
||||
selectedItem, ok := m.selectedItem()
|
||||
if !ok {
|
||||
return -1
|
||||
}
|
||||
return selectedItem.itemIndex
|
||||
}
|
||||
|
||||
func (m *Model) selectedItem() (itemTableRow, bool) {
|
||||
resultSet := m.resultSet
|
||||
if resultSet != nil && len(resultSet.Items) > 0 {
|
||||
if resultSet != nil && len(m.rows) > 0 {
|
||||
selectedItem, ok := m.table.SelectedRow().(itemTableRow)
|
||||
if ok {
|
||||
return selectedItem, true
|
||||
|
|
@ -111,6 +128,5 @@ func (m *Model) postSelectedItemChanged() tea.Msg {
|
|||
}
|
||||
|
||||
func (m *Model) Refresh() {
|
||||
m.table.GoDown()
|
||||
m.table.GoUp()
|
||||
m.table.SetRows(m.rows)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,11 +18,12 @@ var (
|
|||
|
||||
type itemTableRow struct {
|
||||
resultSet *models.ResultSet
|
||||
itemIndex int
|
||||
item models.Item
|
||||
}
|
||||
|
||||
func (mtr itemTableRow) Render(w io.Writer, model table.Model, index int) {
|
||||
isMarked := mtr.resultSet.Marked(index)
|
||||
isMarked := mtr.resultSet.Marked(mtr.itemIndex)
|
||||
|
||||
sb := strings.Builder{}
|
||||
for i, colName := range mtr.resultSet.Columns {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue