|
|
@@ -9,6 +9,7 @@ import (
|
|
|
|
|
|
"wartank/desktop/win_base"
|
|
|
"wartank/pkg/alias"
|
|
|
+ "wartank/pkg/bot"
|
|
|
"wartank/pkg/cons"
|
|
|
"wartank/pkg/types"
|
|
|
)
|
|
|
@@ -16,8 +17,8 @@ import (
|
|
|
// WinBotsList -- показывает список ботов на бото-ферме вар-танк
|
|
|
type WinBotsList struct {
|
|
|
*win_base.WinBase
|
|
|
- botSelect int // Выбранный бот
|
|
|
- dictBot map[int]string // Список ботов
|
|
|
+ botSelect int // Выбранный бот
|
|
|
+ lstBot []*bot.Bot // Список ботов
|
|
|
}
|
|
|
|
|
|
// NewWinBotsList -- возвращает новое окно для ввода списка ботов а бото-ферме вар-танк
|
|
|
@@ -28,18 +29,23 @@ func NewWinBotsList(desk types.IDesktop) (*WinBotsList, error) {
|
|
|
}
|
|
|
sf := &WinBotsList{
|
|
|
WinBase: winBase,
|
|
|
- dictBot: make(map[int]string),
|
|
|
+ lstBot: make([]*bot.Bot, 0),
|
|
|
}
|
|
|
+ sf.updateBots()
|
|
|
_ = tea.Model(sf)
|
|
|
return sf, nil
|
|
|
}
|
|
|
|
|
|
+// Обновляет список ботов
|
|
|
+func (sf *WinBotsList) updateBots() {
|
|
|
+ sf.lstBot = sf.Desk().LstBot()
|
|
|
+ if sf.botSelect >= len(sf.lstBot) {
|
|
|
+ sf.botSelect = len(sf.lstBot) - 1
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// Init -- настраивает окно для бабл-теа
|
|
|
func (sf *WinBotsList) Init() tea.Cmd {
|
|
|
- lstBot := sf.Desk().LstBot()
|
|
|
- for ind, bot := range lstBot {
|
|
|
- sf.dictBot[ind] = bot
|
|
|
- }
|
|
|
return textinput.Blink
|
|
|
}
|
|
|
|
|
|
@@ -53,25 +59,31 @@ func (sf *WinBotsList) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
case "esc": // Вернуться на шаг назад
|
|
|
winName = cons.WinBotsMenu
|
|
|
case "down", "s": // Нажато вниз
|
|
|
- for key := range sf.dictBot {
|
|
|
+ sf.updateBots()
|
|
|
+ for key := range sf.lstBot {
|
|
|
if key == sf.botSelect {
|
|
|
sf.botSelect++
|
|
|
- if sf.botSelect >= len(sf.dictBot) {
|
|
|
- sf.botSelect = len(sf.dictBot) - 1
|
|
|
+ if sf.botSelect >= len(sf.lstBot) {
|
|
|
+ sf.botSelect = len(sf.lstBot) - 1
|
|
|
}
|
|
|
+ sf.Desk().SetBotLogin(sf.lstBot[key].Login_)
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
case "up", "w": // Нажато вверх
|
|
|
- for key := range sf.dictBot {
|
|
|
+ sf.updateBots()
|
|
|
+ for key := range sf.lstBot {
|
|
|
if key == sf.botSelect {
|
|
|
- sf.botSelect++
|
|
|
+ sf.botSelect--
|
|
|
if sf.botSelect < 0 {
|
|
|
sf.botSelect = 0
|
|
|
}
|
|
|
+ sf.Desk().SetBotLogin(sf.lstBot[key].Login_)
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+ case "enter": // Посмотреть бота
|
|
|
+ winName = cons.WinBotShow
|
|
|
}
|
|
|
}
|
|
|
if winName != "" {
|
|
|
@@ -83,13 +95,15 @@ func (sf *WinBotsList) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
|
// View -- перерисовывание окна по требованию
|
|
|
func (sf *WinBotsList) View() string {
|
|
|
s := "=Выбор бота на бото-ферме вар-танк=\n\n"
|
|
|
- for key, bot := range sf.dictBot {
|
|
|
+ sf.updateBots()
|
|
|
+ for key, bot := range sf.lstBot {
|
|
|
if key != sf.botSelect {
|
|
|
- s += fmt.Sprintf("\t\t%v\n", bot)
|
|
|
+ s += fmt.Sprintf("%v)\t%v\n", key, bot.Login_)
|
|
|
continue
|
|
|
}
|
|
|
- s += fmt.Sprintf("=>\t%v\n", bot)
|
|
|
+ s += fmt.Sprintf("%v)=>\t%v\n", key, bot.Login_)
|
|
|
}
|
|
|
- s += "\n\n[ctrl+q]-выход [esc]-назад\n"
|
|
|
+ s += fmt.Sprintf("WinBotsList.View(): select=%v\n", sf.lstBot[sf.botSelect].Login_)
|
|
|
+ s += "\n\n[ctrl+q]-выход [esc]-назад [enter]-просмотр бота\n"
|
|
|
return s
|
|
|
}
|