TipsChart.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. Ext.require('Ext.chart.*');
  2. Ext.require('Ext.layout.container.Fit');
  3. Ext.require('Ext.window.MessageBox');
  4. Ext.onReady(function () {
  5. var pieModel = [
  6. {
  7. name: 'data1',
  8. data: 10
  9. },
  10. {
  11. name: 'data2',
  12. data: 10
  13. },
  14. {
  15. name: 'data3',
  16. data: 10
  17. },
  18. {
  19. name: 'data4',
  20. data: 10
  21. },
  22. {
  23. name: 'data5',
  24. data: 10
  25. }
  26. ];
  27. var pieStore = Ext.create('Ext.data.JsonStore', {
  28. fields: ['name', 'data'],
  29. data: pieModel
  30. });
  31. var pieChart = Ext.create('Ext.chart.Chart', {
  32. width: 100,
  33. height: 100,
  34. animate: false,
  35. store: pieStore,
  36. shadow: false,
  37. insetPadding: 0,
  38. theme: 'Base:gradients',
  39. series: [{
  40. type: 'pie',
  41. field: 'data',
  42. showInLegend: false,
  43. label: {
  44. field: 'name',
  45. display: 'rotate',
  46. contrast: true,
  47. font: '9px Arial'
  48. }
  49. }]
  50. });
  51. var gridStore = Ext.create('Ext.data.JsonStore', {
  52. fields: ['name', 'data'],
  53. data: pieModel
  54. });
  55. var grid = Ext.create('Ext.grid.Panel', {
  56. store: gridStore,
  57. height: 130,
  58. width: 480,
  59. columns: [
  60. {
  61. text : 'name',
  62. dataIndex: 'name'
  63. },
  64. {
  65. text : 'data',
  66. dataIndex: 'data'
  67. }
  68. ]
  69. });
  70. var chart = Ext.create('Ext.chart.Chart', {
  71. xtype: 'chart',
  72. animate: true,
  73. shadow: true,
  74. store: store1,
  75. axes: [{
  76. type: 'Numeric',
  77. position: 'left',
  78. fields: ['data1'],
  79. title: false,
  80. grid: true
  81. }, {
  82. type: 'Category',
  83. position: 'bottom',
  84. fields: ['name'],
  85. title: false
  86. }],
  87. series: [{
  88. type: 'line',
  89. axis: 'left',
  90. gutter: 80,
  91. xField: 'name',
  92. yField: ['data1'],
  93. tips: {
  94. trackMouse: true,
  95. width: 580,
  96. height: 170,
  97. layout: 'fit',
  98. items: {
  99. xtype: 'container',
  100. layout: 'hbox',
  101. items: [pieChart, grid]
  102. },
  103. renderer: function(klass, item) {
  104. var storeItem = item.storeItem,
  105. data = [{
  106. name: 'data1',
  107. data: storeItem.get('data1')
  108. }, {
  109. name: 'data2',
  110. data: storeItem.get('data2')
  111. }, {
  112. name: 'data3',
  113. data: storeItem.get('data3')
  114. }, {
  115. name: 'data4',
  116. data: storeItem.get('data4')
  117. }, {
  118. name: 'data5',
  119. data: storeItem.get('data5')
  120. }], i, l, html;
  121. this.setTitle("Information for " + storeItem.get('name'));
  122. pieStore.loadData(data);
  123. gridStore.loadData(data);
  124. grid.setSize(480, 130);
  125. }
  126. }
  127. }]
  128. });
  129. var panel1 = Ext.create('widget.panel', {
  130. width: 800,
  131. height: 400,
  132. title: 'Line Chart',
  133. renderTo: Ext.getBody(),
  134. layout: 'fit',
  135. tbar: [{
  136. text: 'Save Chart',
  137. handler: function() {
  138. Ext.MessageBox.confirm('Confirm Download', 'Would you like to download the chart as an image?', function(choice){
  139. if(choice == 'yes'){
  140. chart.save({
  141. type: 'image/png'
  142. });
  143. }
  144. });
  145. }
  146. }],
  147. items: chart
  148. });
  149. });