StudentGender.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. Ext.define('school.view.home.charts.StudentGender', {
  2. extend: 'school.view.core.chart.ChartBase',
  3. xtype: 'studentgender',
  4. id: 'studentgender',
  5. title: '在校男女学生比例', // 设置默认标题占好默认高度,使容器内的组件可以正确获得展示高度
  6. initComponent: function () {
  7. var me = this;
  8. Ext.apply(me, {
  9. items: [{
  10. xtype: 'echartsbase',
  11. bind: {
  12. store: '{studentgender}',
  13. },
  14. isEmpty: me.isEmpty,
  15. createOption: me.createOption
  16. }]
  17. });
  18. me.callParent(arguments);
  19. },
  20. isEmpty: function (store) {
  21. var index = store.findBy(function (s) {
  22. return s.get('y') > 0;
  23. });
  24. var flag = index == -1;
  25. return flag;
  26. },
  27. createOption: function (store) {
  28. var fields = [],
  29. data = [];
  30. store.each(function (d) {
  31. var d = d.data;
  32. if (d.y > 0) {
  33. fields.push(d.x);
  34. data.push({
  35. value: d.y,
  36. name: d.x
  37. });
  38. }
  39. });
  40. return {
  41. color: [
  42. '#77EAF7',
  43. '#FD9C8D',
  44. ],
  45. tooltip: {
  46. trigger: 'item',
  47. formatter: function (params, ticket, callback) {
  48. var name = params.name,
  49. value = params.value,
  50. marker = params.marker,
  51. percent = params.percent;
  52. if (name.length > 7) {
  53. name = Ext.String.insert(name, '<br/>', 7)
  54. }
  55. value = school.util.BaseUtil.numberFormat(value, 4, true);
  56. return name + '<br/>' + marker + value + ' (' + percent + '%)';
  57. }
  58. },
  59. legend: {
  60. orient: 'vertical',
  61. // left: '70%',
  62. // width: '30%',
  63. // icon: 'circle',
  64. right: '10%',
  65. data: fields,
  66. // itemWidth: 9,
  67. // itemHeight: 9,
  68. formatter: function (name) {
  69. var cWidth = Ext.getCmp('studentgender').items.items[0].echarts.getWidth() * 0.3,
  70. dataCount = fields.length,
  71. maxLength = Math.ceil((cWidth / dataCount) / 20);
  72. return name.length > maxLength ? name.substring(0, maxLength) + '...' : name;
  73. },
  74. },
  75. series: [{
  76. type: 'pie',
  77. // radius: ['48%', '88%'],
  78. // center: ['35%', '50%'],
  79. label: {
  80. normal: {
  81. show: true,
  82. formatter: '{b}: {c}'
  83. },
  84. emphasis: {
  85. show: false,
  86. textStyle: {
  87. fontSize: '30',
  88. fontWeight: 'bold'
  89. }
  90. }
  91. },
  92. labelLine: {
  93. normal: {
  94. show: false
  95. }
  96. },
  97. data: data
  98. }]
  99. }
  100. }
  101. });