mutants-appfx
Version:
appfx module
421 lines (340 loc) • 13.4 kB
JavaScript
;
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