73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package views
|
|
|
|
import (
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
var _ View = &login{}
|
|
|
|
const (
|
|
ViewEventLoginClicked = "login-clicked"
|
|
)
|
|
|
|
type login struct {
|
|
view *tview.Flex
|
|
form *tview.Form
|
|
username string
|
|
password string
|
|
url string
|
|
loginFunc func(u, p, url string)
|
|
exitFunc func()
|
|
}
|
|
|
|
func (l *login) GetView() tview.Primitive {
|
|
return l.view
|
|
}
|
|
|
|
func (l *login) onFormLogin() {
|
|
l.loginFunc(l.username, l.password, l.url)
|
|
}
|
|
|
|
func NewLoginView(loginFunc func(u, p, url string), exitFunc func()) View {
|
|
l := &login{}
|
|
l.loginFunc = loginFunc
|
|
l.exitFunc = exitFunc
|
|
|
|
form := tview.NewForm().
|
|
AddInputField("Server URL", "https://", 20, nil, func(text string) {
|
|
l.url = text
|
|
}).
|
|
AddInputField("Username", "", 20, nil, func(text string) {
|
|
l.username = text
|
|
}).
|
|
AddPasswordField("Password", "", 20, '*', func(text string) {
|
|
l.password = text
|
|
}).
|
|
AddButton("Login", l.onFormLogin).
|
|
AddButton("Quit", func() {
|
|
l.exitFunc()
|
|
})
|
|
form.SetBorder(true).SetTitle(" Login ").SetTitleAlign(tview.AlignCenter)
|
|
|
|
width := 50
|
|
height := 20
|
|
|
|
wrapper := tview.NewFlex().
|
|
AddItem(nil, 0, 1, false).
|
|
AddItem(tview.NewFlex().SetDirection(tview.FlexRow).
|
|
AddItem(nil, 0, 1, false).
|
|
AddItem(form, height, 1, true).
|
|
AddItem(nil, 0, 1, false), width, 1, true).
|
|
AddItem(nil, 0, 1, false)
|
|
|
|
l.view = wrapper
|
|
l.form = form
|
|
|
|
l.GetView().Focus(func(p tview.Primitive) {})
|
|
form.SetFocus(0)
|
|
return l
|
|
}
|
|
|
|
func (l *login) Update() {
|
|
|
|
}
|