summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Dietrich <lukas@lukasdietrich.com>2016-02-27 13:59:11 +0100
committerLukas Dietrich <lukas@lukasdietrich.com>2016-02-27 13:59:11 +0100
commitc0eaae200e4c6cfdef5a0a298921db02cba56a92 (patch)
treefe0ea0663d2f2e7abc1176dd0ebcd5416fa8ac6b
parent79ae163296be367058576589bfc583c22a2e24ca (diff)
downloadgitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.tar.gz
gitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.zip
Add ForegroundColor for labels
-rw-r--r--models/issue.go22
-rw-r--r--templates/repo/issue/labels.tmpl2
-rw-r--r--templates/repo/issue/list.tmpl2
3 files changed, 24 insertions, 2 deletions
diff --git a/models/issue.go b/models/issue.go
index 62db35d48a..c9883a25e6 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -8,10 +8,12 @@ import (
"bytes"
"errors"
"fmt"
+ "html/template"
"io"
"mime/multipart"
"os"
"path"
+ "strconv"
"strings"
"time"
@@ -958,6 +960,26 @@ func (m *Label) CalOpenIssues() {
m.NumOpenIssues = m.NumIssues - m.NumClosedIssues
}
+// ForegroundColor calculates the text color for labels based
+// on their background color
+func (l *Label) ForegroundColor() template.CSS {
+ if strings.HasPrefix(l.Color, "#") {
+ if color, err := strconv.ParseUint(l.Color[1:], 16, 64); err == nil {
+ r := float32(0xFF & (color >> 16))
+ g := float32(0xFF & (color >> 8))
+ b := float32(0xFF & color)
+ luminance := (0.2126*r + 0.7152*g + 0.0722*b) / 255
+
+ if luminance < 0.5 {
+ return template.CSS("rgba(255,255,255,.8)")
+ }
+ }
+ }
+
+ // default to black
+ return template.CSS("rgba(0,0,0,.8)")
+}
+
// NewLabel creates new label of repository.
func NewLabel(l *Label) error {
_, err := x.Insert(l)
diff --git a/templates/repo/issue/labels.tmpl b/templates/repo/issue/labels.tmpl
index d7f758ae65..7fef4390c8 100644
--- a/templates/repo/issue/labels.tmpl
+++ b/templates/repo/issue/labels.tmpl
@@ -39,7 +39,7 @@
<div class="label list">
{{range .Labels}}
<li class="item">
- <div class="ui label" style="background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div>
+ <div class="ui label" style="color: {{.ForegroundColor}}; background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div>
{{if $.IsRepositoryAdmin}}
<a class="ui right delete-button" href="#" data-url="{{$.RepoLink}}/labels/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
<a class="ui right edit-label-button" href="#" data-id={{.ID}} data-title={{.Name}} data-color={{.Color}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl
index 66bd2ae298..e9a833925d 100644
--- a/templates/repo/issue/list.tmpl
+++ b/templates/repo/issue/list.tmpl
@@ -105,7 +105,7 @@
<a class="title" href="{{$.Link}}/{{.Index}}">{{.Name}}</a>
{{range .Labels}}
- <a class="ui label" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="background-color: {{.Color}}">{{.Name}}</a>
+ <a class="ui label" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name}}</a>
{{end}}
{{if .NumComments}}