I did not give a full review to the panes.go file. Its just too big and likely pretty simple.
80 lines
1.6 KiB
Go
80 lines
1.6 KiB
Go
package tui
|
|
|
|
import "strings"
|
|
|
|
func (m Model) renderAppPane() string {
|
|
// Constant height offset
|
|
constHeightOffset := 2
|
|
|
|
var (
|
|
searchW int = max(0, m.width)
|
|
searchH int = 1
|
|
|
|
reqW int = max(0, int(float64(m.width)*0.5))
|
|
detW int = max(0, m.width-reqW)
|
|
|
|
reqH int = max(0, m.height-constHeightOffset)
|
|
detH int = max(0, m.height-constHeightOffset)
|
|
|
|
eventW int = max(0, m.width)
|
|
eventH int = max(0, int(float64(m.height)*0.2))
|
|
|
|
stdW int = max(0, m.width)
|
|
stdH int = max(0, int(float64(m.height)*0.2))
|
|
)
|
|
|
|
if m.showSearch {
|
|
reqH = max(0, reqH-searchH)
|
|
detH = max(0, detH-searchH)
|
|
}
|
|
|
|
if m.showEvents {
|
|
reqH = max(0, reqH-eventH)
|
|
detH = max(0, detH-eventH)
|
|
}
|
|
|
|
if m.showStd {
|
|
reqH = max(0, reqH-stdH)
|
|
detH = max(0, detH-stdH)
|
|
}
|
|
|
|
reqPane := m.renderRequestPane(reqW, reqH)
|
|
detPane := m.renderDetailsPane(detW, detH)
|
|
|
|
if len(reqPane) != len(detPane) {
|
|
return "height of request and details did not match"
|
|
}
|
|
|
|
var screen []string
|
|
statusBar := m.renderStatusBar(m.width)
|
|
screen = append(screen, statusBar)
|
|
|
|
if m.showSearch {
|
|
searchPane := m.renderSearchPane(searchW, searchH)
|
|
screen = append(screen, searchPane...)
|
|
}
|
|
|
|
for i := range reqPane {
|
|
screen = append(screen, reqPane[i]+detPane[i])
|
|
}
|
|
|
|
if m.showEvents {
|
|
eventPane := m.renderEventsPane(eventW, eventH)
|
|
screen = append(screen, eventPane...)
|
|
}
|
|
|
|
if m.showStd {
|
|
stdPane := m.renderStdPane(stdW, stdH)
|
|
screen = append(screen, stdPane...)
|
|
}
|
|
|
|
statusBottom := m.renderBottomStatusBar(m.width)
|
|
screen = append(screen, statusBottom)
|
|
|
|
if len(screen) != m.height {
|
|
return "height of screen does not match terminal height"
|
|
}
|
|
|
|
return strings.Join(screen, ("\n"))
|
|
}
|