Browse Source

Merge pull request #2710 from lukasdietrich/develop

Add ForegroundColor for labels to resolve #2033
Unknwon 6 years ago
parent
commit
8e160edbd5
3 changed files with 24 additions and 2 deletions
  1. 22 0
      models/issue.go
  2. 1 1
      templates/repo/issue/labels.tmpl
  3. 1 1
      templates/repo/issue/list.tmpl

+ 22 - 0
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)

+ 1 - 1
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>

+ 1 - 1
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}}