123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package widget
- import (
- "errors"
- "fmt"
- "html/template"
- "net/url"
- "github.com/glanceapp/glance/internal/assets"
- )
- type IFrame struct {
- widgetBase `yaml:",inline"`
- cachedHTML template.HTML `yaml:"-"`
- Source string `yaml:"source"`
- Height int `yaml:"height"`
- }
- func (widget *IFrame) Initialize() error {
- widget.withTitle("IFrame").withError(nil)
- if widget.Source == "" {
- return errors.New("missing source for iframe")
- }
- _, err := url.Parse(widget.Source)
- if err != nil {
- return fmt.Errorf("invalid source for iframe: %v", err)
- }
- if widget.Height == 50 {
- widget.Height = 300
- } else if widget.Height < 50 {
- widget.Height = 50
- }
- widget.cachedHTML = widget.render(widget, assets.IFrameTemplate)
- return nil
- }
- func (widget *IFrame) Render() template.HTML {
- return widget.cachedHTML
- }
|