Skip to content

Commit d532066

Browse files
author
xiangyu
committed
feat: update link text
resolve #4
1 parent cbd2760 commit d532066

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed

src/knowledge.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class Knowledge extends AddonBase {
251251
this._Addon.views.scrollToLine(
252252
editorInstance,
253253
// Scroll to 6 lines before the inserted line
254-
lineIndex - 5
254+
lineIndex - 1
255255
);
256256
this._Addon.events.onEditorEvent(
257257
new EditorMessage("enterWorkspace", {

src/views.ts

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,76 @@ class AddonViews extends AddonBase {
318318
);
319319
});
320320
});
321+
322+
let updateButton = _window.document.getElementById("update-note-link");
323+
if (updateButton) {
324+
updateButton.remove();
325+
}
326+
updateButton = _window.document.createElement("button");
327+
updateButton.setAttribute("id", "update-note-link");
328+
updateButton.setAttribute(
329+
"title",
330+
`Update Linked Note: ${note.getNoteTitle()}`
331+
);
332+
updateButton.innerHTML = `<svg t="1652685521153" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7063" width="16" height="16"><path d="M271.914667 837.418667C182.314667 756.522667 128 637.653333 128 508.714667 128 304.896 263.338667 129.834667 450.986667 85.333333L469.333333 170.026667c-150.016 35.584-258.304 175.658667-258.304 338.688 0 106.069333 45.866667 203.562667 121.258667 268.373333L426.666667 682.666667v256H170.666667l101.248-101.248zM727.082667 168.917333C831.530667 249.045333 896 377.088 896 517.077333c0 202.922667-135.338667 377.258667-322.986667 421.589334L554.666667 854.357333c150.016-35.456 258.304-174.933333 258.304-337.322666 0-117.12-56.405333-223.786667-146.901334-287.146667L554.666667 341.333333V85.333333h256l-83.584 83.584z" p-id="7064"></path></svg>`;
333+
updateButton.addEventListener("click", async (e) => {
334+
Zotero.debug("Update Linked Note");
335+
const noteLines = this._Addon.knowledge.getLinesInNote();
336+
let line = noteLines[this._Addon.knowledge.currentLine];
337+
Zotero.debug(line);
338+
339+
let linkStart = line.search(/<a /g);
340+
let linkEnd = line.search(/<\/a>/g) + 4;
341+
let beforeLink = line.slice(0, linkStart);
342+
let afterLink = line.slice(linkEnd);
343+
let linkPart = line.slice(linkStart, linkEnd);
344+
let link = this._Addon.knowledge.getLinkFromText(linkPart);
345+
let currentNote: ZoteroItem;
346+
Zotero.debug(link);
347+
if (link) {
348+
currentNote = (await this._Addon.knowledge.getNoteFromLink(link))
349+
.item;
350+
}
351+
352+
while (
353+
linkPart &&
354+
(!link || !currentNote || currentNote.id !== note.id)
355+
) {
356+
line = afterLink;
357+
beforeLink = beforeLink + linkPart;
358+
line = afterLink;
359+
360+
linkStart = line.search(/<a /g);
361+
linkEnd = line.search(/<\/a>/g) + 4;
362+
beforeLink = beforeLink + line.slice(0, linkStart);
363+
afterLink = line.slice(linkEnd);
364+
linkPart = line.slice(linkStart, linkEnd);
365+
link = this._Addon.knowledge.getLinkFromText(linkPart);
366+
if (link) {
367+
currentNote = (await this._Addon.knowledge.getNoteFromLink(link))
368+
.item;
369+
}
370+
Zotero.debug("----");
371+
Zotero.debug(link);
372+
Zotero.debug(linkPart);
373+
}
374+
if (!linkPart) {
375+
return;
376+
}
377+
beforeLink = beforeLink + linkPart.slice(0, linkPart.search(/>/) + 1);
378+
afterLink = "</a>" + afterLink;
379+
const newLine = `${beforeLink}${currentNote.getNoteTitle()}${afterLink}`;
380+
Zotero.debug(newLine);
381+
noteLines[this._Addon.knowledge.currentLine] = newLine;
382+
383+
this._Addon.knowledge.setLinesToNote(undefined, noteLines);
384+
this._Addon.knowledge.scrollWithRefresh(
385+
this._Addon.knowledge.currentLine
386+
);
387+
});
321388
_window.document
322389
.getElementsByClassName("link-popup")[0]
323-
.appendChild(insertButton);
390+
.append(insertButton, updateButton);
324391
}
325392
}
326393

0 commit comments

Comments
 (0)