diff --git a/app/src/layout/dock/Backlink.ts b/app/src/layout/dock/Backlink.ts index 93dda6837..9b9edacc1 100644 --- a/app/src/layout/dock/Backlink.ts +++ b/app/src/layout/dock/Backlink.ts @@ -163,6 +163,22 @@ export class Backlink extends Model { position: "bottom", action: [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT] }); + }, + toggleClick:(liElement: HTMLElement)=> { + const svgElement = liElement.firstElementChild.firstElementChild; + if (svgElement.classList.contains("b3-list-item__arrow--open")) { + svgElement.classList.remove("b3-list-item__arrow--open"); + liElement.nextElementSibling?.classList.add("fn__none"); + } else { + svgElement.classList.add("b3-list-item__arrow--open"); + if (liElement.nextElementSibling && liElement.nextElementSibling.tagName === "UL") { + liElement.nextElementSibling.classList.remove("fn__none"); + } else { + fetchPost("/api/ref/getBacklinkDoc", {defID:this.blockId, refTreeID:liElement.getAttribute("data-node-id")}, (response)=>{ + + }) + } + } } }); this.mTree = new Tree({ @@ -355,7 +371,14 @@ export class Backlink extends Model { this.notebookId = data.box; this.inputsElement[0].value = data.k; this.inputsElement[1].value = data.mk; - + data.backlinks.forEach((item) => { + delete item.blocks + delete item.children + }) + data.backmentions.forEach((item) => { + delete item.blocks + delete item.children + }) this.tree.updateData(data.backlinks); this.mTree.updateData(data.backmentions); diff --git a/app/src/util/Tree.ts b/app/src/util/Tree.ts index a5da6be78..87bfd7009 100644 --- a/app/src/util/Tree.ts +++ b/app/src/util/Tree.ts @@ -14,6 +14,7 @@ export class Tree { private click: (element: HTMLElement, event: MouseEvent) => void; private ctrlClick: (element: HTMLElement) => void; + private toggleClick: (element: HTMLElement) => void; private shiftClick: (element: HTMLElement) => void; private altClick: (element: HTMLElement) => void; private rightClick: (element: HTMLElement, event: MouseEvent) => void; @@ -27,6 +28,7 @@ export class Tree { ctrlClick?(element: HTMLElement): void altClick?(element: HTMLElement): void shiftClick?(element: HTMLElement): void + toggleClick?(element: HTMLElement): void rightClick?(element: HTMLElement, event: MouseEvent): void }) { this.click = options.click; @@ -34,6 +36,7 @@ export class Tree { this.altClick = options.altClick; this.shiftClick = options.shiftClick; this.rightClick = options.rightClick; + this.toggleClick = options.toggleClick; this.element = options.element; this.blockExtHTML = options.blockExtHTML; this.topExtHTML = options.topExtHTML; @@ -76,7 +79,7 @@ data-type="${item.nodeType}" data-subtype="${item.subType}" ${item.label ? "data-label='" + item.label + "'" : ""}> - + ${iconHTML} ${item.name} @@ -137,6 +140,10 @@ data-def-path="${item.defPath}"> } private toggleBlocks(liElement: HTMLElement) { + if (this.toggleClick) { + this.toggleClick(liElement) + return; + } if (!liElement.nextElementSibling) { return; }