Skip to content

Commit 6451d48

Browse files
committed
limit number of entries in chart
1 parent 85df822 commit 6451d48

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

src/main/chart/service.js

+9-12
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,41 @@ angular.module('adf.widget.redmine')
44
.factory('chartDataService', function ($q, redmineService) {
55

66
function getChartData(config) {
7+
config.numberPoints = 50;
78
return redmineService.getIssuesForChart(config).then(function (issues) {
89
//if (vm.config.timespan && vm.config.timespan.fromDateTime && vm.config.timespan.toDateTime)
910
var from = new Date(config.timespan.fromDateTime);
1011
var to = new Date(config.timespan.toDateTime);
1112
return calculateOpenIssuesPerDay(from, to, issues, config);
12-
});
13+
})
1314
}
1415

1516
function calculateOpenIssuesPerDay(from, to, issues, config) {
1617
var timeDiff = Math.abs(from.getTime() - to.getTime());
1718
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
19+
var pointThinningRate = diffDays / config.numberPoints;
1820
var numberAllIssues = issues.length;
1921
var idealIssuesPerDay = numberAllIssues / diffDays;
2022
var idealData = [];
21-
// order issues by creation date
22-
var openIssues = []; // inv: ordered by "closed_on"
23-
var dates = [];// x-values
24-
var values = [];// y-values
23+
var openIssues = [];
24+
var values = [];
2525
while (from.getTime() <= to.getTime()) {
2626
moveNewOpenIssues(issues, openIssues, from);
2727
removeNewClosedIssues(openIssues, from);
2828
var value = {x: from.toISOString(),y:openIssues.length};
2929
values.push(value);
3030
if (config.showIdeal) {
31-
var idealValue = numberAllIssues - idealData.length * idealIssuesPerDay;
31+
var idealValue = Math.round((numberAllIssues - idealData.length * idealIssuesPerDay * pointThinningRate)*100) / 100;
3232
var ideal = {x: from.toISOString(),y:idealValue};
3333
idealData.push(ideal);
3434
}
35-
from.setDate(from.getDate() + 1); // next day
35+
from.setDate(from.getDate() + pointThinningRate);
3636
}
3737
var valueSets = [values];
3838
if (config.showIdeal) {
3939
valueSets.push(idealData);
4040
}
41-
return {
42-
values: valueSets
43-
}
41+
return valueSets;
4442
}
4543

4644
function moveNewOpenIssues(allIssues, openIssues, date) {
@@ -51,6 +49,7 @@ angular.module('adf.widget.redmine')
5149
allIssues.splice(i, 1);
5250
i--;
5351
} else {
52+
// we can stop here, cause the issues are ordered by creation date
5453
break;
5554
}
5655
}
@@ -63,8 +62,6 @@ angular.module('adf.widget.redmine')
6362
if (closeDate.getTime() <= date.getTime()) {
6463
openIssues.splice(i, 1);
6564
i--;
66-
} else {
67-
//break;
6865
}
6966
}
7067
}

0 commit comments

Comments
 (0)