4

グラフ フィールドのフィルタリングに問題があります。
いくつかのフィールドを含むチャート パイがあります。
ユーザーはグラフ パイをフィルター処理し、表示するフィールドを選択できます。
問題は、円グラフに 8 つのフィールドがあり、ユーザーが 6 つのフィールドのみを選択した場合、フィルターはデータのみをフィルター処理し、フィールドもフィルター処理しないことです。

たとえば、フィールドがある場合

{name:'Asia','data1':9, sex:'Male'},
{name:'Africa','data1':2, sex:'Male'},
{name:'Europe','data1':5, sex:'Female'},
{name:'USA','data1':3, sex:'Male'},

アジア、アフリカ、ヨーロッパをフィルタリングしたいのですが、米国の名前フィールドがまだ表示されています(データなし)。

コード:

storeIng.filterBy(function(record,id){ 
    var fieldName = record.get('name')
    for(var i = 0; i < fields.length; i++) {
        if (fields[i] === fieldName) 
            return true;
    }
    return false;
}); 

http://i45.tinypic.com/1eq74i.jpgの前にスクリーンショットも追加します http://i45.tinypic.com/1z1zofq.jpgの 後に

4

1 に答える 1

0

あなたはあまりコードを与えていないので、このコードを参照用に試して、どこが間違っているかを確認してください。あなたが書いたfilterBy関数は大丈夫のようです。これは、ストア データのフィルタリングに問題がある場合に、これを読んでいる他の人にも役立ちます。

    Ext.onReady(function(){

var data=[
            {name:'Asia','data1':9, sex:'Male'},
            {name:'Africa','data1':2, sex:'Male'},
            {name:'Europe','data1':5, sex:'Female'},
            {name:'USA','data1':3, sex:'Male'}
        ]

var store = Ext.create('Ext.data.JsonStore', {
fields: ['name', 'data1','sex'],
data:data
              });

              store.filterBy(function(record,id){
if(record.get('name')==="Asia")
    return true;
             })

    Ext.create('Ext.chart.Chart', {
renderTo: Ext.getBody(),
width: 500,
height: 350,
animate: true,
store: store,
theme: 'Base:gradients',
series: [{
    type: 'pie',
    angleField: 'data1',
    showInLegend: true,

    highlight: {
        segment: {
            margin: 20
        }
    },
    label: {
        field: 'name',
        display: 'rotate',
        contrast: true,
        font: '18px Arial'
    }
}]
         });

     });
于 2013-01-14T21:41:23.983 に答える