[Solved] Multiple Filters

I have several (3-4) multidropdowns to act as filters for a repeating group. Has anyone figured out a clean/easy way to apply multiple filters without having to create a conditional datasource for every filter combination used?

2 Likes

the only other thing i can think of is a dataset for each dropdown and the repeating group is thing:plusitem thing:plusitem…

OK, so after some trial and error I figured out what I think is a pretty good solution…

  1. Created a custom event that loads a fresh data set, then goes through each filtering action. There is an “only when” condition on each filter action so it only runs if the corresponding multidropdown’s count is > 0.

  2. Created events for each of the filter inputs that fires the custom event.

Performance is pretty spectacular on this filtering action considering it’s reloading the dataset and performing up to 4 filter actions. I only have about 20 items in my list right now but it performs the filter/update almost instantly. Also, it’s really cool that the dynamic nature of the data persists, so if I create a new item that meets all of the filter requirements it will pop up in the filtered list without having to refresh or re-filter. Very cool.

This took what would have been an unrealistic number of conditions on the repeating group (14-16?) down to just 5 workflow actions (and none go towards the workflow count). I doubt I’ll have more than 4-5 filters on any repeating group, but this makes it pretty scalable since to add another filter I just have to add it to the end of my custom event and add another action to launch the event when that input changes.

8 Likes

Thanks for that! Great solution and just what I was looking for! :yum:

Hey @csjenkin1 - I’m running into the same issue and I hope that your solution will help me.

For step #2, where you created events for each of the filter inputs that fires the custom event, what did you put in the “Workflow thing” setting that is required by Bubble? I’ve never even seen that before.

Thanks
Thomas

Great solution