Fixed a glaring error where the user cannot close the column selector
Some checks failed
ci / build (push) Has been cancelled
Some checks failed
ci / build (push) Has been cancelled
Cause of this was that the close event type was also being used by the related overlay, and the event was being caught by that even though the overlay was hidden. Also started working on changing the sort order within the column selector by pressing S.
This commit is contained in:
parent
f5bf31a903
commit
e37b8099a3
20 changed files with 213 additions and 67 deletions
|
|
@ -6,6 +6,7 @@ import (
|
|||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/lmika/dynamo-browse/internal/common/ui/events"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/controllers"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/models"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/models/columns"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/ui/keybindings"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/ui/teamodels/layout"
|
||||
|
|
@ -25,8 +26,9 @@ type colListModel struct {
|
|||
keyBinding *keybindings.KeyBindings
|
||||
colController *controllers.ColumnsController
|
||||
|
||||
rows []table.Row
|
||||
table table.Model
|
||||
rows []table.Row
|
||||
table table.Model
|
||||
sortCriteria models.SortCriteria
|
||||
}
|
||||
|
||||
func newColListModel(keyBinding *keybindings.KeyBindings, colController *controllers.ColumnsController) *colListModel {
|
||||
|
|
@ -68,6 +70,8 @@ func (m *colListModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
return m, events.SetTeaMessage(m.colController.AddColumn(m.table.Cursor()))
|
||||
case key.Matches(msg, m.keyBinding.ColumnPopup.DeleteColumn):
|
||||
return m, events.SetTeaMessage(m.colController.DeleteColumn(m.table.Cursor()))
|
||||
case key.Matches(msg, m.keyBinding.ColumnPopup.SortByColumn):
|
||||
return m, events.SetTeaMessage(m.colController.SortByColumn(m.table.Cursor()))
|
||||
|
||||
// Main table nav
|
||||
case key.Matches(msg, m.keyBinding.TableView.ColLeft):
|
||||
|
|
@ -122,6 +126,7 @@ func (c *colListModel) Resize(w, h int) layout.ResizingModel {
|
|||
|
||||
func (c *colListModel) refreshTable() {
|
||||
colsFromController := c.colController.Columns()
|
||||
c.sortCriteria = c.colController.SortCriteria()
|
||||
if len(c.rows) != len(colsFromController.Columns) {
|
||||
c.setColumnsFromModel(colsFromController)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
var cc utils.CmdCollector
|
||||
switch msg := msg.(type) {
|
||||
case controllers.ShowColumnOverlay:
|
||||
m.colListModel.sortCriteria = m.columnsController.SortCriteria()
|
||||
m.colListModel.setColumnsFromModel(m.columnsController.Columns())
|
||||
m.compositor.SetOverlay(m.colListModel, m.w/2-overlayWidth/2, m.h/2-overlayHeight/2, overlayWidth, overlayHeight)
|
||||
case controllers.HideColumnOverlay:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package colselector
|
|||
import (
|
||||
"fmt"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/lmika/dynamo-browse/internal/dynamo-browse/models/evaluators"
|
||||
table "github.com/lmika/go-bubble-table"
|
||||
"io"
|
||||
)
|
||||
|
|
@ -23,9 +24,17 @@ func (clr colListRowModel) Render(w io.Writer, model table.Model, index int) {
|
|||
}
|
||||
|
||||
col := clr.m.colController.Columns().Columns[index]
|
||||
if !col.Hidden {
|
||||
fmt.Fprintln(w, style.Render(fmt.Sprintf("⋅\t%v", col.Name)))
|
||||
} else {
|
||||
ff := clr.m.sortCriteria.FirstField()
|
||||
switch {
|
||||
case col.Hidden:
|
||||
fmt.Fprintln(w, style.Render(fmt.Sprintf("✕\t%v", col.Name)))
|
||||
case evaluators.Equals(ff.Field, col.Evaluator):
|
||||
if ff.Asc {
|
||||
fmt.Fprintln(w, style.Render(fmt.Sprintf("v\t%v", col.Name)))
|
||||
} else {
|
||||
fmt.Fprintln(w, style.Render(fmt.Sprintf("^\t%v", col.Name)))
|
||||
}
|
||||
default:
|
||||
fmt.Fprintln(w, style.Render(fmt.Sprintf("⋅\t%v", col.Name)))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue