remove: pref page

add: outline resizable
This commit is contained in:
xiangyu 2022-05-04 19:41:09 +08:00
parent 09216d8554
commit 93317f0230
6 changed files with 51 additions and 36 deletions

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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);

View File

@ -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)
);
}

View File

@ -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) {