Ext.require('Ext.chart.*'); Ext.require(['Ext.layout.container.Fit', 'Ext.window.MessageBox']); Ext.onReady(function () { var chart = Ext.create('Ext.chart.Chart', { xtype: 'chart', animate: true, shadow: true, store: store1, axes: [{ type: 'Numeric', position: 'left', fields: ['data1'], title: 'Hits', grid: true, minimum: 0, maximum: 100 }, { type: 'Category', position: 'bottom', fields: ['name'], title: 'Months', label: { rotate: { degrees: 270 } } }], series: [{ type: 'column', axis: 'left', gutter: 80, xField: 'name', yField: ['data1'], tips: { trackMouse: true, width: 74, height: 38, renderer: function(storeItem, item) { this.setTitle(storeItem.get('name')); this.update(storeItem.get('data1')); } }, style: { fill: '#38B8BF' } }] }); var panel1 = Ext.create('widget.panel', { width: 800, height: 400, title: 'Column Chart with Reload - Hits per Month', renderTo: Ext.getBody(), layout: 'fit', tbar: [{ text: 'Save Chart', handler: function() { Ext.MessageBox.confirm('Confirm Download', 'Would you like to download the chart as an image?', function(choice){ if(choice == 'yes'){ chart.save({ type: 'image/png' }); } }); } }, { text: 'Reload Data', handler: function() { store1.loadData(generateData()); } }], items: chart }); });