b941fc533ca6f91c5cafaa52e0af5382daff2bc0 braney Mon Feb 26 14:19:43 2018 -0800 be smarter about recognizing leaf nodes in track grouping diff --git src/hg/js/hgCollection.js src/hg/js/hgCollection.js index 5b8a041..5150671 100644 --- src/hg/js/hgCollection.js +++ src/hg/js/hgCollection.js @@ -280,74 +280,77 @@ isDirty = true; var color = $("#customColorPicker").spectrum("get"); $('#customColorInput').val(color); } function isDraggable(nodes) { // only children can be dragged var ii; for (ii=0; ii < nodes.length; ii++) if (nodes[ii].children.length !== 0) return false; return true; } function checkEmpty(parentId) { + // add or remove the "empty collection" stub if ($('#'+parentId).hasClass('empty')) { var parentNode = $(selectedTree).jstree('get_node', parentId); var stub; for (i = 0; i < parentNode.children.length; i++) { stub = $(selectedTree).jstree('get_node', parentNode.children[i]); if (stub.icon === true) break; } if (i === parentNode.children.length) return; $(selectedTree).jstree('delete_node', stub); $('#'+parentId).removeClass('empty'); parentNode.li_attr.class = 'folder'; } } function findCollection(parentNode) { while(parentNode.parent !== '#') { parentNode = $(selectedTree).jstree("get_node", parentNode.parent); } return parentNode.id; } function plusHit(event, data) { // called with the plus icon is hit - if (selectedNode === undefined) { + var treeObject = $(event.currentTarget).parent().parent(); + var id = treeObject.attr('id'); + var node = treeObject.jstree("get_node", id); + + if (node.icon !== 'fa fa-plus') // if this isn't a leaf, then return + return; + + if (selectedNode === undefined) { // if there are no collections 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'); parentId = findCollection(selectedNode); 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.parent !== '#') { isDirty = true; var parentNode = treeObject.jstree("get_node", node.parent); if (parentNode.children.length === 1) { treeObject.jstree("create_node", node.parent, emptyCollectionText); parentNode.li_attr.class = "folder empty"; } $(selectedTree).jstree( "delete_node", node); }