Переглянути джерело

d01 Добавление меню бото-фермы

SVI 2 роки тому
батько
коміт
f7e619029b

+ 0 - 14
desktop/client_serv/client_serv.go

@@ -58,17 +58,3 @@ func (sf *ClientServ) Login(login, pass string) error {
 	}
 	return nil
 }
-
-// MakeAdmin -- создаёт админа на сервере
-func (sf *ClientServ) MakeAdmin(pass string) error {
-	log.Println("ClientServ.MakeAdmin()")
-	req := &serv_rpc.MakeAdminReq{
-		Pass: pass,
-	}
-	resp := &serv_rpc.MakeAdminResp{}
-	err := sf.client.Call("ServRpc.MakeAdmin", req, resp)
-	if err != nil {
-		return fmt.Errorf("ClientServ.MakeAdmin(): in make request, err=\n\t%w", err)
-	}
-	return nil
-}

+ 8 - 43
desktop/desktop.go

@@ -9,6 +9,7 @@ import (
 	tea "github.com/charmbracelet/bubbletea"
 
 	"wartank/desktop/client_serv"
+	"wartank/desktop/win_bots_menu"
 	"wartank/desktop/win_config"
 	"wartank/desktop/win_config_server"
 	"wartank/desktop/win_config_server_host_input"
@@ -93,6 +94,13 @@ func NewDesktop() (*Desktop, error) {
 			}
 			sf.dictWin[winServerConnect.Name()] = winServerConnect
 		}
+		{ // WinBotsMenu
+			winBotsMenu, err := win_bots_menu.NewWinBotsMenu(sf)
+			if err != nil {
+				return nil, fmt.Errorf("NewDesktop(): in create WinBotsMenu, err=\n\t%w", err)
+			}
+			sf.dictWin[winBotsMenu.Name()] = winBotsMenu
+		}
 	}
 	sf.winName = cons.WinDefault
 	go sf.tick()
@@ -163,15 +171,6 @@ func (sf *Desktop) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		return mod_, cmd_
 	}
 	/*
-		 case ModeServerMakeAdmin:
-			switch msg := msg.(type) {
-			// Может клавиша нажата
-			case tea.KeyMsg:
-				switch msg.String() { // Да, нажато, а что именно?
-				case "esc": // Нажатие "esc" прекращает создание админа
-					desk.winName = ModeConfig
-				}
-			}
 		 case ModeShowMenuBot:
 		 	// Может клавиша нажата
 		 	switch msg := msg.(type) {
@@ -192,8 +191,6 @@ func (sf *Desktop) View() string {
 	s += fmt.Sprintf("\tХост=%q\tЛогин=%q\tПароль=%q\tПодключено=%v\tЛогин=%v\tЕстьАдмин=%v\n\n", desk.host, desk.login, desk.pass, desk.isConnect, desk.isLogin, desk.isMakeAdmin)
 	s += desk.dictWin[desk.winName].View()
 	/*
-		case ModeServerMakeAdmin: // Режим содания админа на бот-сервере
-			s += desk.winServerMakeAdmin()
 		case ModeShowMenuBot: // Меню бото-фермы
 			s += desk.winMenuBotoFerma()
 		}
@@ -201,38 +198,6 @@ func (sf *Desktop) View() string {
 	return s
 }
 
-/*
-func (sf *Desktop) winMenuBotoFerma() string {
-	s := "=Меню бото-фермы вар-танк=\n\n"
-	s += "[1]-Список ботов\n"
-	s += "[2]-Добавить бота\n"
-	s += "[3]-Удалить бота\n"
-	s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
-	return s
-}
-
-func (sf *Desktop) winServerMakeAdmin() string {
-	s := "=Создание админа на бот-сервере вар-танк=\n\n"
-	if !desk.isMakeAdmin {
-		err := desk.client.MakeAdmin(desk.pass)
-		if err != nil {
-			s += fmt.Sprintf("Desktop.winServerMakeAdmin(): err=\n\t%v", err)
-			s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
-			return s
-		}
-	}
-	s += "Desktop.winServerMakeAdmin(): ok\n"
-	desk.isMakeAdmin = true
-	s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
-	return s
-}
-
-func (sf *Desktop) winServerLogin() string {
-
-}
-
-*/
-
 // IsLogin -- возвращает признак логина на сервер ботов
 func (sf *Desktop) IsLogin() bool {
 	return sf.isLogin

+ 61 - 0
desktop/win_bots_menu/win_bot_menu.go

@@ -0,0 +1,61 @@
+// package win_bots_menu -- меню бото-фермы
+package win_bots_menu
+
+import (
+	"fmt"
+
+	tea "github.com/charmbracelet/bubbletea"
+
+	"wartank/desktop/win_base"
+	"wartank/pkg/alias"
+	"wartank/pkg/cons"
+	"wartank/pkg/types"
+)
+
+// WinBotsMenu -- окно меню бото-фермы
+type WinBotsMenu struct {
+	*win_base.WinBase
+	model tea.Model // Модель для обработки
+}
+
+// NewWinBotsMenu -- возвращает новое окно меню бото-фермы
+func NewWinBotsMenu(desk types.IDesktop) (*WinBotsMenu, error) {
+	winBase, err := win_base.NewWinBase(desk, cons.WinBotsMenu)
+	if err != nil {
+		return nil, fmt.Errorf("NewWinBotsMenu(): in create WinBase, err=\n\t%w", err)
+	}
+	sf := &WinBotsMenu{
+		WinBase: winBase,
+	}
+	return sf, nil
+}
+
+// Update -- обрабатывает команду цикла
+func (sf *WinBotsMenu) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
+	winName := alias.AWinName("")
+	switch msg := msg.(type) {
+	// Может клавиша нажата
+	case tea.KeyMsg:
+		switch msg.String() { // Да, нажато, а что именно?
+		case "esc": // Вернуться на шаг назад
+			winName = cons.WinDefault
+		case "1": // Выбор один
+			winName = cons.WinConfig
+		}
+	}
+	if winName != "" {
+		sf.Desk().SetWin(winName)
+		return sf.model, nil
+	}
+	return nil, nil
+}
+
+// View -- перерисовывание окна по требованию
+func (sf *WinBotsMenu) View() string {
+	s := "=Меню бото-фермы вар-танк=\n\n"
+	s += "[1]-Добавить бота\n"
+	s += "[2]-Удалить бота\n"
+	s += "[3]-Список ботов\n"
+	s += "\n\n[ctrl+q]-выход [esc]-отмена\n"
+	return s
+}

+ 3 - 6
desktop/win_config/win_config.go

@@ -49,10 +49,8 @@ func (sf *WinConfig) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 			if !sf.Desk().IsLogin() {
 				winName = cons.WinServerLogin
 			}
-		case "4": // Создать админа
-			winName = cons.WinServerMakeAdmin
-		case "5": // Показать меню бото-фермы
-			winName = cons.WinShowMenuBot
+		case "4": // Показать меню бото-фермы
+			winName = cons.WinBotsMenu
 		}
 
 	}
@@ -69,8 +67,7 @@ func (sf *WinConfig) View() string {
 	s += "[1]-Настройки сервера\n"
 	s += "[2]-Вход на сервер\n"
 	s += "[3]-Логин на сервер\n"
-	s += "[4]-Сделать админа на бот-сервере\n"
-	s += "[5]-Меню бото-фермы\n"
+	s += "[4]-Меню бото-фермы\n"
 	s += "\n\n[ctrl+q]-выход [esc]-назад\n"
 	return s
 }

+ 1 - 3
pkg/cons/cons.go

@@ -28,7 +28,5 @@ const (
 	WinConfigServerPassInput  alias.AWinName = "winConfigServerPassInput"  // Режим ввода пароля входа на сервер
 	WinServerConnect          alias.AWinName = "winServerConnect"          // Режим подключения к серверу
 	WinServerLogin            alias.AWinName = "winServerLogin"            // Режим логина на сервер
-	WinServerMakeAdmin                                                     // Создать админа для бот-сервера
-	WinServerMakeUser                                                      // Создать пользователя для бот-сервера
-	WinShowMenuBot                                                         // Показать меню ботов
+	WinBotsMenu               alias.AWinName = "winBotsMenu"               // Режим показа меню бото-фермы                                                // Показать меню ботов
 )

+ 1 - 1
pkg/types/idesktop.go

@@ -15,7 +15,7 @@ type IDesktop interface {
 	// SetLogin -- устанавливает логин для входа на бото-ферму
 	SetLogin(login string)
 	// MakeLogin -- выпонляет логин на сервер
-	MakeLogin()error
+	MakeLogin() error
 	// SetHost -- устанавливает имя хоста бото-фермы
 	SetHost(host string)
 	// SetPass -- устанавливает пароль для входа на бото-ферму