Page 1 of 1

[ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Fri Sep 10, 2021 8:25 pm
by derreck

Hi,

We have some expensive resource traversals in our treeMenuToggle(). It's getting called for every visible element when expandAll() or collapseAll() is called.

Is there a way I can prevent that from happening? We only want treeMenuToggle() to emit on individual menu toggles.

Thanks for your time,
Derreck


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Sat Sep 11, 2021 11:58 am
by mats

Can you please provide some more context? What's treeMenuToggle some code to look at would be helpful!


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Wed Sep 15, 2021 7:14 pm
by derreck

Sorry I meant that we have a expandnode & collapsenode listener that I do not want to execute on expandAll/collapseAll.

Is there a way I can prevent this? Maybe with something from the Event.source emitted on expandnode & collapsenode?


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Wed Sep 15, 2021 8:31 pm
by derreck

Or is there another way I can trigger an acton/function off a Tree toggle, without adding a listener for expandnode & collapsenode?


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Thu Sep 16, 2021 9:35 am
by mats

You can simply detach your listener before calling expandAll/collapseAll? Or add a boolean flag which you can check in the expandnode / collapsenode listeners.

https://bryntum.com/docs/scheduler/#Core/mixin/Events#function-removeListener


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Thu Sep 16, 2021 4:56 pm
by derreck

In the Docs the removeListener takes in a 'config' object (not a string). What is that config model/object suppose to look like to remove a listener?

I don't see a property there to remove/disable, other than the once property.


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Thu Sep 16, 2021 5:11 pm
by mats

Just like with native DOM events you should use same params as when you subscribed.

const handler = () => {};
scheduler.on('foo', handler);
scheduler.un('foo', handler);

or use the 'detacher' function returned from the 'on' call:

Returns a detacher function unless configured with detachable: false. Call detacher to remove listeners


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Thu Sep 16, 2021 5:41 pm
by derreck

Scheduler.un and scheduler.removeListener take in an 'config' object not a string for me. Is there maybe a type issue?

Also, detachListeners ('expandnode') is not working either and what is the detacher function suppose to look like/do? Can't find it in the docs.


Re: [ANGULAR] Prevent expandAll() from triggering treeMenuToggle()

Posted: Thu Sep 16, 2021 9:58 pm
by mats

Yes, slight docs issue. Now fixed!

here's how to use detacher:

const detacher = scheduler.on({
     someEvent : () => {} 
 });

// later
detacher();