From 59a670b381eed0a2ebf9e6f71b1520c3fd1abf87 Mon Sep 17 00:00:00 2001
From: xiangyu <3170102889@zju.edu.cn>
Date: Wed, 4 May 2022 01:06:41 +0800
Subject: [PATCH] add: jump to attachments in knowledge
---
src/events.ts | 39 +++++++++++++++++++++++++++++++++++++++
src/views.ts | 6 ++++--
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/src/events.ts b/src/events.ts
index d1c85fa..a42e5bc 100644
--- a/src/events.ts
+++ b/src/events.ts
@@ -198,6 +198,12 @@ class AddonEvents extends AddonBase {
middle.append(header);
} else {
// This is a preview knowledge, hide openWorkspace button add show close botton
+ this._Addon.views.changeEditorButtonView(
+ _window.document.getElementById("knowledge-start"),
+ "jumpAttachment",
+ "Open Note Attachments",
+ "jumpAttachment"
+ );
this._Addon.views.changeEditorButtonView(
_window.document.getElementById("knowledge-end"),
"close",
@@ -411,6 +417,39 @@ class AddonEvents extends AddonBase {
await this._Addon.knowledge.exportNoteToFile(
message.content.editorInstance._item
);
+ } else if (message.type === "jumpAttachment") {
+ /*
+ message.content = {
+ editorInstance
+ }
+ */
+ const note = message.content.editorInstance._item;
+ let successCount = 0;
+ let failCount = 0;
+ if (note.parentItem) {
+ for (const attchment of Zotero.Items.get(
+ note.parentItem.getAttachments()
+ )) {
+ Zotero.debug(attchment);
+ try {
+ await Zotero.OpenPDF.openToPage(attchment);
+ successCount += 1;
+ } catch (e) {
+ Zotero.debug("Knowledge4Zotero: Open attachment failed:");
+ Zotero.debug(attchment);
+ failCount += 1;
+ }
+ }
+ }
+ if (successCount === 0) {
+ this._Addon.views.showProgressWindow(
+ "Knowledge",
+ failCount
+ ? "Error occurred on opening attachemnts."
+ : "No attachment found.",
+ "fail"
+ );
+ }
} else {
Zotero.debug(`Knowledge4Zotero: message not handled.`);
}
diff --git a/src/views.ts b/src/views.ts
index efbc64c..c4a53f5 100644
--- a/src/views.ts
+++ b/src/views.ts
@@ -16,6 +16,7 @@ class AddonViews extends AddonBase {
addToKnowledge: ``,
notMainKnowledge: ``,
isMainKnowledge: ``,
+ jumpAttachment: ``,
export: ``,
close: ``,
openWorkspaceCollectionView: ``,
@@ -134,11 +135,12 @@ class AddonViews extends AddonBase {
}
changeEditorButtonView(
- button: Element,
+ container: Element,
icon: string,
title: string = "",
eventType: string = ""
) {
+ const button = container.getElementsByTagName("button")[0];
button.innerHTML = this.editorIcon[icon];
if (title) {
button.setAttribute("title", title);
@@ -477,7 +479,7 @@ class AddonViews extends AddonBase {
showProgressWindow(
header: string,
context: string,
- type: string = "default",
+ type: "default" | "success" | "fail" = "default",
t: number = 5000
) {
let progressWindow = new Zotero.ProgressWindow({ closeOnClick: true });