Skip to content

Commit 29891c0

Browse files
committed
feat: improve empty state
1 parent a93e682 commit 29891c0

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

internal/tui/view.go

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -47,37 +47,14 @@ func (m model) renderTitle() string {
4747
func (m model) renderFilters() string {
4848
var parts []string
4949

50-
if m.showTCP {
51-
parts = append(parts, m.theme.Styles.Success.Render("tcp"))
52-
} else {
53-
parts = append(parts, m.theme.Styles.Normal.Render("tcp"))
54-
}
55-
56-
if m.showUDP {
57-
parts = append(parts, m.theme.Styles.Success.Render("udp"))
58-
} else {
59-
parts = append(parts, m.theme.Styles.Normal.Render("udp"))
60-
}
50+
parts = append(parts, m.renderFilterLabel("t", "cp", m.showTCP))
51+
parts = append(parts, m.renderFilterLabel("u", "dp", m.showUDP))
6152

6253
parts = append(parts, m.theme.Styles.Border.Render(BoxVertical))
6354

64-
if m.showListening {
65-
parts = append(parts, m.theme.Styles.Success.Render("listen"))
66-
} else {
67-
parts = append(parts, m.theme.Styles.Normal.Render("listen"))
68-
}
69-
70-
if m.showEstablished {
71-
parts = append(parts, m.theme.Styles.Success.Render("estab"))
72-
} else {
73-
parts = append(parts, m.theme.Styles.Normal.Render("estab"))
74-
}
75-
76-
if m.showOther {
77-
parts = append(parts, m.theme.Styles.Success.Render("other"))
78-
} else {
79-
parts = append(parts, m.theme.Styles.Normal.Render("other"))
80-
}
55+
parts = append(parts, m.renderFilterLabel("l", "isten", m.showListening))
56+
parts = append(parts, m.renderFilterLabel("e", "stab", m.showEstablished))
57+
parts = append(parts, m.renderFilterLabel("o", "ther", m.showOther))
8158

8259
left := " " + strings.Join(parts, " ")
8360

@@ -119,6 +96,18 @@ func (m model) renderTableHeader() string {
11996
return m.theme.Styles.Header.Render(header) + "\n"
12097
}
12198

99+
func (m model) renderFilterLabel(firstChar, rest string, active bool) string {
100+
baseStyle := m.theme.Styles.Normal
101+
if active {
102+
baseStyle = m.theme.Styles.Success
103+
}
104+
105+
underlinedFirst := baseStyle.Underline(true).Render(firstChar)
106+
restPart := baseStyle.Render(rest)
107+
108+
return underlinedFirst + restPart
109+
}
110+
122111
func (m model) renderSeparator() string {
123112
w := m.width - 4
124113
if w < 1 {
@@ -134,8 +123,11 @@ func (m model) renderConnections() string {
134123
pageSize := m.pageSize()
135124

136125
if len(visible) == 0 {
137-
empty := "\n " + m.theme.Styles.Normal.Render("no connections match filters") + "\n"
138-
return empty
126+
b.WriteString(" " + m.theme.Styles.Normal.Render("no connections match filters") + "\n")
127+
for i := 1; i < pageSize; i++ {
128+
b.WriteString("\n")
129+
}
130+
return b.String()
139131
}
140132

141133
start := m.scrollOffset(pageSize, len(visible))

0 commit comments

Comments
 (0)