diff --git a/apps/api/app/assets/javascripts/active_admin.js b/apps/api/app/assets/javascripts/active_admin.js index bbe544d..7a0aac6 100644 --- a/apps/api/app/assets/javascripts/active_admin.js +++ b/apps/api/app/assets/javascripts/active_admin.js @@ -214,11 +214,39 @@ return (bytes / 1048576).toFixed(1) + ' MB'; } - document.addEventListener('DOMContentLoaded', addBrowseButtons); + // Live image preview for software_images image_id selects + function addImagePreviewListeners() { + var selects = document.querySelectorAll('select[id*="image_id"]:not([data-preview-added])'); + selects.forEach(function(sel) { + sel.setAttribute('data-preview-added', 'true'); + sel.addEventListener('change', function() { + var hint = sel.closest('li').querySelector('.inline-hints'); + if (!hint) { + // Create hint element if it doesn't exist + hint = document.createElement('p'); + hint.className = 'inline-hints'; + sel.closest('li').appendChild(hint); + } + if (sel.value) { + hint.innerHTML = ''; + } else { + hint.innerHTML = ''; + } + }); + }); + } + + document.addEventListener('DOMContentLoaded', function() { + addBrowseButtons(); + addImagePreviewListeners(); + }); if (typeof jQuery !== 'undefined') { jQuery(document).on('has_many_add:after', function() { - setTimeout(addBrowseButtons, 50); + setTimeout(function() { + addBrowseButtons(); + addImagePreviewListeners(); + }, 50); }); } })();