diff --git a/appview/issues/issues.go b/appview/issues/issues.go index 6aa23f86..511eccde 100644 --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -785,10 +785,23 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { return } + labelDefs, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels)) + if err != nil { + log.Println("failed to fetch labels", err) + rp.pages.Error503(w) + return + } + + defs := make(map[string]*db.LabelDefinition) + for _, l := range labelDefs { + defs[l.AtUri().String()] = &l + } + rp.pages.RepoIssues(w, pages.RepoIssuesParams{ LoggedInUser: rp.oauth.GetUser(r), RepoInfo: f.RepoInfo(user), Issues: issues, + LabelDefs: defs, FilteringByOpen: isOpen, Page: page, }) diff --git a/appview/pages/funcmap.go b/appview/pages/funcmap.go index e87da0b9..3b77cddd 100644 --- a/appview/pages/funcmap.go +++ b/appview/pages/funcmap.go @@ -29,6 +29,9 @@ func (p *Pages) funcMap() template.FuncMap { "split": func(s string) []string { return strings.Split(s, "\n") }, + "join": func(elems []string, sep string) string { + return strings.Join(elems, sep) + }, "contains": func(s string, target string) bool { return strings.Contains(s, target) }, diff --git a/appview/pages/pages.go b/appview/pages/pages.go index 47fcb370..c1518133 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -887,6 +887,7 @@ type RepoIssuesParams struct { RepoInfo repoinfo.RepoInfo Active string Issues []db.Issue + LabelDefs map[string]*db.LabelDefinition Page pagination.Page FilteringByOpen bool } diff --git a/appview/pages/templates/labels/fragments/label.html b/appview/pages/templates/labels/fragments/label.html new file mode 100644 index 00000000..b52a8f18 --- /dev/null +++ b/appview/pages/templates/labels/fragments/label.html @@ -0,0 +1,8 @@ +{{ define "labels/fragments/label" }} + {{ $d := .def }} + {{ $v := .val }} + + {{ template "repo/fragments/colorBall" (dict "color" $d.GetColor) }} + {{ $d.Name }}{{ if not $d.ValueType.IsNull }}/{{ $v }}{{ end }} + +{{ end }} diff --git a/appview/pages/templates/labels/fragments/labelDef.html b/appview/pages/templates/labels/fragments/labelDef.html new file mode 100644 index 00000000..13f1f851 --- /dev/null +++ b/appview/pages/templates/labels/fragments/labelDef.html @@ -0,0 +1,6 @@ +{{ define "labels/fragments/labelDef" }} + + {{ template "repo/fragments/colorBall" (dict "color" .GetColor) }} + {{ .Name }} + +{{ end }} diff --git a/appview/pages/templates/repo/issues/issues.html b/appview/pages/templates/repo/issues/issues.html index a8ca02c4..6ded64ee 100644 --- a/appview/pages/templates/repo/issues/issues.html +++ b/appview/pages/templates/repo/issues/issues.html @@ -49,7 +49,7 @@ #{{ .IssueId }} -

+

{{ $bgColor := "bg-gray-800 dark:bg-gray-700" }} {{ $icon := "ban" }} {{ $state := "closed" }} @@ -75,11 +75,21 @@ {{ $s := "s" }} {{ if eq (len .Comments) 1 }} - {{ $s = "" }} + {{ $s = "" }} {{ end }} {{ len .Comments }} comment{{$s}} -

+ + {{ if .Labels.Inner }} + + {{ range $k, $valset := .Labels.Inner }} + {{ $d := index $.LabelDefs $k }} + {{ range $v, $s := $valset }} + {{ template "labels/fragments/label" (dict "def" $d "val" $v) }} + {{ end }} + {{ end }} + {{ end }} +
{{ end }}