aboutsummaryrefslogtreecommitdiffziptar.gz
path: root/viewer/js/hover.js
diff options
context:
space:
mode:
authorgodosa <godosa@godosa.eu>2026-10-07 00:14:38 +0200
committergodosa <godosa@godosa.eu>2026-10-07 00:14:38 +0200
commit3443c1c65e9f1753e1e656b35d08416c1fa298f2 (patch)
tree4e43236f460145a4d75d1b4616dcb7aa6ef08f51 /viewer/js/hover.js
downloadworldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.tar.gz
worldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.zip
worldmap-viewer: initial public history
Diffstat (limited to 'viewer/js/hover.js')
-rw-r--r--viewer/js/hover.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/viewer/js/hover.js b/viewer/js/hover.js
new file mode 100644
index 0000000..5fab5e5
--- /dev/null
+++ b/viewer/js/hover.js
@@ -0,0 +1,16 @@
+// hover.js — status-bar text for the cell under the resting pointer (pure)
+import { distanceKm } from './geo.js';
+
+export const canReuse = (cell, p, detail) => // same cell for sure: no need to ask the server again
+ !detail && !!cell?.center && distanceKm(p, { lat: cell.center[0], lon: cell.center[1] }) < cell.inner_km;
+const int = v => Math.round(v).toLocaleString('en-US');
+
+export function hoverText(cell, detail = false) { // detail: procedural tiles are showing, so show their height
+ const f = Object.fromEntries(cell.fields.map(x => [x.key, x]));
+ const z = ((detail && f.z_detail_m) || f.z_surface_m)?.value ?? 0;
+ if (f.ocean?.value) return `sea, ${int(Math.max(0, -z))} m deep`;
+ const parts = [`${int(z)} m`];
+ if (f.lake?.value) parts.push('lake');
+ if (f.holdridge?.text) parts.push(f.holdridge.text);
+ return parts.join(' · ');
+}