Updated contrib map away from cal heat map
This commit is contained in:
parent
78a67fc48d
commit
36fdbc6edb
3 changed files with 114 additions and 24 deletions
|
@ -1,27 +1,75 @@
|
|||
class @Calendar
|
||||
constructor: (timestamps, starting_year, starting_month, calendar_activities_path) ->
|
||||
cal = new CalHeatMap()
|
||||
cal.init
|
||||
itemName: ["contribution"]
|
||||
data: timestamps
|
||||
start: new Date(starting_year, starting_month)
|
||||
domainLabelFormat: "%b"
|
||||
id: "cal-heatmap"
|
||||
domain: "month"
|
||||
subDomain: "day"
|
||||
range: 12
|
||||
tooltip: true
|
||||
label:
|
||||
position: "top"
|
||||
legend: [
|
||||
0
|
||||
10
|
||||
20
|
||||
30
|
||||
]
|
||||
legendCellPadding: 3
|
||||
cellSize: $('.user-calendar').width() / 73
|
||||
onClick: (date, count) ->
|
||||
# Get the highest value from the timestampes
|
||||
highestValue = 0
|
||||
_.each timestamps, (count) ->
|
||||
if count > highestValue
|
||||
highestValue = count
|
||||
|
||||
timestamps = _.chain(timestamps)
|
||||
.map (stamp, key) ->
|
||||
{
|
||||
count: stamp
|
||||
date: key
|
||||
}
|
||||
.groupBy (stamp, i) ->
|
||||
Math.floor i / 7
|
||||
.toArray()
|
||||
.value()
|
||||
|
||||
monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
||||
months = []
|
||||
svg = d3.select '#cal-heatmap'
|
||||
.append 'svg'
|
||||
.attr 'width', 53 * 17
|
||||
.attr 'height', 140
|
||||
|
||||
# Setup each day box
|
||||
svg.selectAll 'g'
|
||||
.data timestamps
|
||||
.enter()
|
||||
.append 'g'
|
||||
.attr 'transform', (group, i) ->
|
||||
_.each group, (stamp) ->
|
||||
month = new Date(parseInt(stamp.date) * 1000).getMonth()
|
||||
x = 17 * i + 1
|
||||
lastMonth = _.last(months)
|
||||
|
||||
# If undefined, push
|
||||
if !lastMonth?
|
||||
months.push
|
||||
month: month
|
||||
x: x
|
||||
else if lastMonth.x is x
|
||||
lastMonth.month = month
|
||||
else if lastMonth.month isnt month
|
||||
months.push
|
||||
month: month
|
||||
x: x
|
||||
"translate(#{17 * i + 1}, 18)"
|
||||
.selectAll 'rect'
|
||||
.data (stamp) ->
|
||||
stamp
|
||||
.enter()
|
||||
.append 'rect'
|
||||
.attr 'x', '0'
|
||||
.attr 'y', (stamp, i) ->
|
||||
17 * i
|
||||
.attr 'width', 15
|
||||
.attr 'height', 15
|
||||
.attr 'title', (stamp) ->
|
||||
"#{stamp.count} contributions<br />#{gl.utils.formatDate parseInt(stamp.date) * 1000}"
|
||||
.attr 'class', (stamp) ->
|
||||
extraClass = ''
|
||||
if stamp.count isnt 0
|
||||
diff = stamp.count / highestValue
|
||||
classNumber = Math.floor (diff / 0.25) + 1
|
||||
extraClass += "user-contrib-cell-#{classNumber}"
|
||||
|
||||
"user-contrib-cell #{extraClass} js-tooltip"
|
||||
.attr 'data-container', 'body'
|
||||
.on 'click', (stamp) ->
|
||||
date = new Date(parseInt(stamp.date) * 1000)
|
||||
formated_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate()
|
||||
$.ajax
|
||||
url: calendar_activities_path
|
||||
|
@ -32,3 +80,17 @@ class @Calendar
|
|||
success: (data) ->
|
||||
$(".user-calendar-activities").html data
|
||||
|
||||
svg.append 'g'
|
||||
.selectAll 'text'
|
||||
.data months
|
||||
.enter()
|
||||
.append 'text'
|
||||
.attr 'x', (date) ->
|
||||
date.x
|
||||
.attr 'y', 10
|
||||
.attr 'class', 'user-contrib-text'
|
||||
.text (date) ->
|
||||
monthNames[date.month]
|
||||
|
||||
$('#cal-heatmap .js-tooltip').tooltip
|
||||
html: true
|
||||
|
|
|
@ -68,3 +68,33 @@
|
|||
font-weight: 550;
|
||||
}
|
||||
}
|
||||
|
||||
.user-contrib-cell {
|
||||
fill: #ededed;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
stroke: #000;
|
||||
}
|
||||
}
|
||||
|
||||
.user-contrib-cell-1 {
|
||||
fill: #acd5f2;
|
||||
}
|
||||
|
||||
.user-contrib-cell-3 {
|
||||
fill: #7fa8d1;
|
||||
}
|
||||
|
||||
.user-contrib-cell-4 {
|
||||
fill: #49729b;
|
||||
}
|
||||
|
||||
.user-contrib-cell-5 {
|
||||
fill: #254e77;
|
||||
}
|
||||
|
||||
.user-contrib-text {
|
||||
font-size: 12px;
|
||||
fill: #959494;
|
||||
}
|
||||
|
|
|
@ -6,5 +6,3 @@
|
|||
#{@starting_month},
|
||||
'#{user_calendar_activities_path}'
|
||||
);
|
||||
|
||||
.calendar-hint Summary of issues, merge requests, and push events
|
||||
|
|
Loading…
Reference in a new issue