Grouping Chart

Kendo chart using the grouping of the datasource

by drysg

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">
<div id="chart"></div>

JavaScript

var pictures = [
    {
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "JPG",
    size: 2},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3},
{
    type: "PNG",
    size: 3}
];

var dataSource = new kendo.data.DataSource({
    data: pictures,
    //create group and aggregates
    group: {
        field: "type",
        aggregates: [
            {
            field: "size",
            aggregate: "sum"}
        ]
    }
});
//read dataSource to load the data
dataSource.read();

var series = [],
    items = dataSource.view(),
    length = items.length,
    itemCounts = [],
    itemNames = [],
    item;
//create the chart series  
for (var i = 0; i < length; i++) {
    item = items[i];
    itemCounts.push(item.items.length);
    itemNames.push(item.value);
}
series.push({
    name: "data types",
    data: itemCounts
})
//initialize the chart
$(document).ready(function() {
    $("#chart").kendoChart({
        dataSource: dataSource,
        seriesDefaults: {
            type: "column"
        },
        series: series,
        categoryAxis: {
            categories: itemNames
        },
        tooltip: {
            visible: true
        }
    });
});