| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- /* phylotree d3js graphs */
 
- (function ($) {
 
-   var height = 0; // will be dynamically sized
 
-   $(document).ready( function () {
 
-     // Callback function to determine node size.
 
-     var nodeSize = function(d) {
 
-       var size;
 
-       if (d.cvterm_name == "phylo_root") {
 
-         size = treeOptions['root_node_size']; 
 
-       }
 
-       if (d.cvterm_name == "phylo_interior") {
 
-         size = treeOptions['interior_node_size']; 
 
-       }
 
-       if (d.cvterm_name == "phylo_leaf") {
 
-         size = treeOptions['leaf_node_size']; 
 
-       }
 
-       return size;
 
-     }
 
-     // Callback function to determine the node color.
 
-     var organismColor = function(d) {
 
-       var color = null;
 
-       if (d.genus) {
 
-         color = organismColors[d.genus + ' ' + d.species];
 
-       }
 
-       if (color) { 
 
-         return color; 
 
-       }
 
-       else { 
 
-         return 'grey'; 
 
-       }
 
-     };
 
-     // Callback for mouseover event on graph node d.
 
-     var nodeMouseOver = function(d) {
 
-       var el = $(this);
 
-       el.attr('cursor', 'pointer');
 
-       var circle = el.find('circle');
 
-       // highlight in yellow no matter if leaf or interior node
 
-       circle.attr('fill', 'yellow');
 
-       if(!d.children) {
 
-         // only leaf nodes have descriptive text
 
-         var txt = el.find('text');
 
-         txt.attr('font-weight', 'bold');
 
-       }
 
-     };
 
-     
 
-     // Callback for mouseout event on graph node d.
 
-     var nodeMouseOut = function(d) {
 
-       var el = $(this);
 
-       el.attr('cursor', 'default');
 
-       var circle = el.find('circle');
 
-       if(!d.children) {
 
-         // restore the color based on organism id for leaf nodes
 
-         circle.attr('fill', organismColor(d));
 
-         var txt = el.find('text');
 
-         txt.attr('font-weight', 'normal');
 
-       }
 
-       else {
 
-         // restore interior nodes to white
 
-         circle.attr('fill', 'white');
 
-       }
 
-     };
 
-     
 
-     // Callback for mousedown/click event on graph node d.
 
-     var nodeMouseDown = function(d) {
 
-       var el = $(this);
 
-       var title = (! d.children ) ? d.name : 'interior node ' + d.phylonode_id;
 
-       if(d.children) {
 
-         // interior node
 
-         if(d.phylonode_id) {
 
-         }
 
-         else {
 
-           // this shouldn't happen but ok
 
-         }
 
-       }
 
-       else {
 
-         // If this node is not associated with a feature but it has an 
 
-         // organism node then this is a taxonomic node and we want to
 
-         // link it to the organism page.
 
-         if (!d.feature_id && d.organism_node_id) {
 
-           window.location.replace(baseurl + '/node/' + d.organism_node_id);
 
-         }
 
-         // leaf node
 
-       }
 
-     };
 
-     // AJAX function for retrieving the tree data.
 
-     $.getJSON(phylotreeDataURL, function(treeData) {
 
-       displayData(treeData);
 
-       $('.phylogram-ajax-loader').hide();
 
-     });
 
-     // Creates the tree using the d3.phylogram.js library.
 
-     function displayData(treeData) {
 
-       height = graphHeight(treeData);
 
-       d3.phylogram.build('#phylogram', treeData, {
 
-         'width' : treeOptions['phylogram_width'],
 
-         'height' : height,
 
-         'fill' : organismColor,
 
-         'size' : nodeSize,
 
-         'nodeMouseOver' : nodeMouseOver,
 
-         'nodeMouseOut' : nodeMouseOut,
 
-         'nodeMouseDown' : nodeMouseDown,
 
-         'skipTicks' : treeOptions['skipTicks']
 
-       });
 
-     }
 
-     /* graphHeight() generate graph height based on leaf nodes */
 
-     function graphHeight(data) {
 
-       function countLeafNodes(node) {
 
-         if(! node.children) {
 
-           return 1;
 
-         }
 
-         var ct = 0;
 
-         node.children.forEach( function(child) {
 
-           ct+= countLeafNodes(child);
 
-         });
 
-         return ct;
 
-       }
 
-       var leafNodeCt = countLeafNodes(data);
 
-       return 22 * leafNodeCt;
 
-     }
 
-   });
 
- })(jQuery);
 
 
  |