UNPKG

processmaker-builder

Version:

The gulp task runner for ProcessMaker building

1,144 lines (1,103 loc) 33.6 kB
/* 1.- leer un template - Crear array de posiciones. Cada ID encontrado una posision. (WTF. como encontrar todos los elementos con ID) 2.- accordeonasdasd.... en DIV panel... 3.- * <name campo='nombre' x='11' y='11'> * <name campo='nombre' x='11' y='11'> 4.- arrastrar soltar NO. right click Elementos. i: .xml, .tpl o: .xml, .tpl, .html */ var $a='0123456789ABCDEF'; var $b=function() { $g = $a.split(''); return $g.random()+$g.random()+$g.random()+$g.random()+$g.random()+$g.random(); }; leimnud.Package.Public({ info :{ Class :"maborak", File :"module.dynaform.js", Name :"dynaform", Type :"module", Version :"0.1" }, content :function() { this.tmp = {}; this.make=function(options) { this.options = { template :'default.tpl', sectionName:'section', target :document.body, points :{}, dom :{}, drop :{}, drag :{}, menu :{}, debug :false, editor :{showed:false}, observers:{}, panel :{}, tmp :{}, style:{ section:"#B3B3BF", new_section:{border:'1px solid green',margin:4,minHeight:20}, add_section:{position:'relative',border:'1px solid #B3B3BF',margin:4,minHeight:20} } }.concatMaborak(options || {}); this.db=[]; this.debug = new this.parent.module.debug(this.options.debug || false); this.options.observers['menu'] = new this.parent.pattern.observer(); this.options.target.setStyle({ textAlign:'center' }); this.options.target.append( table =new DOM('table',{align:'center'},{width:'99%'}) ); var tr = table.insertRow(-1); $(tr).append( new DOM('td').append( new DOM('div',{className:'boxTop'}).append( new DOM('div',{className:'a'}), new DOM('div',{className:'b'}), new DOM('div',{className:'c'}) ), new DOM('div',{className:'boxContentNormal',id:"bcn"},{minHeight:this.options.target.clientHeight-70,paddingBottom:20}).append( this.options.dom.body = new DOM('div',{id:'root'},{border:'1px solid '+this.options.style.section,padding:5,minHeight:(this.options.target.clientHeight-80)}) ), new DOM('div',{className:'boxBottom'}).append( new DOM('div',{className:'a'}), new DOM('div',{className:'b'}), new DOM('div',{className:'c'}) ) ) ); // this.options.dom.body = this.options.target; /* this.options.target.append( this.options.dom.body = new DOM('div') );*/ // this.options.dom.header = new DOM('div'); /* this.setStyles(); this.dynas=[]; for(var i=0;i<12;i++) { var d; this.options.dom.header.append( d = new DOM('input',{type:'button',value:i},{backgroundColor:'#'+$b(),width:30,margin:2,border:'1px solid red'}) ); this.dynas.push(d); }*/ this.load({ template:this.options.template, xmlform:this.options.xmlform }); this.buttons_set(); return this; }; this.buttons_set=function() { //alert(this.options.buttons.xml); this.options.buttons.xml.onmouseup=function() { this.show_editor('xml'); //alert(this.options.window.editor) }.extend(this); this.options.buttons.template.onmouseup=function() { this.show_editor('template'); }.extend(this); }; this.show_editor=function(b) { //alert(this.options.editor.selected+":"+b); this.options.window.textarea.value=''; if(this.options.editor.showed===true && this.options.editor.selected==b) { if(b=='xml') { //this.options.buttons.template.disabled=false; //this.options.buttons.xml.disabled=true; this.options.buttons.xml.className="dbo"; this.options.buttons.xml.dv='0'; this.options.buttons.template.dv='0'; this.options.buttons.template.className="dbs"; } else { //this.options.buttons.template.disabled=true; //this.options.buttons.xml.disabled=false; this.options.buttons.xml.dv='0'; this.options.buttons.template.dv='0'; this.options.buttons.xml.className="dbs"; this.options.buttons.template.className="dbo"; } this.options.window.editor.move({y:this.options.sizes.pi}); this.options.editor.showed=false; this.options.editor.selected=b; } else { if(b=='xml') { //this.options.buttons.template.disabled=false; //this.options.buttons.xml.disabled=true; this.options.window.textarea.value=this.xmlform.serialize().sReplace('><','>\n<'); this.options.buttons.xml.dv='1'; this.options.buttons.template.dv='0'; this.options.buttons.xml.className="dbo"; this.options.buttons.template.className="dbs"; } else { this.options.window.textarea.value='b'; //this.options.buttons.template.disabled=true; //this.options.buttons.xml.disabled=false; this.options.buttons.xml.dv='0'; this.options.buttons.template.dv='1'; this.options.buttons.xml.className="dbs"; this.options.buttons.template.className="dbo"; } this.options.window.editor.move({y:this.options.sizes.pv,onFinish:function(){this.options.window.textarea.focus();}.extend(this)}); this.options.editor.showed=true; this.options.editor.selected=b; } }; this.setStyles=function() { /* this.options.dom.actions.setStyle({ border:'1px solid red', position:'absolute', width:200, height:400 }); this.options.dom.header.setStyle({ border:'1px solid red', position:'relative', top:100, left:250, width:300, height:100 });*/ this.options.dom.body.setStyle({ border:'1px solid red', position:'relative', top:0, left:250, width:600, height:400 }); }; this.load=function(options) { options = { template:"empty.tpl", xmlform:"empty.xml" }.concatMaborak(options || {}); var r = new this.parent.module.rpc.xmlhttp({ url:options.template }); r.callback=function(rpc){ this.xmlform = new this.parent.module.xmlform(); this.xmlform.make({ file :options.xmlform, target :this.options.target_info, debug :this.options.debug, onload :function(){ this.editor(); this.xmlform.tag_edit(this.xmlform.show_dyna(),'dyna_root'); this.parse_elements(); }.extend(this) }); this.build({ template:rpc.xmlhttp.responseText }); }.extend(this); r.make(); }; this.editor=function() { var e =$dce("div",{innerHTML:"asd"},{height:100,width:1212,backgroundColor:"red",position:'absolute',zIndex:123123,top:0}); document.body.appendChild(e); }; this.build=function(o) { this.options.dom.body.innerHTML=o.template; //this.options.dom.body.append(this.options.dom.header); var t = this.tplFirstChild(); this.tplSetPoints({ html:t }); this.tplSetDropables(); this.menu_root = new this.parent.module.app.menuRight(); this.options.observers['menu'].register(this.menu_root.remove,this.menu_root); this.menu_root.make({ target:this.options.dom.body, width:201, theme:'light', menu:[ {text:'New Dynaform',launch:function(){}}, {text:'New Section',launch:this.add_section.args(this.options.dom.body)}, {text:'Save Dynaform',launch:function(){}}, {separator:true}, {text:'Edit XML',launch:function(){this.show_editor('xml');}.extend(this)}, {text:'Edit Template',launch:function(){this.show_editor('template');}.extend(this)} ] }); }; this.tplFirstChild=function() { //return this.options.dom.body.firstChild; return this.options.dom.body; }; this.tplSetPoints=function(o) { var t = o.html; var c = t.childNodes.length || 0; //alert(o.html.childNodes) for(var i=0;i<c;i++) { var e = $(t.childNodes[i]); var p = this.isPoint(e); if(p) { if(e.parentNode.id!='root') { /*e.parentNode.setStyle({ border:"1px dashed #EEE" });*/ } e.setStyle({ position:'relative', border:"1px solid "+this.options.style.section, margin:4, marginTop:((e.parentNode.id!='root')?4:0), minHeight:20 }); this.options.points[p]=e; } if(e.childNodes && e.childNodes.length >0) { this.tplSetPoints({ html:e }); } } }; this.isPoint=function(e) { if(e[this.options.sectionName]){ return e[this.options.sectionName]; } if(e.attributes) { for(var i=0;i<e.attributes.length;i++) { if(e.attributes[i].nodeName==this.options.sectionName) { return e.attributes[i].nodeValue; } } return false; } else { return false; } }; this.tpl_default=function() { return this.options.points.get_by_key(0,true); }; this.tplSetDropables=function() { this.options.drop['groups'] = new this.parent.module.drop().make(); var obj = this.options.points; for (var i in obj) { if(obj.propertyIsEnumerable(i)) { var dom = obj[i]; //dom.style.border="1px solid transparent"; this.options.drop['groups'].register({ element:dom, value:i, events:{ over:function(dom) { dom.style.border="1px dashed red"; }.extend(this,dom), out:function(dom) { dom.style.border="1px solid "+this.options.style.section; }.extend(this,dom) }}); //alert(dom.group); this.menu.group(dom); } } this.options.drop['groups'].setArrayPositions(true); }; this.isset_tagName=function(n) { return (this.xmlform.xml.getElementsByTagName(n).length>0)?true:false; //return "Element_"+(new Date().getTime()); }; this.unique_name=function() { return "Element_"+(new Date().getTime()); }; this.menu={ /** * Menu para Grupos (points) */ group:function(dom) { var menu = new this.parent.module.app.menuRight(); menu.make({ target:dom, width:150, theme:'light', //menu:this.group.elements.concatMaborak( menu:[ {text:'Add element',launch:function(evt,g){ //alert(evt+":"+g) this.options.panel.add=new this.parent.module.panel(); this.options.panel.add.options={ title:"Add element", size:{w:400,h:350}, position:{center:true}, statusBarButtons:[ {value:'Create'}, {value:'Cancel'} ], fx:{modal:true} }; this.options.panel.add.make(); var a = { textAlign:'right', font:'normal 8pt Tahoma,sans-serif' }; var b = { textAlign:'left', font:'normal 8pt Tahoma,sans-serif' }; this.options.panel.add.addContent( new DOM('table',{align:'center',cellPadding:2},{width:'100%',margin:0}).append( new DOM('tbody').append( new DOM('tr').append( new DOM('td',{},{width:'30%'}).append( new DOM('div',{innerHTML:'Type:'},a) ), new DOM('td',{},{width:'70%'}).append( new DOM('div',{},b).append( this.tmp.t = this.dynaform_dom_types() ) ) ), new DOM('tr').append( new DOM('td').append( new DOM('div',{innerHTML:'Name:'},a) ), new DOM('td').append( new DOM('div',{},b).append( this.tmp.n = new input({label:this.unique_name()},{},{style:{width:'70%'}}) ) ) ), new DOM('tr').append( new DOM('td').append( new DOM('div',{innerHTML:'NodeValue:'},a) ), new DOM('td').append( new DOM('div',{},b).append( this.tmp.v = new input({},{},{style:{width:'70%'}}) ) ) ), new DOM('tr').append( new DOM('td',{colSpan:2}).append( new DOM('div',{},a).append( new DOM('fieldset',{},{border:'1px solid #B3B3BF'}).append( new DOM('legend',{innerHTML:'Properties'}), this.tmp.p = new DOM('div').append(this.dynaform_dom_properties()) ) ) ) ) ) ) ); this.tmp.g = window.event?evt:g; this.options.panel.add.elements.statusBarButtons[0].onmouseup=function() { if(this.tmp.n.value.trim()=='' || !this.tmp.n.value.isAlphaUS() || this.isset_tagName(this.tmp.n.value)) { this.tmp.n.failed(); return false; } else { this.tmp.n.passed(); var a = {}; for(var i=0;i<this.tmp.pr.length;i++) { a[this.tmp.pr[i].name]=this.tmp.pr[i].value; } //alert(this.tmp.p.length); this.add_element(this.tmp.n.value.trim(),true,{group:this.tmp.g,type:this.tmp.t.value}.concatMaborak(a)); this.options.panel.add.remove(); } //alert(this.tmp.t.value+":"+this.tmp.n.value+":"+this.tmp.v.value) }.extend(this); this.options.panel.add.elements.statusBarButtons[1].onmouseup=this.options.panel.add.remove; /*g = window.event?evt:g; this.add_element(this.unique_name(),true,{group:g,type:"other",ufo:7676});*/ }.extend(this,this.isPoint(dom))}, {text:'New section',launch:this.add_section.args(dom)}, {separator:true}, {text:'Delete element',launch:function(){}} ] }); this.options.observers['menu'].register(menu.remove,menu); }, /** * Menu Principal */ principal:function(dom) { } }.expand(this); this.group={ elements:[ {text:'New Element',launch:function(){ //console.log(this) }.extend(this)}, ] }; this.parse_elements=function() { //alert(this.xmlform.db.length) for(var i=0;i<this.xmlform.db.length;i++) { this.add_element(this.get_xml_parsed_from_uid(i)); //this.debug.log(e); } }; this.get_xml_parsed_from_uid=function(db_uid) { var e = { type:'other', group:this.tpl_default() }.concatMaborak(this.xmlform.tag_attributes_to_object(this.xmlform.db[db_uid])); //console.log(e); return e; }; this.add_section=function(e,d) { //d.setStyle({border:"1px solid "+this.options.style.section}); this.tmp.sh = this.add_section_shadow(d); this.tmp.pn = new this.parent.module.panel(); this.tmp.pn.options={ title:"New section", size:{ w:200, h:250 }, control:{close:false}, statusBarButtons:[ {value:'Create'}, {value:'Cancel'} ], position:{center:true}, fx:{/*modal:true*/} }; this.tmp.pn.make(); var a = { textAlign:'right', font:'normal 8pt Tahoma,sans-serif' }; var b = { textAlign:'left', font:'normal 8pt Tahoma,sans-serif' }; this.tmp.pn.addContent( new DOM('table',{align:'center',cellPadding:2},{width:'100%',margin:0}).append( new DOM('tbody').append( new DOM('tr').append( new DOM('td',{},{width:'50%'}).append( new DOM('div',{innerHTML:'Columns:'},a) ), new DOM('td',{},{width:'50%'}).append( new DOM('div',{},b).append( this.tmp.c = new DOM('select',{onchange:function(){ this.tmp.p.innerHTML=''; this.tmp.p.append(this.dynaform_dom_section_names()); }.extend(this)} ).append( new DOM('option',{value:1,text:1}), new DOM('option',{value:2,text:2}), new DOM('option',{value:3,text:3}), new DOM('option',{value:4,text:4}) ) ) ) ), new DOM('tr').append( new DOM('td',{colSpan:2}).append( new DOM('div',{},a).append( new DOM('fieldset',{},{border:'1px solid #B3B3BF'}).append( new DOM('legend',{innerHTML:'Labels'}), this.tmp.p = new DOM('div').append(this.dynaform_dom_section_names()) ) ) ) ) ) ) ); this.tmp.pn.elements.statusBarButtons[1].onmouseup=function(){ this.tmp.sh.remove(); if(this.tmp.sh_root) { this.tmp.sh_root.setStyle({border:'0px solid red'}); this.tmp.sh_root=false; } this.tmp.pn.remove(); }.extend(this); this.tmp.pn.elements.statusBarButtons[0].onmouseup=function() { var s = []; var r = true; for(var i=0;i<this.tmp.pr.length;i++) { var v = this.tmp.pr[i].value; if(v.trim()=='' || !v.isAlphaUS() || this.options.points[v] || s.inArray(v)) { this.tmp.pr[i].failed(); r = false; } else { this.tmp.pr[i].passed(); s.push(v); } } if(r) { var w = 100/s.length; var __t; this.tmp.sh.replace( new DOM('table',{},{width:"100%"}).append( new DOM('tbody').append( __t = new DOM('tr') ) ) ); var e = []; for(var i=0;i<s.length;i++) { var s_; __t.append( new DOM('td',{},{width:(w+"%")}).append( s_ = new DOM('div',{section:s[i]},this.options.style.add_section) ) ) this.options.points[s[i]]=s_; } this.tplSetDropables(); this.tmp.pn.remove(); if(this.tmp.sh_root) { this.tmp.sh_root.setStyle({border:'0px solid red'}); this.tmp.sh_root=false; } } /*this.tmp.n.passed(); var a = {}; for(var i=0;i<this.tmp.pr.length;i++) { a[this.tmp.pr[i].name]=this.tmp.pr[i].value; } //alert(this.tmp.p.length); this.add_element(this.tmp.n.value.trim(),true,{group:this.tmp.g,type:this.tmp.t.value}.concatMaborak(a)); this.options.panel.add.remove();*/ //alert(this.tmp.t.value+":"+this.tmp.n.value+":"+this.tmp.v.value) }.extend(this); }; this.add_section_shadow=function(t) { var s; if(t.id=='root') { t.append( s = new DOM('div',{},this.options.style.new_section) ); } else { this.tmp.sh_root =t.parentNode; this.tmp.sh_root.setStyle({border:'1px solid red'}); t.parentNode.append( s = new DOM('div',{},this.options.style.new_section) ); } return s; }; this.add_element=function(e,ne,at,o) { if(ne===true) { this.xmlform.add(e,at,o || {}); e = at.concatMaborak({nodeName:e}); } e.group=(this.options.points.isset_key(e.group))?e.group:this.tpl_default(); //console.info(e) var d = this.dynaform_dom[((this.dynaform_dom.isset_key(e.type))?e.type:'other')](e); pd = d.dom; pd.setStyle({ margin:3, border:'1px solid #EEE', font:'normal 8pt Tahoma,MiscFixed', padding:5 }); pd.onmousedown=function(evt,db_uid) { var event = window.event || evt; var t = this.xmlform.db[db_uid]; var d = this.db[db_uid]; this.down_time = new Date().getTime(); if(this.inDragProcess===true) { return false; } if(this.phantom_static) { this.phantom_static.remove(); } if(event.ctrlKey) { this.reorder_element(event,db_uid); } else if(event.shiftKey) { this.options.drop.groups.setArrayPositions(); this.reorder_element_group(event,db_uid); } else { } d.setStyle({ border:'1px solid orange' }); try{ if(this.xmlform.current_edit!==db_uid){ this.db[this.xmlform.current_edit].setStyle({ border:'1px solid #EEE' }); } } catch(e){ } this.xmlform.tag_edit(t,db_uid,this.sync_xml_node.args(db_uid)); return false; }.extend(this,d.db_uid,e.group); pd.onmouseup=function(event,db_uid){ return false; }.extend(this,d.db_uid); pd.onmouseover=function(event,db_uid){ var d = this.db[db_uid]; if(this.xmlform.current_edit!==db_uid) { d.setStyle({border:'1px solid orange'}); var event = window.event || event; if(event.ctrlKey) { d.setStyle({cursor:'move'}); } } }.extend(this,d.db_uid); pd.onmouseout=function(event,db_uid){ var d = this.db[db_uid]; if(this.xmlform.current_edit!==db_uid) { d.setStyle({border:'1px solid #EEE',cursor:'default'}); } }.extend(this,d.db_uid); }; this.remove_element=function(db_uid) { this.db[db_uid].remove(); }; this.reorder_element_group=function(event,db_uid) { this.inDragProcess=true; // alert([arguments[0],arguments[1],arguments[2]]); var t = this.xmlform.db[db_uid]; var d = this.db[db_uid]; //var j = this.parent.dom.position(d,false,'bcn'); var st = this.options.target.scrollTop; var sl = this.options.target.scrollLeft; var j = this.parent.dom.mouse(event); this.options.dom.body.append( this.phantom_static = new DOM('div',{},{ position:"absolute", width :d.clientWidth, height :d.clientHeight, border :"1px solid orange", backgroundColor :"orange", top :(j.y-35)+st, left :(j.x-40)+sl }).opacity(40) ); // this.setImageAddRow(this.key_in_group(db_uid)); this.options.drag.phantom = new this.parent.module.drag({ elements:this.phantom_static, limitbox:this.options.dom.body }); this.options.drag.phantom.events={ move :this.options.drop.groups.captureFromArray.args(this.options.drag.phantom,false,true), finish :this.drag_elements_group_onfinish.args(db_uid) }; this.options.drag.phantom.make(); this.options.drag.phantom.onInit(event,0); //return false; return false; }; this.reorder_element=function(event,db_uid) { var ctime = new Date().getTime(); this.inDragProcess=true; // alert([arguments[0],arguments[1],arguments[2]]); var t = this.xmlform.db[db_uid]; var d = this.db[db_uid]; var j = this.parent.dom.position(d,false,true); this.options.points[d.group].append( this.phantom_static = new DOM('div',{},{ position:"absolute", width :d.clientWidth, height :d.clientHeight, border :"1px solid orange", backgroundColor :"orange", top :j.y, left :j.x }).opacity(40), this.imageAddRow = new DOM('img',{ src:this.parent.info.images+"nr.gif" }) ); this.options.drop.elements = new this.parent.module.drop(); this.options.drop.elements.make(); this.register_elements_drop(d.group); this.setImageAddRow(this.key_in_group(db_uid)); this.options.drag.phantom = new this.parent.module.drag({ elements:this.phantom_static, limit:"x", limitbox:this.options.points[d.group] }); this.options.drag.phantom.events={ move :this.options.drop.elements.captureFromArray.args(this.options.drag.phantom,false,true), finish :this.drag_elements_onfinish.args(db_uid) }; this.options.drag.phantom.make(); this.options.drag.phantom.onInit(event,0); //return false; return false; }; this.sync_xml_node=function(data,db_uid) { var cd = this.xmlform.current_xml_edit.save('object'); this.xmlform.sync_node(db_uid,cd); this.sync_dom(db_uid,cd); }; this.sync_dom=function(db_uid,obj) { }; this.register_groups_drop=function(group) { }; this.register_elements_drop=function(group) { for(var i=0;i<this.db.length;i++) { if(this.db[i].group==group) { var c = this.db[i].db_uid; this.options.drop.elements.register({ element : this.db[i], value : i, events : { over:function(i) { //this.setImageAddRow(this.drop.lastSelected); if(this.options.drop.elements.selected!==false) { this.setImageAddRow(this.options.drop.elements.selected); } }.extend(this,c), out :function(i) { /*if(this.drop.selected===false) { var uid=this.drop.arrayPositions.length-1; if(this.drop.position.y > this.drop.arrayPositions[uid].y2) { this.setImageAddRow(uid,true); } }*/ }.extend(this,c) } }); } } this.options.drop.elements.setArrayPositions(true); }; this.setImageAddRow=function(drop_uid,last) { this.imageAddRow.setStyle({ position:"absolute", zIndex :100, top:((last)?this.options.drop.elements.arrayPositions[drop_uid].y2:this.options.drop.elements.arrayPositions[drop_uid].y1)-7, left:this.options.drop.elements.arrayPositions[drop_uid].x1-3 }); }; this.drag_elements_group_onfinish=function(db_uid) { var drag = this.options.drag.phantom; var drop = this.options.drop.groups; if(drag.moved) { this.inDragProcess=false; this.phantom_static.remove(); delete this.phantom_static; if(drop.selected!==false) { var t = drop.elements[drop.selected].value; //console.log(this.xmlform.db[db_uid]) var c = this.xmlform.tag_attributes_to_object(this.xmlform.db[db_uid]).concatMaborak({ group:t }); var m = c['nodeName']; //console.log(c.group) ////this.add_element(m,true,{group:c.group,type:"other"}); //this.add_element(m,true,{group:t,type:"other"}); this.add_element(m,true,c); this.remove_element(db_uid); } else { } } else { this.inDragProcess=false; this.phantom_static.remove(); delete this.phantom_static; } }; this.drag_elements_onfinish=function(db_uid) { this.imageAddRow.remove(); delete this.imageAddRow; var insertRowIn,begin; var drag = this.options.drag.phantom; var drop = this.options.drop.elements; if(drag.moved) { if(drop.selected===false) { var uid=drop.arrayPositions.length-1; if((drop.position.y > drop.arrayPositions[uid].y2)/* && this.lastSelected===uid*/) { insertRowIn = uid; begin = false; } else { insertRowIn = 0; begin = true; } } else { insertRowIn = drop.selected; begin = true; } var t = this.db[drop.elements[insertRowIn].value]; // t.parentNode.insertBefore(new DOM('input').replace(this.db[db_uid])); var n = t.before(new DOM('div')).replace(this.db[db_uid]); drag.flush(); new this.parent.module.fx.move().make({ duration:((drag.moved)?500:0), //end :{x:this.drop.arrayPositions[insertRowIn].x1,y:this.drop.arrayPositions[insertRowIn].y1}, end :this.parent.dom.position(n,false,true), dom :this.phantom_static, onFinish :function() { new this.parent.module.fx.fade().make({ duration:500, end :0, dom :this.phantom_static, onFinish :function(){ this.inDragProcess=false; this.phantom_static.remove(); delete this.phantom_static; }.extend(this) }); }.extend(this) }); //var newRow=this.db[insertRowIn]; //newRow.parentNode.replaceChild(domRow,newRow); //alert(movedUID+":"+this.options.data.rows[movedUID].info.rowIndex+":"+domRow.rowIndex) //alert(domRow.rowIndex) } else { /*insertRowIn = drag.currentElementDrag.db_uid-1; begin = true;*/ this.inDragProcess=false; this.phantom_static.remove(); delete this.phantom_static; } }; /* Contar elementos en grupo */ /* Devuelve el Key actual de un objeto dentro del grupo */ this.key_in_group=function(db_uid) { var a = this.db[db_uid]; var j=0; for(var i=0;i<db_uid;i++) { if(this.db[i].group==a.group) { j+=1; } } return j; }; this.dynaform_dom_section_names=function() { var v = this.tmp.c.options[this.tmp.c.options.selectedIndex].value; var a = { textAlign:'right', font:'normal 8pt Tahoma,sans-serif' }; var b = { textAlign:'left', font:'normal 8pt Tahoma,sans-serif' }; var at; var tb = new DOM('ol',{type:1}); this.tmp.pr=[]; for(var i=0;i<v;i++) { tb.append( new DOM('li').append( this.tmp.pr[i]=new input({style:{width:"100%",marginTop:2}}) ) ); } return tb; }; this.dynaform_dom_properties=function() { var v = this.tmp.t.options[this.tmp.t.options.selectedIndex].value; var a = { textAlign:'right', font:'normal 8pt Tahoma,sans-serif' }; var b = { textAlign:'left', font:'normal 8pt Tahoma,sans-serif' }; var at; var tb = new DOM('table',{cellPadding:2},{width:'100%'}).append( at = new DOM('tbody') ); var as = this.dynaform_dom[v]({},true); this.tmp.pr=[]; for(var i=0;i<as.length;i++) { at.append( new DOM('tr').append( new DOM('td',{},{width:'30%'}).append( new DOM('div',{innerHTML:as[i]+":"},a) ), new DOM('td',{},{width:'70%'}).append( new DOM('div',{},b).append( this.tmp.pr[i]=new input({label:'',properties:{name:as[i]},style:{width:'100%'}}) ) ) ) ); } return tb; }; this.dynaform_dom_types=function() { var a = new DOM('select',{onchange:function(){ this.tmp.p.innerHTML=''; this.tmp.p.append(this.dynaform_dom_properties()); }.extend(this)},{font:'normal 8pt Tahoma,sans-serif'}); //alert(this.dynaform_dom) for (var i in this.dynaform_dom) { if(this.dynaform_dom.propertyIsEnumerable(i)) { a.append(new DOM('option',{text:i,value:i})); } } return a; }; this.dynaform_dom={ text:function(options,get) { if(get){return ['size','maxlength','defaultvalue','required','dependentfields','linkfield','other_attribute'];} options={ }.concatMaborak(options || {}); var pd; this.options.points[options.group].append( pd = new DOM('div',{innerHTML:options.nodeName,db_uid:this.db.length,group:options.group}) ); this.db.push(pd); return { dom:pd, db_uid:pd.db_uid }; }, other:function(options,get) { if(get){return ['other1','other2','other_attribute'];} options={ }.concatMaborak(options || {}); var pd; this.options.points[options.group].append( pd = new DOM('div',{innerHTML:'Other',group:options.group,db_uid:this.db.length}) ); this.db.push(pd); return { dom:pd, db_uid:pd.db_uid }; }, title:function(options,get) { if(get){return ['other_attribute'];} options={ }.concatMaborak(options || {}); var pd; this.options.points[options.group].append( pd = new DOM('div',{innerHTML:options.nodeName,db_uid:this.db.length,group:options.group}) ); this.db.push(pd); return { dom:pd, db_uid:pd.db_uid }; } }.expand(this) this.expand(this); return this; } });