diff options
| author | historia <[not public]> | 2026-07-14 04:26:34 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-07-14 04:26:34 -0400 |
| commit | b5491f140ebf1099171c932b688303e05d01a06c (patch) | |
| tree | 2b688ffb4e75a37dbec97796fd1598f56b1ad977 /internal/admin/static/cardeditor.js | |
| parent | 430c81bd2056769e1326df9d1dff983afe7f33df (diff) | |
| download | thehouseoficarus-b5491f140ebf1099171c932b688303e05d01a06c.tar.gz | |
feat(admin): hide unused mod fields
Diffstat (limited to 'internal/admin/static/cardeditor.js')
| -rw-r--r-- | internal/admin/static/cardeditor.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/admin/static/cardeditor.js b/internal/admin/static/cardeditor.js index 83eed2e..b29b814 100644 --- a/internal/admin/static/cardeditor.js +++ b/internal/admin/static/cardeditor.js @@ -130,6 +130,41 @@ function ced_addKVSearchRow(cardID, subKey, entity) { ced_setupSearchFields(row); } +function ced_renderKVSelect(sec, il, data, getter) { + var sectionRoot = data[ced_cardPath(sec)] || data; + var map = getter ? getter(sectionRoot, il) : (sectionRoot[il.key] || {}); + var options = il.options || []; + var h = '<div class="obj-inline-group">'; + h += '<span class="obj-inline-label">' + esc(il.label) + '</span>'; + h += '<div class="obj-kv-list" data-sec="' + sec.id + '" data-key="' + il.key + '" data-options="' + escAttr(JSON.stringify(options)) + '">'; + Object.keys(map).forEach(function(k, idx) { + h += '<div class="obj-kv-row">'; + h += '<select class="obj-kv-key" style="flex:1">'; + options.forEach(function(opt) { + h += '<option value="' + escAttr(opt) + '"' + (k === opt ? ' selected' : '') + '>' + esc(opt) + '</option>'; + }); + h += '</select>'; + h += '<input value="' + escAttr(String(map[k])) + '" placeholder="qty" class="obj-kv-val">'; + h += '<button class="btn btn-sm btn-danger" onclick="this.parentElement.remove()">X</button></div>'; + }); + h += '</div>'; + h += '<button class="btn btn-sm obj-sub-add" onclick="ced_addKVSelectRow(\'' + sec.id + '\',\'' + il.key + '\')">+ Add</button>'; + h += '</div>'; + return h; +} + +function ced_addKVSelectRow(cardID, subKey) { + var el = document.querySelector('.obj-kv-list[data-sec="' + cardID + '"][data-key="' + subKey + '"]'); + if (!el) return; + var opts = []; + try { opts = JSON.parse(el.getAttribute('data-options') || '[]'); } catch(e) {} + var optsHTML = opts.map(function(opt) { return '<option value="' + escAttr(String(opt)) + '">' + esc(String(opt)) + '</option>'; }).join(''); + var row = document.createElement('div'); + row.className = 'obj-kv-row'; + row.innerHTML = '<select class="obj-kv-key" style="flex:1">' + optsHTML + '</select><input value="" placeholder="qty" class="obj-kv-val"><button class="btn btn-sm btn-danger" onclick="this.parentElement.remove()">X</button>'; + el.appendChild(row); +} + // ---- Search autocomplete ---- function ced_setupSearchFields(root) { |
