Spaces:
Running
Running
!(() => { | |
var ttFnSel = d3.select('body').selectAppend('div.tooltip-footnote.tooltip-footnote-hidden') | |
function index2superscipt(i){ | |
return (i + 1 + '') | |
.split('') | |
.map(num => '⁰¹²³⁴⁵⁶⁷⁸⁹'[num]) | |
.join('') | |
} | |
var footendSel = d3.selectAll('.footend') | |
.each(function(d, i){ | |
var sel = d3.select(this) | |
var ogHTML = sel.parent().html() | |
sel | |
.at({href: '#footstart-' + i, id: 'footend-' + i}) | |
.text(index2superscipt(i)) | |
.datum(ogHTML) | |
}) | |
footendSel.parent().parent().selectAll('br').remove() | |
var footstartSel = d3.selectAll('.footstart') | |
.each(function(d, i){ | |
d3.select(this) | |
.at({ | |
href: '#footend-' + i, | |
}) | |
.text(index2superscipt(i)) | |
.datum(footendSel.data()[i]) | |
.parent().at({id: 'footstart-' + i}) | |
}) | |
.call(addLockedTooltip) | |
function addLockedTooltip(sel){ | |
sel | |
.on('mouseover', function(d, i){ | |
ttFnSel | |
.classed('tooltip-footnote-hidden', 0) | |
.html(d).select('.footend').remove() | |
var [x, y] = d3.mouse(d3.select('html').node()) | |
var bb = ttFnSel.node().getBoundingClientRect(), | |
left = d3.clamp(20, (x-bb.width/2), window.innerWidth - bb.width - 20), | |
top = innerHeight + scrollY > y + 20 + bb.height ? y + 20 : y - bb.height - 10; | |
ttFnSel.st({left, top}) | |
}) | |
.on('mousemove', mousemove) | |
.on('mouseout', mouseout) | |
ttFnSel | |
.on('mousemove', mousemove) | |
.on('mouseout', mouseout) | |
function mousemove(){ | |
if (window.__ttfade) window.__ttfade.stop() | |
} | |
function mouseout(){ | |
if (window.__ttfade) window.__ttfade.stop() | |
window.__ttfade = d3.timeout( | |
() => ttFnSel.classed('tooltip-footnote-hidden', 1), | |
250 | |
) | |
} | |
} | |
})() | |