Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions public/skychart.html
Original file line number Diff line number Diff line change
Expand Up @@ -1282,6 +1282,7 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
document.getElementById('qb-rotation-slider').value = fav.rotation;
document.getElementById('qb-rotation-val').innerText = fav.rotation + '°';
}
lockFovOnTarget(fav.ra, fav.dec, fav.rotation);
if (fav.mosaic) {
mosaicCols = fav.mosaic.cols;
mosaicRows = fav.mosaic.rows;
Expand Down Expand Up @@ -2656,7 +2657,7 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
setTimeout(() => window.dispatchEvent(new Event('resize')), 320);
});

document.getElementById('search-btn').addEventListener('click', () => { let t = document.getElementById('search-input').value; if(t) aladin.gotoObject(t); });
document.getElementById('search-btn').addEventListener('click', () => { let t = document.getElementById('search-input').value; if(t) { aladin.gotoObject(t); lockFovAfterGoto(); } });
document.getElementById('search-input').addEventListener('keypress', (e) => { if(e.key === 'Enter') document.getElementById('search-btn').click(); });
document.getElementById('survey-select').addEventListener('change', (e) => { if(aladin) aladin.setImageSurvey(e.target.value); });
document.getElementById('rotation-slider').addEventListener('input', (e) => {
Expand Down Expand Up @@ -2705,7 +2706,7 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
// ===== QUICK-BAR BINDINGS =====
document.getElementById('qb-search-btn').addEventListener('click', () => {
let t = document.getElementById('qb-search').value.trim();
if (t && aladin) { aladin.gotoObject(t); document.getElementById('qb-search').value = ''; }
if (t && aladin) { aladin.gotoObject(t); document.getElementById('qb-search').value = ''; lockFovAfterGoto(); }
});
document.getElementById('qb-search').addEventListener('keypress', (e) => {
if (e.key === 'Enter') document.getElementById('qb-search-btn').click();
Expand All @@ -2726,6 +2727,32 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
debouncedSave();
});

// Auto-lock FOV on a target position, resetting rotation if none provided
function lockFovOnTarget(ra, dec, rotation) {
let box = document.getElementById('camera-fov-box');
let icon = document.getElementById('fov-lock-icon');
fovLocked = true;
fovLockedRaDec = [ra, dec];
box.classList.add('fov-locked');
icon.innerHTML = '<svg viewBox="0 0 24 24"><path d="M18 10h-1V7A5 5 0 0 0 7 7v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2zM9 7a3 3 0 0 1 6 0v3H9V7zm4 10.5a1.5 1.5 0 0 1-3 0v-3a1.5 1.5 0 0 1 3 0v3z"/></svg>';
if (rotation == null) {
document.getElementById('rotation-slider').value = 0;
document.getElementById('rotation-val').innerText = '0°';
document.getElementById('qb-rotation-slider').value = 0;
document.getElementById('qb-rotation-val').innerText = '0°';
}
syncQuickBar();
debouncedSave();
}

// Auto-lock after gotoObject resolves (name-based navigation)
function lockFovAfterGoto() {
setTimeout(() => {
let radec = aladin.getRaDec();
if (radec) lockFovOnTarget(radec[0], radec[1], null);
}, 1500);
}

// FOV lock toggle — click FOV box to lock/unlock
function toggleFovLock() {
fovLocked = !fovLocked;
Expand Down Expand Up @@ -3133,8 +3160,10 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
let name = card.dataset.name;
if (!isNaN(ra) && !isNaN(dec) && aladin) {
aladin.gotoRaDec(ra, dec);
lockFovOnTarget(ra, dec, null);
} else if (name && aladin) {
aladin.gotoObject(name);
lockFovAfterGoto();
}
});
});
Expand Down Expand Up @@ -3169,8 +3198,10 @@ <h2 style="width:100%;text-align:center;display:flex;align-items:center;justify-
let name = card.dataset.name;
if (!isNaN(ra) && !isNaN(dec) && aladin) {
aladin.gotoRaDec(ra, dec);
lockFovOnTarget(ra, dec, null);
} else if (name && aladin) {
aladin.gotoObject(name);
lockFovAfterGoto();
}
});
});
Expand Down
Loading