// For use with scroller_template.html and mfreeman_scroller.js.
// function to move a selection to the front/top, from
// https://gist.github.com/trtg/3922684
d3.selection.prototype.moveToFront = function() {
return this.each(function(){
this.parentNode.appendChild(this);
});
};
// Settings object
var settings = {
// could be used to save settings for styling things.
}
var data = []; // make this global
function focus_country(country) {
console.log("in focus", country);
// unfocus all, then focus one if given a name.
d3.selectAll("path.line").classed("focused", false);
if (country) {
var country = country.replace(/\s/g, '_');
var line = d3.select("g.lines#" + country + " path.line");
line.classed("focused", true);
var lineGroup = d3.select("g.lines#" + country);
lineGroup.moveToFront();
}
}
// ******* Change the showX and showY function for some cases ********
var update = function(value) {
var country = null;
var localdata = data;
switch(value) {
case 1:
console.log("in case", value);
localdata = data;
//yScale = d3.scale.linear().range([margin.top, height - margin.bottom]);
break;
case 2:
console.log("in case 2");
//yScale = d3.scale.sqrt().range([margin.top, height - margin.bottom]);
country = null;
localdata = data.filter(function(d) {return d.region === "Europe & Central Asia";});
break;
case 3:
console.log("in case 3");
country = "Tajikistan";
localdata = data.filter(function(d) {return d.region === "Europe & Central Asia";});
break;
case 4:
console.log("in case 4");
country = "Turkmenistan";
localdata = data.filter(function(d) {return d.region === "Europe & Central Asia";});
break;
case 5:
console.log("in case 5");
country = null;
localdata = data.filter(function(d) {return d.region === "Sub-Saharan Africa";});
break;
case 6:
console.log("in case 6");
country = null;
localdata = data.filter(function(d) {return d.country === "Angola";});
break;
case 7:
console.log("in case 7");
country = "Angola";
localdata = data;
break;
default:
country = null;
focus_country(country);
draw_lines(localdata);
break;
}
focus_country(country); // this applies a highlight on a country.
draw_lines(localdata); // we can update the data if we want in the cases.
}
// setup scroll functionality
function display(error, mydata) {
if (error) {
console.log(error);
} else {
console.log(data);
data = make_data(mydata); // assign to global; call func in line_chart_refactor.js
console.log("after makedata", data);
var scroll = scroller()
.container(d3.select('#graphic'));
// pass in .step selection as the steps
scroll(d3.selectAll('.step'));
// Pass the update function to the scroll object
scroll.update(update)
}
}
queue()
.defer(d3.csv, "infantmort.csv")
.await(display);