diff --git a/src/npc/surgery/organFarm.js b/src/npc/surgery/organFarm.js index c269adacb042f8c80fb56756d3bb05750e9fe094..1148e486468c7a8e3271253347cf02224a9c5f9e 100644 --- a/src/npc/surgery/organFarm.js +++ b/src/npc/surgery/organFarm.js @@ -1,6 +1,6 @@ /** * @param {App.Entity.SlaveState} slave - * @returns {DocumentFragment} + * @returns {HTMLDivElement} */ App.Medicine.OrganFarm.growActions = function(slave) { const el = new DocumentFragment(); @@ -32,7 +32,7 @@ App.Medicine.OrganFarm.growActions = function(slave) { } } - const div = document.createElement("div"); + let div = document.createElement("div"); div.classList.add("grid-2columns-auto"); // create entries for each organ @@ -41,10 +41,18 @@ App.Medicine.OrganFarm.growActions = function(slave) { O.forEach((organ, key) => { if (slaveOrgans[key] === 0) { if (organ.canGrow(slave)) { + const array = []; + array.push(App.UI.DOM.makeElement("div", App.UI.DOM.passageLink(organ.name, "Remote Surgery", () => { + App.Medicine.OrganFarm.growOrgan(slave, key); + }))); + + const tooltip = typeof organ.tooltip === "string" ? organ.tooltip : organ.tooltip(slave); + array.push(App.UI.DOM.makeElement("div", `Costs ${cashFormat(organ.cost)}${tooltip !== "" ? ` and ${tooltip}` : ""}.`, "detail")); + if (organ.implantActions.some((o) => { return o.canImplant(slave); })) { - canImplant.push(key); + canImplant.push(...array); } else { - cantImplant.push(key); + cantImplant.push(...array); } } any = true; @@ -67,54 +75,23 @@ App.Medicine.OrganFarm.growActions = function(slave) { App.UI.DOM.appendNewElement("div", div, growing[i].text); } } - const chosenOption = App.UI.DOM.makeElement("div"); if (canImplant.length > 0) { - App.UI.DOM.appendNewElement("div", div, "Can implant immediately"); - div.append(makePulldown(canImplant)); + App.UI.DOM.appendNewElement("div", div, "Can implant immediately", "bold"); + App.UI.DOM.appendNewElement("div", div); + canImplant.forEach(c => div.append(c)); } if (cantImplant.length > 0) { - App.UI.DOM.appendNewElement("div", div, "Can't implant immediately"); - div.append(makePulldown(cantImplant)); + App.UI.DOM.appendNewElement("div", div, "Can't implant immediately", "bold"); + App.UI.DOM.appendNewElement("div", div); + cantImplant.forEach(c => div.append(c)); } el.append(div); - el.append(chosenOption); if (any) { - return el; + return div; } else { return null; } - - function makePulldown(array) { - const selDiv = document.createElement("div"); - const select = App.UI.DOM.appendNewElement("select", selDiv); - array.forEach(key => { - const option = App.UI.DOM.appendNewElement("option", select); - option.textContent = O.get(key).name; - option.value = key; - }); - select.onchange = () => { - const O = select.options[select.selectedIndex]; - const organ = App.Medicine.OrganFarm.Organs.get(O.value); - const frag = new DocumentFragment(); - const tooltip = typeof organ.tooltip === "string" ? organ.tooltip : organ.tooltip(slave); - - App.UI.DOM.appendNewElement( - "span", - frag, - App.UI.DOM.passageLink( - organ.name, "Remote Surgery", () => { - App.Medicine.OrganFarm.growOrgan(slave, O.value); - } - ) - ); - - App.UI.DOM.appendNewElement("span", frag, ` Costs ${cashFormat(organ.cost)}${tooltip !== "" ? ` and ${tooltip}` : ""}.`, "detail"); - jQuery(chosenOption).empty().append(frag); - }; - select.selectedIndex = -1; - return selDiv; - } }; /** @@ -342,7 +319,8 @@ App.Medicine.OrganFarm.currentlyGrowing = function() { if (o.weeksToCompletion <= 0) { finishLines.push(`${tank.slaveName}'s ${App.Medicine.OrganFarm.Organs.get(o.type).name}.`); } else { - growLines.push(`${tank.slaveName}'s ${App.Medicine.OrganFarm.Organs.get(o.type).name}, ${weeksToCompletion(o.weeksToCompletion)} week(s) left.`); + growLines.push(`${tank.slaveName}'s ${App.Medicine.OrganFarm.Organs.get(o.type).name}, ${ + weeksToCompletion(o.weeksToCompletion)} week(s) left.`); } } else { growLines.push(App.UI.DOM.makeElement("span", `ERROR: No tank with ID ${o.ID} found.`, "error"));