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