wui_label.go 1.5 KB

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