Skip to content

Instantly share code, notes, and snippets.

@ginmoei
Last active March 25, 2019 15:22
Show Gist options
  • Save ginmoei/aa114515c002f2b8fbd77950a4e49c09 to your computer and use it in GitHub Desktop.
Save ginmoei/aa114515c002f2b8fbd77950a4e49c09 to your computer and use it in GitHub Desktop.
Hierarchical Edge Bundling
license:
height: 1800
border: no
scrolling: no
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.someText {
font: 300 13px "Helvetica Neue", Helvetica, Arial, sans-serif;
fill: #fff;
}
.node {
font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
fill: #bbb;
}
.node:hover {
fill: #000;
}
.link {
stroke: steelblue;
stroke-opacity: 0.4;
fill: none;
pointer-events: none;
}
.node:hover,
.node--source,
.node--target {
font-weight: 700;
}
.node--source {
fill: #2ca02c;
}
.node--target {
fill: #d62728;
}
.link--source,
.link--target {
stroke-opacity: 1;
stroke-width: 2px;
}
.link--source {
stroke: #d62728;
}
.link--target {
stroke: #2ca02c;
}
</style>
<body>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script>
var diameter = 1200,
radius = diameter / 2,
innerRadius = radius - 380;
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("https://pdmsdemo.co.uk/?venueCode=EAT", function(error, recordset) {
// console.log(data);
classes = JSON.parse(recordset[0]["JSON_F52E2B61-18A1-11d1-B105-00805F49916B"])
// grab the data and parse as JSON object
// d3.json("milestones", function(error, classes) {
if (error) throw error;
var root = packageHierarchy(classes)
.sum(function(d) {
return d.size;
});
var nodes = 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);
var groupData = svg.selectAll("g.group")
.data(root.descendants().filter(function(d) {
return d.depth == 1;
}))
.enter().append("group")
.attr("class", "group");
// swap the start and end angles here on the arc for anything between 90 and 180
var groupArc = d3.arc()
.innerRadius(innerRadius + 15)
.outerRadius(innerRadius + 30)
.startAngle(
function(d) {
return (findStartAngle(d.__data__.descendants()) - 2) * Math.PI / 180;
}
)
.endAngle(
function(d) {
return (findEndAngle(d.__data__.descendants()) + 2) * Math.PI / 180;
});
var arc_group = svg.selectAll("g.arc")
.data(groupData._groups[0])
.enter().append("svg:path")
.attr("d", groupArc)
.attr("class", "groupArc")
.style("fill", "#1f77b4")
.style("fill-opacity", 0.5)
.each(function(d, i) {
//Search pattern for everything between the start and the first capital L
var firstArcSection = /(^.+?)L/;
//Grab everything up to the first Line statement
var newArc = firstArcSection.exec(d3.select(this).attr("d"))[1];
//Replace all the commas so that IE can handle it
newArc = newArc.replace(/,/g, " ");
//If the start angle lies between 90 and 270
//flip the end and start position
var ea = groupArc.startAngle()(d) * 180 / Math.PI;
if (ea > 90 && ea < 270) {
// if(true){
var startLoc = /M(.*?)A/, //Everything between the first capital M and first capital A
middleLoc = /A(.*?)0 0 1/, //Everything between the first capital A and 0 0 1
endLoc = /0 0 1 (.*?)$/; //Everything between the first 0 0 1 and the end of the string (denoted by $);
//Flip the direction of the arc by switching the start en end point (and sweep flag)
//of those elements that are below the horizontal line
var newStart = endLoc.exec(newArc)[1];
var newEnd = startLoc.exec(newArc)[1];
var middleSec = middleLoc.exec(newArc)[1];
//Build up the new arc notation, set the sweep-flag to 0
newArc = "M" + newStart + "A" + middleSec + "0 0 0 " + newEnd;
} //if
//Create a new invisible arc that the text can flow along
svg.append("path")
.attr("class", "hiddenDonutArcs")
.attr("id", d.__data__.data.name)
.attr("d", newArc)
.style("fill", "none");
});
//Append the label names on the outside
svg.selectAll(".someText")
.data(groupData._groups[0])
.enter().append("text")
.attr("class", "someText")
.attr("dy", function(d, i) {
var ea = groupArc.startAngle()(d) * 180 / Math.PI;
if (ea > 90 && ea < 270) return -4
else return 12;
})
.append("textPath")
.attr("startOffset", "50%")
.style("text-anchor", "middle")
.attr("xlink:href", function(d, i) {
return "#" + d.__data__.data.name;
})
.text(function(d) {
return d.__data__.data.children[0]['heading'];
});
node = node.data(root.leaves())
.enter()
.append("g")
.attr("class", "node");
node
.append("text")
.attr("id", function(d) {
return "node-" + d.data.name;
})
.attr("dy", "0.31em")
.attr("transform", function(d) {
return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 35) + ",0)" + (d.x < 180 ? "" : "rotate(180)");
})
.attr("text-anchor", function(d) {
return d.x < 180 ? "start" : "end";
})
.text(function(d) {
return d.data.description;
})
.on("mouseover", mouseovered)
.on("mouseout", mouseouted)
node.append("circle")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", 5)
.attr("transform", function(d) {
return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 8) + ",0)" + (d.x < 180 ? "" : "rotate(180)");
})
.style("fill", function(d) {
return d.data.rag
});
});
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);
}
function packageHierarchy(classes) {
var map = {};
function find(name, data) {
var node = map[name],
i;
if (!node) {
node = map[name] = data || {
name: name,
heading: '',
children: []
};
if (name.length) {
node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
node.parent.children.push(node);
if (!node.parent.heading.length) {
node.parent.heading = node.heading
};
// propagate the heading up the hierarchy if there isn't one.
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;
}
function findStartAngle(children) {
var min = children[0].x;
children.forEach(function(d) {
if (d.x < min)
min = d.x;
});
return min;
}
function findEndAngle(children) {
var max = children[0].x;
children.forEach(function(d) {
if (d.x > max)
max = d.x;
});
return max;
}
</script>
[{"name":"01.00.01","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Orange","description":"01.00.01-Permanent Construction Award"},
{"name":"01.00.02","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Blue","description":"01.00.02-Permanent Construction Design Complete","imports": ["01.00.01"]},
{"name":"01.00.03","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Green","description":"01.00.03-Venue Use Agreements Signed","imports": ["01.00.02"]},
{"name":"01.00.04","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Orange","description":"01.00.04-Overlay Book 3 Complete","imports": ["01.00.02"]},
{"name":"01.00.05","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Blue","description":"01.00.05-Overlay Procurement Complete","imports": ["01.00.04"]},
{"name":"01.00.06","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Green","description":"01.00.06-Overlay Book 4 Complete","imports": ["01.00.04"]},
{"name":"01.00.07","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Orange","description":"01.00.07-Permanent Costruction Finish","imports": ["01.00.02"]},
{"name":"01.00.08","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Blue","description":"01.00.08-Non Exclusive Use Period - Start","imports": ["01.00.05","01.00.03"]},
{"name":"01.00.09","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Green","description":"01.00.09-Handover: Venue Owner to Lima2019","imports": ["01.00.05","01.00.03"]},
{"name":"01.00.10","heading":"Venue Construction","sub-heading":"Venue Pre Installation","rag":"Orange","description":"01.00.10-Exclusive Use Period - Start","imports": ["01.00.07","01.00.05","01.00.03"]},
{"name":"01.01.01","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Blue","description":"01.01.01-Overlay Fit Out - Start","imports": ["01.00.05","01.00.03","01.00.08","01.00.09"]},
{"name":"01.01.02","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Green","description":"01.01.02-All Civil Works Complete (Temp prep for overlay)","imports": ["01.00.05","01.00.03","01.00.08","01.00.09"]},
{"name":"01.01.03","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Orange","description":"01.01.03-Overlay Fit Out - Finish","imports": ["01.01.01"]},
{"name":"01.01.04","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Blue","description":"01.01.04-Overlay Dismantling - Start","imports": ["05.01.14"]},
{"name":"01.01.05","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Green","description":"01.01.05-Overlay Dismantling - Finish","imports": ["05.01.17"]},
{"name":"01.01.06","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Orange","description":"01.01.06-Reinstatement - Start","imports": ["05.01.14"]},
{"name":"01.01.07","heading":"Venue Construction","sub-heading":"Overlay Installation","rag":"Blue","description":"01.01.07-Reinstatement - Finish","imports": ["05.01.19"]},
{"name":"01.02.01","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.01-Videoboard structure completed and available for rigging installation","imports": ["01.01.01"]},
{"name":"01.02.02","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Orange","description":"01.02.02-Public scoreboard structure completed and available for rigging installation","imports": ["01.01.01"]},
{"name":"01.02.03","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Blue","description":"01.02.03-FOP Space Handover to Technology for Timing and Scoring Installation","imports": ["01.01.02","01.02.01","01.02.02"]},
{"name":"01.02.04","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.04-FOP rigging complete","imports": ["01.02.01","01.02.02","01.02.03"]},
{"name":"01.02.05","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Orange","description":"01.02.05-Games Critical CCF Spaces Fitout complete and handed over to TEC","imports": ["01.01.01"]},
{"name":"01.02.06","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Blue","description":"01.02.06-Technology Backbone and associated power pathways to Games Critical CCF complete","imports": ["01.01.01"]},
{"name":"01.02.07","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.07-All Remaining CCF Spaces Fitout complete and handed over to TEC","imports": ["01.01.01","01.02.11"]},
{"name":"01.02.08","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Orange","description":"01.02.08-All Remaining Technology Backbone and associated power cable pathways complete","imports": ["01.01.01","01.02.11"]},
{"name":"01.02.09","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Blue","description":"01.02.09-All TEC remaining horizontal cable pathways complete","imports": ["01.01.01"]},
{"name":"01.02.10","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.10-COW Spaces Available","imports": ["01.01.01"]},
{"name":"01.02.11","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Orange","description":"01.02.11-Public Address structure installed","imports": ["01.01.01"]},
{"name":"01.02.12","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Blue","description":"01.02.12-Venue Media Centre Space Handover to Technology","imports": ["01.01.01"]},
{"name":"01.02.13","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.13-TER Handover to Technology / Telecom Provider for Installation","imports": ["01.01.01"]},
{"name":"01.02.14","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Orange","description":"01.02.14-Press Tribunes Handover to Technology","imports": ["01.01.01"]},
{"name":"01.02.15","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Blue","description":"01.02.15-All Broadcast Commentary Positions Handover to Technology","imports": ["01.01.01"]},
{"name":"01.02.16","heading":"Venue Construction","sub-heading":"Overlay facilities available to Technology for fit out","rag":"Green","description":"01.02.16-Broadcast Compound Overlay Installation Complete and Space Available for Handover to Technology","imports": ["01.01.01"]},
{"name":"01.03.01","heading":"Venue Construction","sub-heading":"Cable Pathways","rag":"Orange","description":"01.03.01-TEC underground conduits & secure cable pathways to TER available for fibre ingress","imports": ["01.01.01"]},
{"name":"01.03.02","heading":"Venue Construction","sub-heading":"Cable Pathways","rag":"Blue","description":"01.03.02-All Power cable pathways complete","imports": ["01.01.01"]},
{"name":"01.04.01","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Green","description":"01.04.01-Primary Utility power supply available to Venue (13,8kV/380V)","imports": ["01.01.01"]},
{"name":"01.04.02","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Orange","description":"01.04.02-Secondary Utility power supply available to Venue (13,8kV/380V)","imports": ["01.01.01"]},
{"name":"01.04.03","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Blue","description":"01.04.03-Temporary Generation as 'Primary Supply' available","imports": ["01.01.01"]},
{"name":"01.04.04","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Green","description":"01.04.04-All permanent and temporary LV power at Games Operational Level","imports": ["01.03.02"]},
{"name":"01.04.05","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Orange","description":"01.04.05-Pre Games Power for TER","imports": ["01.04.01","01.04.03"]},
{"name":"01.04.06","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Blue","description":"01.04.06-TEC temporary power installed and operational (excluding Standby Supply)","imports": ["01.04.03"]},
{"name":"01.04.07","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Green","description":"01.04.07-Pre Games Power for Games Critical CCF","imports": ["01.04.01","01.04.03"]},
{"name":"01.04.08","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Orange","description":"01.04.08-Pre Games Power for Remaining TEC Spaces","imports": ["01.04.01","01.04.03"]},
{"name":"01.04.09","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Blue","description":"01.04.09-Non Broadcast Venue Power (fail-over) Tests Complete","imports": ["01.04.01","01.04.02","01.04.03","01.04.04"]},
{"name":"01.04.10","heading":"Venue Construction","sub-heading":"Power available to Technology for fit out","rag":"Green","description":"01.04.10-Broadcast Power (fail-over) tests and comissioning","imports": ["03.01.12"]},
{"name":"02.01.01","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.01-All Backbone cabling installed (TER to CCF)","imports": ["01.02.12","01.02.14","01.02.13"]},
{"name":"02.01.02","heading":"Technology","sub-heading":"Technology","rag":"Blue","description":"02.01.02-Handover of VLAN to Press Operations (for cabling)","imports": ["02.01.01"]},
{"name":"02.01.03","heading":"Technology","sub-heading":"Technology","rag":"Green","description":"02.01.03-Horizontal Cabling installed","imports": ["02.01.01"]},
{"name":"02.01.04","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.04-OVR End user equipment installed/ OVR Handover","imports": ["02.01.01"]},
{"name":"02.01.05","heading":"Technology","sub-heading":"Technology","rag":"Blue","description":"02.01.05-Press tribune End user equipment installed (incl. CIS and INFO)","imports": ["02.01.01","01.02.14"]},
{"name":"02.01.06","heading":"Technology","sub-heading":"Technology","rag":"Green","description":"02.01.06-All Other Broadcast Spaces End User Equipment installed","imports": ["02.01.01"]},
{"name":"02.01.07","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.07-TER Operational","imports": ["02.01.16"]},
{"name":"02.01.08","heading":"Technology","sub-heading":"Technology","rag":"Blue","description":"02.01.08-All other spaces Operational (Games & Admin)","imports": ["02.01.03","02.01.07"]},
{"name":"02.01.09","heading":"Technology","sub-heading":"Technology","rag":"Green","description":"02.01.09-All Mobile Services Operational","imports": ["02.01.03","01.02.16"]},
{"name":"02.01.10","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.10-All Technology operational (incl. reprographics)","imports": ["02.01.03","02.01.07"]},
{"name":"02.01.11","heading":"Technology","sub-heading":"Technology","rag":"Blue","description":"02.01.11-All Results Installation and Operational Team on-site","imports": ["02.01.04"]},
{"name":"02.01.12","heading":"Technology","sub-heading":"Technology","rag":"Green","description":"02.01.12-Broadcast Compound Timing and Scoring structured cabling installed","imports": ["01.02.03"]},
{"name":"02.01.13","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.13-Timing and Scoring Operational","imports": ["02.01.13","02.01.07"]},
{"name":"02.01.14","heading":"Technology","sub-heading":"Technology","rag":"Blue","description":"02.01.14-Audio Systems operational (including Arena, BoH, FOH, TVs and Projectors)","imports": ["02.01.07"]},
{"name":"02.01.15","heading":"Technology","sub-heading":"Technology","rag":"Green","description":"02.01.15-Video Systems operational (including Arena, BoH, FOH, TVs and Projectors)","imports": ["02.01.07"]},
{"name":"02.01.16","heading":"Technology","sub-heading":"Technology","rag":"Orange","description":"02.01.16-TER Testing and Technical Power On","imports": ["01.02.13","01.04.05"]},
{"name":"03.01.01","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.01-All Broadcast cable paths containment and support devices installed","imports": ["01.01.01"]},
{"name":"03.01.02","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.02-Broadcast commentary positions built and ready for BRD cabling","imports": ["01.01.01","01.02.16"]},
{"name":"03.01.03","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.03-Broadcast Commentary Positions handover commissioning completed","imports": ["03.01.03","03.01.15"]},
{"name":"03.01.04","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.04-Camera platforms powered and available to BRD","imports": ["01.01.01"]},
{"name":"03.01.05","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.05-Compound handover (hardstand, fencing and lighting available and operational ready for BRD installation","imports": ["02.01.06","03.01.02"]},
{"name":"03.01.06","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.06-TOC temporary building available with power and furniture","imports": ["01.01.01","01.04.04","01.04.06","04.01.01"]},
{"name":"03.01.07","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.07-All remaining Compound temporary structures (including RHBs) installed and keys available to HB","imports": ["01.01.01","01.04.04","01.04.06","04.01.01"]},
{"name":"03.01.08","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.08-Latest Date for Furniture Deliveries (excluding RHB) at compound (Trailers, Dining tent), CCR & BIO","imports": ["04.01.01"]},
{"name":"03.01.09","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.09-Power to TOC & CCR available","imports": ["01.04.01","01.04.03"]},
{"name":"03.01.10","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.10-Broadcast technical power, UPS and remote monitoring all distributed and available","imports": ["01.04.01","01.04.02","01.04.03","01.04.04"]},
{"name":"03.01.11","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.11-TV Graphics Room to GT OVR Network installed and ready for tests/ cables to HB Production Area","imports": ["02.01.04"]},
{"name":"03.01.12","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.12-Broadcast Commentary Positions End user equipment installed (incl. CIS and INFO)","imports": ["03.01.03"]},
{"name":"03.01.13","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.13-Timing and Scoring TV graphics hardware installed in Broadcast Compound","imports": ["02.01.14"]},
{"name":"03.01.14","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.14-All Broadcast Compound Cabins Technology Services installed and fully operational","imports": ["02.01.06"]},
{"name":"03.01.15","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.15-TEC services to Broadcast Information Office (BIO) available and operational","imports": ["03.01.13"]},
{"name":"03.01.16","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.16-Commentary Control Room (CCR) ready for HB Installations","imports": ["01.01.01","03.01.11"]},
{"name":"03.01.17","heading":"Broadcast","sub-heading":"Broadcast","rag":"Green","description":"03.01.17-Mixed Zone complete and lighting operational","imports": ["01.01.01","03.01.13"]},
{"name":"03.01.18","heading":"Broadcast","sub-heading":"Broadcast","rag":"Orange","description":"03.01.18-FOP & Medal Ceremonies lighting installed and operational","imports": ["01.01.01","03.01.13"]},
{"name":"03.01.19","heading":"Broadcast","sub-heading":"Broadcast","rag":"Blue","description":"03.01.19-BRD OB Van Park&Power available","imports": ["03.01.13"]},
{"name":"04.01.01","heading":"Logistics","sub-heading":"Logistics","rag":"Green","description":"04.01.01-Bump-in Start","imports": ["01.01.01"]},
{"name":"04.01.02","heading":"Logistics","sub-heading":"Logistics","rag":"Orange","description":"04.01.02-Bump-in Finish","imports": ["04.01.01"]},
{"name":"04.01.03","heading":"Logistics","sub-heading":"Logistics","rag":"Blue","description":"04.01.03-Bump Out - Start","imports": ["05.01.08","05.01.11"]},
{"name":"04.01.04","heading":"Logistics","sub-heading":"Logistics","rag":"Green","description":"04.01.04-Bump Out - Finish","imports": ["04.01.04"]},
{"name":"05.01.01","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.01-All Technical Equipments within FOP operational","imports": ["03.01.18","02.01.14","01.02.04"]},
{"name":"05.01.02","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.02-Handover OVL to VMG","imports": ["01.01.03"]},
{"name":"05.01.03","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.03-Defensive Search / Security Sweep","imports": ["05.01.02"]},
{"name":"05.01.04","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.04-Lockdown Period - Start","imports": ["05.01.02"]},
{"name":"05.01.05","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.05-Venue Team Move In - Start","imports": ["05.01.02"]},
{"name":"05.01.06","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.06-Official Athelete Training (On Venue) - Start","imports": ["05.01.04"]},
{"name":"05.01.07","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.07-Panamerican Competition Starts","imports": ["05.01.04","05.01.06"]},
{"name":"05.01.08","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.08-Panamerican Competition Finish","imports": ["05.01.07"]},
{"name":"05.01.09","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.09-Transition Period - Start","imports": ["05.01.08"]},
{"name":"05.01.10","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.10-Transition Period - Finish","imports": ["05.01.09"]},
{"name":"05.01.11","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.11-Parapanamerican Competition Starts","imports": ["05.01.10"]},
{"name":"05.01.12","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.12-Parapanamerican Competition Finish","imports": ["05.01.11"]},
{"name":"05.01.13","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.13-Lockdown Period - Finish","imports": ["05.01.14"]},
{"name":"05.01.14","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.14-Venue Team Move Out - Start","imports": ["05.01.08","05.01.11"]},
{"name":"05.01.15","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.15-Venue Team Move Out - Finish","imports": ["05.01.15"]},
{"name":"05.01.16","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.16-Handback: VMG to OVL","imports": ["05.01.14"]},
{"name":"05.01.17","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Blue","description":"05.01.17-Exclusive Use Period - Finish"},
{"name":"05.01.18","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Green","description":"05.01.18-Post Games Non-Exclusive Use Period Finishes"},
{"name":"05.01.19","heading":"Venue Events Operations","sub-heading":"VEO","rag":"Orange","description":"05.01.19-Handback: Lima 2019 to Venue Owner"},
{"name":"05.02.01","heading":"Ceremonies","sub-heading":"VEO (Stadium)","rag":"Blue","description":"05.02.01-CER fit-out Works Start"},
{"name":"05.02.02","heading":"Ceremonies","sub-heading":"VEO (Stadium)","rag":"Green","description":"05.02.02-Ceremonies Rehearsals Start","imports": ["05.02.01"]},
{"name":"05.02.03","heading":"Ceremonies","sub-heading":"VEO (Stadium)","rag":"Orange","description":"05.02.03-Ceremonies Rehearsals Finish","imports": ["05.02.02"]},
{"name":"05.02.04","heading":"Ceremonies","sub-heading":"VEO (Stadium)","rag":"Blue","description":"05.02.04-Opening Ceremony","imports": ["05.02.03"]}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment