Search code examples
javascriptjquerytreeviewfancytree

FancyTree: How do I Expand all nested/subsequent nodes? Not only current nodes


When I use the following Fancytree even action:

$(document).on('click', '.expand-all', function () {
                $.ui.fancytree.getTree().expandAll();
            });

enter image description here

Fancytree only expands current nodes but not more level sub/nested nodes. Suppose following doesn't happen same time:

enter image description here

How do I achieve that on single event?


Solution

  • I have figured out it and done this way:

    $(document).on('click', '.expand-all-nested', function (e) {
                expandNodes();
    
                function expandNodes() {
                    $.ui.fancytree.getTree("#treegrid").visit(function (node) {
                        if (node.isLazy() && !node.isExpanded() && !node.isLoading()) {
                            node.setExpanded(true).done(() => {
                                    console.log('Auto Expanding Children');
                                    expandNodes()
                                }
                            ).catch(function (error) {
                                //Error occurred. Trying re-fetching data
                                console.log('Error occurred. Trying re-fetching data');
                                setTimeout(function () {
                                    node.load(true).done(() => {
                                        console.log('Successfully Re-fetched errored data');
                                    }).catch(function () {
                                        console.log('Couldn\'t Re-fetch errored data');
                                    });
                                }, 700);
                            })
                        }
                    });
                }
            });