parent
09216d8554
commit
93317f0230
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE window SYSTEM "chrome://__addonRef__/locale/overlay.dtd">
|
||||
|
||||
<overlay id="__addonRef__-preferences" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
|
||||
<prefwindow id="zotero-prefs">
|
||||
<prefpane id="zotero-prefpane-__addonRef__" insertafter="zotero-prefpane-advanced" label="__addonRef__" image="chrome://__addonRef__/skin/favicon@2x.png" onpaneload="Zotero.Knowledge4Zotero.prefs.initPreferences(document)">
|
||||
<preferences id="zotero-preferences-__addonRef__">
|
||||
<preference id="pref-__addonRef__-mainknowledgeid" name="extensions.zotero.__addonRef__.mainKnowledgeID" type="string" />
|
||||
</preferences>
|
||||
</prefpane>
|
||||
</prefwindow>
|
||||
</overlay>
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
<script src="chrome://__addonRef__/content/lib/js/dx.all.js"></script>
|
||||
<script type="application/javascript">
|
||||
Zotero.Knowledge4Zotero.views.$ = $;
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<keyset>
|
||||
<key id="key_close" key="W" modifiers="accel" command="cmd_close" />
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<command id="cmd_close" oncommand="window.close();" />
|
||||
|
||||
<hbox flex="1">
|
||||
<vbox id="zotero-knowledge-outline" flex="1" width="250" maxwidth="250" minwidth="250">
|
||||
<vbox id="zotero-knowledge-outline" flex="1" width="300" minwidth="250" style="overflow: hidden;">
|
||||
<html:div class="dx-viewport">
|
||||
<div class="demo-container">
|
||||
<div class="form">
|
||||
|
|
@ -63,11 +63,11 @@
|
|||
<splitter id="outline-splitter" collapse="before">
|
||||
<grippy></grippy>
|
||||
</splitter>
|
||||
<zoteronoteeditor id="zotero-note-editor-main" flex="1" onerror="return;onError()" />
|
||||
<zoteronoteeditor id="zotero-note-editor-main" flex="1" width="700" onerror="return;onError()" />
|
||||
<splitter id="preview-splitter" collapse="after" state="collapsed">
|
||||
<grippy></grippy>
|
||||
</splitter>
|
||||
<zoteronoteeditor id="zotero-note-editor-preview" flex="1" onerror="return;onError()" />
|
||||
<zoteronoteeditor id="zotero-note-editor-preview" flex="1" width="500" onerror="return;onError()" />
|
||||
</hbox>
|
||||
|
||||
</window>
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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<object>[] {
|
||||
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)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
42
src/views.ts
42
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<object>) => {
|
||||
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,
|
||||
`<h${node.model.rank}>${text}</h${node.model.rank}>`,
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue