如果我使用了分组柱形图,感觉我对图表没有足够的控制权,我通过在图表中添加不同的系列来创建我自己的版本。在所有商店之后,系列的数量,它们的颜色等都需要动态设置而不是硬编码。基本上这就是我所拥有的:
chart = Ext.create("Ext.chart.Chart", {
store: dataStore,
axes: dynamicAxes,
series: series
});
我遗漏了一些不太有趣的东西,比如图表的宽度,高度等。 现在我有一个返回一个系列对象的方法。这被添加到上面代码中提到的系列数组中。该函数有一个“item”对象参数,还有一个idx param,它是来自它所来自的数组的item对象的索引,以及一个max param,它是item数组的大小
该函数返回如下内容:
var w = (typeof (max) !== "undefined" && max !== null) ? this._getWidthByMax(max) : 30;
return {
type: "column",
axis = "left",
xField = "timestamp",
yField = item.id, // store field name equals the id of the item object
style = { stroke: colorCode, "stroke-width": (item.isDefault) ? 2 : 1, fill: colorCode },
width = w,
renderer = function (sprite, rec, attr, bix) {
var nx = idx * w;
return Ext.apply(attr, { translation: { x: nx} });
}
}
现在这适用于我想要的列数。那可能是一,二,三......目前最多七个。 但是,如果我想隐藏一个系列,则以下调用不起作用:
chart.series.getAt(idx).hideAll();
虽然如果我将图表渲染为折线图,它确实有效。 这是Ext-js 4中的一个错误,还是因为我为柱形图渲染系列的原因?
答案 0 :(得分:1)
既然没有人回复我的问题而且我在此期间找到了解决方案,我不妨回答我自己的问题......
Ext Js 4.0.7中出现问题。 使用版本4.1 RC 2,hideAll表现正常。
因此,对于任何遇到同样问题的人来说,解决方案是升级到4.1 RC 2或更高版本。