Work orders: fill a reagent slot after posting; no auto-reload while writing an order

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-20 18:46:39 +01:00
parent 326437ddf9
commit 1488692463
4 changed files with 39 additions and 3 deletions

View file

@ -90,7 +90,7 @@ async function refresh() {
function accept(state) {
version ??= state.version;
if (state.version !== version && !document.querySelector("[data-keep]:focus") && $("#modal").hidden) {
if (state.version !== version && !document.querySelector("[data-keep]:focus") && $("#modal").hidden && !draft) {
location.reload(); // a new build was deployed
return;
}
@ -1197,8 +1197,12 @@ function orderSlots(o) {
<span class="swap-qty">${fmt(per * all)}</span><span class="tick">✓</span></span></div>`;
}
const need = per * (o.status === "open" ? left : all), have = S.me.bank[id] || 0;
return `<div class="ro-slot open" title="${esc(`${name}: crafter brings`)}"><span class="doll-slot empty-req">${item(id).icon}</span>
<span class="ro-have ${o.by === S.uid ? "muted" : have < need ? "bad" : "good"}">${o.by === S.uid ? `×${fmt(need)}` : `${fmt(have)} / ${fmt(need)}`}</span></div>`;
// On your own open order, an empty slot can still be filled from your bank.
const fill = o.by === S.uid && o.status === "open";
return `<div class="ro-slot open">${fill
? `<button class="doll-slot empty-req" data-order-fill="${o.id}" data-item="${id}" ${have < need ? "disabled" : ""} title="${esc(`${name}: ${fmt(have)} / ${fmt(need)}`)}">${item(id).icon}</button>`
: `<span class="doll-slot empty-req" title="${esc(`${name}: crafter brings`)}">${item(id).icon}</span>`}
<span class="ro-have ${o.status !== "open" ? "muted" : have < need ? "bad" : "good"}">${o.status !== "open" ? `×${fmt(need)}` : `${fmt(have)} / ${fmt(need)}`}</span></div>`;
}).join("");
}
@ -1614,6 +1618,7 @@ document.addEventListener("click", (e) => {
if (d.orderDrop) return act("/api/order/drop", { id: Number(d.orderDrop) });
if (d.orderDeliver) return act("/api/order/deliver", { id: Number(d.orderDeliver) });
if (d.orderCancel) return act("/api/order/cancel", { id: Number(d.orderCancel) });
if (d.orderFill) return act("/api/order/provide", { id: Number(d.orderFill), item: d.item });
if (d.doll) {
dollPick = dollPick === d.doll ? null : d.doll;
return render();