diff --git a/addon/chrome.manifest b/addon/chrome.manifest index c6b5ec9..58afe66 100644 --- a/addon/chrome.manifest +++ b/addon/chrome.manifest @@ -7,4 +7,3 @@ component {9BC3D762-9038-486A-9D70-C997AF848A7D} components/zotero-protocol-ha contract @mozilla.org/network/protocol;1?name=zotero {9BC3D762-9038-486A-9D70-C997AF848A7D} overlay chrome://zotero/content/zoteroPane.xul chrome://__addonRef__/content/overlay.xul -overlay chrome://zotero/content/preferences/preferences.xul chrome://__addonRef__/content/preferences.xul diff --git a/addon/chrome/content/preferences.xul b/addon/chrome/content/preferences.xul deleted file mode 100644 index 1d3a3d1..0000000 --- a/addon/chrome/content/preferences.xul +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/addon/chrome/content/workspace.xul b/addon/chrome/content/workspace.xul index b03041b..1cc674a 100644 --- a/addon/chrome/content/workspace.xul +++ b/addon/chrome/content/workspace.xul @@ -21,7 +21,7 @@ + @@ -29,7 +29,7 @@ - +
@@ -63,11 +63,11 @@ - + - + \ No newline at end of file diff --git a/addon/chrome/skin/default/Knowledge4Zotero/workspace.css b/addon/chrome/skin/default/Knowledge4Zotero/workspace.css index a031e5a..0b99348 100644 --- a/addon/chrome/skin/default/Knowledge4Zotero/workspace.css +++ b/addon/chrome/skin/default/Knowledge4Zotero/workspace.css @@ -18,7 +18,7 @@ } .drive-panel { - padding: 20px 0px 20px 30px; + padding: 20px 0px 20px 10px; font-size: 115%; font-weight: bold; border-right: 1px solid rgba(165, 165, 165, 0.4); diff --git a/src/knowledge.ts b/src/knowledge.ts index e0e376b..bffd576 100644 --- a/src/knowledge.ts +++ b/src/knowledge.ts @@ -36,11 +36,10 @@ class Knowledge extends AddonBase { ); this.workspaceWindow = win; await this.waitWorkspaceReady(); - // @ts-ignore win.addEventListener("resize", (e) => { - // @ts-ignore - this._Addon.views.setTreeViewHeight(); + this._Addon.views.setTreeViewSize(); }); + this._Addon.views.bindTreeViewResize(); this.setWorkspaceNote("main"); this.currentLine = -1; this._Addon.views.buildOutline(); @@ -417,10 +416,12 @@ class Knowledge extends AddonBase { for (let i = 0; i < metadataContainer.children.length; i++) { let currentRank = 7; let lineElement = metadataContainer.children[i]; - if (lineElement.tagName[0] === "H" && lineElement.tagName.length === 2) { - let _rank = parseInt(lineElement.tagName[1]); - if (_rank >= 1 && _rank <= 6) { - currentRank = _rank; + const isHeading = + lineElement.tagName[0] === "H" && lineElement.tagName.length === 2; + const isLink = lineElement.innerHTML.search(/zotero:\/\/note\//g) !== -1; + if (isHeading || isLink) { + if (isHeading) { + currentRank = parseInt(lineElement.tagName[1]); } while (currentNode.model.rank >= currentRank) { currentNode = currentNode.parent; @@ -445,14 +446,17 @@ class Knowledge extends AddonBase { getNoteTreeAsList( note: ZoteroItem, - doFilter: boolean = true + filterRoot: boolean = true, + filterLikn: boolean = true ): TreeModel.Node[] { note = note || this.getWorkspaceNote(); if (!note) { return; } return this.getNoteTree(note).all( - (node) => !doFilter || node.model.lineIndex >= 0 + (node) => + (!filterRoot || node.model.lineIndex >= 0) && + (!filterLikn || node.model.rank <= 6) ); } diff --git a/src/views.ts b/src/views.ts index c5e2fac..6491ed0 100644 --- a/src/views.ts +++ b/src/views.ts @@ -174,7 +174,9 @@ class AddonViews extends AddonBase { button.setAttribute("id", "zotero-tb-knowledge-openwindow"); button.setAttribute("tooltiptext", "Create new Knowledge Workspace"); button.addEventListener("click", (e) => { - this._Addon.events.onEditorEvent(new EditorMessage("createWorkspace", {})); + this._Addon.events.onEditorEvent( + new EditorMessage("createWorkspace", {}) + ); }); button.setAttribute( "style", @@ -324,13 +326,14 @@ class AddonViews extends AddonBase { async buildOutline(note: ZoteroItem) { this._Addon.knowledge.currentNodeID = -1; - let treeList = this._Addon.knowledge.getNoteTreeAsList(note); + let treeList = this._Addon.knowledge.getNoteTreeAsList(note, true, false); const treeData = []; treeList.map((node: TreeModel.Node) => { treeData.push({ id: String(node.model.id), name: node.model.name, rank: node.model.rank, + icon: node.model.rank === 7 ? "textdocument" : undefined, lineIndex: node.model.lineIndex, endIndex: node.model.endIndex, isDirectory: node.hasChildren(), @@ -351,7 +354,6 @@ class AddonViews extends AddonBase { items, expandNodesRecursive: false, dataStructure: "plain", - width: 220, height: this.$("window").height() - 130, displayExpr: "name", noDataText: "No Heading 1 found", @@ -369,6 +371,14 @@ class AddonViews extends AddonBase { this.$("#outline-addafter").dxButton({ icon: "plus", onClick: (e) => { + let node = this._Addon.knowledge.getNoteTreeNodeById( + undefined, + this._Addon.knowledge.currentNodeID + ); + if (node.model.rank === 7) { + this.showProgressWindow("Knowledge", "Please select a Heading."); + return; + } const text = prompt("Enter new heading:"); this._Addon.knowledge.openWorkspaceWindow(); if (text.trim()) { @@ -381,10 +391,6 @@ class AddonViews extends AddonBase { ); return; } - let node = this._Addon.knowledge.getNoteTreeNodeById( - undefined, - this._Addon.knowledge.currentNodeID - ); this._Addon.knowledge.addSubLineToNote( undefined, `${text}`, @@ -404,6 +410,10 @@ class AddonViews extends AddonBase { undefined, this._Addon.knowledge.currentNodeID ); + if (node.model.rank === 7) { + this.showProgressWindow("Knowledge", "Please select a Heading."); + return; + } this._Addon.knowledge.changeHeadingLineInNote( undefined, 1, @@ -422,6 +432,10 @@ class AddonViews extends AddonBase { undefined, this._Addon.knowledge.currentNodeID ); + if (node.model.rank === 7) { + this.showProgressWindow("Knowledge", "Please select a Heading."); + return; + } this._Addon.knowledge.changeHeadingLineInNote( undefined, -1, @@ -431,8 +445,18 @@ class AddonViews extends AddonBase { }); } - setTreeViewHeight() { - this.$("#treeview").css("height", `${this.$("window").height() - 130}px`); + bindTreeViewResize() { + this.$("#zotero-knowledge-outline").on("resize", (e) => { + Zotero.debug(111); + this.setTreeViewSize(); + }); + } + + setTreeViewSize() { + this.$("#treeview").css({ + height: `${this.$("window").height() - 130}px`, + width: `${this.$("#zotero-knowledge-outline").width() - 10}px`, + }); } createSortable(selector, driveName) {