victory-chart
Version:
Chart Component for Victory
54 lines (46 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _values = require("lodash/values");
var _values2 = _interopRequireDefault(_values);
var _victoryCore = require("victory-core");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
exports.default = {
getSymbol: function getSymbol(data, props) {
if (props.bubbleProperty) {
return "circle";
}
return data.symbol || props.symbol;
},
getBubbleSize: function getBubbleSize(datum, props, calculatedProps) {
var data = calculatedProps.data;
var z = calculatedProps.z;
var getMaxRadius = function getMaxRadius() {
var minPadding = Math.min.apply(Math, _toConsumableArray((0, _values2.default)(_victoryCore.Helpers.getPadding(props))));
return Math.max(minPadding, 5);
};
var zData = data.map(function (point) {
return point.z;
});
var zMin = Math.min.apply(Math, _toConsumableArray(zData));
var zMax = Math.max.apply(Math, _toConsumableArray(zData));
var maxRadius = props.maxBubbleSize || getMaxRadius();
var maxArea = Math.PI * Math.pow(maxRadius, 2);
var area = (datum[z] - zMin) / (zMax - zMin) * maxArea;
var radius = Math.sqrt(area / Math.PI);
return Math.max(radius, 1);
},
getSize: function getSize(data, props, calculatedProps) {
if (data.size) {
return typeof data.size === "function" ? data.size : Math.max(data.size, 1);
} else if (typeof props.size === "function") {
return props.size;
} else if (data[calculatedProps.z]) {
return this.getBubbleSize(data, props, calculatedProps);
} else {
return Math.max(props.size, 1);
}
}
};