Hi Stotyo,
Thank you very much for the suggestion. It works well.
We are having another issue. That eval(code) always fails whenever we run it for second time. For example, after one ajax call, we draw the diagram. The user clicks on a menu, hence issues another ajax call. The backend side is all OK, returning a proper diagram object. It's all fine until it reaches that eval(code) portion. Once eval(code) is run, it throws the following error:
Unhandled exception at line 1, column 128012 in eval code
0x800a138f - JavaScript runtime error: Unable to get property 'origin' of undefined or null reference
Part of the code snippet here: this.inplaceTextBox.value=C;this.inplaceTextBox.onkeyup=this.onInplaceKeyUp;this .inplaceTextBox.style.position="absolute";this.inplaceTextBox.style.zIndex=2;thi s.setInplaceEditBounds(w);this.inplaceTextBox.style.border="1px solid #5C87B2";document.body.appendChild(this.inplaceTextBox);var B=this;setTimeout(function(){return B.focusInput.apply(B)},100);this.nowEditing=true},inplaceKeyUp:function(v){if(v. keyCode==27){this.endEdit(false)}},setInplaceEditBounds:function(w){var v=b.Utils.getBounds(this.get_element());this.inplaceEditBounds=new f(v.x-(this.scroller?this.scroller.scrollLeft:0)+this.scale*this.bounds.x+this.s cale*w.x,v.y-(this.scroller?this.scroller.scrollTop:0)+this.scale*this.bounds.y+ this.scale*w.y,this.scale*w.width,this.scale*w.height);this.inplaceTextBox.style .left=this.inplaceEditBounds.x+"px";this.inplaceTextBox.style.top=this.inplaceEd itBounds.y+"px";this.inplaceTextBox.style.width=this.inplaceEditBounds.width+"px ";this.inplaceTextBox.style.height=this.inplaceEditBounds.height+"px"},focusInpu t:function(){this.inplaceTextBox.focus()},endEdit:function(w){if(!this.nowEditin g){return}var v=this.inplaceObject.getTextToEdit();var z=this.inplaceTextBox.value;this.inplaceTextBox.style.visibility="hidden";docume nt.body.removeChild(this.inplaceTextBox);this.inplaceTextBox=null;var A=this.inplaceObject;this.inplaceObject=null;this.nowEditing=false;if(w){A.setEd itedText(z);if(b.DiagramNode.isInstanceOfType(A)){this.raiseEvent(b.Events.nodeT extEdited,new b.NodeEventArgs({node:A,oldText:v,newText:z}))}else{if(b.DiagramLink.isInstanceO fType(A)){this.raiseEvent(b.Events.linkTextEdited,new b.LinkEventArgs({link:A,oldText:v,newText:z}))}}}},onResize:function(){if(!this. nowEditing){return}var v=this.clientToDoc(this.lastCursorPos);var z=this.inplaceObject.getTextToEdit();var w=this.inplaceObject.getEditRect(v);this.setInplaceEditBounds(w)},clearAll:funct ion(){this.selection.clear();for(var w=0,v=this.items.length;w<v;w++){var z=this.items[0];Array.remove(this.items,z);this.onItemRemoved(z)}this.nodes=[];this.links=[]},addItem:function(v){if(Array.contains(this.items,v)){return}if(b.DiagramNode.i sInstanceOfType(v)){this.nodes.push(v);v.updateAnchorVisibility4()}else{
//here is the problematic part if(!Array.contains(this.items,v.origin)&&(v.origin==null||!b.DummyNode.isInstanc eOfType(v.origin)))
{return}if(!Array.contains(this.items,v.destination)&&(v.destination==null||!b.D ummyNode.isInstanceOfType(v.destination))){return}this.links.push(v);v.updateNod eCollections()}if(v.getZIndex()===undefined){v.setZIndex(this.items.length)}Arra y.add(this.items,v);this.onItemAdded(v)},removeItem:function(v){if(!v){return}th is.selection.removeItem(v);this.removeFromCollection(v);this.removeFromZOrder(v) ;if(b.DiagramNode.isInstanceOfType(v)){v.deleteLinks();v.detach();if(v.obstacle) {this.routeLinksAt([v.getBounds()])}}else{v.destinationConnection.removeLinkFromNode();v.originConnection.removeLi nkFromNode()}v.onRemove()},removeFromCollection:function(v){if(b.DiagramNode.isI nstanceOfType(v)){Array.remove(this.nodes,v)}else{Array.remove(this.links,v)}},r emoveFromZOrder:function(v){Array.remove(this.items,v);this.onItemRemoved(v)},de leteItem:function(v){if(v!=null&&this.raiseDeleting(v)){this.removeItem(v)}},del eteSelection:function(){var A=this.selection.links;for(var w=0,v=A.length;w<v;w++)
|