From 8d9fce1b12f085d5de74a8fbce32b845f19c9703 Mon Sep 17 00:00:00 2001 From: Nikolay Markov Date: Mon, 3 Jul 2023 18:25:39 -0500 Subject: [PATCH] feat: pie tooltips --- src/geoms.js | 1 + src/main.js | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/geoms.js b/src/geoms.js index c956b0c..08784c3 100644 --- a/src/geoms.js +++ b/src/geoms.js @@ -126,6 +126,7 @@ export const GEOMS = { const arcs = d3.pie().sortValues(null)(value); const g = d3.create('svg:g'); + g.classed('fh-geom', true); g.selectAll('arcs') .data(arcs) .enter() diff --git a/src/main.js b/src/main.js index d91a14e..aa400b4 100644 --- a/src/main.js +++ b/src/main.js @@ -131,6 +131,14 @@ class FHeatmap { tooltip = tooltip.replace(/\.?0+$/, ''); el.datum({tooltip: tooltip}); } + if (column.geom === 'pie') { + const s = 'margin: 5px; border-top: 1px solid #aaa; border-left: 1px solid #aaa; font-size: 80%'; + const s2 = 'padding: 2px 4px; border-bottom: 1px solid #aaa; border-right: 1px solid #aaa'; + let tooltip = `${column.palette.colorNames.map((colorName, i) => { + return ``; + }).join('')}
${colorName}:${value[i]}
`; + el.datum({tooltip: tooltip}); + } this.body.append(() => el.node()); const elWidth = el.node().getBBox().width if (elWidth > width) { @@ -431,7 +439,7 @@ class FHeatmap { .style("border", "solid") .style("border-width", "1px") .style("border-radius", "5px") - .style("padding", "8px 5px") + .style("padding", "3px 5px") .style("display", "none"); } @@ -445,8 +453,11 @@ class FHeatmap { onMouseMove(e) { if (e.target) { - const el = e.target; - const d = d3.select(el).datum(); + let el = d3.select(e.target); + while (el.classed('fh-geom') === false && el.node() != this.svg.node()) { + el = d3.select(el.node().parentNode); + } + const d = el.datum(); if (d && d.tooltip) { const mouse = d3.pointer(e, document.body); this.showTooltip(mouse, d.tooltip);