Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

146 lines
3.9 KiB

/**
* @class Ext.chart.series.Bar
* @extends Ext.chart.series.StackedCartesian
*
* Creates a Bar or Column Chart (depending on the value of the
* {@link Ext.chart.CartesianChart#flipXY flipXY} config).
*
* @example
* Ext.create({
* xtype: 'cartesian',
* renderTo: document.body,
* width: 600,
* height: 400,
* store: {
* fields: ['name', 'value'],
* data: [{
* name: 'metric one',
* value: 10
* }, {
* name: 'metric two',
* value: 7
* }, {
* name: 'metric three',
* value: 5
* }, {
* name: 'metric four',
* value: 2
* }, {
* name: 'metric five',
* value: 27
* }]
* },
* axes: [{
* type: 'numeric',
* position: 'left',
* title: {
* text: 'Sample Values',
* fontSize: 15
* },
* fields: 'value'
* }, {
* type: 'category',
* position: 'bottom',
* title: {
* text: 'Sample Values',
* fontSize: 15
* },
* fields: 'name'
* }],
* series: {
* type: 'bar',
* subStyle: {
* fill: ['#388FAD'],
* stroke: '#1F6D91'
* },
* xField: 'name',
* yField: 'value'
* }
* });
*/
Ext.define('Ext.chart.series.Bar', {
extend: 'Ext.chart.series.StackedCartesian',
alias: 'series.bar',
type: 'bar',
seriesType: 'barSeries',
requires: [
'Ext.chart.series.sprite.Bar',
'Ext.draw.sprite.Rect'
],
config: {
/**
* @private
* @cfg {Object} itemInstancing Sprite template used for series.
*/
itemInstancing: {
type: 'rect',
fx: {
customDurations: {
x: 0,
y: 0,
width: 0,
height: 0,
radius: 0
}
}
}
},
getItemForPoint: function (x, y) {
if (this.getSprites()) {
var me = this,
chart = me.getChart(),
padding = chart.getInnerPadding(),
isRtl = chart.getInherited().rtl;
// Convert the coordinates because the "items" sprites that draw the bars ignore the chart's InnerPadding.
// See also Ext.chart.series.sprite.Bar.getIndexNearPoint(x,y) regarding the series's vertical coordinate system.
arguments[0] = x + (isRtl ? padding.right : -padding.left);
arguments[1] = y + padding.bottom;
return me.callParent(arguments);
}
},
updateXAxis: function (axis) {
axis.setLabelInSpan(true);
this.callParent(arguments);
},
updateHidden: function (hidden) {
this.callParent(arguments);
this.updateStacked();
},
updateStacked: function (stacked) {
var sprites = this.getSprites(),
ln = sprites.length,
visible = [],
attrs = {}, i;
for (i = 0; i < ln; i++) {
if (!sprites[i].attr.hidden) {
visible.push(sprites[i]);
}
}
ln = visible.length;
if (this.getStacked()) {
attrs.groupCount = 1;
attrs.groupOffset = 0;
for (i = 0; i < ln; i++) {
visible[i].setAttributes(attrs);
}
} else {
attrs.groupCount = visible.length;
for (i = 0; i < ln; i++) {
attrs.groupOffset = i;
visible[i].setAttributes(attrs);
}
}
this.callParent(arguments);
}
});