commit b0140686f337907f3b971b37afb595701cf215f8
parent 6c1ba0aeeee79df0b3d55a9aee68407989857a25
Author: Dan Stillman <dstillman@zotero.org>
Date: Fri, 31 Mar 2017 00:21:38 -0400
Add .regularOnly and .expandAll flags to ItemTreeView
Diffstat:
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/chrome/content/zotero/selectItemsDialog.js b/chrome/content/zotero/selectItemsDialog.js
@@ -89,7 +89,8 @@ var onCollectionSelected = Zotero.Promise.coroutine(function* ()
}
// Create items list and wait for it to load
- itemsView = new Zotero.ItemTreeView(collectionTreeRow, (window.arguments[1] ? true : false));
+ itemsView = new Zotero.ItemTreeView(collectionTreeRow);
+ itemsView.sourcesOnly = !!window.arguments[1];
document.getElementById('zotero-items-tree').view = itemsView;
yield itemsView.waitForLoad();
diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js
@@ -34,7 +34,7 @@
/*
* Constructor for the ItemTreeView object
*/
-Zotero.ItemTreeView = function (collectionTreeRow, sourcesOnly) {
+Zotero.ItemTreeView = function (collectionTreeRow) {
Zotero.LibraryTreeView.apply(this);
this.wrappedJSObject = this;
@@ -44,8 +44,6 @@ Zotero.ItemTreeView = function (collectionTreeRow, sourcesOnly) {
this._skipKeypress = false;
- this._sourcesOnly = sourcesOnly;
-
this._ownerDocument = null;
this._needsSort = false;
@@ -64,6 +62,8 @@ Zotero.ItemTreeView = function (collectionTreeRow, sourcesOnly) {
Zotero.ItemTreeView.prototype = Object.create(Zotero.LibraryTreeView.prototype);
Zotero.ItemTreeView.prototype.type = 'item';
+Zotero.ItemTreeView.prototype.regularOnly = false;
+Zotero.ItemTreeView.prototype.expandAll = false;
/**
@@ -119,6 +119,19 @@ Zotero.ItemTreeView.prototype.setTree = Zotero.Promise.coroutine(function* (tree
return;
}
+ // Expand all parent items for some views (e.g., My Publications). We do this here instead of
+ // refresh so that it doesn't get reverted after item changes.
+ if (this.expandAll) {
+ var t = new Date();
+ for (let i = 0; i < this._rows.length; i++) {
+ if (this.isContainer(i) && !this.isContainerOpen(i)) {
+ this.toggleOpenState(i, true);
+ }
+ }
+ Zotero.debug(`Opened all parent items in ${new Date() - t} ms`);
+ }
+ this._refreshItemRowMap();
+
// Add a keypress listener for expand/collapse
var tree = this._treebox.treeBody.parentNode;
var self = this;
@@ -371,8 +384,8 @@ Zotero.ItemTreeView.prototype.refresh = Zotero.serial(Zotero.Promise.coroutine(f
for (let i=0, len=newItems.length; i < len; i++) {
let item = newItems[i];
- // Only add regular items if sourcesOnly is set
- if (this._sourcesOnly && !item.isRegularItem()) {
+ // Only add regular items if regularOnly is set
+ if (this.regularOnly && !item.isRegularItem()) {
continue;
}
@@ -1174,7 +1187,7 @@ Zotero.ItemTreeView.prototype.isContainer = function(row)
Zotero.ItemTreeView.prototype.isContainerEmpty = function(row)
{
- if (this._sourcesOnly) {
+ if (this.regularOnly) {
return true;
}