summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/components/logs/table.go
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-09 19:07:39 +0200
committerKujtim Hoxha <[email protected]>2025-04-09 19:07:39 +0200
commitd39d52d95d6aaab67fb3a17efb9ed62cc290e72f (patch)
tree940bad6f0c847ceb213e5fc684b6d87cbf9d6996 /internal/tui/components/logs/table.go
parent0d8d324ac6e640b95f4f2f62fd189399a959319a (diff)
downloadopencode-d39d52d95d6aaab67fb3a17efb9ed62cc290e72f.tar.gz
opencode-d39d52d95d6aaab67fb3a17efb9ed62cc290e72f.zip
finish logs page
Diffstat (limited to 'internal/tui/components/logs/table.go')
-rw-r--r--internal/tui/components/logs/table.go38
1 files changed, 27 insertions, 11 deletions
diff --git a/internal/tui/components/logs/table.go b/internal/tui/components/logs/table.go
index c268fc686..e84b4149c 100644
--- a/internal/tui/components/logs/table.go
+++ b/internal/tui/components/logs/table.go
@@ -11,6 +11,7 @@ import (
"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"
)
type TableComponent interface {
@@ -26,29 +27,42 @@ type tableCmp struct {
table table.Model
}
+type selectedLogMsg logging.LogMessage
+
func (i *tableCmp) Init() tea.Cmd {
i.setRows()
return nil
}
func (i *tableCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
+ var cmds []tea.Cmd
if i.table.Focused() {
- switch msg := msg.(type) {
- case pubsub.Event[logging.Message]:
+ switch msg.(type) {
+ case pubsub.Event[logging.LogMessage]:
i.setRows()
return i, nil
- case tea.KeyMsg:
- if msg.String() == "ctrl+s" {
- logger.Info("Saving logs...",
- "rows", len(i.table.Rows()),
- )
- }
}
+ prevSelectedRow := i.table.SelectedRow()
t, cmd := i.table.Update(msg)
+ cmds = append(cmds, cmd)
i.table = t
- return i, cmd
+ selectedRow := i.table.SelectedRow()
+ if selectedRow != nil {
+ if prevSelectedRow == nil || selectedRow[0] == prevSelectedRow[0] {
+ var log logging.LogMessage
+ for _, row := range logging.Get().List() {
+ if row.ID == selectedRow[0] {
+ log = row
+ break
+ }
+ }
+ if log.ID != "" {
+ cmds = append(cmds, util.CmdHandler(selectedLogMsg(log)))
+ }
+ }
+ }
}
- return i, nil
+ return i, tea.Batch(cmds...)
}
func (i *tableCmp) View() string {
@@ -92,7 +106,7 @@ func (i *tableCmp) setRows() {
rows := []table.Row{}
logs := logger.List()
- slices.SortFunc(logs, func(a, b logging.Message) int {
+ slices.SortFunc(logs, func(a, b logging.LogMessage) int {
if a.Time.Before(b.Time) {
return 1
}
@@ -106,6 +120,7 @@ func (i *tableCmp) setRows() {
bm, _ := json.Marshal(log.Attributes)
row := table.Row{
+ log.ID,
log.Time.Format("15:04:05"),
log.Level,
log.Message,
@@ -118,6 +133,7 @@ func (i *tableCmp) setRows() {
func NewLogsTable() TableComponent {
columns := []table.Column{
+ {Title: "ID", Width: 4},
{Title: "Time", Width: 4},
{Title: "Level", Width: 10},
{Title: "Message", Width: 10},