| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package tui
- import (
- "pingo/internal/ping"
- "time"
- "github.com/charmbracelet/lipgloss"
- )
- type Address struct {
- Address string
- results []float64
- max_results int
- }
- func (a *Address) Truncate() (truncated bool) {
- if len(a.results) > a.max_results {
- a.results = a.results[1:len(a.results)] // return modified slice missing first index
- return true
- }
- return false
- }
- // Wraps [ping.Ping]
- func (a *Address) Ping() (delay float64, err error) {
- return ping.Ping(a.Address)
- }
- // Poll pings the affiliated Address and appends it to a.results
- func (a *Address) Poll() (success bool, err error) {
- if delay, err := a.Ping(); err == nil {
- a.results = append(a.results, delay)
- a.Truncate() // enforce max length
- return true, nil
- } else {
- a.results = append(a.results, delay)
- a.Truncate() // enforce max length
- return false, err
- }
- }
- // Last returns the last result in [Address.results]. Returns -1 if no previous result
- func (a *Address) Last() (delay float64) {
- if len(a.results) > 0 {
- return a.results[len(a.results)-1]
- } else {
- return -1
- }
- }
- // [tea.Msg] signatures
- type tickMsg time.Time
- // A simple boolean flag sent when the program is ready to poll addresses
- type pollMsg bool
- // / A simple error message binding to conform to type [tea.Cmd]
- type errMsg struct{ err error }
- func (e errMsg) Error() string { return e.err.Error() }
- // Style Defintions
- // A style for chart headers
- var headerStyle = lipgloss.NewStyle().
- Bold(true).
- Italic(true)
- // A style for info text
- var infoStyle = lipgloss.NewStyle().
- Italic(true).
- Faint(true)
- // A style for the base colour
- // var baseColor = lipgloss.NewStyle().
- // Foreground(lipgloss.Color("#19535f"))
- // A style for the lower colour
- // var lowerColor = lipgloss.NewStyle().
- // Foreground(lipgloss.Color("#0b7a75"))
- // A style for the middle colour
- // var middleColor = lipgloss.NewStyle().
- // Foreground(lipgloss.Color("#d7c9aa"))
- // A style for the secondary colour
- var secondaryColor = lipgloss.NewStyle().
- Foreground(lipgloss.Color("#7b2d26"))
- // A style for the primary colour
- // var primaryColor = lipgloss.NewStyle().
- // Foreground(lipgloss.Color("#f0f3f5"))
|