From: erickson Date: Mon, 9 Oct 2006 15:01:43 +0000 (+0000) Subject: re-arranged the folder drawing to fix display bugs X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=6efa6e12f71c756ed9e40d966362832a724bfaaa;p=Evergreen.git re-arranged the folder drawing to fix display bugs git-svn-id: svn://svn.open-ils.org/ILS/trunk@6417 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/reports/oils_rpt_folders.js b/Open-ILS/web/reports/oils_rpt_folders.js index b82a65b3f0..adf5a6aa80 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -174,38 +174,61 @@ oilsRptFolderManager.prototype.fetchFolders = function(auth) { oilsRptFolderManager.prototype.drawFolders = function(type, folders) { - var tree; - - folders = folders.sort( - function(a,b) { - var asw = a.share_with(); - var bsw = b.share_with(); - if( asw ) asw = findOrgDepth(findOrgUnit(asw.id())); - else asw = -1; - if( bsw ) bsw = findOrgDepth(findOrgUnit(bsw.id())); - else bsw = -1; - if( asw < bsw ) return 1; - if( asw > bsw ) return -1; - return 0; - } - ); + var tree; + var owners = {}; for( var i = 0; i < folders.length; i++ ) { + var folder = folders[i]; var id = oilsNextId(); var node = { folder : folder, treeId : id }; + oilsRptFolderNodeCache[type][folder.id()] = node; node.folderWindow = new oilsRptFolderWindow(type, folder.id()) + /* _debug("creating folder node for "+folder.name()+" : id = "+ folder.id()+' treeId = '+id + ' window id = ' + node.folderWindow.id); */ - } + /* shared folders get a folder for the usrname of the + owner as the parent node for the folders in the tree */ + if(!folder.parent() && folder.owner().id() != USER.id()) { + if(owners[folder.owner().id()]) { + node.ownerNode = owners[folder.owner().id()]; + continue; + } + + _debug("building usrname node "+type+" -> " +folder.owner().usrname()); + + var id = oilsNextId(); + var pid = this.stId; + var tree = oilsRptSharedTemplateFolderTree; + var treename = 'oilsRptSharedTemplateFolderTree'; + + if(type=='report') { + tree = oilsRptSharedReportFolderTree; + treename = 'oilsRptSharedReportFolderTree'; + pid = this.srId; + } + + if(type=='output') { + tree = oilsRptSharedOutputFolderTree; + treename = 'oilsRptSharedOutputFolderTree'; + pid = this.soId; + } + + tree.addNode(id, pid, folder.owner().usrname()); + tree.close(pid); + owners[folder.owner().id()] = id; + node.ownerNode = id; + } + } for( var i = 0; i < folders.length; i++ ) { + var folder = folders[i]; var mine = (folder.owner().id() == USER.id()); var pid; @@ -251,41 +274,19 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { if( folder.parent() ) pid = this.findNode(type, folder.parent()).treeId; - /* - if(!mine) { - if(!this.orgTrail[type][folder.share_with().id()]) { - tree.addNode(id, pid, folder.share_with().shortname()); - tree.close(pid); - pid = id; - id = oilsNextId(); - this.orgTrail[type][folder.share_with().id()] = pid; - } else { - pid = this.orgTrail[type][folder.share_with().id()]; - id = oilsNextId(); - } - } - */ - var fname = folder.name(); if(!mine) { fname = folder.name() + ' ('+folder.share_with().shortname()+')'; - if(!this.ownerFolders[type][folder.owner().id()]) { - tree.addNode(id, pid, folder.owner().usrname()); - tree.close(pid); - pid = id; - id = oilsNextId(); - this.ownerFolders[type][folder.owner().id()] = pid; - } else { - pid = this.ownerFolders[type][folder.owner().id()]; - id = oilsNextId(); - } + if( node.ownerNode ) pid = node.ownerNode; + } else { if(isTrue(folder.shared())) fname = folder.name() + ' ('+folder.share_with().shortname()+')'; } var action = 'javascript:oilsRptObject.find('+node.folderWindow.id+').draw();'; + /* _debug('adding node '+fname+' id = ' + id + ' pid = ' +pid + ' parent = ' + folder.parent() + ' folder-window = ' + node.folderWindow.id );