PieRenderer.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. Ext.require('Ext.chart.*');
  2. Ext.require(['Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout.container.Fit', 'Ext.window.MessageBox']);
  3. Ext.onReady(function () {
  4. store1.loadData(generateData(5, 20));
  5. var chart = Ext.create('Ext.chart.Chart', {
  6. id: 'chartCmp',
  7. xtype: 'chart',
  8. style: 'background:#fff',
  9. animate: true,
  10. shadow: true,
  11. store: store1,
  12. series: [{
  13. type: 'pie',
  14. animate: true,
  15. angleField: 'data1', //bind angle span to visits
  16. lengthField: 'data2', //bind pie slice length to views
  17. highlight: {
  18. segment: {
  19. margin: 20
  20. }
  21. },
  22. label: {
  23. field: 'name', //bind label text to name
  24. display: 'rotate', //rotate labels (also middle, out).
  25. font: '14px Arial',
  26. contrast: true
  27. },
  28. style: {
  29. 'stroke-width': 1,
  30. 'stroke': '#fff'
  31. },
  32. //add renderer
  33. renderer: function(sprite, record, attr, index, store) {
  34. var value = (record.get('data1') >> 0) % 9;
  35. var color = [ "#94ae0a", "#115fa6","#a61120", "#ff8809", "#ffd13e", "#a61187", "#24ad9a", "#7c7474", "#a66111"][value];
  36. return Ext.apply(attr, {
  37. fill: color
  38. });
  39. }
  40. }]
  41. });
  42. var win = Ext.create('Ext.Window', {
  43. width: 800,
  44. height: 600,
  45. minHeight: 400,
  46. minWidth: 550,
  47. hidden: false,
  48. maximizable: true,
  49. title: 'Pie Renderer Chart',
  50. renderTo: Ext.getBody(),
  51. layout: 'fit',
  52. tbar: [{
  53. text: 'Save Chart',
  54. handler: function() {
  55. Ext.MessageBox.confirm('Confirm Download', 'Would you like to download the chart as an image?', function(choice){
  56. if(choice == 'yes'){
  57. chart.save({
  58. type: 'image/png'
  59. });
  60. }
  61. });
  62. }
  63. }, {
  64. text: 'Reload Data',
  65. handler: function() {
  66. store1.loadData(generateData(5));
  67. }
  68. }],
  69. items: chart
  70. });
  71. });