Explorar el Código

SVI Добавление полей

SVI hace 2 años
padre
commit
fef6900b85

+ 29 - 0
server/serv_web/web_api/web_api.go

@@ -27,9 +27,38 @@ func НовВебАпи(вебСервер types.ИВебСервер) (*Веб
 		файбер: *вебСервер.Файбер(),
 	}
 	сам.файбер.Post("/api/login", сам.логин)
+	сам.файбер.Post("/api/add_bot", сам.добавитьБота)
 	return сам, nil
 }
 
+type AddBotRequest struct {
+	Логин_ string `json:"login" form:"login_bot"`
+	Пароль string `json:"password" form:"password_bot"`
+}
+
+// Запрос добавления нового бота на ботоферму
+func (сам *ВебАпи) добавитьБота(кнт *fiber.Ctx) error {
+	запрос := &AddBotRequest{}
+	if err := кнт.BodyParser(запрос); err != nil {
+		return кнт.Render("add_bot", fiber.Map{
+			"err": "ошибка в разборе формы",
+		})
+	}
+	log.Printf("ВебАпи.добавитьБота(): : %#+v\n", запрос)
+	if запрос.Логин_ == "" {
+		return кнт.Render("add_bot", fiber.Map{
+			"err": "пустой логин бота",
+		})
+	}
+	if запрос.Пароль == "" {
+		return кнт.Render("add_bot", fiber.Map{
+			"err": "пустой пароль бота",
+		})
+	}
+	сам.серв.ServBots().НовБот(запрос.Логин_, запрос.Пароль, true)
+	return кнт.Redirect("/gui/list_bot")
+}
+
 type LoginRequest struct {
 	Логин_            string `json:"login" form:"login"`
 	Пароль_           string `json:"password" form:"password"`

+ 58 - 0
server/serv_web/web_gui/web_gui.go

@@ -4,6 +4,7 @@ package web_gui
 import (
 	"fmt"
 	"log"
+	"net/url"
 
 	"github.com/gofiber/fiber/v2"
 
@@ -27,9 +28,60 @@ func НовВебГуи(вебСервер types.ИВебСервер) (*Веб
 	}
 	сам.файбер.Get("/", сам.индекс)
 	сам.файбер.Get("/gui/list_bot", сам.списокБотов)
+	сам.файбер.Get("/gui/add_bot", сам.гетБотНов)
+	сам.файбер.Get("/gui/bot/:name/state", сам.состояниеБота)
 	return сам, nil
 }
 
+// Показывает состояние бота по имени
+func (сам *ВебГуи) состояниеБота(кнт *fiber.Ctx) error {
+	имя := кнт.Params("name")
+	имя, ош := url.QueryUnescape(имя)
+	if ош != nil {
+		return кнт.Render("list_bot", fiber.Map{
+			"Title": "WarTank",
+			"err":   fmt.Sprintf("ВебГуи.состояниеБота(): ошибка декодирования имени бота: %v", ош.Error()),
+		})
+	}
+	if имя == "" {
+		return кнт.Render("list_bot", fiber.Map{
+			"Title": "WarTank",
+			"err":   "Не задано имя бота",
+		})
+	}
+	log.Printf("ВебГуи.состояниеБота(): имя=%s\n", имя)
+	бот := сам.серв.ServBots().Get(имя)
+	if бот == nil {
+		return кнт.Render("list_bot", fiber.Map{
+			"Title": "WarTank",
+			"err":   "Бот не найден",
+		})
+	}
+	return кнт.Render("state_bot", fiber.Map{
+		"Title":   "WarTank",
+		"имя":     имя,
+		"топливо": бот.Ангар().Топливо().Получ(),
+		"золото":  бот.Ангар().Золото().Получ(),
+		"слава":   бот.Ангар().Конвой().Слава().Получ(),
+		"атака":   бот.Танк().ТанкСтат().Атака(),
+	})
+}
+
+// Показывает страницу добавления бота
+func (сам *ВебГуи) гетБотНов(кнт *fiber.Ctx) error {
+	имя := кнт.Cookies("login")
+	if имя != "svi" {
+		return кнт.Render("index", fiber.Map{
+			"Title": "WarTank",
+			"err":   "Не выполнен вход",
+		})
+	}
+	log.Printf("ВебГуи.гетБотНов(): логин=%s\n", имя)
+	return кнт.Render("add_bot", fiber.Map{
+		"Title": "WarTank",
+	})
+}
+
 // Возвращает страницу со списком ботов
 func (сам *ВебГуи) списокБотов(кнт *fiber.Ctx) error {
 	имя := кнт.Cookies("login")
@@ -40,8 +92,14 @@ func (сам *ВебГуи) списокБотов(кнт *fiber.Ctx) error {
 		})
 	}
 	log.Printf("ВебГуи.списокБотов(): логин=%s\n", имя)
+	списокБотов := сам.серв.ServBots().ListBot()
+	списокИмёнБотов := make([]string, 0)
+	for _, бот := range списокБотов {
+		списокИмёнБотов = append(списокИмёнБотов, бот.Имя())
+	}
 	return кнт.Render("list_bot", fiber.Map{
 		"Title": "WarTank",
+		"bots":  списокИмёнБотов,
 	})
 }
 

+ 18 - 0
web/tmpl/add_bot.tmpl.html

@@ -0,0 +1,18 @@
+{{ define "add_bot" }}
+{{ template "header" . }}
+<h1>WarTank</h1>
+Страница добавления бота вартанк.
+<form action="/api/add_bot" method="POST">
+    <label>Логин бота:</label>
+    <input type="text" name="login_bot" placeholder="login_bot">
+    <br>
+    <label>Пароль бота:</label>
+    <input type="text" name="password_bot" placeholder="password_bot">
+    <br>
+    <input type="submit" value="Добавить">
+</form>
+{{ if .err }}
+<p>{{ .err }}</p>
+{{ end }}
+{{ template "footer" . }}
+{{end}}

+ 18 - 1
web/tmpl/list_bot.tmpl.html

@@ -2,6 +2,23 @@
 <!-- web/tmpl/list_bot.tmpl.html -->
 {{ template "header" . }}
 <h1>WarTank</h1>
-Страница списка ботов вартанк.
+Страница списка ботов вартанк.<br>
+{{$lenBots:= len .bots}}
+{{printf "len %s" .lenBots}}<br>
+{{printf "bots: %s" .bots}}<br>
+{{ range $key, $name := .bots }}
+<div>
+    <a href="/gui/bot/{{ $name }}/state">{{ $name }}</a><br><br>
+</div>
+{{ else }}
+Нет ботов
+{{ end }}
+<br>
+<a href="/gui/add_bot">Добавить бота</a>
+
+{{ if .err }}
+<p>{{ .err }}</p>
+{{ end }}
+
 {{ template "footer" . }}
 {{end}}

+ 9 - 0
web/tmpl/state_bot.tmpl.html

@@ -0,0 +1,9 @@
+{{ define "state_bot" }}
+{{ template "header" . }}
+<h1>WarTank</h1>
+Страница состояния бота вартанк.
+<p>Имя бота: {{.имя}}</p>
+<p>Топливо: {{.топливо}}</p>
+<p>Золото: {{.золото}}</p>
+{{ template "footer" . }}
+{{end}}