UNPKG

mutants-appfx

Version:

appfx module

461 lines (366 loc) 14.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _set = require('babel-runtime/core-js/set'); var _set2 = _interopRequireDefault(_set); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _class, _temp, _class2, _class3, _temp2; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _Alert = require('mutants-microfx/dist/components/Alert'); var _Alert2 = _interopRequireDefault(_Alert); var _AppManager = require('../AppManager'); var _AppManager2 = _interopRequireDefault(_AppManager); var _UILoading = require('../components/UILoading'); var _UILoading2 = _interopRequireDefault(_UILoading); require('./style.less'); var _eventPath = require('../controllers/eventPath'); var _mutantsMicrofx = require('mutants-microfx'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TemplateView = (_temp = _class = function (_React$Component) { (0, _inherits3.default)(TemplateView, _React$Component); function TemplateView() { (0, _classCallCheck3.default)(this, TemplateView); return (0, _possibleConstructorReturn3.default)(this, (TemplateView.__proto__ || (0, _getPrototypeOf2.default)(TemplateView)).apply(this, arguments)); } (0, _createClass3.default)(TemplateView, [{ key: 'getChildContext', value: function getChildContext() { return { pid: this.props.pid, sysid: this.props.sysid, mid: this.props.mid, id: this.props.id, viewModel: this.props.viewModel, onEvent: this.props.handleEvent, appState: this.props.app.state, display: this.props.pid === this.props.app.pid }; } }, { key: 'render', value: function render() { var props = { pid: this.props.pid, sysid: this.props.sysid, mid: this.props.mid, id: this.props.id, viewModel: this.props.viewModel, onEvent: this.props.handleEvent, appState: this.props.app.state, display: this.props.pid === this.props.app.pid }; return _react2.default.createElement(this.props.view, props); } }]); return TemplateView; }(_react2.default.Component), _class.propTypes = { pid: _propTypes2.default.string.isRequired, sysid: _propTypes2.default.string.isRequired, mid: _propTypes2.default.string.isRequired, id: _propTypes2.default.string, view: _propTypes2.default.func.isRequired, viewModel: _propTypes2.default.object.isRequired, app: _propTypes2.default.object.isRequired, handleEvent: _propTypes2.default.func.isRequired }, _class.childContextTypes = { pid: _propTypes2.default.string, sysid: _propTypes2.default.string, mid: _propTypes2.default.string, id: _propTypes2.default.string, onEvent: _propTypes2.default.func, viewModel: _propTypes2.default.object, appState: _propTypes2.default.object, display: _propTypes2.default.bool }, _temp); var TemplateProvider = (0, _mutantsMicrofx.observer)(_class2 = (_temp2 = _class3 = function (_React$Component2) { (0, _inherits3.default)(TemplateProvider, _React$Component2); (0, _createClass3.default)(TemplateProvider, [{ key: 'openApp', value: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var state, app; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(this.state.sysid === this.sysid && this.state.mid === this.mid && this.state.pid === this.pid)) { _context.next = 2; break; } return _context.abrupt('return'); case 2: this.sysid = this.state.sysid; this.mid = this.state.mid; this.pid = this.state.pid; state = void 0; _UILoading2.default.show(); _context.prev = 7; _context.next = 10; return _AppManager2.default.open(this.props); case 10: app = _context.sent; state = { loading: false, app: app }; _UILoading2.default.destroy(); _context.next = 20; break; case 15: _context.prev = 15; _context.t0 = _context['catch'](7); console.error(_context.t0); state = { error: _context.t0.message, loading: false }; _UILoading2.default.destroy(); case 20: this.setState(state); case 21: case 'end': return _context.stop(); } } }, _callee, this, [[7, 15]]); })); function openApp() { return _ref.apply(this, arguments); } return openApp; }() // static getDerivedStateFromProps(nextProps, prevState) { // if (prevState.sysid != nextProps.sysid || // prevState.mid != nextProps.mid || // (prevState.pid != nextProps.pid)) { // return { // sysid: nextProps.sysid, // mid: nextProps.mid, // pid: nextProps.pid, // loading: true, // error: null, // } // } // return null; // } }]); function TemplateProvider(props) { var _this3 = this; (0, _classCallCheck3.default)(this, TemplateProvider); var _this2 = (0, _possibleConstructorReturn3.default)(this, (TemplateProvider.__proto__ || (0, _getPrototypeOf2.default)(TemplateProvider)).call(this)); _this2.state = { loading: true }; _this2.handleEvent = function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(viewitem, name, args) { var app, eid, action, actions, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, it; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: app = _this2.state.app; if (app) { _context2.next = 3; break; } return _context2.abrupt('return'); case 3: _context2.next = 5; return app.pushEvent(name); case 5: eid = _context2.sent; _context2.prev = 6; // 执行元数据配置的行为 action = viewitem && viewitem[name]; if (!action) { _context2.next = 11; break; } _context2.next = 11; return app.executeAction(action.name, (0, _extends3.default)({}, action.toJS().args, args)); case 11: // 支持controller的eventPath actions = new _set2.default((0, _eventPath.findActions)(app.viewController, name).concat((0, _eventPath.findActions)(app.controller, name))); _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context2.prev = 15; _iterator = (0, _getIterator3.default)(actions); case 17: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context2.next = 24; break; } it = _step.value; _context2.next = 21; return app.executeAction(it, (0, _extends3.default)({}, args)); case 21: _iteratorNormalCompletion = true; _context2.next = 17; break; case 24: _context2.next = 30; break; case 26: _context2.prev = 26; _context2.t0 = _context2['catch'](15); _didIteratorError = true; _iteratorError = _context2.t0; case 30: _context2.prev = 30; _context2.prev = 31; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 33: _context2.prev = 33; if (!_didIteratorError) { _context2.next = 36; break; } throw _iteratorError; case 36: return _context2.finish(33); case 37: return _context2.finish(30); case 38: if (!viewitem) { _context2.next = 41; break; } _context2.next = 41; return app.triggerEvent(viewitem.name + '.' + name, (0, _extends3.default)({}, args)); case 41: _context2.next = 43; return app.popEvent(eid); case 43: _context2.next = 50; break; case 45: _context2.prev = 45; _context2.t1 = _context2['catch'](6); _context2.next = 49; return app.popEvent(eid); case 49: throw _context2.t1; case 50: case 'end': return _context2.stop(); } } }, _callee2, _this3, [[6, 45], [15, 26, 30, 38], [31,, 33, 37]]); })); return function (_x, _x2, _x3) { return _ref2.apply(this, arguments); }; }(); _this2.state.sysid = props.sysid; _this2.state.mid = props.mid; _this2.state.pid = props.pid; return _this2; } (0, _createClass3.default)(TemplateProvider, [{ key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if (this.state.sysid != nextProps.sysid || this.state.mid != nextProps.mid || this.state.pid != nextProps.pid) { this.setState({ sysid: nextProps.sysid, mid: nextProps.mid, pid: nextProps.pid, loading: true, error: null }); } } }, { key: 'componentDidMount', value: function componentDidMount() { this.openApp().catch(function (err) { return console.error(err); }); } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { this.openApp().catch(function (err) { return console.error(err); }); } }, { key: 'render', value: function render() { var _this4 = this; // 加载中保持界面不变,减少闪烁 var app = this.state.app; if (!app) { if (this.state.error) { return _react2.default.createElement(_Alert2.default, { message: this.state.error }); } return null; } // const views = appManager.apps.values().reduce((views, app) => views.concat(app.views.slice().map((it, i) => ({ // ...it, // sysid: app.module.sysid, // mid: app.module.mid, // viewModel: app.viewModels[i].viewModel, // state: app.state.toJS(), // app, // }))), []); // return (<div className='app'> // {this.state.error?<Alert message={this.state.error}/>:null} // {views.map((it)=>{ // return <div key={it.iid} id={it.mid+'_'+it.pid+'_'+it.iid} className='view' style={{display:it.iid===app.iid?'block':'none'}}> // <TemplateView {...it.state} mid={it.mid} sysid={it.sysid} pid={it.pid} app={it.app} id={it.app.loadedId} // viewModel={it.viewModel} view={it.view} // handleEvent={this.handleEvent} /> // </div> // })} // </div>) var views = app.views; return _react2.default.createElement( 'div', { className: 'app' }, this.state.error ? _react2.default.createElement(_Alert2.default, { message: this.state.error }) : null, views.map(function (it, i) { return _react2.default.createElement( 'div', { key: it.pid + '_' + it.iid, id: it.pid + '_' + it.iid, className: 'view', style: { display: it.iid === app.iid ? 'block' : 'none' } }, _react2.default.createElement(TemplateView, (0, _extends3.default)({}, _this4.props, { pid: it.pid, app: app, viewModel: app.viewModels[i].viewModel, view: it.view, handleEvent: _this4.handleEvent })) ); }) ); } }]); return TemplateProvider; }(_react2.default.Component), _class3.propTypes = { pid: _propTypes2.default.string, sysid: _propTypes2.default.string, mid: _propTypes2.default.string.isRequired, id: _propTypes2.default.string }, _temp2)) || _class2; exports.default = TemplateProvider; //# sourceMappingURL=TemplateProvider.js.map