commit e5b25a966b7984beee1c7f746ed49b3424bcc676
parent edb653cad4f927a766e7b8527cb8b66d1e894e87
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 23 May 2006 20:53:09 +0000
Items.getTreeRows() now takes an optional second param, type, which can (for the moment) be 'folders' or 'items' to limit the results
New methods: Folder.hasChildFolders() and Folder.hasChildItems()
Diffstat:
1 file changed, 34 insertions(+), 7 deletions(-)
diff --git a/chrome/chromeFiles/content/scholar/data_access.js b/chrome/chromeFiles/content/scholar/data_access.js
@@ -904,7 +904,7 @@ Scholar.Items = new function(){
*
* Type can tested with instanceof (e.g. if (obj instanceof Scholar.Folder)) or isFolder()
*/
- function getTreeRows(parent){
+ function getTreeRows(parent, type){
var toReturn = new Array();
/*
@@ -917,7 +917,18 @@ Scholar.Items = new function(){
}
var sql = 'SELECT * FROM treeStructure TS '
- + 'WHERE parentFolderID=' + parent + ' ORDER BY orderIndex';
+ + 'WHERE parentFolderID=' + parent;
+
+ switch (type){
+ case 'folder':
+ sql += ' AND isFolder=1';
+ break;
+ case 'item':
+ sql += ' AND isFolder=0';
+ break;
+ }
+
+ sql += ' ORDER BY orderIndex';
var tree = Scholar.DB.query(sql);
@@ -1074,8 +1085,11 @@ Scholar.Folder = function(){
Scholar.Folder.prototype.loadFromID = function(id){
// Should be same as query in Scholar.Folders, just with folderID
var sql = "SELECT folderID, folderName, parentFolderID, "
- + "(SELECT COUNT(*) FROM treeStructure WHERE parentFolderID=" +
- id + ")=0 AS isEmpty FROM folders F "
+ + "(SELECT COUNT(*) FROM treeStructure WHERE "
+ + "parentFolderID=TS.id AND isFolder=1)!=0 AS hasChildFolders, "
+ + "(SELECT COUNT(*) FROM treeStructure WHERE "
+ + "parentFolderID=TS.id AND isFolder=0)!=0 AS hasChildItems "
+ + "FROM folders F "
+ "JOIN treeStructure TS ON (F.folderID=TS.id AND TS.isFolder=1) "
+ "WHERE folderID=" + id;
@@ -1091,7 +1105,8 @@ Scholar.Folder.prototype.loadFromRow = function(row){
this._id = row['folderID'];
this._name = row['folderName'];
this._parent = row['parentFolderID'];
- this._empty = row['isEmpty'];
+ this._hasChildFolders = row['hasChildFolders'];
+ this._hasChildItems = row['hasChildItems'];
}
Scholar.Folder.prototype.getID = function(){
@@ -1111,9 +1126,18 @@ Scholar.Folder.prototype.getParent = function(){
}
Scholar.Folder.prototype.isEmpty = function(){
- return !!parseInt(this._empty);
+ return !(parseInt(this._hasChildFolders)) && !(parseInt(this._hasChildItems));
+}
+
+Scholar.Folder.prototype.hasChildFolders = function(){
+ return !!(parseInt(this._hasChildFolders));
}
+Scholar.Folder.prototype.hasChildItems = function(){
+ return !!(parseInt(this._hasChildItems));
+}
+
+
/**
* Deletes a folder and all descendent folders and items
**/
@@ -1232,7 +1256,10 @@ Scholar.Folders = new function(){
function _load(){
var sql = "SELECT folderID, folderName, parentFolderID, "
+ "(SELECT COUNT(*) FROM treeStructure WHERE "
- + "parentFolderID=TS.id)=0 AS isEmpty FROM folders F "
+ + "parentFolderID=TS.id AND isFolder=1)!=0 AS hasChildFolders, "
+ + "(SELECT COUNT(*) FROM treeStructure WHERE "
+ + "parentFolderID=TS.id AND isFolder=0)!=0 AS hasChildItems "
+ + "FROM folders F "
+ "JOIN treeStructure TS ON (F.folderID=TS.id AND TS.isFolder=1) "
+ "WHERE folderID>0"; // skip 'root' folder
var result = Scholar.DB.query(sql);