Kendo sparkline demo

Positive / negative indicators for score value

HTML

<script src="http://cdn.kendostatic.com/2013.2.918/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.dataviz.default.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.dataviz.silver.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.2.918/styles/kendo.silver.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css">
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.3.5/knockout.mapping.js"></script>
<script src="//convey.blob.core.windows.net/cdn/knockout/knockout-kendo-0.6.2.min.js"></script>
<table id="examGrid" class="table table-striped">
    <thead>
        <tr>
            <th>Student</th>
            <th>ID</th>
            <th>Completed</th>
            <th>Overview</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: students">
        <tr height="60px">
            <td data-bind=" text: name "></td>
            <td data-bind="text: studentId "></td>
            <td>todo</td>
            <td width="30%" data-bind="kendoChart: { 
                
            data: exams, 
                
            axisDefaults: { visible: false, majorGridLines: { visible: false } }, 
                
            valueAxis: { min: -2, max: 2, majorGridLines: { visible: false }, visible: false }, 
                
            seriesDefaults: { border: { width: 1 }, 
                
            color: 'green', negativeColor: 'red', gap: 1, markers: { visible: false }, stack: false, type: 'column', missingValues: 'gap' }, series: [{ field: 'value' }] } "></td>
        </tr>
    </tbody>
</table>

JavaScript

var Students = [];
var Question = function () {};
var VM = function () {
    this.students = ko.observableArray(Students);
};
buildData();
console.dir(Students);
ko.applyBindings(new VM());

function buildData() {
    var tmp,
    ids = 2045,
        examLen = 25,
        names = [
            'Gerardo Wildman',  
            'Noble Braswell',  
            'Karisa Lizarraga',
            'Lashandra Harsh',  
            'Ebonie Zajicek',  
            'Christy Escalan',  
            'Dannie Christy',  
            'Tamica Baxen',  
            'Deandre Putman',  
            'Kourtney Hobby',  
            'Dortha Henrich',  
            'Honey Burroughs',  
            'Jeni Lindstrom',  
            'Jamila Netto',  
            'Maximo Ambler',  
            'Yu Galindez',  
            'Rosie Wee',  
            'Mckinley Ober',  
            'Barbera Ciriaco',  
            'Stephani Blackwell',  
            'Idalia Roiger',  
            'Emmie Mcavoy',  
            'Minda Alba',  
            'Amelia Wess',  
            'Tosha Lammers',  
            'Nathaniel Rives',  
            'Rosario Keleher',  
            'Nohemi Shipp',  
            'Emelda Timlin',  
            'Darcel Wyble'],
        sampleRoster = [];
    names.forEach(function (stud) {
        ids++;
        tmp = {
            name: stud,
            studentId: ids,
            exams: [],
            mapExams: function () {
                return exams.length;
            }
        };
        for (var x = 0; x < examLen; x++) {
            /*
            tmp.exams.push({
                id: x,
                answerKey: randomKey(),
                score: randomScore(0,1)
            });
            */
            tmp.exams.push(randomScore(-2, 2));
        }
        //Students.push(ko.mapping.fromJS(tmp));
        Students.push(tmp);
    });
}

function randomKey() {
    var code = randomScore(65, 69);
    return String.fromCharCode(code);
};

function randomScore(from, to) {
   ...