feat: improve empty state

This commit is contained in:
Karol Broda
2025-12-21 12:13:50 +01:00
parent a93e682aa2
commit 29891c0bb8

View File

@@ -47,37 +47,14 @@ func (m model) renderTitle() string {
func (m model) renderFilters() string { func (m model) renderFilters() string {
var parts []string var parts []string
if m.showTCP { parts = append(parts, m.renderFilterLabel("t", "cp", m.showTCP))
parts = append(parts, m.theme.Styles.Success.Render("tcp")) parts = append(parts, m.renderFilterLabel("u", "dp", m.showUDP))
} else {
parts = append(parts, m.theme.Styles.Normal.Render("tcp"))
}
if m.showUDP {
parts = append(parts, m.theme.Styles.Success.Render("udp"))
} else {
parts = append(parts, m.theme.Styles.Normal.Render("udp"))
}
parts = append(parts, m.theme.Styles.Border.Render(BoxVertical)) parts = append(parts, m.theme.Styles.Border.Render(BoxVertical))
if m.showListening { parts = append(parts, m.renderFilterLabel("l", "isten", m.showListening))
parts = append(parts, m.theme.Styles.Success.Render("listen")) parts = append(parts, m.renderFilterLabel("e", "stab", m.showEstablished))
} else { parts = append(parts, m.renderFilterLabel("o", "ther", m.showOther))
parts = append(parts, m.theme.Styles.Normal.Render("listen"))
}
if m.showEstablished {
parts = append(parts, m.theme.Styles.Success.Render("estab"))
} else {
parts = append(parts, m.theme.Styles.Normal.Render("estab"))
}
if m.showOther {
parts = append(parts, m.theme.Styles.Success.Render("other"))
} else {
parts = append(parts, m.theme.Styles.Normal.Render("other"))
}
left := " " + strings.Join(parts, " ") left := " " + strings.Join(parts, " ")
@@ -119,6 +96,18 @@ func (m model) renderTableHeader() string {
return m.theme.Styles.Header.Render(header) + "\n" return m.theme.Styles.Header.Render(header) + "\n"
} }
func (m model) renderFilterLabel(firstChar, rest string, active bool) string {
baseStyle := m.theme.Styles.Normal
if active {
baseStyle = m.theme.Styles.Success
}
underlinedFirst := baseStyle.Underline(true).Render(firstChar)
restPart := baseStyle.Render(rest)
return underlinedFirst + restPart
}
func (m model) renderSeparator() string { func (m model) renderSeparator() string {
w := m.width - 4 w := m.width - 4
if w < 1 { if w < 1 {
@@ -134,8 +123,11 @@ func (m model) renderConnections() string {
pageSize := m.pageSize() pageSize := m.pageSize()
if len(visible) == 0 { if len(visible) == 0 {
empty := "\n " + m.theme.Styles.Normal.Render("no connections match filters") + "\n" b.WriteString(" " + m.theme.Styles.Normal.Render("no connections match filters") + "\n")
return empty for i := 1; i < pageSize; i++ {
b.WriteString("\n")
}
return b.String()
} }
start := m.scrollOffset(pageSize, len(visible)) start := m.scrollOffset(pageSize, len(visible))