diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-21 19:59:35 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-21 19:59:35 +0200 |
| commit | f33dff87725764af0b675b5e5b2e011b21c14c90 (patch) | |
| tree | 4fe2c022305f13775f2cab3cdd80cd808259765b /internal/tui/components/logs | |
| parent | 6b1c64bcc75b89c530294b6a2d4404682b435d56 (diff) | |
| parent | 3a6a26981a8074b6ab0eaadb520db986e04799ff (diff) | |
| download | opencode-f33dff87725764af0b675b5e5b2e011b21c14c90.tar.gz opencode-f33dff87725764af0b675b5e5b2e011b21c14c90.zip | |
Merge pull request #27 from kujtimiihoxha/opencode
OpenCode - Initial Implementation
Diffstat (limited to 'internal/tui/components/logs')
| -rw-r--r-- | internal/tui/components/logs/details.go | 53 | ||||
| -rw-r--r-- | internal/tui/components/logs/table.go | 80 |
2 files changed, 37 insertions, 96 deletions
diff --git a/internal/tui/components/logs/details.go b/internal/tui/components/logs/details.go index dbace5508..fa49adbbb 100644 --- a/internal/tui/components/logs/details.go +++ b/internal/tui/components/logs/details.go @@ -9,22 +9,19 @@ import ( "github.com/charmbracelet/bubbles/viewport" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" - "github.com/kujtimiihoxha/termai/internal/logging" - "github.com/kujtimiihoxha/termai/internal/tui/layout" - "github.com/kujtimiihoxha/termai/internal/tui/styles" + "github.com/kujtimiihoxha/opencode/internal/logging" + "github.com/kujtimiihoxha/opencode/internal/tui/layout" + "github.com/kujtimiihoxha/opencode/internal/tui/styles" ) type DetailComponent interface { tea.Model - layout.Focusable layout.Sizeable layout.Bindings - layout.Bordered } type detailCmp struct { width, height int - focused bool currentLog logging.LogMessage viewport viewport.Model } @@ -39,11 +36,6 @@ func (i *detailCmp) Init() tea.Cmd { } func (i *detailCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { - var ( - cmd tea.Cmd - cmds []tea.Cmd - ) - switch msg := msg.(type) { case selectedLogMsg: if msg.ID != i.currentLog.ID { @@ -52,12 +44,7 @@ func (i *detailCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { } } - if i.focused { - i.viewport, cmd = i.viewport.Update(msg) - cmds = append(cmds, cmd) - } - - return i, tea.Batch(cmds...) + return i, nil } func (i *detailCmp) updateContent() { @@ -125,48 +112,24 @@ func getLevelStyle(level string) lipgloss.Style { } func (i *detailCmp) View() string { - return i.viewport.View() -} - -func (i *detailCmp) Blur() tea.Cmd { - i.focused = false - return nil -} - -func (i *detailCmp) Focus() tea.Cmd { - i.focused = true - return nil -} - -func (i *detailCmp) IsFocused() bool { - return i.focused + return styles.ForceReplaceBackgroundWithLipgloss(i.viewport.View(), styles.Background) } func (i *detailCmp) GetSize() (int, int) { return i.width, i.height } -func (i *detailCmp) SetSize(width int, height int) { +func (i *detailCmp) SetSize(width int, height int) tea.Cmd { i.width = width i.height = height i.viewport.Width = i.width i.viewport.Height = i.height i.updateContent() + return nil } func (i *detailCmp) BindingKeys() []key.Binding { - return []key.Binding{ - i.viewport.KeyMap.PageDown, - i.viewport.KeyMap.PageUp, - i.viewport.KeyMap.HalfPageDown, - i.viewport.KeyMap.HalfPageUp, - } -} - -func (i *detailCmp) BorderText() map[layout.BorderPosition]string { - return map[layout.BorderPosition]string{ - layout.TopLeftBorder: "Log Details", - } + return layout.KeyMapToSlice(i.viewport.KeyMap) } func NewLogsDetails() DetailComponent { diff --git a/internal/tui/components/logs/table.go b/internal/tui/components/logs/table.go index 9500059b1..245714d0d 100644 --- a/internal/tui/components/logs/table.go +++ b/internal/tui/components/logs/table.go @@ -7,31 +7,23 @@ import ( "github.com/charmbracelet/bubbles/key" "github.com/charmbracelet/bubbles/table" tea "github.com/charmbracelet/bubbletea" - "github.com/kujtimiihoxha/termai/internal/logging" - "github.com/kujtimiihoxha/termai/internal/pubsub" - "github.com/kujtimiihoxha/termai/internal/tui/layout" - "github.com/kujtimiihoxha/termai/internal/tui/styles" - "github.com/kujtimiihoxha/termai/internal/tui/util" + "github.com/kujtimiihoxha/opencode/internal/logging" + "github.com/kujtimiihoxha/opencode/internal/pubsub" + "github.com/kujtimiihoxha/opencode/internal/tui/layout" + "github.com/kujtimiihoxha/opencode/internal/tui/styles" + "github.com/kujtimiihoxha/opencode/internal/tui/util" ) type TableComponent interface { tea.Model - layout.Focusable layout.Sizeable layout.Bindings - layout.Bordered } type tableCmp struct { table table.Model } -func (i *tableCmp) BorderText() map[layout.BorderPosition]string { - return map[layout.BorderPosition]string{ - layout.TopLeftBorder: "Logs", - } -} - type selectedLogMsg logging.LogMessage func (i *tableCmp) Init() tea.Cmd { @@ -41,58 +33,42 @@ func (i *tableCmp) Init() tea.Cmd { func (i *tableCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) { var cmds []tea.Cmd - if i.table.Focused() { - switch msg.(type) { - case pubsub.Event[logging.LogMessage]: - i.setRows() - return i, nil - } - prevSelectedRow := i.table.SelectedRow() - t, cmd := i.table.Update(msg) - cmds = append(cmds, cmd) - i.table = t - selectedRow := i.table.SelectedRow() - if selectedRow != nil { - if prevSelectedRow == nil || selectedRow[0] == prevSelectedRow[0] { - var log logging.LogMessage - for _, row := range logging.List() { - if row.ID == selectedRow[0] { - log = row - break - } - } - if log.ID != "" { - cmds = append(cmds, util.CmdHandler(selectedLogMsg(log))) + switch msg.(type) { + case pubsub.Event[logging.LogMessage]: + i.setRows() + return i, nil + } + prevSelectedRow := i.table.SelectedRow() + t, cmd := i.table.Update(msg) + cmds = append(cmds, cmd) + i.table = t + selectedRow := i.table.SelectedRow() + if selectedRow != nil { + if prevSelectedRow == nil || selectedRow[0] == prevSelectedRow[0] { + var log logging.LogMessage + for _, row := range logging.List() { + if row.ID == selectedRow[0] { + log = row + break } } + if log.ID != "" { + cmds = append(cmds, util.CmdHandler(selectedLogMsg(log))) + } } } return i, tea.Batch(cmds...) } func (i *tableCmp) View() string { - return i.table.View() -} - -func (i *tableCmp) Blur() tea.Cmd { - i.table.Blur() - return nil -} - -func (i *tableCmp) Focus() tea.Cmd { - i.table.Focus() - return nil -} - -func (i *tableCmp) IsFocused() bool { - return i.table.Focused() + return styles.ForceReplaceBackgroundWithLipgloss(i.table.View(), styles.Background) } func (i *tableCmp) GetSize() (int, int) { return i.table.Width(), i.table.Height() } -func (i *tableCmp) SetSize(width int, height int) { +func (i *tableCmp) SetSize(width int, height int) tea.Cmd { i.table.SetWidth(width) i.table.SetHeight(height) cloumns := i.table.Columns() @@ -101,6 +77,7 @@ func (i *tableCmp) SetSize(width int, height int) { cloumns[i] = col } i.table.SetColumns(cloumns) + return nil } func (i *tableCmp) BindingKeys() []key.Binding { @@ -150,6 +127,7 @@ func NewLogsTable() TableComponent { table.WithColumns(columns), table.WithStyles(defaultStyles), ) + tableModel.Focus() return &tableCmp{ table: tableModel, } |
