Miso Dataset :: How do I bin a dataset based on a time interval?

As seen here: https://github.com/misoproject/dataset/wiki/How-Do-I...#wiki-bintime

by iros

HTML

<script src="https://raw.github.com/misoproject/dataset/master/dist/miso.ds.deps.0.2.1.js"></script>
Open the console to see the result!

JavaScript

var data = [
  { timestamp : 'Sep 03 2012 16:05:15 GMT+0200', category: 'A', value : 12 },
  { timestamp : 'Sep 05 2012 12:25:54 GMT+0200', category: 'A', value : 100 },
  { timestamp : 'Sep 06 2012 16:35:25 GMT+0200', category: 'A', value : 3 },
  { timestamp : 'Sep 06 2012 15:45:53 GMT+0200', category: 'B', value : 12 },
  { timestamp : 'Sep 07 2012 16:11:54 GMT+0200', category: 'B', value : 42 },
  { timestamp : 'Sep 07 2012 19:22:15 GMT+0200', category: 'A', value : 203 },
  { timestamp : 'Sep 07 2012 02:33:05 GMT+0200', category: 'A', value : 13 }
];

var ds = new Miso.Dataset({
  data : data,
  columns : [
    { 
      name : 'timestamp', 
      format : "MMM DD YYYY HH:mm:ss z", 
      type : 'time' 
    }
  ]
});

ds.fetch().then(function() {
  var byDay = ds.groupBy('timestamp', ['value'], {
    preprocess : function(timestamp) {
      // first extract just the day
      var justDay = timestamp.format("MMM DD YYYY");

      // then return it as a moment object
      return moment(justDay, "MMM DD YYYY");
    }
  });
    
  console.log(JSON.stringify(byDay.toJSON()));
});