import Core from '../core';
import {attrFunc} from '../../modules/util';
import axis from './axis';
import axisDefault from './axisDefault';
import axisX from './axisX';
import axisY from './axisY';
import axisTitle from './axisTitle';
import renderAxis from './renderAxis';
import thickness from './thickness';
const _attrs = {
axis: [],
axisTitles: [],
grid: false,
noAxisOffset: false, //assume that no axis offset
}
/**
* @class RectLinear
* @augments Core
*/
class RectLinear extends Core {
constructor() {
super();
this.setAttrs(_attrs);
}
/**
* @override
*/
offset() {
let offset = super.offset();
offset = Object.assign({}, offset);
let axisSetting = this.axis();
if (!this.noAxisOffset()) {
axisSetting.forEach(function(at) {
offset[at.orient] += at.thickness;
})
}
return offset;
}
}
/**
* set axis titles directly.
* @function
* @example
* rectLinear.axisTitles({target:'x', title: 'custom title X'});
* @param {Object[]} [axisTitles]
* @param {string} axisTitles[].target target scale name of the axis(x|y)
* @param {string} axisTitles[].title title to show
* @param {string} [axisTitles[].field] target field name of the axis
* @return {(axisTitles|RectLinear)}
*/
RectLinear.prototype.axisTitles = attrFunc('axisTitles');
/**
* set and get all axis settings
* @function
* @private
* @return {axisToggle[]}
*/
RectLinear.prototype.axisToggle = attrFunc('axisToggle');
/**
* If grid is specified, sets grid setting and returns the instance itself. If grid is true, shows grids of axes. If grid is not specified, it returns the current grid setting.
* @function
* @param {boolean} [grid=false]
* @return {grid|RectLinear}
*/
RectLinear.prototype.grid = attrFunc('grid');
/**
* If noAxisOffset is specified, sets noAxisOffset setting and returns the instance itself. If noAxisOffset is true, it doens not consider axes during calculating {@link RectLinear#offset offset}. If noAxisOffset is not specified, it returns the current noAxisOffset setting.
* @function
* @private
* @param {boolean} noAxisOffset=fasle
* @return {boolean|RectLinear}
*/
RectLinear.prototype.noAxisOffset = attrFunc('noAxisOffset');
RectLinear.prototype.axis = axis;
RectLinear.prototype.axisX = axisX;
RectLinear.prototype.axisY = axisY;
RectLinear.prototype.axisDefault = axisDefault;
RectLinear.prototype.axisTitle = axisTitle;
RectLinear.prototype.renderAxis = renderAxis;
RectLinear.prototype.thickness = thickness;
export default RectLinear;