Ext.define('school.view.home.charts.StudentGender', { extend: 'school.view.core.chart.ChartBase', xtype: 'studentgender', id: 'studentgender', title: '在校男女学生比例', // 设置默认标题占好默认高度,使容器内的组件可以正确获得展示高度 initComponent: function () { var me = this; Ext.apply(me, { items: [{ xtype: 'echartsbase', bind: { store: '{studentgender}', }, isEmpty: me.isEmpty, createOption: me.createOption }] }); me.callParent(arguments); }, isEmpty: function (store) { var index = store.findBy(function (s) { return s.get('y') > 0; }); var flag = index == -1; return flag; }, createOption: function (store) { var fields = [], data = []; store.each(function (d) { var d = d.data; if (d.y > 0) { fields.push(d.x); data.push({ value: d.y, name: d.x }); } }); return { color: [ '#77EAF7', '#FD9C8D', ], tooltip: { trigger: 'item', formatter: function (params, ticket, callback) { var name = params.name, value = params.value, marker = params.marker, percent = params.percent; if (name.length > 7) { name = Ext.String.insert(name, '
', 7) } value = school.util.BaseUtil.numberFormat(value, 4, true); return name + '
' + marker + value + ' (' + percent + '%)'; } }, legend: { orient: 'vertical', // left: '70%', // width: '30%', // icon: 'circle', right: '10%', data: fields, // itemWidth: 9, // itemHeight: 9, formatter: function (name) { var cWidth = Ext.getCmp('studentgender').items.items[0].echarts.getWidth() * 0.3, dataCount = fields.length, maxLength = Math.ceil((cWidth / dataCount) / 20); return name.length > maxLength ? name.substring(0, maxLength) + '...' : name; }, }, series: [{ type: 'pie', // radius: ['48%', '88%'], // center: ['35%', '50%'], label: { normal: { show: true, formatter: '{b}: {c}' }, emphasis: { show: false, textStyle: { fontSize: '30', fontWeight: 'bold' } } }, labelLine: { normal: { show: false } }, data: data }] } } });