UNPKG

@linkdesign/screen

Version:

屏组件库,但使用场景又不局限于屏。主要用于BI、大盘和屏

119 lines (116 loc) 6.58 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _lodashEs = require("lodash-es"); var _title = _interopRequireDefault(require("../title")); var _context = _interopRequireDefault(require("../context")); var _Utils = require("../Utils"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } /* eslint-disable max-len */ /* eslint-disable @typescript-eslint/restrict-plus-operands */ /** * 条形堆叠占比图 * @param props IProps */ var BarStackChart = function BarStackChart(props) { var _useContext = (0, _react.useContext)(_context["default"]), _cssPrefix = _useContext._cssPrefix; var className = props.className, universalStyle = props.universalStyle, _props$dataSource = props.dataSource, dataSource = _props$dataSource === void 0 ? [] : _props$dataSource, title = props.title, total = props.total, _props$titleOptions = props.titleOptions, titleOptions = _props$titleOptions === void 0 ? {} : _props$titleOptions, _props$normOptions = props.normOptions, normOptions = _props$normOptions === void 0 ? {} : _props$normOptions, _props$barOptions = props.barOptions, barOptions = _props$barOptions === void 0 ? {} : _props$barOptions; var defaultTotal = (0, _lodashEs.get)(props, 'total', (0, _lodashEs.every)(dataSource, function (el) { return (0, _lodashEs.isNumber)(el.value); }) ? (0, _lodashEs.reduce)(dataSource, function (sum, el) { return sum + el.value; }, 0) : total); var barNodes = dataSource.map(function (item, index) { var value = item.value; var color = (0, _lodashEs.get)(item, 'color', "var(--screen-data1-" + (index + 1) + ")"); // DATA_COLORS[index] var tmp; if ((0, _lodashEs.every)(dataSource, function (el) { return (0, _lodashEs.isNumber)(el.value); })) { tmp = value / defaultTotal * 100; } else if ((0, _lodashEs.isString)(value) && value.endsWith('%')) { tmp = value.slice(0, -1); } var rate = (0, _lodashEs.get)(item, 'rate', tmp); return /*#__PURE__*/_react["default"].createElement("div", { key: index, className: _cssPrefix + "bar-stack-chart-bar-inner", style: { backgroundColor: color, width: rate + "%" } }); }); var normNodes = dataSource.map(function (item, index) { var label = item.label, value = item.value; var color = (0, _lodashEs.get)(item, 'color', "var(--screen-data1-" + (index + 1) + ")"); // DATA_COLORS[index] return /*#__PURE__*/_react["default"].createElement("div", { key: index, className: _cssPrefix + "bar-stack-chart-norm", style: { marginBottom: (0, _lodashEs.get)(normOptions, 'lineSpacing') } }, /*#__PURE__*/_react["default"].createElement(_title["default"], (0, _extends2["default"])({}, (0, _lodashEs.get)(normOptions, 'labelOptions', {}), { className: (0, _classnames["default"])(_cssPrefix + "bar-stack-chart-norm-label", (0, _lodashEs.get)(normOptions, 'labelOptions.className')) // `${_cssPrefix}sub-chart-title`, }), (0, _lodashEs.get)(normOptions, 'dots', true) && /*#__PURE__*/_react["default"].createElement("span", { className: _cssPrefix + "bar-stack-chart-norm-label-dot", style: { backgroundColor: color } }), label), /*#__PURE__*/_react["default"].createElement(_title["default"], (0, _extends2["default"])({}, (0, _lodashEs.get)(normOptions, 'valueOptions', { textStyle: { fontFamily: 'HelveticaNeue-CondensedBold' } }), { className: (0, _classnames["default"])(_cssPrefix + "bar-stack-chart-norm-value", (0, _lodashEs.get)(normOptions, 'valueOptions.className')) // `${_cssPrefix}sub-chart-title`, }), value)); }); return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _classnames["default"])(className, _cssPrefix + "bar-stack-chart-wrapper"), style: { width: (0, _lodashEs.get)(universalStyle, 'width'), height: (0, _lodashEs.get)(universalStyle, 'height'), backgroundColor: (0, _lodashEs.get)(universalStyle, 'backgroundColor') } }, title && /*#__PURE__*/_react["default"].createElement(_title["default"], (0, _extends2["default"])({}, titleOptions, { className: (0, _classnames["default"])(_cssPrefix + "bar-stack-chart-title", _cssPrefix + "main-chart-title", (0, _lodashEs.get)(titleOptions, 'className')), align: (0, _lodashEs.get)(titleOptions, 'align', 'left') }), title), /*#__PURE__*/_react["default"].createElement("div", { className: _cssPrefix + "bar-stack-chart-top" }, /*#__PURE__*/_react["default"].createElement("div", { className: _cssPrefix + "bar-stack-chart-top-inner-left" }, (0, _lodashEs.isNumber)(total) ? /*#__PURE__*/_react["default"].createElement("div", { className: _cssPrefix + "data " + _cssPrefix + "bar-stack-chart-total" }, (0, _Utils.NWC)(defaultTotal)) : total), /*#__PURE__*/_react["default"].createElement("div", { className: _cssPrefix + "bar-stack-chart-norm-wrapper", style: { width: (0, _lodashEs.get)(normOptions, 'widthRate', 50) + "%" } }, normNodes)), /*#__PURE__*/_react["default"].createElement("div", { className: _cssPrefix + "bar-stack-chart-bar", style: { backgroundColor: (0, _lodashEs.get)(barOptions, 'backgroundColor', '#112854'), height: (0, _lodashEs.get)(barOptions, 'height', 8), marginTop: (0, _lodashEs.get)(barOptions, 'spacing', 8) } }, barNodes)); }; var _default = exports["default"] = BarStackChart;