Skip to content

Instantly share code, notes, and snippets.

@bjtucker
Last active November 11, 2015 16:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bjtucker/269e2f16d32f5654bc47 to your computer and use it in GitHub Desktop.
Save bjtucker/269e2f16d32f5654bc47 to your computer and use it in GitHub Desktop.
highlight changed items
<!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