ExtJs图表带有时间轴,更新问题

时间:2011-06-01 15:02:26

标签: charts extjs4

我正在使用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
        }
    }

我有改变比例的链接。 单击其中一个链接应更改dateformat和groupby选项。 代码如下:

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 个答案:

答案 0 :(得分:5)

我找到了一种解决方法,因为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();

答案 1 :(得分:2)

这是Sencha的错误!

在他们的论坛上仍然没有答案: http://www.sencha.com/forum/showthread.php?145433-ExtJS-4-chart-store-update-issue

答案 2 :(得分:1)

我想我找到了解决办法!只需将轴的最小和最大属性设置为合理的值(即:每天设置31,每月设置12)。它对我有用!