From 738bcf8bcbb206ff0fac14539c906b2bbe32dd14 Mon Sep 17 00:00:00 2001 From: Svilen Markov <7613769+svilenmarkov@users.noreply.github.com> Date: Thu, 1 Aug 2024 21:34:07 +0100 Subject: [PATCH] Add group widget --- docs/configuration.md | 45 +++++++++++++ docs/images/group-widget-preview.png | Bin 0 -> 89640 bytes internal/assets/static/main.css | 52 +++++++++++++++ internal/assets/static/main.js | 41 ++++++++++++ internal/assets/templates.go | 1 + internal/assets/templates/group.html | 20 ++++++ internal/assets/templates/widget-base.html | 2 + internal/glance/config.go | 10 +++ internal/widget/group.go | 70 +++++++++++++++++++++ internal/widget/widget.go | 12 ++-- 10 files changed, 249 insertions(+), 4 deletions(-) create mode 100644 docs/images/group-widget-preview.png create mode 100644 internal/assets/templates/group.html create mode 100644 internal/widget/group.go diff --git a/docs/configuration.md b/docs/configuration.md index d3cea7d..3767f71 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -13,6 +13,7 @@ - [Lobsters](#lobsters) - [Reddit](#reddit) - [Search](#search-widget) + - [Group](#group) - [Extension](#extension) - [Weather](#weather) - [Monitor](#monitor) @@ -806,6 +807,50 @@ url: https://store.steampowered.com/search/?term={QUERY} url: https://www.amazon.com/s?k={QUERY} ``` +### Group +Group multiple widgets into one using tabs. Widgets are defined using a `widgets` property exactly as you would on a page column. The only limitation is that you cannot place a group widget within a group widget. + +Example: + +```yaml +- type: group + widgets: + - type: reddit + subreddit: gamingnews + show-thumbnails: true + collapse-after: 6 + - type: reddit + subreddit: games + - type: reddit + subreddit: pcgaming + show-thumbnails: true +``` + +Preview: + +![](images/group-widget-preview.png) + +#### Sharing properties + +To avoid repetition you can use [YAML anchors](https://support.atlassian.com/bitbucket-cloud/docs/yaml-anchors/) and share properties between widgets. + +Example: + +```yaml +- type: group + define: &shared-properties + type: reddit + show-thumbnails: true + collapse-after: 6 + widgets: + - subreddit: gamingnews + <<: *shared-properties + - subreddit: games + <<: *shared-properties + - subreddit: pcgaming + <<: *shared-properties +``` + ### Extension Display a widget provided by an external source (3rd party). If you want to learn more about developing extensions, checkout the [extensions documentation](extensions.md) (WIP). diff --git a/docs/images/group-widget-preview.png b/docs/images/group-widget-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..138093777f5f7a4d8677ec29e32cc0e3949c39d1 GIT binary patch literal 89640 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 SaK;-hCkwM%rq$P6pZp8_*HOCw literal 0 HcmV?d00001 diff --git a/internal/assets/static/main.css b/internal/assets/static/main.css index cfc96fc..8b34b78 100644 --- a/internal/assets/static/main.css +++ b/internal/assets/static/main.css @@ -184,6 +184,57 @@ transform: rotate(-90deg); } +.widget-group-header { + overflow-x: auto; + scrollbar-width: thin; +} + +.widget-group-title { + background: none; + font: inherit; + border: none; + color: inherit; + text-transform: uppercase; + border-bottom: 1px solid transparent; + cursor: pointer; + flex-shrink: 0; + padding-bottom: 0.1rem; + transition: color .3s, border-color .3s; +} + +.widget-group-title:hover:not(.widget-group-title-current) { + border-bottom-color: var(--color-text-subdue); + color: var(--color-text-highlight); +} + +.widget-group-title-current { + border-bottom-color: var(--color-primary); + color: var(--color-text-highlight); +} + +.widget-group-content { + animation: widgetGroupContentEntrance .3s cubic-bezier(0.25, 1, 0.5, 1) backwards; +} + +.widget-group-content[data-direction="right"] { + --direction: 5px; +} + +.widget-group-content[data-direction="left"] { + --direction: -5px; +} + +@keyframes widgetGroupContentEntrance { + from { + opacity: 0; + transform: translateX(var(--direction)); + } +} + +.widget-group-content:not(.widget-group-content-current) { + display: none; +} + .widget-content:has(.expand-toggle-button:last-child) { padding-bottom: 0; } @@ -1393,6 +1444,7 @@ kbd:active { .gap-7 { gap: 0.7rem; } .gap-10 { gap: 1rem; } .gap-15 { gap: 1.5rem; } +.gap-20 { gap: 2rem; } .gap-25 { gap: 2.5rem; } .gap-35 { gap: 3.5rem; } .gap-45 { gap: 4.5rem; } diff --git a/internal/assets/static/main.js b/internal/assets/static/main.js index c8f7324..35ab6a0 100644 --- a/internal/assets/static/main.js +++ b/internal/assets/static/main.js @@ -250,6 +250,46 @@ function setupDynamicRelativeTime() { }); } +function setupGroups() { + const groups = document.getElementsByClassName("widget-type-group"); + + if (groups.length == 0) { + return; + } + + for (let g = 0; g < groups.length; g++) { + const group = groups[g]; + const titles = group.getElementsByClassName("widget-header")[0].children; + const tabs = group.getElementsByClassName("widget-group-contents")[0].children; + let current = 0; + + for (let t = 0; t < titles.length; t++) { + const title = titles[t]; + title.addEventListener("click", () => { + if (t == current) { + return; + } + + for (let i = 0; i < titles.length; i++) { + titles[i].classList.remove("widget-group-title-current"); + tabs[i].classList.remove("widget-group-content-current"); + } + + if (current < t) { + tabs[t].dataset.direction = "right"; + } else { + tabs[t].dataset.direction = "left"; + } + + current = t; + + title.classList.add("widget-group-title-current"); + tabs[t].classList.add("widget-group-content-current"); + }); + } + } +} + function setupLazyImages() { const images = document.querySelectorAll("img[loading=lazy]"); @@ -558,6 +598,7 @@ async function setupPage() { setupSearchBoxes(); setupCollapsibleLists(); setupCollapsibleGrids(); + setupGroups(); setupDynamicRelativeTime(); setupLazyImages(); } finally { diff --git a/internal/assets/templates.go b/internal/assets/templates.go index 53ae871..8274c8c 100644 --- a/internal/assets/templates.go +++ b/internal/assets/templates.go @@ -37,6 +37,7 @@ var ( RepositoryTemplate = compileTemplate("repository.html", "widget-base.html") SearchTemplate = compileTemplate("search.html", "widget-base.html") ExtensionTemplate = compileTemplate("extension.html", "widget-base.html") + GroupTemplate = compileTemplate("group.html", "widget-base.html") ) var globalTemplateFunctions = template.FuncMap{ diff --git a/internal/assets/templates/group.html b/internal/assets/templates/group.html new file mode 100644 index 0000000..fe296fe --- /dev/null +++ b/internal/assets/templates/group.html @@ -0,0 +1,20 @@ +{{ template "widget-base.html" . }} + +{{ define "widget-content-classes" }}widget-content-frameless{{ end }} + +{{ define "widget-content" }} +
+
+ {{ range $i, $widget := .Widgets }} + + {{ end }} +
+
+ +
+{{ range $i, $widget := .Widgets }} +
{{ .Render }}
+{{ end }} +
+ +{{ end }} diff --git a/internal/assets/templates/widget-base.html b/internal/assets/templates/widget-base.html index eed89e1..bdd30b9 100644 --- a/internal/assets/templates/widget-base.html +++ b/internal/assets/templates/widget-base.html @@ -1,4 +1,5 @@
+ {{ if not .HideHeader}}
{{ if ne "" .TitleURL}}{{ .Title }}{{ else }}
{{ .Title }}
{{ end }} {{ if and .Error .ContentAvailable }} @@ -7,6 +8,7 @@
{{ end }}
+ {{ end }}
{{ if .ContentAvailable }} {{ block "widget-content" . }}{{ end }} diff --git a/internal/glance/config.go b/internal/glance/config.go index 9acc3be..2f2b1eb 100644 --- a/internal/glance/config.go +++ b/internal/glance/config.go @@ -32,6 +32,16 @@ func NewConfigFromYml(contents io.Reader) (*Config, error) { return nil, err } + for p := range config.Pages { + for c := range config.Pages[p].Columns { + for w := range config.Pages[p].Columns[c].Widgets { + if err := config.Pages[p].Columns[c].Widgets[w].Initialize(); err != nil { + return nil, err + } + } + } + } + return config, nil } diff --git a/internal/widget/group.go b/internal/widget/group.go new file mode 100644 index 0000000..6bf58e5 --- /dev/null +++ b/internal/widget/group.go @@ -0,0 +1,70 @@ +package widget + +import ( + "context" + "errors" + "html/template" + "sync" + "time" + + "github.com/glanceapp/glance/internal/assets" +) + +type Group struct { + widgetBase `yaml:",inline"` + Widgets Widgets `yaml:"widgets"` +} + +func (widget *Group) Initialize() error { + widget.withError(nil) + widget.HideHeader = true + + for i := range widget.Widgets { + widget.Widgets[i].SetHideHeader(true) + + if widget.Widgets[i].GetType() == "group" { + return errors.New("nested groups are not allowed") + } + + if err := widget.Widgets[i].Initialize(); err != nil { + return err + } + } + + return nil +} + +func (widget *Group) Update(ctx context.Context) { + var wg sync.WaitGroup + now := time.Now() + + for w := range widget.Widgets { + widget := widget.Widgets[w] + + if !widget.RequiresUpdate(&now) { + continue + } + + wg.Add(1) + go func() { + defer wg.Done() + widget.Update(ctx) + }() + } + + wg.Wait() +} + +func (widget *Group) RequiresUpdate(now *time.Time) bool { + for i := range widget.Widgets { + if widget.Widgets[i].RequiresUpdate(now) { + return true + } + } + + return false +} + +func (widget *Group) Render() template.HTML { + return widget.render(widget, assets.GroupTemplate) +} diff --git a/internal/widget/widget.go b/internal/widget/widget.go index 4ede5bc..a08eeed 100644 --- a/internal/widget/widget.go +++ b/internal/widget/widget.go @@ -63,6 +63,8 @@ func New(widgetType string) (Widget, error) { widget = &Search{} case "extension": widget = &Extension{} + case "group": + widget = &Group{} default: return nil, fmt.Errorf("unknown widget type: %s", widgetType) } @@ -100,10 +102,6 @@ func (w *Widgets) UnmarshalYAML(node *yaml.Node) error { return err } - if err := widget.Initialize(); err != nil { - return err - } - *w = append(*w, widget) } @@ -119,6 +117,7 @@ type Widget interface { GetID() uint64 SetID(uint64) HandleRequest(w http.ResponseWriter, r *http.Request) + SetHideHeader(bool) } type cacheType int @@ -144,6 +143,7 @@ type widgetBase struct { cacheType cacheType `yaml:"-"` nextUpdate time.Time `yaml:"-"` updateRetriedTimes int `yaml:"-"` + HideHeader bool `yaml:"-"` } func (w *widgetBase) RequiresUpdate(now *time.Time) bool { @@ -170,6 +170,10 @@ func (w *widgetBase) SetID(id uint64) { w.ID = id } +func (w *widgetBase) SetHideHeader(value bool) { + w.HideHeader = value +} + func (widget *widgetBase) HandleRequest(w http.ResponseWriter, r *http.Request) { http.Error(w, "not implemented", http.StatusNotImplemented) }