huqi 5 лет назад
Родитель
Сommit
b7fa9c0ee4

+ 111 - 9
o2web/source/x_component_FindDesigner/FindWorker.js

@@ -118,10 +118,12 @@ _worker._getDesingerModule = function(id, restful, par, moduleType, designerType
     var p = _worker.action.sendRequest(_worker._getRequestOption({"url": restful, "debug": _worker.findData.debug, "token": _worker.findData.token }, par));
     return p.then(function(json){
         list = json.data;
-        list.forEach(function(designer){
+        if (list) list.forEach(function(designer){
             _worker._createFilterOption(moduleType, id, designerType, designer.id)
         });
-    }, function(){});
+    }, function(){
+        return Promise.resolve("");
+    });
 };
 
 _worker._getDesinger_processPlatform = function(id){
@@ -243,7 +245,7 @@ _worker._parseFindModule = function(moduleList){
                 var p = _worker._listApplication(module.moduleType);
                 promiseArr.push(p.then(function(json){
 
-                    json.data.forEach(function(app){
+                    if (json && json.data) json.data.forEach(function(app){
                         var filterOption = JSON.parse(_worker.filterOptionTemplete);
                         filterOption.moduleList.push({
                             "moduleType": module.moduleType,
@@ -260,7 +262,9 @@ _worker._parseFindModule = function(moduleList){
                     //     pArr = pArr.concat(_worker["_getDesinger_"+module.moduleType](app.id));
                     // });
                     // return Promise.all(pArr);
-                }, function(){}));
+                }, function(){
+                    return Promise.resolve("");
+                }));
 
             }else{
                 module.flagList.forEach(function(flag){
@@ -312,6 +316,9 @@ _worker._createFindMessageReplyData = function(module, designer, aliase, pattern
 
 _worker._setFilterOptionRegex = function(){
     var keyword = _worker.findData.filterOption.keyword;
+    keyword = keyword.replace("[", "\\[").replace("]", "\\]").replace("(", "\\(").replace(")", "\\)").replace("{", "\\{").replace("}", "\\}")
+        .replace("^", "\\^").replace("$", "\\$").replace(".", "\\.").replace("?", "\\?").replace("+", "\\+").replace("*", "\\*").replace("|", "\\|");
+
     if (_worker.findData.filterOption.matchRegExp){
         var flag = (_worker.findData.filterOption.caseSensitive) ? "gm" : "gmi";
         this.keywordRegexp =  new RegExp(keyword, flag);
@@ -1076,7 +1083,8 @@ _worker._findProcessPlatformParse_form = function(designer, option, module){
     }
 };
 
-_worker._findProcessPlatformParse_View = function(designer, option, module){
+_worker._findProcessPlatformParse_view = function(designer, option, module){
+    debugger;
     if (designer.patternList && designer.patternList.length){
         if (!this.designerPropertysData) this.designerPropertysData = _worker.action.sendRequest(_worker._getRequestOption({"url": "../x_component_FindDesigner/propertys.json"}));
         var patternPropertys = designer.patternList.map(function(a){return a.property;});
@@ -1119,7 +1127,7 @@ _worker._findProcessPlatformParse_View = function(designer, option, module){
                         });
                     });
                     viewData.actionbarList.forEach(function(item){
-                        item.type = "column";
+                        item.type = "actionbar";
                         item.name =  item.type;
                         Object.keys(item).forEach(function(key){
                             if (key!=="name" && key!=="type"){
@@ -1129,7 +1137,7 @@ _worker._findProcessPlatformParse_View = function(designer, option, module){
                         });
                     });
                     viewData.pagingList.forEach(function(item){
-                        item.type = "column";
+                        item.type = "paging";
                         item.name =  item.type;
                         Object.keys(item).forEach(function(key){
                             if (key!=="name" && key!=="type"){
@@ -1163,6 +1171,97 @@ _worker._findProcessPlatformParse_View = function(designer, option, module){
     }
 }
 
+_worker._findProcessPlatformParse_statement = function(designer, option, module){
+    if (designer.patternList && designer.patternList.length){
+        if (!this.designerPropertysData) this.designerPropertysData = _worker.action.sendRequest(_worker._getRequestOption({"url": "../x_component_FindDesigner/propertys.json"}));
+        var patternPropertys = designer.patternList.map(function(a){return a.property;});
+        if (patternPropertys.indexOf("view")!=-1){
+
+            var p = _worker._getDesignerData(designer, module);
+            if (p) {
+                p.then(function (arr) {
+                    var statementJson = arr[0].data;
+                    this.designerPropertysData = arr[1];
+
+                    if (statementJson.view){
+                        var viewJson = JSON.parse(statementJson.view);
+                        var viewData = viewJson.data;
+                        if (viewData){
+                            viewData.type = "View";
+                            viewData.name = statementJson.name;
+                            Object.keys(viewData).forEach(function(key){
+                                if (key!=="where" && key!=="selectList" && key!=="actionbarList" && key!=="pagingList" && key!=="type" && key!=="name" ){
+                                    var propertyDefinition = this.designerPropertysData.view[key];
+                                    _worker.findInDesignerProperty(key, propertyDefinition, viewData, option, module, designer);
+                                }
+                            });
+
+                            viewData.where.type = "View";
+                            viewData.where.name = viewJson.name;
+                            Object.keys(viewData.where).forEach(function(key){
+                                if ( key!=="type" && key!=="name"){
+                                    var propertyDefinition = this.designerPropertysData.view[key];
+                                    _worker.findInDesignerProperty(key, propertyDefinition, viewData.where, option, module, designer);
+                                }
+                            });
+
+                            viewData.selectList.forEach(function(col){
+                                col.type = "View-column";
+                                col.name =  col.displayName;
+                                Object.keys(col).forEach(function(key){
+                                    if (key!=="name" && key!=="type"){
+                                        var propertyDefinition = this.designerPropertysData.view[key];
+                                        _worker.findInDesignerProperty(key, propertyDefinition, col, option, module, designer);
+                                    }
+                                });
+                            });
+                            viewData.actionbarList.forEach(function(item){
+                                item.type = "View-actionbar";
+                                item.name =  item.type;
+                                Object.keys(item).forEach(function(key){
+                                    if (key!=="name" && key!=="type"){
+                                        var propertyDefinition = this.designerPropertysData.view[key];
+                                        _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer);
+                                    }
+                                });
+                            });
+                            viewData.pagingList.forEach(function(item){
+                                item.type = "View-paging";
+                                item.name =  item.type;
+                                Object.keys(item).forEach(function(key){
+                                    if (key!=="name" && key!=="type"){
+                                        var propertyDefinition = this.designerPropertysData.view[key];
+                                        _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer);
+                                    }
+                                });
+                            });
+
+                        }
+                    }
+                }, function () {
+                });
+            }
+        }else{
+            Promise.resolve(this.designerPropertysData).then(function(data){
+                this.designerPropertysData = data;
+                designer.patternList.forEach(function(pattern){
+                    var propertyDefinition = this.designerPropertysData.statement[pattern.property];
+                    if (propertyDefinition){
+                        _worker._findMessageReply(_worker._createFindMessageReplyData(module, designer, "", {
+                            "type": "Statement",
+                            "propertyType": propertyDefinition.type || "text",
+                            "propertyName": propertyDefinition.name,
+                            "name": designer.designerName,
+                            "key": pattern.property,
+                            "value": pattern.propertyValue
+                        }), option);
+                    }
+                });
+            }, function(){});
+        }
+    }
+};
+
 
 _worker._findProcessPlatformParse_process = function(designer, option, module){
     if (designer.patternList && designer.patternList.length){
@@ -1228,9 +1327,12 @@ _worker._findProcessPlatformParse = function(resultList, option, module){
                 break;
             case "process":
                 _worker._findProcessPlatformParse_process(designer, option, module);
-
+                break;
             case "view":
-                _worker._findProcessPlatformParse_View(designer, option, module);
+                _worker._findProcessPlatformParse_view(designer, option, module);
+                break;
+            case "statement":
+                _worker._findProcessPlatformParse_statement(designer, option, module);
                 break;
         }
     });

+ 138 - 4
o2web/source/x_component_FindDesigner/Main.js

@@ -531,6 +531,7 @@ MWF.xApplication.FindDesigner.Main = new Class({
 			case "page":
 			case "widget":
 			case "view":
+			case "statement":
 				this.createFormPatternNode(data, designerNode, regexp);
 				break;
 			case "process":
@@ -564,7 +565,11 @@ MWF.xApplication.FindDesigner.Main = new Class({
 	createFormPatternNode: function(data, node, regexp){
 		var text = this.lp.elementPattern.replace("{element}", "<"+data.pattern.type+">"+data.pattern.name).
 			replace("{property}", "{"+data.pattern.key+"}"+data.pattern.propertyName);
-		text = "<span style='color: #666666'>"+text+"</span>&nbsp;&nbsp;"
+		text = "<span style='color: #666666'>"+text+"</span>&nbsp;&nbsp;";
+
+		var openScript = function(node){
+			this.openPatternForm(node);
+		}.bind(this);
 
 		if (data.pattern.line){
 			if (data.pattern.evkey){
@@ -579,7 +584,7 @@ MWF.xApplication.FindDesigner.Main = new Class({
 			text = "<b>["+data.pattern.mode+"]</b>&nbsp;"+text;
 		}
 
-		patternNode = this.createResultPatternItem(text, "", node, "icon_"+data.pattern.propertyType+".png");
+		patternNode = this.createResultPatternItem(text, "", node, "icon_"+data.pattern.propertyType+".png", openScript);
 	},
 
 	getPatternValue: function(value, regexp, pattern){
@@ -615,14 +620,140 @@ MWF.xApplication.FindDesigner.Main = new Class({
 		}
 		patternNode.pattern = data;
 	},
+
+	openPatternForm: function(node){
+		var pattern = node.pattern;
+
+		if (this.editor && this.editor.pattern.designerId === node.pattern.designerId && this.editor.pattern.module === node.pattern.module){
+			this.resetFormEditor(node.pattern);
+		}else{
+			if (this.editor){
+				if (this.editor.pattern.designerType === "script"){
+					if (this.scriptDesignerDataObject && this.scriptDesignerDataObject[this.editor.pattern.designerId]){
+						this.scriptDesignerDataObject[this.editor.pattern.designerId].text = this.editor.getValue();
+					}
+				}else{
+					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]){
+						this.designerDataObject[this.editor.pattern.designerId] = this.editor.designerData;
+					}
+				}
+				this.editor.destroy();
+			}
+			this.editor = null;
+			this.previewInforNode.hide().dispose();
+
+			var m;
+			switch (node.pattern.module){
+				case "processPlatform":
+					if (node.pattern.designerType==="form"){
+						m = o2.Actions.load("x_processplatform_assemble_designer").FormAction.get;
+						break;
+					}
+					if (node.pattern.designerType==="process"){
+						m = o2.Actions.load("x_processplatform_assemble_designer").ProcessAction.get;
+						break;
+					}
+					break;
+				case "cms":
+					//m = o2.Actions.load("x_cms_assemble_control").ScriptAction.get;
+					break;
+				case "portal":
+					//m = o2.Actions.load("x_portal_assemble_designer").ScriptAction.get;
+					break;
+				case "service":
+					//m = (node.pattern.appId==="invoke") ? o2.Actions.load("x_program_center").InvokeAction.get : o2.Actions.load("x_program_center").AgentAction.get;
+					break;
+			}
+
+			if (m) this.openPatternFormWithData(m, node);
+
+		}
+
+	},
+	resetFormEditor: function(pattern){},
+	openPatternFormWithData: function(m, node){
+		if (this.designerDataObject && this.designerDataObject[node.pattern.designerId]){
+			this.openPatternFormEditor(this.designerDataObject[node.pattern.designerId], node);
+		}else{
+			if (m) m(node.pattern.designerId).then(function(json){
+				if (!this.designerDataObject) this.designerDataObject = {};
+				this.designerDataObject[node.pattern.designerId] = json.data;
+				if (json.data){
+				} this.openPatternFormEditor(json.data, node);
+			}.bind(this), function(){});
+		}
+	},
+	openPatternFormEditor: function(data, node){
+		switch (node.pattern.propertyType){
+			case "html":
+			case "script":
+			case "css":
+			case "sql":
+				this.openPatternFormEditor_script(data, node);
+				break;
+
+		}
+	},
+
+	openPatternFormEditor_script: function(data, node){
+		var dataStr = (node.pattern.mode=="Mobile") ? data.mobileData : data.data;
+
+		if (dataStr){
+			var formData = JSON.parse(dataStr);
+
+
+		}
+
+
+
+		o2.require("o2.widget.JavascriptEditor", function(){
+			this.editor = new o2.widget.JavascriptEditor(this.previewContentNode, {
+				"option": {
+					"value": data.text,
+					"node": ""
+				}
+			});
+			this.editor.pattern = node.pattern;
+			this.editor.designerNode = node.parentNode;
+			this.editor.designerData = data;
+			this.editor.load(function(){
+				if (this.previewToolbar){
+					this.previewToolbar.childrenButton[0].enable();
+					this.previewToolbar.childrenButton[1].enable();
+				}
+				this.editor.addEvent("change", function(){
+					this.editor.isRefind = true;
+				}.bind(this));
+				this.editor.addEvent("blur", function(){
+					if (this.editor.isRefind) this.reFindInDesigner();
+				}.bind(this));
+				this.editor.addEvent("destroy", function(){
+					this.previewToolbar.childrenButton[0].disable();
+					this.previewToolbar.childrenButton[1].disable();
+				}.bind(this));
+				this.editor.addEvent("save", function(){
+					this.saveDesigner();
+				}.bind(this));
+
+				this.reLocationEditor(node.pattern);
+			}.bind(this));
+		}.bind(this));
+	},
+
 	openPatternScript: function(node){
 		var pattern = node.pattern;
 		if (this.editor && this.editor.pattern.designerId === node.pattern.designerId && this.editor.pattern.module === node.pattern.module){
 			this.reLocationEditor(node.pattern);
 		}else{
 			if (this.editor){
-				if (this.scriptDesignerDataObject && this.scriptDesignerDataObject[this.editor.pattern.designerId]){
-					this.scriptDesignerDataObject[this.editor.pattern.designerId].text = this.editor.getValue();
+				if (this.editor.pattern.designerType === "script"){
+					if (this.scriptDesignerDataObject && this.scriptDesignerDataObject[this.editor.pattern.designerId]){
+						this.scriptDesignerDataObject[this.editor.pattern.designerId].text = this.editor.getValue();
+					}
+				}else{
+					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]){
+						this.designerDataObject[this.editor.pattern.designerId] = this.editor.designerData;
+					}
 				}
 				this.editor.destroy();
 			}
@@ -901,6 +1032,9 @@ MWF.xApplication.FindDesigner.Main = new Class({
 
 	getFilterOptionRegex: function(option){
 		var keyword = option.keyword;
+		keyword = keyword.replace("[", "\\[").replace("]", "\\]").replace("(", "\\(").replace(")", "\\)").replace("{", "\\{").replace("}", "\\}")
+			.replace("^", "\\^").replace("$", "\\$").replace(".", "\\.").replace("?", "\\?").replace("+", "\\+").replace("*", "\\*").replace("|", "\\|");
+
 		if (option.matchRegExp){
 			var flag = (option.caseSensitive) ? "gm" : "gmi";
 			return new RegExp(keyword, flag);

+ 13 - 1
o2web/source/x_component_FindDesigner/propertys.json

@@ -332,6 +332,18 @@
     "nextPageText": {"name": "下一页文本"},
     "firstPageText": {"name": "首页文本"},
     "lastPageText": {"name": "末页文本"},
-    "pagingStyles": {"name": "分页栏样式", "type": "map"}
+    "pagingStyles": {"name": "分页栏样式", "type": "map"},
+
+    "column": {"name": "列名"}
+  },
+  "statement": {
+    "name": {"name": "名称"},
+    "alias": {"name": "别名"},
+    "description": {"name": "描述"},
+
+    "data": {"name": "JPQL语句", "type": "sql"},
+    "scriptText": {"name": "JPQL脚本", "type": "script"},
+    "countData": {"name": "JPQL总数语句", "type": "sql"},
+    "countScriptText": {"name": "JPQL总数脚本", "type": "script"}
   }
 }