UNPKG

react-d3-radar

Version:
86 lines (74 loc) 3.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = EmptyRadar; var _react = _interopRequireDefault(require("react")); var _RadarAxis = _interopRequireDefault(require("./RadarAxis")); var _RadarRings = _interopRequireDefault(require("./RadarRings")); var _utils = require("./utils"); 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 defaultRadarStyle = { numRings: 4, axisColor: "#cdcdcd", ringColor: "#cdcdcd" }; function EmptyRadar(props) { var width = props.width, height = props.height, padding = props.padding, variables = props.variables, domainMax = props.domainMax, style = props.style; var _defaultRadarStyle$st = _objectSpread({}, defaultRadarStyle, style), axisColor = _defaultRadarStyle$st.axisColor, ringColor = _defaultRadarStyle$st.ringColor, numRings = _defaultRadarStyle$st.numRings; var innerHeight = height - padding * 2; var innerWidth = width - padding * 2; var radius = Math.min(innerWidth / 2, innerHeight / 2); var diameter = radius * 2; var scales = (0, _utils.radiusScales)(variables, domainMax, radius); var angleSliceRadians = Math.PI * 2 / variables.length; var offsetAngles = {}; (0, _utils.forEachArray)(variables, function (_ref, i) { var key = _ref.key; offsetAngles[key] = angleSliceRadians * i; }); var backgroundScale = scales[variables[0].key]; var ticks = backgroundScale.ticks(numRings).slice(1); var tickFormat = backgroundScale.tickFormat(numRings); return _react.default.createElement("svg", { width: width, height: height }, _react.default.createElement("g", { transform: "translate(".concat(padding, ", ").concat(padding, ")") }, _react.default.createElement("rect", { width: diameter, height: diameter, fill: "transparent", transform: "translate(".concat((innerWidth - diameter) / 2, ", ").concat((innerHeight - diameter) / 2, ")") }), _react.default.createElement("g", { transform: "translate(".concat(innerWidth / 2, ", ").concat(innerHeight / 2, ")") }, _react.default.createElement(_RadarRings.default, { ticks: ticks, scale: backgroundScale, color: ringColor, format: tickFormat }), variables.map(function (_ref2) { var key = _ref2.key, label = _ref2.label; return _react.default.createElement(_RadarAxis.default, { variableKey: key, key: key, scale: scales[key], offsetAngle: offsetAngles[key], label: label, domainMax: domainMax, color: axisColor, textStyle: {} }); })))); }