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')
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