group.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package widget
  2. import (
  3. "context"
  4. "errors"
  5. "html/template"
  6. "time"
  7. "github.com/glanceapp/glance/internal/assets"
  8. )
  9. type Group struct {
  10. widgetBase `yaml:",inline"`
  11. containerWidgetBase `yaml:",inline"`
  12. }
  13. func (widget *Group) Initialize() error {
  14. widget.withError(nil)
  15. widget.HideHeader = true
  16. for i := range widget.Widgets {
  17. widget.Widgets[i].SetHideHeader(true)
  18. if widget.Widgets[i].GetType() == "group" {
  19. return errors.New("nested groups are not supported")
  20. } else if widget.Widgets[i].GetType() == "split-column" {
  21. return errors.New("split columns inside of groups are not supported")
  22. }
  23. if err := widget.Widgets[i].Initialize(); err != nil {
  24. return err
  25. }
  26. }
  27. return nil
  28. }
  29. func (widget *Group) Update(ctx context.Context) {
  30. widget.containerWidgetBase.Update(ctx)
  31. }
  32. func (widget *Group) SetProviders(providers *Providers) {
  33. widget.containerWidgetBase.SetProviders(providers)
  34. }
  35. func (widget *Group) RequiresUpdate(now *time.Time) bool {
  36. return widget.containerWidgetBase.RequiresUpdate(now)
  37. }
  38. func (widget *Group) Render() template.HTML {
  39. return widget.render(widget, assets.GroupTemplate)
  40. }