UNPKG

@linkdesign/screen

Version:

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

145 lines (143 loc) 5.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _lodashEs = require("lodash-es"); var _axios = _interopRequireDefault(require("axios")); var _rxjs = require("rxjs"); var _operators = require("rxjs/operators"); 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; } var REQUEST_INTERVAL = 1000 * 60 * 20; /** * 天气查询 * 文档:https://lbs.amap.com/api/webservice/guide/api/weatherinfo * * @param {obj} params * @returns */ function weatherInfo(params) { return (0, _axios["default"])({ method: 'GET', url: '//restapi.amap.com/v3/weather/weatherInfo', params: params }); } /** * 高德天气组件 * * @class Weather * @extends {PureComponent<IProps, IState>} */ var Weather = /*#__PURE__*/function (_PureComponent) { (0, _inheritsLoose2["default"])(Weather, _PureComponent); function Weather(props) { var _this; _this = _PureComponent.call(this, props) || this; _this.subject$ = void 0; _this.timeout = void 0; _this.state = { lives: null }; _this.subject$ = new _rxjs.Subject(); _this.subject$.asObservable().pipe((0, _operators.switchMap)(function () { var prevLives = _this.state.lives; var _this$props = _this.props, params = _this$props.params, onChange = _this$props.onChange; var req = (0, _extends2["default"])({}, params); delete req.interval; var request = _this.getWeather((0, _extends2["default"])({}, req)).then(function (res) { var lives = res ? res[0] : {}; _this.setState({ lives: lives }, function () { if (onChange && !(0, _lodashEs.isEqual)(prevLives, lives)) onChange(lives); _this.timeout = setTimeout(function () { _this.subject$.next(); }, params.interval || REQUEST_INTERVAL); }); })["catch"](function (err) { console.log(err); setTimeout(function () { _this.subject$.next(); }, params.interval || REQUEST_INTERVAL); }); return (0, _rxjs.from)(request); })).subscribe(); return _this; } var _proto = Weather.prototype; _proto.getWeather = /*#__PURE__*/function () { var _getWeather = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(params) { var response; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return weatherInfo(params); case 2: response = _context.sent; if (!(!response || !response.data.status)) { _context.next = 5; break; } return _context.abrupt("return", null); case 5: return _context.abrupt("return", response.data.lives || response.data.forecast); case 6: case "end": return _context.stop(); } }, _callee); })); function getWeather(_x) { return _getWeather.apply(this, arguments); } return getWeather; }(); _proto.componentDidMount = function componentDidMount() { this.subject$.next(); }; _proto.componentDidUpdate = function componentDidUpdate(prevProps) { var params = this.props.params; if (!(0, _lodashEs.isEqual)(prevProps.params, params) && params.city) { this.subject$.next(); } }; _proto.componentWillUnmount = function componentWillUnmount() { clearTimeout(this.timeout); this.subject$.unsubscribe(); }; _proto.render = function render() { var _this$props2 = this.props, className = _this$props2.className, textOptions = _this$props2.textOptions; var lives = this.state.lives; var _ref = lives || {}, weather = _ref.weather, temperature = _ref.temperature; return /*#__PURE__*/_react["default"].createElement(_title["default"], (0, _extends2["default"])({}, textOptions || {}, { className: (0, _classnames["default"])(className, (0, _lodashEs.get)(textOptions, 'className')) }), "\u5929\u6C14\u72B6\u51B5\uFF1A", weather || '-', "\xA0\xA0\u5F53\u524D\u6C14\u6E29\uFF1A", temperature || '-', "\u2103"); }; return Weather; }(_react.PureComponent); // @ts-ignore Weather.defaultProps = { className: null, params: {}, onChange: function onChange() {}, textOptions: { textStyle: { fontWeight: 400 } } }; var _default = exports["default"] = Weather;