Code coverage report for src/compiler/sort.js

Statements: 100% (20 / 20)      Branches: 100% (4 / 4)      Functions: 100% (5 / 5)      Lines: 100% (20 / 20)      Ignored: none     

All files » src/compiler/ » sort.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 52 53 54 55 56 57 58 59 60 61    1   1   1     1     3   3 9 9 2 3           2 3 3     2   2                       2           2       3     1 2      
'use strict';
 
require('../globals');
 
var vlfield = require('../field');
 
module.exports = sort;
 
// adds new transforms that produce sorted fields
function sort(data, encoding, stats, opt) {
  // jshint unused:false
 
  var datasetMapping = {};
 
  encoding.forEach(function(field, encType) {
    var sortBy = encoding.sort(encType, stats);
    if (sortBy.length > 0) {
      var fields = sortBy.map(function(d) {
        return {
          op: d.aggregate,
          field: vlfield.fieldRef(d, {nofn: true, data: !encoding._vega2})
        };
      });
 
      var byClause = sortBy.map(function(d) {
        var reverse = (d.reverse ? '-' : '');
        return reverse + vlfield.fieldRef(d, {data: !encoding._vega2});
      });
 
      var dataName = sort.getDataName(encType);
 
      var transforms = [
        {
          type: 'aggregate',
          groupby: [ encoding.fieldRef(encType) ],
          fields: fields
        },
        {
          type: 'sort',
          by: byClause
        }
      ];
 
      data.push({
        name: dataName,
        source: RAW,
        transform: transforms
      });
 
      datasetMapping[encType] = dataName;
    }
  });
 
  return data;
}
 
sort.getDataName = function(encType) {
  return 'sorted-' + encType;
};