Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Bug: Delete single existing element in Tree (Apex 19.2)

Hello
It seems that deleting an element in a Tree (Widget) doesn't work if that element is the only one:
// Get tree
var tree = $( "#HIERARCHYTREE_tree" );
// Get tree selection
var selection = tree.treeView( "getSelection" );
// Remove chosen element from Hierarchy Tree
var adapter = tree.treeView( "getNodeAdapter" );
var nodesSelected = tree.treeView( "getNodes", selection );
// Ugly workaround to make the deleteNode function happy: add an empty array to selected node if there is none
nodesSelected[0].children = nodesSelected[0].children || [];
// Remove node from tree
adapter.deleteNode(nodesSelected[0], function(){
tree.treeView('refresh'); // And finally the tree must be refreshed to see the node removed
}, true);

Even tough I try to tell the deleteNode function there is a children array it fails:
Uncaught TypeError: Cannot read property 'children' of null
at Object.deleteNode (widget.treeView.min.js?v=19.2.0.00.18:2)
at Object.javascriptFunction (f?p=107:25:4795512655365::::::1809)
at Object.da.doAction (desktop_all.min.js?v=19.2.0.00.18:21)
at Object.da.doActions (desktop_all.min.js?v=19.2.0.00.18:21)
at l (desktop_all.min.js?v=19.2.0.00.18:21)
at Object.da.resume (desktop_all.min.js?v=19.2.0.00.18:21)
at Object.e [as callback] (desktop_all.min.js?v=19.2.0.00.18:22)
at n (desktop_all.min.js?v=19.2.0.00.18:13)
at Object.apex.event.trigger.H.success (desktop_all.min.js?v=19.2.0.00.18:13)
at c (desktop_all.min.js?v=19.2.0.00.18:2)

So I have no clue where else the deleteNode function needs "children" in the structure. The same workaround works for adding a node:
...
-- Required, else error message of missing children (if there are no children, Apex does not append an empty array)
nodesSelected[0].children = nodesSelected[0].children || [];
adapter.addNode(nodesSelected[0], 0, nodeLabel, {id: nodeIdSelected, children: [], icon: "icon-tree-folder"}, function(){
tree.treeView('refresh'); // And finally the tree must be refreshed to see the new node
});

Anyone knows a workaround to get that fixed?

Comments

Post Details

Added on Nov 19 2020
0 comments
294 views