Built with blockbuilder.org
| <!DOCTYPE html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> | |
| <style> | |
| body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
| svg { width: 100%; height: 100%; } | |
| .new { | |
| fill: green; | |
| } | |
| .changed { | |
| fill: red; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="container"></div> | |
| <script> | |
| // original fiddle here: http://jsfiddle.net/cpw3ee5t/ | |
| // a fork of http://jsfiddle.net/by38rLdv/4/ | |
| var margin = {top: 20, right: 10, bottom: 20, left: 10}; | |
| var width = 960 - margin.left - margin.right; | |
| var height = 500 - margin.top - margin.bottom; | |
| var svg = d3.select("body").append("svg") | |
| .attr("width", width + margin.left + margin.right) | |
| .attr("height", height + margin.top + margin.bottom) | |
| .append("g") | |
| .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); | |
| // Feel free to change or delete any of the code you see! | |
| var svg = d3.select("#container").append("svg") | |
| .attr("width",500).attr("height",100); | |
| var things = ["a", "b", "c"]; | |
| function update() { | |
| // clear old classes | |
| svg.selectAll("text").attr("class",""); | |
| // join to the new data | |
| var sel = svg.selectAll("text").data(things); | |
| // higlight changed items before update | |
| sel.classed("changed", function(d) { return d != d3.select(this).text(); }); | |
| // enter | |
| sel.enter() | |
| .append("text") | |
| .attr("class","new") | |
| .attr("x", function(d,i) { return 20*i; }) | |
| .attr("y", 20) | |
| .on("click", function(d,i) { | |
| things[i] = String.fromCharCode(things[i].charCodeAt(0)+1); | |
| update(); | |
| }); | |
| // update + enter | |
| sel.text(function(d) { return d; }); | |
| // exit | |
| sel.exit().remove(); | |
| } | |
| // initial setup | |
| update(); | |
| console.log("you are now rocking with d3", d3); | |
| </script> | |
| </body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment