c0dd6baeb704807fc0ba385e5a5cb53b553cb40d
braney
  Mon Jan 29 10:12:36 2018 -0800
fixed some weirdnesses with empty collections

diff --git src/hg/js/hgCollection.js src/hg/js/hgCollection.js
index ba52c9f..0b248ce 100644
--- src/hg/js/hgCollection.js
+++ src/hg/js/hgCollection.js
@@ -18,50 +18,57 @@
         // populate the menu for the currentCollection tree
         var items = {
             addItem: { // The "add" menu item
                 label: "Add",
                 action: function () {
                     var nodeIds = $("#tracks").jstree( "get_selected");
                     isDirty = true;
                     var nodes = [];
                     var node;
                     for(ii=0; ii < nodeIds.length; ii++) {
                         node = $("#tracks").jstree('get_node', nodeIds[ii]);
                         if (node.children.length === 0)
                             nodes.push(node);
                     }
                     var parentId = $(selectedNode).attr('id');
+                    checkEmpty(parentId);
                     $(selectedTree).jstree("copy_node", nodes, parentId,'last');
                 }
             }
         };
 
         if ($(node).attr('children').length > 0)
             delete items.addItem;
 
         return items;
     }
 
     function currentCollectionItems(node) {
         // populate the menu for the currentCollection tree
         var items = {
             deleteItem: { // The "delete" menu item
                 label: "Delete",
                 action: function () {
                     var nodes = $(selectedTree).jstree( "get_selected");
+                    var parentNode = $(selectedTree).jstree("get_node", node.parent);
                     isDirty = true;
+                    if (parentNode.children.length === nodes.length) {
+                        $(selectedTree).jstree("create_node", node.parent, emptyCollectionText);
+                        parentNode.li_attr.class = "folder empty";
+                    }
                     $(selectedTree).jstree( "delete_node", nodes);
+                    $(selectedTree).jstree( "select_node", parentNode.id);
                 }
             }
         };
 
         return items;
         }
 
     function changeCollection() {
         $( "#newCollectionDialog" ).dialog("close");
         selectedNode.li_attr.class = "folder";
         selectedNode.li_attr.shortlabel = $("#customName").val().trim();
         selectedNode.li_attr.longlabel = $("#customDescription").val().trim();
         selectedNode.li_attr.visibility = $("#customVis").val();
         selectedNode.li_attr.color = $("#customColorInput").val();
         selectedNode.li_attr.missingmethod = $("input:radio[name ='missingData']:checked").val();
@@ -249,50 +256,53 @@
         for (ii=0; ii < nodes.length; ii++)
             if (nodes[ii].children.length !== 0)
                 return false;
         return true;
     }
 
     function recordNames(tree) {
         // keep an accounting of track names that have been used
         var v = $(tree).jstree(true).get_json('#', {'flat': true});
         for (i = 0; i < v.length; i++) {
             var z = v[i];
             names[z.li_attr.name] = 1;
         }
     }
 
+    function checkEmpty(parentId) {
+        if ($('#'+parentId).hasClass('empty')) {
+            var parentNode = $(selectedTree).jstree('get_node', parentId);
+            var stub = parentNode.children[0];
+            $(selectedTree).jstree('delete_node', stub);
+            $('#'+parentId).removeClass('empty');
+            parentNode.li_attr.class = 'folder';
+        }
+    }
+
     function plusHit(event, data) {
         // called with the plus icon is hit
         if (selectedNode === undefined) {
             alert(addWithoutCollectionText);
             return;
         }
 
         var treeObject = $(event.currentTarget).parent().parent();
         var id = treeObject.attr('id');
         var node = treeObject.jstree("get_node", id);
         if (node.children.length === 0) {
             var parentId = $(selectedNode).attr('id');
-            var parentNode = $(selectedTree).jstree('get_node', parentId);
-            if ($('#'+parentId).hasClass('empty')) {
-                var stub = parentNode.children[0];
-                $(selectedTree).jstree('delete_node', stub);
-                $('#'+parentId).removeClass('empty');
-                parentNode.li_attr.class = 'folder';
-            }
-
+            checkEmpty(parentId);
             isDirty = true;
             $(selectedTree).jstree("copy_node", node, parentId,'last');
         }
     }
 
     function minusHit (event, data) {
         // called with the minus icon is hit
         var treeObject = $(event.currentTarget).parent().parent();
         var id = treeObject.attr('id');
         var node = treeObject.jstree("get_node", id);
         //if (node.children.length === 0) {
         if (node.li_attr.class !== "folder") {
             isDirty = true;
             var parentNode = treeObject.jstree("get_node", node.parent);
             if (parentNode.children.length === 1) {