treeData = {
const root = {
name: "",
votes: 0,
votesD: totalD,
votesR: totalR
};
const states = contested.sort((a, b) => {
if (decided.has(a.name)) {
return -1;
} else if (decided.has(b.name)) {
return 1;
} else return sortStates(a, b);
});
function buildTree(node, depth) {
if (depth < states.length && !winner(node)) {
const state = states[depth];
const status = decided.get(state.name);
node.children = [];
if (!status || status === "D") {
node.children.push({
name: state.name,
shortname: state.shortname,
party: "D",
votes: state.votes,
votesD: node.votesD + state.votes,
votesR: node.votesR
});
}
if (!status || status === "R") {
node.children.push({
name: state.name,
shortname: state.shortname,
party: "R",
votes: state.votes,
votesD: node.votesD,
votesR: node.votesR + state.votes
});
}
node.children.forEach((child) => buildTree(child, depth + 1));
}
return node;
}
return buildTree(root, 0);
}