re-arranged the folder drawing to fix display bugs
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 9 Oct 2006 15:01:43 +0000 (15:01 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 9 Oct 2006 15:01:43 +0000 (15:01 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6417 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt_folders.js

index b82a65b..adf5a6a 100644 (file)
@@ -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 );