From 649ef4b7416ce7053145878841fc9b0bff2f5fec Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 1 Jul 2026 06:32:15 -0400 Subject: feat: admin gui card code unified, unhinged conversation tree GUI sort of implemented --- internal/admin/static/itemeditor.js | 108 ++---------------------------------- 1 file changed, 4 insertions(+), 104 deletions(-) (limited to 'internal/admin/static/itemeditor.js') diff --git a/internal/admin/static/itemeditor.js b/internal/admin/static/itemeditor.js index 7c7c676..215baf0 100644 --- a/internal/admin/static/itemeditor.js +++ b/internal/admin/static/itemeditor.js @@ -1128,99 +1128,11 @@ function updateOutputQtyVisibility() { }); } -function setupSearchFields() { - document.querySelectorAll('.search-input').forEach(function(input) { - if (input._searchSetup) return; - input._searchSetup = true; - var entityType = input.getAttribute('data-search-type') || 'items'; - var results = input.parentElement.querySelector('.search-results'); - if (!results) return; - - results._targetInput = input; - - input.addEventListener('input', function() { - var val = input.value.trim(); - if (!val) { results.style.display = 'none'; results.innerHTML = ''; results._selectedIndex = -1; return; } - API.get('/api/search?q=' + encodeURIComponent(val)).then(function(data) { - var items = []; - if (entityType === 'items' && data.items) items = data.items; - if (entityType === 'objects' && data.objects) items = data.objects; - if (entityType === 'mobs' && data.mobs) items = data.mobs; - if (entityType === 'drops' && data.drops) items = data.drops; - if (items.length === 0) { - results.style.display = 'block'; - results.innerHTML = '
No results
'; - return; - } - results.style.display = 'block'; - results.innerHTML = items.map(function(r) { - return '
' + esc(r.id) + ' ' + esc(r.name || '') + '
'; - }).join(''); - results._items = items; - results._selectedIndex = -1; - }).catch(function() { - results.style.display = 'none'; - }); - }); - - input.addEventListener('focus', function() { - if (input.value.trim()) { - input.dispatchEvent(new Event('input')); - } - }); - - input.addEventListener('blur', function() { - setTimeout(function() { results.style.display = 'none'; }, 200); - }); - - input.addEventListener('keydown', function(e) { - if (results.style.display === 'none' || !results.children.length) return; - if (results._selectedIndex === undefined) results._selectedIndex = -1; - - if (e.key === 'ArrowDown') { - e.preventDefault(); - results._selectedIndex = Math.min(results._selectedIndex + 1, results.children.length - 1); - updateSearchHighlight(results); - } else if (e.key === 'ArrowUp') { - e.preventDefault(); - results._selectedIndex = Math.max(results._selectedIndex - 1, 0); - updateSearchHighlight(results); - } else if (e.key === 'Enter') { - if (results._selectedIndex >= 0) { - e.preventDefault(); - selectSearchResult(results.children[results._selectedIndex]); - } - } else if (e.key === 'Escape') { - results.style.display = 'none'; - results._selectedIndex = -1; - } - }); - }); +function setupSearchFields() { ced_setupSearchFields(); } - document.addEventListener('click', function(e) { - if (!e.target.closest('.search-results') && !e.target.closest('.search-input')) { - document.querySelectorAll('.search-results').forEach(function(r) { r.style.display = 'none'; }); - } - }); -} +function selectSearchResult(el) { ced_selectSearchResult(el); } -function selectSearchResult(el) { - var results = el.parentElement; - var idx = Array.prototype.indexOf.call(results.children, el); - if (results._items && results._items[idx] && results._targetInput) { - results._targetInput.value = results._items[idx].id; - results._targetInput.dispatchEvent(new Event('input')); - results.style.display = 'none'; - results.innerHTML = ''; - } -} - -function updateSearchHighlight(results) { - for (var i = 0; i < results.children.length; i++) { - results.children[i].classList.toggle('active', i === results._selectedIndex); - if (i === results._selectedIndex) results.children[i].scrollIntoView({block: 'nearest'}); - } -} +function updateSearchHighlight(results) { ced_updateSearchHighlight(results); } // ========================================================================= // Validation @@ -1321,19 +1233,7 @@ function validateFields() { // Field value collector // ========================================================================= -function collectFieldValue(el, type) { - if (type === 'checkbox') return el.checked; - if (type === 'select') return el.value; - if (type === 'search') return el.value; - if (type === 'number') { var n = parseFloat(el.value); return isNaN(n) ? 0 : n; } - if (type === 'json') { - var raw = el.value.trim(); - if (!raw) return null; - try { return JSON.parse(raw); } catch(e) { return raw; } - } - if (type === 'textarea') return el.value; - return el.value; -} +function collectFieldValue(el, type) { return ced_collectFieldValue(el, type); } // ========================================================================= // Save -- cgit v1.2.3