more progress

pull/1/head
Jesse Duffield 5 years ago
parent 6bbd22bb8d
commit 1585b30904

@ -113,13 +113,7 @@ func (gui *Gui) createPopupPanel(g *gocui.Gui, currentView *gocui.View, title, p
// delete the existing confirmation panel if it exists
if view, _ := g.View("confirmation"); view != nil {
if err := gui.closeConfirmationPrompt(g); err != nil {
errMessage := gui.Tr.TemplateLocalize(
"CantCloseConfirmationPrompt",
Teml{
"error": err.Error(),
},
)
gui.Log.Error(errMessage)
gui.Log.Error(err.Error())
}
}
confirmationView, err := gui.prepareConfirmationPanel(currentView, title, prompt, hasLoader)

@ -1,10 +1,12 @@
package gui
import (
"encoding/json"
"fmt"
"os/exec"
"time"
"github.com/go-errors/errors"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazydocker/pkg/commands"
"github.com/jesseduffield/lazydocker/pkg/utils"
@ -12,6 +14,10 @@ import (
// list panel functions
func (gui *Gui) getContainerContexts() []string {
return []string{"logs", "config"}
}
func (gui *Gui) getSelectedContainer(g *gocui.Gui) (*commands.Container, error) {
selectedLine := gui.State.Panels.Containers.SelectedLine
if selectedLine == -1 {
@ -62,11 +68,6 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View, alreadySelect
return err
}
// data, err := json.MarshalIndent(&container.Container, "", " ")
// if err != nil {
// return err
// }
mainView := gui.getMainView()
gui.State.MainWriterID++
@ -76,16 +77,38 @@ func (gui *Gui) handleContainerSelect(g *gocui.Gui, v *gocui.View, alreadySelect
mainView.SetOrigin(0, 0)
mainView.SetCursor(0, 0)
if err := gui.renderLogs(mainView, container, writerID); err != nil {
switch gui.getContainerContexts()[gui.State.Panels.Containers.ContextIndex] {
case "logs":
if err := gui.renderLogs(mainView, container, writerID); err != nil {
return err
}
case "config":
if err := gui.renderConfig(mainView, container, writerID); err != nil {
return err
}
default:
return errors.New("Unknown context for containers panel")
}
return nil
}
func (gui *Gui) renderConfig(mainView *gocui.View, container *commands.Container, writerID int) error {
mainView.Autoscroll = false
mainView.Title = "Config"
data, err := json.MarshalIndent(&container.Container, "", " ")
if err != nil {
return err
}
gui.renderString(gui.g, "main", string(data))
return nil
}
func (gui *Gui) renderLogs(mainView *gocui.View, container *commands.Container, writerID int) error {
mainView.Autoscroll = true
mainView.Title = "Logs"
var cmd *exec.Cmd
cmd = gui.OSCommand.RunCustomCommand("docker logs --since=60m --timestamps --follow " + container.ID)
@ -179,3 +202,29 @@ func (gui *Gui) handleContainersPrevLine(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) handleContainerPress(g *gocui.Gui, v *gocui.View) error {
return nil
}
func (gui *Gui) handleContainersPrevContext(g *gocui.Gui, v *gocui.View) error {
contexts := gui.getContainerContexts()
if gui.State.Panels.Containers.ContextIndex >= len(contexts)-1 {
gui.State.Panels.Containers.ContextIndex = 0
} else {
gui.State.Panels.Containers.ContextIndex++
}
gui.handleContainerSelect(gui.g, v, true)
return nil
}
func (gui *Gui) handleContainersNextContext(g *gocui.Gui, v *gocui.View) error {
contexts := gui.getContainerContexts()
if gui.State.Panels.Containers.ContextIndex <= 0 {
gui.State.Panels.Containers.ContextIndex = len(contexts) - 1
} else {
gui.State.Panels.Containers.ContextIndex--
}
gui.handleContainerSelect(gui.g, v, true)
return nil
}

@ -75,6 +75,7 @@ type Gui struct {
type containerPanelState struct {
SelectedLine int
ContextIndex int // for specifying if you are looking at logs/stats/config/etc
}
type menuPanelState struct {
@ -105,7 +106,7 @@ func NewGui(log *logrus.Entry, dockerCommand *commands.DockerCommand, oSCommand
PreviousView: "containers",
Platform: *oSCommand.Platform,
Panels: &panelStates{
Containers: &containerPanelState{SelectedLine: -1},
Containers: &containerPanelState{SelectedLine: -1, ContextIndex: 0},
Menu: &menuPanelState{SelectedLine: 0},
},
MainWriterID: 0,
@ -290,7 +291,6 @@ func (gui *Gui) layout(g *gocui.Gui) error {
if err.Error() != "unknown view" {
return err
}
v.Title = gui.Tr.SLocalize("DiffTitle")
v.Wrap = true
v.FgColor = gocui.ColorWhite
}

@ -138,6 +138,16 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Key: gocui.MouseLeft,
Modifier: gocui.ModNone,
Handler: gui.handleDonate,
}, {
ViewName: "containers",
Key: '[',
Modifier: gocui.ModNone,
Handler: gui.handleContainersPrevContext,
}, {
ViewName: "containers",
Key: ']',
Modifier: gocui.ModNone,
Handler: gui.handleContainersNextContext,
},
}

@ -107,13 +107,7 @@ func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error {
}
gui.Log.Info("setting highlight to true for view" + newView.Name())
message := gui.Tr.TemplateLocalize(
"newFocusedViewIs",
Teml{
"newFocusedView": newView.Name(),
},
)
gui.Log.Info(message)
gui.Log.Info("new focused view is " + newView.Name())
if _, err := g.SetCurrentView(newView.Name()); err != nil {
return err
}

Loading…
Cancel
Save