tfp
Version:
A Web UI framework for TaskBuilder
401 lines (328 loc) • 12.6 kB
JavaScript
"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();
}