У меня есть функция, которая отображает данные за 90 дней на графике с использованием библиотеки C3.js. У меня есть даты начала и окончания, определенные на основе переменной count. Есть ли способ, которым я могу сгруппировать данные за 90 дней в зависимости от недели. 1 неделя = 1 точка данных (в среднем 7 дней). 4 недели = 4 точки данных 90 дней = 12 точек данных и т. Д.
function draw__chart(model, type){
var count = 0
if(type == 'week'){
count = 7;
}else if (type == 'month'){
dcount = 30;
}else if (type == '3_months'){
count = 90;
}
$scope.end_daterange = new Date();
$scope.end_daterange = moment($scope.end_daterange).format('MM/DD/YYYY')
$scope.begin_daterange = new Date($scope.end_daterange);
$scope.begin_daterange.setDate($scope.begin_daterange.getDate()- count);
$scope.begin_daterange = moment($scope.begin_daterange).format('MM/DD/YYYY')
$date_id = ["date_id"];
$volume1 = ["volume1"];
$volume2 = ["volume2"];
angular.forEach(model, function(value, key) {
//Date for Chart
if(dateCheck($scope.begin_daterange,$scope.end_daterange,moment(value.log_date_id).format('MM/DD/YYYY'))){
$date_id.push(moment(value.log_date_id).format('MM/DD/YYYY'));
$volume1.push(value.volume1);
$volume2.push(value.volume2);
}
});
//Drawing Second Chart
d3.select("#volume_graph svg").remove();
setTimeout(function() {
$scope.volume_id = c3.generate({
bindto: d3.select('#volume_graph'),
data: {
x : 'date_id',
columns: [
$date_id,
],
},
},
axis: {
x: {
type: 'category',
tick: {
rotate: -90,
multiline: false
},
height: 70
},
y: {
label: {
text: 'Percentage',
position: 'outer-middle'
}
},
},
tooltip: {
show: true
}
});
}, 100);
};
Функция проверки диапазона дат:
function dateCheck(from,to,check) {
var fDate,lDate,cDate;
fDate = Date.parse(from);
lDate = Date.parse(to);
cDate = Date.parse(check);
if((cDate <= lDate && cDate >= fDate)) {
return true;
}
return false;
};
HTML:
<div id="volume_graph" ng-hide="loading"></div>