UNPKG

@linkdesign/screen

Version:

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

124 lines (123 loc) 5.74 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireWildcard(require("react")); var _dayjs = _interopRequireDefault(require("dayjs")); var _duration = _interopRequireDefault(require("dayjs/plugin/duration")); var _title = _interopRequireDefault(require("../title")); 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; } _dayjs["default"].extend(_duration["default"]); function renderNumberWithUnit(num, unit) { return /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("span", null, num.toString().length < 2 ? "0" + num : num), /*#__PURE__*/_react["default"].createElement("span", null, unit)); } /** * 时间器 * * @class Timer * @extends {PureComponent<IProps, IState>} */ var Timer = /*#__PURE__*/function (_PureComponent) { (0, _inheritsLoose2["default"])(Timer, _PureComponent); function Timer(props) { var _this; _this = _PureComponent.call(this, props) || this; _this.updateTimer = void 0; _this.state = { time: (0, _dayjs["default"])() }; return _this; } var _proto = Timer.prototype; _proto.componentDidMount = function componentDidMount() { this.updateTime(); }; _proto.componentWillUnmount = function componentWillUnmount() { clearTimeout(this.updateTimer); }; _proto.updateTime = function updateTime() { var _this$props = this.props, start = _this$props.start, end = _this$props.end; if (!(start && end)) { this.setState({ time: (0, _dayjs["default"])() }); this.updateTimer = setTimeout(this.updateTime.bind(this), 1000); } }; _proto.processTime = function processTime(a, b) { var start = (0, _dayjs["default"])(a); var end = (0, _dayjs["default"])(b); var diff = end.diff(start); return { diff: diff, days: _dayjs["default"].duration(diff).days(), hours: _dayjs["default"].duration(diff).hours(), minutes: _dayjs["default"].duration(diff).minutes(), seconds: _dayjs["default"].duration(diff).seconds() }; }; _proto.renderFormatTime = function renderFormatTime(obj) { var humanize = this.props.humanize; var days = obj.days, hours = obj.hours, minutes = obj.minutes, seconds = obj.seconds; if (!humanize) { return /*#__PURE__*/_react["default"].createElement("span", null, renderNumberWithUnit(days, '天'), renderNumberWithUnit(hours, '小时'), renderNumberWithUnit(minutes, '分'), renderNumberWithUnit(seconds, '秒')); } if (!days && !hours && !minutes) { return /*#__PURE__*/_react["default"].createElement("span", null, renderNumberWithUnit(seconds, '秒')); } else if (minutes && !days && !hours) { return /*#__PURE__*/_react["default"].createElement("span", null, renderNumberWithUnit(minutes, '分'), renderNumberWithUnit(seconds, '秒')); } else if (hours && !days) { return /*#__PURE__*/_react["default"].createElement("span", null, renderNumberWithUnit(hours, '小时'), renderNumberWithUnit(minutes, '分'), renderNumberWithUnit(seconds, '秒')); } return /*#__PURE__*/_react["default"].createElement("span", null, renderNumberWithUnit(days, '天'), renderNumberWithUnit(hours, '小时'), renderNumberWithUnit(minutes, '分'), renderNumberWithUnit(seconds, '秒')); }; _proto.renderTime = function renderTime() { var _this$props2 = this.props, start = _this$props2.start, end = _this$props2.end, format = _this$props2.format, render = _this$props2.render; var time = this.state.time; if (!start && !end) { var _origin = time.format(format); // 显示当前时间 return render ? render(time, _origin) : _origin; } else if (start && !end) { // 距离此刻的时长 var _obj = this.processTime(start, time); var _origin2 = this.renderFormatTime(_obj); return render ? render(_obj.diff, _origin2) : _origin2; } else if (!start && end) { // 倒计时 var _obj2 = this.processTime(time, end); var _origin3 = this.renderFormatTime(_obj2); return render ? render(_obj2.diff, _origin3) : _origin3; } else { // 时长 var _obj3 = this.processTime(start, end); var _origin4 = this.renderFormatTime(_obj3); return render ? render(_obj3.diff, _origin4) : _origin4; } }; _proto.render = function render() { return /*#__PURE__*/_react["default"].createElement(_title["default"], this.props, this.renderTime()); }; return Timer; }(_react.PureComponent); // @ts-ignore Timer.defaultProps = { className: null, humanize: true, format: 'MM月DD日 HH:mm:ss', align: 'middle', textStyle: { fontWeight: 400 } }; var _default = exports["default"] = Timer;