var distributome = new Object (); distributome.nodes = new Array (); distributome.edges = new Array (); var distributomeNodes = new Array(); var referenceNodes = new Array(); var DistributomeXML_Objects; var xmlDoc; var force = null; var presetNodes = null; var topHierarchyArray = new Array(); var middleHierarchyArray = new Array(); var connectivity = false; function getColor(d){ if(d.selected == 'yellow'){ return "yellow"; }else if(d.selected == 'green'){ return "green"; }else if(d.selected == 'red'){ return "red"; } if(connectivity){ if(connectivity == "top_hierarchy"){ if(d.selected == "top_hierarchy") return colors(d.group); else return "pv.hsla(0, 100%, 50%, 0.1)"; }else if(connectivity == "middle_hierarchy"){ if(d.selected == "top_hierarchy" || d.selected == "middle_hierarchy") return colors(d.group); else return "pv.hsla(0, 100%, 50%, 0.1)"; } } else return colors(d.group); } function getText(d){ if(connectivity){ if(d.selected == "red" || d.selected == "yellow" || d.selected == "green") return d.nodeName; if(connectivity == "top_hierarchy"){ if(d.selected == "top_hierarchy") return d.nodeName; else return ''; }else if(connectivity == "middle_hierarchy"){ if(d.selected == "top_hierarchy" || d.selected == "middle_hierarchy") return d.nodeName; else return ''; } } return d.nodeName; } function getArrowColor(d,l){ if(connectivity){ if(connectivity == "top_hierarchy"){ if(distributome.nodes[l.source].selected == "top_hierarchy" && distributome.nodes[l.target].selected == "top_hierarchy") return '#C0C0C0'; else return "pv.hsla(0, 0%, 63%, 0.1)"; }else if(connectivity == "middle_hierarchy"){ if(distributome.nodes[l.source].selected && distributome.nodes[l.target].selected) return '#C0C0C0'; else return "pv.hsla(0, 0%, 63%, 0.1)"; } } return "#C0C0C0"; } function getArrowSize(d,l){ if(connectivity){ if(connectivity == "top_hierarchy"){ if(distributome.nodes[l.source].selected == "top_hierarchy" && distributome.nodes[l.target].selected == "top_hierarchy") return 3; else return 0.5; }else if(connectivity == "middle_hierarchy"){ if(distributome.nodes[l.source].selected && distributome.nodes[l.target].selected) return 3; else return 0.5; } } return 3; } /*************** Reset Distributome Page **************/ function resetPage(){ resetNavigator(); resetDropDown(); } /*************** Reset variables **************/ function resetVariables(){ resetNodesEdges(); presetNodes = null; connectivity = false; //Default href for calculator, experiment, simulation document.getElementById('distributome.calculator').href = './calc/NormalCalculator.html'; document.getElementById('distributome.experiment').href = './exp/BallUrnExperiment.html'; document.getElementById('distributome.simulation').href = './sim/NormalSimulation.html'; } /*************** Reset search text **************/ function resetText(){ document.getElementById('distributome.text').value = ''; //debugging document.getElementById('bibtex_display').innerHTML = 'Distribution Referencies'; document.getElementById('distributome.propertiesPannel').innerHTML = 'Distribution Properties'; document.getElementById('distributome.relationPannel').innerHTML = 'Distribution Relations'; } function resetDropDown(){ setDropDownSelectedValue('distributome.edgeTypeAction', 0); setDropDownSelectedValue('distributome.nodeTypeAction', 0); setDropDownSelectedValue('distributome.neighborAction', 0); setDropDownSelectedValue('distributome.connectedNodesAction', 0); } /*************** Reset view **************/ function resetView(){ resetVariables(); resetText(); } function getLinkColor(d,l){ if(l.selected == 'yellow'){ return "yellow"; }else if(l.selected == 'green'){ return "green"; }else if(l.selected == 'red'){ return "red"; } if(connectivity){ if(connectivity == "top_hierarchy"){ if((distributome.nodes[l.source].selected && distributome.nodes[l.source].selected != "middle_hierarchy") && (distributome.nodes[l.target].selected && distributome.nodes[l.target].selected != "middle_hierarchy")){ l.selected = 'top_hierarchy'; return 'rgb(170,170,170)'; } else return "pv.hsla(0, 0%, 63%, 0.1)"; }else if(connectivity == "middle_hierarchy"){ if(distributome.nodes[l.source].selected && distributome.nodes[l.target].selected){ l.selected = 'middle_hierarchy'; return 'rgb(170,170,170)'; } else return "pv.hsla(0, 0%, 63%, 0.1)"; } } else return 'rgb(170,170,170)'; } /*************** Fetch relation information of an edge **************/ function getRelationProperties(nodeName, linkIndex){ if(!_shiftKey){ resetEdges(); } distributome.edges[linkIndex].selected = "red"; var html = new Array();; html.push("Inter-Distribution Relations
"); var parserOutput = XMLParser(getObjectReferenceNumber('relation'), 7, linkIndex, true, DistributomeXML_Objects); html.push(parserOutput[0]); //alert(parserOutput); var referenceName = parserOutput[1]; //alert(referenceName); document.getElementById('distributome.relationPannel').innerHTML = html.join(''); //(new BibtexDisplay()).displayBibtex2(bib_data, $("#bibtex_display"), referenceName.toUpperCase()); (new BibtexDisplay()).displayBibtex2(bib_data, $("#bibtex_display"), referenceName); renderMath(); vis.render(); } /*************** Fetch node properties **************/ function getNodeProperties(index, nodeName, d){ //alert("distributome.js::getNodeProperties::index = " + index+"\t nodeName="+nodeName); if(connectivity && d.selected != "top_hierarchy" && d.selected != "middle_hierarchy") return; if(!_shiftKey){ resetNodes(); presetNodes = null; if(connectivity) { resetView(); connectedNodesFetch(); } } distributome.nodes[index].selected = "red"; var html = new Array(); // FILLS DISTRIBUTOME PROPERTIES PANEL html.push("Distribution Properties "); var parserOutput = XMLParser(getObjectReferenceNumber('node'), 1, index, true, DistributomeXML_Objects); html.push(parserOutput[0]); var referenceName= parserOutput[1]; document.getElementById('distributome.propertiesPannel').innerHTML = html.join(''); (new BibtexDisplay()).displayBibtex2(bib_data, $("#bibtex_display"), referenceName); // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // GETS DISTRIBUTOME REFERENCES //alert("distributome.js::getNodeProperties::referenceName = " + referenceName); /* if(referenceName !=null){ if (BibtexParser != null) { BibtexParser.setRef(referenceName); } getReferences(referenceNodes[referenceName]); } // else { if (BibtexParser != null) { BibtexParser.setRef(null); } getReferences(false); } */ renderMath(); nodeName = trimSpecialCharacters(nodeName); var firstChar = nodeName.substring(0,1).toUpperCase(); nodeName = nodeName.substring(1); //Is it camel case or only first letter Upper Case? // GENERATES LINKS FOR DISTRIBUTION ACTIONS //alert("...Setting the Calc, Sim and Exp ..."); document.getElementById('distributome.calculator').href = './calc/'+firstChar+nodeName+'Calculator.html'; document.getElementById('distributome.experiment').href = './exp/'+firstChar+nodeName+'Experiment.html'; document.getElementById('distributome.simulation').href = './sim/'+firstChar+nodeName+'Simulation.html'; vis.render(); } /*************** Function invoked on node and edges action **************/ function search(searchType, indexType, type){ var i= getObjectReferenceNumber(searchType); if (DistributomeXML_Objects[i].nodeType==1) { var Level1Prop=xmlDoc.getElementsByTagName(DistributomeXML_Objects[i].nodeName)[0].childNodes; var currLevel1Prop=xmlDoc.getElementsByTagName(DistributomeXML_Objects[i].nodeName)[0].firstChild; var currentNodeIndex = 0; for (var j=0, node_cnt=0;j