in site/js/projects.js [1144:1225]
function renderCommitteeEvolution() {
var evo = {}; // 'year-month' -> { established: [], retired: [] }
// init evo with empty content for the whole period
var maxYear = new Date().getFullYear();
for (var year = 1995; year <= maxYear; year++) {
var maxMonth = (year < maxYear) ? 12 : (new Date().getMonth() + 1);
for (var month = 1; month <= maxMonth; month++) {
var key = year + '-' + (month < 10 ? '0':'') + month;
evo[key] = { 'established': [], 'retired': [] };
}
}
// add current committees
var c;
for (c in committees) {
c = committees[c];
if (evo[c.established]) {
evo[c.established]['established'].push(c);
} else {
console.log(c.id + ": " + c.established + " is off(?!)");
}
}
// add retired committees
for (c in retiredCommittees) {
c = retiredCommittees[c];
if (evo[c.established] && evo[c.retired]) {
evo[c.established]['established'].push(c);
evo[c.retired]['retired'].push(c);
} else {
console.log(c.id + ": " + c.established + " or " + c.retired + " is off(?!)");
}
}
// compute data
var data = [];
var cur = 0;
var d;
for (d in evo) {
var established = evo[d]['established'];
var retired = evo[d]['retired'];
var estDisplay = [];
for (c in established) {
c = established[c];
estDisplay.push(c.name + ((c.id in retiredCommittees) ? ' (retired ' + retiredCommittees[c.id]['retired'] + ')':''));
}
var retDisplay = [];
for (c in retired) {
c = retired[c];
retDisplay.push(c.name + ' (established ' + c['established'] + ')');
}
cur += established.length - retired.length;
data.push([d, established.length, htmlListTooltip(d, 'new committee', estDisplay), -1*retired.length, htmlListTooltip(d, 'retired committee', retDisplay), cur]);
}
//narr.sort(function(a,b) { return (b[1] - a[1]) });
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string', 'Month');
dataTable.addColumn('number', "New committees");
dataTable.addColumn({type: 'string', role: 'tooltip', 'p': {'html': true}});
dataTable.addColumn('number', "Retired committees");
dataTable.addColumn({type: 'string', role: 'tooltip', 'p': {'html': true}});
dataTable.addColumn('number', 'Current committees');
dataTable.addRows(data);
var options = {
title: "Committees evolution (also called PMCs or Top Level Projects)",
isStacked: true,
height: 320,
width: 1160,
seriesType: "bars",
backgroundColor: 'transparent',
series: {2: {type: "line", targetAxisIndex: 1}},
tooltip: {isHtml: true},
vAxes:[
{title: 'Change in states', ticks: [-3,0,3,6,9]},
{title: 'Current number of committees'}
]
};
var div = document.createElement('div');
document.getElementById('details').appendChild(div);
var chart = new google.visualization.ComboChart(div);
chart.draw(dataTable, options);
}