Spaces:
Running
Running
function createPhotoScroller(){ | |
var base_path = 'img/woman_washing_clothes.jpeg' | |
var data = [ | |
{ | |
'path': 'img/labels_1.svg', | |
'alt': 'Image of a woman washing clothes with bounding boxes including \'person\', and \'bucket\'', | |
'x': 198, | |
'y': 30, | |
'width': 305, | |
'height': 400, | |
}, | |
{ | |
'path': 'img/labels_4.svg', | |
'alt': 'Image of a woman washing clothes with bounding boxes including \'parent\', and \'laundry\'', | |
'x': 110, | |
'y': 60, | |
'width': 450, | |
'height': 470, | |
}, | |
{ | |
'path': 'img/labels_2.svg', | |
'alt': 'Image of a woman washing clothes with bounding boxes including \'hair_boho\', and \'decor_outdoor_rustic\'', | |
'x': 198, | |
'y': -35, | |
'width': 395, | |
'height': 500 | |
}, | |
{ | |
'path': 'img/labels_3.svg', | |
'alt': 'Image of a woman washing clothes with one bounding box around her, labeled \'pedestrian\'', | |
'x': 190, | |
'y': 65, | |
'width': 190, | |
'height': 315 | |
}, | |
]; | |
var photoIndex = 0; | |
var c = d3.conventions({ | |
sel: d3.select('.person-photos').html(''), | |
height: 550 | |
}) | |
var photoSel = c.svg.append('svg:image') | |
.attr('x', 50) | |
.attr('y', 50) | |
.attr('width', 700) | |
.attr('height', 500) | |
.attr('xlink:href', base_path) | |
var photoSel = c.svg.appendMany('svg:image', data) | |
.attr('x', d => d.x) | |
.attr('y', d => d.y) | |
.attr('width', d => d.width) | |
.attr('height', d => d.height) | |
.attr('xlink:href', d => d.path) | |
.attr('alt', d => d.alt) | |
var buttonHeight = 35 | |
var buttonWidth = 130 | |
var buttonSel = c.svg.appendMany('g.photo-button', data) | |
.translate((d,i) => [(i * 170) + 100, 0]) | |
.at({ | |
// class: "dropdown" | |
}) | |
.on('click', function(d, i){ | |
photoIndex = i | |
setActiveImage() | |
timer.stop(); | |
}) | |
buttonSel.append('rect') | |
.at({ | |
height: buttonHeight, | |
width: buttonWidth, | |
// fill: '#fff' | |
}) | |
buttonSel.append('text') | |
.at({ | |
textAnchor: 'middle', | |
// dominantBaseline: 'central', | |
dy: '.33em', | |
x: buttonWidth/2, | |
y: buttonHeight/2, | |
class: "monospace" | |
}) | |
.text((d,i) => 'ground truth ' + (i + 1)) | |
// buttonSel.classed('dropdown', true); | |
if (window.__photoPersonTimer) window.__photoPersonTimer.stop() | |
var timer = window.__photoPersonTimer = d3.interval(() => { | |
photoIndex = (photoIndex + 1) % data.length; | |
setActiveImage() | |
}, 2000) | |
function setActiveImage(i){ | |
photoSel.st({opacity: (d, i) => i == photoIndex ? 1 : 0 }) | |
buttonSel.classed('is-active-button', (d, i) => i == photoIndex) | |
} | |
setActiveImage() | |
} | |
createPhotoScroller(); | |