|
@@ -13,31 +13,33 @@ import (
|
|
|
"wartank/pkg/types"
|
|
"wartank/pkg/types"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-// WinBotsList -- конфигурация для добавления пароля бота на бото-ферму вар-танк
|
|
|
|
|
|
|
+// WinBotsList -- показывает список ботов на бото-ферме вар-танк
|
|
|
type WinBotsList struct {
|
|
type WinBotsList struct {
|
|
|
*win_base.WinBase
|
|
*win_base.WinBase
|
|
|
- textInput textinput.Model
|
|
|
|
|
|
|
+ botSelect int // Выбранный бот
|
|
|
|
|
+ dictBot map[int]string // Список ботов
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// NewWinBotsAddPass -- возвращает новое окно для ввода пароля бота при добавлению на бото-ферму вар-танк
|
|
|
|
|
-func NewWinBotsAddPass(desk types.IDesktop) (*WinBotsList, error) {
|
|
|
|
|
|
|
+// NewWinBotsList -- возвращает новое окно для ввода списка ботов а бото-ферме вар-танк
|
|
|
|
|
+func NewWinBotsList(desk types.IDesktop) (*WinBotsList, error) {
|
|
|
winBase, err := win_base.NewWinBase(desk, cons.WinBotsAddPass)
|
|
winBase, err := win_base.NewWinBase(desk, cons.WinBotsAddPass)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewWinBotsAddPass(): in create WinBase, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewWinBotsList(): in create WinBase, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
sf := &WinBotsList{
|
|
sf := &WinBotsList{
|
|
|
- WinBase: winBase,
|
|
|
|
|
- textInput: textinput.New(),
|
|
|
|
|
|
|
+ WinBase: winBase,
|
|
|
|
|
+ dictBot: make(map[int]string),
|
|
|
}
|
|
}
|
|
|
- sf.textInput.Placeholder = "wartank"
|
|
|
|
|
- sf.textInput.Focus()
|
|
|
|
|
- sf.textInput.Width = 30
|
|
|
|
|
_ = tea.Model(sf)
|
|
_ = tea.Model(sf)
|
|
|
return sf, nil
|
|
return sf, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Init -- настраивает окно для бабл-теа
|
|
// Init -- настраивает окно для бабл-теа
|
|
|
func (sf *WinBotsList) Init() tea.Cmd {
|
|
func (sf *WinBotsList) Init() tea.Cmd {
|
|
|
|
|
+ lstBot := sf.Desk().LstBot()
|
|
|
|
|
+ for ind, bot := range lstBot {
|
|
|
|
|
+ sf.dictBot[ind] = bot
|
|
|
|
|
+ }
|
|
|
return textinput.Blink
|
|
return textinput.Blink
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -50,11 +52,26 @@ func (sf *WinBotsList) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
switch msg.String() { // Да, нажато, а что именно?
|
|
|
case "esc": // Вернуться на шаг назад
|
|
case "esc": // Вернуться на шаг назад
|
|
|
winName = cons.WinBotsMenu
|
|
winName = cons.WinBotsMenu
|
|
|
- case "enter": // Нажатие "enter" вводит фактическое значение
|
|
|
|
|
- sf.Desk().SetBotPass(sf.textInput.Value())
|
|
|
|
|
- winName = cons.WinBotsMenu
|
|
|
|
|
- default:
|
|
|
|
|
- sf.textInput, _ = sf.textInput.Update(msg)
|
|
|
|
|
|
|
+ case "down", "s": // Нажато вниз
|
|
|
|
|
+ for key := range sf.dictBot {
|
|
|
|
|
+ if key == sf.botSelect {
|
|
|
|
|
+ sf.botSelect++
|
|
|
|
|
+ if sf.botSelect >= len(sf.dictBot) {
|
|
|
|
|
+ sf.botSelect = len(sf.dictBot) - 1
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ case "up", "w": // Нажато вверх
|
|
|
|
|
+ for key := range sf.dictBot {
|
|
|
|
|
+ if key == sf.botSelect {
|
|
|
|
|
+ sf.botSelect++
|
|
|
|
|
+ if sf.botSelect < 0 {
|
|
|
|
|
+ sf.botSelect = 0
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if winName != "" {
|
|
if winName != "" {
|
|
@@ -65,8 +82,14 @@ func (sf *WinBotsList) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
|
|
|
|
|
// View -- перерисовывание окна по требованию
|
|
// View -- перерисовывание окна по требованию
|
|
|
func (sf *WinBotsList) View() string {
|
|
func (sf *WinBotsList) View() string {
|
|
|
- s := "=Добавление пароля бота на бото-ферму вар-танк=\n\n"
|
|
|
|
|
- s += fmt.Sprintf(">%v\n", sf.textInput.View())
|
|
|
|
|
|
|
+ s := "=Выбор бота на бото-ферме вар-танк=\n\n"
|
|
|
|
|
+ for key, bot := range sf.dictBot {
|
|
|
|
|
+ if key != sf.botSelect {
|
|
|
|
|
+ s += fmt.Sprintf("\t\t%v\n", bot)
|
|
|
|
|
+ continue
|
|
|
|
|
+ }
|
|
|
|
|
+ s += fmt.Sprintf("=>\t%v\n", bot)
|
|
|
|
|
+ }
|
|
|
s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
return s
|
|
return s
|
|
|
}
|
|
}
|