Scenario
I want to see my dc.js horizontal row stacked bar chart (single row chart), but no chart appears, except for legend with names, axes with tick marks which do appear.
Screenshot
Data set below in code snippet
Question
How do I render the ensure chart rendering successfully using dc.js / d3.js?
Code Snippet
$scope.avgCycleTime = function(){
var data = [
{"Project":"Expedition","Stage": "Created", "Days":12},
{"Project":"Expedition","Stage": "Active", "Days":14},
{"Project":"Expedition","Stage": "Closure", "Days":2}
];
var ndx = crossfilter(data);
data.forEach(function(x) {
x.Days = 0;
});
var ndx = crossfilter(data)
var xdim = ndx.dimension(function (d) {return d.Days;});
function root_function(dim,stack_names) {
return dim.group().reduce(
function(p, v) {
stack_names.forEach(stack_name => {
if(v[stack_name] !== undefined)
p[stack_name] = (p[v[stack_name]] || 0) + v[stack_name]
});
return p;},
function(p, v) {
stack_names.forEach(stack_name => {
if(v[stack_name] !== undefined)
p[stack_name] = (p[v[stack_name]] || 0) + v[stack_name]
});
return p;},
function() {
return {};
});}
var stages = ['Created', 'Active', 'Closure'];
var ygroup = root_function(xdim,stages)
function sel_stack(i) {
return function(d) {
return d.value[i];
};}
cycleChart = new dc.barChart("#risk-cycle-chart");
var chart = document.getElementById('risk-cycle-chart');
heightStatusChart = 200;
widthStatusChart = Math.floor(parseFloat(window.getComputedStyle(chart, null).width))
- 2*parseInt(window.getComputedStyle(chart, null).getPropertyValue('padding-top'));
cycleChart
.x(d3.scaleLinear().domain([0,7,14,21,28]))
.dimension(xdim)
.group(ygroup, data[0].Project, sel_stack(data[0].Project))
.xUnits(dc.units.ordinal)
.margins({left:75, top: 0, right: 0, bottom: 20})
.width(widthStatusChart)
.height(heightStatusChart)
.legend(dc.legend());
for(var i = 1; i<stages.length; ++i)
cycleChart.stack(ygroup, stages[i], sel_stack(stages[i]));
}