UNPKG

mutants-appfx

Version:

appfx module

421 lines (340 loc) 13.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _defineProperty2 = require('babel-runtime/core-js/object/define-property'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _getOwnPropertyDescriptor = require('babel-runtime/core-js/object/get-own-property-descriptor'); var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _defineProperty4 = require('babel-runtime/helpers/defineProperty'); var _defineProperty5 = _interopRequireDefault(_defineProperty4); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _extends3 = require('babel-runtime/helpers/extends'); var _extends4 = _interopRequireDefault(_extends3); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _desc, _value, _class, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class2, _temp; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _mobx = require('mobx'); var _mutantsMicrofx = require('mutants-microfx'); var _expression = require('../expression'); var _expression2 = _interopRequireDefault(_expression); var _DataProviderManager = require('../DataProviderManager'); var _DataProviderManager2 = _interopRequireDefault(_DataProviderManager); var _UIFunction = require('../UIFunction'); var _UIFunction2 = _interopRequireDefault(_UIFunction); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _initDefineProp(target, property, descriptor, context) { if (!descriptor) return; (0, _defineProperty3.default)(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); } function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object['ke' + 'ys'](descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object['define' + 'Property'](target, property, desc); desc = null; } return desc; } function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.'); } var NoView = function NoView() { return _react2.default.createElement( 'div', null, 'No View!' ); }; var ViewModel = (_class = (_temp = _class2 = function () { (0, _createClass3.default)(ViewModel, [{ key: 'getViewItem', //获取VM value: function getViewItem(viewItemType) { return this.items.find(function (item) { return item.type === viewItemType; }); } }, { key: 'clientType', // 视图状态,例如:只读、新增、修改... // 视图加载的数据集合,data是其中的一行的DM实例 // 用来rules判断view的特征 get: function get() { return _mutantsMicrofx.clientType; } // 视图加载的数据 // 视图对象,比如栏目、滤设、工具条等 // 注意:data是vm的私有变量view不应该使用 }]); function ViewModel(viewType, mid) { (0, _classCallCheck3.default)(this, ViewModel); _initDefineProp(this, 'items', _descriptor, this); _initDefineProp(this, 'list', _descriptor2, this); _initDefineProp(this, 'data', _descriptor3, this); _initDefineProp(this, 'state', _descriptor4, this); this.viewType = viewType; this.mid = mid; } (0, _createClass3.default)(ViewModel, [{ key: 'parseExpr', value: function parseExpr(txt) { return new _expression2.default(txt); } }, { key: 'execExpr', value: function execExpr(expr) { return expr.exec((0, _extends4.default)({}, this.data, { vm: this, uifunction: _UIFunction2.default.get(this.mid) })); } }, { key: 'loadData', value: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(data, list) { return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: this.data = data; this.list = list; case 2: case 'end': return _context.stop(); } } }, _callee, this); })); function loadData(_x, _x2) { return _ref.apply(this, arguments); } return loadData; }() }, { key: 'refresh', value: function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(_ref3) { var sysid = _ref3.sysid, mid = _ref3.mid, pid = _ref3.pid, view = _ref3.view, views = _ref3.views, other = (0, _objectWithoutProperties3.default)(_ref3, ['sysid', 'mid', 'pid', 'view', 'views']); return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return ViewModel.getViewInfo((0, _extends4.default)({ sysid: sysid, mid: mid, pid: pid, view: (views[pid] || view).name }, other), this); case 2: case 'end': return _context2.stop(); } } }, _callee2, this); })); function refresh(_x3) { return _ref2.apply(this, arguments); } return refresh; }() }], [{ key: 'getView', value: function getView(_ref4) { var pid = _ref4.pid, view = _ref4.view, _ref4$views = _ref4.views, views = _ref4$views === undefined ? {} : _ref4$views; var viewTypes = ViewModel.viewTypes.get((views[pid] || view).name); return viewTypes[pid] || viewTypes.index; } }, { key: 'getViewInfo', value: function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(_ref6, vm) { var singles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var sysid = _ref6.sysid, mid = _ref6.mid, pid = _ref6.pid, view = _ref6.view, _ref6$views = _ref6.views, views = _ref6$views === undefined ? {} : _ref6$views, other = (0, _objectWithoutProperties3.default)(_ref6, ['sysid', 'mid', 'pid', 'view', 'views']); var metadata, ViewModels; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return _DataProviderManager2.default.getViewInfo((0, _extends4.default)({ sysid: sysid, mid: mid, pid: pid, view: (views[pid] || view).name }, other)); case 2: metadata = _context3.sent; ViewModels = ViewModel.viewModelTypes.get((views[pid] || view).name) || []; (0, _mobx.runInAction)(function () { vm.items = ViewModels.map(function (VM) { var subVmKey = '$sub_' + VM.name; if (VM.model === 'single' && singles[subVmKey]) { return singles[subVmKey]; } var item = void 0; // 不要给name赋值,name是实例的名字,可以创建多个实例 VM.model._tname = VM.name; if (typeof VM.model.fromJS === 'function') { item = VM.model.fromJS(vm, metadata); } else { item = new VM.model(vm); } if (VM.model === 'single') { singles[subVmKey] = item; } return item; }); }); case 5: case 'end': return _context3.stop(); } } }, _callee3, this); })); function getViewInfo(_x4, _x5) { return _ref5.apply(this, arguments); } return getViewInfo; }() }, { key: 'load', value: function () { var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_ref8, dataModel, listModel, singles) { var mid = _ref8.mid, pid = _ref8.pid, view = _ref8.view, views = _ref8.views, other = (0, _objectWithoutProperties3.default)(_ref8, ['mid', 'pid', 'view', 'views']); var vmKey, exists, vm; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: vmKey = '$vm_' + (views[pid] || view).name; exists = singles[vmKey]; if (!exists) { _context4.next = 4; break; } return _context4.abrupt('return', exists); case 4: vm = new ViewModel((views[pid] || view).name, mid); vm.loadData(dataModel, listModel); _context4.next = 8; return ViewModel.getViewInfo((0, _extends4.default)({ mid: mid, pid: pid, views: views, view: view }, other), vm, singles); case 8: singles[vmKey] = vm; return _context4.abrupt('return', vm); case 10: case 'end': return _context4.stop(); } } }, _callee4, this); })); function load(_x7, _x8, _x9, _x10) { return _ref7.apply(this, arguments); } return load; }() }, { key: 'registerViewModel', value: function registerViewModel(viewKey, View) { ViewModel.viewTypes.set(viewKey, typeof View === 'function' ? { index: { type: View } } : (0, _extends4.default)({ index: View.index || { type: NoView } }, (0, _keys2.default)(View).reduce(function (ret, key) { return (0, _extends4.default)({}, ret, (0, _defineProperty5.default)({}, key, typeof View[key] === 'function' ? { type: View[key] } : View[key])); }, {}))); for (var _len = arguments.length, ViewModels = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { ViewModels[_key - 2] = arguments[_key]; } ViewModel.viewModelTypes.set(viewKey, ViewModels.map(function (it) { if (typeof it === 'function') { return { name: it.name, model: it }; } else { return it; } })); } }]); return ViewModel; }(), _class2.viewTypes = new _map2.default(), _class2.viewModelTypes = new _map2.default(), _temp), (_descriptor = _applyDecoratedDescriptor(_class.prototype, 'items', [_mobx.observable], { enumerable: true, initializer: null }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, 'list', [_mobx.observable], { enumerable: true, initializer: null }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, 'data', [_mobx.observable], { enumerable: true, initializer: null }), _descriptor4 = _applyDecoratedDescriptor(_class.prototype, 'state', [_mobx.observable], { enumerable: true, initializer: null }), _applyDecoratedDescriptor(_class.prototype, 'loadData', [_mobx.action], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'loadData'), _class.prototype)), _class); exports.default = ViewModel; //# sourceMappingURL=index.js.map