unhighlight by clicking on circle

average
Matt Huntington 2 years ago
parent a652c90528
commit 11fbce6d38

@ -6,16 +6,15 @@ const parseTime = d3.timeParse("%B %e, %Y");
let instances;
let xScale, yScale;
let highlighted = 0;
let highlighted = []
const renderTable = () => {
const trs = d3.select('tbody')
.html('')
.selectAll('tr')
.data(instances.filter(d => d.highlighted > 0).sort((a,b) => a.highlighted - b.highlighted), d => d.id)
.data(highlighted, d => d.id)
.enter()
.append('tr')
//.exit()
//.remove()
.selectAll('td')
.data(d => [
d.instance_id,
@ -45,13 +44,14 @@ const renderPoints = () => {
.attr('cx', (datum, index) => xScale(parseTime(datum.graduation_date)) );
d3.selectAll('circle')
.classed('highlighted', (datum, index)=> datum.highlighted > 0 )
.classed('highlighted', (datum, index)=> highlighted.find(i => i.instance_id === datum.instance_id) !== undefined)
d3.selectAll('circle').on('click', (event, datum) => {
if(datum.highlighted === 0){
datum.highlighted = ++highlighted;
const found = highlighted.find(i => i.instance_id === datum.instance_id)
if(found === undefined){
highlighted.push(datum)
} else {
datum.highlighted = 0;
highlighted = highlighted.filter(i => i.instance_id != datum.instance_id)
}
renderPoints()
renderTable()
@ -100,7 +100,9 @@ const createFormSubmissionHandler = () => {
event.preventDefault();
const instanceID = parseInt(d3.select('input[type="text"]').property('value'))
const found = instances.find(i => i.instance_id === instanceID)
found.highlighted = ++highlighted;
if(found !== undefined && highlighted.find(instance => instance.instance_id === instanceID) === undefined){
highlighted.push(found);
}
renderTable();
renderPoints();
});
@ -108,7 +110,6 @@ const createFormSubmissionHandler = () => {
window.onload = async ()=>{
instances = await d3.json('/instances');
instances.forEach(instance => instance.highlighted = highlighted)
setupGraph();
createAxes();
renderPoints();

Loading…
Cancel
Save