Skip to content

Instantly share code, notes, and snippets.

@saraquigley
Created November 29, 2012 19:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saraquigley/4171179 to your computer and use it in GitHub Desktop.
Save saraquigley/4171179 to your computer and use it in GitHub Desktop.
IT costs: hierarchical bar
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.v2.js"></script>
<link rel="stylesheet" type="text/css" href="SSTIcostsFlareDummy.css" />
</head>
<body>
<div id="header">Student IT Maintenance/Operations</div>
<div id="mini-pie">
<script type="text/javascript">
var r = Math.min(80, 80) * .15,
donut = d3.layout.pie().sort(null),
arc = d3.svg.arc().innerRadius(r / 1.75).outerRadius(r),
mode = 'numClasses';
var pieData = [
{name:"Maintenance/Operations", "tco":9.0, "class":"greenPie"},
{name:"Overhead / Other", "tco":1.0, "class":"clearPie"},
]
var pie = d3.select("body").append("svg:svg")
.attr("width", 80 )
.attr("height", 80)
.data([pieData]);
var arcs = pie.selectAll("g")
.data(donut.value(function(d) { return d.tco }))
.enter().append("svg:g")
.attr("transform", "translate(" + 50 + "," + 68 + ")")
.append("svg:path")
.attr("d", arc)
.each(function(d) { this._current = d; })
.attr("class", function(d) { return d.data.class ;});
// Computes the angle of an arc, converting from radians to degrees. Thanks to Frank Guerino.)
function angle(d) {
var a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
return a > 90 ? a - 180 : a;
}
// Store the currently-displayed angles in this._current.
// Then, interpolate from this._current to the new angles.
function arcTween(a) {
var i = d3.interpolate(this._current, a);
this._current = i(0);
return function(t) {
return arc(i(t));
};
}
</script>
</div>
<div id="sub-header">A breakdown of the 90% totaling $79.6MM*</div>
<div id="button-div">
<text id="button-label" class="start">START</text>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="64.193283"
height="63.523876"
viewBox="0 0 51.354626 50.819101"
id="button"
class="start">
<metadata
id="metadata527389">
<dc:date>2012-11-25 05:03Z</dc:date>
<!-- Produced by OmniGraffle Professional 5.4.2 -->
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs527391">
<linearGradient
id="linearGradient541386">
<stop
id="stop541388"
style="stop-color:#ffcc00;stop-opacity:1"
offset="0" />
<stop
id="stop541390"
style="stop-color:#ff2a2a;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient535288">
<stop
id="stop535290"
style="stop-color:#d7e3f4;stop-opacity:1"
offset="0" />
<stop
id="stop535292"
style="stop-color:#535d6c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient533400">
<stop
id="stop533402"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop533404"
style="stop-color:#373e48;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient531414">
<stop
id="stop531416"
style="stop-color:#ffcc00;stop-opacity:1"
offset="0" />
<stop
id="stop531418"
style="stop-color:#ffcc00;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient528354">
<stop
id="stop528356"
style="stop-color:#ff6600;stop-opacity:1"
offset="0" />
<stop
id="stop528374"
style="stop-color:#ffcc00;stop-opacity:1"
offset="1" />
</linearGradient>
<filter
filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB"
id="Shadow">
<feGaussianBlur
id="feGaussianBlur527394"
stdDeviation="3.488"
result="blur"
in="SourceAlpha" />
<feOffset
id="feOffset527396"
dy="4"
dx="0"
result="offset"
in="blur" />
<feFlood
id="feFlood527398"
result="flood"
flood-opacity=".75"
flood-color="black" />
<feComposite
in2="offset"
operator="in"
in="flood"
id="feComposite527400" />
</filter>
<radialGradient
cx="227.65974"
cy="90.694878"
r="30.940439"
fx="227.65974"
fy="90.694878"
id="radialGradient533390"
xlink:href="#linearGradient531414"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.12422631,-0.377448,0.3891499,-0.09040866,231.51592,200.34014)" />
<linearGradient
x1="228.59381"
y1="121.61312"
x2="234.2569"
y2="105.58002"
id="linearGradient533980"
xlink:href="#linearGradient533400"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="220.85742"
y1="109.04664"
x2="228.58353"
y2="99.513435"
id="linearGradient537186"
xlink:href="#linearGradient535288"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="228.59381"
y1="121.61312"
x2="234.2569"
y2="105.58002"
id="linearGradient537198"
xlink:href="#linearGradient533400"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="220.85742"
y1="109.04664"
x2="228.58353"
y2="99.513435"
id="linearGradient537200"
xlink:href="#linearGradient535288"
gradientUnits="userSpaceOnUse" />
<radialGradient
cx="312.42923"
cy="84.296028"
r="30.940439"
fx="312.42923"
fy="84.296028"
id="radialGradient543762"
xlink:href="#linearGradient541386"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.1325633,-1.1757427,1.1480104,-0.7806073,487.79422,520.88536)" />
<linearGradient
x1="228.59381"
y1="121.61312"
x2="234.2569"
y2="105.58002"
id="linearGradient543789"
xlink:href="#linearGradient533400"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="220.85742"
y1="109.04664"
x2="228.58353"
y2="99.513435"
id="linearGradient543791"
xlink:href="#linearGradient535288"
gradientUnits="userSpaceOnUse" />
<radialGradient
cx="312.42923"
cy="84.296028"
r="30.940439"
fx="312.42923"
fy="84.296028"
id="radialGradient543793"
xlink:href="#linearGradient541386"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.1325633,-1.1757427,1.1480104,-0.7806073,487.79422,520.88536)" />
</defs>
<g
transform="translate(-111.69879,-51.677118)"
id="g527402"
style="fill:none;stroke:none">
<title
id="title527404">Canvas 1</title>
<g
id="g527406">
<title
id="title527408">Show me the viz</title>
<g
id="g527410">
<use
id="use527412"
style="filter:url(#Shadow)"
x="0"
y="0"
width="576"
height="733"
xlink:href="#id11_Graphic" />
<use
id="use527414"
style="filter:url(#Shadow)"
x="0"
y="0"
width="576"
height="733"
xlink:href="#id10_Graphic" />
</g>
<g
id="id11_Graphic">
<path
d="m 184,277.3 0,-69.6 c 0,-4.8024 43.008,-8.7 96,-8.7 52.992,0 96,3.8976 96,8.7 l 0,69.6 c 0,4.8024 -43.008,8.7 -96,8.7 -52.992,0 -96,-3.8976 -96,-8.7"
id="path527417"
style="fill:#ffffff" />
<path
d="m 184,277.3 0,-69.6 c 0,-4.8024 43.008,-8.7 96,-8.7 52.992,0 96,3.8976 96,8.7 l 0,69.6 c 0,4.8024 -43.008,8.7 -96,8.7 -52.992,0 -96,-3.8976 -96,-8.7 m 0,-69.6 c 0,4.8024 43.008,8.7 96,8.7 52.992,0 96,-3.8976 96,-8.7"
id="path527419"
style="stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round" />
</g>
<g
id="id10_Graphic">
<g
transform="translate(-47.442006,-3.2413793)"
id="g543764">
<path
d="m 272.93887,100.3801 a 30.940439,22.83699 0 1 1 -61.88088,0 30.940439,22.83699 0 1 1 61.88088,0 z"
transform="matrix(0.5713336,0,0,0.68001955,46.556279,13.947572)"
id="path533396"
style="fill:url(#linearGradient543789);fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
d="m 272.93887,100.3801 a 30.940439,22.83699 0 1 1 -61.88088,0 30.940439,22.83699 0 1 1 61.88088,0 z"
transform="matrix(0.5713336,0,0,0.68001955,46.556279,11.547572)"
id="path533398"
style="fill:url(#linearGradient543791);fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
d="m 272.93887,100.3801 a 30.940439,22.83699 0 1 1 -61.88088,0 30.940439,22.83699 0 1 1 61.88088,0 z"
transform="matrix(0.50952381,0,0,0.60645161,61.601991,19.092356)"
id="path533394"
style="fill:#d40000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
d="m 272.93887,100.3801 a 30.940439,22.83699 0 1 1 -61.88088,0 30.940439,22.83699 0 1 1 61.88088,0 z"
transform="matrix(0.50952381,0,0,0.60645161,61.601991,15.892356)"
id="path527430"
style="fill:#ff2a2a;fill-opacity:1;fill-rule:nonzero;stroke:none" />
<path
d="m 272.93887,100.3801 a 30.940439,22.83699 0 1 1 -61.88088,0 30.940439,22.83699 0 1 1 61.88088,0 z"
transform="matrix(0.50952381,0,0,0.60645161,61.601991,15.892356)"
id="path541384"
style="fill:url(#radialGradient543793);fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
</g>
</g>
</g>
</svg></div>
<div id="chart">
<script type="text/javascript">
var m = [60, 160, 20, 220], // top right bottom left
w = 1280 - m[1] - m[3], // width
h = 500 - m[0] - m[2], // height
x = d3.scale.linear().range([0, w]),
y = 35, // bar height
z = d3.scale.ordinal().range(["#525252", "#aaa"]); // bar color
var hierarchy = d3.layout.partition()
.value(function(d) { return d.size; });
var xAxis = d3.svg.axis()
.scale(x)
.orient("top");
var svg = d3.select("body").append("svg:svg")
.attr("width", w + m[1] + m[3])
.attr("height", h + m[0] + m[2])
.append("svg:g")
.attr("transform", "translate(" + m[3] + "," + m[0] + ")");
svg.append("svg:rect")
.attr("class", "background")
.attr("width", w)
.attr("height", h)
.on("click", up);
svg.append("svg:g")
.attr("class", "x axis");
svg.append("svg:g")
.attr("class", "y axis")
.append("svg:line")
.attr("y1", "100%");
d3.selectAll(".start").on("click", function() {
d3.select("#path527430")
.style("fill", "#CB181D")
.transition().duration(750)
.style("fill", "#ff2a2a");
d3.selectAll("#button")
.transition().delay(750)
.attr("opacity", 0);
d3.select("#button-label")
.transition().delay(750)
.style("opacity", 0);
d3.json("SSTIcostsFlareDummy.json", function(root) {
hierarchy.nodes(root);
x.domain([0, root.value]).nice();
down(root, 0);
});
});
function down(d, i) {
if (!d.children || this.__transition__) return;
var duration = d3.event && d3.event.altKey ? 7500 : 750,
delay = duration / d.children.length;
// Mark any currently-displayed bars as exiting.
var exit = svg.selectAll(".enter").attr("class", "exit");
// Entering nodes immediately obscure the clicked-on bar, so hide it.
exit.selectAll("rect").filter(function(p) { return p === d; })
.style("fill-opacity", 1e-6);
// Enter the new bars for the clicked-on data.
// Per above, entering bars are immediately visible.
var enter = bar(d)
.attr("transform", stack(i))
.style("opacity", 1);
// Have the text fade-in, even though the bars are visible.
// Color the bars as parents; they will fade to children if appropriate.
enter.select("text").style("fill-opacity", 1e-6);
enter.select("rect").attr("class", function(d) { return d.name; });
//enter.select("rect").style("fill", z(true));
// Update the x-scale domain.
x.domain([0, d3.max(d.children, function(d) { return d.value; })]).nice();
// Update the x-axis.
svg.selectAll(".x.axis").transition()
.duration(duration)
.call(xAxis);
// Transition entering bars to their new position.
var enterTransition = enter.transition()
.duration(duration)
.delay(function(d, i) { return i * delay; })
.attr("transform", function(d, i) { return "translate(0," + y * i * 1.2 + ")"; });
// Transition entering text.
enterTransition.select("text").style("fill-opacity", 1);
// Transition entering rects to the new x-scale.
enterTransition.select("rect")
.attr("width", function(d) { return x(d.value); });
//.style("fill", function(d) { return z(!!d.children); });
// Transition exiting bars to fade out.
var exitTransition = exit.transition()
.duration(duration)
.style("opacity", 1e-6)
.remove();
// Transition exiting bars to the new x-scale.
exitTransition.selectAll("rect").attr("width", function(d) { return x(d.value); });
// Rebind the current node to the background.
svg.select(".background").data([d]).transition().duration(duration * 2); d.index = i;
}
function up(d) {
if (!d.parent || this.__transition__) return;
var duration = d3.event && d3.event.altKey ? 7500 : 750,
delay = duration / d.children.length;
// Mark any currently-displayed bars as exiting.
var exit = svg.selectAll(".enter").attr("class", "exit");
// Enter the new bars for the clicked-on data's parent.
var enter = bar(d.parent)
.attr("transform", function(d, i) { return "translate(0," + y * i * 1.2 + ")"; })
.style("opacity", 1e-6);
// Color the bars as appropriate.
// Exiting nodes will obscure the parent bar, so hide it.
enter.select("rect")
//.style("fill", function(d) { return z(!!d.children); })
.attr("class", function(d) { return d.name; })
.filter(function(p) { return p === d; })
.style("fill-opacity", 1e-6);
// Update the x-scale domain.
x.domain([0, d3.max(d.parent.children, function(d) { return d.value; })]).nice();
// Update the x-axis.
svg.selectAll(".x.axis").transition()
.duration(duration * 2)
.call(xAxis);
// Transition entering bars to fade in over the full duration.
var enterTransition = enter.transition()
.duration(duration * 2)
.style("opacity", 1);
// Transition entering rects to the new x-scale.
// When the entering parent rect is done, make it visible!
enterTransition.select("rect")
.attr("width", function(d) { return x(d.value); })
.each("end", function(p) { if (p === d) d3.select(this).style("fill-opacity", null); });
// Transition exiting bars to the parent's position.
var exitTransition = exit.selectAll("g").transition()
.duration(duration)
.delay(function(d, i) { return i * delay; })
.attr("transform", stack(d.index));
// Transition exiting text to fade out.
exitTransition.select("text")
.style("fill-opacity", 1e-6);
// Transition exiting rects to the new scale and fade to parent color.
exitTransition.select("rect")
.attr("width", function(d) { return x(d.value); })
.attr("class", function(d) { return d.parent.name; });
//.style("fill", z(true));
// Remove exiting nodes when the last child has finished transitioning.
exit.transition().duration(duration * 2).remove();
// Rebind the current parent to the background.
svg.select(".background").data([d.parent]).transition().duration(duration * 2);
}
// Creates a set of bars for the given data node, at the specified index.
function bar(d) {
var bar = svg.insert("svg:g", ".y.axis")
.attr("class", "enter")
.attr("transform", "translate(0,5)")
.selectAll("g")
.data(d.children)
.enter().append("svg:g")
.style("cursor", function(d) { return !d.children ? null : "pointer"; })
.on("click", down);
/*
bar.append("svg:text")
.attr("x", function(d, i) { return (x(d.value) * 2.65 + i ); })
.attr("y", y / 2)
.attr("dy", ".35em")
.attr("text-anchor", "start")
.attr("class", function(d) { return d.name; })
.text(function(d) { return d.value; });
*/
bar.append("svg:text")
.attr("x", -6)
.attr("y", y / 2)
.attr("dy", ".35em")
.attr("text-anchor", "end")
.attr("class", function(d) { return d.name ; })
.text(function(d) { return d.name; });
bar.append("svg:rect")
.attr("width", function(d) { return x(d.value); })
.attr("height", y)
.attr("class", function(d) { return d.name; });
return bar;
}
// A stateful closure for stacking bars horizontally.
function stack(i) {
var x0 = 0;
return function(d) {
var tx = "translate(" + x0 + "," + y * i * 1.2 + ")";
x0 += x(d.value);
return tx;
};
}
</script>
</div>
<div id="FTE-calc-note">* This data is for the purposes of an example, and is not real data
<P>
<B>HINT:</B> Click in the white space of the graph to drill back up
<div id="author">BY SARA QUIGLEY</div>
</div>
</body>
</html>
svg {
font-size: 14px;
}
#header {
position: absolute;
z-index: 1;
display: block;
}
#header {
top: 20px;
left: 40px;
font: 300 36px "Helvetica Neue";
color: #525252;
}
#mini-pie {
top: 0px;
left: 40px;
}
#mini-functions {
top: 0px;
left: 700px;
}
#right-header {
position: absolute;
z-index: -1;
display: block;
top: 30px;
left: 650px;
}
#sub-header {
position: absolute;
z-index: 1;
display: block;
top: 60px;
left: 80px;
font: 300 26px "Helvetica Neue";
color: #525252;
}
#button {
position: absolute;
display: block;
top: 30px;
left: 700px;
}
#button-label {
position: absolute;
display: block;
top: 50px;
left: 650px;
font: 300 18px "Helvetica Neue";
color: #525252;
}
.greenPie {
fill: #74C476;
fill-opacity: .75;
color: #74C476;
}
.clearPie {
fill: #FE9929;
fill-opacity: 0;
color: #FE9929;
}
#chart {
top: 100px;
left: 40px;
}
rect.background {
fill: none;
pointer-events: all;
}
.axis {
shape-rendering: crispEdges;
font: 300 14px "Helvetica Neue";
color: #525252;
}
.axis path, .axis line {
fill: none;
stroke: #000;
stroke-width: .5px;
}
.Admissions,
.AppDecision,
.Foxpro,
.Hyperion,
.mBA,
.mBA-rpt,
.OUAE,
.UGA,
.OutreachYield,
.HobsonsConnect,
.Inigral {
fill: #E7298A;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #E7298A;
}
.FinancialAid ,
.AwardsAndPackaging,
.Loans,
.Scholarships,
.WorkStudy,
.AWCS,
.CSAC,
.DSAS,
.EDConnect,
.ImageNow-FA,
.MyFinAid,
.NLSDS,
.ProSAM,
.RegInterface,
.EmergencyLoan,
.CTS,
.SIMS,
.WSMS {
fill: #D95F02;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #D95F02;
}
.RegEnrollment,
.Enrollment,
.StudentReports,
.AdminScheduling,
.ClassSched,
.OSOC,
.RoomRequest,
.CurrMgmt,
.Catalog-Edits,
.Course,
.Enrollment,
.ACE-Batch,
.Enroll-Admin,
.EXT-Concurr,
.FPF-DB2,
.NCAA,
.Summer-Admin,
.TeleBears,
.Grading,
.eGrades-Law,
.Other,
.CSIR,
.Registration,
.BF-SLR,
.Fees,
.MyRes,
.RegBlock,
.RegMain,
.StudentRecords,
.Paradigm,
.Transcript,
.StudentReports,
.BF-ReportingUI,
.BF-Student
{
fill: #7570B3;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #7570B3;
}
.AcadPlanning,
.DegreeAudit,
.TermPlanning,
.TransferCredit,
.DARS,
.SchedBuild,
.TCS {
fill: #E6AB02;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #E6AB02;
}
.Financials,
.StuFinancialAcctProcessing,
.SallieMae {
fill: #66A61E;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #66A61E;
}
.Conduct,
.CampusBehavior,
.OSCAR,
.OSCAR-RSSP {
fill: #A6761D;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #A6761D;
}
.GroupMgmt,
.Greek,
.StudentOrgs,
.CalMuse,
.StuOrgs {
fill: #1B9E77;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #1B9E77;
}
.Events,
.RskMgmt,
.EventRiskMgt,
.OSD,
.Scheduling,
.EMS-ASUC,
.RoomTracker {
fill: #666666;
fill-opacity: .95;
font: 400 20px "Helvetica Neue";
color: #666666;
}
#FTE-calc-note {
position: absolute;
z-index: 1;
display: block;
font: 300 12px "Helvetica Neue";
color: #525252;
left:40px;
}
#author {
position: absolute;
z-index: 1;
font: 300 12px "Helvetica Neue";
color: #525252;
}
{
"name": "flare",
"children":[
{
"name": "AcadPlanning",
"children": [
{
"name": "DegreeAudit",
"children": [
{
"Function2": "AcadPlanning",
"Function3": "DegreeAudit",
"name": "DARS",
"size": 766076
}
]
},
{
"name": "TermPlanning",
"children": [
{
"Function2": "AcadPlanning",
"Function3": "TermPlanning",
"name": "SchedBuild",
"size": 920048
}
]
},
{
"name": "TransferCredit",
"children": [
{
"Function2": "AcadPlanning",
"Function3": "TransferCredit",
"name": "TCS",
"size": 255685
}
]
}
]
},
{
"name": "Admissions",
"children": [
{
"name": "AppDecision",
"children": [
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "Foxpro",
"size": 92330
},
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "Hyperion",
"size": 401659
},
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "mBA",
"size": 83181
},
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "mBA-rpt",
"size": 786801
},
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "OUAE",
"size": 490544
},
{
"Function2": "Admissions",
"Function3": "AppDecision",
"name": "UGA",
"size": 294496
}
]
},
{
"name": "OutreachYield",
"children": [
{
"Function2": "Admissions",
"Function3": "OutreachYield",
"name": "HobsonsConnect",
"size": 526246
},
{
"Function2": "Admissions",
"Function3": "OutreachYield",
"name": "Inigral",
"size": 142211
}
]
}
]
},
{
"name": "Conduct",
"children": [
{
"name": "CampusBehavior",
"children": [
{
"Function2": "Conduct",
"Function3": "CampusBehavior",
"name": "OSCAR",
"size": 433707
},
{
"Function2": "Conduct",
"Function3": "CampusBehavior",
"name": "OSCAR-RSSP",
"size": 602685
}
]
}
]
},
{
"name": "Events",
"children": [
{
"name": "RskMgmt",
"children": [
{
"Function2": "Events",
"Function3": "RskMgmt",
"name": "EventRiskMgt",
"size": 878384
},
{
"Function2": "Events",
"Function3": "RskMgmt",
"name": "OSD",
"size": 174006
}
]
},
{
"name": "Scheduling",
"children": [
{
"Function2": "Events",
"Function3": "Scheduling",
"name": "EMS-ASUC",
"size": 733934
},
{
"Function2": "Events",
"Function3": "Scheduling",
"name": "RoomTracker",
"size": 98336
}
]
}
]
},
{
"name": "FinancialAid",
"children": [
{
"name": "AwardsAndPackaging",
"children": [
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "AWCS",
"size": 21348
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "CSAC",
"size": 667664
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "DSAS",
"size": 394719
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "EDConnect",
"size": 971160
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "ImageNow-FA",
"size": 892632
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "MyFinAid",
"size": 401825
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "NLSDS",
"size": 450702
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "ProSAM",
"size": 247877
},
{
"Function2": "FinancialAid",
"Function3": "AwardsAndPackaging",
"name": "RegInterface",
"size": 763334
}
]
},
{
"name": "Loans",
"children": [
{
"Function2": "FinancialAid",
"Function3": "Loans",
"name": "EmergencyLoan",
"size": 560456
}
]
},
{
"name": "Scholarships",
"children": [
{
"Function2": "FinancialAid",
"Function3": "Scholarships",
"name": "CTS",
"size": 5054614
},
{
"Function2": "FinancialAid",
"Function3": "Scholarships",
"name": "SIMS",
"size": 161020
}
]
},
{
"name": "WorkStudy",
"children": [
{
"Function2": "FinancialAid",
"Function3": "WorkStudy",
"name": "WSMS",
"size": 844044
}
]
}
]
},
{
"name": "Financials",
"children": [
{
"name": "StuFinancialAcctProcessing",
"children": [
{
"Function2": "Financials",
"Function3": "StuFinancialAcctProcessing",
"name": "SallieMae",
"size": 851097
}
]
}
]
},
{
"name": "GroupMgmt",
"children": [
{
"name": "Greek",
"children": [
{
"Function2": "GroupMgmt",
"Function3": "Greek",
"name": "CalMuse",
"size": 56262
}
]
},
{
"name": "StudentOrgs",
"children": [
{
"Function2": "GroupMgmt",
"Function3": "StudentOrgs",
"name": "StuOrgs",
"size": 790358
}
]
}
]
},
{
"name": "RegEnrollment",
"children": [
{
"name": "AdminScheduling",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "AdminScheduling",
"name": "ClassSched",
"size": 805393
},
{
"Function2": "RegEnrollment",
"Function3": "AdminScheduling",
"name": "OSOC",
"size": 341850
},
{
"Function2": "RegEnrollment",
"Function3": "AdminScheduling",
"name": "RoomRequest",
"size": 439534
}
]
},
{
"name": "CurrMgmt",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "CurrMgmt",
"name": "Catalog-Edits",
"size": 339985
},
{
"Function2": "RegEnrollment",
"Function3": "CurrMgmt",
"name": "Course",
"size": 419737
}
]
},
{
"name": "Enrollment",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "ACE-Batch",
"size": 402364
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "Enroll-Admin",
"size": 802427
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "EXT-Concurr",
"size": 588259
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "FPF-DB2",
"size": 25638
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "NCAA",
"size": 131846
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "Summer-Admin",
"size": 53310
},
{
"Function2": "RegEnrollment",
"Function3": "Enrollment",
"name": "TeleBears",
"size": 2427387
}
]
},
{
"name": "Grading",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "Grading",
"name": "eGrades-Law",
"size": 737056
}
]
},
{
"name": "Other",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "Other",
"name": "CSIR",
"size": 387182
}
]
},
{
"name": "Registration",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "Registration",
"name": "BF-SLR",
"size": 836152
},
{
"Function2": "RegEnrollment",
"Function3": "Registration",
"name": "Fees",
"size": 858614
},
{
"Function2": "RegEnrollment",
"Function3": "Registration",
"name": "MyRes",
"size": 55119
},
{
"Function2": "RegEnrollment",
"Function3": "Registration",
"name": "RegBlock",
"size": 210482
},
{
"Function2": "RegEnrollment",
"Function3": "Registration",
"name": "RegMain",
"size": 461293
}
]
},
{
"name": "StudentRecords",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "StudentRecords",
"name": "Paradigm",
"size": 235482
},
{
"Function2": "RegEnrollment",
"Function3": "StudentRecords",
"name": "Transcript",
"size": 256803
}
]
},
{
"name": "StudentReports",
"children": [
{
"Function2": "RegEnrollment",
"Function3": "StudentReports",
"name": "BF-ReportingUI",
"size": 55867
},
{
"Function2": "RegEnrollment",
"Function3": "StudentReports",
"name": "BF-Student",
"size": 7564
}
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment