(field, value, options = {})
| 16967 | const multiEditPanel = document.getElementById('multi-edit-panel'); |
| 16968 | const detailsPanel = document.getElementById('model-details'); |
| 16969 | |
| 16970 | if (!isMultiSelectMode && selectedModels.size > 0) { |
| 16971 | isMultiSelectMode = true; |
| 16972 | |
| 16973 | // Update UI to reflect multi-select mode |
| 16974 | if (button) { |
| 16975 | button.textContent = 'Exit Multi-Edit Mode'; |
| 16976 | button.classList.add('active'); |
| 16977 | } |
| 16978 | if (multiEditPanel) { |
| 16979 | multiEditPanel.classList.remove('hidden'); |
| 16980 | } |
| 16981 | if (detailsPanel) { |
| 16982 | detailsPanel.classList.add('hidden'); |
| 16983 | } |
| 16984 | |
| 16985 | // Populate dropdowns for multi-edit |
| 16986 | try { |
| 16987 | await populateModelDesignerDropdown(null, 'multi-designer'); |
| 16988 | await populateModelLicenseDropdown(null, 'multi-license'); |
| 16989 | await populateParentModelDropdown(null, 'multi-parent'); |
| 16990 | await populateTagSelect('multi-tag-select', 'multi-tags'); |
| 16991 | await populateRemoveTagSelect(); |
| 16992 | } catch (error) { |
| 16993 | console.error('Error populating multi-edit dropdowns:', error); |
| 16994 | } |
| 16995 | |
| 16996 | if (multiEditPanel) { |
| 16997 | multiEditPanel.scrollIntoView({ behavior: 'smooth', block: 'start' }); |
| 16998 | } |
| 16999 | } |
| 17000 | } |
| 17001 | }); |
| 17002 | |
| 17003 | // Update populateModelDesignerDropdown to handle multiple dropdowns |
| 17004 | async function populateModelDesignerDropdown(selectedDesigner, elementId = 'model-designer') { |
| 17005 | const designerSelect = document.getElementById(elementId); |
| 17006 | if (!designerSelect) return; |
| 17007 | |
| 17008 | designerSelect.innerHTML = '<option value="">Select Designer</option>'; |
| 17009 | |
| 17010 | try { |
| 17011 | const designers = await window.electron.getDesigners(); |
| 17012 | designers.forEach(designer => { |
| 17013 | if (designer) { // Only add non-empty designers |
| 17014 | const option = document.createElement('option'); |
| 17015 | option.value = designer; |
| 17016 | option.textContent = designer; |
| 17017 | if (designer === selectedDesigner) { |
| 17018 | option.selected = true; |
| 17019 | } |
| 17020 | designerSelect.appendChild(option); |
| 17021 | } |
| 17022 | }); |
| 17023 | } catch (error) { |
| 17024 | console.error('Error fetching designers:', error); |
| 17025 | } |
| 17026 | } |
no test coverage detected