Work Tracker
by Mike Gleeson
HTML
<div id='container'>
</div>
CSS
#container{
background: rgb(135,224,253); /* Old browsers */
background: -moz-linear-gradient(top, rgba(135,224,253,1) 0%, rgba(83,203,241,1) 40%, rgba(5,171,224,1) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(135,224,253,1)), color-stop(40%,rgba(83,203,241,1)), color-stop(100%,rgba(5,171,224,1))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(135,224,253,1) 0%,rgba(83,203,241,1) 40%,rgba(5,171,224,1) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(135,224,253,1) 0%,rgba(83,203,241,1) 40%,rgba(5,171,224,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(135,224,253,1) 0%,rgba(83,203,241,1) 40%,rgba(5,171,224,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(135,224,253,1) 0%,rgba(83,203,241,1) 40%,rgba(5,171,224,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#87e0fd', endColorstr='#05abe0',GradientType=0 ); /* IE6-9 */
color:white;
text-shadow:2px 2px 2px black;
}
.percent {
position:relative;
left:33.33%;
color:white;
}
.progressBar {
display: inline-block;
border: 1px solid black;
background: #4c4c4c; /* Old browsers */
background: -moz-linear-gradient(top, #4c4c4c 0%, #595959 12%, #666666 25%, #474747 39%, #2c2c2c 50%, #000000 51%, #111111 60%, #2b2b2b 76%, #1c1c1c 91%, #131313 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(12%,#595959), color-stop(25%,#666666), color-stop(39%,#474747), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(60%,#111111), color-stop(76%,#2b2b2b), color-stop(91%,#1c1c1c), color-stop(100%,#131313)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, ...
JavaScript
var _template = {
Job: {
Name: "Test Job",
Assignee: "Mike Gleeson",
Assignor: "Jeff Sciarra",
Estimate: 100,
Current: 20,
Start: new Date(),
End: new Date(1444433434100),
Weight: 0.01,
bZilla: "11212"
}
};
var __bZillaLink = "http://192.168.1.7:8040/show_bug.cgi?id=";
console.log(_template);
var __container = $("#container");
function buildTrackerTable(container, Job) {
var _html = "<table class='workTable'><tbody>";
var _progress = Job.Current/Math.max(Job.Estimate,1)*100;
_html += "<tr><td> Assignment: <span class='info'>"+Job.Name+"</span></td></tr>";
_html += "<tr><td> Assigned To: <span class='info'>"+Job.Assignee+"</span></td></tr>";
_html += "<tr><td> Assigned By: <span class='info'>"+Job.Assignor+"</span></td></tr>";
_html += "<tr><td> Time Estimate: <span class='info'>"+Job.Estimate+" hour"+(Job.Estimate === 1 ? '' : 's')+"</span></td></tr>";
_html += "<tr><td> Current Progress: <span class='info'>"+Job.Current+" hour"+(Job.Current === 1 ? '' : 's')+"</span></td></tr>";
_html += "<tr><td> Assigned On: <span class='info'>"+Job.Start+"</span></td></tr>";
_html += "<tr><td> Due Date: <span class='info'>"+Job.End+"</span></td></tr>";
_html += "<tr><td> Weight: <span class='info'>"+Job.Weight*100+"%</span></td></tr>";
_html += "<tr><td> BugID: <span class='info'><a href='"+__bZillaLink+Job.bZilla+"'>"+Job.bZilla+"</a></span></td></tr>";
_html += "<tr><td>Progress: <div class='progressBar' style='width:80%;'><div class='progress' style='width: "+_progress+"%;'></div><span class='percent'>"+_progress+"%</span></div></span></td></tr>";
_html += "</tbody></table>";
container.html(_html);
}
buildTrackerTable(__container, _template.Job);