web_gui.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // package web_gui -- веб-сервер для графики
  2. package web_gui
  3. import (
  4. _ "embed"
  5. // "net/http"
  6. "strings"
  7. "github.com/gofiber/fiber/v2"
  8. . "gitp78su.ipnodns.ru/svi/kern"
  9. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  10. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  11. "gitp78su.ipnodns.ru/svi/kern/wui"
  12. "gitp78su.ipnodns.ru/svi/kern/wui/wtypes"
  13. . "wartank/app/lev0/types"
  14. "wartank/app/lev3/serv_web/web_gui/page_bot_add"
  15. "wartank/app/lev3/serv_web/web_gui/page_bot_list"
  16. "wartank/app/lev3/serv_web/web_gui/page_bot_show"
  17. "wartank/app/lev3/serv_web/web_gui/page_login"
  18. )
  19. // ВебГип -- веб-сервер для графики
  20. type ВебГуи struct {
  21. прилож ИПриложение
  22. конт IKernelCtx
  23. лог ILogBuf
  24. кнпБоты wtypes.IWuiButton
  25. }
  26. // НовВебГуи -- возвращает новый веб-сервер для графики
  27. func НовВебГуи(конт IKernelCtx) *ВебГуи {
  28. лог := NewLogBuf()
  29. Hassert(конт != nil, "НовВебГуи(): ИЯдроКонтекст==nil")
  30. сам := &ВебГуи{
  31. прилож: конт.Get("мод_сервер").Val().(ИПриложение),
  32. конт: конт,
  33. лог: лог,
  34. }
  35. сам.кнпБоты = wui.NewWuiButton("Список ботов", сам.ботыКлик)
  36. сам.кнпБоты.Hx().Target().Set("#main")
  37. файбер := конт.Get("fiberApp").Val().(*fiber.App)
  38. // файбер.Get("/", сам.кукиПроверить) //, сам.индекс)
  39. файбер.Get("/", сам.индекс)
  40. _ = page_login.НовСтраницаЛогин(конт)
  41. _ = page_bot_list.НовСтраницаСписокБотов(конт)
  42. _ = page_bot_add.НовСтраницаБотовДобавить(конт)
  43. _ = page_bot_show.НовСтраницаБотПоказать(конт)
  44. return сам
  45. }
  46. var стрБлокБоты string
  47. //go:embed block_login.html
  48. var стрБлокЛогин string
  49. func (сам *ВебГуи) ботыКлик() string {
  50. еслиЛогин := сам.конт.Get("еслиЛогин").Val().(bool)
  51. if !еслиЛогин {
  52. return стрБлокЛогин
  53. }
  54. return стрБлокБоты
  55. }
  56. //go:embed index.tmpl.html
  57. var стрГлавная string
  58. // Возвращает индексную страницу
  59. func (сам *ВебГуи) индекс(кнт *fiber.Ctx) error {
  60. сам.лог.Debug("ВебГуи.индекс()\n")
  61. кнт.Set("Content-type", "text/html; charset=utf8;-")
  62. кнт.Set("Cache-Control", "no-cache")
  63. _, _ = кнт.WriteString("\n\n")
  64. стрВых := strings.ReplaceAll(стрГлавная, "{.btn_lst_bot}", сам.кнпБоты.Html())
  65. return кнт.SendString(стрВых)
  66. }
  67. /*
  68. // Проверка на куки
  69. func (сам *ВебГуи) кукиПроверить(кнт *fiber.Ctx) error {
  70. сам.лог.Debug("ВебГуи.кукиПроверить()\n")
  71. имя := кнт.Cookies("login")
  72. if имя != "svi" {
  73. сам.конт.Set("еслиЛогин", false, "Признак логина")
  74. } else {
  75. сам.конт.Set("еслиЛогин", true, "Признак логина")
  76. }
  77. return кнт.Next()
  78. }
  79. */