Ext.require('Ext.chart.*'); Ext.require(['Ext.Window', 'Ext.layout.container.Fit', 'Ext.fx.target.Sprite', 'Ext.window.MessageBox']); Ext.onReady(function () { store1.loadData(generateData(5, 0)); var colors = ['url(#v-1)', 'url(#v-2)', 'url(#v-3)', 'url(#v-4)', 'url(#v-5)']; var baseColor = '#eee'; Ext.define('Ext.chart.theme.Fancy', { extend: 'Ext.chart.theme.Base', constructor: function(config) { this.callParent([Ext.apply({ axis: { fill: baseColor, stroke: baseColor }, axisLabelLeft: { fill: baseColor }, axisLabelBottom: { fill: baseColor }, axisTitleLeft: { fill: baseColor }, axisTitleBottom: { fill: baseColor }, colors: colors }, config)]); } }); var chart = Ext.create('Ext.chart.Chart', { id: 'chartCmp', xtype: 'chart', theme: 'Fancy', animate: { easing: 'bounceOut', duration: 750 }, store: store1, background: { fill: 'rgb(17, 17, 17)' }, gradients: [ { 'id': 'v-1', 'angle': 0, stops: { 0: { color: 'rgb(212, 40, 40)' }, 100: { color: 'rgb(117, 14, 14)' } } }, { 'id': 'v-2', 'angle': 0, stops: { 0: { color: 'rgb(180, 216, 42)' }, 100: { color: 'rgb(94, 114, 13)' } } }, { 'id': 'v-3', 'angle': 0, stops: { 0: { color: 'rgb(43, 221, 115)' }, 100: { color: 'rgb(14, 117, 56)' } } }, { 'id': 'v-4', 'angle': 0, stops: { 0: { color: 'rgb(45, 117, 226)' }, 100: { color: 'rgb(14, 56, 117)' } } }, { 'id': 'v-5', 'angle': 0, stops: { 0: { color: 'rgb(187, 45, 222)' }, 100: { color: 'rgb(85, 10, 103)' } } }], axes: [{ type: 'Numeric', position: 'left', fields: ['data1'], minimum: 0, maximum: 100, label: { renderer: Ext.util.Format.numberRenderer('0,0') }, title: 'Number of Hits', grid: { odd: { stroke: '#555' }, even: { stroke: '#555' } } }, { type: 'Category', position: 'bottom', fields: ['name'], title: 'Month of the Year' }], series: [{ type: 'column', axis: 'left', highlight: true, label: { display: 'insideEnd', 'text-anchor': 'middle', field: 'data1', orientation: 'horizontal', fill: '#fff', font: '17px Arial' }, renderer: function(sprite, storeItem, barAttr, i, store) { barAttr.fill = colors[i % colors.length]; return barAttr; }, style: { opacity: 0.95 }, xField: 'name', yField: 'data1' }] }); var win = Ext.create('Ext.Window', { width: 800, height: 600, minHeight: 400, minWidth: 550, hidden: false, maximizable: true, title: 'Column Chart', 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(5, 0)); } }], items: chart }); });