Github releases with dynamic columns

This commit is contained in:
dvdandroid 2024-08-01 22:47:44 +02:00
parent 576f86cb84
commit 9d8ebb4dfe
3 changed files with 38 additions and 17 deletions

View file

@ -66,6 +66,9 @@ var globalTemplateFunctions = template.FuncMap{
"dynamicRelativeTimeAttrs": func(t time.Time) template.HTMLAttr {
return template.HTMLAttr(fmt.Sprintf(`data-dynamic-relative-time="%d"`, t.Unix()))
},
"params": func(p ...any) []any {
return p
},
}
func compileTemplate(primary string, dependencies ...string) *template.Template {

View file

@ -1,23 +1,40 @@
{{ template "widget-base.html" . }}
{{ define "widget-content" }}
{{ if ne .Style "dynamic-columns-experimental" }}
<ul class="list list-gap-10 collapsible-container" data-collapse-after="{{ .CollapseAfter }}">
{{ range .Releases }}
<li>
<div class="flex items-center gap-10">
<a class="size-h4 block text-truncate color-primary-if-not-visited" href="{{ .NotesUrl }}" target="_blank" rel="noreferrer">{{ .Name }}</a>
{{ if $.ShowSourceIcon }}
<img class="simple-icon release-source-icon" src="{{ .SourceIconURL }}" alt="" loading="lazy">
{{ end }}
</div>
<ul class="list-horizontal-text">
<li {{ dynamicRelativeTimeAttrs .TimeReleased }}></li>
<li>{{ .Version }}</li>
{{ if gt .Downvotes 3 }}
<li>{{ .Downvotes | formatNumber }} ⚠</li>
{{ end }}
</ul>
</li>
{{ end }}
{{ range .Releases }}
<li>
{{ template "release" (params . $.ShowSourceIcon) }}
</li>
{{ end }}
</ul>
{{ else }}
<ul class="dynamic-columns collapsible-container" data-collapse-after="{{ .CollapseAfter }}">
{{ range .Releases }}
<li class="flex flex-column gap-5">
{{ template "release" (params . $.ShowSourceIcon) }}
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}
{{ define "release" }}
{{ $rel := index . 0 }}
{{ $showSourceIcon := index . 1 }}
<div class="flex items-center gap-10">
<a class="size-h4 block text-truncate color-primary-if-not-visited" href="{{ $rel.NotesUrl }}" target="_blank" rel="noreferrer">{{ $rel.Name }}</a>
{{ if $showSourceIcon }}
<img class="simple-icon release-source-icon" src="{{ $rel.SourceIconURL }}" alt="" loading="lazy">
{{ end }}
</div>
<ul class="list-horizontal-text">
<li {{ dynamicRelativeTimeAttrs $rel.TimeReleased }}></li>
<li>{{ $rel.Version }}</li>
{{ if gt $rel.Downvotes 3 }}
<li>{{ $rel.Downvotes | formatNumber }} ⚠</li>
{{ end }}
</ul>
{{ end }}

View file

@ -21,6 +21,7 @@ type Releases struct {
Limit int `yaml:"limit"`
CollapseAfter int `yaml:"collapse-after"`
ShowSourceIcon bool `yaml:"show-source-icon"`
Style string `yaml:"style"`
}
func (widget *Releases) Initialize() error {