我正在重写 Axis 类,并且在大多数情况下它可以工作 - 可以毫无问题地调用新添加的方法。但是,尝试设置默认渲染器无济于事。我还尝试使用 initComponent 和构造函数(使用 this.callParent(arguments) 调用),但无济于事。
Ext.define('Dashboards.overrides.chart.axis.Axis', {
override : 'Ext.chart.axis.Axis',
config : {
maxLabelLength : 15,
numberPrecision : 2
},
abbreviateNumber : function(value, precision) {
var newValue = value;
if (value >= 1000) {
var suffixes = ["", "k", "m", "b","t"];
var suffixNum = Math.floor( (""+value).length/3 );
var shortValue = '';
for (; precision >= 1; precision--) {
shortValue = parseFloat( (suffixNum != 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
var dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g,'');
if (dotLessShortValue.length <= 2) { break; }
}
if (shortValue % 1 != 0) shortNum = shortValue.toFixed(1);
newValue = shortValue+suffixes[suffixNum];
}
return newValue;
},
shortenLabel : function (axis, data, max_length) {
var str = data;
var chart = axis.getChart();
if (str.length > max_length) {
str = str.substring(0, max_length-3)+"...";
}
return str;
},
shorteningRenderer : function (axis, label) {
if (!isNaN(label)) {
return axis.abbreviateNumber(label, this.getNumberPrecision());
} else return shortenLabel (axis, label, maxLabelLength);
},
renderer : this.shorteningRenderer
})