UNPKG

victory-chart

Version:
165 lines (140 loc) 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _isFunction = require("lodash/isFunction"); var _isFunction2 = _interopRequireDefault(_isFunction); var _includes = require("lodash/includes"); var _includes2 = _interopRequireDefault(_includes); var _without = require("lodash/without"); var _without2 = _interopRequireDefault(_without); var _range = require("lodash/range"); var _range2 = _interopRequireDefault(_range); var _scale = require("../../helpers/scale"); var _scale2 = _interopRequireDefault(_scale); var _axis = require("../../helpers/axis"); var _axis2 = _interopRequireDefault(_axis); var _domain = require("../../helpers/domain"); var _domain2 = _interopRequireDefault(_domain); var _victoryCore = require("victory-core"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { // exposed for use by VictoryChart getDomain: function getDomain(props, axis) { if (axis && axis !== this.getAxis(props)) { return undefined; } if (props.domain) { return props.domain; } else if (props.tickValues) { return _domain2.default.getDomainFromTickValues(props); } return undefined; }, // exposed for use by VictoryChart getAxis: function getAxis(props, flipped) { if (props.orientation) { var vertical = { top: "x", bottom: "x", left: "y", right: "y" }; return vertical[props.orientation]; } var axisType = props.dependentAxis ? "dependent" : "independent"; var flippedAxis = { dependent: "x", independent: "y" }; var normalAxis = { independent: "x", dependent: "y" }; return flipped ? flippedAxis[axisType] : normalAxis[axisType]; }, // exposed for use by VictoryChart getScale: function getScale(props) { var axis = this.getAxis(props); var scale = _scale2.default.getBaseScale(props, axis); var domain = this.getDomain(props) || scale.domain(); scale.range(_victoryCore.Helpers.getRange(props, axis)); scale.domain(domain); return scale; }, getTicks: function getTicks(props, scale) { if (props.tickValues) { if (_axis2.default.stringTicks(props)) { return (0, _range2.default)(1, props.tickValues.length + 1); } return props.tickValues; } else if (scale.ticks && (0, _isFunction2.default)(scale.ticks)) { var ticks = scale.ticks(props.tickCount); if (props.crossAxis) { return (0, _includes2.default)(ticks, 0) ? (0, _without2.default)(ticks, 0) : ticks; } return ticks; } return scale.domain(); }, getTickFormat: function getTickFormat(props, tickProps) { var scale = tickProps.scale; var ticks = tickProps.ticks; if (props.tickFormat && (0, _isFunction2.default)(props.tickFormat)) { return props.tickFormat; } else if (props.tickFormat && Array.isArray(props.tickFormat)) { return function (x, index) { return props.tickFormat[index]; }; } else if (_axis2.default.stringTicks(props)) { return function (x, index) { return props.tickValues[index]; }; } else if (scale.tickFormat && (0, _isFunction2.default)(scale.tickFormat)) { return scale.tickFormat(ticks.length); } else { return function (x) { return x; }; } }, getLabelPadding: function getLabelPadding(props, style) { var labelStyle = style.axisLabel; if (typeof labelStyle.padding !== "undefined" && labelStyle.padding !== null) { return labelStyle.padding; } var isVertical = _axis2.default.isVertical(props); // TODO: magic numbers return props.label ? labelStyle.fontSize * (isVertical ? 2.3 : 1.6) : 0; }, getOffset: function getOffset(props, style) { var padding = _victoryCore.Helpers.getPadding(props); var isVertical = _axis2.default.isVertical(props); var orientation = props.orientation || (props.dependentAxis ? "left" : "bottom"); var labelPadding = this.getLabelPadding(props, style); var xPadding = orientation === "right" ? padding.right : padding.left; var yPadding = orientation === "top" ? padding.top : padding.bottom; var fontSize = style.axisLabel.fontSize; var offsetX = props.offsetX || xPadding; var offsetY = props.offsetY || yPadding; var totalPadding = fontSize + 2 * style.ticks.size + labelPadding; var minimumPadding = 1.2 * fontSize; // TODO: magic numbers var x = isVertical ? totalPadding : minimumPadding; var y = isVertical ? minimumPadding : totalPadding; return { x: offsetX || x, y: offsetY || y }; }, getTransform: function getTransform(props, layoutProps) { var offset = layoutProps.offset; var orientation = layoutProps.orientation; var translate = { top: [0, offset.y], bottom: [0, props.height - offset.y], left: [offset.x, 0], right: [props.width - offset.x, 0] }[orientation]; return "translate(" + translate[0] + ", " + translate[1] + ")"; }, getTickPosition: function getTickPosition(style, orientation, isVertical) { var orientationSign = { top: -1, left: -1, right: 1, bottom: 1 }; var tickSpacing = style.size + style.padding; var sign = orientationSign[orientation]; return { x: isVertical ? sign * tickSpacing : 0, x2: isVertical ? sign * style.size : 0, y: isVertical ? 0 : sign * tickSpacing, y2: isVertical ? 0 : sign * style.size }; } };