2

私は 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
})
4

0 に答える 0