From 07453070fdd77862279adeede2fead33fd3372bf Mon Sep 17 00:00:00 2001 From: Janosh Riebesell Date: Sat, 6 Aug 2022 21:22:34 -0700 Subject: [PATCH] add hover tooltip for scatter plot shows element name, atomic number and y-value --- src/lib/PeriodicTable.svelte | 2 +- src/lib/ScatterPlot.svelte | 66 +++++++++++++++++++++++------------- src/lib/ScatterPoint.svelte | 7 +--- src/types.ts | 2 ++ 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/src/lib/PeriodicTable.svelte b/src/lib/PeriodicTable.svelte index 52cb3c4..91580d7 100644 --- a/src/lib/PeriodicTable.svelte +++ b/src/lib/PeriodicTable.svelte @@ -21,8 +21,8 @@ {#if $heatmap} ($active_element = e.detail.element)} ylim={[0, null]} + on_hover_point={(point) => ($active_element = point[2])} /> {:else if show_active_elem_stats} diff --git a/src/lib/ScatterPlot.svelte b/src/lib/ScatterPlot.svelte index a1ad6b5..cb80bd2 100644 --- a/src/lib/ScatterPlot.svelte +++ b/src/lib/ScatterPlot.svelte @@ -1,38 +1,32 @@
{#if width && height} - + (hovered = false)}> [x, y])} origin={[x_scale(xrange[0]), y_scale(yrange[0])]} /> {#each scaled_data as [x, y, fill, element]} {@const active = $active_element?.name === element.name} - dispatch(`hover`, { element })} - /> + {/each} @@ -93,6 +98,21 @@ {/each} + + {#if tooltip_point} + {@const [raw_x, raw_y] = tooltip_point} + {@const [x, y] = [x_scale(raw_x), y_scale(raw_y)]} + + {#if hovered} + + {tooltip_point[2].name} +
number = {raw_x} + {#if raw_y} +
{heatmap_label} = {raw_y}{heatmap_unit} + {/if} +
+ {/if} + {/if}
{/if}
diff --git a/src/lib/ScatterPoint.svelte b/src/lib/ScatterPoint.svelte index 1c09d67..f39c645 100644 --- a/src/lib/ScatterPoint.svelte +++ b/src/lib/ScatterPoint.svelte @@ -5,7 +5,6 @@ export let x: number export let y: number export let fill = `gray` - export let active = false export let tween_duration = 600 const tween_params = { duration: tween_duration, easing: cubicOut } @@ -16,7 +15,7 @@ $: tweened_y.set(y) - + @@ -26,8 +25,4 @@ stroke: transparent; stroke-width: 5px; } - :is(g:hover, g.active) circle { - fill: orange; - transform: scale(2); - } diff --git a/src/types.ts b/src/types.ts index b29e5ce..e08efdf 100644 --- a/src/types.ts +++ b/src/types.ts @@ -40,3 +40,5 @@ export type ChemicalElement = { symbol: string year: number | string } + +export type PlotPoint = [number, number, ChemicalElement]