summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-04-26 13:21:48 +0100
committerPhil Hughes <me@iamphill.com>2016-05-16 12:19:30 +0100
commit36fdbc6edb1c0884f68c1267902b33a78d7be6ae (patch)
tree4f8e0e207c89e32162d969451a6b08bde770df53
parent78a67fc48dab434b43a080e5b15491963656661a (diff)
downloadgitlab-ce-36fdbc6edb1c0884f68c1267902b33a78d7be6ae.tar.gz
Updated contrib map away from cal heat map
-rw-r--r--app/assets/javascripts/calendar.js.coffee106
-rw-r--r--app/assets/stylesheets/framework/calendar.scss30
-rw-r--r--app/views/users/calendar.html.haml2
3 files changed, 114 insertions, 24 deletions
diff --git a/app/assets/javascripts/calendar.js.coffee b/app/assets/javascripts/calendar.js.coffee
index d80e0e716ce..ec153f61c2a 100644
--- a/app/assets/javascripts/calendar.js.coffee
+++ b/app/assets/javascripts/calendar.js.coffee
@@ -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
diff --git a/app/assets/stylesheets/framework/calendar.scss b/app/assets/stylesheets/framework/calendar.scss
index 11f39d583bd..da03454d807 100644
--- a/app/assets/stylesheets/framework/calendar.scss
+++ b/app/assets/stylesheets/framework/calendar.scss
@@ -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;
+}
diff --git a/app/views/users/calendar.html.haml b/app/views/users/calendar.html.haml
index 1de71f37d1a..2abee8be2a6 100644
--- a/app/views/users/calendar.html.haml
+++ b/app/views/users/calendar.html.haml
@@ -6,5 +6,3 @@
#{@starting_month},
'#{user_calendar_activities_path}'
);
-
-.calendar-hint Summary of issues, merge requests, and push events