UNPKG

whistle.statistics

Version:
52 lines (44 loc) 1.69 kB
//统计每天的图表数据 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; };