Right now, we listen to itemUpdate from the model to update many pieces of the interface - this makes sense in specific terms, since every time anything changes we want to validate the UI -- but in effect, we do have cases where we have batch operations, and then those actions are running multiple times over and over unnecessarily.
Batch operations include:
- Clear filters ("trash" icon)
- Reset to defaults
- Load/apply saved query
The adding/removing of individual items through the menus are the only case where it makes sense to go with "itemUpdate" separately. Same goes to removing filter 'tag' items (bubble items) from the active tag area.
We already have a sort of batching logic when we store the filter groupings -- we can use some of that logic to do these batch operations; instead of listening to itemUpdate, we could change it to listen to batched operation which, in cases where we only change 1 item, will just contain a single change.
This requires a slight change in where we listen to events, but shouldn't be too elaborate to do and can save a lot of repetitive operations.