mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-05 12:20:16 +01:00
This commit is contained in:
parent
5a9bb84641
commit
a635bcbafd
15 changed files with 63 additions and 64 deletions
|
|
@ -334,24 +334,23 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
if (!popoverTargetElement || window.siyuan.menus.menu.data?.isSameNode(popoverTargetElement)) {
|
||||
return;
|
||||
}
|
||||
let ids: string[];
|
||||
let defIds: string[];
|
||||
let refDefs: IRefDefs[];
|
||||
let originalRefBlockIDs: IObject
|
||||
const dataId = popoverTargetElement.getAttribute("data-id");
|
||||
if (dataId) {
|
||||
// backlink/util/hint/正文标题 上的弹层
|
||||
if (showRef) {
|
||||
const postResponse = await fetchSyncPost("/api/block/getRefIDs", {id: dataId});
|
||||
ids = postResponse.data.refIDs;
|
||||
defIds = postResponse.data.defIDs;
|
||||
refDefs = postResponse.data.refIDs;
|
||||
originalRefBlockIDs = postResponse.data.originalRefBlockIDs;
|
||||
} else {
|
||||
if (dataId.startsWith("[")) {
|
||||
ids = JSON.parse(dataId);
|
||||
JSON.parse(dataId).forEach((item: string) => {
|
||||
refDefs.push({refID: item});
|
||||
});
|
||||
} else {
|
||||
ids = [dataId];
|
||||
refDefs = [{refID: dataId}];
|
||||
}
|
||||
defIds = JSON.parse(popoverTargetElement.getAttribute("data-defids") || "[]");
|
||||
}
|
||||
} else if (popoverTargetElement.getAttribute("data-type")?.indexOf("virtual-block-ref") > -1) {
|
||||
const nodeElement = hasClosestBlock(popoverTargetElement);
|
||||
|
|
@ -360,18 +359,18 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
anchor: popoverTargetElement.textContent,
|
||||
excludeIDs: [nodeElement.getAttribute("data-node-id")]
|
||||
});
|
||||
ids = postResponse.data;
|
||||
refDefs = postResponse.data.refDefs;
|
||||
}
|
||||
} else if (popoverTargetElement.getAttribute("data-type")?.split(" ").includes("a")) {
|
||||
// 以思源协议开头的链接
|
||||
ids = [getIdFromSYProtocol(popoverTargetElement.getAttribute("data-href"))];
|
||||
refDefs = [{refID: getIdFromSYProtocol(popoverTargetElement.getAttribute("data-href"))}];
|
||||
} else if (popoverTargetElement.dataset.type === "url") {
|
||||
// 在 database 的 url 列中以思源协议开头的链接
|
||||
ids = [getIdFromSYProtocol(popoverTargetElement.textContent.trim())];
|
||||
refDefs = [{refID: getIdFromSYProtocol(popoverTargetElement.textContent.trim())}];
|
||||
} else if (popoverTargetElement.dataset.popoverUrl) {
|
||||
// 镜像数据库
|
||||
const postResponse = await fetchSyncPost(popoverTargetElement.dataset.popoverUrl, {avID: popoverTargetElement.dataset.avId});
|
||||
ids = postResponse.data;
|
||||
refDefs = postResponse.data.refDefs;
|
||||
} else {
|
||||
// pdf
|
||||
let targetId;
|
||||
|
|
@ -382,7 +381,9 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
} else if (popoverTargetElement.classList.contains("pdf__rect")) {
|
||||
const relationIds = popoverTargetElement.getAttribute("data-relations");
|
||||
if (relationIds) {
|
||||
ids = relationIds.split(",");
|
||||
relationIds.split(",").forEach((item: string) => {
|
||||
refDefs.push({refID: item});
|
||||
});
|
||||
url = "";
|
||||
} else {
|
||||
targetId = popoverTargetElement.getAttribute("data-node-id");
|
||||
|
|
@ -394,8 +395,7 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
}
|
||||
if (url) {
|
||||
const postResponse = await fetchSyncPost(url, {id: targetId});
|
||||
ids = postResponse.data.refIDs;
|
||||
defIds = postResponse.data.defIDs;
|
||||
refDefs = postResponse.data.refIDs;
|
||||
originalRefBlockIDs = postResponse.data.originalRefBlockIDs;
|
||||
}
|
||||
}
|
||||
|
|
@ -403,7 +403,7 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
let hasPin = false;
|
||||
window.siyuan.blockPanels.find((item) => {
|
||||
if ((item.targetElement || typeof item.x === "number") && item.element.getAttribute("data-pin") === "true"
|
||||
&& JSON.stringify(ids) === JSON.stringify(item.nodeIds)) {
|
||||
&& JSON.stringify(refDefs) === JSON.stringify(item.refDefs)) {
|
||||
hasPin = true;
|
||||
return true;
|
||||
}
|
||||
|
|
@ -415,8 +415,7 @@ export const showPopover = async (app: App, showRef = false) => {
|
|||
app,
|
||||
targetElement: popoverTargetElement,
|
||||
isBacklink: showRef || popoverTargetElement.classList.contains("protyle-attr--refcount") || popoverTargetElement.classList.contains("counter"),
|
||||
nodeIds: ids,
|
||||
defIds,
|
||||
refDefs,
|
||||
originalRefBlockIDs,
|
||||
}));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue