Skip to content

Instantly share code, notes, and snippets.

@lennymd
Last active April 23, 2020 03:54
Show Gist options
  • Save lennymd/b1f23b7b335f1e70ed6a8e03e3c848ee to your computer and use it in GitHub Desktop.
Save lennymd/b1f23b7b335f1e70ed6a8e03e3c848ee to your computer and use it in GitHub Desktop.
Trying to filter sections made using d3 by using CSS and a selectButton
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cards test</title>
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<select id="selectGenderButton"></select>
<section id="container"></section>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script>
d3.csv('sample.csv').then(dataset => {
allGender = d3.map(dataset, d => d.gender).keys();
allGender.unshift('all');
let container = d3.select('#container');
let filterGenderOption = d3.select('#selectGenderButton');
filterGenderOption.selectAll('myOptions')
.data(allGender)
.enter()
.append('option')
.text(d => d)
.attr("value", d => d);
let nest = d3.nest()
.key(d => d.name)
.entries(dataset);
console.log(nest);
let cards = container.selectAll('architect')
.data(nest)
.enter()
.append('section')
.attr('class', 'architect');
let names = cards.selectAll('h2')
.data(d => d.values)
.enter()
.append('h2')
.text(d => d.name)
.attr('class', 'name');
// add other things based on data
function update(selectedGender) {
// Create new data with the selection
var dataFilter = dataset.filter(d => d.gender != selectedGender);
console.log(dataFilter);
// add class 'hidden' to all the data that's been filtered.
let cards2 = container.selectAll('hidden')
.data(nest)
.enter()
.data(d => d.values)
.filter(d => d.gender != selectedGender)
.append('p')
.text(d => d.name);
}
filterGenderOption.on('change', (d) => {
selectedGender = filterGenderOption.property("value");
if (selectedGender != 'all') {
console.log(selectedGender);
update(selectedGender);
} else {
//show all cards
alert('this needs to be coded');
}
})
});
</script>
</body>
</html>
year name photo_url gender
2020 Norman Foster https://via.placeholder.com/150 male
2019 Zaha Hadid https://via.placeholder.com/150 female
2018 Tadao Ando https://via.placeholder.com/150 male
2017 Frank Gehry https://via.placeholder.com/150 male
2016 Bjarke Ingels https://via.placeholder.com/150 male
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment