preparing to refactor main render functions

This commit is contained in:
Jesse Duffield 2022-10-31 12:50:12 -07:00
parent 7324254414
commit 5ffbeae3e8
6 changed files with 99 additions and 74 deletions

View file

@ -119,13 +119,16 @@ func sortContainers(a *commands.Container, b *commands.Container, legacySort boo
return containerStates[a.Container.State] < containerStates[b.Container.State] return containerStates[a.Container.State] < containerStates[b.Container.State]
} }
func (gui *Gui) renderContainerEnv(container *commands.Container) error { type MainRenderTask struct {
if !container.DetailsLoaded() { Wrap bool
return gui.T.NewTask(func(stop chan struct{}) { Autoscroll bool
_ = gui.RenderStringMain(gui.Tr.WaitingForContainerInfo)
}) StrContent string
// TicketTask
} }
func (gui *Gui) renderContainerEnv(container *commands.Container) error {
mainView := gui.Views.Main mainView := gui.Views.Main
mainView.Autoscroll = false mainView.Autoscroll = false
mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel
@ -135,7 +138,14 @@ func (gui *Gui) renderContainerEnv(container *commands.Container) error {
}) })
} }
// I want a struct that gets returned explaining what needs to happen. So for example,
// autoscroll: true, wrap: true, content: string
func (gui *Gui) containerEnv(container *commands.Container) string { func (gui *Gui) containerEnv(container *commands.Container) string {
if !container.DetailsLoaded() {
return gui.Tr.WaitingForContainerInfo
}
if len(container.Details.Config.Env) == 0 { if len(container.Details.Config.Env) == 0 {
return gui.Tr.NothingToDisplay return gui.Tr.NothingToDisplay
} }
@ -163,16 +173,20 @@ func (gui *Gui) containerEnv(container *commands.Container) string {
} }
func (gui *Gui) renderContainerConfig(container *commands.Container) error { func (gui *Gui) renderContainerConfig(container *commands.Container) error {
if !container.DetailsLoaded() {
return gui.T.NewTask(func(stop chan struct{}) {
_ = gui.RenderStringMain(gui.Tr.WaitingForContainerInfo)
})
}
mainView := gui.Views.Main mainView := gui.Views.Main
mainView.Autoscroll = false mainView.Autoscroll = false
mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel
return gui.T.NewTask(func(stop chan struct{}) {
_ = gui.RenderStringMain(gui.containerConfigStr(container))
})
}
func (gui *Gui) containerConfigStr(container *commands.Container) string {
if !container.DetailsLoaded() {
return gui.Tr.WaitingForContainerInfo
}
padding := 10 padding := 10
output := "" output := ""
output += utils.WithPadding("ID: ", padding) + container.ID + "\n" output += utils.WithPadding("ID: ", padding) + container.ID + "\n"
@ -210,13 +224,12 @@ func (gui *Gui) renderContainerConfig(container *commands.Container) error {
data, err := json.MarshalIndent(&container.Details, "", " ") data, err := json.MarshalIndent(&container.Details, "", " ")
if err != nil { if err != nil {
return err return fmt.Sprintf("Error marshalling container details: %v", err)
} }
output += fmt.Sprintf("\nFull details:\n\n%s", string(data)) output += fmt.Sprintf("\nFull details:\n\n%s", string(data))
return gui.T.NewTask(func(stop chan struct{}) { return output
_ = gui.RenderStringMain(output)
})
} }
func (gui *Gui) renderContainerStats(container *commands.Container) error { func (gui *Gui) renderContainerStats(container *commands.Container) error {

View file

@ -68,6 +68,15 @@ func (gui *Gui) getImagesPanel() *panels.SideListPanel[*commands.Image] {
func (gui *Gui) renderImageConfig(image *commands.Image) error { func (gui *Gui) renderImageConfig(image *commands.Image) error {
return gui.T.NewTask(func(stop chan struct{}) { return gui.T.NewTask(func(stop chan struct{}) {
mainView := gui.Views.Main
mainView.Autoscroll = false
mainView.Wrap = false // don't care what your config is this page is ugly without wrapping
_ = gui.RenderStringMain(gui.imageConfigStr(image))
})
}
func (gui *Gui) imageConfigStr(image *commands.Image) string {
padding := 10 padding := 10
output := "" output := ""
output += utils.WithPadding("Name: ", padding) + image.Name + "\n" output += utils.WithPadding("Name: ", padding) + image.Name + "\n"
@ -83,12 +92,7 @@ func (gui *Gui) renderImageConfig(image *commands.Image) error {
output += "\n\n" + history output += "\n\n" + history
mainView := gui.Views.Main return output
mainView.Autoscroll = false
mainView.Wrap = false // don't care what your config is this page is ugly without wrapping
_ = gui.RenderStringMain(output)
})
} }
func (gui *Gui) reloadImages() error { func (gui *Gui) reloadImages() error {

View file

@ -95,10 +95,15 @@ func (gui *Gui) renderCredits(_project *commands.Project) error {
mainView.Autoscroll = false mainView.Autoscroll = false
mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel
_ = gui.RenderStringMain(gui.creditsStr())
})
}
func (gui *Gui) creditsStr() string {
var configBuf bytes.Buffer var configBuf bytes.Buffer
_ = yaml.NewEncoder(&configBuf, yaml.IncludeOmitted).Encode(gui.Config.UserConfig) _ = yaml.NewEncoder(&configBuf, yaml.IncludeOmitted).Encode(gui.Config.UserConfig)
dashboardString := strings.Join( return strings.Join(
[]string{ []string{
lazydockerTitle(), lazydockerTitle(),
"Copyright (c) 2019 Jesse Duffield", "Copyright (c) 2019 Jesse Duffield",
@ -109,9 +114,6 @@ func (gui *Gui) renderCredits(_project *commands.Project) error {
"Here's your lazydocker config when merged in with the defaults (you can open your config by pressing 'o'):", "Here's your lazydocker config when merged in with the defaults (you can open your config by pressing 'o'):",
configBuf.String(), configBuf.String(),
}, "\n\n") }, "\n\n")
_ = gui.RenderStringMain(dashboardString)
})
} }
func (gui *Gui) renderAllLogs(_project *commands.Project) error { func (gui *Gui) renderAllLogs(_project *commands.Project) error {

View file

@ -121,7 +121,7 @@ func (gui *Gui) renderServiceTop(service *commands.Service) error {
func (gui *Gui) renderServiceLogs(service *commands.Service) error { func (gui *Gui) renderServiceLogs(service *commands.Service) error {
if service.Container == nil { if service.Container == nil {
return gui.T.NewTask(func(stop chan struct{}) { return gui.T.NewTask(func(stop chan struct{}) {
gui.clearMainView() gui.reRenderStringMain(gui.Tr.NoContainerForService)
}) })
} }

View file

@ -58,6 +58,11 @@ func (gui *Gui) renderVolumeConfig(volume *commands.Volume) error {
mainView.Autoscroll = false mainView.Autoscroll = false
mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel mainView.Wrap = gui.Config.UserConfig.Gui.WrapMainPanel
_ = gui.RenderStringMain(gui.volumeConfigStr(volume))
})
}
func (gui *Gui) volumeConfigStr(volume *commands.Volume) string {
padding := 15 padding := 15
output := "" output := ""
output += utils.WithPadding("Name: ", padding) + volume.Name + "\n" output += utils.WithPadding("Name: ", padding) + volume.Name + "\n"
@ -82,8 +87,7 @@ func (gui *Gui) renderVolumeConfig(volume *commands.Volume) error {
output += utils.WithPadding("Size: ", padding) + utils.FormatBinaryBytes(int(volume.Volume.UsageData.Size)) + "\n" output += utils.WithPadding("Size: ", padding) + utils.FormatBinaryBytes(int(volume.Volume.UsageData.Size)) + "\n"
} }
_ = gui.RenderStringMain(output) return output
})
} }
func (gui *Gui) reloadVolumes() error { func (gui *Gui) reloadVolumes() error {

View file

@ -112,6 +112,7 @@ type TranslationSet struct {
ContainerConfigTitle string ContainerConfigTitle string
ContainerEnvTitle string ContainerEnvTitle string
NothingToDisplay string NothingToDisplay string
NoContainerForService string
CannotDisplayEnvVariables string CannotDisplayEnvVariables string
No string No string
@ -220,6 +221,7 @@ func englishSet() TranslationSet {
ContainerConfigTitle: "Container Config", ContainerConfigTitle: "Container Config",
ContainerEnvTitle: "Container Env", ContainerEnvTitle: "Container Env",
NothingToDisplay: "Nothing to display", NothingToDisplay: "Nothing to display",
NoContainerForService: "No logs to show; service is not associated with a container",
CannotDisplayEnvVariables: "Something went wrong while displaying environment variables", CannotDisplayEnvVariables: "Something went wrong while displaying environment variables",
NoContainers: "No containers", NoContainers: "No containers",