diff --git a/web/_js/main/draw.js b/web/_js/main/draw.js index 017806a21..ba67b0236 100644 --- a/web/_js/main/draw.js +++ b/web/_js/main/draw.js @@ -810,9 +810,9 @@ function initDraw() { const [,, hashX, hashY, hashZoom] = hash.split('/') setView( - isNaN(hashX) ? center[0] : Number(hashX), - isNaN(hashY) ? center[1] : Number(hashY), - isNaN(hashZoom) ? 4 : Number(hashZoom) + (isNaN(hashX) || hashX === '') ? center[0] : Number(hashX), + (isNaN(hashY) || hashY === '') ? center[1] : Number(hashY), + (isNaN(hashZoom) || hashZoom === '') ? 4 : Number(hashZoom) ) document.addEventListener('timeupdate', () => { diff --git a/web/_js/main/main.js b/web/_js/main/main.js index a9ed29ee1..68c307e4c 100644 --- a/web/_js/main/main.js +++ b/web/_js/main/main.js @@ -41,6 +41,7 @@ function applyView() { scaleZoomOrigin[0] = Math.max(-canvasCenter.x + canvasOffset.x, Math.min(canvasCenter.x - canvasOffset.x, scaleZoomOrigin[0])) scaleZoomOrigin[1] = Math.max(-canvasCenter.y + canvasOffset.y, Math.min(canvasCenter.y - canvasOffset.y, scaleZoomOrigin[1])) + zoom = Math.max(minZoom, Math.min(maxZoom, zoom)) zoomOrigin = [scaleZoomOrigin[0] * zoom, scaleZoomOrigin[1] * zoom] @@ -54,12 +55,12 @@ function applyView() { function setView(targetX, targetY, targetZoom) { - if (isNaN(targetX)) targetX = undefined - if (isNaN(targetY)) targetY = undefined + if (isNaN(targetX)) targetX = null + if (isNaN(targetY)) targetY = null - zoom ??= targetZoom - if (targetX) scaleZoomOrigin[0] = canvasCenter.x - targetX - if (targetY) scaleZoomOrigin[1] = canvasCenter.y - targetY + zoom = targetZoom ?? zoom + if ((targetX ?? null) !== null) scaleZoomOrigin[0] = canvasCenter.x - targetX + if ((targetY ?? null) !== null) scaleZoomOrigin[1] = canvasCenter.y - targetY applyView() @@ -122,9 +123,9 @@ async function init() { //console.log(document.documentElement.clientWidth, document.documentElement.clientHeight) setView( - isNaN(hashX) ? canvasCenter.x : Number(hashX), - isNaN(hashY) ? canvasCenter.y : Number(hashY), - isNaN(hashZoom) ? zoom : Number(hashZoom) + (isNaN(hashX) || hashX === '') ? canvasCenter.x : Number(hashX), + (isNaN(hashY) || hashY === '') ? canvasCenter.y : Number(hashY), + (isNaN(hashZoom) || hashZoom === '') ? zoom : Number(hashZoom) ) let initialPinchDistance = 0 diff --git a/web/_js/main/view.js b/web/_js/main/view.js index c21f6263e..49aa0dadf 100644 --- a/web/_js/main/view.js +++ b/web/_js/main/view.js @@ -669,9 +669,9 @@ function updateViewFromHash() { updateTime(targetPeriod, targetVariation, true) setView( - isNaN(hashX) ? undefined : Number(hashX), - isNaN(hashY) ? undefined : Number(hashY), - isNaN(hashZoom) ? undefined : Number(hashZoom) + (isNaN(hashX) || hashX === '') ? undefined : Number(hashX), + (isNaN(hashY) || hashY === '') ? undefined : Number(hashY), + (isNaN(hashZoom) || hashZoom === '') ? undefined : Number(hashZoom) ) if (!hashEntryId) return @@ -704,9 +704,9 @@ function updateViewFromHash() { renderBackground(atlas) setView( - isNaN(hashX) ? entry.center[0] : Number(hashX), - isNaN(hashY) ? entry.center[1] : Number(hashY), - isNaN(hashZoom) ? setZoomByPath(entry.path) : Number(hashZoom) + (isNaN(hashX) || hashX === '') ? entry.center[0] : Number(hashX), + (isNaN(hashY) || hashY === '') ? entry.center[1] : Number(hashY), + (isNaN(hashZoom) || hashZoom === '') ? setZoomByPath(entry.path) : Number(hashZoom) ) closeObjectsListButton.classList.remove("d-none")