k-chart with aggregates

by valchev

HTML

<script src="http://cdn.kendostatic.com/2012.1.322/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.1.322/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.1.322/styles/kendo.dataviz.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.1.322/styles/kendo.default.min.css">
<div id="chart"></div>
<div id="grid"></div>

CSS

#chart {
 height: 120px;
 width: 60%;
 margin: 20px auto;
}

JavaScript

var pictures = [
    { type: "JPG", size: 10 },
    { type: "JPG", size: 20 },
    { type: "JPG", size: 12 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 20 },
    { type: "JPG", size: 20 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 12 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 10 },
    { type: "JPG", size: 12 },
    { type: "JPG", size: 20 },
    { type: "JPG", size: 20 },
    { type: "PNG", size: 10 }, 
    { type: "PNG", size: 10 }, 
    { type: "PNG", size: 10 }, 
    { type: "PNG", size: 20 }, 
    { type: "PNG", size: 20 }, 
    { type: "PNG", size: 12 }, 
    { type: "PNG", size: 10 }, 
    { type: "PNG", size: 20 }, 
    { type: "PNG", size: 20 }, 
    { type: "PNG", size: 12 }, 
    { type: "PNG", size: 12 }, 
    { type: "PNG", size: 10 }
];

var dataSource = new kendo.data.DataSource({
    data: pictures,
    change: function() {
        
        if(this.group().length != 0) {
            var series = [],
                items = dataSource.view(),
                length = items.length,
                item;
            
            //create the chart series  
            for (var i = 0; i < length; i++) {
                item = items[i];
                series.push({ name: item.value, data: [item.aggregates.size.count]})
            }
                    
            createSeries(series);
        } else {
            createSeries([{name: "no aggregates", data: [0]}]);
        }                
    }
});

//read dataSource to load the data

function createSeries(series) {
    var data = series;
    $("#chart").kendoChart({
        seriesDefaults: {
            type: "bar"
        },
        series: data,
        tooltip: {
            visible: true
        }
    });
}
                 
//initialize the chart
$(document).ready(function() {
    $("#grid").kendoGrid({
        dataSource: dataSource,
        columns: [
            { field: "type",...