Skip to content

Instantly share code, notes, and snippets.

@ddimtirov
Created October 16, 2012 00:45
Show Gist options
  • Save ddimtirov/3896634 to your computer and use it in GitHub Desktop.
Save ddimtirov/3896634 to your computer and use it in GitHub Desktop.
PerceptualEdge.com dashboard design contest 2012 entry
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Dashboard</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<link rel='stylesheet' href='//fonts.googleapis.com/css?family=Open+Sans:300,600' type='text/css'>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/2.0/css/font-awesome.css" >
<link rel="stylesheet" href="//raw.github.com/mbostock/d3/master/lib/colorbrewer/colorbrewer.css" type="text/css">
<script type="text/javascript" src="//raw.github.com/mbostock/d3/master/lib/colorbrewer/colorbrewer.js"></script>
<link rel="stylesheet/less" href="dashboard.less" type="text/css">
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.0/less-1.3.0.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/2.10.0/d3.v2.min.js"></script>
<script type="text/javascript" src="dashboard.js"></script>
</head>
<body>
<table id="students">
<thead>
<tr>
<th>&nbsp;</th>
<th title="Standardized Math Assessment test results over the years">SMA</th>
<th title="Grade objective set by student and last year grade">Objective</th>
<th>Assignments</th>
<th>Disciplinary</th>
<th>Attendance</th>
</tr>
</thead>
<tbody></tbody>
</table>
<div id="stats"></div>
<p id="lastClass"><strong>Last class:</strong> 2 absences, 1 tardy</p>
<script type="text/javascript">d3.json('data-dashboard.json', buildStructure);</script>
</body>
</html>
function buildStructure(json) {
'use strict';
var rowHeight = 16;
var pct = d3.format('%');
function icon(sel, iconClass, title) {
return sel.append('i').attr('class', iconClass + ' icon-small').attr('title', title);
}
function sparkline(svg, scores) {
var i, cx, cy;
svg.append('svg:rect').attr('height', '1').attr('width', '100%').attr('y', '25%').attr('class', 'pct25');
svg.append('svg:rect').attr('height', '1').attr('width', '100%').attr('y', '50%').attr('class', 'pct50');
svg.append('svg:rect').attr('height', '1').attr('width', '100%').attr('y', '75%').attr('class', 'pct25');
for (i = 0; i < scores.length; i++) {
cx = i * 6 + 3;
cy = svg.attr('height') - d3.round(scores[i] * (svg.attr('height') - 3) + 1.5);
svg.append('svg:circle')
.attr('cx', cx)
.attr('cy', cy)
.attr('r', 1.5)
.attr('class', i === 0 ? 'current' : 'past');
}
}
function bullet(svg, domain, actual, goal, mark) {
var scaleX;
scaleX = d3.scale.ordinal().domain(domain).rangePoints([0, svg.attr('width')]);
svg.append('svg:rect')
.attr('class', 'range')
.attr('width', '100%')
.attr('height', '100%');
svg.append('svg:rect').attr('class', 'target')
.attr('width', scaleX(goal))
.attr('height', '100%');
svg.append('svg:rect').attr('class', 'actual')
.attr('width', scaleX(actual))
.attr('height', '34%')
.attr('y', '33%');
svg.append('svg:rect').attr('class', 'mark')
.attr('x', scaleX(mark) - 2)
.attr('width', 2)
.attr('height', '100%');
}
function renderStudent(node, student) {
var sel, severityColor;
sel = d3.select(node).text(student.name).attr('class', 'studentName');
if (student.englishLanguageProficiencyLacking) {
icon(sel, 'icon-globe', 'English language not proficient');
}
if (student.specialEdStatus) {
icon(sel, 'icon-bullhorn', 'Special education status');
}
if (student.lateAssignments) {
switch (student.lateAssignments) {
case 1: severityColor = 'lightgray'; break;
case 2: severityColor = 'gray'; break;
default : severityColor = 'red'; break;
}
icon(sel, 'icon-bell', student.lateAssignments + ' late assignments').style('color', severityColor);
}
}
function renderGrade(node, grades) {
var sel, svg;
sel = d3.select(node).attr('class', 'grades');
svg = sel.append('svg')
.attr('title', 'Current: ' + grades.currentCourse + ', Goal: ' + grades.studentGoal + ', Last year: ' + grades.previousCourse)
.attr('class', 'bullet')
.attr('width', 110)
.attr('height', rowHeight);
bullet(svg, ['?', 'F', 'E', 'D', 'C', 'B', 'A'], grades.currentCourse, grades.studentGoal, grades.previousCourse);
}
function renderAssignments(node, assignments) {
var scoresPct, lateMsg, sel, svg;
scoresPct = assignments.scores.map(function (it) { return pct(it) });
lateMsg = assignments.lateCount > 0 ? ' (' + assignments.lateCount + ' returned late)' : '';
sel = d3.select(node).attr('class', 'assignments');
sel.text(pct(assignments.scores[0]) + ' ')
.attr('title', 'Assignment Scores: ' + scoresPct.join(', ') + lateMsg);
svg = sel.append('svg')
.attr('class', 'sparkline')
.attr('width', assignments.scores.length * 6)
.attr('height', rowHeight);
sparkline(svg, assignments.scores);
if (assignments.lateCount > 0) {
sel.append('span').text(' (' + assignments.lateCount + ')')
.attr('class', 'interjection');
}
}
function renderStandardizedTests(node, data) {
var scoresPct, sel, svg;
scoresPct = d3.entries(data.scoreByGrade)
.filter(function(it) { return it!=='latest grade';})
.map(function(it) { return it.key + ' grade: ' + pct(it.value); })
.join(', ');
sel = d3.select(node).attr('class', 'standardizedTests');
sel.text(pct(data.scoreByGrade.latest) + ' ')
.attr('title', 'Previous years scores: ' + scoresPct);
svg = sel.append('svg')
.attr('class', 'sparkline')
.attr('width', d3.values(data.scoreByGrade).length * 6)
.attr('height', rowHeight);
sparkline(svg, d3.values(data.scoreByGrade));
}
function renderAttendance(node, data) {
var sel, svg;
sel = d3.select(node).attr('class', 'attendance');
svg = sel.append('svg')
.attr('class', 'barchart')
.attr('width', 160)
.attr('height', rowHeight);
svg.append('svg:rect').attr('class', 'absences').attr('title', 'Absences: ' + data.absences.dates.join(', '))
.attr('height', '100%')
.attr('width', data.absences.count * 10)
.attr('x', 80 - data.absences.count * 10);
svg.append('svg:rect').attr('class', 'tardies').attr('title', 'Tardies: ' + data.tardies.dates.join(', '))
.attr('height', '100%')
.attr('width', data.tardies.count * 10)
.attr('x', 80);
if (data.absences.count) svg.append('svg:text').attr('class', 'label')
.text(data.absences.count)
.attr('x', 71)
.attr('y', 12);
if (data.tardies.count) svg.append('svg:text').attr('class', 'label')
.text(data.tardies.count)
.attr('x', 81)
.attr('y', 12);
}
function renderDisciplinary(node, data) {
var sel, svg, thisYear, lastYear, disciplinedThisTerm, lastYearFragment;
sel = d3.select(node).attr('class', 'disciplinary');
thisYear = '';
if (data.detentions.thisTermCount) {
thisYear += data.detentions.thisTermCount + ' detentions';
}
if (data.referrals.thisTermCount) {
if (thisYear.length) thisYear += ' and ';
thisYear += data.referrals.thisTermCount + ' referrals';
}
lastYear = '';
if (data.detentions.lastTermCount) {
lastYear += data.detentions.lastTermCount + ' detentions';
}
if (data.referrals.lastTermCount) {
if (lastYear.length) lastYear += ' and ';
lastYear += data.referrals.lastTermCount + ' referrals';
}
if (thisYear) {
lastYearFragment = lastYear.length ? ' (last year ' + lastYear + ')' : '';
sel.attr('title', thisYear + lastYearFragment);
}
disciplinedThisTerm = data.detentions.thisTermCount || data.referrals.thisTermCount;
svg = sel.append('svg')
.attr('class', 'barchart')
.attr('width', 120)
.attr('height', rowHeight);
svg.append('svg:rect').attr('class', 'detentions')
.attr('height', 11)
.attr('width', data.detentions.thisTermCount * 20)
.attr('x', 60 - data.detentions.thisTermCount * 20)
.attr('y', 3);
svg.append('svg:rect').attr('class', 'referrals')
.attr('height', 11)
.attr('width', data.referrals.thisTermCount * 20)
.attr('x', 60)
.attr('y', 3);
if (disciplinedThisTerm && data.detentions.lastTermCount) {
svg.append('svg:rect').attr('class', 'detentions')
.attr('height', '100%')
.attr('width', 2)
.attr('x', 60 - data.detentions.lastTermCount * 20);
}
if (disciplinedThisTerm && data.referrals.lastTermCount) {
svg.append('svg:rect').attr('class', 'detentions')
.attr('height', '100%')
.attr('width', 2)
.attr('x', 60 + data.referrals.lastTermCount * 20);
}
if (data.detentions.thisTermCount) svg.append('svg:text').attr('class', 'label')
.text(data.detentions.thisTermCount)
.attr('x', 51)
.attr('y', 12);
if (data.referrals.thisTermCount) svg.append('svg:text').attr('class', 'label')
.text(data.referrals.thisTermCount)
.attr('x', 61)
.attr('y', 12);
}
function renderDispatch(data, i) {
var renderers = [
renderStudent,
renderStandardizedTests,
renderGrade,
renderAssignments,
renderDisciplinary,
renderAttendance
];
renderers[i](this, data);
}
function appendStateDistribution(title, aggregated) {
var stats, svg, offset, labels, color, gradient;
stats = d3.select('#stats').append('div');
stats.append('div').text(title)
.style('float', 'left')
.style('width', '100px')
.style('text-align', 'right')
.style('padding-right', '.3em');
svg = stats.append('svg')
.attr('class', 'stats')
.attr('width', 800)
.attr('height', 22);
labels = aggregated.distribution.map(function (population) {
return population.score
});
color = d3.scale.ordinal().domain(labels).range(colorbrewer.RdYlGn[6]);
offset = 0;
aggregated.distribution.forEach(function (population, i) {
var width, label;
label = population.score;
width = population.populationPct * 100;
svg.append('svg:rect')
.attr('x', offset + '%').attr('y', '5%')
.attr('width', width + '%').attr('height', '90%')
.style('fill', color(label));
svg.append('svg:text').attr('class', 'label')
.text(label)
.attr('x', (offset + width / 2 - 3.5) + '%')
.attr('y', 16)
.style('fill', i === 0 || i == 5 ? 'white' : 'black');
offset += width;
}
);
gradient = svg.append("svg:defs").append("svg:linearGradient")
.attr("id", "gradient")
.attr("x1", "0%")
.attr("y1", "0%")
.attr("x2", "100%")
.attr("y2", "0%")
.attr("spreadMethod", "pad");
gradient.append("svg:stop").attr("offset", "0%").attr("stop-color", "blue").attr("stop-opacity", 1);
gradient.append("svg:stop").attr("offset", "30%").attr("stop-color", "cyan").attr("stop-opacity", 1);
gradient.append("svg:stop").attr("offset", "100%").attr("stop-color", "blue").attr("stop-opacity", 1);
svg.append('svg:rect').attr('x', pct(aggregated.median))
.attr('width', '5px').attr('height', '100%')
.style('fill', 'url(#gradient)');
}
d3.select('#students tbody')
.selectAll('tr').data(json.students).enter().append("tr")
.selectAll('td').data(function(d) { return d; }).enter().append('td')
.each(renderDispatch);
appendStateDistribution('My classes', json.aggregated.thisClass);
appendStateDistribution('This school', json.aggregated.otherClasses);
appendStateDistribution('District', json.aggregated.district);
}
// colors
@bar-range: #ececf0;
@bar-target: #b0c4de;
@bar-indicator: #0480be;
@current-sample: red;
@guideline-50pct: silver;
@guideline-25pct: lightgray;
// mixins
.bold(@size) { font-size: @size; font-weight: bold; }
// styles
.icon-small { margin-left: 0.3em}
.icon-bullhorn { color: #8b008b; }
.icon-globe { color: #195f91; }
.bullet {
.target { fill: @bar-target; }
.actual, .mark { fill: @bar-indicator; }
.range { fill: @bar-range; }
}
.barchart {
.absences,
.detentions { fill: @bar-indicator; }
.tardies,
.referrals { fill: @bar-target; }
.label,
.label.absences,
.label.tardies { fill: white; }
.label { .bold(10px); }
.pct50 { fill: @guideline-50pct; }
}
.sparkline {
.current { fill: @current-sample; }
.past { fill: @bar-indicator; }
.pct50 { fill: @guideline-50pct; }
.pct25 { fill: @guideline-25pct; }
}
.interjection { color: @bar-indicator; }
#stats { margin-top: 1em}
#stats > div { margin-top: .3em}
#stats .label { .bold(9pt); }
#lastClass { font-size: 11pt; }
#stats *,
#lastClass strong,
th {
font-weight: 300;
text-shadow: 0px 1px white;
}
tr:hover {
background-color: #fffeb8;
color: black;
}
.studentName, .grades, .assignments, .standardizedTests {
padding-right: 1em;
}
.attendance, .disciplinary {
text-align: center;
}
#students { width: 100%; }
body {
font-family: 'Open Sans', sans-serif;
font-weight: 600;
background-color: #f8f8ff;
background-image: url("//raw.github.com/ddimtirov/dashboard-perceptual-edge-2012/master/src/webroot/egg_shell/egg_shell.png");
color: #606060;
max-width: 1024px;
margin: 1em auto;
}
{
"generator": "Run HttpServer.groovy and download http://localhost:8080/data-dashboard.json",
"aggregated": {
"thisClass": {
"median": 0.774,
"distribution": [
{
"score": "<=50%",
"populationPct": 0.096
},
{
"score": "51-60%",
"populationPct": 0.097
},
{
"score": "61-70%",
"populationPct": 0.224
},
{
"score": "71-80%",
"populationPct": 0.247
},
{
"score": "81-90%",
"populationPct": 0.233
},
{
"score": "91-100%",
"populationPct": 0.103
}
]
},
"otherClasses": {
"median": 0.742,
"distribution": [
{
"score": "<=50%",
"populationPct": 0.093
},
{
"score": "51-60%",
"populationPct": 0.104
},
{
"score": "61-70%",
"populationPct": 0.231
},
{
"score": "71-80%",
"populationPct": 0.254
},
{
"score": "81-90%",
"populationPct": 0.222
},
{
"score": "91-100%",
"populationPct": 0.096
}
]
},
"district": {
"median": 0.719,
"distribution": [
{
"score": "<=50%",
"populationPct": 0.116
},
{
"score": "51-60%",
"populationPct": 0.114
},
{
"score": "61-70%",
"populationPct": 0.254
},
{
"score": "71-80%",
"populationPct": 0.234
},
{
"score": "81-90%",
"populationPct": 0.196
},
{
"score": "91-100%",
"populationPct": 0.086
}
]
}
},
"yesterday": {
"absences": 2,
"tardies": 1
},
"students": [
[
{
"name": "Bae Kim",
"englishLanguageProficiencyLacking": true,
"specialEdStatus": false,
"lateAssignments": 3
},
{
"scoreByGrade": {
"latest": 0.39,
"9th": 0.71,
"8th": 0.74,
"7th": 0.78,
"6th": 0.75
}
},
{
"currentCourse": "F",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.46,
0.68,
0.71,
0.51,
0.61
],
"lateCount": 3.0
},
{
"detentions": {
"thisTermCount": 2.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 3.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 8.0,
"dates": [
"2012/01/09",
"2012/01/12",
"2012/01/30",
"2012/02/21",
"2012/02/29",
"2012/04/11",
"2012/04/23",
"2012/04/27"
]
},
"absences": {
"count": 6.0,
"dates": [
"2012/02/16",
"2012/03/05",
"2012/03/19",
"2012/03/30",
"2012/04/09",
"2012/04/17"
]
}
}
],
[
{
"name": "Frederick Chandler",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 2
},
{
"scoreByGrade": {
"latest": 0.41,
"9th": 0.62,
"8th": 0.64,
"7th": 0.67,
"6th": 0.51
}
},
{
"currentCourse": "F",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.71,
0.65,
0.0,
0.6,
0.68
],
"lateCount": 2.0
},
{
"detentions": {
"thisTermCount": 1.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 2.0,
"lastTermCount": 2.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 0.0,
"dates": [
]
}
}
],
[
{
"name": "Alison Perry",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.85,
"9th": 0.89,
"8th": 0.84,
"7th": 0.82,
"6th": 0.85
}
},
{
"currentCourse": "B",
"studentGoal": "A",
"previousCourse": "A"
},
{
"scores": [
0.87,
0.91,
0.98,
0.78,
0.91
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/02/09",
"2012/03/05",
"2012/03/06"
]
}
}
],
[
{
"name": "Anthony Harper",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": true,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.62,
"9th": 0.67,
"8th": 0.7,
"7th": 0.73,
"6th": 0.79
}
},
{
"currentCourse": "D",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.65,
0.79,
0.55,
0.7000000000000001,
0.78
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/02/15",
"2012/03/13",
"2012/04/09"
]
}
}
],
[
{
"name": "Blaine Harper",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.71,
"9th": 0.68,
"8th": 0.73,
"7th": 0.74,
"6th": 0.69
}
},
{
"currentCourse": "C",
"studentGoal": "B",
"previousCourse": "D"
},
{
"scores": [
0.6900000000000001,
0.73,
0.77,
0.81,
0.74
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/03/19"
]
},
"absences": {
"count": 4.0,
"dates": [
"2012/01/09",
"2012/01/12",
"2012/02/15",
"2012/04/09"
]
}
}
],
[
{
"name": "Brian Francis",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 2
},
{
"scoreByGrade": {
"latest": 0.67,
"9th": 0.66,
"8th": 0.71,
"7th": 0.78,
"6th": 0.81
}
},
{
"currentCourse": "D",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.5700000000000001,
0.66,
0.7000000000000001,
0.62,
0.6900000000000001
],
"lateCount": 2.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 3.0,
"dates": [
"2012/01/11",
"2012/02/09",
"2012/04/17"
]
},
"absences": {
"count": 9.0,
"dates": [
"2012/01/10",
"2012/01/17",
"2012/01/18",
"2012/01/19",
"2012/02/22",
"2012/02/23",
"2012/03/28",
"2012/04/09",
"2012/04/20"
]
}
}
],
[
{
"name": "Christopher Murphy",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.55,
"9th": 0.49,
"8th": 0.51,
"7th": 0.58,
"6th": 0.77
}
},
{
"currentCourse": "D",
"studentGoal": "C",
"previousCourse": "F"
},
{
"scores": [
0.55,
0.73,
0.7000000000000001,
0.72,
0.78
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 3.0,
"dates": [
"2012/02/09",
"2012/03/06",
"2012/03/30"
]
},
"absences": {
"count": 2.0,
"dates": [
"2012/01/20",
"2012/04/30"
]
}
}
],
[
{
"name": "Fariah Jackson",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.84,
"9th": 0.81,
"8th": 0.81,
"7th": 0.83,
"6th": 0.8
}
},
{
"currentCourse": "B",
"studentGoal": "A",
"previousCourse": "B"
},
{
"scores": [
0.89,
0.92,
0.85,
0.84,
0.88
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 2.0,
"dates": [
"2012/02/07",
"2012/03/22"
]
}
}
],
[
{
"name": "Fiona Reeves",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": true,
"lateAssignments": 3
},
{
"scoreByGrade": {
"latest": 0.47,
"9th": 0.41,
"8th": 0.52,
"7th": 0.47,
"6th": 0.5
}
},
{
"currentCourse": "D",
"studentGoal": "C",
"previousCourse": "F"
},
{
"scores": [
0.61,
0.6900000000000001,
0.54,
0.75,
0.64
],
"lateCount": 3.0
},
{
"detentions": {
"thisTermCount": 1.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 8.0,
"dates": [
"2012/01/19",
"2012/02/07",
"2012/02/08",
"2012/02/09",
"2012/03/14",
"2012/04/17",
"2012/04/19",
"2012/04/20"
]
}
}
],
[
{
"name": "George Smith",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.76,
"9th": 0.71,
"8th": 0.74,
"7th": 0.73,
"6th": 0.71
}
},
{
"currentCourse": "C",
"studentGoal": "B",
"previousCourse": "C"
},
{
"scores": [
0.78,
0.72,
0.81,
0.75,
0.76
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 3.0,
"dates": [
"2012/01/13",
"2012/04/19",
"2012/04/30"
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/03/08"
]
}
}
],
[
{
"name": "Lawrence Parker",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.8,
"9th": 0.79,
"8th": 0.78,
"7th": 0.83,
"6th": 0.84
}
},
{
"currentCourse": "B",
"studentGoal": "A",
"previousCourse": "B"
},
{
"scores": [
0.81,
0.84,
0.88,
0.89,
0.91
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 1.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 0.0,
"dates": [
]
}
}
],
[
{
"name": "Regan Potrero",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.67,
"9th": 0.7,
"8th": 0.68,
"7th": 0.71,
"6th": 0.73
}
},
{
"currentCourse": "C",
"studentGoal": "B",
"previousCourse": "C"
},
{
"scores": [
0.76,
0.79,
0.78,
0.89,
0.72
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 2.0,
"dates": [
"2012/01/25",
"2012/02/01"
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/03/06"
]
}
}
],
[
{
"name": "Sarah Jameson",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.78,
"9th": 0.85,
"8th": 0.89,
"7th": 0.92,
"6th": 0.91
}
},
{
"currentCourse": "B",
"studentGoal": "A",
"previousCourse": "A"
},
{
"scores": [
0.87,
0.8300000000000001,
0.92,
0.9,
0.89
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 1.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 4.0,
"dates": [
"2012/01/19",
"2012/02/08",
"2012/03/06",
"2012/04/23"
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/02/07",
"2012/03/27",
"2012/04/17"
]
}
}
],
[
{
"name": "Amala Singh",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.91,
"9th": 0.94,
"8th": 0.93,
"7th": 0.89,
"6th": 0.87
}
},
{
"currentCourse": "A",
"studentGoal": "A",
"previousCourse": "A"
},
{
"scores": [
0.9,
0.87,
0.93,
0.9,
0.99
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/01/11"
]
},
"absences": {
"count": 4.0,
"dates": [
"2012/01/30",
"2012/02/17",
"2012/02/23",
"2012/02/24"
]
}
}
],
[
{
"name": "Britta Jones",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.85,
"9th": 0.81,
"8th": 0.82,
"7th": 0.78,
"6th": 0.75
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "B"
},
{
"scores": [
0.81,
0.87,
0.79,
0.8,
0.77
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/01/11"
]
},
"absences": {
"count": 2.0,
"dates": [
"2012/02/01",
"2012/04/13"
]
}
}
],
[
{
"name": "David Chenowith",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.8,
"9th": 0.76,
"8th": 0.82,
"7th": 0.84,
"6th": 0.85
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "C"
},
{
"scores": [
0.81,
0.88,
0.92,
0.84,
0.97
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 5.0,
"dates": [
"2012/01/31",
"2012/02/15",
"2012/02/22",
"2012/04/12",
"2012/04/23"
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/01/24",
"2012/01/25",
"2012/02/21"
]
}
}
],
[
{
"name": "Hannah Li",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.94,
"9th": 0.91,
"8th": 0.94,
"7th": 0.93,
"6th": 0.95
}
},
{
"currentCourse": "A",
"studentGoal": "A",
"previousCourse": "A"
},
{
"scores": [
0.91,
0.93,
0.98,
0.89,
0.9400000000000001
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 2.0,
"dates": [
"2012/01/25",
"2012/03/19"
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/01/24"
]
}
}
],
[
{
"name": "Holly Norton",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.98,
"9th": 0.99,
"8th": 0.97,
"7th": 0.97,
"6th": 0.96
}
},
{
"currentCourse": "A",
"studentGoal": "A",
"previousCourse": "A"
},
{
"scores": [
0.98,
1.0,
0.97,
0.9500000000000001,
1.0
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 2.0,
"dates": [
"2012/02/21",
"2012/03/09"
]
},
"absences": {
"count": 0.0,
"dates": [
]
}
}
],
[
{
"name": "Jaime Goss",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.82,
"9th": 0.81,
"8th": 0.78,
"7th": 0.83,
"6th": 0.84
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "B"
},
{
"scores": [
0.88,
0.81,
0.78,
0.85,
0.86
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 4.0,
"dates": [
"2012/02/08",
"2012/03/05",
"2012/04/09",
"2012/03/12"
]
}
}
],
[
{
"name": "James Martin",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.71,
"9th": 0.74,
"8th": 0.75,
"7th": 0.75,
"6th": 0.73
}
},
{
"currentCourse": "C",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.71,
0.74,
0.6900000000000001,
0.79,
0.75
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 2.0,
"dates": [
"2012/01/26",
"2012/03/21"
]
},
"absences": {
"count": 4.0,
"dates": [
"2012/01/18",
"2012/04/26",
"2012/04/27",
"2012/04/30"
]
}
}
],
[
{
"name": "James Snow",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.91,
"9th": 0.86,
"8th": 0.9,
"7th": 0.92,
"6th": 0.9
}
},
{
"currentCourse": "A",
"studentGoal": "A",
"previousCourse": "B"
},
{
"scores": [
0.91,
0.9400000000000001,
0.89,
0.99,
0.97
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/02/09"
]
}
}
],
[
{
"name": "Jose Domingo",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.84,
"9th": 0.9,
"8th": 0.91,
"7th": 0.89,
"6th": 0.93
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "A"
},
{
"scores": [
0.87,
0.84,
0.89,
0.88,
0.84
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/01/24"
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/02/08",
"2012/03/13",
"2012/03/14"
]
}
}
],
[
{
"name": "Kirsten Holmes",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.67,
"9th": 0.72,
"8th": 0.73,
"7th": 0.75,
"6th": 0.77
}
},
{
"currentCourse": "C",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.79,
0.7000000000000001,
0.66,
0.71,
0.72
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/03/13"
]
}
}
],
[
{
"name": "Maria Garcia",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.72,
"9th": 0.75,
"8th": 0.76,
"7th": 0.71,
"6th": 0.76
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "B"
},
{
"scores": [
0.9,
0.81,
0.89,
0.8200000000000001,
0.88
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 2.0
}
},
{
"tardies": {
"count": 4.0,
"dates": [
"2012/01/14",
"2012/01/25",
"2012/04/10",
"2012/04/25"
]
},
"absences": {
"count": 3.0,
"dates": [
"2012/03/08",
"2012/03/09",
"2012/04/23"
]
}
}
],
[
{
"name": "Nikolas Mikhailovich",
"englishLanguageProficiencyLacking": true,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.63,
"9th": 0.57,
"8th": 0.55,
"7th": 0.64,
"6th": 0.63
}
},
{
"currentCourse": "C",
"studentGoal": "C",
"previousCourse": "F"
},
{
"scores": [
0.66,
0.71,
0.73,
0.7000000000000001,
0.79
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/03/19"
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/01/17"
]
}
}
],
[
{
"name": "Roshawn Dawson",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.78,
"9th": 0.79,
"8th": 0.82,
"7th": 0.8,
"6th": 0.77
}
},
{
"currentCourse": "C",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.64,
0.71,
0.75,
0.78,
0.71
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 1.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 6.0,
"dates": [
"2012/01/09",
"2012/01/10",
"2012/01/11",
"2012/01/12",
"2012/01/13",
"2012/04/17"
]
}
}
],
[
{
"name": "Samuel Miller",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.81,
"9th": 0.76,
"8th": 0.83,
"7th": 0.84,
"6th": 0.81
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "C"
},
{
"scores": [
0.81,
0.88,
0.77,
0.91,
0.84
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 1.0,
"dates": [
"2012/02/27"
]
},
"absences": {
"count": 0.0,
"dates": [
]
}
}
],
[
{
"name": "Xu Mei",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.83,
"9th": 0.86,
"8th": 0.89,
"7th": 0.88,
"6th": 0.91
}
},
{
"currentCourse": "B",
"studentGoal": "B",
"previousCourse": "B"
},
{
"scores": [
0.92,
0.87,
0.65,
0.88,
0.85
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 2.0,
"dates": [
"2012/03/08",
"2012/04/16"
]
}
}
],
[
{
"name": "Donald Chase",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 0
},
{
"scoreByGrade": {
"latest": 0.92,
"9th": 0.89,
"8th": 0.91,
"7th": 0.96,
"6th": 0.93
}
},
{
"currentCourse": "A",
"studentGoal": "B",
"previousCourse": "A"
},
{
"scores": [
0.97,
0.93,
0.9,
0.97,
0.9500000000000001
],
"lateCount": 0.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 1.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 0.0,
"dates": [
]
}
}
],
[
{
"name": "Scott Ortiz",
"englishLanguageProficiencyLacking": false,
"specialEdStatus": false,
"lateAssignments": 1
},
{
"scoreByGrade": {
"latest": 0.82,
"9th": 0.71,
"8th": 0.74,
"7th": 0.73,
"6th": 0.78
}
},
{
"currentCourse": "B",
"studentGoal": "C",
"previousCourse": "C"
},
{
"scores": [
0.89,
0.78,
0.84,
0.79,
0.81
],
"lateCount": 1.0
},
{
"detentions": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
},
"referrals": {
"thisTermCount": 0.0,
"lastTermCount": 0.0
}
},
{
"tardies": {
"count": 0.0,
"dates": [
]
},
"absences": {
"count": 1.0,
"dates": [
"2012/03/14"
]
}
}
]
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment