Persist Meteor decode job state

This commit is contained in:
James Smith
2026-03-18 22:20:24 +00:00
parent e388baa464
commit 4cf394f92e
8 changed files with 699 additions and 172 deletions

View File

@@ -1962,12 +1962,15 @@
const list = document.getElementById('gsOutputsList');
const status = document.getElementById('gsDecodeStatus');
if (!panel || !list || !norad) return;
gsLoadDecodeJobs(norad);
fetch(`/ground_station/outputs?norad_id=${encodeURIComponent(norad)}&type=image`)
.then(r => r.json())
.then(outputs => {
if (!Array.isArray(outputs) || !outputs.length) {
panel.style.display = 'none';
if (status) status.style.display = 'none';
if (!status || !status.textContent) {
panel.style.display = 'none';
if (status) status.style.display = 'none';
}
return;
}
panel.style.display = '';
@@ -1984,6 +1987,35 @@
.catch(() => {});
}
function gsLoadDecodeJobs(norad) {
const panel = document.getElementById('gsOutputsPanel');
const status = document.getElementById('gsDecodeStatus');
if (!panel || !status || !norad) return;
fetch(`/ground_station/decode-jobs?norad_id=${encodeURIComponent(norad)}&backend=meteor_lrpt&limit=1`)
.then(r => r.json())
.then(jobs => {
if (!Array.isArray(jobs) || !jobs.length) return;
const job = jobs[0];
const details = job.details || {};
let message = '';
if (job.status === 'queued') {
message = 'Decode queued';
} else if (job.status === 'decoding') {
message = 'Decode in progress';
} else if (job.status === 'failed') {
message = job.error_message || details.message || 'Decode failed';
} else if (job.status === 'complete') {
const count = details.output_count;
message = count ? `Decode complete (${count} image${count === 1 ? '' : 's'})` : 'Decode complete';
}
if (!message) return;
status.textContent = message;
status.style.display = '';
panel.style.display = '';
})
.catch(() => {});
}
function _updateDecodeStatus(data) {
const panel = document.getElementById('gsOutputsPanel');
const status = document.getElementById('gsDecodeStatus');