DC.js - Grouping

HTML

<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/d3/3.4.9/d3.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.7/crossfilter.js"></script>
<script src="http://dc-js.github.io/dc.js/js/dc.js"></script>
<link rel="stylesheet" href="http://dc-js.github.io/dc.js/css/dc.css">
<div id="teammateChart"></div>

JavaScript

var chartExample = {
    initChart: function (data) {

        var ndx = crossfilter(data),
            teamMemberDimension = ndx.dimension(function (d) {
                return d.teamMember;
            }),
            teamMemberChart = dc.rowChart("#teammateChart"),
            teamMemberGroup = teamMemberDimension.group().reduce(

            function (p, d) {
                if (d.project in p.projects) p.projects[d.project]++;
                else {
                    p.projects[d.project] = 1;
                    p.projectCount++;
                }
                return p;
            },

            function (p, d) {
                p.projects[d.project]--;
                if (p.projects[d.project] === 0) {
                    delete p.projects[d.project];
                    p.projectCount--;
                }
                return p;
            },

            function () {
                return {
                    projectCount: 0,
                    projects: {}
                };
            });
        teamMemberChart
            .width(270)
            .height(220)
            .dimension(teamMemberDimension)
            .group(teamMemberGroup)
            .valueAccessor(function (d) {
            return d.value.projectCount;
        	})
            .elasticX(true);
        
        dc.renderAll();
    },
    initData: function () {
        var projectActions = [{
            project: "Website Hosting",
            teamMember: "Sam",
            action: "email"
        }, {
            project: "Website Hosting",
            teamMember: "Sam",
            action: "phoneCall"
        }, {
            project: "Budjet",
            teamMember: "Joe",
            action: "email"
        }, {
            project: "Website Design",
            teamMember: "Joe",
            action: "design"
        }, {
            project: "Budget",
            teamMember: "Sam",
            action: "email"
        }, {
            project: "Foo",
           ...