// Serialized MES Chassis Traveler Client
let liveTravelers = [];
async function loadTravelers() {
try {
const res = await fetch('/api/travelers');
if (!res.ok) throw new Error("Failed to load travelers");
liveTravelers = await res.json();
renderTravelersList();
} catch (err) {
console.error("Travelers Loading Error:", err);
}
}
function renderTravelersList() {
const container = document.getElementById('travelers-list-container');
if (!container) return;
container.innerHTML = '';
liveTravelers.forEach(t => {
const div = document.createElement('div');
div.style.cssText = 'background:#0b0f17; padding:0.75rem; border-radius:6px; font-size:0.75rem; display:flex; justify-content:space-between; align-items:center; margin-bottom:0.5rem;';
let badge = ' In Progress (Stage ' + t.current_stage + '/6)';
if (t.status === 'passed') {
badge = ' PASSED (Stage 6/6)';
} else if (t.status === 'quarantine') {
badge = ' Quarantined';
}
div.innerHTML = `
${t.serial_number}
${t.model_variant} • Tech: ${t.technician_name}
${t.notes || ''}
`;
container.appendChild(div);
});
}
async function advanceTravelerStage(serial, nextStage) {
if (nextStage > 6) {
if (!confirm(`Mark chassis [${serial}] as COMPLETE & PASSED?`)) return;
}
const status = nextStage >= 6 ? 'passed' : 'in_progress';
try {
await fetch(`/api/travelers/${serial}/stage`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ stage: Math.min(nextStage, 6), status })
});
await loadTravelers();
} catch (err) {
console.error("Error advancing traveler:", err);
}
}
async function createNewChassisTraveler() {
const serial = `NAS-6U-2026-${Math.floor(1000 + Math.random() * 9000)}`;
try {
await fetch('/api/travelers', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
serial_number: serial,
model_variant: "6U 8-Bay Tri-Mode Enterprise",
current_stage: 1,
status: "in_progress",
technician_name: "Lead Hardware Tech",
notes: "New production lot traveler initiated"
})
});
await loadTravelers();
} catch (err) {
console.error("Error creating traveler:", err);
}
}
window.loadTravelers = loadTravelers;
window.advanceTravelerStage = advanceTravelerStage;
window.createNewChassisTraveler = createNewChassisTraveler;