Conversation
There was a problem hiding this comment.
Pull request overview
Updates the Biomes and Anthromes UIs to keep detail overlays/tooltips visually and semantically in sync (including passing “meta” like label/color/year/code end-to-end), while also refining overlay sizing and adding richer explanatory content.
Changes:
- Adds/propagates anthrome “meta” into waffle + map tooltip/detail flows and updates detail overlay presentation (swatches, leader lines, conditional sizing).
- Refines filter/overlay UX in Biomes (new Known/Unknown radio filter, filter layout changes) and improves robustness/perf in filter application.
- Enhances the Anthromes “Zooms” panel (zoom controls, header copy, loading UI) and updates selected zoom site data; removes annotation bubbles + annotations data file.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/biomes/lib/BiomesChart.svelte | Filter/tooltip pipeline tweaks (unknown filter modes, cached leaves, exported tooltip action) and detail dispatch now includes anchor point. |
| src/biomes/App.svelte | UI/layout updates for nav, filters, detail overlay leader line + richer overlay copy. |
| src/anthromes/lib/ZoomsPanel.svelte | Adds zoom controls, header intro text, loading spinner overlay, and supports per-location description. |
| src/anthromes/lib/WaffleChart.svelte | Adds tooltip meta + wheel zoom behavior + UI refinements (gap ring, drag handle redesign). |
| src/anthromes/lib/MapCanvas.svelte | Passes tooltip meta through hover/pin pipeline and tracks isolated-cell state. |
| src/anthromes/lib/HistoryCircleChart.svelte | Adjusts label placement/font sizing and wraps anthrome labels into tspans. |
| src/anthromes/lib/AnnotationBubbles.svelte | Removes annotation bubble layer implementation. |
| src/anthromes/App.svelte | Detail overlay now shows swatch/title from meta, adds leader line connector, updates nav + filter rail layout, removes annotation bubbles. |
| public/data/zooms-selected.json | Updates the curated list of “selected” zoom locations and descriptions. |
| public/data/annotations.json | Removes annotations content file (no longer used after bubble removal). |
| index.html | Updates landing-page links for the two visualizations. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| </script> | ||
|
|
||
| <div class="chart-container" bind:this={chartContainer} onpointerdown={handlePanStart} onpointermove={handleContainerMove} onpointerleave={() => { hoverInCircle = false; }} class:panning class:in-circle={hoverInCircle}> | ||
| <div class="chart-container" bind:this={chartContainer} onpointerdown={handlePanStart} onpointermove={handleContainerMove} onpointerleave={() => { hoverInCircle = false; }} onwheel={handleWheel} class:panning class:in-circle={hoverInCircle}> |
There was a problem hiding this comment.
onwheel={handleWheel} in Svelte is passive by default, so event.preventDefault() inside handleWheel won’t reliably prevent page scrolling/zooming (and may log a warning). Use a non-passive wheel listener (e.g. onwheel|nonpassive) for this zoom-to-cursor behavior.
| <div class="chart-container" bind:this={chartContainer} onpointerdown={handlePanStart} onpointermove={handleContainerMove} onpointerleave={() => { hoverInCircle = false; }} onwheel={handleWheel} class:panning class:in-circle={hoverInCircle}> | |
| <div class="chart-container" bind:this={chartContainer} onpointerdown={handlePanStart} onpointermove={handleContainerMove} onpointerleave={() => { hoverInCircle = false; }} onwheel|nonpassive={handleWheel} class:panning class:in-circle={hoverInCircle}> |
| <a href="/src/biomes/" aria-label="Go to Biomes"> | ||
| <textPath href="#nav-arc-bottom-left" startOffset="50%" text-anchor="middle">BIOMES →</textPath> | ||
| </a> | ||
| </text> | ||
| </g> | ||
| </svg> | ||
| </div> | ||
|
|
||
| <a class="nav-circle__home" href="/src/" aria-label="Back to home">←</a> | ||
| </div> |
There was a problem hiding this comment.
These navigation links use absolute paths (/src/biomes/ and /src/), which will break when the app is served under the configured Vite base path (/twosides/ in production). Prefer relative links or prefix with import.meta.env.BASE_URL so navigation works on GitHub Pages.
| <a id="leftLink" class="sideLink" href="/src/biomes/">BIOMES</a> | ||
| <a id="rightLink" class="sideLink" href="/src/anthromes/">ANTHROMES</a> |
There was a problem hiding this comment.
Root index.html now links to /src/biomes/ and /src/anthromes/ using leading slashes. Because Vite builds with base: '/twosides/' in production, these absolute paths will ignore the base and 404 on GitHub Pages. Use relative links (e.g. src/biomes/, src/anthromes/) so they resolve under the base path.
| <a id="leftLink" class="sideLink" href="/src/biomes/">BIOMES</a> | |
| <a id="rightLink" class="sideLink" href="/src/anthromes/">ANTHROMES</a> | |
| <a id="leftLink" class="sideLink" href="src/biomes/">BIOMES</a> | |
| <a id="rightLink" class="sideLink" href="src/anthromes/">ANTHROMES</a> |
| <text class="nav-circle__text nav-circle__text--link"> | ||
| <a href="/src/anthromes/" aria-label="Go to Anthromes"> | ||
| <textPath href="#nav-arc-bottom-right" startOffset="50%" text-anchor="middle">ANTHROMES →</textPath> | ||
| </a> | ||
| </text> | ||
| </g> | ||
| </svg> | ||
| </div> | ||
|
|
||
| <a class="nav-circle__home" href="/src/" aria-label="Back to home">←</a> | ||
| </div> |
There was a problem hiding this comment.
The new navigation links use absolute paths (e.g. /src/anthromes/ and /src/). With vite.config.js setting base to /twosides/ in production, these will bypass the base path on GitHub Pages and break navigation. Use relative links (no leading slash) or prefix with import.meta.env.BASE_URL (e.g. ${base}src/anthromes/ and ${base}).
| <p class="overlay-desc">Show only uSGBs (Unknown species genome bins) when enabled.</p> | ||
| <div class="overlay-desc"> | ||
| <p><strong>Unknown (uSGB)</strong><br />Genome-defined species-level group newly identified in this study — not previously represented in reference databases.</p> | ||
| <p><strong>Unknown (uSGB)</strong><br />Previously uncharacterized microbial lineage revealed through large-scale metagenomic assembly.</p> |
There was a problem hiding this comment.
The status overlay description repeats the same label twice (Unknown (uSGB)) for two different definitions, which reads like a copy/paste error and is confusing. Consider making the second paragraph describe the “Known” category (or adjust the heading text) so both options match the filter choices (All/Known/Unknown).
| <p><strong>Unknown (uSGB)</strong><br />Previously uncharacterized microbial lineage revealed through large-scale metagenomic assembly.</p> | |
| <p><strong>Known (kSGB)</strong><br />Species-level group with representative genomes already present in existing reference databases.</p> |
Detail overlay height only expands when the history chart is present; history chart section gets extra room only when rendered.