fastlion-amis
Version:
一种MIS页面生成工具
101 lines (100 loc) • 4.58 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.runAction = exports.runActions = exports.getActionByType = exports.registerAction = exports.LoopStatus = void 0;
var tslib_1 = require("tslib");
var helper_1 = require("../utils/helper");
var tpl_1 = require("../utils/tpl");
var tpl_builtin_1 = require("../utils/tpl-builtin");
// 循环动作执行状态
var LoopStatus;
(function (LoopStatus) {
LoopStatus[LoopStatus["NORMAL"] = 0] = "NORMAL";
LoopStatus[LoopStatus["BREAK"] = 1] = "BREAK";
LoopStatus[LoopStatus["CONTINUE"] = 2] = "CONTINUE";
})(LoopStatus = exports.LoopStatus || (exports.LoopStatus = {}));
// 存储 Action 和类型的映射关系,用于后续查找
var ActionTypeMap = {};
// 注册 Action
var registerAction = function (type, action) {
ActionTypeMap[type] = action;
};
exports.registerAction = registerAction;
// 通过类型获取 Action 实例
var getActionByType = function (type) {
return ActionTypeMap[type];
};
exports.getActionByType = getActionByType;
var runActions = function (actions, renderer, event) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var _i, actions_1, actionConfig, actionInstrance;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (!Array.isArray(actions)) {
actions = [actions];
}
_i = 0, actions_1 = actions;
_a.label = 1;
case 1:
if (!(_i < actions_1.length)) return [3 /*break*/, 4];
actionConfig = actions_1[_i];
actionInstrance = (0, exports.getActionByType)(actionConfig.actionType);
// 如果存在指定组件ID,说明是组件专有动作
if (actionConfig.componentId) {
actionInstrance = (0, exports.getActionByType)('component');
}
else if (actionConfig.actionType === 'url' ||
actionConfig.actionType === 'link' ||
actionConfig.actionType === 'jump') {
// 打开页面动作
actionInstrance = (0, exports.getActionByType)('openpage');
}
// 找不到就通过组件专有动作完成
if (!actionInstrance) {
actionInstrance = (0, exports.getActionByType)('component');
}
// 这些节点的子节点运行逻辑由节点内部实现
return [4 /*yield*/, (0, exports.runAction)(actionInstrance, actionConfig, renderer, event)];
case 2:
// 这些节点的子节点运行逻辑由节点内部实现
_a.sent();
if (event.stoped) {
return [3 /*break*/, 4];
}
_a.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4: return [2 /*return*/];
}
});
}); };
exports.runActions = runActions;
// 执行动作,与原有动作处理打通
var runAction = function (actionInstrance, actionConfig, renderer, event) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var mergeData, args;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
mergeData = (0, helper_1.extendObject)(renderer.props.data, {
event: event
});
if (actionConfig.execOn && !(0, tpl_1.evalExpression)(actionConfig.execOn, mergeData)) {
return [2 /*return*/];
}
args = event.data;
if (actionConfig.args) {
args = (0, tpl_builtin_1.dataMapping)(actionConfig.args, mergeData);
}
return [4 /*yield*/, actionInstrance.run((0, tslib_1.__assign)((0, tslib_1.__assign)({}, actionConfig), { args: args }), renderer, event, mergeData)];
case 1:
_a.sent();
// 阻止原有动作执行
actionConfig.preventDefault && event.preventDefault();
// 阻止后续动作执行
actionConfig.stopPropagation && event.stopPropagation();
return [2 /*return*/];
}
});
}); };
exports.runAction = runAction;
//# sourceMappingURL=./actions/Action.js.map
;