update excluding multiples

Example of a set of graphs where one of the attribute is required not to be summed all the time.

by raino01r

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js"></script>
<script src="https://dc-js.github.io/dc.js/js/crossfilter.js"></script>
<script src="https://dc-js.github.io/dc.js/js/dc.js"></script>
<link rel="stylesheet" href="https://dc-js.github.io/dc.js/css/dc.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/reductio/0.6.3/reductio.min.js"></script>
</br>
<div id="brush">Select time</div>
</br>
<div id="bymonth">Month</div>
</br>
<div id="byroom">Room</div>
</br>
<div id="bytype">Type</div>

CSS

#brush g.y { /*Hide y axis on top bar-brush*/
    display: none;
}

JavaScript

var dateFormat = d3.time.format('%Y-%m');
var data = [
    {"machineCount": 9, "failCount": 5, "month": "2016-12", "room": "1", "type": "A"}, 
    {"machineCount": 7, "failCount": 2, "month": "2016-12", "room": "2", "type": "A"}, 
    {"machineCount": 2, "failCount": 2, "month": "2016-12", "room": "3", "type": "A"}, 
    {"machineCount": 9, "failCount": 1, "month": "2016-12", "room": "1", "type": "B"}, 
    {"machineCount": 7, "failCount": 5, "month": "2016-12", "room": "2", "type": "B"}, 
    {"machineCount": 2, "failCount": 4, "month": "2016-12", "room": "3", "type": "B"}, 
    {"machineCount": 8, "failCount": 3, "month": "2017-01", "room": "1", "type": "A"}, 
    {"machineCount": 7, "failCount": 2, "month": "2017-01", "room": "2", "type": "A"}, 
    {"machineCount": 3, "failCount": 9, "month": "2017-01", "room": "3", "type": "A"}, 
    {"machineCount": 8, "failCount": 3, "month": "2017-01", "room": "1", "type": "B"}, 
    {"machineCount": 7, "failCount": 9, "month": "2017-01", "room": "2", "type": "B"}, 
    {"machineCount": 3, "failCount": 3, "month": "2017-01", "room": "3", "type": "B"},
    {"machineCount": 0, "failCount": 0, "month": "2017-02", "room": "3", "type": "B"},
];

data.forEach(function(x) {x['month'] = dateFormat.parse(x['month']);});

var brush_chart = dc.lineChart('#brush'),
    bymonth_chart = dc.barChart('#bymonth'),
    byroom_chart = dc.rowChart('#byroom'),
    bytype_chart = dc.rowChart('#bytype');
// data
var ndx = crossfilter(data);
// dimensions
var brush_rate_dim = ndx.dimension(function(d){return d.month;}),
    month_rate_dim = ndx.dimension(function(d){return d.month;}),
    type_rate_dim = ndx.dimension(function(d){return d.type;}),
    room_rate_dim = ndx.dimension(function(d){return d.room;});

var time_domain = [
    d3.time.month.offset(dateFormat.parse('2016-12'), -2),
    d3.time.month.offset(dateFormat.parse('2017-01'), 2)
];

// groups
var reducer = reductio()
reducer
    .value('mach_count')
    .exception(function(d) {...