How many link relationships can give for a single node in genogram?

I am trying to give more relationships in the genogram data. Its is not taking more relationships.Can you give the solution for this?

ux = wife,cs = close and strong ,h = hostile ,ch = Close Hostile.

{ key: 0, name: “Patient’s Father”,s:“M”,ux:1,cs:2,h:3,ch:4,relationText:“1=m:1980”},
{ key: 1, name: “Patient’s Mother”,s: “F”,age:“58”,group:“images/H1.png”,occupation:“Unemployed”},
{ key: 2, name: “Patient”,s: “M”,f:0,m:1,age:“28”,group:“images/H1.png”,occupation:“Hawker”},
{ key: 3, name: “Patient’s Sibling 1”,s: “F”,f:0,m:1,age:“25”,group:“images/H1.png”,occupation:“Hawker”},
{ key: 4, name: “Patient’s Sibling 2”,s: “F”,f:0,m:1,age:“22”,group:“images/H1.png”,occupation:“Hawker”},

Key 0 (node) is not accepting all the relationships. Why? :(

So you want different links to indicate those types of relationships? What would the diagram look like for your given data? A mockup/sketch would help us figure out what you’re trying to accomplish.

I need the exact number of relationships links which we can use for a single node.
Please see the below data:
In the below data, m=mother,f=father,ux=wife,vir=husband,h = hostile,la= legally adopted,cs= Close And Strong. s is sex, where s:FM = sex is Focused Male (Patient Male), F = female,M = Male , MC = miscarriage, PA = Abortion, P = Pregnent.

{ key: 0, name: “Patient”,s:“FM”,ux:1,age:70,occupation:“Retired Carpenter”,group:“images/H1.png”},//,h:2
{ key: 1, name: “Patient’s wife”,s: “F”,age:“68”,occupation:“ADL Independent”,group:“images/H1.png”},

	{ key: 2, name: "Pt child 1",s: "M",age:"39",m:1,f:0,h:0},
	{ key: 3, name: "Pt child 2",s: "F",age:"36",m:1,f:0,h:1},//,h:1
	{ key: 4, name: "Pt child 3",s: "F",age:"34",m:1,f:0},
	{ key: 5, name: "Pt child 4",s: "M",age:"32",occupation:"Bank Manager",m:1,f:0,la:0,cs:1,group:"images/H1.png"},
	
	{ key: 6, name: "Pt child 1 Ex-wife",s: "F",age:"30",vir:2,div:2,relationText:"2=d:2008"},
	{ key: 7, name: "Pt child 1 wife",s: "F",age:"28",vir:2,relationText:"2=m:2010"},
	
	//child 1
	{ key: 8, name: "Miscarriage 2011",s:"MC",m:7,f:2},
	{ key: 9, name: "Miscarriage 2011",s:"MC",m:7,f:2},
	{ key: 10, name: "Pt Child 1 male",s:"M",age:"3",m:7,f:2},
	
	//child 2
	{ key: 11, name: "Pt Child 2 hub",s:"M",age:"40",ux:3,relationText:"3=m:2012"},
	
	{ key: 12, name: "",s:"F",age:"4",m:3,f:11,birth:1},
	{ key: 13, name: "",s:"F",age:"4",m:3,f:11,birth:1},
	
	//child 4
	{ key: 14, name: "Pt Child 4 wife",s:"F",age:"28",vir:5,occupation:"Housewife",group:"images/H1.png"},
	
	{ key: 15, name: "Pt Child 4 female",s:"F",age:"3",f:5,m:14,group:"images/H1.png"},
	{ key: 16, name: "Pt Child 4 male",s:"M",age:"2",f:5,m:14,group:"images/H1.png"},
	{ key: 17, name: "Abortion 2018",s:"PA",f:5,m:14,group:"images/H1.png"}

Structure for the above data:

if I remove h:0 in key:2 and given h:2 in key:0,
then structure showing different with no relationships:
See the below structure:

Please help me on this, why h:2 is not accepting to key:0.
And need to know how many number of relations are needed to accept per single node (Symbol).
Please let me know if any clarifications.

prameela.dara you are using my email address. Please update your account.

If you are using a GraphLinksModel, which is what the Genogram sample does, you need a function that creates link data based on the relationships outlined in your node data. The setupMarriages and setupParents functions in that sample are examples of this. If you want to be able to specify the relationship on either side of it, you’ll need to adapt your code to do so.

There shouldn’t be a limit on the number of relationships in a GraphLinksModel, so you should be able to specify any number, but you’ll need to process them correctly to turn them into links.

Hi,

Can you provide the code that the genogram will uses multiple links per node.

In the above screenshot, for one key/node I can use only two side vertical links, one vertical link and one horizontal link. If I will use another link then it is not displaying to genogram. Why it happens?
Please see the below code:

diagramData = [

		  { key: 0, name: "Arron Father",s: "M",age:"59"},
		  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
		  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3,d:4},
		  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
		  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
	  
	  ];

I given the above genogram Data but in Aaron key, d is distant. It is not displaying.
It is taking limit links like one two side vertical links, one vertical link and one horizontal link. If I will give extra link then genogram is not accepting.

sh:0,ssnlad:1,cs:3,d:4
sh,ssnladcs and d are customized like the below :

// cs
	PathPatterns.add("CloseAndStrong", $(go.Shape,{geometryString: "M 0,0 l 0,-5", fill: "transparent",stroke: "black",strokeWidth: 1,strokeCap: "square"}));
	// d
	PathPatterns.add("LivingTogether", $(go.Shape,{geometryString: "M0 0 M3 0 L6 0", fill: "transparent",stroke: "black",strokeWidth: 1,strokeCap: "square"}));
// h
	PathPatterns.add("CloseHostile", $(go.Shape,{geometryString: "M0 3 L1 0 3 10 5 4 M0 4 L5 4 M0 5 L5 5 M0 6 L5 6", fill: "transparent",stroke: "black",strokeWidth: 1,strokeCap: "square"}));
//nlad
	PathPatterns.add("NotLegallyAdoptedDistant", $(go.Shape,{geometryString: "M0 8 M3 8 L6 8 M0 3 M3 3 L6 3", fill: "transparent",stroke: "black",strokeWidth: 1,strokeCap: "square"}));

For h and nlad I am using prefix as s and ss for links if have side verticals links.
Because I am using code like below:

function init() {
	document.getElementById('previewImage').style.display = "none";
	var selectGenderToFocus;
	if (window.goSamples) goSamples();  
	var $ = go.GraphObject.make;
	
    myDiagram =
      $(go.Diagram, "myDiagramDiv",
        {
          initialAutoScale: go.Diagram.Uniform,
          initialContentAlignment: go.Spot.Center,
          "undoManager.isEnabled": true,
              
                   
          layout:  // use a custom layout, defined below
            $(GenogramLayout, { direction: 90, layerSpacing: 90, columnSpacing: 10})
        });

diagramData = [
			  
			  { key: 0, name: "Arron Father",s: "M",age:"59"},
			  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
			  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3,d:4},
			  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
			  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
		  
		  ];

    setupDiagram(myDiagram, diagramData);

}

calling setupDiagram inside the init() method which is calling from html page.

function setupDiagram(diagram, array) {
	diagram.model =
		go.GraphObject.make(go.GraphLinksModel,
				{ 
			linkLabelKeysProperty: "labelKeys",
			nodeCategoryProperty: "s",
			nodeDataArray: array
				});
	var model = diagram.model; 
	var nodeDataArray = model.nodeDataArray;
	var data = null;
	for (var i = 0; i < nodeDataArray.length; i++) {
		data = nodeDataArray[i];
		if(data.sla !== undefined) {
			setupParentChild(diagram);
		}
		// multiple links for side verticals
		if(data.shl !== undefined || data.scs !== undefined || data.sh !== undefined || data.snla !== undefined ||data.sch !== undefined ||
				data.snlacs !== undefined || data.snlad !== undefined || data.snlah !== undefined || data.snlach !== undefined ||
				data.slacs !== undefined || data.sslad !== undefined || data.slah !== undefined || data.slach !== undefined || (data.f != undefined && data.m == undefined)
				|| (data.m != undefined && data.f == undefined) || data.la !== undefined || data.nla != undefined) {
			setNodeLinks(diagram,data,model);
		}
		if(data.sshl !== undefined || data.sscs !== undefined || data.ssh !== undefined || data.ssnla !== undefined || data.ssch !== undefined ||
				data.ssnlacs !== undefined || data.ssnlad !== undefined || data.ssnlah !== undefined || data.ssnlach !== undefined ||
				data.sslacs !== undefined || data.sslad !== undefined || data.sslah !== undefined || data.sslach !== undefined) {
			setNodeLinks1(diagram,data,model);
		}
				
		
	}
	setupMarriages(diagram);
	setupParents(diagram);
	
}

function setupParentChild(diagram) {
	var model = diagram.model;
	var nodeDataArray = model.nodeDataArray;
	for (var i = 0; i < nodeDataArray.length; i++) {
		var data = nodeDataArray[i];
		var key = data.key;  //   2,f:0,h:1(in place of m:1)
		var father = data.f; // : 0
		var mother = data.m; 
		var relationText = data.relationText;
		if(relationText == undefined) {
			relationText = "";
		}
		var SinglelegallyAdopted = data.sla;
		var ctdata = null;
		if(key !== undefined && father !== undefined && mother == undefined && SinglelegallyAdopted !== undefined) {
			var remarks_single_mother = data.m;
			ctdata ={ from: father, to: key,category: "Child_NewLinkFormats",relationText:remarks(relationText,father,remarks_single_mother,key), patt: "LegallyAdopted", toArrow: "OpenTriangle" };
		} else if(key !== undefined && father == undefined && mother !== undefined && SinglelegallyAdopted !== undefined ) {
			var remarks_single_father = data.f;
			ctdata ={ from: mother, to: key,category: "Child_NewLinkFormats",relationText:remarks(relationText,mother,remarks_single_father,key),patt: "LegallyAdopted", toArrow: "OpenTriangle" };
		}

		myDiagram.model.addLinkData(ctdata);
	}

}

function findMarriage(diagram, a, b) {  // A and B are node keys
	var nodeA = diagram.findNodeForKey(a);
	var nodeB = diagram.findNodeForKey(b);
	//con
	if (nodeA !== null && nodeB !== null) {
		var it = nodeA.findLinksBetween(nodeB);  // in either direction
		while (it.next()) {
			var link = it.value;
			if (link.data !== null && link.data.category === "Marriage")return link;
			if (link.data !== null && link.data.category === "NewLinkFormats") return link;
			if (link.data !== null && link.data.category === "SingleNode_NewLinkFormats") return link;
			if (link.data !== null && link.data.category === "SeparationLinkFormat") return link;
			if (link.data !== null && link.data.category === "DivorceLinkFormat") return link;
			if (link.data !== null && link.data.category === "DomesticWorker") return link;
			if (link.data !== null && link.data.category === "Child_NewLinkFormats") return link;
			if (link.data !== null && link.data.category === "ParentChild") return link;
			
			
			
		}
	}
	return null;
}
var flag = 0;
function setupMarriages(diagram) {
	var model = diagram.model;
	var nodeDataArray = model.nodeDataArray;
	var data;
	for (var i = 0; i < nodeDataArray.length; i++) {
		data = nodeDataArray[i];
		if(data.s !== "MFDW" && data.s !== "FFDW") {
					var key = data.key;
					var uxs = data.ux;
					var virs = data.vir;
					var relationText = data.relationText;
				    if(relationText == undefined) {
				    	relationText = "";
				    }
				
				    
				    
					
					var closeAndStrong = data.cs;
					var livingTogether = data.liv;
					var hostile = data.h;
					var closeHostile = data.ch;
					var mfdw;
					var ffdw;
					
					 
					//alert("key   --> "+key+"closeAndStrong  --> "+closeAndStrong);
				
					var divorce = data.div;
					var divorceCloseAndStrong = data.divcs;
					var divorceDistant = data.divd;
					var divorceHostile = data.divh;
					var divorceCloseHostile = data.divch;
				
					var marriageCloseAndStrong = data.mcs;
					var marriageDistant = data.md;
					var marriageHostile = data.mh;
					var marriageCloseHostile = data.mch;
				
					// var legallyAdoptedCloseAndStrong
				
					var maritalSeparation = data.ms;
					var maritalSeparationCloseAndStrong = data.mscs;
					var maritalSeparationDistant = data.msd;
					var maritalSeparationHostile = data.msh;
					var maritalSeparationCloseHostile = data.msch;
				
				
					var legallyAdoptedCloseAndStrong = data.lacs;
					var legallyAdoptedDistant = data.lad;
					var legallyAdoptedHostile = data.lah;
					var legallyAdoptedCloseHostile = data.lach;
				
					var livingTogetherCloseAndStrong = data.livcs;
					var livingTogetherDistant = data.livd;
					var livingTogetherHostile = data.livh;
					var livingTogetherCloseHostile = data.livch;
				
				
				
				
					var lfCategory = null;
				
					if (uxs !== undefined) {
						lfCategory = uxs;
					} 
					if (virs !== undefined) {
						lfCategory = virs;
					} 
				
				
					if (closeAndStrong !== undefined) {
						lfCategory = closeAndStrong;
					} 
					if (livingTogether !== undefined) {
						lfCategory = livingTogether;
					} 
					if (hostile !== undefined) {
						lfCategory = hostile;
					} 
					if (closeHostile !== undefined) {
						lfCategory = closeHostile;
					} 
				
				
					if (divorce !== undefined) {
						lfCategory = divorce;
					} 
					if (divorceCloseAndStrong !== undefined) {
						lfCategory = divorceCloseAndStrong;
					} 
					if (divorceDistant !== undefined) {
						lfCategory = divorceDistant;
					} 
					if (divorceHostile !== undefined) {
						lfCategory = divorceHostile;
					} 
					if (divorceCloseHostile !== undefined) {
						lfCategory = divorceCloseHostile;
					} 
				
				
				
					if (marriageCloseAndStrong !== undefined) {
						lfCategory = marriageCloseAndStrong;
					} 
					if (marriageDistant !== undefined) {
						lfCategory = marriageDistant;
					} 
					if (marriageHostile !== undefined) {
						lfCategory = marriageHostile;
					} 
					if (marriageCloseHostile !== undefined) {
						lfCategory = marriageCloseHostile;
					} 
				
				
				
					if (maritalSeparation !== undefined) {
						lfCategory = maritalSeparation;
					} 
					if (maritalSeparationCloseAndStrong !== undefined) {
						lfCategory = maritalSeparationCloseAndStrong;
					} 
					if (maritalSeparationDistant !== undefined) {
						lfCategory = maritalSeparationDistant;
					} 
					if (maritalSeparationHostile !== undefined) {
						lfCategory = maritalSeparationHostile;
					} 
					if (maritalSeparationCloseHostile !== undefined) {
						lfCategory = maritalSeparationCloseHostile;
					} 
				
				
					if (legallyAdoptedCloseAndStrong !== undefined) {
						lfCategory = legallyAdoptedCloseAndStrong;
					} 
					if (legallyAdoptedDistant !== undefined) {
						lfCategory = legallyAdoptedDistant;
					} 
					if (legallyAdoptedHostile !== undefined) {
						lfCategory = legallyAdoptedHostile;
					} 
					if (legallyAdoptedCloseHostile !== undefined) {
						lfCategory = legallyAdoptedCloseHostile;
					} 
				
					if (livingTogetherCloseAndStrong !== undefined) {
						lfCategory = livingTogetherCloseAndStrong;
					} 
					if (livingTogetherDistant !== undefined) {
						lfCategory = livingTogetherDistant;
					} 
					if (livingTogetherHostile !== undefined) {
						lfCategory = livingTogetherHostile;
					} 
					if (livingTogetherCloseHostile !== undefined) {
						lfCategory = livingTogetherCloseHostile;
					} 
				
				
					console.log("new");
				/*	alert("key  :"+key);
					alert("relationText  :"+relationText);
					alert("lfCategory   :"+(lfCategory));*/
					if (typeof lfCategory === "number") lfCategory = [ lfCategory ];
					if(lfCategory !== null) {
						for (var j = 0; j < lfCategory.length; j++) {
							var husband = lfCategory[j];
							if (key === husband) {
								continue;
							}
				
							var link = findMarriage(diagram, key, husband);
							if (link === null) {
								var mlab = { s: "LinkLabel" };
								model.addNodeData(mlab);
								var mdata = null;
								var msgKey = null;
								
								
								
								if(relationText == undefined) {
									relationText = "";
								} else {
										
									//doubt	
									if (lfCategory == uxs || lfCategory == virs) {
										var remarks_m = data.m;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "Child_NewLinkFormats" , relationText:remarks(relationText,husband,remarks_m,key)};
									}
									if (lfCategory == closeAndStrong) {
										var remarks_cs = data.cs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category:"NewLinkFormats" , relationText:remarks(relationText,husband,remarks_cs,key), patt: "CloseAndStrong", toArrow: "OpenTriangle" };
									}
									if (lfCategory == livingTogether) {
										var remarks_liv = data.liv;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_liv,key), patt: "LivingTogether", toArrow: "OpenTriangle" };
									}
									if (lfCategory == hostile) {
											var remarks_h = data.h;
											mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_h,key), patt: "Hostile", toArrow: "OpenTriangle" };
									}
									if (lfCategory == closeHostile) {
										var remarks_ch = data.ch;
				                	  mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_ch,key), patt: "CloseHostile", toArrow: "OpenTriangle" };
				                    }
								
									if (lfCategory == marriageCloseAndStrong) {
										var remarks_mcs = data.mcs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats",relationText:remarks(relationText,husband,remarks_mcs,key), patt: "MarriageCloseAndStrong", toArrow: "OpenTriangle" };
									}
									if (lfCategory == marriageDistant) {
										var remarks_md = data.md;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats",relationText:remarks(relationText,husband,remarks_md,key), patt: "MarriageDistant", toArrow: "OpenTriangle" };
									}
									if (lfCategory == marriageHostile) {
										var remarks_mh = data.mh;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats",relationText:remarks(relationText,husband,remarks_mh,key), patt: "MarriageHostile", toArrow: "OpenTriangle" };
									}
									if (lfCategory == marriageCloseHostile) {
										var remarks_mch = data.mch;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats",relationText:remarks(relationText,husband,remarks_mch,key),patt: "MarriageCloseHostile", toArrow: "OpenTriangle"  };
									}
									
								

									if (lfCategory == divorce) {
										var remarks_d = data.d;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "DivorceLinkFormat", relationText:remarks(relationText,husband,remarks_d,key), patt: "Divorce", toArrow: "Standard" ,text:"m:1945 d:1950" };
									}
									if (lfCategory == divorceCloseAndStrong) {
										var remarks_dcs = data.dcs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "DivorceLinkFormat", relationText:remarks(relationText,husband,remarks_dcs,key), patt: "DivorceCloseAndStrong", toArrow: "Standard" };
									}
									if (lfCategory == divorceDistant) {
										var remarks_dd = data.dd;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "DivorceLinkFormat", relationText:remarks(relationText,husband,remarks_dd,key), patt: "DivorceDistant", toArrow: "Standard" };
									}
									if (lfCategory == divorceHostile) {
										var remarks_dh = data.dh;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "DivorceLinkFormat", relationText:remarks(relationText,husband,remarks_dh,key),patt: "DivorceHostile", toArrow: "Standard" };
									}
									if (lfCategory == divorceCloseHostile) {
										var remarks_dh = data.dch;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "DivorceLinkFormat", relationText:remarks(relationText,husband,remarks_dh,key), patt: "DivorceCloseHostile", toArrow: "Standard" };
									}

									if (lfCategory == maritalSeparation) {
										var remarks_ms = data.ms;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "SeparationLinkFormat",relationText:remarks(relationText,husband,remarks_ms,key),  patt: "MaritalSeparation", toArrow: "Standard" };
									}
									if (lfCategory == maritalSeparationCloseAndStrong) {
										var remarks_mscs = data.mscs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "SeparationLinkFormat", relationText:remarks(relationText,husband,remarks_mscs,key), patt: "MaritalSeparationCloseAndStrong", toArrow: "Standard" };
									}
									if (lfCategory == maritalSeparationDistant) {
										var remarks_msd = data.msd;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "SeparationLinkFormat", relationText:remarks(relationText,husband,remarks_msd,key), patt: "MaritalSeparationDistant", toArrow: "Standard" };
									}
									if (lfCategory == maritalSeparationHostile) {
										var remarks_msh = data.msh;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "SeparationLinkFormat", relationText:remarks(relationText,husband,remarks_msh,key), patt: "MaritalSeparationHostile", toArrow: "Standard" };
									}
									if (lfCategory == maritalSeparationCloseHostile) {
										var remarks_msch = data.msch;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "SeparationLinkFormat", relationText:remarks(relationText,husband,remarks_msch,key), patt: "MaritalSeparationCloseHostile", toArrow: "Standard" };
									}


									/*if (lfCategory == legallyAdoptedCloseAndStrong) {
										var remarks_lacs = data.lacs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_lacs,key), patt: "LegallyAdoptedCloseAndStrong", toArrow: "OpenTriangle" };
									}
									if (lfCategory == legallyAdoptedDistant) {
										var remarks_laliv = data.laliv;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_laliv,key), patt: "LegallyAdoptedDistant", toArrow: "OpenTriangle" };
									}
									if (lfCategory == legallyAdoptedHostile) {
										var remarks_lah = data.lah;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_lah,key), patt: "LegallyAdoptedHostile", toArrow: "OpenTriangle" };
									}
									if (lfCategory == legallyAdoptedCloseHostile) {
										var remarks_lach = data.lach;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_lach,key), patt: "LegallyAdoptedCloseHostile", toArrow: "OpenTriangle" };
									}*/


									if (lfCategory == livingTogetherCloseAndStrong) {
										var remarks_lacs = data.livcs;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_lacs,key), patt: "LivingTogetherCloseAndStrong", toArrow: "OpenTriangle" };
									}
									if (lfCategory == livingTogetherDistant) {
										var remarks_livd = data.livd;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_livd,key), patt: "LivingTogetherDistant", toArrow: "OpenTriangle" };
									}
									if (lfCategory == livingTogetherHostile) {
										var remarks_livh = data.livh;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_livh,key), patt: "LivingTogetherHostile", toArrow: "OpenTriangle" };
									}
									if (lfCategory == livingTogetherCloseHostile) {
										var remarks_livch = data.livch;
										mdata = { from: key, to: husband, labelKeys: [mlab.key], category: "NewLinkFormats", relationText:remarks(relationText,husband,remarks_livch,key), patt: "LivingTogetherCloseHostile", toArrow: "OpenTriangle" };
									}
										
									
				
														
										
									}
										model.addLinkData(mdata);
									
								//	}
							}
						}//lfCategory
					}

				
		}

	}
}




function setupParents(diagram) {
	var model = diagram.model;
	var nodeDataArray = model.nodeDataArray;
	for (var i = 0; i < nodeDataArray.length; i++) {
		var data = nodeDataArray[i];
		var key = data.key;
		var mother = data.m;
		var father = data.f;
		var adopted = data.la;
		var lacs = data.lacs;
		var lad = data.lad;
		var lah = data.lah;
		var lach = data.lach;
		
		
		
		var nla = data.nla;
		var nlacs = data.nlacs;
		var nlad = data.nlad;
		var nlah = data.nlah;
		var nlach = data.nlach;
		
		var relationText = data.relationText;
		if(relationText == undefined) {
			relationText = "";
		}
				if(adopted !== undefined) {
					//alert("adopted "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_la;
						remarks_la = data.la;
						//alert("adopted  :"+adopted);
					//	var cdata = { from: mlabkey, to: key, category: "NewLinkFormats",patt: "LegallyAdopted", relationText:relationText};
						var cdata = { from: mlabkey, to: key, patt: "LegallyAdopted",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_la,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
				} else if(lacs !== undefined) {
					//alert("adopted "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_lacs;
						remarks_lacs = data.lacs;
						//alert("adopted  :"+adopted);
					//	var cdata = { from: mlabkey, to: key, category: "NewLinkFormats",patt: "LegallyAdopted", relationText:relationText};
						var cdata = { from: mlabkey, to: key, patt: "LegallyAdoptedCloseAndStrong",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_lacs,key)};
						myDiagram.model.addLinkData(cdata);// 
					} 
				}  else if(lad !== undefined) {
					//alert("adopted "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_lad;
						remarks_lad = data.lad;
						//alert("adopted  :"+adopted);
					//	var cdata = { from: mlabkey, to: key, category: "NewLinkFormats",patt: "LegallyAdopted", relationText:relationText};
						var cdata = { from: mlabkey, to: key, patt: "LegallyAdoptedDistant",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_lad,key)};
						myDiagram.model.addLinkData(cdata);// 
					} 
				}  else if(lah !== undefined) {
					//alert("adopted "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_lah;
						remarks_lah = data.lah;
						//alert("adopted  :"+adopted);
					//	var cdata = { from: mlabkey, to: key, category: "NewLinkFormats",patt: "LegallyAdopted", relationText:relationText};
						var cdata = { from: mlabkey, to: key, patt: "LegallyAdoptedHostile",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_lah,key)};
						myDiagram.model.addLinkData(cdata);// 
					} 
				} else if(lach !== undefined) {
					//alert("adopted "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_lach;
						remarks_lach = data.lach;
						//alert("adopted  :"+adopted);
					//	var cdata = { from: mlabkey, to: key, category: "NewLinkFormats",patt: "LegallyAdopted", relationText:relationText};
						var cdata = { from: mlabkey, to: key, patt: "LegallyAdoptedCloseHostile",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_lach,key)};
						myDiagram.model.addLinkData(cdata);// 
					} 
				}
				
				
				
				else if(nla !== undefined) {
					//alert("nla "+relationText);
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_nla;
						remarks_nla = data.nla;
						var cdata = { from: mlabkey, to: key, patt: "NotLegallyAdopted",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_nla,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
					
				} else if(nlacs !== undefined) {
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_nla;
						remarks_nla = data.nlacs;
						var cdata = { from: mlabkey, to: key, patt: "NotLegallyAdoptedCloseAndStrong",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_nla,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
					
				} else if(nlad !== undefined) {
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_nla = data.nlad;
						var cdata = { from: mlabkey, to: key, patt: "NotLegallyAdoptedDistant",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_nla,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
					
				} else if(nlah !== undefined) {
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_nla = data.nlah;
						var cdata = { from: mlabkey, to: key, patt: "NotLegallyAdoptedHostile",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_nla,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
					
				} else if(nlach !== undefined) {
					if (mother !== undefined && father !== undefined) {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_nla = data.nlach;
						var cdata = { from: mlabkey, to: key, patt: "NotLegallyAdoptedCloseHostile",category: "Child_NewLinkFormats",relationText:remarks(relationText,mlabkey,remarks_nla,key)};
						myDiagram.model.addLinkData(cdata);// 
					}
					
				} else {
					if(mother !== undefined || father !== undefined)  {
						var link = findMarriage(diagram, mother, father);
						if (link === null) {
							if (window.console) window.console.log("unknown marriage: " + mother + " & " + father);
							continue;
						}
						var mdata = link.data;
						var mlabkey = mdata.labelKeys[0];
						var remarks_m = data.m;
						var cdata = { from: mlabkey, to: key,category: "ParentChild",relationText:remarks(relationText,mlabkey,remarks_m,key)};
						myDiagram.model.addLinkData(cdata);

				} 
			}
	}
}

This is my code for links display in genogram.

Please help me or send me any code which does not take any limits to display links.
This is very important to complete ASAP.

Thanks,
Prameela.D

Body is full. So remaining functions are below

function setNodeLinks1(diagram,nodeDataArray,model) {
	
	var data = nodeDataArray;
	var key = data.key;  
	var father =  data.f;
	var mother = data.m;
	
	var singleCloseAndStrong = data.sscs; 
	var singleNotLegallyAdopted = data.ssnla; 
	var singleHostile = data.ssh;
	var singleCloseHostile = data.ssch; 
	
	var singleNotLegallyAdoptedCloseAndStrong = data.ssnlacs;
	var singleNotLegallyAdoptedDistant = data.ssnlad;
	var singleNotLegallyAdoptedHostile = data.ssnlah;
	var singleNotLegallyAdoptedCloseHostile = data.ssnlach;
	
	var singleLegallyAdoptedCloseAndStrong = data.sslacs;
	var singleLegallyAdoptedDistant = data.sslad;
	var singleLegallyAdoptedHostile = data.sslah;
	var singleLegallyAdoptedCloseHostile = data.sslach;
	
	var singleHideLink = data.sshl;
	var srelationText = data.srelationText;
	if(srelationText == undefined) {
		srelationText = "";
	}
	var ctdata = null;
	
	
	if(key !== undefined && singleCloseAndStrong !== undefined) {
		var remarks_Single_cs = data.sscs;
		ctdata ={ from: singleCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleCloseAndStrong,remarks_Single_cs,key),patt: "CloseAndStrong", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleNotLegallyAdopted !== undefined) {
		var remarks_Single_nla = data.ssnla;
		ctdata ={ from: singleNotLegallyAdopted, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdopted,remarks_Single_nla,key),patt: "NotLegallyAdopted", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleHostile !== undefined) {
		var remarks_Single_h = data.ssh;
		ctdata ={ from: singleHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleHostile,remarks_Single_h,key),patt: "SingleNode_Hostile", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_ch = data.ssch;
		ctdata ={ from: singleCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleCloseHostile,remarks_Single_ch,key),patt: "CloseHostile", toArrow: "OpenTriangle" };
	} 
	
	
	else if(key !== undefined && singleNotLegallyAdoptedCloseAndStrong !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_nlacs = data.ssnlacs;
		ctdata ={ from: singleNotLegallyAdoptedCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedCloseAndStrong,remarks_Single_nlacs,key),patt: "NotLegallyAdoptedCloseAndStrong", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleNotLegallyAdoptedDistant !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_nlad = data.ssnlad;
		ctdata ={ from: singleNotLegallyAdoptedDistant, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedDistant,remarks_Single_nlad,key),patt: "NotLegallyAdoptedDistant", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleNotLegallyAdoptedHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_nlah = data.ssnlah;
		ctdata ={ from: singleNotLegallyAdoptedHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedHostile,remarks_Single_nlah,key),patt: "NotLegallyAdoptedHostile", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleNotLegallyAdoptedCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_nlach = data.ssnlach;
		ctdata ={ from: singleNotLegallyAdoptedCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedCloseHostile,remarks_Single_nlach,key),patt: "NotLegallyAdoptedCloseHostile", toArrow: "OpenTriangle" };
	} 
	
	else if(key !== undefined && singleLegallyAdoptedCloseAndStrong !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_lacs = data.sslacs;
		ctdata ={ from: singleLegallyAdoptedCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedCloseAndStrong,remarks_Single_lacs,key),patt: "LegallyAdoptedCloseAndStrong", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleLegallyAdoptedDistant !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_lad = data.sslad;
		ctdata ={ from: singleLegallyAdoptedDistant, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedDistant,remarks_Single_lad,key),patt: "LegallyAdoptedDistant", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleLegallyAdoptedHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_lah = data.sslah;
		ctdata ={ from: singleLegallyAdoptedHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedHostile,remarks_Single_lah,key),patt: "LegallyAdoptedHostile", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleLegallyAdoptedCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		var remarks_Single_lach = data.sslach;
		ctdata ={ from: singleLegallyAdoptedCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedCloseHostile,remarks_Single_lach,key),patt: "LegallyAdoptedCloseHostile", toArrow: "OpenTriangle" };
	} else if(key !== undefined && singleHideLink !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
		ctdata ={ from: singleHideLink, to: key,category: "singleHideLink",patt: "HideLink", toArrow: "OpenTriangle" };
	}
	
	myDiagram.model.addLinkData(ctdata);
	
}

function setNodeLinks(diagram,nodeDataArray,model) {
	
		var data = nodeDataArray;
		var key = data.key;  //   2,f:0,h:1(in place of m:1)
		var father =  data.f;
		var mother = data.m;
		
		var singleCloseAndStrong = data.scs; 
		var singleNotLegallyAdopted = data.snla; 
		//alert(singleNotLegallyAdopted);
		var singleHostile = data.sh;
		var singleCloseHostile = data.sch; 
		
		var singleNotLegallyAdoptedCloseAndStrong = data.snlacs;
		var singleNotLegallyAdoptedDistant = data.snlad;
		var singleNotLegallyAdoptedHostile = data.snlah;
		var singleNotLegallyAdoptedCloseHostile = data.snlach;
		
		var singleLegallyAdoptedCloseAndStrong = data.slacs;
		var singleLegallyAdoptedDistant = data.slad;
		var singleLegallyAdoptedHostile = data.slah;
		var singleLegallyAdoptedCloseHostile = data.slach;
		
		var singleHideLink = data.shl; 
		
		
		
		var srelationText = data.relationText;
		if(srelationText == undefined) {
			srelationText = "";
		}
		var ctdata = null;
		
		if((key !== undefined && father !== undefined && mother == undefined) || (key !== undefined && mother !== undefined && father == undefined)) {
			var parent,category,patt;
			var remarks_Single_p;
			if(father !== undefined && mother == undefined) {
				parent = father;
				category = "ParentChild";
				patt="";
			}
			if(mother !== undefined && father == undefined) {
				parent = mother;
				category = "ParentChild";
				patt="";
				
			}	
			
			if(data.la !== undefined) {
				parent = data.la;
				category = "Child_NewLinkFormats";
				patt="LegallyAdopted";
			}
			if(data.lacs !== undefined) {
				parent = data.lacs;
				category = "Child_NewLinkFormats";
				patt="LegallyAdoptedCloseAndStrong";
			}
			if(data.lad !== undefined) {
				parent = data.lad;
				category = "Child_NewLinkFormats";
				patt="LegallyAdoptedDistant";
			}
			if(data.lach !== undefined) {
				parent = data.lach;
				category = "Child_NewLinkFormats";
				patt="LegallyAdoptedCloseHostile";
			}
			if(data.lah !== undefined) {
				parent = data.lah;
				category = "Child_NewLinkFormats";
				patt="LegallyAdoptedHostile";
			}
			
			
			
			if(data.nla !== undefined) {
				parent = data.nla;
				category = "Child_NewLinkFormats";
				patt="NotLegallyAdopted";
			}
			if(data.nlacs !== undefined) {
				parent = data.nlacs;
				category = "Child_NewLinkFormats";
				patt="NotLegallyAdoptedCloseAndStrong";
			}
			if(data.nlad !== undefined) {
				parent = data.nlad;
				category = "Child_NewLinkFormats";
				patt="NotLegallyAdoptedDistant";
			}
			if(data.nlach !== undefined) {
				parent = data.nlach;
				category = "Child_NewLinkFormats";
				patt="NotLegallyAdoptedCloseHostile";
			}
			if(data.nlah !== undefined) {
				parent = data.nlah;
				category = "Child_NewLinkFormats";
				patt="NotLegallyAdoptedHostile";
			}
			
			
			remarks_Single_p = parent;
			ctdata ={ from: parent, to: key,category: category,patt:patt,srelationText:remarks(srelationText,parent,remarks_Single_p,key), toArrow: "OpenTriangle" };
			
		} else if(key !== undefined && singleCloseAndStrong !== undefined) {
			var remarks_Single_cs = data.scs;
			ctdata ={ from: singleCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleCloseAndStrong,remarks_Single_cs,key),patt: "CloseAndStrong", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleNotLegallyAdopted !== undefined) {
			var remarks_Single_nla = data.snla;
			ctdata ={ from: singleNotLegallyAdopted, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdopted,remarks_Single_nla,key),patt: "NotLegallyAdopted", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleHostile !== undefined) {
		//	alert("single :"+data.h);
			var remarks_Single_h = data.sh;
			ctdata ={ from: singleHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleHostile,remarks_Single_h,key),patt: "SingleNode_Hostile", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_ch = data.sch;
			ctdata ={ from: singleCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleCloseHostile,remarks_Single_ch,key),patt: "CloseHostile", toArrow: "OpenTriangle" };
		}
		
		else if(key !== undefined && singleNotLegallyAdoptedCloseAndStrong !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_nlacs = data.snlacs;
			ctdata ={ from: singleNotLegallyAdoptedCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedCloseAndStrong,remarks_Single_nlacs,key),patt: "NotLegallyAdoptedCloseAndStrong", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleNotLegallyAdoptedDistant !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_nlad = data.snlad;
			ctdata ={ from: singleNotLegallyAdoptedDistant, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedDistant,remarks_Single_nlad,key),patt: "NotLegallyAdoptedDistant", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleNotLegallyAdoptedHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_nlah = data.snlah;
			ctdata ={ from: singleNotLegallyAdoptedHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedHostile,remarks_Single_nlah,key),patt: "NotLegallyAdoptedHostile", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleNotLegallyAdoptedCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_nlach = data.snlach;
			ctdata ={ from: singleNotLegallyAdoptedCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleNotLegallyAdoptedCloseHostile,remarks_Single_nlach,key),patt: "NotLegallyAdoptedCloseHostile", toArrow: "OpenTriangle" };
		} 
		
		
		else if(key !== undefined && singleLegallyAdoptedCloseAndStrong !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_lacs = data.slacs;
			ctdata ={ from: singleLegallyAdoptedCloseAndStrong, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedCloseAndStrong,remarks_Single_lacs,key),patt: "LegallyAdoptedCloseAndStrong", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleLegallyAdoptedDistant !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_lad = data.slad;
			ctdata ={ from: singleLegallyAdoptedDistant, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedDistant,remarks_Single_lad,key),patt: "LegallyAdoptedDistant", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleLegallyAdoptedHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_lah = data.slah;
			ctdata ={ from: singleLegallyAdoptedHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedHostile,remarks_Single_lah,key),patt: "LegallyAdoptedHostile", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleLegallyAdoptedCloseHostile !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_Single_lach = data.slach;
			ctdata ={ from: singleLegallyAdoptedCloseHostile, to: key,category: "SingleNode_NewLinkFormats",srelationText:remarks(srelationText,singleLegallyAdoptedCloseHostile,remarks_Single_lach,key),patt: "LegallyAdoptedCloseHostile", toArrow: "OpenTriangle" };
		} else if(key !== undefined && singleHideLink !== undefined) {// && (mother == SinglecloseHostile || father == SinglecloseHostile)
			var remarks_singleHideLink = data.shl;
			ctdata ={ from: singleHideLink, to: key,category: "singleHideLink",patt: "HideLink", toArrow: "OpenTriangle" };
		}
		
		myDiagram.model.addLinkData(ctdata);
		
}

Please let me know my way of coding is correct or not. Please help me on this. :(

I’m sorry, but we really do not understand the details of what you would like to do, so it is hard for us to comment on your code.

It would also help if you formatted your code properly, so that it would be more legible. Code Formatting Toward that end, it also would help if the lines were not so long, thereby requiring readers to scroll left and right.

It might help if you tried not using Orthogonal or AvoidsNodes routing for non-genetic relationships. Also using different colors might help improve the clarity of the diagrams.

Yes Formatting done. Please let me know if anything I missed here.
What is non-genetic relationships ? Do you mean customized links?

Orthogonal or AvoidsNodes routing for non-genetic relationships, then shall I use unlimited links in genogram?

If it is the case ,then here d:4 works in the below diagram for the below data?

diagramData = [

		  { key: 0, name: "Arron Father",s: "M",age:"59"},
		  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
		  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3,d:4},
		  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
		  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
	  
	  ];

image

Users are not preffering colors in their requirements. That is why not using colors.

Yes, I am suggesting that the diagram will be clearer to the user if the link that goes directly from Arron’s Father to Arron were not Orthogonal or AvoidsNodes. Same goes for the link from Arron’s Mother to Arron. You just showed a diagram published elsewhere that does the same thing that I am suggesting.

By genetic relationship I mean those links that are “marriages” connecting a father with a mother or that are “marriage-child” connecting a child with its father and mother.

Please look at my code which I posted and just check my way of working with code and also please let me know why extra links are not accepting.

I’m sorry, but such complexity goes way beyond what I’m able to do. I can give advice; I cannot debug your code for you.

Ok please let me know why extra links are not accepting. If I am not using Orthogonal or AvoidsNodes, then links are passing inside the nodes. This should not be happen.This is the requirement from my clients.

I don’t know what you mean by “extra links are not accepting”.


diagramData = [ 
{ key: 0, name: "Arron Father",s: "M",age:"59"},
 { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0}, 
{ key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3,d:4},
 { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0}, 
{ key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0}, ];

For the above data, below diagram is coming. Please see my comments on first post. I explained clearly.

image

And since the first post I still do not understand what the problem is, so the explanation is not clear to me.

Hi Walter,

Please see the below explaination :

[
	  { key: 0, name: "Arron Father",s: "M",age:"59"},
	  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
];

Output:

image

Next I am trying to add one one key:

[
{ key: 0, name: "Arron Father",s: "M",age:"59"},
{ key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
 { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0}
]

image

Next…adding another relation link (ssnlad:1) in key:2

[
			  
			  { key: 0, name: "Arron Father",s: "M",age:"59"},
			  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
			  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1}
		  
		  ];

image

Next… adding key:3

[
	  { key: 0, name: "Arron Father",s: "M",age:"59"},
	  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
	  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1},
	  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
		  
 ];

image

Next…Added another key…

[
			  
			  { key: 0, name: "Arron Father",s: "M",age:"59"},
			  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
			  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1},
			  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
			  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
		  
		  ];

image

Next… adding another relation link cs:3 in key:2

[
			  
			  { key: 0, name: "Arron Father",s: "M",age:"59"},
			  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
			  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3},
			  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
			  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
		  
		  ];
	

image

Next… issue is here:
Trying to add another relation d:4 in key:2 which is not showing the link between Arron and Arron Brother.

[
			  
			  { key: 0, name: "Arron Father",s: "M",age:"59"},
			  { key: 1, name: "Arron Mother",s: "F",age:"57",vir:0},
			  { key: 2, name: "Arron",s: "M",age:"25",m:1,f:0,sh:0,ssnlad:1,cs:3,d:4},
			  { key: 3, name: "Arron Sister",s: "F",age:"21",m:1,f:0},
			  { key: 4, name: "Arron Brother",s: "M",age:"18",m:1,f:0},
		  
		  ];

Thanks,
Prameela.D

My guess is that the Link was added but it is connecting the wrong Nodes (i.e. people). I suggest that you debug it by going over the Diagram.links and making sure each one connects the Nodes that you are expecting.

If it turns out that if that Link does not exist in the Diagram, you’ll need to debug your code about why it wasn’t added.

All of those relationships have Link.isLayoutPositioned set to false, yes?

Also to reduce link segment overlaps you could set LayeredDigraphLayout.setsPortSpots to false and set toSpot on each of your people’s port element to go.Spot.AllSides.