Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Данные из store не успевают попадать в chart (https://javascript.ru/forum/extjs/22831-dannye-iz-store-ne-uspevayut-popadat-v-chart.html)

kalya 02.11.2011 14:14

Данные из store не успевают попадать в chart
 
Добрый день всем.
Собственно сабж: обрыл уже весь инет, но проблема упорно не решается.
Мне нужно построить 3 bar chart-a, данные для которых подгружаются ajaxom. Я так понимаю проблема в том, что из-за асинхронности запросов на момент передачи store в chart этот самый store пуст.
вот код для store

var store = new Ext.data.Store({        
        fields: [{name: 'name'}, {name:'data1'}],                
        proxy: { 
            type: 'ajax', 
            url: data_url, 
            reader: 'json'
        },
autoLoad:true
        
    });


вот код для chart

var chart = Ext.create('Ext.chart.Chart', {   
    width: 500,
    height: 300,
    animate: true,
    store: store,
    axes: [{
        type: 'Numeric',
        position: 'bottom',
        fields: ['data1'],
        label: {
            renderer: Ext.util.Format.numberRenderer('0,0')
        },
        title: 'Sample Values',
        grid: true,
        minimum: 0
    }, {
        type: 'Category',
        position: 'left',
        fields: ['name'],
        title: 'Sample Metrics'
    }],
    series: [{
        type: 'bar',
        axis: 'bottom',
        highlight: true,
        tips: {
          trackMouse: true,
          width: 140,
          height: 28,
          renderer: function(storeItem, item) {
            this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data1') + ' views');
          }
        },
        label: {
          display: 'insideEnd',
            field: 'data1',
            renderer: Ext.util.Format.numberRenderer('0'),
            orientation: 'horizontal',
            color: '#333',
            'text-anchor': 'middle'
        },
        xField: 'name',
        yField: ['data1']
    }]
});
          return chart;


Этот код реализован в виде функции ,куда передается url и возвращается сам chart для дальнейшего отображения.

В таком виде графики не рисуются.

Пробовал после определения store писать следующие:
store.on('load', function(){
      //код charta
      return chart;
});

но в таком случае лезут ошибки.
Если в store данные забить жестко , все 3 графика, понятное дело, сразу отображаются.
Товарищи, прошу помощи, так как парюсь уже не один день и никак не получается отобразить графики.


Часовой пояс GMT +3, время: 19:57.