UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

94 lines (93 loc) 4.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoopAction = void 0; var tslib_1 = require("tslib"); var helper_1 = require("../utils/helper"); var Action_1 = require("./Action"); var tpl_builtin_1 = require("../utils/tpl-builtin"); /** * 循环动作 * * @export * @class LoopAction * @implements {Action} */ var LoopAction = /** @class */ (function () { function LoopAction() { } LoopAction.prototype.run = function (action, renderer, event, mergeData) { var _a; return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var loopData, protoData, _i, loopData_1, data, _b, _c, subAction; return (0, tslib_1.__generator)(this, function (_d) { switch (_d.label) { case 0: if (typeof action.loopName !== 'string') { console.warn('loopName 必须是字符串类型'); return [2 /*return*/]; } loopData = (0, tpl_builtin_1.resolveVariable)(action.loopName, mergeData) || []; if (!!loopData) return [3 /*break*/, 1]; console.warn("\u6CA1\u6709\u627E\u5230\u6570\u636E " + action.loopName); return [3 /*break*/, 10]; case 1: if (!!Array.isArray(loopData)) return [3 /*break*/, 2]; console.warn(action.loopName + " \u6570\u636E\u4E0D\u662F\u6570\u7EC4"); return [3 /*break*/, 10]; case 2: if (!((_a = action.children) === null || _a === void 0 ? void 0 : _a.length)) return [3 /*break*/, 10]; protoData = event.data; _i = 0, loopData_1 = loopData; _d.label = 3; case 3: if (!(_i < loopData_1.length)) return [3 /*break*/, 9]; data = loopData_1[_i]; renderer.loopStatus = Action_1.LoopStatus.NORMAL; // 追加逻辑处理中的数据,事件数据优先,用完还要还原 event.setData((0, helper_1.createObject)(event.data, data)); _b = 0, _c = action.children; _d.label = 4; case 4: if (!(_b < _c.length)) return [3 /*break*/, 7]; subAction = _c[_b]; // @ts-ignore if (renderer.loopStatus === Action_1.LoopStatus.CONTINUE) { return [3 /*break*/, 6]; } return [4 /*yield*/, (0, Action_1.runActions)(subAction, renderer, event)]; case 5: _d.sent(); // @ts-ignore if (renderer.loopStatus === Action_1.LoopStatus.BREAK || event.stoped) { // 还原事件数据 event.setData(protoData); return [3 /*break*/, 7]; } _d.label = 6; case 6: _b++; return [3 /*break*/, 4]; case 7: if (event.stoped) { // 还原事件数据 event.setData(protoData); return [3 /*break*/, 9]; } _d.label = 8; case 8: _i++; return [3 /*break*/, 3]; case 9: renderer.loopStatus = Action_1.LoopStatus.NORMAL; event.setData(protoData); _d.label = 10; case 10: return [2 /*return*/]; } }); }); }; return LoopAction; }()); exports.LoopAction = LoopAction; (0, Action_1.registerAction)('loop', new LoopAction()); //# sourceMappingURL=./actions/LoopAction.js.map