| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- const _ = require('lodash')
- const app = require('./app')
- app.service('statistics', function(api) {
- const chart = ({
- rows,
- seriesField,
- dataField,
- labelsField
- }) => {
- const labels = _.chain(rows).map(x => x[labelsField]).uniq().value()
- const series = _.chain(rows).map(x => x[seriesField]).uniq().value()
- const seriesData = _.chain(rows)
- .groupBy(x => x[seriesField])
- .toPairs()
- .map(([key, rows]) => [
- key,
- _.chain(rows)
- .map(row => [row[labelsField], row[dataField]])
- .fromPairs()
- .value()
- ])
- .fromPairs()
- .value()
- data = series.map(s => {
- const sdata = seriesData[s]
- return labels.map(l => sdata[l])
- })
- return {labels, series, data}
- }
- this.efficiency = async () => {
- const rows = await api.statistics()
- return {
- delivery: chart({
- rows,
- seriesField: 'key',
- dataField: 'delivered',
- labelsField: 'date'
- }),
- efficiency: chart({
- rows,
- seriesField: 'key',
- dataField: 'efficiency',
- labelsField: 'date'
- })
- }
- }
- })
|