wui_label.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // package wui_label -- WUI метка.
  2. package wui_label
  3. import (
  4. "fmt"
  5. "strings"
  6. mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
  7. mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_ctx"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_text"
  10. mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_widget"
  12. )
  13. // WuiLabel -- WUI метка.
  14. type WuiLabel struct {
  15. mWt.IWuiWidget
  16. text mWt.IWuiText
  17. }
  18. // NewWuiLabel -- возвращает новую метку.
  19. func NewWuiLabel(text string) mKt.IResult[*WuiLabel] {
  20. sf := &WuiLabel{
  21. IWuiWidget: wui_widget.NewWuiWidget(),
  22. text: wui_text.NewWuiText(text),
  23. }
  24. resWuiCtx := wui_ctx.GetWuiCtx()
  25. if resWuiCtx.IsErr() {
  26. err := fmt.Errorf("NewWuiLabel(): text=%q, err=\n\t%w", text, resWuiCtx.Err())
  27. return mL1.NewErr[*WuiLabel](err)
  28. }
  29. wCtx := resWuiCtx.Val()
  30. resSet := wCtx.Set(sf.Id(), sf, "WUI-метка")
  31. if resSet.IsErr() {
  32. err := fmt.Errorf("NewWuiLabel(): text=%q, in set label to wui xtx, err=\n\t%w", text, resSet.Err())
  33. return mL1.NewErr[*WuiLabel](err)
  34. }
  35. _ = mWt.IWuiLabel(sf)
  36. return mL1.NewRes(sf)
  37. }
  38. // Text -- возвращает текст метки.
  39. func (sf *WuiLabel) Text() mWt.IWuiText {
  40. return sf.text
  41. }
  42. const (
  43. strBeg = `<div id="{.id}">{.txt}</div>`
  44. )
  45. // Html -- возвращает HTML-представление текста.
  46. func (sf *WuiLabel) Html() string {
  47. strRes := strings.ReplaceAll(strBeg, "{.id}", sf.Id())
  48. strRes = strings.ReplaceAll(strRes, "{.txt}", sf.text.Get())
  49. return strRes
  50. }