Чувствуя, что у меня недостаточно контроля над диаграммой, если я использовал сгруппированную столбцовую диаграмму, я сделал свою собственную версию, просто добавив различные серии на диаграмму.Ведь магазин, количество серий, их цвета и тому подобное нужно устанавливать динамически, а не жестко задавать.Итак, в основном это то, что у меня есть:
chart = Ext.create("Ext.chart.Chart", {
store: dataStore,
axes: dynamicAxes,
series: series
});
Я опускаю неинтересные вещи, такие как ширина, высота графика и т. Д. Теперь у меня есть метод, который возвращает объект серии.Это добавляется в массив серий, упомянутый в коде выше.Функция имеет параметр объекта "item", а также параметр idx, который является индексом объекта item из массива, из которого он получен, и параметр max, равный размеру массива 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 или из-за того, как я рендерил серию для моей гистограммы?