0

レジェンドの更新に問題があるようです

ストア内のデータが変更されると、円グラフは更新されますが、凡例は更新されません。

しかし、インタラクションで [リセット] オプションを使用しているように、円グラフをリセットすると、1 回更新されることに驚きました。

凡例が初めて更新されない正確な問題が何であるかはわかりません。

ストアにハードコード値を使用すると、凡例が最初に更新されました。動的な値の場合、凡例のみが最初に更新されませんでした。

私のコードの一部を参照してください。

    PieChart = new Ext.chart.Chart( {

                               cls: 'pie1',

                               theme: 'Demo',

                               store: store1
                               shadow: true,

                               animate: true,

   legend: {
     position: 'top'

    //  dock: false
},
   interactions: [ {

                   type: 'reset',
                  confirm: true
                  }],


series:
    [ {

        type: 'pie',

        renderer: function(sprite, storeItem, barAttr, m, store11) {

            barAttr.fill = colors1[m % colors1.length];

            return barAttr;

        },

        field: 'data1',

        showInLegend: true,

        highlight: false,

        donut: 15,

        listeners: {

            'labelOverflow': function(label, item) {

                item.useCallout = true;

            }

        },

        callouts: {

            renderer: function(callout, storeItem) {

                callout.label.setAttributes( {

                    text: storeItem.get('Horizontal')

                }, true);

            },

            filter: function() {

                return false;

            },

            box: {

                //no config here.

            },

            lines: {

                'stroke-width': 2,

                offsetFromViz: 10

            },

            label: {

                font: 'italic 14px Arial'

            },

            styles: {

                font: '14px Arial'

            }

        },

        label: {

            field: 'Horizontal',

            display: 'rotate',

            font: '5px Arial'

        }

    }]

何か案は?

4

2 に答える 2

0

Sencha Touch (Charts v1.0.0) でチャートの凡例を更新するには、ストアをロードupdateStore()してコールバックで を実行するだけです。

var updateLegend = function(){
     store.getProxy.url = 'someData.json'; // Omit if new data is from original source.
     store.load({
        callback: function(records, options, success){
            if (success === true){
                var legend = chart.legend;
                legend.view.updateStore();
            }
        }
    });
}
于 2012-08-21T20:18:01.303 に答える
0

データがストアに保存されている間に、次のコードを使用してこれを解決しました

var hrPieChart = hrPanel.items.getAt(0);
            hrPieChart.legend = new Ext.chart.Legend( {
                chart: hrPieChart,
                position: 'top',
                    dock: false
            });
            var fieldNames = [];
            hStore.each(function(rec) {
                fieldNames.push(rec.get('data1'));
            });
            hrPieChart.series.getAt(0).yField = fieldNames;
            hrPieChart.redraw(false);
于 2012-02-13T11:11:38.560 に答える