Adds main HTML file and CSV data file

parent 748c7d36
Pipeline #2 failed with stages
name,imports
Cruz Roja,Cabildo de Fuerteventura
Cruz Roja,Ayuntamiento Puerto del Rosario
Cruz Roja,Refugio Majorero
Cruz Roja,AFUERCC
Cruz Roja,Parroquia Ntra Sra del Rosario
Cruz Roja,Fundación ADSIS
Cruz Roja,Allanando el camino
PFAE Puerto Vivo,AAVV Los Llanos
PFAE Puerto Vivo,AAVV Cabillas del Ángel
PFAE Puerto Vivo,AAVV Las Tesjuate
PFAE Puerto Vivo,AAVV 90 Viviendas
PFAE Puerto Vivo,AAVV Las Tahonillas Los Estancos
PFAE Puerto Vivo,AAVV Puerto Lajas
PFAE Puerto Vivo,"AAVV Ampuyenta, La Matilla, El Time, El Matorral"
PFAE Puerto Vivo,Asociación Los Pajeros de Guisguey
PFAE Puerto Vivo,"AAVV Tamogán, Los Molinos, El Charco y Las Parcelas"
PFAE Puerto Vivo,AAVV La Molina de La Charca
PFAE Puerto Vivo,Ayuntamiento Puerto del Rosario
PFAE Puerto Vivo,Cabildo de Fuerteventura
AVANFUER,AA MCM
AVANFUER,AJAI
AVANFUER,CAI Puerto del Rosario
AVANFUER,Parroquia Ntra Sra del Rosario
AVANFUER,ASOMASAMEN
AVANFUER,ADISFUER
AVANFUER,AFALF
AVANFUER,Refugio Majorero
AVANFUER,Asociación Astronómica Fuerteventura
AVANFUER,Ayuntamiento Puerto del Rosario
AVANFUER,Cabildo de Fuerteventura
AJAI,Comerciantes Zona Centro
AJAI,Allanando el camino
AJAI,EUPEC (Estudios Universitarios Pentia et Doctrina)
AJAI,ASOMASAMEN
Murga Gambusinos,Murga Quintillos
Murga Gambusinos,Murga Revolucionados
Murga Gambusinos,Murga Desinkietas
Murga Gambusinos,Comerciantes Zona Centro
Murga Gambusinos,Parroquia Ntra Sra del Rosario
Parroquia Ntra Sra del Rosario,Cabildo de Fuerteventura
Parroquia Ntra Sra del Rosario,AAVV La Molina de La Charca
Parroquia Ntra Sra del Rosario,Ayuntamiento Puerto del Rosario
Parroquia Ntra Sra del Rosario,AAVV Los Hornos del Charco
Parroquia Ntra Sra del Rosario,AAVV 90 Viviendas
Parroquia Ntra Sra del Rosario,Refugio Majorero
Parroquia Ntra Sra del Rosario,ASOMASAMEN
ADERIS,Ayuntamiento Puerto del Rosario
ADERIS,AAVV Los Hornos del Charco
ADERIS,Fundación ADSIS
Allanando el camino,Cabildo de Fuerteventura
Refugio Majorero,Renacer Violeta
Refugio Majorero,ADISFUER
Refugio Majorero,Cabildo de Fuerteventura
Refugio Majorero,Ayuntamiento Puerto del Rosario
Refugio Majorero,AAVV Las Tesjuate
Asociación Astronómica Fuerteventura,AAVV Las Tesjuate
Asociación Astronómica Fuerteventura,AAVV Los Hornos del Charco
AAVV Los Llanos,AAVV Las Tesjuate
AAVV Los Llanos,Cabildo de Fuerteventura
AAVV Los Llanos,GOR MAXORETA
AAVV Los Llanos,ASOMASAMEN
AAVV Las Tesjuate,"AAVV Ampuyenta, La Matilla, El Time, El Matorral"
AAVV Las Tesjuate,Asociación Los Pajeros de Guisguey
AAVV Las Tesjuate,"AAVV Tamogán, Los Molinos, El Charco y Las Parcelas"
AAVV Las Tesjuate,AAVV La Molina de La Charca
AAVV Las Tesjuate,Ayuntamiento Puerto del Rosario
AAVV Las Tesjuate,Cabildo de Fuerteventura
AAVV Las Tesjuate,ASOMASAMEN
AAVV Los Hornos del Charco,Salud y Sonrisas
AAVV Los Hornos del Charco,Plataforma Nuevo Modelo Energético
AAVV Los Hornos del Charco,AFUERCC
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Mestura Puerto. Enredómetro</title>
<style>
body { background-color: white; }
.node {
font: 300 12px "Helvetica Neue", Helvetica, Arial, sans-serif;
fill: #666;
}
.node:hover {
fill: #000;
}
.link {
stroke: black;
stroke-opacity: 0.4;
fill: none;
pointer-events: none;
}
.node:hover,
.node--source,
.node--target {
}
.node--source {
/*fill: #2ca02c;*/
fill: blue;
}
.node--target {
/*fill: #d62728;*/
fill: red;
}
.link--source,
.link--target {
stroke-opacity: 1;
stroke-width: 2px;
}
.link--source {
/*stroke: #d62728;*/
stroke: red;
}
.link--target {
/*stroke: #2ca02c;*/
stroke: blue;
}
</style>
</head>
<body>
<script src="js/d3.v4.min.js"></script>
<script>
var diameter = 900,
radius = diameter / 2,
innerRadius = radius - 320;
var cluster = d3.cluster()
.size([360, innerRadius]);
var line = d3.radialLine()
.curve(d3.curveBundle.beta(0.85))
.radius(function(d) { return d.y; })
.angle(function(d) { return d.x / 180 * Math.PI; });
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.append("g")
.attr("transform", "translate(" + radius + "," + radius + ")");
var link = svg.append("g").selectAll(".link"),
node = svg.append("g").selectAll(".node");
//d3.json("data/flare.redux.json", function(error, classes) {
d3.csv("data/mestura.enredometro.csv", function(error, rels) {
if (error) throw error;
var nodesByName = [];
// Create nodes for each unique source and target.
rels.forEach(function(link) {
var parent = link.name;
var child = link.imports;
// var parent = link.name = nodeByName(link.name),
// child = link.imports = nodeByName(link.imports);
// if (parent.imports) parent.imports.push(child);
// else parent.imports = [child];
if (parent in nodesByName) {
nodesByName[parent].imports.push(link.imports);
} else {
nodesByName[parent] = {};
nodesByName[parent].name = link.name;
nodesByName[parent].imports = [];
nodesByName[parent].imports.push(link.imports);
}
if (child in nodesByName) {} else {
nodesByName[child] = {};
nodesByName[child].name = child;
nodesByName[child].imports = [];
}
});
// function nodeByName(value) {
// return nodesByName[value] || (nodesByName[value] = {name: value});
// }
var relsBvalues = d3.values(nodesByName);
var root = packageHierarchy(relsBvalues)
.sum(function(d) { return d.size; });
cluster(root);
link = link
.data(packageImports(root.leaves()))
.enter().append("path")
.each(function(d) { d.source = d[0], d.target = d[d.length - 1]; })
.attr("class", "link")
.attr("d", line);
node = node
.data(root.leaves())
.enter().append("text")
.attr("class", "node")
.attr("dy", "0.31em")
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 8) + ",0)" + (d.x < 180 ? "" : "rotate(180)"); })
.attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
.text(function(d) { return d.data.key; })
.on("mouseover", mouseovered)
.on("mouseout", mouseouted);
});
function mouseovered(d) {
node
.each(function(n) { n.target = n.source = false; });
link
.classed("link--target", function(l) { if (l.target === d) return l.source.source = true; })
.classed("link--source", function(l) { if (l.source === d) return l.target.target = true; })
.filter(function(l) { return l.target === d || l.source === d; })
.raise();
node
.classed("node--target", function(n) { return n.target; })
.classed("node--source", function(n) { return n.source; });
}
function mouseouted(d) {
link
.classed("link--target", false)
.classed("link--source", false);
node
.classed("node--target", false)
.classed("node--source", false);
}
// Lazily construct the package hierarchy from class names.
function packageHierarchy(classes) {
var map = {};
function find(name, data) {
var node = map[name], i;
if (!node) {
node = map[name] = data || {name: name, children: []};
if (name.length) {
node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
node.parent.children.push(node);
node.key = name.substring(i + 1);
}
}
return node;
}
classes.forEach(function(d) {
find(d.name, d);
});
return d3.hierarchy(map[""]);
}
// Return a list of imports for the given array of nodes.
function packageImports(nodes) {
var map = {},
imports = [];
// Compute a map from name to node.
nodes.forEach(function(d) {
map[d.data.name] = d;
});
// For each import, construct a link from the source to target node.
nodes.forEach(function(d) {
if (d.data.imports) d.data.imports.forEach(function(i) {
imports.push(map[d.data.name].path(map[i]));
});
});
return imports;
}
</script>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment