Show consistent colors for different users

This commit is contained in:
James Allen 2014-03-07 12:00:31 +00:00
parent 36faedeeb3
commit ebe4e5b1d8
6 changed files with 45 additions and 5 deletions

View file

@ -436,7 +436,9 @@
div(class='change-description') div(class='change-description')
div(class='change-date') {{date}} div(class='change-date') {{date}}
div(class='change-name') {{name}} div(class='change-name')
div.color-square(style="background-color: hsl({{hue}}, 100%, 70%);")
span {{name}}
script(type='text/template')#changeListTemplate script(type='text/template')#changeListTemplate
ul.change-list.nav.nav-pills.nav-stacked ul.change-list.nav.nav-pills.nav-stacked

View file

@ -7,6 +7,29 @@ define [
email = @get("email").trim().toLowerCase() email = @get("email").trim().toLowerCase()
hash = CryptoJS.MD5(email) hash = CryptoJS.MD5(email)
return "//www.gravatar.com/avatar/#{hash}.jpg?size=#{size}&d=mm" return "//www.gravatar.com/avatar/#{hash}.jpg?size=#{size}&d=mm"
OWNER_HUE: 200
hue: () ->
if window.user.id == @get("id")
hue = @OWNER_HUE
else
hash = CryptoJS.MD5(@get("id"))
hue = parseInt(hash.toString().slice(0,8), 16) % 320
# Avoid 20 degrees either side of the owner
if hue > @OWNER_HUE - 20
hue = hue + 40
return hue
name: () ->
parts = []
first_name = @get("first_name")
if first_name? and first_name.length > 0
parts.push first_name
last_name = @get("last_name")
if last_name? and last_name.length > 0
parts.push last_name
return parts.join(" ")
}, { }, {
findOrBuild : (id, attributes) -> findOrBuild : (id, attributes) ->
model = @find id model = @find id

View file

@ -126,6 +126,7 @@ define [
modelView: -> modelView: ->
modelView = { modelView = {
hue: @model.get("user").hue()
date: moment(parseInt(@model.get("end_ts"), 10)).calendar() date: moment(parseInt(@model.get("end_ts"), 10)).calendar()
name: @model.get("user").get("first_name") + " " + @model.get("user").get("last_name") name: @model.get("user").get("first_name") + " " + @model.get("user").get("last_name")
} }

View file

@ -69,12 +69,12 @@ define [
markerFrontLayer = @aceEditor.renderer.$markerFront markerFrontLayer = @aceEditor.renderer.$markerFront
lineHeight = @aceEditor.renderer.lineHeight lineHeight = @aceEditor.renderer.lineHeight
if entry.i? or entry.d? if entry.i? or entry.d?
hue = 200 hue = entry.meta.user.hue()
if entry.i? if entry.i?
@_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, """ @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, """
background-color : hsl(#{hue}, 70%, 85%); background-color : hsl(#{hue}, 70%, 85%);
""" """
tag = "Added by #{entry.meta.user.email}" tag = "Added by #{entry.meta.user.name()}"
if entry.d? if entry.d?
@_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, """ @_addMarkerWithCustomStyle session, markerBackLayer, range, "deleted-change-background", false, """
background-color : hsl(#{hue}, 70%, 95%); background-color : hsl(#{hue}, 70%, 95%);
@ -83,7 +83,7 @@ define [
height: #{Math.round(lineHeight/2) - 1}px; height: #{Math.round(lineHeight/2) - 1}px;
border-bottom: 2px solid hsl(#{hue}, 70%, 40%); border-bottom: 2px solid hsl(#{hue}, 70%, 40%);
""" """
tag = "Deleted by #{entry.meta.user.email}" tag = "Deleted by #{entry.meta.user.name()}"
tag += " on #{entry.meta.end_ts}" tag += " on #{entry.meta.end_ts}"
@_addNameTag session, id, range, tag, """ @_addNameTag session, id, range, tag, """

View file

@ -1,6 +1,13 @@
define [ define [
"models/User"
"libs/backbone" "libs/backbone"
], ()-> ], (User) ->
Diff = Backbone.Model.extend Diff = Backbone.Model.extend
url: () -> url: () ->
"/project/#{@get("project_id")}/doc/#{@get("doc_id")}/diff?from=#{@get("from")}&to=#{@get("to")}" "/project/#{@get("project_id")}/doc/#{@get("doc_id")}/diff?from=#{@get("from")}&to=#{@get("to")}"
parse: (diff) ->
for entry in diff.diff
if entry.meta? and entry.meta.user?
entry.meta.user = User.findOrBuild(entry.meta.user.id, entry.meta.user)
return diff

View file

@ -80,6 +80,13 @@
font-size: 0.9em; font-size: 0.9em;
color: #666; color: #666;
} }
.color-square {
display: inline-block;
height: 10px;
width: 10px;
margin-right: 4px;
margin-bottom: -1px;
}
&:hover { &:hover {
background-color: #eaeaea; background-color: #eaeaea;
} }