Files
lazyssh/internal/adapters/ui/server_details.go
T

43 lines
1.1 KiB
Go

package ui
import (
"fmt"
"github.com/Adembc/lazyssh/internal/core/domain"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
type ServerDetails struct {
*tview.TextView
}
func NewServerDetails() *ServerDetails {
details := &ServerDetails{
TextView: tview.NewTextView(),
}
details.build()
return details
}
func (sd *ServerDetails) build() {
sd.SetDynamicColors(true).
SetWrap(true).
SetBorder(true).
SetTitle("Details").
SetBorderColor(tcell.Color238).
SetTitleColor(tcell.Color250)
}
func (sd *ServerDetails) UpdateServer(server domain.Server) {
text := fmt.Sprintf(
"[::b]%s[-]\n\nHost: [white]%s[-]\nUser: [white]%s[-]\nPort: [white]%d[-]\nKey: [white]%s[-]\nTags: [white]%s[-]\nStatus: %s\nLast: %s\n\n[::b]Commands:[-]\n Enter: SSH connect\n a: Add new server\n e: Edit entry\n d: Delete entry",
server.Alias, server.Host, server.User, server.Port,
server.Key, joinTags(server.Tags), statusIcon(server.Status),
server.LastSeen.Format("2006-01-02 15:04"))
sd.SetText(text)
}
func (sd *ServerDetails) ShowEmpty() {
sd.SetText("No servers match the current filter.")
}