1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package widget
- import (
- "errors"
- "fmt"
- "html/template"
- "time"
- "github.com/glanceapp/glance/internal/assets"
- )
- type Clock struct {
- widgetBase `yaml:",inline"`
- cachedHTML template.HTML `yaml:"-"`
- HourFormat string `yaml:"hour-format"`
- Timezones []struct {
- Timezone string `yaml:"timezone"`
- Label string `yaml:"label"`
- } `yaml:"timezones"`
- }
- func (widget *Clock) Initialize() error {
- widget.withTitle("Clock").withError(nil)
- if widget.HourFormat == "" {
- widget.HourFormat = "24h"
- } else if widget.HourFormat != "12h" && widget.HourFormat != "24h" {
- return errors.New("invalid hour format for clock widget, must be either 12h or 24h")
- }
- for t := range widget.Timezones {
- if widget.Timezones[t].Timezone == "" {
- return errors.New("missing timezone value for clock widget")
- }
- _, err := time.LoadLocation(widget.Timezones[t].Timezone)
- if err != nil {
- return fmt.Errorf("invalid timezone '%s' for clock widget: %v", widget.Timezones[t].Timezone, err)
- }
- }
- widget.cachedHTML = widget.render(widget, assets.ClockTemplate)
- return nil
- }
- func (widget *Clock) Render() template.HTML {
- return widget.cachedHTML
- }
|