1package policy
2
3import (
4 "github.com/The-Robin-Hood/ufWall/internal/ufw"
5 "github.com/The-Robin-Hood/ufWall/internal/ui"
6
7 "github.com/charmbracelet/lipgloss"
8)
9
10func (m Model) View(policy ufw.Policy) string {
11
12 incomingStyle := ui.GetPolicyStyle(m.styles, policy.DefaultIncoming)
13 outgoingStyle := ui.GetPolicyStyle(m.styles, policy.DefaultOutgoing)
14 routedStyle := ui.GetPolicyStyle(m.styles, policy.DefaultRouted)
15
16 incomingLine := lipgloss.JoinHorizontal(
17 lipgloss.Left,
18 m.styles.Label.Width(15).Render("Incoming:"),
19 incomingStyle.Render(policy.DefaultIncoming),
20 )
21
22 outgoingLine := lipgloss.JoinHorizontal(
23 lipgloss.Left,
24 m.styles.Label.Width(15).Render("Outgoing:"),
25 outgoingStyle.Render(policy.DefaultOutgoing),
26 )
27
28 routedLine := lipgloss.JoinHorizontal(
29 lipgloss.Left,
30 m.styles.Label.Width(15).Render("Routed:"),
31 routedStyle.Render(policy.DefaultRouted),
32 )
33
34 sectionActiveNoMenu := m.menu == nil && m.active
35
36 content := lipgloss.JoinVertical(
37 lipgloss.Top,
38 ui.InsertCursor(incomingLine, m.cursorLine == 0 && sectionActiveNoMenu, m.styles),
39 ui.InsertCursor(outgoingLine, m.cursorLine == 1 && sectionActiveNoMenu, m.styles),
40 ui.InsertCursor(routedLine, m.cursorLine == 2 && sectionActiveNoMenu, m.styles),
41 )
42
43 return ui.TitledBox("Default Policies", content, m.styles, 38, m.active)
44}