From fbe5090ac3325ff8ea6989cdf4515c7f077c975b Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 1 Jul 2026 03:21:52 -0400 Subject: feat: item messaging standardized, custom messages for production paths implemented --- internal/admin/static/itemeditor.js | 48 +++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) (limited to 'internal/admin/static/itemeditor.js') diff --git a/internal/admin/static/itemeditor.js b/internal/admin/static/itemeditor.js index d02e7ab..d02945a 100644 --- a/internal/admin/static/itemeditor.js +++ b/internal/admin/static/itemeditor.js @@ -59,24 +59,24 @@ var SECTIONS = [ ['success_base', 'Base', 'number', '', 'narrow'], ['success_per_level', 'Per Lvl', 'number', '', 'narrow'], ['success_cap', 'Cap', 'number', '', 'narrow'], - ['start_message', 'Start Message', 'text', '', 'wide'], - ['message', 'Message', 'text', '', 'wide'], - ['fail_message', 'Fail Message', 'text', '', 'wide', function(item) { return item.type === 'cooking' || item.subtype === 'smelt'; }], - ['end_message', 'End Message', 'text', '', 'wide'], + ['start_message', 'Start Message', 'text', 'e.g. You begin smithing %i1.', 'wide'], + ['success_message', 'Success Message', 'text', 'e.g. You smith a %n.', 'wide'], + ['fail_message', 'Fail Message', 'text', 'e.g. You accidentally burn the %i1.', 'wide', function(item) { return item.type === 'cooking' || item.subtype === 'smelt'; }], + ['end_message', 'End Message', 'text', 'e.g. You\'ve finished smithing.', 'wide'], ], fieldGroups: [ ['type', 'subtype', 'level', 'xp', 'wait', 'output_qty'], {fields: ['station', 'tool'], right: true}, {label: 'Success', fields: ['success_base', 'success_per_level', 'success_cap', 'fail']}, - ['start_message', 'message', 'fail_message', 'end_message'], + ['start_message', 'success_message', 'fail_message', 'end_message'], ], subSubtables: [ {label:'Ingredients', key:'ingredients', fields:[ ['quantity', 'Qty', 'number', '1', 'narrow'], ]}, {label:'Steps', key:'steps', fields:[ - ['tick', 'Ticks', 'number', '', 'narrow'], - ['message', 'Message', 'text', '', 'wide'], + ['delay', 'Delay (ticks)', 'number', '', 'narrow'], + ['message', 'Message', 'text', '', 'wide'], ]}, ], } @@ -556,6 +556,8 @@ function renderSubFieldHTML(sec, stKey, idx, f, val) { if (f[4] === 'narrow') extraCls = ' obj-narrow'; else if (f[4] === 'grow') extraCls = ' obj-grow'; if (f[4] === 'wide') extraStyle = ' style="flex:1 1 100%"'; + var defaultPh = ''; + if (f[3]) defaultPh = ' placeholder="' + escAttr(f[3]) + '"'; if (f[2] === 'search') { var entity = f[6] || 'items'; var ph = f[3] ? ' placeholder="' + escAttr(f[3]) + '"' : ' placeholder="Search ' + entity + '..."'; @@ -573,7 +575,7 @@ function renderSubFieldHTML(sec, stKey, idx, f, val) { sel += ''; return sel; } - return ''; + return ''; } function renderSubtable(sec, st, data) { @@ -653,7 +655,7 @@ function renderSubtable(sec, st, data) { if (sst.key === 'steps') { var stepsArr = item[sst.key]; if (!stepsArr || !Array.isArray(stepsArr) || stepsArr.length === 0) { - h += ''; + h += ''; return; } } @@ -721,7 +723,9 @@ function removeConsumePair(secID, subKey, rowIdx, subSubKey, subIdx, pairIdx) { function renderSubSubtable(sec, st, rowIdx, sst, parentItem) { var arr = parentItem[sst.key] || []; var isIngredients = sst.key === 'ingredients'; - var h = '
'; + var isSteps = sst.key === 'steps'; + var stepsAttr = isSteps ? ' data-section="steps-section"' : ''; + var h = '
'; if (!isIngredients) { h += '
' + esc(sst.label) + '
'; } @@ -1035,6 +1039,11 @@ function setupCraftTypeChange() { var xpField = document.getElementById(id.replace(/_type$/, '_xp')); var stationField = document.getElementById(id.replace(/_type$/, '_station')); + var combineHideFields = ['success_message', 'fail_message', 'tool', 'wait', + 'success_base', 'success_per_level', 'success_cap', 'fail']; + + var recipeRow = typeSelect.closest('.obj-sub-row'); + function update() { var t = typeSelect.value; @@ -1049,6 +1058,25 @@ function setupCraftTypeChange() { if (sLbl) sLbl.style.display = (t === 'fletching' || t === 'combine' || t === 'pharmacy') ? 'none' : ''; } + combineHideFields.forEach(function(fKey) { + var el = document.getElementById(id.replace(/_type$/, '_' + fKey)); + if (!el) return; + var lbl = el.closest('.obj-field'); + if (lbl) lbl.style.display = t === 'combine' ? 'none' : ''; + }); + + var successGroup = document.querySelector('.success-group'); + if (successGroup) successGroup.style.display = t === 'combine' ? 'none' : ''; + var successBtn = document.getElementById(successGroup ? successGroup.id + '_btn' : ''); + if (successBtn) successBtn.style.display = t === 'combine' ? 'none' : ''; + + var stepsSection = recipeRow.querySelector('[data-section="steps-section"]'); + var stepsAddBtn = recipeRow.querySelector('[data-section^="steps-add-"]'); + + var showSteps = t === 'combine'; + if (stepsSection) stepsSection.style.display = showSteps ? '' : 'none'; + if (stepsAddBtn) stepsAddBtn.style.display = showSteps ? '' : 'none'; + if (subtypeSel) { var sLbl = subtypeSel.closest('.obj-field'); if (t === 'smithing') { -- cgit v1.2.3