summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Schatz <jschatz@gitlab.com>2016-08-26 02:19:40 +0000
committerJacob Schatz <jschatz@gitlab.com>2016-08-26 02:19:40 +0000
commit1bf2fe276ff084d3b2e0860710ec115a317dd9fc (patch)
tree887be88e57d51e5e4af7ab5dd9effcdd6cfd202d
parentf2df4c689b56a878848a9c348d9ce5180e77e0d6 (diff)
parenta15e9f02b81f26cc07536d1458a576aede861529 (diff)
downloadgitlab-ce-1bf2fe276ff084d3b2e0860710ec115a317dd9fc.tar.gz
Merge branch 'reduce-contributions-calendar-payload' into 'master'
Reduce contributions calendar data payload ## What does this MR do? Reduces the contributions calendar data payload by only passing contribution dates and counts ## Are there points in the code the reviewer needs to double check? Please double check my javascript code :smiley: ## Why was this MR needed? Reduce user's bandwidth and decrease website loading time ## What are the relevant issue numbers? Closes #20862 ## Screenshots (if relevant) Before: ![Screen_Shot_2016-08-11_at_3.55.55_PM](/uploads/382842b3c889978bb302bd9057701ec3/Screen_Shot_2016-08-11_at_3.55.55_PM.png) ``` new Calendar( {"1439269200":0,"1439355600":0,"1439442000":0,"1439528400":0,"1439614800":0,"1439701200":0,"1439787600":0,"1439874000":0,"1439960400":0,"1440046800":0,"1440133200":0,"1440219600":0,"1440306000":0,"1440392400":0,"1440478800":0,"1440565200":0,"1440651600":0,"1440738000":0,"1440824400":0,"1440910800":0,"1440997200":0,"1441083600":0,"1441170000":0,"1441256400":0,"1441342800":0,"1441429200":0,"1441515600":0,"1441602000":0,"1441688400":0,"1441774800":0,"1441861200":0,"1441947600":0,"1442034000":0,"1442120400":0,"1442206800":0,"1442293200":0,"1442379600":0,"1442466000":0,"1442552400":0,"1442638800":0,"1442725200":0,"1442811600":0,"1442898000":0,"1442984400":0,"1443070800":0,"1443157200":0,"1443243600":0,"1443330000":0,"1443416400":0,"1443502800":0,"1443589200":0,"1443675600":0,"1443762000":0,"1443848400":0,"1443934800":0,"1444021200":0,"1444107600":0,"1444194000":0,"1444280400":0,"1444366800":0,"1444453200":0,"1444539600":0,"1444626000":0,"1444712400":0,"1444798800":0,"1444885200":0,"1444971600":0,"1445058000":0,"1445144400":0,"1445230800":0,"1445317200":0,"1445403600":0,"1445490000":0,"1445576400":0,"1445662800":0,"1445749200":0,"1445835600":0,"1445922000":0,"1446008400":0,"1446094800":0,"1446181200":0,"1446267600":0,"1446354000":0,"1446444000":0,"1446530400":0,"1446616800":0,"1446703200":0,"1446789600":0,"1446876000":0,"1446962400":0,"1447048800":0,"1447135200":0,"1447221600":0,"1447308000":0,"1447394400":0,"1447480800":0,"1447567200":0,"1447653600":0,"1447740000":0,"1447826400":0,"1447912800":0,"1447999200":0,"1448085600":0,"1448172000":0,"1448258400":0,"1448344800":0,"1448431200":0,"1448517600":0,"1448604000":0,"1448690400":0,"1448776800":0,"1448863200":0,"1448949600":0,"1449036000":0,"1449122400":0,"1449208800":0,"1449295200":0,"1449381600":0,"1449468000":0,"1449554400":0,"1449640800":0,"1449727200":0,"1449813600":0,"1449900000":0,"1449986400":0,"1450072800":0,"1450159200":0,"1450245600":0,"1450332000":0,"1450418400":0,"1450504800":0,"1450591200":0,"1450677600":0,"1450764000":0,"1450850400":0,"1450936800":0,"1451023200":0,"1451109600":0,"1451196000":0,"1451282400":0,"1451368800":0,"1451455200":0,"1451541600":0,"1451628000":0,"1451714400":0,"1451800800":0,"1451887200":0,"1451973600":0,"1452060000":0,"1452146400":0,"1452232800":0,"1452319200":0,"1452405600":0,"1452492000":0,"1452578400":0,"1452664800":0,"1452751200":0,"1452837600":0,"1452924000":0,"1453010400":0,"1453096800":0,"1453183200":0,"1453269600":0,"1453356000":0,"1453442400":0,"1453528800":0,"1453615200":0,"1453701600":0,"1453788000":0,"1453874400":0,"1453960800":0,"1454047200":0,"1454133600":0,"1454220000":0,"1454306400":0,"1454392800":0,"1454479200":0,"1454565600":0,"1454652000":0,"1454738400":0,"1454824800":0,"1454911200":0,"1454997600":0,"1455084000":0,"1455170400":0,"1455256800":0,"1455343200":0,"1455429600":0,"1455516000":0,"1455602400":0,"1455688800":0,"1455775200":0,"1455861600":0,"1455948000":0,"1456034400":0,"1456120800":0,"1456207200":0,"1456293600":0,"1456380000":0,"1456466400":0,"1456552800":0,"1456639200":0,"1456725600":0,"1456812000":0,"1456898400":0,"1456984800":0,"1457071200":0,"1457157600":0,"1457244000":0,"1457330400":0,"1457416800":0,"1457503200":0,"1457589600":0,"1457676000":0,"1457762400":0,"1457848800":0,"1457931600":0,"1458018000":0,"1458104400":0,"1458190800":0,"1458277200":0,"1458363600":0,"1458450000":0,"1458536400":0,"1458622800":0,"1458709200":0,"1458795600":0,"1458882000":0,"1458968400":0,"1459054800":0,"1459141200":0,"1459227600":0,"1459314000":0,"1459400400":0,"1459486800":0,"1459573200":0,"1459659600":0,"1459746000":0,"1459832400":0,"1459918800":0,"1460005200":0,"1460091600":0,"1460178000":0,"1460264400":0,"1460350800":0,"1460437200":0,"1460523600":0,"1460610000":0,"1460696400":0,"1460782800":0,"1460869200":0,"1460955600":0,"1461042000":0,"1461128400":0,"1461214800":0,"1461301200":0,"1461387600":0,"1461474000":0,"1461560400":0,"1461646800":0,"1461733200":0,"1461819600":0,"1461906000":0,"1461992400":0,"1462078800":0,"1462165200":0,"1462251600":0,"1462338000":0,"1462424400":0,"1462510800":0,"1462597200":0,"1462683600":0,"1462770000":0,"1462856400":0,"1462942800":0,"1463029200":0,"1463115600":0,"1463202000":0,"1463288400":0,"1463374800":0,"1463461200":0,"1463547600":0,"1463634000":0,"1463720400":0,"1463806800":0,"1463893200":0,"1463979600":0,"1464066000":0,"1464152400":0,"1464238800":0,"1464325200":0,"1464411600":0,"1464498000":0,"1464584400":0,"1464670800":0,"1464757200":0,"1464843600":0,"1464930000":0,"1465016400":0,"1465102800":0,"1465189200":0,"1465275600":0,"1465362000":0,"1465448400":0,"1465534800":0,"1465621200":0,"1465707600":0,"1465794000":0,"1465880400":0,"1465966800":0,"1466053200":0,"1466139600":0,"1466226000":0,"1466312400":0,"1466398800":0,"1466485200":0,"1466571600":0,"1466658000":0,"1466744400":0,"1466830800":0,"1466917200":0,"1467003600":0,"1467090000":0,"1467176400":0,"1467262800":0,"1467349200":0,"1467435600":0,"1467522000":0,"1467608400":0,"1467694800":0,"1467781200":0,"1467867600":0,"1467954000":0,"1468040400":0,"1468126800":0,"1468213200":0,"1468299600":0,"1468386000":0,"1468472400":0,"1468558800":0,"1468645200":0,"1468731600":0,"1468818000":0,"1468904400":0,"1468990800":0,"1469077200":0,"1469163600":17,"1469250000":0,"1469336400":0,"1469422800":3,"1469509200":14,"1469595600":54,"1469682000":0,"1469768400":4,"1469854800":1,"1469941200":0,"1470027600":0,"1470114000":0,"1470200400":1,"1470286800":0,"1470373200":1,"1470459600":0,"1470546000":0,"1470632400":0,"1470718800":0,"1470805200":0,"1470891600":2}, '/u/root/calendar_activities' ); ``` After: ![Screen_Shot_2016-08-11_at_3.56.36_PM](/uploads/9325cdb8c0271075abee2a838c1a0787/Screen_Shot_2016-08-11_at_3.56.36_PM.png) ``` new Calendar( {"1469163600":17,"1469422800":3,"1469509200":14,"1469595600":54,"1469768400":4,"1469854800":1,"1470200400":1,"1470373200":1,"1470891600":2}, '/u/root/calendar_activities' ); ``` ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - Tests - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !5784
-rw-r--r--CHANGELOG1
-rw-r--r--app/assets/javascripts/lib/utils/datetime_utility.js8
-rw-r--r--app/assets/javascripts/users/calendar.js51
-rw-r--r--lib/gitlab/contributions_calendar.rb1
-rw-r--r--spec/javascripts/datetime_utility_spec.js.coffee19
5 files changed, 58 insertions, 22 deletions
diff --git a/CHANGELOG b/CHANGELOG
index ec542f58f27..df8dec7bdde 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.12.0 (unreleased)
- Add two-factor recovery endpoint to internal API !5510
- Change merge_error column from string to text type
+ - Reduce contributions calendar data payload (ClemMakesApps)
- Add `web_url` field to issue, merge request, and snippet API objects (Ben Boeckel)
- Set path for all JavaScript cookies to honor GitLab's subdirectory setting !5627 (Mike Greiling)
- Add hover color to emoji icon (ClemMakesApps)
diff --git a/app/assets/javascripts/lib/utils/datetime_utility.js b/app/assets/javascripts/lib/utils/datetime_utility.js
index 10afa7e4329..d4d5927d3b0 100644
--- a/app/assets/javascripts/lib/utils/datetime_utility.js
+++ b/app/assets/javascripts/lib/utils/datetime_utility.js
@@ -67,6 +67,14 @@
$.timeago.settings.strings = tmpLocale;
};
+ w.gl.utils.getDayDifference = function(a, b) {
+ var millisecondsPerDay = 1000 * 60 * 60 * 24;
+ var date1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
+ var date2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
+
+ return Math.floor((date2 - date1) / millisecondsPerDay);
+ }
+
})(window);
}).call(this);
diff --git a/app/assets/javascripts/users/calendar.js b/app/assets/javascripts/users/calendar.js
index 8b3dbf5f5ae..74ecf4f4cf9 100644
--- a/app/assets/javascripts/users/calendar.js
+++ b/app/assets/javascripts/users/calendar.js
@@ -3,7 +3,6 @@
this.Calendar = (function() {
function Calendar(timestamps, calendar_activities_path) {
- var group, i;
this.calendar_activities_path = calendar_activities_path;
this.clickDay = bind(this.clickDay, this);
this.currentSelectedDate = '';
@@ -13,26 +12,36 @@
this.monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
this.months = [];
this.timestampsTmp = [];
- i = 0;
- group = 0;
- _.each(timestamps, (function(_this) {
- return function(count, date) {
- var day, innerArray, newDate;
- newDate = new Date(parseInt(date) * 1000);
- day = newDate.getDay();
- if ((day === 0 && i !== 0) || i === 0) {
- _this.timestampsTmp.push([]);
- group++;
- }
- innerArray = _this.timestampsTmp[group - 1];
- innerArray.push({
- count: count,
- date: newDate,
- day: day
- });
- return i++;
- };
- })(this));
+ var group = 0;
+
+ var today = new Date()
+ today.setHours(0, 0, 0, 0, 0);
+
+ var oneYearAgo = new Date(today);
+ oneYearAgo.setFullYear(today.getFullYear() - 1);
+
+ var days = gl.utils.getDayDifference(oneYearAgo, today);
+
+ for(var i = 0; i <= days; i++) {
+ var date = new Date(oneYearAgo);
+ date.setDate(date.getDate() + i);
+
+ var day = date.getDay();
+ var count = timestamps[date.getTime() * 0.001];
+
+ if ((day === 0 && i !== 0) || i === 0) {
+ this.timestampsTmp.push([]);
+ group++;
+ }
+
+ var innerArray = this.timestampsTmp[group - 1];
+ innerArray.push({
+ count: count || 0,
+ date: date,
+ day: day
+ });
+ }
+
this.colorKey = this.initColorKey();
this.color = this.initColor();
this.renderSvg(group);
diff --git a/lib/gitlab/contributions_calendar.rb b/lib/gitlab/contributions_calendar.rb
index 9dc2602867e..bd681f03173 100644
--- a/lib/gitlab/contributions_calendar.rb
+++ b/lib/gitlab/contributions_calendar.rb
@@ -23,7 +23,6 @@ module Gitlab
dates.each do |date|
date_id = date.to_time.to_i.to_s
- @timestamps[date_id] = 0
day_events = events.find { |day_events| day_events["date"] == date }
if day_events
diff --git a/spec/javascripts/datetime_utility_spec.js.coffee b/spec/javascripts/datetime_utility_spec.js.coffee
index 6b9617341fe..8bd113e7d86 100644
--- a/spec/javascripts/datetime_utility_spec.js.coffee
+++ b/spec/javascripts/datetime_utility_spec.js.coffee
@@ -29,3 +29,22 @@ describe 'Date time utils', ->
it 'should return Saturday', ->
day = gl.utils.getDayName(new Date('07/23/2016'))
expect(day).toBe('Saturday')
+
+ describe 'get day difference', ->
+ it 'should return 7', ->
+ firstDay = new Date('07/01/2016')
+ secondDay = new Date('07/08/2016')
+ difference = gl.utils.getDayDifference(firstDay, secondDay)
+ expect(difference).toBe(7)
+
+ it 'should return 31', ->
+ firstDay = new Date('07/01/2016')
+ secondDay = new Date('08/01/2016')
+ difference = gl.utils.getDayDifference(firstDay, secondDay)
+ expect(difference).toBe(31)
+
+ it 'should return 365', ->
+ firstDay = new Date('07/02/2015')
+ secondDay = new Date('07/01/2016')
+ difference = gl.utils.getDayDifference(firstDay, secondDay)
+ expect(difference).toBe(365) \ No newline at end of file