diff --git a/internal/views/cluster_info.go b/internal/views/cluster_info.go index 593c2746..2caf80b3 100644 --- a/internal/views/cluster_info.go +++ b/internal/views/cluster_info.go @@ -92,9 +92,10 @@ func (v *clusterInfoView) infoCell(t string) *tview.TableCell { } func (v *clusterInfoView) refresh() { - cluster := resource.NewCluster(v.app.conn(), &log.Logger, v.mxs) - - var row int + var ( + cluster = resource.NewCluster(v.app.conn(), &log.Logger, v.mxs) + row int + ) v.GetCell(row, 1).SetText(cluster.ContextName()) row++ v.GetCell(row, 1).SetText(cluster.ClusterName()) @@ -109,6 +110,10 @@ func (v *clusterInfoView) refresh() { c = v.GetCell(row+1, 1) c.SetText(resource.NAValue) + v.refreshMetrics(cluster, row) +} + +func (v *clusterInfoView) refreshMetrics(cluster *resource.Cluster, row int) { nos, err := v.app.informer.List(watch.NodeIndex, "", metav1.ListOptions{}) if err != nil { log.Warn().Err(err).Msg("ListNodes") @@ -122,7 +127,7 @@ func (v *clusterInfoView) refresh() { var cmx k8s.ClusterMetrics cluster.Metrics(nos, nmx, &cmx) - c = v.GetCell(row, 1) + c := v.GetCell(row, 1) cpu := resource.AsPerc(cmx.PercCPU) if cpu == "0" { cpu = resource.NAValue diff --git a/internal/views/log.go b/internal/views/log.go index eabc1d87..2204f3e5 100644 --- a/internal/views/log.go +++ b/internal/views/log.go @@ -15,26 +15,45 @@ import ( "github.com/rs/zerolog/log" ) -type logView struct { - *tview.Flex +type ( + logFrame struct { + *tview.Flex + app *appView + actions keyActions + backFn actionHandler + } - app *appView - backFn actionHandler - logs *detailsView - status *statusView - ansiWriter io.Writer - autoScroll int32 - actions keyActions - path string + logView struct { + *logFrame + logs *detailsView + status *statusView + ansiWriter io.Writer + autoScroll int32 + path string + } +) + +func newLogFrame(app *appView, backFn actionHandler) *logFrame { + f := logFrame{ + Flex: tview.NewFlex(), + app: app, + backFn: backFn, + actions: make(keyActions), + } + f.SetBorder(true) + f.SetBackgroundColor(config.AsColor(app.styles.Views().Log.BgColor)) + f.SetBorderPadding(0, 0, 1, 1) + f.SetDirection(tview.FlexRow) + + return &f } -func newLogView(title string, app *appView, backFn actionHandler) *logView { - v := logView{Flex: tview.NewFlex(), app: app} - v.autoScroll = 1 - v.backFn = backFn - v.SetBorder(true) - v.SetBackgroundColor(config.AsColor(app.styles.Views().Log.BgColor)) - v.SetBorderPadding(0, 0, 1, 1) +func newLogView(_ string, app *appView, backFn actionHandler) *logView { + v := logView{ + logFrame: newLogFrame(app, backFn), + autoScroll: 1, + } + v.logs = newDetailsView(app, backFn) { v.logs.SetBorder(false) @@ -47,10 +66,16 @@ func newLogView(title string, app *appView, backFn actionHandler) *logView { } v.ansiWriter = tview.ANSIWriter(v.logs) v.status = newStatusView(app.styles) - v.SetDirection(tview.FlexRow) v.AddItem(v.status, 1, 1, false) v.AddItem(v.logs, 0, 1, true) + v.bindKeys() + v.logs.SetInputCapture(v.keyboard) + + return &v +} + +func (v *logView) bindKeys() { v.actions = keyActions{ tcell.KeyEscape: newKeyAction("Back", v.backCmd, true), KeyC: newKeyAction("Clear", v.clearCmd, true), @@ -61,9 +86,6 @@ func newLogView(title string, app *appView, backFn actionHandler) *logView { KeyB: newKeyAction("Down", v.pageDownCmd, false), tcell.KeyCtrlS: newKeyAction("Save", v.saveCmd, true), } - v.logs.SetInputCapture(v.keyboard) - - return &v } // Hints show action hints