Charts Integration

Sparklines

FancyGrid uses sparkline library http://omnipotent.net/jquery.sparkline/
To use sparklines, it needs include it on page.

Sparklines are used as column types.

They are: sparklineline, sparklinebar, sparklinetristate, sparklinediscrete, sparklinebullet ,sparklinepie, sparklinebox

Here is basic samples


Example: data index


{
  title: 'Line',
  index: 'data1',
  type: 'sparklineline',
  sparkConfig: {
    spotRadius: 1.7
  }
}

data: [
 { data1: [-2,3,4,1,0,-5], data2: [1,2,3,4,5]},
 ...
];

Example: param values with data indexes


{
  width: 50,
  type: 'sparklineline',
  sparkConfig: {
    sliceColors: ["#9DB160", "#B26668", "#4091BA", "#8E658E", "#3B8D8B", "#B6CA79", "#CB7F81", "#4091BA", "#8E658E", "#3B8D8B"]
  },
  values: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
}

data = [
  { year: 2006, toyota: 6800228, gm: 5779719, vw: 5429896, ford: 3956708, hyundai: 2003608 },
  { year: 2007, toyota: 7211474, gm: 6259520, vw: 5964004, ford: 3565626, hyundai: 2292075 },
  ...
];

Built-in sparklines

FancyGrid has several built-in self sparklines columns.

They are: grossloss, progressbar, progressdonut, hbar

Using of built-in sparklines is similiar to sparklines.
To config use sparkConfig

Example: gross loss


{  
  title: 'Gross/Loss',
  index: 'percents',
  type: 'grossloss',
  width: 75,
  sparkConfig: {
    grossColor: '#6fb270',
    lossColor: '#dc6b67',
    showOnMax: true,
    percents: true
  }
}

Example: progressbar


{  
  index: 'online',
  type: 'progressbar',
  width: 290,
  title: 'Relative size',
  sparkConfig: {
    percents: false
  }
}

Example: progressdonut


{  
  type: 'progressdonut',
  width: 66,
  sparkConfig: {
    size: 28,
    tipTpl: 'Value: {value} %'
  }
}

Example: hbar


{  
  width: 550,
  type: 'hbar',
  index: ['toyota', 'gm', 'vw', 'ford', 'hyundai'],
  sparkConfig: {
    tipFormat: function(o){
      return o.title + ' in ' + o.data.year + ':' + o.percents.toPrecision(4) + '%';
    },
    title: ['Toyota', 'GM', 'Volkswagen', 'Ford', 'Hyundai'],
    legend: {
      type: 'bbar',
      style: {
        'margin-left': '100px'
      }
    }
  }
}

Example: hbar stacked


{  
  index: ['0','1','2'],
  type: 'hbar',
  width: 400,
  sortable: false,
  title: '',
  sparkConfig: {
    tipTpl: '{value}',
    stacked: true,
    tipFormat: function(o){
      var data = o.data;
      
      return [
        'Overall ranking: ' + (data[0] + data[1] + data[2]),
        'Current-account balance: ' + data[0],
        'Private-sector credit: ' + data[1],
        'Foreign debt: ' + data[2]
      ].join("");
    },
    title: ['Balance', 'Credit', 'Foreign debt'],
    legend: {
      type: 'tbar',        
      style: {}
    }
  }
}

Example: hbar stacked full


{  
  width: 550,
  type: 'hbar',
  index: ['toyota', 'gm', 'vw', 'ford', 'hyundai'],
  sparkConfig: {
    fullStack: true,
    stacked: true,
    tipFormat: function(o){
      return o.title + ' in ' + o.data.year + ':' + o.percents.toPrecision(4) + '%';
    },
    title: ['Toyota', 'GM', 'Volkswagen', 'Ford', 'Hyundai'],
    legend: {
      type: 'bbar',
      style: {
        'margin-left': '100px'
      }
    }
  }
}

To change default FancyGrid chart colors use Fancy.COLORS before widget instance

Example: Changing default chart colors


Fancy.COLORS = ['#0078B2', '#003D58', '#00ACDD'];

HighCharts

To use HighCharts it needs to include it on page.


<script src="http://code.highcharts.com/highcharts.js"></script>

If information about chart is set in grid, it will be auto binding: editing, sorting.
Editing in grid will auto update chart.
Sorting of grid will auto update chart.

It is possible to set several charts to grid.

Sending data to chart.


data: {
  items: data,
  chart: [{
    type: 'highchart',
    id: 'column',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  }]
},

Sending data to charts.


data: {
  items: data,
  chart: [{
    type: 'highchart',
    id: 'spline',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  },{
    type: 'highchart',
    id: 'bar',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  },{
    type: 'highchart',
    id: 'column',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  }]
},

Reading from chart.

If do not set data items but set chart info, grid will auto read data from chart.


data: {
  chart: {
    type: 'highchart',
    id: 'chart',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  }
}

Column categories from chart.

To set values of categories from chart set index of column with xAxis.categories.


data: {
  chart: {
    type: 'highchart',
    id: 'chart',
    fields: ['toyota', 'gm', 'vw', 'ford', 'hyundai']
  }
},
columns: [{
  title: 'Year',
  index: 'xAxis.categories',
  editable: false
},{
...