document.addEventListener('DOMContentLoaded', () => { const assignForm = document.getElementById('assignForm'); const assignTableBody = document.getElementById('assignmentTableBody'); const cowSelect = document.querySelector('select[name="cowId"]'); const collarSelect = document.querySelector('select[name="collarId"]'); const initialCowOptions = cowSelect ? Array.from(cowSelect.options) .filter(option => option.value) .map(option => ({ value: option.value, text: option.text })) : []; const initialCollarOptions = collarSelect ? Array.from(collarSelect.options) .filter(option => option.value) .map(option => ({ value: option.value, text: option.text })) : []; function refreshDropdowns(assignedCowIds, assignedCollarIds) { if (cowSelect) { cowSelect.innerHTML = ''; cowSelect.appendChild(new Option('-- Select Cow --', '')); for (const option of initialCowOptions) { if (assignedCowIds.has(option.value)) continue; cowSelect.appendChild(new Option(option.text, option.value)); } } if (collarSelect) { collarSelect.innerHTML = ''; collarSelect.appendChild(new Option('-- Select Collar --', '')); for (const option of initialCollarOptions) { if (assignedCollarIds.has(option.value)) continue; collarSelect.appendChild(new Option(option.text, option.value)); } } } async function loadAssignments() { if (!assignTableBody) { console.error('Assignment table body element not found'); return; } const form = new FormData(); form.append('action', 'list'); const res = await fetch('../ajax/assignment.php', { method: 'POST', body: form }); const json = await res.json(); if (!json.success) { alert(json.message); return; } const activeAssignments = Array.isArray(json.data) ? json.data.filter(a => a.active) : []; const assignedCowIds = new Set(activeAssignments.map(a => a.cowId).filter(Boolean)); const assignedCollarIds = new Set(activeAssignments.map(a => a.collarId).filter(Boolean)); refreshDropdowns(assignedCowIds, assignedCollarIds); assignTableBody.innerHTML = ''; if (activeAssignments.length === 0) { const emptyRow = document.createElement('tr'); emptyRow.innerHTML = '