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);