Hey @wrightj2, whatever the issue is here, it’s not from List Shifter. List Shifter always just outputs whatever its “List to Shift” is. You don’t show how you’re actually implementing the filtering (there are multiple ways we might do that), but when you’re applying filtering, that does not change what is present at List Shifter’s outputs.
If you really want to force your RG to update back to showing all of the items at a List Shifter output, you could do the action “Display List” and force the data source back to being whatever output of List Shifter it’s supposed to be looking at.
In terms of what’s probably causing you consternation:
If you’re doing your filtering in the RG based on Conditions, you probably need to add a Condition that sets the RG’s data source back to the unfiltered list, when whatever criteria occurs that represents the “we are not filtering” state. Note that composing a “When” expression for this may be impossible, which is why you’d just force a Display Data action, as I suggest above (you would do this in the “When Reset All is clicked” workflow, and add it as step 2 after Reset Group Filters.)
Edit: I meant to also add the following… The RESET action in List Shifter does the following (this is documented in the plugin itself, but Bubble doesn’t expose this documentation in any meaningful way – you have to actually look at it in the plugin editor – yet another really stupid Bubble thing). Anyway, here is what RESET does:
“Execute this action to reset List Shifter’s Shifted List to its initialized state. Transformations such as SWAP Items are cleared and most other values revert to their initial state. Note: This action DOES NOT clear List Shifter’s Processed List, Custom Value, and Custom List as these values are only published in response to your own workflow actions.”
@keith thank you for your amazing plugin. I have already used it successfully a few times.
I have a use case that I think list shifter and/or list popper is going to be a better solution to than the one I have right now, but I just can’t figure out how to do it. Maybe you are willing to show me a step in the right direction. I had a look at probably all of your videos and explanations but I think my use case is a little different or maybe I just can’t see the solution because I have no experience with code or JS at all. Or it also might be a wrong setup of my database structure.
I have basically these datatypes right now:
Meal Plan | Meal | Recipe | Portions | Meal Plan Recipe | Ingredient | Quantity | Unit Shopping list | Ingredient | QuantitySum | Unit | Meal Plan
When a user wants to look at a shopping list for a Meal Plan, I want to calculate that. So what has to happen is that for each Ingredient in a meal it has to calculate portions*quantity and then to sum that quantity up grouped by the unit and the ingredient.
At the moment what happens is that in the backend I have a recursive workflow, that is pretty slow.
This is how it works right now:
Clear shopping list
send list of meals to backend workflow
Take the first ingredient from the first meals recipe
Multiply the meal’s portion size with the ingredient quantity
If the ingredient with this unit already exists → add portion*quantity to the quantitySum, if it doesn’t exist create a new shopping list item
repeat with the next ingredient from the first meal
When it finishes with the last ingredient from the first meal, it goes to the second meal and so on.
I have thought about creating a parallel list of quantitySum with “process” action but wasn’t successful. I also tried to two “iterate” workflows, to mimic what I do right now in the backend, but didn’t get that to work either.
I am out of ideas so I thought maybe you have one.
@keith
How do I suspend iteration of list B until an iteration of list A inside B is complete?
So basically its an iteration inside an iteration?
Please help
Hey everyone! I have list of user… Each user has the list of interests. I want to display to RG the of users who has at least one match and sort it by count of matches. Finding users with matches is done (I used the intersect … :count) , but I can’t figure out how to sort it, please help me!
@keith Hi, i’ve come across a real head-scratcher on my app:
List shifter is iterating over a list, as per usual, but for some reason on this particular page, it’s stopping at the second item, not iterating over the entire list. Have you seen this happen before? what can i do?
I’ve verified the list has more than 2 items, and that the iterate event is getting triggered… but it just updates the index on items 1 & 2, but not the remaining items in the list
I have removed the plugin from the page, my console doesn’t show that error anymore, just it’s still not working, and I can’t seem to find the option in list shifter that prints the logs to console… is that a setting somewhere i’m missing? - Coulda swore that was a feature at one point
FYI i have quite a few other listshifters on this page, all of which work great… its weird. Think i’m gonna try deleting this one and using another one
Okay Update! I’ve tried replacing and deleting and rebuilding the workflows, no effect.
But i just found something very interesting: The other listshifter i thought was working properly, apparently it is… up to two list items
Furthermore, it seems both listshifters aren’t “seeing” anymore items to work with because they even fire the “when listshifter iteration is completed” action successfully after the 2 items, even though i’ve confirmed there’s more than just 2 items in the list they’re pointing too… This is weirdd, i’m at a brick wall here
Oh and also, it must be fully initialized before i fire it, since it’s running through part of the list? wouldn’t it just flat-out not work if it didn’t finish initializing?
Not necessarily, because Bubble. But you could rule that out by examining the Initialized output in your workflow (drop Debug Buddy in there and write The List Shifter in Question’s Initialized to the console). Not being able to see your project I can’t really offer anything but spitballing. Obviously, List Shifter’s iterate function works in general, so…