ExtJs Графики с временной осью, проблема обновления - PullRequest
5 голосов
/ 01 июня 2011

Я использую 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();
}

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

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

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

ОБНОВЛЕНИЕ 07 /06/2011 : работает тот же код на примере html-страницы, импортирующий только эту библиотеку javascript.

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

Ответы [ 3 ]

5 голосов
/ 30 августа 2013

Я нашел обходной путь, поскольку метод 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();
2 голосов
/ 14 апреля 2012

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

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

1 голос
/ 14 сентября 2011

Я думаю, что нашел исправление!Просто установите минимальные и максимальные свойства по осям на разумные значения (то есть: для дней, установленных 31, для месяцев, установленных 12).У меня это работает!

...