diff --git a/app.js b/app.js index 373211f..2673603 100644 --- a/app.js +++ b/app.js @@ -201,6 +201,27 @@ function renderControls() { $("#recommendationCount").value = state.recommendationCount; } +function createEffectRow(effect, effectIndex, typeAttribute, valueAttribute, showInitialHint = true) { + const row = document.createElement("div"); + row.className = "effect-row"; + row.innerHTML = ` + + `; + row.querySelector("select").value = effect.type; + if (showInitialHint) { + row.querySelector(".cap-hint").textContent = effect.type ? `Cap: ${effectById(effect.type).cap}%` : "Ignored"; + } + return row; +} + function renderGear() { const grid = $("#gearGrid"); const template = $("#gearTemplate"); @@ -244,23 +265,7 @@ function renderGear() { effects.innerHTML = '

Base stats only. No effects.

'; } else { piece.effects.forEach((effect, effectIndex) => { - const row = document.createElement("div"); - row.className = "effect-row"; - row.innerHTML = ` - - `; - row.querySelector("select").value = effect.type; - const hint = row.querySelector(".cap-hint"); - hint.textContent = effect.type ? `Cap: ${effectById(effect.type).cap}%` : "Ignored"; - effects.appendChild(row); + effects.appendChild(createEffectRow(effect, effectIndex, "data-effect-type", "data-effect-value")); }); } @@ -300,21 +305,7 @@ function renderNewItemComparison() { const effects = $("#newItemEffects"); effects.innerHTML = ""; state.newItem.effects.forEach((effect, effectIndex) => { - const row = document.createElement("div"); - row.className = "effect-row"; - row.innerHTML = ` - - `; - row.querySelector("select").value = effect.type; - effects.appendChild(row); + effects.appendChild(createEffectRow(effect, effectIndex, "data-new-item-effect-type", "data-new-item-effect-value", false)); }); }