Selection sorting.
From D3 in Depth book by Peter Cook.
license: gpl-3.0 | |
height: 140 | |
border: no |
Selection sorting.
From D3 in Depth book by Peter Cook.
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<head> | |
<title>DOM Manipulation</title> | |
</head> | |
<style> | |
body { | |
font-family: "Helvetica Neue", Helvetica, sans-serif; | |
font-size: 14px; | |
} | |
.person { | |
height: 20px; | |
position: relative; | |
} | |
.person .label { | |
width: 90px; | |
text-align: right; | |
} | |
.person .bar { | |
height: 19px; | |
background-color: steelblue; | |
position: absolute; | |
left: 100px; | |
} | |
.person div { | |
display: inline-block; | |
} | |
.menu { | |
margin-top: 20px; | |
} | |
</style> | |
<body> | |
<div id="wrapper"> | |
</div> | |
<div class="menu"> | |
<button onClick="sort();">Sort</button> | |
</div> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.2.2/d3.min.js"></script> | |
<script> | |
myData = [ | |
{ | |
"name": "Andy", | |
"score": 37 | |
}, | |
{ | |
"name": "Beth", | |
"score": 39 | |
}, | |
{ | |
"name": "Craig", | |
"score": 31 | |
}, | |
{ | |
"name": "Diane", | |
"score": 35 | |
}, | |
{ | |
"name": "Evelyn", | |
"score": 38 | |
} | |
]; | |
var barWidth = 400; | |
var barScale = d3.scaleLinear().domain([0, 100]).range([0, barWidth]); | |
var u = d3.select('#wrapper') | |
.selectAll('.person') | |
.data(myData); | |
var entering = u.enter() | |
.append('div') | |
.classed('person', true); | |
entering.append('div') | |
.classed('label', true) | |
.text(function(d) { | |
return d.name; | |
}); | |
entering.append('div') | |
.classed('bar', true) | |
.style('width', function(d) { | |
return barScale(d.score) + 'px'; | |
}); | |
function sort() { | |
d3.selectAll('.person') | |
.sort(function(a, b) { | |
return b.score - a.score; | |
}); | |
} | |
</script> | |
</body> | |
</html> |