| 32 | | var prevName=rel.name; |
| 33 | | var prevValue=rel.val; |
| 34 | | |
| 35 | | var dispK=elem(["span",rel.name]); |
| 36 | | var dispV=elem(["span",rel.val]); |
| 37 | | var editK=elem(["input",{value: rel.name}]); |
| 38 | | var editV=elem(["input",{value: rel.val}]); |
| 39 | | var k,v; |
| 40 | | if (edit) { |
| 41 | | k=elem(["td",editK]); |
| 42 | | v=elem(["td",editV]); |
| 43 | | } else { |
| 44 | | k=elem(["td",dispK]); |
| 45 | | v=elem(["td",dispV]); |
| 46 | | } |
| 47 | | var editB,delB; |
| 48 | | return ["tr",k,v, |
| 49 | | ["td" , editB=elem(["button",{onclick: toggleEdit},"Edit"])], |
| 50 | | ["td" , delB=elem(["button",{onclick: delRel},"Delete"])] |
| 51 | | ]; |
| 52 | | function toggleEdit() { |
| 53 | | if (edit) editEnd(); |
| 54 | | else editStart(); |
| 55 | | } |
| 56 | | function editStart() { |
| 57 | | k.set(editK); |
| 58 | | v.set(editV); |
| 59 | | edit=true; |
| 60 | | } |
| 61 | | function editEnd() { |
| 62 | | k.set(dispK); |
| 63 | | v.set(dispV); |
| 64 | | var delrel=["DELREL",t.objID,prevName,prevValue]; |
| 65 | | prevName=editK.value; |
| 66 | | prevValue=editV.value; |
| 67 | | dispK.set(["span",prevName]); |
| 68 | | dispV.set(["span",prevValue]); |
| 69 | | editB.value="Wait.."; |
| 70 | | db(["PROGN", |
| 71 | | delrel, |
| 72 | | ["MAKEREL",t.objID,prevName,prevValue] |
| 73 | | ],next); |
| 74 | | function next() { editB.value="End"; } |
| 75 | | edit=false; |
| 76 | | } |
| 77 | | function delRel() { |
| 78 | | db(["DELREL",t.objID,prevName,prevValue],next); |
| 79 | | function next() {k.set();v.set();}; |
| 80 | | } |
| | 33 | |
| | 34 | return ["tr",function (tr) { |
| | 35 | var prevName=rel.name; |
| | 36 | var prevValue=rel.val; |
| | 37 | function attrFilled() { |
| | 38 | var r= (prevName && prevName.length>0) && |
| | 39 | (prevValue && prevValue.length>0); |
| | 40 | //alert(prevName+" "+prevValue+" "+r); |
| | 41 | return r; |
| | 42 | } |
| | 43 | var dispK=elem(["span",rel.name]); |
| | 44 | var dispV=elem(["span",rel.val]); |
| | 45 | var editK=elem(["input",{value: rel.name, onEnter:editEnd}]); |
| | 46 | var editV=elem(["input",{value: rel.val, onEnter:editEnd}]); |
| | 47 | var k,v; |
| | 48 | if (edit) { |
| | 49 | k=elem(["td",editK]); |
| | 50 | v=elem(["td",editV]); |
| | 51 | } else { |
| | 52 | k=elem(["td",dispK]); |
| | 53 | v=elem(["td",dispV]); |
| | 54 | } |
| | 55 | var editB,delB; |
| | 56 | |
| | 57 | tr.add([ |
| | 58 | k,v, |
| | 59 | ["td" , editB=elem(["button",{onclick: toggleEdit},"Edit"])], |
| | 60 | ["td" , delB=elem(["button",{onclick: delRel},"Delete"])] |
| | 61 | ]); |
| | 62 | |
| | 63 | function delRel() { |
| | 64 | if (attrFilled()) { |
| | 65 | db(["DELREL",t.objID,prevName,prevValue],next); |
| | 66 | } else next(); |
| | 67 | function next() {tbl.removeChild(tr);}; |
| | 68 | } |
| | 69 | function toggleEdit() { |
| | 70 | if (edit) editEnd(); |
| | 71 | else editStart(); |
| | 72 | } |
| | 73 | function editStart() { |
| | 74 | editB.innerHTML="OK"; |
| | 75 | |
| | 76 | k.set(editK); |
| | 77 | v.set(editV); |
| | 78 | edit=true; |
| | 79 | } |
| | 80 | function editEnd() { |
| | 81 | //return alert("bug gaaru"); |
| | 82 | k.set(dispK); |
| | 83 | v.set(dispV); |
| | 84 | var delrel=["DELREL",t.objID,prevName,prevValue]; |
| | 85 | prevName=editK.value; |
| | 86 | prevValue=editV.value; |
| | 87 | if (!attrFilled()) { |
| | 88 | delRel(); |
| | 89 | return; |
| | 90 | } |
| | 91 | dispK.set(["span",prevName]); |
| | 92 | dispV.set(["span",prevValue]); |
| | 93 | editB.value="Wait.."; |
| | 94 | db(["PROGN", |
| | 95 | delrel, |
| | 96 | ["MAKEREL",t.objID,prevName,prevValue] |
| | 97 | ],next); |
| | 98 | function next() { editB.innerHTML="Edit"; } |
| | 99 | edit=false; |
| | 100 | } |
| | 101 | |
| | 102 | }]; |