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) {