UNPKG

tfp

Version:

A Web UI framework for TaskBuilder

401 lines (328 loc) 12.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _TFPStatements = _interopRequireDefault(require("./TFPStatements.js")); var TFPGUIFuncCompiler = /*#__PURE__*/function () { function TFPGUIFuncCompiler() {// (0, _classCallCheck2["default"])(this, TFPGUIFuncCompiler); } (0, _createClass2["default"])(TFPGUIFuncCompiler, [{ key: "getSMTypeInfo", value: function getSMTypeInfo(categoryName, smName) { for (var i = 0; i < _TFPStatements["default"].length; i++) { var category = _TFPStatements["default"][i]; if (category.name == categoryName) { for (var j = 0; j < category.statements.length; j++) { var sm = category.statements[j]; if (sm.name == smName) { return sm; } } break; } } return null; } }, { key: "compile", value: function compile(funcObj) { if (!funcObj || !funcObj.statements || funcObj.statements.length == 0) return ""; var js = ""; for (var i = 0; i < funcObj.statements.length; i++) { js += this.getStatementJs(funcObj.statements[i], "\t"); } //console.log("-----------------------------------"); //console.log(js); return js; } }, { key: "formatStrVar", value: function formatStrVar(str) { var ret = str; var patt = new RegExp("\\{([\\w|.|%|\\u4E00-\\u9FA5]*)\\}", "g"); var result = patt.exec(ret); while (result != null) { var varName = result[0]; varName = varName.substring(1, varName.length - 1); ret = ret.replace("{" + varName + "}", "'+" + varName + "+'"); patt = new RegExp("\\{([\\w|.|%|\\u4E00-\\u9FA5]*)\\}", "g"); result = patt.exec(ret); } return ret; } }, { key: "formatExpress", value: function formatExpress(sm) { var smType = this.getSMTypeInfo(sm.category, sm.type); if (!smType || !smType.format) return ""; var val = smType.format; var patt = new RegExp("\\{([\\w|.|%|\\u4E00-\\u9FA5]*)\\}", "g"); var result = patt.exec(val); while (result != null) { var argName = result[0]; argName = argName.substring(1, argName.length - 1); var argVal = ""; if (sm.inputStatements && sm.inputStatements[argName]) { argVal = this.getStatementJs(sm.inputStatements[argName], "", true); } else if (sm[argName] || sm[argName] == 0) { argVal = sm[argName]; if (typeof argVal == "string" && argVal.indexOf("{") >= 0 && argVal.indexOf("}") > 0) { argVal = this.formatStrVar(argVal); } } val = val.replace("{" + argName + "}", argVal); patt = new RegExp("\\{([\\w|.|%|\\u4E00-\\u9FA5]*)\\}", "g"); result = patt.exec(val); } return val; } }, { key: "getStatementJs", value: function getStatementJs(sm, prefix, isArg) { if (sm.category == "logic") { return this.getLogicStatementJs(sm, prefix, isArg); } else if (sm.category == "component") { return this.getCptStatementJs(sm, prefix, isArg); } else { var js = ""; if (!isArg || sm.statements) js += prefix; js += this.formatExpress(sm); if (!isArg || sm.statements) js += ";\r\n"; return js; } } }, { key: "getLogicStatementJs", value: function getLogicStatementJs(sm, prefix, isArg) { var js = ""; switch (sm.type.toLowerCase()) { case "declare": if (!sm.varName) return ""; js = prefix + "var " + sm.varName; if (sm.inputStatements && sm.inputStatements.defaultVal) { js += " = " + this.getStatementJs(sm.inputStatements.defaultVal, "", true); } else if (sm.defaultVal || sm.defaultVal == 0) { if (sm.varType && (sm.varType.toLowerCase() == "string" || sm.varType.toLowerCase() == "date" && (sm.defaultVal + "").indexOf("Date(") < 0)) { js += " = " + "'" + sm.defaultVal + "'"; } else { js += " = " + sm.defaultVal; } } js += ";\r\n"; break; case "assign": if (!sm.varName) return ""; js = prefix + sm.varName; js += sm.operator ? " " + sm.operator + " " : " = "; if (sm.inputStatements && sm.inputStatements.value) { js += this.getStatementJs(sm.inputStatements.value, "", true); } else if (sm.value || sm.value == 0) { if (sm.varType && (sm.varType.toLowerCase() == "string" || sm.varType.toLowerCase() == "date" && (sm.value + "").indexOf("Date(") < 0)) { js += "'" + sm.value + "'"; } else { js += sm.value; } } js += ";\r\n"; break; case "reference": if (!sm.varName) return ""; js = " " + sm.varName + " "; break; case "if": var condition = sm.condition; if (sm.inputStatements) condition = this.getStatementJs(sm.inputStatements.condition, "", true); js = prefix + "if(" + condition + ") {\r\n"; if (sm.statements) { for (var i = 0; i < sm.statements.length; i++) { js += this.getStatementJs(sm.statements[i], prefix + "\t"); } } js += prefix + "}\r\n"; if (sm.elseIfStatements) { for (var _i = 0; _i < sm.elseIfStatements.length; _i++) { var smElseIf = sm.elseIfStatements[_i]; if (smElseIf.inputStatement) { js = prefix + "else if(" + this.getStatementJs(smElseIf.inputStatement, "", true) + ") {\r\n"; } else { js = prefix + "else if(" + smElseIf.condition + ") {\r\n"; } if (smElseIf.statements) { for (var j = 0; j < smElseIf.statements.length; j++) { js += this.getStatementJs(smElseIf.statements[j], prefix + "\t"); } } js += prefix + "}\r\n"; } } if (sm.elseStatements) { js += prefix + "else {\r\n"; for (var _i2 = 0; _i2 < sm.elseStatements.length; _i2++) { js += this.getStatementJs(sm.elseStatements[_i2], prefix + "\t"); } js += prefix + "}\r\n"; } break; case "iteratearray": var attValJs = sm.arrVar; if (sm.inputStatements && sm.inputStatements.arrVar) attValJs = this.getStatementJs(sm.inputStatements.arrVar, "", true); js = prefix + "for(let " + sm.indexVar + " = " + sm.startIndex + "; " + sm.indexVar + "<" + attValJs + ".length; " + sm.indexVar + "++) {\r\n"; if (sm.statements) { for (var _i3 = 0; _i3 < sm.statements.length; _i3++) { js += this.getStatementJs(sm.statements[_i3], prefix + "\t"); } } js += prefix + "}\r\n"; break; case "iterateobject": var objVarJs = sm.objVar; if (sm.inputStatements && sm.inputStatements.objVar) objVarJs = this.getStatementJs(sm.inputStatements.objVar, "", true); js = prefix + "for(let " + sm.propVar + " in " + objVarJs + ") {\r\n"; if (sm.statements) { for (var _i4 = 0; _i4 < sm.statements.length; _i4++) { js += this.getStatementJs(sm.statements[_i4], prefix + "\t"); } } js += prefix + "}\r\n"; break; case "return": js = prefix + "return"; js += sm.retVal || sm.retVal == 0 ? " " + sm.retVal : ""; js += ";\r\n"; break; case "callFunc": js = this.getCallFuncJs(sm, prefix, isArg); /*if (!sm.funcName) return ""; if(!isArg || sm.statements) js = prefix; js += sm.funcName+ "("; if(sm.args && sm.args.length>0) { for(let i=0;i<args.length;i++) { let arg = args[i]; if(i>0) js += ","; js += " "+((arg || arg==0) ? arg : "null")+""; } } js += ")"; if(sm.statements) { js += " {\r\n"; for (let i = 0; i < sm.statements.length; i++) { js += this.getStatementJs(sm.statements[i], prefix + "\t"); } js += "}\r\n"; } else { if(!isArg) js += ";\r\n"; }*/ break; case "comment": if (!sm.message) return ""; js += prefix + "//" + sm.message + "\r\n"; break; case "custom": if (!sm.content) return ""; if (!isArg) js = prefix; js += sm.content; if (!isArg) js += ";\r\n"; break; default: js += prefix + this.formatExpress(sm) + ";\r\n"; break; } return js; } }, { key: "getCallFuncJs", value: function getCallFuncJs(sm, prefix, isArg) { var js = ""; if (!sm.funcName) return ""; if (!isArg || sm.statements) js = prefix; if (sm.cptId) js += sm.cptId + "."; js += sm.funcName + "("; if (sm.args && sm.args.length > 0) { for (var i = 0; i < sm.args.length; i++) { var arg = sm.args[i]; if (i > 0) js += ", "; var argType = arg.type.toLowerCase(); if ((!arg.value || arg.value == "") && arg.value + "" != "0" && argType != "function") { js += "null"; continue; } if (argType == "int" || argType == "float" || argType == "number" || argType == "bool" || argType == "array" || argType == "object" || argType == "undefined") { js += arg.value; } else if (argType == "px") { var val = arg.value + ""; if (val.indexOf("px") < 0 && val.indexOf("%") < 0) val += "px"; js += val; } else if (argType == "date") { var _val = arg.value + ""; if (arg.value.indexOf("Date(") < 0) { js += "'" + arg.value + "'"; } else { js += arg.value; } } else if (argType == "function") { if (arg.enabled) { js += "function("; if (arg.args) { for (var j = 0; j < arg.args.length; j++) { var funcArg = arg.args[j]; if (j > 0) js += ", "; js += funcArg.value; } } js += ") {\r\n"; if (sm.statements) { for (var _i5 = 0; _i5 < sm.statements.length; _i5++) { js += this.getStatementJs(sm.statements[_i5], prefix + "\t"); } } js += prefix + "}"; } } else { js += "'" + arg.value + "'"; } } } js += ")"; if (!isArg || sm.statements) js += ";\r\n"; return js; } }, { key: "getCptStatementJs", value: function getCptStatementJs(sm, prefix, isArg) { if (!sm.cptId) return ""; var js = ""; switch (sm.type) { case "setAttrGui": if (!sm.attrs) return ""; for (var attrName in sm.attrs) { js += prefix + sm.cptId + ".attr('" + attrName + "', " + sm.attrs[attrName] + ");\r\n"; } break; case "setCssGui": if (!sm.styles) return ""; for (var styleName in sm.styles) { js += prefix + sm.cptId + ".css('" + styleName + "', '" + sm.styles[styleName] + "');\r\n"; } break; case "callCptFunc": js = this.getCallFuncJs(sm, prefix, isArg); break; default: if (!isArg || sm.statements) js += prefix; js += this.formatExpress(sm); if (!isArg || sm.statements) js += ";\r\n"; break; } return js; } }]); return TFPGUIFuncCompiler; }(); exports["default"] = TFPGUIFuncCompiler; if (typeof window != "undefined") { window.guiFuncCompiler = new TFPGUIFuncCompiler(); }