diff options
author | Lukas Dietrich <lukas@lukasdietrich.com> | 2016-02-27 13:59:11 +0100 |
---|---|---|
committer | Lukas Dietrich <lukas@lukasdietrich.com> | 2016-02-27 13:59:11 +0100 |
commit | c0eaae200e4c6cfdef5a0a298921db02cba56a92 (patch) | |
tree | fe0ea0663d2f2e7abc1176dd0ebcd5416fa8ac6b | |
parent | 79ae163296be367058576589bfc583c22a2e24ca (diff) | |
download | gitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.tar.gz gitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.zip |
Add ForegroundColor for labels
-rw-r--r-- | models/issue.go | 22 | ||||
-rw-r--r-- | templates/repo/issue/labels.tmpl | 2 | ||||
-rw-r--r-- | templates/repo/issue/list.tmpl | 2 |
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}} |