var settings = {
"max_width":"700",
"x":{
"label":"Medal Count",
"type":"linear",
"column":"count",
domain: [0]
},
"y":{
"type":"ordinal",
"column":"Country",
"sort":"total-descending"
},
"marks":[
{
"arrange":"stacked",
"split":"type",
"type":"bar",
"per":["Country"],
"attributes": {"fill-opacity": 0.8},
"summarizeX": 'mean'
}
],
"gridlines":"x",
"color_by":"type",
legend: {
label: 'Medal Type',
order: ['Bronze', 'Silver', 'Gold']
}
};
function chartInit(chart){
d3.select("span.init").remove()
d3.select("body")
.insert("span",":first-child")
.attr("class","destroy")
.html("Click here to destroy this chart.")
d3.select("span.destroy a")
.style("color","blue")
.style("text-decoration","underline")
.on("click",function(){
console.log("destroying")
stackedMedalChart.destroy() //removes event listeners and unmounts DOM elements
stackedMedalChart = null; //completely removes original objects. Could add additional lines to remove data and config objects.
})
}
function chartDestroy(chart){
d3.select("span.destroy").remove()
d3.select("body")
.insert("span",":first-child")
.attr("class","init")
.html("The chart has been destroyed. Click here to re-initialize this chart.")
d3.select("span.init a")
.style("color","blue")
.style("text-decoration","underline")
.on("click",function(){
stackedMedalChart = webCharts.createChart('body', settings); //intentional global for the demo
stackedMedalChart.on("init",chartInit)
stackedMedalChart.on("destroy",chartDestroy)
d3.csv('OlympicMedals2012_long.csv', function(error, data){
stackedMedalChart.init(data);
});
})
}
var stackedMedalChart = webCharts.createChart('body', settings);
stackedMedalChart.on("init",chartInit)
stackedMedalChart.on("destroy",chartDestroy)
d3.csv('OlympicMedals2012_long.csv', function(error, data){
stackedMedalChart.init(data);
});