From 131cbbe586463a7232f332650af5f0b2c13dc7e9 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 10 Jul 2026 20:37:29 -0400 Subject: feat(admin): remove unused fields from drop tables --- internal/admin/static/dropeditor.js | 66 ++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 22 deletions(-) (limited to 'internal/admin/static/dropeditor.js') diff --git a/internal/admin/static/dropeditor.js b/internal/admin/static/dropeditor.js index 566d696..ac1df97 100644 --- a/internal/admin/static/dropeditor.js +++ b/internal/admin/static/dropeditor.js @@ -11,10 +11,6 @@ var DROP_SECTIONS = [ ['table', 'Table', 'search', 'e.g. gem_table', '', null, 'drops'], ['weight', 'Weight', 'number', '10', 'narrow'], ['quantity', 'Quantity', 'number', '1', 'narrow'], - ['level', 'Level', 'number', '1', 'narrow'], - ['xp', 'XP', 'number', '5', 'narrow'], - ['depletes', 'Depletes', 'checkbox'], - ['success_message', 'Success Message', 'text', 'You get some %n.', 'wide'], ] } ]; @@ -113,16 +109,37 @@ function renderArraySection(sec, data) { var arr = dropData[cardPath(sec)] || []; var h = ''; arr.forEach(function(item, idx) { + var isItem = item._type !== undefined ? item._type !== 't' : !item.table; + var showKey = isItem ? 'item_id' : 'table'; + var hideKey = isItem ? 'table' : 'item_id'; + h += '
'; + h += ''; h += '
'; - sec.fields.forEach(function(f) { - h += renderField(sec, f, data, idx); - }); + + h += '
' + + '.' + + '' + (isItem ? 'Item' : 'Table') + '' + + '
'; + + var showField = sec.fields.find(function(f) { return f[0] === showKey; }); + if (showField) { + h += renderField(sec, showField, data, idx); + } + + var weightField = sec.fields.find(function(f) { return f[0] === 'weight'; }); + var qtyField = sec.fields.find(function(f) { return f[0] === 'quantity'; }); + if (weightField) h += renderField(sec, weightField, data, idx); + if (qtyField) h += renderField(sec, qtyField, data, idx); + h += '
'; h += ''; h += '
'; }); - h += ''; + h += '
'; + h += ''; + h += ''; + h += '
'; return h; } @@ -130,6 +147,16 @@ function renderField(sec, f, data, idx) { return ced_renderField(sec, f, data, idx, null, null, cardPath, fieldID, getVal); } +function addDropRow(cardID, kind) { + var sec = DROP_SECTIONS.find(function(s) { return s.id === cardID; }); + if (!sec || !sec.isArray) return; + var arr = dropData[sec.path] || []; + var empty = { _type: (kind === 'table' ? 't' : 'i'), weight: 10, quantity: 0 }; + arr.push(empty); + dropData[sec.path] = arr; + renderCurrent(); +} + function toggleCard(id) { expandedCards[id] = expandedCards[id] === false ? true : false; renderCurrent(); @@ -140,19 +167,6 @@ function toggleCardWidth(id) { renderCurrent(); } -function addArrayItem(cardID) { - var sec = DROP_SECTIONS.find(function(s) { return s.id === cardID; }); - if (!sec || !sec.isArray) return; - var arr = dropData[sec.path] || []; - var empty = {}; - sec.fields.forEach(function(f) { - empty[f[0]] = f[2] === 'checkbox' ? false : (f[2] === 'number' ? 0 : ''); - }); - arr.push(empty); - dropData[sec.path] = arr; - renderCurrent(); -} - function removeArrayItem(cardID, idx) { var sec = DROP_SECTIONS.find(function(s) { return s.id === cardID; }); if (!sec || !sec.isArray) return; @@ -178,7 +192,12 @@ function saveDrop() { sec.fields.forEach(function(f) { var fid = fieldID(sec, f[0], idx); var el = document.getElementById(fid); - if (el) item[f[0]] = collectFieldValue(el, f[2]); + if (el) { + var val = collectFieldValue(el, f[2]); + if (val !== '' && val !== null && val !== undefined && val !== 0 && val !== false) { + item[f[0]] = val; + } + } }); if (Object.keys(item).length > 0) arr.push(item); }); @@ -246,6 +265,9 @@ function duplicateDrop() { delete copy._raw; delete copy._path; copy.id = newID; + if (copy.drops && Array.isArray(copy.drops)) { + copy.drops.forEach(function(e) { delete e._type; }); + } var dir = ''; if (dropData._path) { -- cgit v1.2.3