mirror of
https://github.com/smittix/intercept.git
synced 2026-04-24 06:40:00 -07:00
Stabilize satellite pass target switching
This commit is contained in:
@@ -1796,7 +1796,8 @@
|
|||||||
async function calculatePasses() {
|
async function calculatePasses() {
|
||||||
const lat = parseFloat(document.getElementById('obsLat').value);
|
const lat = parseFloat(document.getElementById('obsLat').value);
|
||||||
const lon = parseFloat(document.getElementById('obsLon').value);
|
const lon = parseFloat(document.getElementById('obsLon').value);
|
||||||
const requestKey = getActivePassRequestKey(selectedSatellite);
|
const requestedSatellite = selectedSatellite;
|
||||||
|
const requestKey = getActivePassRequestKey(requestedSatellite);
|
||||||
const container = document.getElementById('passList');
|
const container = document.getElementById('passList');
|
||||||
const button = document.querySelector('.controls-bar .btn.primary');
|
const button = document.querySelector('.controls-bar .btn.primary');
|
||||||
|
|
||||||
@@ -1838,7 +1839,7 @@
|
|||||||
longitude: lon,
|
longitude: lon,
|
||||||
hours: 48,
|
hours: 48,
|
||||||
minEl: 5,
|
minEl: 5,
|
||||||
satellites: [selectedSatellite]
|
satellites: [requestedSatellite]
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
if (_passTimeoutId) {
|
if (_passTimeoutId) {
|
||||||
@@ -1858,9 +1859,13 @@
|
|||||||
}
|
}
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
if (requestId !== _passRequestId) return;
|
if (requestId !== _passRequestId) return;
|
||||||
|
const stillSelected = requestedSatellite === selectedSatellite;
|
||||||
if (data.status === 'success') {
|
if (data.status === 'success') {
|
||||||
passes = Array.isArray(data.passes) ? data.passes : [];
|
const resolvedPasses = Array.isArray(data.passes) ? data.passes : [];
|
||||||
cacheCurrentPasses(selectedSatellite, passes);
|
cacheCurrentPasses(requestedSatellite, resolvedPasses);
|
||||||
|
if (!stillSelected) return;
|
||||||
|
|
||||||
|
passes = resolvedPasses;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
renderPassList();
|
renderPassList();
|
||||||
@@ -1906,16 +1911,24 @@
|
|||||||
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
||||||
_dashboardRetryAttempts = 0;
|
_dashboardRetryAttempts = 0;
|
||||||
} else {
|
} else {
|
||||||
const cached = getCachedPasses(selectedSatellite);
|
const cached = getCachedPasses(requestedSatellite);
|
||||||
|
if (!stillSelected) return;
|
||||||
if (cached?.passes?.length) {
|
if (cached?.passes?.length) {
|
||||||
passes = cached.passes;
|
passes = cached.passes;
|
||||||
renderPassList();
|
renderPassList();
|
||||||
updateStats();
|
updateStats();
|
||||||
updateMissionDrawerInfo();
|
updateMissionDrawerInfo();
|
||||||
|
if (!Number.isInteger(selectedPass) || !passes[selectedPass]) {
|
||||||
|
selectedPass = 0;
|
||||||
|
}
|
||||||
|
if (passes[selectedPass]) {
|
||||||
|
selectPass(selectedPass);
|
||||||
|
}
|
||||||
document.getElementById('trackingStatus').textContent = 'TRACKING';
|
document.getElementById('trackingStatus').textContent = 'TRACKING';
|
||||||
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
||||||
} else {
|
} else {
|
||||||
passes = [];
|
passes = [];
|
||||||
|
selectedPass = null;
|
||||||
renderPassList();
|
renderPassList();
|
||||||
updateMissionDrawerInfo();
|
updateMissionDrawerInfo();
|
||||||
document.getElementById('trackingStatus').textContent = 'ERROR';
|
document.getElementById('trackingStatus').textContent = 'ERROR';
|
||||||
@@ -1942,15 +1955,24 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.error('Pass calculation error:', err);
|
console.error('Pass calculation error:', err);
|
||||||
const cached = getCachedPasses(selectedSatellite);
|
const cached = getCachedPasses(requestedSatellite);
|
||||||
|
if (requestedSatellite !== selectedSatellite) return;
|
||||||
if (cached?.passes?.length) {
|
if (cached?.passes?.length) {
|
||||||
passes = cached.passes;
|
passes = cached.passes;
|
||||||
renderPassList();
|
renderPassList();
|
||||||
updateStats();
|
updateStats();
|
||||||
|
updateMissionDrawerInfo();
|
||||||
|
if (!Number.isInteger(selectedPass) || !passes[selectedPass]) {
|
||||||
|
selectedPass = 0;
|
||||||
|
}
|
||||||
|
if (passes[selectedPass]) {
|
||||||
|
selectPass(selectedPass);
|
||||||
|
}
|
||||||
document.getElementById('trackingStatus').textContent = 'TRACKING';
|
document.getElementById('trackingStatus').textContent = 'TRACKING';
|
||||||
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
document.getElementById('trackingDot').style.background = 'var(--accent-green)';
|
||||||
} else {
|
} else {
|
||||||
passes = [];
|
passes = [];
|
||||||
|
selectedPass = null;
|
||||||
if (container) {
|
if (container) {
|
||||||
container.innerHTML = '<div style="text-align:center;color:var(--text-secondary);padding:20px;">Failed to calculate passes</div>';
|
container.innerHTML = '<div style="text-align:center;color:var(--text-secondary);padding:20px;">Failed to calculate passes</div>';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user