feat(文件关联): 统一关联状态提示
build.yaml / build (push) Successful in 45s

This commit is contained in:
xiaoqidun committed 2026-10-25 15:59:11 +08:00
1 parent f0c0b9db94
commit 19aa5523f8
5 files changed
+5 -18

No files matched your search

+1 -1
View File
@@ -203,7 +203,7 @@
<div class="about-row"><span>项目仓库</span><a href="https://github.com/xiaoqidun/ofdgo" target="_blank" rel="noreferrer">https://github.com/xiaoqidun/ofdgo</a></div> <div class="about-row"><span>项目仓库</span><a href="https://github.com/xiaoqidun/ofdgo" target="_blank" rel="noreferrer">https://github.com/xiaoqidun/ofdgo</a></div>
</form> </form>
<section id="associationSection" class="about-associations" hidden> <section id="associationSection" class="about-associations" hidden>
<div class="association-heading"><span>文件关联</span><span id="associationPermission" hidden>所有用户需管理员权限</span></div> <div class="association-heading">文件关联</div>
<div class="association-row" data-scope="user"><span>当前用户</span><span class="association-state"></span><div class="association-actions"><button class="small-button" type="button" data-action="register">注册</button><button class="small-button" type="button" data-action="remove">撤销</button></div></div> <div class="association-row" data-scope="user"><span>当前用户</span><span class="association-state"></span><div class="association-actions"><button class="small-button" type="button" data-action="register">注册</button><button class="small-button" type="button" data-action="remove">撤销</button></div></div>
<div class="association-row" data-scope="machine"><span>所有用户</span><span class="association-state"></span><div class="association-actions"><button class="small-button" type="button" data-action="register">注册</button><button class="small-button" type="button" data-action="remove">撤销</button></div></div> <div class="association-row" data-scope="machine"><span>所有用户</span><span class="association-state"></span><div class="association-actions"><button class="small-button" type="button" data-action="register">注册</button><button class="small-button" type="button" data-action="remove">撤销</button></div></div>
<div id="associationMessage" class="form-status" hidden></div> <div id="associationMessage" class="form-status" hidden></div>
-10
View File
@@ -970,21 +970,11 @@ button:not(:disabled):hover {
} }
.association-heading { .association-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px; margin-bottom: 12px;
font-weight: 600; font-weight: 600;
white-space: nowrap; white-space: nowrap;
} }
#associationPermission {
color: var(--text-muted);
font-size: 12px;
font-weight: normal;
}
.association-row { .association-row {
display: grid; display: grid;
grid-template-columns: 4em minmax(0, 1fr) auto; grid-template-columns: 4em minmax(0, 1fr) auto;
+1 -4
View File
@@ -197,7 +197,6 @@ const el = {
aboutPanel: document.querySelector("#aboutPanel"), aboutPanel: document.querySelector("#aboutPanel"),
aboutVersion: document.querySelector("#aboutVersion"), aboutVersion: document.querySelector("#aboutVersion"),
associationSection: document.querySelector("#associationSection"), associationSection: document.querySelector("#associationSection"),
associationPermission: document.querySelector("#associationPermission"),
associationMessage: document.querySelector("#associationMessage"), associationMessage: document.querySelector("#associationMessage"),
signButton: document.querySelector("#signButton"), signButton: document.querySelector("#signButton"),
signPanel: document.querySelector("#signPanel"), signPanel: document.querySelector("#signPanel"),
@@ -2058,18 +2057,16 @@ async function refreshFileAssociations() {
try { try {
const states = await nativeHost.call("association.query", {}); const states = await nativeHost.call("association.query", {});
el.associationSection.hidden = !states.user.supported; el.associationSection.hidden = !states.user.supported;
el.associationPermission.hidden = !states.machine.supported || states.machine.writable;
for (const row of el.associationSection.querySelectorAll(".association-row")) { for (const row of el.associationSection.querySelectorAll(".association-row")) {
const state = states[row.dataset.scope]; const state = states[row.dataset.scope];
const label = row.querySelector(".association-state"); const label = row.querySelector(".association-state");
label.textContent = state.error ? "不可用" : state.complete ? "已注册" : state.registered ? "待更新" : "未注册"; label.textContent = state.error || !state.writable ? "不可用" : state.complete ? "已注册" : state.registered ? "待更新" : "未注册";
label.title = state.error || ""; label.title = state.error || "";
row.querySelector('[data-action="register"]').disabled = !state.writable || !!state.error || state.complete; row.querySelector('[data-action="register"]').disabled = !state.writable || !!state.error || state.complete;
row.querySelector('[data-action="remove"]').disabled = !state.writable || !!state.error || !state.registered; row.querySelector('[data-action="remove"]').disabled = !state.writable || !!state.error || !state.registered;
} }
} catch (error) { } catch (error) {
el.associationSection.hidden = false; el.associationSection.hidden = false;
el.associationPermission.hidden = true;
for (const label of el.associationSection.querySelectorAll(".association-state")) label.textContent = "不可用"; for (const label of el.associationSection.querySelectorAll(".association-state")) label.textContent = "不可用";
el.associationMessage.textContent = `查询失败:${error.message}`; el.associationMessage.textContent = `查询失败:${error.message}`;
el.associationMessage.hidden = false; el.associationMessage.hidden = false;
+1 -1
View File
@@ -8,7 +8,7 @@ require (
github.com/go-text/typesetting v0.3.5 github.com/go-text/typesetting v0.3.5
github.com/tdewolff/canvas v0.0.0-20260923214215-09804640d00c github.com/tdewolff/canvas v0.0.0-20260923214215-09804640d00c
github.com/tdewolff/font v0.0.0-20261010204837-88a7f6b56918 github.com/tdewolff/font v0.0.0-20261010204837-88a7f6b56918
github.com/xiaoqidun/guigo v0.0.0-20261025072734-26f8f43c3631 github.com/xiaoqidun/guigo v0.0.0-20261025075751-73659d2a5eba
github.com/xiaoqidun/j2kgo v1.0.2 github.com/xiaoqidun/j2kgo v1.0.2
github.com/xiaoqidun/jbig2 v1.1.8 github.com/xiaoqidun/jbig2 v1.1.8
github.com/xiaoqidun/pdfgo v0.0.0-20261023171626-3473b442eed5 github.com/xiaoqidun/pdfgo v0.0.0-20261023171626-3473b442eed5
+2 -2
View File
@@ -60,8 +60,8 @@ github.com/tdewolff/parse/v2 v2.8.16 h1:bLk5svUOQRkW/Y2SJ+DeENSIkZBcTIkq+Atyv5D8
github.com/tdewolff/parse/v2 v2.8.16/go.mod h1:XdsoSFThlVIRIajAuqz1evNY7bagZS8LBOPA3aVopwQ= github.com/tdewolff/parse/v2 v2.8.16/go.mod h1:XdsoSFThlVIRIajAuqz1evNY7bagZS8LBOPA3aVopwQ=
github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk= github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk=
github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
github.com/xiaoqidun/guigo v0.0.0-20261025072734-26f8f43c3631 h1:iAIPGYhNvmA/eodRZqChfK4jqXKbABQfDtO3mwCrSWc= github.com/xiaoqidun/guigo v0.0.0-20261025075751-73659d2a5eba h1:8gQ9K2aIpYl72TdPAYWDju4YDhkrc3EyqIapWJd0AO8=
github.com/xiaoqidun/guigo v0.0.0-20261025072734-26f8f43c3631/go.mod h1:bXz+dPMVntPIVwePTTuMXt8Q0z1YoUGuROQSsXyUEfY= github.com/xiaoqidun/guigo v0.0.0-20261025075751-73659d2a5eba/go.mod h1:bXz+dPMVntPIVwePTTuMXt8Q0z1YoUGuROQSsXyUEfY=
github.com/xiaoqidun/j2kgo v1.0.2 h1:OAjjEOfaBaQzBNcj9wx+eM68UI5pewR6SzNZa1R1DIw= github.com/xiaoqidun/j2kgo v1.0.2 h1:OAjjEOfaBaQzBNcj9wx+eM68UI5pewR6SzNZa1R1DIw=
github.com/xiaoqidun/j2kgo v1.0.2/go.mod h1:DCwAfuDzCDYqUiAlZ7BDwigTjaXw7o9L1FtEma/D1aA= github.com/xiaoqidun/j2kgo v1.0.2/go.mod h1:DCwAfuDzCDYqUiAlZ7BDwigTjaXw7o9L1FtEma/D1aA=
github.com/xiaoqidun/jbig2 v1.1.8 h1:dERPW7F8gs18a/DOD9gXHR3fP1Vl6KhCNsLnq5l3BIo= github.com/xiaoqidun/jbig2 v1.1.8 h1:dERPW7F8gs18a/DOD9gXHR3fP1Vl6KhCNsLnq5l3BIo=