【问题标题】:Rendering pie chart using xtype and Ext.create使用 xtype 和 Ext.create 渲染饼图
【发布时间】:2014-02-24 09:27:28
【问题描述】:

我首先尝试使用 xtype 将饼图渲染到具有边框布局的面板的中心区域。代码如下:

{
            xtype:'pie',
            renderTo: Ext.getBody(),
            width: 200,
            height: 150,
            animate: true,
            layout:'fit',
            store: store,
            theme: 'Base:gradients',
            series: [{
                type: 'pie',
                field: 'salary',
                showInLegend: true,
                highlight: {
                  segment: {
                    margin: 20
                  }
                },
                label: {
                    field: 'name',
                    display: 'rotate',
                    contrast: true,
                    font: '18px Arial'
                }
            }]    

}

我收到以下错误:

Uncaught TypeError: Cannot call method 'substring' of undefined 

但是当我采用相同的代码并使用 Ext.create 时,它​​工作正常。

var chart=Ext.create('Ext.chart.Chart', {
renderTo: Ext.getBody(),
width: 200,
height: 150,
animate: true,
layout:'fit',
store: store,
theme: 'Base:gradients',
series: [{
    type: 'pie',
    field: 'salary',
    showInLegend: true,
    highlight: {
      segment: {
        margin: 20
      }
    },
    label: {
        field: 'name',
        display: 'rotate',
        contrast: true,
        font: '18px Arial'
    }
}]    
});

我正在使用图表作为项目。

可能是什么问题?

这里是商店:

var store=Ext.create('Ext.data.Store',{
model:'Layouts.Person',
autoLoad:true,
data:{'items':[
                {'name':'john','empno':'1111','salary':'1234'},
                {'name':'edward','empno':'1212','salary':'2234'},
                {'name':'frank','empno':'1567','salary':'9774'},
                {'name':'michel','empno':'3456','salary':'8932'},
      ]},
proxy:{
    type:'memory',
    reader:{
        type:'json',
        root:'items'
    }
}
});

饼图的xtype是pie:

http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.chart.series.Pie.html

【问题讨论】:

    标签: javascript extjs charts highcharts


    【解决方案1】:

    试试这个代码,它会为你工作。

    {
        xtype:'chart',
        animate: true,
        width: 500,
        height: 300,
        store: store,
        theme: 'Base:gradients',
        series: [{  
            type: 'pie',
            field: 'data1',
            showInLegend: true,
            tips: {
              trackMouse: true,
              width: 140,
              height: 28,
              renderer: function(storeItem, item) {
                //calculate and display percentage on hover
                var total = 0;
                store.each(function(rec) {
                    total += rec.get('data1');
                });
                this.setTitle(storeItem.get('name') + ': ' + Math.round(storeItem.get('data1') / total * 100) + '%');
              }
            },
            highlight: {
              segment: {
                margin: 20
              }
            },
            label: {
                field: 'name',
                display: 'rotate',
                contrast: true,
                font: '18px Arial'
            }
        }]
    }
    

    【讨论】:

    • 交互:['rotate', 'itemhighlight'],在 Extjs-char 中不起作用
    • 这个问题有什么解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多