block by ramnathv 5841623

5841623

Full Screen

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Node-Link Tree</title>
    
	<link href="interactive_tree.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="//mbostock.github.com/d3/d3.js?1.27.2"></script>
    <script type="text/javascript" src="//mbostock.github.com/d3/d3.layout.js?1.27.2"></script>
 
  </head>
  <body>
    <div id="chart"></div>
    <script type="text/javascript">

var w = 960,
    h = 2000,
    i = 0,
    duration = 500,
    root;

var tree = d3.layout.tree()
    .size([h, w - 160]);

var diagonal = d3.svg.diagonal()
    .projection(function(d) { return [d.y, d.x]; });

var vis = d3.select("#chart").append("svg:svg")
    .attr("width", w)
    .attr("height", h)
  .append("svg:g")
    .attr("transform", "translate(40,0)");

d3.json("math_map_compact.json", function(json) {
  json.x0 = 800;
  json.y0 = 0;
  update(root = json);
});

function update(source) {

  // Compute the new tree layout.
  var nodes = tree.nodes(root).reverse();
 console.log(nodes)
  // Update the nodes…
  	var node = vis.selectAll("g.node")
      .data(nodes, function(d) { return d.id || (d.id = ++i); });

	var nodeEnter = node.enter().append("svg:g")
    	.attr("class", "node")
    	.attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; });
    	//.style("opacity", 1e-6);
 
  // Enter any new nodes at the parent's previous position.
 
  	nodeEnter.append("svg:circle")
      //.attr("class", "node")
      //.attr("cx", function(d) { return source.x0; })
      //.attr("cy", function(d) { return source.y0; })
      .attr("r", 4.5)
      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; })
      .on("click", click);
	
	nodeEnter.append("svg:text")
      	.attr("x", function(d) { return d._children ? -8 : 8; })
		.attr("y", 3)
      	//.attr("fill","#ccc")
      	//.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
      	.text(function(d) { return d.name; });

  // Transition nodes to their new position.
	nodeEnter.transition()
		.duration(duration)
		.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
      	.style("opacity", 1)
      .select("circle")
    	//.attr("cx", function(d) { return d.x; })
		//.attr("cy", function(d) { return d.y; })
        .style("fill", "lightsteelblue");
      
    node.transition()
      .duration(duration)
      .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
      .style("opacity", 1);
    

	node.exit().transition()
      .duration(duration)
      .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
      .style("opacity", 1e-6)
      .remove();
/*
	var nodeTransition = node.transition()
		.duration(duration);
  
  nodeTransition.select("circle")
      .attr("cx", function(d) { return d.y; })
      .attr("cy", function(d) { return d.x; })
      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
  
  nodeTransition.select("text")
      .attr("dx", function(d) { return d._children ? -8 : 8; })
	  .attr("dy", 3)
      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#5babfc"; });

  // Transition exiting nodes to the parent's new position.
  var nodeExit = node.exit();
  
  nodeExit.select("circle").transition()
      .duration(duration)
      .attr("cx", function(d) { return source.y; })
      .attr("cy", function(d) { return source.x; })
      .remove();
  
  nodeExit.select("text").transition()
      .duration(duration)
      .remove();
*/
  // Update the links…
  var link = vis.selectAll("path.link")
      .data(tree.links(nodes), function(d) { return d.target.id; });

  // Enter any new links at the parent's previous position.
  link.enter().insert("svg:path", "g")
      .attr("class", "link")
      .attr("d", function(d) {
        var o = {x: source.x0, y: source.y0};
        return diagonal({source: o, target: o});
      })
    .transition()
      .duration(duration)
      .attr("d", diagonal);

  // Transition links to their new position.
  link.transition()
      .duration(duration)
      .attr("d", diagonal);

  // Transition exiting nodes to the parent's new position.
  link.exit().transition()
      .duration(duration)
      .attr("d", function(d) {
        var o = {x: source.x, y: source.y};
        return diagonal({source: o, target: o});
      })
      .remove();

  // Stash the old positions for transition.
  nodes.forEach(function(d) {
    d.x0 = d.x;
    d.y0 = d.y;
  });
}

// Toggle children on click.
function click(d) {
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  update(d);
}

d3.select(self.frameElement).style("height", "2000px");

    </script>
  </body>
</html>

interactive_tree.css

circle {
  cursor: pointer;
  fill: #fff;
  stroke: steelblue;
  stroke-width: 1.5px;
}

text {
	font-size:10px;
}

path.link {
  fill: none;
  stroke: #ccc;
  stroke-width: 1.5px;
}

math_map_compact.json

{
    "name": "MAT",
    "children": [
        {
            "name": "TRI",
            "children": [
                {
                    "name": "Right Triangles and an Introduction to Trigonometry",
                    "children": [
                        {
                            "name": "The Pythagorean Theorem"
                        },
                        {
                            "name": "Special Right Triangles"
                        },
                        {
                            "name": "Basic Trigonometric Functions"
                        },
                        {
                            "name": "Solving Right Triangles"
                        },
                        {
                            "name": "Measuring Rotation"
                        },
                        {
                            "name": "Applying Trig Functions to Angles of Rotation"
                        },
                        {
                            "name": "Trigonometric Functions of Any Angle"
                        }
                    ]
                },
                {
                    "name": "Graphing Trigonometric Functions - 2nd edition",
                    "children": [
                        {
                            "name": "Relating Trigonometric Functions"
                        },
                        {
                            "name": "Radian Measure"
                        },
                        {
                            "name": "Applications of Radian Measure"
                        },
                        {
                            "name": "Circular Functions of Real Numbers"
                        },
                        {
                            "name": "Translating Sine and Cosine Functions"
                        },
                        {
                            "name": "Amplitude, Period and Frequency"
                        },
                        {
                            "name": "General Sinusoidal Graphs"
                        }
                    ]
                },
                {
                    "name": "Trigonometric Identities and Equations - 2nd edition",
                    "children": [
                        {
                            "name": "Graphing Tangent, Cotangent, Secant, and Cosecant"
                        },
                        {
                            "name": "Fundamental Identities"
                        },
                        {
                            "name": "Proving Identities"
                        },
                        {
                            "name": "Solving Trigonometric Equations"
                        },
                        {
                            "name": "Sum and Difference Identities"
                        },
                        {
                            "name": "Double Angle Identities"
                        },
                        {
                            "name": "Half-Angle Identities"
                        }
                    ]
                },
                {
                    "name": "Inverse Trigonometric Functions - 2nd edition",
                    "children": [
                        {
                            "name": "Products, Sums, Linear Combinations, and Applications"
                        },
                        {
                            "name": "Basic Inverse Trigonometric Functions"
                        },
                        {
                            "name": "Graphing Inverse Trigonometric Functions"
                        },
                        {
                            "name": "Inverse Trigonometric Properties"
                        }
                    ]
                },
                {
                    "name": "Triangles and Vectors",
                    "children": [
                        {
                            "name": "Applications & Models"
                        },
                        {
                            "name": "The Law of Cosines"
                        },
                        {
                            "name": "Area of a Triangle"
                        },
                        {
                            "name": "The Law of Sines"
                        },
                        {
                            "name": "The Ambiguous Case"
                        },
                        {
                            "name": "General Solutions of Triangles"
                        },
                        {
                            "name": "Vectors"
                        }
                    ]
                }
            ]
        },
        {
            "name": "ALG",
            "children": [
                {
                    "name": "Equations and Functions",
                    "children": [
                        {
                            "name": "Variable Expressions"
                        },
                        {
                            "name": "Order of Operations"
                        },
                        {
                            "name": "Patterns and Equations"
                        },
                        {
                            "name": "Equations and Inequalities"
                        },
                        {
                            "name": "Functions as Rules and Tables"
                        },
                        {
                            "name": "Functions as Graphs"
                        },
                        {
                            "name": "Problem-Solving Plan"
                        }
                    ]
                },
                {
                    "name": "Real Numbers",
                    "children": [
                        {
                            "name": "Problem-Solving Strategies: Make a Table and Look for a Pattern"
                        },
                        {
                            "name": "Integers and Rational Numbers"
                        },
                        {
                            "name": "Adding and Subtracting Rational Numbers"
                        },
                        {
                            "name": "Multiplying and Dividing Rational Numbers"
                        },
                        {
                            "name": "The Distributive Property"
                        },
                        {
                            "name": "Square Roots and Real Numbers"
                        }
                    ]
                },
                {
                    "name": "Equations of Lines",
                    "children": [
                        {
                            "name": "Problem-Solving Strategies: Guess and Check, Work Backward"
                        },
                        {
                            "name": "One-Step Equations"
                        },
                        {
                            "name": "Two-Step Equations"
                        },
                        {
                            "name": "Multi-Step Equations"
                        },
                        {
                            "name": "Equations with Variables on Both Sides"
                        },
                        {
                            "name": "Ratios and Proportions"
                        }
                    ]
                },
                {
                    "name": "Graphs of Equations and Functions",
                    "children": [
                        {
                            "name": "Percent Problems"
                        },
                        {
                            "name": "The Coordinate Plane"
                        },
                        {
                            "name": "Graphs of Linear Equations"
                        },
                        {
                            "name": "Graphing Using Intercepts"
                        },
                        {
                            "name": "Slope and Rate of Change"
                        },
                        {
                            "name": "Graphs Using Slope-Intercept Form"
                        },
                        {
                            "name": "Direct Variation Models"
                        },
                        {
                            "name": "Linear Function Graphs"
                        }
                    ]
                },
                {
                    "name": "Writing Linear Equations",
                    "children": [
                        {
                            "name": "Problem-Solving Strategies - Graphs"
                        },
                        {
                            "name": "Forms of Linear Equations"
                        },
                        {
                            "name": "Equations of Parallel and Perpendicular Lines"
                        },
                        {
                            "name": "Fitting a Line to Data"
                        }
                    ]
                },
                {
                    "name": "Linear Inequalities",
                    "children": [
                        {
                            "name": "Predicting with Linear Models"
                        },
                        {
                            "name": "Solving Inequalities"
                        },
                        {
                            "name": "Using Inequalities"
                        },
                        {
                            "name": "Compound Inequalities"
                        },
                        {
                            "name": "Absolute Value Equations and Inequalities"
                        }
                    ]
                },
                {
                    "name": "Solving Systems of Equations and Inequalities",
                    "children": [
                        {
                            "name": "Linear Inequalities in Two Variables"
                        },
                        {
                            "name": "Linear Systems by Graphing"
                        },
                        {
                            "name": "Solving Linear Systems by Substitution"
                        },
                        {
                            "name": "Solving Linear Systems by Elimination"
                        },
                        {
                            "name": "Special Types of Linear Systems"
                        }
                    ]
                },
                {
                    "name": "Exponential Functions",
                    "children": [
                        {
                            "name": "Systems of Linear Inequalities"
                        },
                        {
                            "name": "Exponent Properties Involving Products"
                        },
                        {
                            "name": "Exponent Properties Involving Quotients"
                        },
                        {
                            "name": "Zero, Negative, and Fractional Exponents"
                        },
                        {
                            "name": "Scientific Notation"
                        },
                        {
                            "name": "Geometric Sequences"
                        },
                        {
                            "name": "Exponential Functions"
                        }
                    ]
                },
                {
                    "name": "Polynomials",
                    "children": [
                        {
                            "name": "Applications of Exponential Functions"
                        },
                        {
                            "name": "Addition and Subtraction of Polynomials"
                        },
                        {
                            "name": "Multiplication of Polynomials"
                        },
                        {
                            "name": "Special Products of Polynomials"
                        },
                        {
                            "name": "Polynomial Equations in Factored Form"
                        },
                        {
                            "name": "Factoring Quadratic Expressions"
                        },
                        {
                            "name": "Factoring Special Products"
                        }
                    ]
                },
                {
                    "name": "Quadratic Equations and Quadratic Functions",
                    "children": [
                        {
                            "name": "Factoring Polynomials Completely"
                        },
                        {
                            "name": "Graphs of Quadratic Functions"
                        },
                        {
                            "name": "Quadratic Equations by Graphing"
                        },
                        {
                            "name": "Quadratic Equations by Square Roots"
                        },
                        {
                            "name": "Solving Quadratic Equations by Completing the Square"
                        },
                        {
                            "name": "Solving Quadratic Equations by the Quadratic Formula"
                        },
                        {
                            "name": "The Discriminant"
                        }
                    ]
                },
                {
                    "name": "Algebra and Geometry Connections",
                    "children": [
                        {
                            "name": "Linear, Exponential and Quadratic Models"
                        },
                        {
                            "name": "Graphs of Square Root Functions"
                        },
                        {
                            "name": "Radical Expressions"
                        },
                        {
                            "name": "Radical Equations"
                        },
                        {
                            "name": "The Pythagorean Theorem and Its Converse"
                        }
                    ]
                }
            ]
        }
    ]
}