I have a d3 function (below) to group data that looks like this:
[{"count":17,"created_at":"2012-08-20T04:10:08Z","id":1,"notes":"","occurred_at":"2012-08-19T13:30:00Z","seizure_type_id":1,"updated_at":"2012-08-20T04:10:08Z"},{"count":25,"created_at":"2012-08-20T04:11:06Z","id":4,"notes":"","occurred_at":"2012-08-18T13:30:00Z","seizure_type_id":1,"updated_at":"2012-08-20T04:11:06Z"},{"count":40,"created_at":"2012-08-20T21:05:47Z","id":94,"notes":null,"occurred_at":"2012-07-16T13:30:00Z","seizure_type_id":1,"updated_at":"2012-08-20T21:05:47Z"},{"count":10,"created_at":"2012-08-20T04:13:38Z","id":8,"notes":"","occurred_at":"2012-08-17T13:30:00Z","seizure_type_id":1,"updated_at":"2012-08-20T04:13:38Z"},{"count":9,"created_at":"2012-08-20T20:35:19Z","id":11,"notes":null,"occurred_at":"2012-08-13T13:30:00Z","seizure_type_id":1,"updated_at":"2012-08-20T20:35:19Z"}]
This appears to produce the correct result, however I'd like to offset the parsed dates with my timezone (EST currently) so that the groupings are for the current timezone not UTC. Also if anyone knows of a better way to group my data, I'd love to see it.
@group_data: (inputData) ->
format = d3.time.format.iso
gformat = d3.time.format("%Y-%m-%d")
array = d3.nest()
.key((d) ->
gformat(format.parse(d.occurred_at))
)
.entries(inputData)
.map((d) ->
group = d.key
total = 0
d.values.forEach((day) ->
total = total + day.count
)
return {'group': group, total:total }
)
obj = {}
array.forEach((d) -> obj[d.group] = d.total)
obj