react-d3-radar
Version:
React-based Radar chart for D3
80 lines (71 loc) • 2.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = RadarAxis;
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var defaultRadarAxisStyle = {
axisOverreach: 1.1,
labelOverreach: 1.2,
fontSize: 10,
fontFamily: "sans-serif",
textFill: "black",
axisWidth: 2
};
function RadarAxis(props) {
var scale = props.scale,
offsetAngle = props.offsetAngle,
domainMax = props.domainMax,
label = props.label,
color = props.color,
style = props.style,
onAxisLabelClick = props.onAxisLabelClick,
onAxisLabelMouseover = props.onAxisLabelMouseover,
variableKey = props.variableKey,
textStyle = props.textStyle;
var _defaultRadarAxisStyl = _objectSpread({}, defaultRadarAxisStyle, {
style: style
}),
axisOverreach = _defaultRadarAxisStyl.axisOverreach,
labelOverreach = _defaultRadarAxisStyl.labelOverreach,
fontSize = _defaultRadarAxisStyl.fontSize,
fontFamily = _defaultRadarAxisStyl.fontFamily,
textFill = _defaultRadarAxisStyl.textFill,
axisWidth = _defaultRadarAxisStyl.axisWidth;
var xFactor = Math.cos(offsetAngle - Math.PI / 2);
var yFactor = Math.sin(offsetAngle - Math.PI / 2);
var onClick = onAxisLabelClick ? function () {
return onAxisLabelClick({
variableKey: variableKey,
label: label
});
} : null;
var onMouseover = onAxisLabelMouseover ? function () {
return onAxisLabelMouseover({
variableKey: variableKey,
label: label
});
} : null;
return _react.default.createElement("g", null, _react.default.createElement("line", {
x1: 0,
y1: 0,
x2: scale(domainMax * axisOverreach) * xFactor,
y2: scale(domainMax * axisOverreach) * yFactor,
stroke: color,
strokeWidth: axisWidth
}), _react.default.createElement("text", {
x: scale(domainMax * labelOverreach) * xFactor,
y: scale(domainMax * labelOverreach) * yFactor,
fontSize: fontSize,
fontFamily: fontFamily,
fill: textFill,
textAnchor: "middle",
dy: "0.35em",
onClick: onClick,
onMouseOver: onMouseover,
style: textStyle
}, label));
}