Графики ExtJs с осью времени, проблема с обновлением

Я использую Ext4 js для создания диаграмм. Мои диаграммы представляют собой линейные диаграммы, показывающие эволюцию событий во времени, поэтому мои нижние оси — это оси времени:

    {
    type: 'Time',
    position: 'bottom',
    grid: grid,
    fields: 'name',
    title: false,
    dateFormat: 'd/m/y',
    groupBy: 'year,month,day',

    aggregateOp: 'sum',
    label: {
        orientation: 'horizontal',
        rotate: {
            degrees: label_rotation
        }
    }

У меня есть ссылки для изменения масштаба. Щелчок по одной из этих ссылок должен изменить формат даты и параметры группировки. Вот код:

scaleGroups = {
    'DAY': {
    dateFormat: 'd/m/y',
        groupBy: 'year,month,day' 
    },
    'MONTH' :{
            dateFormat: 'M Y',
            groupBy: 'year,month'
    },
    'YEAR' :{
            dateFormat: 'Y',
            groupBy: 'year'
    }
};


function changeChartScale(chart_id, scale) {
    var chart = Ext.getCmp(chart_id);
    var axis = chart.axes.get(1);
    selectedGroup = scaleGroups[scale];
    axis.dateFormat = selectedGroup.dateFormat;
    axis.groupBy = selectedGroup.groupBy;

    chart.redraw();
}

Проблема в том, что при переходе со шкалы на другую, например с дней на месяцы, остаются прежние метки. Итак, строка правильная, но я вижу как метки дня, так и метки месяца.

Кто-нибудь знает, почему?

Заранее спасибо, Сабрина

ОБНОВЛЕНИЕ 06.07.2011. Тот же код на образце HTML-страницы с импортом только этой библиотеки javascript работает.

Возможно, это проблема совместимости с другими библиотеками javascript, которые я использую (Jquery, googlempas...). Кто-нибудь сталкивался с такой же проблемой?


person Sabrina    schedule 01.06.2011    source источник


Ответы (3)


Я нашел обходной путь, поскольку метод chart.redraw() автоматически не перерисовывает масштаб/значения оси.

Установите новый максимум для осей, затем используйте метод axis.drawAxis() перед перерисовкой диаграммы...

Моя диаграмма перерисовывается, когда пользователь сортирует столбец в связанной сетке.

    chart.axes.items[0].fields = [column.dataIndex];
    chart.series.items[0].yField = [column.dataIndex];


    var s = Ext.data.StoreManager.lookup('myStore');
    var max = s.max(column.dataIndex);


    chart.axes.items[0].maximum = max;
    chart.axes.items[0].drawAxis();


    chart.redraw();
person Josh    schedule 30.08.2013

Это ошибка Сенчи!

На их форуме до сих пор нет ответа: http://www.sencha.com/forum/showthread.php?145433-ExtJS-4-chart-store-update-issue

person Jon    schedule 14.04.2012

Кажется, я нашел решение! Просто установите минимальное и максимальное свойство по осям на разумные значения (т.е. в днях установите 31, в месяцах установите 12). Меня устраивает!

person Maurizio    schedule 14.09.2011