我正在使用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 ......)兼容的问题。 有没有人遇到过同样的问题?
答案 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)。它对我有用!