JSFiddle - React, Tailwind, and code Playground
HTML
<!-- For StackOverflow question -->
<!-- This is a modified version of this sample: http://bl.ocks.org/3020685
-->
<!-- Remove one or more items from the sourceData array and re-run to
see the error in the console -->
CSS
body {
font: 10px sans-serif;
}
.axis path, .axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
JavaScript
function assignDefaultValues( dataset )
{
var defaultValue = 0;
var keys = [ 'Group1' , 'Group2', 'Group3' ];
var hadData = [ true, true, true];
var newData = [];
var previousdate = new Date();
var sortByDate = function(a,b){ return a.date > b.date ? 1 : -1; };
dataset.sort(sortByDate);
dataset.forEach(function(row){
if(row.date.valueOf() !== previousdate.valueOf()){
for(var i = 0 ; i < keys.length ; ++i){
if(hadData[i] === false){
newData.push( { key: keys[i],
value: defaultValue,
date: previousdate });
}
hadData[i] = false;
}
previousdate = row.date;
}
hadData[keys.indexOf(row.key)] = true;
});
for( i = 0 ; i < keys.length ; ++i){
if(hadData[i] === false){
newData.push( { key: keys[i], value: defaultValue,
date: previousdate });
}
}
return dataset.concat(newData).sort(sortByDate);
}
var sourceData =
[
{key:'Group1',value:37,date:'04/23/12'},
{key:'Group1',value:32,date:'04/24/12'},
{key:'Group1',value:45,date:'04/25/12'},
//{key:'Group1',value:24,date:'04/26/12'},
//{key:'Group2',value:12,date:'04/23/12'},
{key:'Group2',value:19,date:'04/24/12'},
{key:'Group2',value:16,date:'04/25/12'},
{key:'Group2',value:52,date:'04/26/12'},
{key:'Group3',value:46,date:'04/23/12'},
{key:'Group3',value:42,date:'04/24/12'},
{key:'Group3',value:19,date:'04/25/12'},
{key:'Group3',value:16,date:'04/26/12'}
];
var format = d3.time.format("%m/%d/%y");
var margin = {top: 20, right: 30, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x = d3.time.scale()
.range([0, width]);
var y...