house_choro = {
const container = html`<div class="tooltip-carto"></div>`;
const div = d3.select(container).append("div").classed("tooltip", true);
const tooltip = new Tooltip(div);
function tooltipContents(datum) {
return `${datum}`;
}
const svg = d3
.select(container)
.append("svg")
.attr("viewBox", `0 0 700 525`)
.attr("width", 700)
.attr("height", 525);
const base_map = svg.append("g");
base_map
.append("g")
.attr("class", "state-outline")
.selectAll("path")
.data(house_carto.outlines)
.enter()
.append("path")
.attr("id", (d) => d.state)
.on("mouseover", (event, d) => {})
.on("mouseover", (event, d) => {})
.on("mouseout", (event, d) => {})
.attr("d", (t) => t.d)
.attr("transform", (t) =>
"translate(".concat(t.translate[0], ", ").concat(t.translate[1], ")")
)
.lower();
const tiles = svg.append("g");
const scale = 5;
tiles
.append("g")
.attr("class", "map")
.attr(
"transform",
"scale("
.concat(scale, ")translate(")
.concat(24 * scale, ",")
.concat(10 * scale, ")")
);
tiles
.append("g")
.attr("class", "district")
.selectAll("path")
.data(house_carto.districts)
.enter()
.append("path")
.attr("d", (t) =>
"M".concat(t.points.map((t) => t.join(" ")).join("L"), "Z")
)
.attr("fill", (d) =>
d3.scaleSequential([0, 1], d3.interpolateReds)(winprob[d.race] / 100)
)
.attr("fill-opacity", 1)
.on("mouseover", (event, d) => {
console.log(d3.select("#" + d.state));
d3.select(event.target).attr("class", "district outline");
d3.select("#" + d.state).attr("class", "state-outline dark");
tooltip.display(candidate[d.race], tooltipContents);
})
.on("mouseout", (event, d) => {
d3.select(event.target).attr("class", "district");
d3.select("#" + d.state).attr("class", "state-outline");
tooltip.hide();
})
.on("mousemove", (event, d) => {
tooltip.move(event);
});
const labels = svg.append("g");
labels
.selectAll("g.labels")
.data(["bg", "fg"])
.enter()
.append("g")
.attr("class", (t) => "labels ".concat(t))
.selectAll("text")
.data(house_carto.labels)
.enter()
.append("text")
.attr("transform", (t, e) =>
"translate(".concat(t.x, ", ").concat(t.y, ")")
)
.text((t, e) => t.state);
return container;
}