UNPKG

@hackoregon/component-library

Version:

Official repo for Hack Oregon React component library

124 lines (107 loc) 4.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _victory = require("victory"); var _ChartContainer = _interopRequireDefault(require("../ChartContainer")); var _CivicVictoryTheme = _interopRequireDefault(require("../VictoryTheme/CivicVictoryTheme")); var _SimpleLegend = _interopRequireDefault(require("../SimpleLegend")); var _DataChecker = _interopRequireDefault(require("../utils/DataChecker")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } 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 PieChart = function PieChart(props) { var title = props.title, subtitle = props.subtitle, colors = props.colors, data = props.data, dataValue = props.dataValue, dataLabel = props.dataLabel, innerRadius = props.innerRadius, loading = props.loading, error = props.error, halfDoughnut = props.halfDoughnut, useLegend = props.useLegend, width = props.width, height = props.height; var startAngle = halfDoughnut ? -90 : 0; var endAngle = halfDoughnut ? 90 : 360; var adjustedHeight = halfDoughnut ? height / 2 : height; var legendLabels = data.map(function (value) { return { name: value[dataLabel] }; }); var legendProps = {}; if (useLegend) { legendProps.labels = function () { return null; }; legendProps.padding = 25; } return _react["default"].createElement(_ChartContainer["default"], { title: title, subtitle: subtitle, loading: loading, error: error }, _react["default"].createElement(_DataChecker["default"], { dataAccessors: { dataValue: dataValue }, data: data }, useLegend && _react["default"].createElement(_SimpleLegend["default"], { className: "legend", legendData: legendLabels, colorScale: colors }), _react["default"].createElement(_victory.VictoryPie, _extends({ width: width, height: height, data: data, innerRadius: innerRadius, colorScale: colors, theme: _CivicVictoryTheme["default"], animate: { duration: 1000 }, x: dataLabel, y: dataValue, startAngle: startAngle, endAngle: endAngle, labelComponent: _react["default"].createElement(_victory.VictoryLabel, { style: _objectSpread({}, _CivicVictoryTheme["default"].pieLabel.style) }) }, legendProps, { containerComponent: _react["default"].createElement(_victory.VictoryContainer, { height: adjustedHeight, width: width }) })))); }; PieChart.defaultProps = { useLegend: false }; PieChart.propTypes = { colors: _propTypes["default"].arrayOf(_propTypes["default"].string), data: _propTypes["default"].arrayOf(_propTypes["default"].shape({})).isRequired, dataLabel: _propTypes["default"].string, dataValue: _propTypes["default"].string, error: _propTypes["default"].string, halfDoughnut: _propTypes["default"].bool, height: _propTypes["default"].number, innerRadius: _propTypes["default"].number, loading: _propTypes["default"].bool, subtitle: _propTypes["default"].string, title: _propTypes["default"].string, useLegend: _propTypes["default"].bool, width: _propTypes["default"].number }; PieChart.defaultProps = { dataLabel: "x", dataValue: "y" }; var _default = PieChart; exports["default"] = _default;