interactions = (country) => country.on("click", d => {
const tooltip = d3.select(".svg-tooltip")
const region = Array.isArray(d)? d[0]: d.properties.name
set(viewof countrySelected, countrySelected != region? region: AggregateId)
d3.selectAll(".region.selected").classed("selected", false)
countrySelected != AggregateId? d3.select(`#${toId(region)}`).classed("selected", true): ""
}).on("mouseover", d => {
const tooltip = d3.select(".svg-tooltip")
const hoveredRegion = Array.isArray(d)? d[0]: d.properties.name
const region = countrySelected != AggregateId? countrySelected: hoveredRegion
if(groupByRegion.has(hoveredRegion)){
const flag = `<image height="40" preserveAspectRatio="none" src="${flagsMap.get(region)[0].url}"></image><br/>`
const country = region == AggregateId? region: customCountriesReverseMap.get(region).x
const periodDescription = comparison.shift == 0? dateMappedToStrings[date]: `${dateMappedToStrings[date]} v ${dateMappedToStrings[getComparedDate(date)]}`
const separator = `${compareDatesMap.get(region)? " : ": " : no comparison"}`
const kpi = `<span class="kpi">${d3.format(comparison.shift == 0? format.period: format.deltas)(comparison.shift == 0?compareDatesMap.get(region): compareDatesMap.get(region)*kpiUnitDivider)}</span>`
tooltip.html(`${flag}${country}<br/>${kpiMetricDescription}<br/>${periodDescription}${separator}${compareDatesMap.get(region)? kpi : ""}<br/>`)
sparkAreaTweaked(tooltip, region, {
x: groupByRegion.get(region).map(d => parseDate(d.date) ),
y: groupByRegion.get(region).map(d => Math.max(0, d.ode)),
sparkXdomain
})
}
})
.on("mousemove", function(d){
const hoveredRegion = Array.isArray(d)? d[0]: d.properties.name
const region = countrySelected != AggregateId? countrySelected: hoveredRegion
if(groupByRegion.has(/*region*/hoveredRegion)){
let el = d3.select(this).classed("marker")? d3.select(`#${toId(d[0])}`): d3.select(this)
el.attr("stroke-width", 1.5)
d3.select(this).classed("marker")?
d3.select(this)
.attr("stroke", markerType == "Bubble"? "#444": "black"):
""
} //end if
})
.on("mouseleave", function(d){
const tooltip = d3.select(".svg-tooltip")
//const hoveredRegion = Array.isArray(d)? d[0]: d.properties.name
const region = countrySelected /*AggregateId*//*countrySelected != AggregateId? countrySelected: hoveredRegion*/
tooltip.html(totalLegendPlaceholder)
sparkAreaTweaked(tooltip, region, {
x: groupByRegion.get(region).map(d => parseDate(d.date) ),
y: groupByRegion.get(region).map(d => Math.max(0, d.ode)),
sparkXdomain
})
let el = d3.select(this).classed("marker")?
d3.select(`#${toId(d[0])}`).attr("stroke-width", 0.2):
d3.select(this).attr("stroke-width", 0.2)
d3.select(this).classed("marker")?
d3.select(this)
.attr("stroke", markerType == "Bubble"? "#e1e1e1": "black"):
""
})