aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/static/itemeditor.js
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-01 06:32:15 -0400
committerhistoria <[not public]>2026-07-01 06:32:15 -0400
commit649ef4b7416ce7053145878841fc9b0bff2f5fec (patch)
tree1dae6678dac94d5f5948973059b7ddf8a70c3659 /internal/admin/static/itemeditor.js
parentbf7c27c2cbf3eb56a0a4c5141e39b152c51614b5 (diff)
downloadthehouseoficarus-649ef4b7416ce7053145878841fc9b0bff2f5fec.tar.gz
feat: admin gui card code unified, unhinged conversation tree GUI sort of implemented
Diffstat (limited to 'internal/admin/static/itemeditor.js')
-rw-r--r--internal/admin/static/itemeditor.js108
1 files changed, 4 insertions, 104 deletions
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 = '<div class="sr-item" style="color:#888">No results</div>';
- return;
- }
- results.style.display = 'block';
- results.innerHTML = items.map(function(r) {
- return '<div class="sr-item" onclick="event.stopPropagation();selectSearchResult(this)">' + esc(r.id) + ' <span style="color:#aaa">' + esc(r.name || '') + '</span></div>';
- }).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