📄 formdesigner.js
字号:
} } } /* FormDesigner::createDrags() */ this.deselectAll = function() { for (var i=0;i<self.objects.length;i++) { self.objects[i].deselect(); OAT.Drag.removeAll(self.objects[i].elm); } } /* FormDesigner::deselectAll() */ this.selectObject = function(obj,event) { if (obj.selected) { return; } /* what to do when element gets clicked */ if (event) { if (!event.shiftKey && !event.ctrlKey) { self.deselectAll(); } } obj.select(); self.createDrags(); if (self.selObjs.length > 1) { self.toolbox.showMulti(); } else { self.toolbox.showObject(obj); } } this.addObject = function(form,type,x,y) { /* add object 'type' to form. event at [x, y] */ var coords = OAT.Dom.position(form.div); var obj_x = x - coords[0]; var obj_y = y - coords[1]; var formObj = new OAT.FormObject[type](obj_x,obj_y,1); formObj.form = form; self.objects.push(formObj); form.div.appendChild(formObj.elm); self.deselectAll(); self.selectObject(formObj); var cancelRef = function(event) { event.cancelBubble = true; } OAT.Dom.attach(formObj.elm,"click",function(event){self.selectObject(formObj,event);}); OAT.Dom.attach(formObj.elm,"mousedown",cancelRef); return formObj; } this.alignSelected = function(type) { var extreme = -1; for (var i=0;i<self.objects.length;i++) if (self.objects[i] && self.objects[i].selected) { var e = self.objects[i].elm; var x = e.offsetLeft; var y = e.offsetTop; var w = e.offsetWidth-4; var h = e.offsetHeight-4; switch (type) { case "top": if (extreme == -1 || y < extreme) { extreme = y; } break; case "left": if (extreme == -1 || x < extreme) { extreme = x; } break; case "bottom": if (extreme == -1 || y+h > extreme) { extreme = y+h; } break; case "right": if (extreme == -1 || x+w > extreme) { extreme = x+w; } break; } /* switch */ } for (var i=0;i<self.objects.length;i++) if (self.objects[i] && self.objects[i].selected) { var e = self.objects[i].elm; var w = e.offsetWidth-4; var h = e.offsetHeight-4; switch (type) { case "top": e.style.top = extreme + "px"; break; case "left": e.style.left = extreme + "px"; break; case "bottom": e.style.top = (extreme - h) + "px"; break; case "right": e.style.left = (extreme - w) + "px"; break; } /* switch */ } } /* FormDesigner::alignSelected(type); */ this.loadXML = function(data) { var tmp; var xml = OAT.Xml.getTreeString(data); var root = xml.documentElement; var c = root.getElementsByTagName("connection")[0]; OAT.Xmla.dsn = c.getAttribute("dsn"); OAT.Xmla.endpoint = c.getAttribute("endpoint"); if (c.getAttribute("user")) { OAT.Xmla.user = OAT.Crypto.base64d(c.getAttribute("user")); OAT.Xmla.password = OAT.Crypto.base64d(c.getAttribute("password")); } var forms = root.getElementsByTagName("form"); self.clear({addNav:false}); for (var i=0;i<forms.length;i++) { if (i) { var f = self.addForm({addNav:false}); } else { var f = self.forms[0]; } var fb = f.fieldBinding; if (forms[i].getAttribute("hidden")) { f.hidden = 1; } /* hidden? */ f.empty = parseInt(forms[i].getAttribute("empty")); /* should be emptied with no data? */ f.name = forms[i].getAttribute("name"); /* name */ f.pageSize = parseInt(forms[i].getAttribute("pagesize")); f.cursorType = parseInt(forms[i].getAttribute("cursortype")); var dso = forms[i].getElementsByTagName("datasource")[0]; f.ds.type = parseInt(dso.getAttribute("type")); f.ds.subtype = parseInt(dso.getAttribute("subtype")); f.ds.url = dso.getAttribute("url"); f.ds.service = dso.getAttribute("service"); f.ds.xpath = parseInt(dso.getAttribute("xpath")); var tmp = dso.getElementsByTagName("query")[0]; f.ds.query = OAT.Xml.textValue(tmp); var tmp = dso.getElementsByTagName("inputField"); f.inputFields = []; for (var j=0;j<tmp.length;j++) { f.inputFields.push(OAT.Xml.textValue(tmp[j])); } var tmp = dso.getElementsByTagName("outputField"); f.outputFields = []; for (var j=0;j<tmp.length;j++) { var v = OAT.Xml.textValue(tmp[j]); f.outputFields.push(OAT.Dom.fromSafeXML(v)); } var tmp = dso.getElementsByTagName("selfField"); for (var j=0;j<tmp.length;j++) { fb.selfFields.push(parseInt(OAT.Xml.textValue(tmp[j]))); } var tmp = dso.getElementsByTagName("masterForm"); for (var j=0;j<tmp.length;j++) { var val = OAT.Xml.textValue(tmp[j]); fb.masterForms.push(val); } var tmp = dso.getElementsByTagName("masterField"); for (var j=0;j<tmp.length;j++) { var val = OAT.Xml.textValue(tmp[j]); if (fb.masterForms[j] == "false") { fb.masterFields.push(val == "-1" ? -1 : OAT.Dom.fromSafeXML(val)); } else { fb.masterFields.push(parseInt(val)); } } tmp = forms[i].getElementsByTagName("area")[0]; var attrib = tmp.attributes[0]; f.div.style.color = tmp.getAttribute("fgcolor"); f.div.style.backgroundColor = tmp.getAttribute("bgcolor"); f.div.style.fontSize = tmp.getAttribute("size"); f.div.style.left = tmp.getAttribute("left")+"px"; f.div.style.top = tmp.getAttribute("top")+"px"; f.div.style.width = tmp.getAttribute("width")+"px"; f.div.style.height = tmp.getAttribute("height")+"px"; var objects = forms[i].getElementsByTagName("object"); for (var j=0;j<objects.length;j++) { var type = objects[j].getAttribute("type"); var obj = self.addObject(f,type,0,0); if (obj.userSet) { obj.setValue(objects[j].getAttribute("value")); } obj.loadXML(objects[j]); } var cb = (i==0 ? function(){self.selectForm(self.forms[0]);}:function(){}); f.refresh(cb,false); } /* for all forms */ /* create master links */ for (var i=0;i<self.forms.length;i++) { var f = self.forms[i]; var fb = f.fieldBinding; for (var j=0;j<fb.masterForms.length;j++) { if (fb.masterForms[j] == "false") { fb.masterForms[j] = false; } else { fb.masterForms[j] = self.forms[parseInt(fb.masterForms[j])]; } } } /* create pin links */ for (var i=0;i<self.objects.length;i++) if (self.objects[i].name == "map") { var o = self.objects[i]; var v = o.properties[4].value; if (v == -1) { o.properties[4].value = false; } else { o.properties[4].value = self.forms[v]; } } self.selectForm(self.forms[0]); } /* FormDesigner::loadXML() */ this.toXML = function(xslStr) { var xml = '<?xml version="1.0" ?>\n'; if (xslStr) { xml += xslStr+'\n'; } xml += '<design>\n'; xml += '\t<connection dsn="'+OAT.Xmla.dsn+'" endpoint="'+OAT.Xmla.endpoint+'" '; if ($("options_uid").checked) { xml += 'user="'+OAT.Crypto.base64e(OAT.Xmla.user)+'" password="'+OAT.Crypto.base64e(OAT.Xmla.password)+'"'; } xml += ' showajax="'+($("options_showajax").checked ? 1 : 0)+'" '; xml += ' nocred="'+($("options_nocred").checked ? 1 : 0)+'"></connection>\n'; for (var i=0;i<self.forms.length;i++) { var f = self.forms[i]; var d = f.div; var fb = f.fieldBinding; var tmp = []; for (var j=0;j<fb.masterForms.length;j++) { var index = self.forms.find(fb.masterForms[j]); tmp.push(index != -1 ? index : "false"); } xml += '\t<form name="'+f.name+'" empty="'+f.empty+'" '; xml += ' cursortype="'+f.cursorType+'" pagesize="'+f.pageSize+'" '; if (f.hidden == "1") { xml += 'hidden="1" '; } xml += '>\n'; xml += '\t\t<datasource type="'+f.ds.type+'" subtype="'+f.ds.subtype+'" url="'+f.ds.url+'" '; xml += 'xpath="'+f.ds.xpath+'" service="'+f.ds.service+'" rootelement="'+f.ds.rootElement+'">\n'; xml += '\t\t\t<outputFields>\n'; for (var j=0;j<f.outputFields.length;j++) { xml += '\t\t\t\t<outputField>'+OAT.Dom.toSafeXML(f.outputFields[j])+'</outputField>\n'; } xml += '\t\t\t</outputFields>\n'; xml += '\t\t\t<inputFields>\n'; for (var j=0;j<f.inputFields.length;j++) { xml += '\t\t\t\t<inputField>'+f.inputFields[j]+'</inputField>\n'; } xml += '\t\t\t</inputFields>\n'; xml += '\t\t\t<query>'+f.ds.query+'</query>\n'; xml += '\t\t\t<selfFields>\n'; for (var j=0;j<fb.selfFields.length;j++) { xml += '\t\t\t\t<selfField>'+fb.selfFields[j]+'</selfField>\n'; } xml += '\t\t\t</selfFields>\n'; xml += '\t\t\t<masterFields>\n'; for (var j=0;j<fb.masterFields.length;j++) { xml += '\t\t\t\t<masterField>'+OAT.Dom.toSafeXML(fb.masterFields[j])+'</masterField>\n'; } xml += '\t\t\t</masterFields>\n'; xml += '\t\t\t<masterForms>\n'; for (var j=0;j<tmp.length;j++) { xml += '\t\t\t\t<masterForm>'+tmp[j]+'</masterForm>\n'; } xml += '\t\t\t</masterForms>\n'; xml += '\t\t</datasource>'; var bg = OAT.Dom.style(d,"backgroundColor"); var fg = OAT.Dom.style(d,"color"); var size = OAT.Dom.style(d,"fontSize"); var coords = OAT.Dom.getLT(d); var dims = OAT.Dom.getWH(d); xml += '\t\t<area bgcolor="'+bg+'" fgcolor="'+fg+'" size="'+size+'" '+ 'left="'+coords[0]+'" top="'+coords[1]+'" width="'+dims[0]+'" height="'+dims[1]+'" />\n'; for (var j=0;j<self.objects.length;j++) { if (self.objects[j].form == f) { xml += '\t\t'+self.objects[j].toXML(self)+'\n'; } } xml += '\t</form>\n'; } xml += '</design>\n'; return xml; } /* FormDesigner::toXML(); */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -