dc82af67c9ab8eb936e75eeabbc49a09a735e726 braney Thu Sep 21 18:16:33 2017 -0700 allow multiple node delete, no contextmenu on "available tracks", open selected nodes diff --git src/hg/js/hgCollection.js src/hg/js/hgCollection.js index 68b1ac3..2aa6553 100644 --- src/hg/js/hgCollection.js +++ src/hg/js/hgCollection.js @@ -3,31 +3,32 @@ // Copyright (C) 2017 The Regents of the University of California var hgCollection = (function() { var names = []; // a list of names that have been used var selectedNode = "collectionList"; // keep track of id of selected row var selectedTree = "collectionList"; // keep track of id of selected row var $tracks; // the #tracks object var trees = []; function currentCollectionItems(node) { // populate the menu for the currentCollection tree var items = { deleteItem: { // The "delete" menu item label: "Delete", action: function () { - $(selectedTree).jstree( "delete_node", selectedNode); + var nodes = $(selectedTree).jstree( "get_selected"); + $(selectedTree).jstree( "delete_node", nodes); } } }; // can't delete root if ($(node).attr('parent') === '#') delete items.deleteItem; return items; } function selectElements (selectableContainer, elementsToSelect) { // add unselecting class to all elements in the styleboard canvas except the ones to select $(".ui-selected", selectableContainer).not(elementsToSelect).removeClass("ui-selected").addClass("ui-unselecting"); @@ -50,30 +51,31 @@ selectedNode = node; selectedTree = tree; if (type == 'view') $("#viewFuncDiv").show(); else $("#viewFuncDiv").hide(); $("#CustomTrackOptions").show(); $("#viewFunc").val(viewFunc); $("#customName").val(name); $("#customDescription").val(description); $("#customVis").val(visibility); $("#customColorInput").val(color); $("#customColorPicker").spectrum("set", color); + $(selectedTree).jstree("open_node", selectedNode); } function selectTreeNode(evt, data) { selectNode(evt.target, data.node); } function checkCallback( operation, node, node_parent, node_position, more) { // called during a drag and drop action to see if the target is droppable if ((operation === "copy_node") || (operation === "move_node")) { if (node_parent.li_attr.class !== "folder") return false; } return true; } @@ -302,31 +304,31 @@ $(newTree).jstree({ 'plugins' : ['dnd', 'conditionalselect', 'contextmenu'], 'contextmenu': { "items" : currentCollectionItems}, 'dnd': { "check_callback" : checkCallback, } }); recordNames(newTree); trees[this.id] = $(newTree); $(newTree).on("select_node.jstree", selectTreeNode); }); treeDiv=$('#tracks'); treeDiv.jstree({ - 'plugins' : ['dnd', 'conditionalselect', 'contextmenu'], + 'plugins' : ['dnd', 'conditionalselect'], 'dnd': { "check_callback" : checkCallback, 'always_copy' : true, is_draggable: isDraggable, }, 'core' : { "check_callback" : checkCallback } }); var firstElement = $("#collectionList li").first(); selectElements($("#collectionList"), firstElement) ; }