whistle.statistics
Version:
statistics for whistle.nohost
52 lines (44 loc) • 1.69 kB
JavaScript
//统计每天的图表数据
const {loadCollection, dbRead} = require('../../db');
const util = require("../../util");
const days = 7; // 统计7天的
module.exports = async (ctx) => {
let timeStamp = new Date(new Date().setHours(0, 0, 0, 0)).getTime(); // 当天24点的时间戳
let startTime = timeStamp - (days - 1) * 86400 * 1000;
let pvCollection = await loadCollection('pv', dbRead);
let pvData = pvCollection.find({'time': {'$gt': startTime}});
let result = {};
if (pvData && pvData.length > 0) {
for (let i = 0, len = pvData.length; i < len; i++) {
let item = pvData[i];
let time = util.formatTime(parseInt(item['time']) ,'hh:mm');
let day = util.formatTime(item['time'], 'yyyyMMdd');
if (!result[time]) {
result[time] = {}
}
result[time][day] = (result[time][day] ? result[time][day] : 0) + item['value']; // 按日统计
}
}
console.log("result:" , result);
let chartData = {} ;
let rows = [] ;
let columns = ['time'] ;
for(let i = 0 ; i < days ; i++){
columns.push(util.formatTime(startTime + i * 86400 * 1000, 'yyyyMMdd'));
}
for(let time in result){
let chartDataItem = {
time : time
};
chartDataItem["index"] = new Date(`2018-01-01 ${time}`).getTime();
let dayData = result[time];
for(let day in dayData){
chartDataItem[day] = dayData[day];
}
rows.push(chartDataItem);
}
rows = rows.sort(util.sort("index"));
chartData['columns'] = columns ;
chartData['rows'] = rows ;
ctx.body = chartData;
};