From 33ae0b1a98fde4beb0adab8aeac48f77419ff254 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Fri, 16 Oct 2026 09:04:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=89=8D=E7=AB=AF=E7=95=8C=E9=9D=A2):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B5=84=E6=BA=90=E9=80=89=E6=8B=A9=E9=97=AA?= =?UTF-8?q?=E7=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/webui/ofdgo.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index e583e6d..96995c9 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -6154,12 +6154,16 @@ async function openResourceManagement() { await resourceTask(loadManagedResources); } -async function resourceTask(action) { +async function resourceTask(action, delay = 0) { if (resourceManager.busy) return; resourceManager.busy = true; - resourceElements.List.inert = true; + resourceElements.List.inert = !delay; updateResourceControls(); - resourceElements.Status.textContent = "处理中"; + const showBusy = () => { + resourceElements.Status.textContent = "处理中"; + }; + const timer = delay ? setTimeout(showBusy, delay) : null; + if (!delay) showBusy(); resourceElements.Panel.setAttribute("aria-busy", "true"); try { await action(); @@ -6167,6 +6171,7 @@ async function resourceTask(action) { } catch (err) { resourceElements.Status.textContent = resourceError(err.message); } finally { + if (timer !== null) clearTimeout(timer); resourceManager.busy = false; resourceElements.List.inert = false; resourceElements.Panel.removeAttribute("aria-busy"); @@ -6213,13 +6218,13 @@ async function renderResourceList() { span.textContent = value; button.append(span); } - button.addEventListener("click", () => resourceTask(() => selectManagedResource(item))); + button.addEventListener("click", () => chooseManagedResource(item)); button.addEventListener("keydown", event => { const index = items.indexOf(item); const target = { ArrowDown: Math.min(items.length - 1, index + 1), ArrowUp: Math.max(0, index - 1), Home: 0, End: items.length - 1 }[event.key]; if (target == null) return; event.preventDefault(); - resourceTask(() => selectManagedResource(items[target])).then(() => { + chooseManagedResource(items[target]).then(() => { if (resourceElements.Panel.open && resourceManager.selected === items[target]) resourceElements.List.children[target]?.focus(); }); }); @@ -6235,6 +6240,14 @@ async function renderResourceList() { await selectManagedResource(selected); } +async function chooseManagedResource(item) { + if (item === resourceManager.selected) return; + await resourceTask(() => { + resourceElements.Status.textContent = ""; + return selectManagedResource(item); + }, 150); +} + async function selectManagedResource(item) { const same = item?.id === resourceManager.selected?.id && item?.kind === resourceManager.selected?.kind; const reference = same ? resourceElements.Reference.value : "0";