0

我一直在到处寻找可以帮助我的人,因为我无法展示从我为此目的创建的 JSON 数据存储发送到我的 Sencha 饼图的数据。

我正在显示包含以下值集的变量数组的打印形式的以下结果:

Array ([0] => Array ( [0] => 19 [nombre] => 19 [1] => Chargé de mission [type] => Charge de mission )[1] => Array ( [0] => 204 [nombre] => 204 [1] => Pré-adhérent [type] => Pre-adherent )[2] => Array ( [0] => 1 [nombre] => 1 [1] => Administrateur [type] => Administrateur )[3] => Array ( [0] => 25 [nombre] => 25 [1] => Auto-entrepreneur [type] => Auto-entrepreneur )[4] => Array ( [0] => 1157 [nombre] => 1157 [1] => Adhérent [type] => Adherent )[5] => Array ( [0] => 429 [nombre] => 429 [1] => Salarié [type] => Salarie ))

同时,为了将它发送到我的煎茶派,我使用下面编码的 JSON:

{"success":true,"total":"0","data":[{"0":"19","nombre":"19","1":null,"type":"Charge de mission"},{"0":"204","nombre":"204","1":null,"type":"Pre-adherent"},{"0":"1","nombre":"1","1":"Administrateur","type":"Administrateur"},{"0":"25","nombre":"25","1":"Auto-entrepreneur","type":"Auto-entrepreneur"},{"0":"1157","nombre":"1157","1":null,"type":"Adherent"},{"0":"429","nombre":"429","1":null,"type":"Salarie"}]}

我创建了我的 JSON 存储和饼图,如下所示:

var userStore = new Ext.data.JsonStore({
    url: 'rapport/chartTypeProfils.php',
    fields: [{name:'nombre', type:'int'},'type'],
    root: 'data'
    //totalProperty:'total'
});

userPie = Ext.extend( Ext.ux.Portlet,{
    constructor: function(config) {
        Ext.apply(this, {
            //width: 400,
            height: 300,
            title: 'Utilisateur',
            tools: tools,
            //renderTo: 'user',
            items: {
                itemId: 'userStore',
                store: userStore,
                xtype: 'piechart',
                dataField: 'nombre',
                categoryField: 'type',
                //extra styles get applied to the chart defaults
                extraStyle: {
                    legend: {
                        display: 'left',
                        padding: 5,
                        font: {
                           family: 'Tahoma',
                           size: 13
                        }
                    }
                }
            }
        });
        userPie.superclass.constructor.apply(this, arguments);
    }
});

但是,这不会显示饼图。

4

1 回答 1

0

您使用的是哪个版本的 ExtJS 框架?我找不到关于饼图系列的 , 或 s 属性的任何文档,这让root我觉得您在谈论 Sencha 的其他产品之一(可能是 GXT?)JsonStoredataFieldcategoryField

话虽如此,我想我会使用您提供的数据和 JSFiddle (4.1) 上可用的最新 ExtJS 框架来绘制一个饼图。该示例可以在此处找到:http: //jsfiddle.net/fgX74/(该示例的代码在本文的底部)。

使用您的代码作为起点,这是我为使其正常工作所做的更改:

  • JsonStore的root属性不存在。它当然没有记录,所以我改变了进来的数据以适应。输入的数据现在只是一个对象数组(必须更改您提供的 url 才能以相同格式返回数据)。
  • 我已经摆脱了 portlet 并替换为实际图表。我无权访问该Ext.ux.Portlet对象以扩展它。
  • dataField已被替换angleFieldcategoryField已被替换为labelwhich 允许您定义实际标签中显示的内容。

最后,这是实际的示例代码:

Ext.onReady(function(){    
    var userStore = new Ext.data.JsonStore({
        data: [{"0":"19","nombre":"19","1":null,"type":"Charge de mission"},{"0":"204","nombre":"204","1":null,"type":"Pre-adherent"},{"0":"1","nombre":"1","1":"Administrateur","type":"Administrateur"},{"0":"25","nombre":"25","1":"Auto-entrepreneur","type":"Auto-entrepreneur"},{"0":"1157","nombre":"1157","1":null,"type":"Adherent"},{"0":"429","nombre":"429","1":null,"type":"Salarie"}],
        fields: [{name:'nombre', type:'int'},'type'],
        root: 'data'
    });

    Ext.create('Ext.chart.Chart', {
        renderTo: Ext.getBody(),
        width: 500,
        height: 350,
        animate: true,
        store: userStore,
        series: [{
            type: 'pie',
            angleField: 'nombre',
            showInLegend: true,
            label: {
                field: 'type',
                display: 'rotate',
                contrast: true,
                font: '18px Arial'
            }
        }]
    });
});
于 2013-03-24T18:18:17.720 回答