Code coverage report for src/compile/aggregate.js

Statements: 91.3% (21 / 23)      Branches: 83.33% (15 / 18)      Functions: 100% (2 / 2)      Lines: 90.91% (20 / 22)      Ignored: none     

All files » src/compile/ » aggregate.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51    1   1   1   1 3   3   3 8 3     3           5 5   5 2       3 3   3 3 3           3              
'use strict';
 
require('../globals');
 
var util = require('../util');
 
module.exports = aggregates;
 
function aggregates(dataTable, encoding, opt) {
  opt = opt || {};
 
  var dims = {}, meas = {}, detail = {}, facets = {};
 
  encoding.forEach(function(field, encType) {
    if (field.aggregate) {
      Iif (field.aggregate === 'count') {
        meas.count = {op: 'count', field: '*'};
      }else {
        meas[field.aggregate + '|'+ field.name] = {
          op: field.aggregate,
          field: encoding.fieldRef(encType, {nofn: true})
        };
      }
    } else {
      dims[field.name] = encoding.field(encType);
      Iif (encType == ROW || encType == COL) {
        facets[field.name] = dims[field.name];
      }else if (encType !== X && encType !== Y) {
        detail[field.name] = dims[field.name];
      }
    }
  });
  dims = util.vals(dims);
  meas = util.vals(meas);
 
  Eif (meas.length > 0) {
    if (!dataTable.transform) dataTable.transform = [];
    dataTable.transform.push({
      type: 'aggregate',
      groupby: dims,
      fields: meas
    });
  }
  return {
    details: util.vals(detail),
    dims: dims,
    facets: util.vals(facets),
    aggregated: meas.length > 0
  };
}