Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- projectsPerMonthTree = ndx.groupAll().reduce(
- function(v, d) {
- v.insert(d.interval);
- return v;
- },
- function(v, d) {
- v.remove(d.interval);
- return v;
- },
- function() {
- return lysenkoIntervalTree(null);
- }
- )
- function intervalTreeGroup(tree, firstDate, lastDate) {
- return {
- all: function() {
- var begin = d3.time.month(firstDate), end = d3.time.month(lastDate);
- var i = new Date(begin);
- var ret = [], count;
- do {
- next = new Date(i);
- next.setMonth(next.getMonth()+1);
- count = 0;
- tree.queryInterval(i.getTime(), next.getTime(), function() {
- ++count;
- });
- ret.push({key: i, value: count});
- i = next;
- if(ret.length > 100)
- throw new Error('uh oh');
- }
- while(i.getTime() <= end.getTime());
- return ret;
- }
- };
- }
- projectsPerMonthGroup = intervalTreeGroup(projectsPerMonthTree.value(), firstDate, lastDate),
- monthChart.filterHandler(function(dim, filters) {
- if(filters && filters.length) {
- if(filters.length !== 1)
- throw new Error('not expecting more than one range filter');
- var range = filters[0];
- dim.filterFunction(function(i) {
- return !(i[1] < range[0].getTime() || i[0] > range[1].getTime());
- })
- }
- else dim.filterAll();
- return filters;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement