Last active
March 22, 2016 23:23
-
-
Save palamago/38b515aee5e2e20e5c31 to your computer and use it in GitHub Desktop.
Convert Flat data to Flare data (children) structure using just D3.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html lang="en"> | |
<head> | |
</head> | |
<body> | |
<h1>Flat data to Flare (children) structure using only D3.js</h1> | |
<p>See console</p> | |
<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script> | |
<script src="main.js" charset="utf-8"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function toFlare(data, id_attr, parent_id_attr, root_id_value) { | |
var flareData = []; | |
//root node | |
var root = {}; | |
if (root_id_value) { | |
console.log(root); | |
} else { | |
//Asume the first one | |
root = data.shift(); | |
root.id = root[id_attr]; | |
} | |
flareData.push(root); | |
var nestedData = d3.nest() | |
.key(function(d) { | |
d.id = d[id_attr]; | |
return d[parent_id_attr]; | |
}) | |
.rollup(function(v) { | |
return v | |
}) | |
.map(data); | |
function completeChildren(parentsArray) { | |
parentsArray.forEach(function(e){ | |
if(nestedData[e.id]){ | |
e.children = nestedData[e.id]; | |
delete nestedData[e.id]; | |
completeChildren(e.children); | |
} | |
}); | |
} | |
completeChildren(flareData); | |
return flareData; | |
} | |
var DATA = [{ | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "PRESIDENCIA DE LA NACIÓN", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": 0, | |
"autoridad_apellido": "MACRI", | |
"autoridad_nombre": "Mauricio" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "VICEPRESIDENCIA", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": 0, | |
"autoridad_apellido": "MICHETTI", | |
"autoridad_nombre": "Marta Gabriela" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Secretaría General", | |
"reporta_a": "VICEPRESIDENCIA", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "DE ANDREIS", | |
"autoridad_nombre": "Fernando" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Coordinación", | |
"reporta_a": "Secretaría General", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "ACEVEDO", | |
"autoridad_nombre": "Jesús Mariano" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Coordinador General de Asuntos Presidenciales", | |
"reporta_a": "Secretaría General", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "BIELUS", | |
"autoridad_nombre": "Hernán A." | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría General", | |
"reporta_a": "Secretaría General", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "DÍAZ GILLIGAN", | |
"autoridad_nombre": "Valentín" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Relaciones con la Sociedad Civil", | |
"reporta_a": "Secretaría General", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "MORALES", | |
"autoridad_nombre": "Federico Agustín Félix" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Casa Militar", | |
"reporta_a": "Secretaría General", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "YOFRE", | |
"autoridad_nombre": "José Luis" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Secretaría Legal y Técnica", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "CLUSELLAS", | |
"autoridad_nombre": "Pablo" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Asuntos Legales", | |
"reporta_a": "Secretaría Legal y Técnica", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "HERRERA BRAVO", | |
"autoridad_nombre": "Dante Javier" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría Técnica", | |
"reporta_a": "Subsecretaría de Asuntos Legales", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "INZA", | |
"autoridad_nombre": "María Fernanda" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Agencia Federal de Inteligencia", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "ARRIBAS", | |
"autoridad_nombre": "Gustavo Héctor" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Secretaría de Programación para la Prevención de la Drogadicción y la Lucha Contra el Narcotráfico", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "MORO", | |
"autoridad_nombre": "Roberto Esteban" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Diseño, Monitoreo y Evaluación de Abordaje Territorial, Relaciones Internacionales y Control de Precursores Químicos", | |
"reporta_a": "Secretaría de Programación para la Prevención de la Drogadicción y la Lucha Contra el Narcotráfico (SEDRONAR)", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "SAYA", | |
"autoridad_nombre": "Lidia Noemi" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Prevención, Capacitación y Asistencia de las Adicciones", | |
"reporta_a": "Secretaría de Programación para la Prevención de la Drogadicción y la Lucha Contra el Narcotráfico (SEDRONAR)", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "CANAY", | |
"autoridad_nombre": "Roberto Oscar" | |
}, { | |
"jurisdiccion": "PRESIDENCIA DE LA NACIÓN", | |
"unidad": "Subsecretaría de Coordinación Administrativa", | |
"reporta_a": "Secretaría de Programación para la Prevención de la Drogadicción y la Lucha Contra el Narcotráfico (SEDRONAR)", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "VASQUEZ", | |
"autoridad_nombre": "Ramón Francisco" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Jefatura de Gabinete de Ministros", | |
"reporta_a": "PRESIDENCIA DE LA NACIÓN", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "PEÑA", | |
"autoridad_nombre": "Marcos" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Secretaría de Asuntos Estrátegicos", | |
"reporta_a": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "POMPEO", | |
"autoridad_nombre": "Fulvio Valerio" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Subsecretaría de Asuntos Globales", | |
"reporta_a": "Secretaría de Asuntos Estrátegicos", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "DI CHIARO", | |
"autoridad_nombre": "Paola Iris" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Subsecretaría de Asuntos Institucionales", | |
"reporta_a": "Secretaría de Asuntos Estrátegicos", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "GARCÍA OLIVER", | |
"autoridad_nombre": "Matías" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Secretaría de Coordinación de Políticas Públicas", | |
"reporta_a": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "LOPETEGUI", | |
"autoridad_nombre": "Gustavo Sebastián" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Subsecretaría de Evaluación del Presupuesto Nacional", | |
"reporta_a": "Secretaría de Coordinación de Políticas Públicas", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "PENA", | |
"autoridad_nombre": "Rodrigo Héctor" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Secretaría de Comunicación Pública", | |
"reporta_a": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "GRECCO", | |
"autoridad_nombre": "Jorge Miguel" | |
}, { | |
"jurisdiccion": "JEFATURA DE GABINETE DE MINISTROS", | |
"unidad": "Subsecretaría de Comunicación Pública", | |
"reporta_a": "Secretaría de Comunicación Pública", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "GENTILE", | |
"autoridad_nombre": "Juan Gabriel" | |
}, { | |
"jurisdiccion": "MINISTERIO DE COMUNICACIONESss", | |
"unidad": "Secretaría de Promoción de Inversiones", | |
"reporta_a": "Subsecretaría de Comunicación Pública", | |
"unidad_tipo": "Administración Centralizada", | |
"autoridad_apellido": "LIFSIC", | |
"autoridad_nombre": "Clarisa Diana" | |
}]; | |
//execute | |
var flaredData = toFlare(DATA, "unidad", "reporta_a"); | |
//render | |
console.log(flaredData); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment