diff --git a/runtime/ui/view/layer.go b/runtime/ui/view/layer.go index ce6954a0..9e71ff8b 100644 --- a/runtime/ui/view/layer.go +++ b/runtime/ui/view/layer.go @@ -221,6 +221,14 @@ func (v *Layer) CursorUp() error { return nil } +// SetOrigin updates the origin of the layer view pane. +func (v *Layer) SetOrigin(x, y int) error { + if err := v.body.SetOrigin(x, y); err != nil { + return err + } + return nil +} + // SetCursor resets the cursor and orients the file tree view based on the given layer index. func (v *Layer) SetCursor(layer int) error { v.vm.LayerIndex = layer @@ -340,6 +348,15 @@ func (v *Layer) Render() error { return err } } + + // Adjust origin, if necessary + maxBodyDisplayHeight := int(v.height()) + if v.vm.LayerIndex > maxBodyDisplayHeight { + if err := v.SetOrigin(0, v.vm.LayerIndex-maxBodyDisplayHeight); err != nil { + return err + } + } + return nil }) return nil diff --git a/runtime/ui/view/layer_details.go b/runtime/ui/view/layer_details.go index bfcb4252..20c77a81 100644 --- a/runtime/ui/view/layer_details.go +++ b/runtime/ui/view/layer_details.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/awesome-gocui/gocui" + "github.com/dustin/go-humanize" "github.com/sirupsen/logrus" "github.com/wagoodman/dive/dive/image" @@ -82,9 +83,11 @@ func (v *LayerDetails) Render() error { if v.CurrentLayer.Names != nil && len(v.CurrentLayer.Names) > 0 { tags = strings.Join(v.CurrentLayer.Names, ", ") } + lines = append(lines, []string{ format.Header("Tags: ") + tags, format.Header("Id: ") + v.CurrentLayer.Id, + format.Header("Size: ") + humanize.Bytes(v.CurrentLayer.Size), format.Header("Digest: ") + v.CurrentLayer.Digest, format.Header("Command:"), v.CurrentLayer.Command,