Ext.require('Ext.chart.*'); Ext.require(['Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout.container.Fit', 'Ext.window.MessageBox']); Ext.onReady(function () { var chart = Ext.create('Ext.chart.Chart', { id: 'chartCmp', xtype: 'chart', style: 'background:#fff', theme: 'Category2', animate: true, store: store1, insetPadding: 20, legend: { position: 'right' }, axes: [{ type: 'Radial', position: 'radial', label: { display: true } }], series: [{ type: 'radar', xField: 'name', yField: 'data1', showInLegend: true, showMarkers: true, markerConfig: { radius: 5, size: 5 }, style: { 'stroke-width': 2, fill: 'none' } },{ type: 'radar', xField: 'name', yField: 'data2', showInLegend: true, showMarkers: true, markerConfig: { radius: 5, size: 5 }, style: { 'stroke-width': 2, fill: 'none' } },{ type: 'radar', xField: 'name', yField: 'data3', showMarkers: true, showInLegend: true, markerConfig: { radius: 5, size: 5 }, style: { 'stroke-width': 2, fill: 'none' } }] }); var win = Ext.create('Ext.Window', { width: 800, height: 600, minHeight: 400, minWidth: 550, hidden: false, shadow: false, maximizable: true, style: 'overflow: hidden;', title: 'Radar 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()); } }, { enableToggle: true, pressed: true, text: 'Animate', toggleHandler: function(btn, pressed) { var chart = Ext.getCmp('chartCmp'); chart.animate = pressed ? { easing: 'ease', duration: 500 } : false; } }], items: chart }); });