Repeating group loading issue

I have a button that has a condition to change the text when the repeating group is on the last page. The issue I am facing is that the text updates instantly, while the repeating group last page takes almost half a second longer to display. This will cause confusion for users as the button updates before the content shows.

Is this because it’s in development mode? The repeating group is loading almost no data, so there shouldn’t be a delay, but even basic things load slowly.

I’ve searched the forums and from what I can tell there is still no way to test based on ‘finished loading’ There is an is loading check, but I need to only fire the condition when the repeating group has finished loading. I shouldn’t have to buy yet another plugin to get something that should be a built-in feature.

It appears that there are a lot of standard UIs related checks/updates that aren’t included in the core of the product, resulting in people building plugins to solve the issue. It’s starting to feel a lot like the WordPress ecosystem, where you end up having to tack 15 plugins onto your application just to get what I would class as core functionality.

The idea of nocode looks great on the surface, but when you’re having to build every single UI widget from scratch for every single page, it becomes tiresome very quickly.

(Shoutout to @mikeloc for noticing that somehow l posted this response to the incorrect location!)

So, if I understand you correctly (and I may not), you have an RG set to fixed number of cells.

And then, when the user pages to the last page of results (fixed RG’s having a paged mode), you see a condition evaluate (“change the look of some text when the paged RG is displaying its very last available page of results”) well before the paged results in the RG actually show in the browser.

Is that correct?

If so, the question is: How many results are you showing per RG page? One pragmatic solution is reduce that number of results. (This will result in your RG showing that last page more quickly.)

Since I’m not sure I understand your original question, I won’t investigate any further. Though note that my List Shifter plugin (which has its own pagination mode and is essentially a “headless” repeating group) might give you better/more controllable results. Though, that’s just a guess ATM.

Also, you should look at what it is you’re displaying in the repeating group. It’s way beyond a short reply to a random “need help” message, but note that you may be doing very very very bad things, depending upon what you’re displaying in your repeating group.

Also:

It’s starting to feel a lot like the WordPress ecosystem, where you end up having to tack 15 plugins onto your application just to get what I would class as core functionality.

That’s true, if you’re using a bunch of shitty plugins. (Of course, the question you now have is – Are the plugins I’m using shitty? If so, how do I know? Well, you don’t/can’t know this from community reviews, I’ll tell you that.)

You’re trying to detect when a Repeating Group has gone from loading to not-loading?

Easy peasy…

Now, I completely get that you’re lamenting that there is not a TRIGGERED EVENT when an RG goes from the loading state to the not-loading state. But what you fail to realize is that YOU DON’T NEED THAT. (It would be cool to have that, and cool plugin devs would fire an event like that if they felt it was necessary, but you really-well-and-truly don’t actually need that trigger. And so Bubble doesn’t give you that trigger. Why? Because you don’t need it… and whoever wrote the early Bubble logic was a pretty hardcore coder type and was pretty intent on not doing anything redundant.)

Why is this true? How is that true?” you ask?

Well, when we have a condition like so:

:point_up:this “only when” condition ensures that the attached workflow only fires when the repeating group’s “loading” boolean goes to no.

But what does 'loading is “no” ’ mean? And what do I mean by “goes to no”?

This condition (which in this context is a trigger) is only detectable when the value of RepeatingGroup number's is loading BECOMES “no”, having been in some DIFFERENT state before.

And, since this value is a boolean (a “yes/no” as Bubble would have it), it can only “go to ‘no’” if it has previously been ‘yes’. That is, such a condition will only trigger if the Repeating Group starts to load (is loading goes from no to yes) and then, subsequently, finishes loading and this state (is loading) TRANSITIONS to ‘no’.

(ASIDE: If you’ve read the docs, you know they don’t tell you this, but the following is true: The “is loading” state NEVER starts at “yes”. It always starts at “no” and then becomes true [“yes”] when we start to load data. It then GOES BACK TO “no” once data loading is finished. To programmers, this is “common sense”, BTW, and needs no proof. But to non-programmers, it leads to a great deal of anxiety. Just know that this is how it works.)

SO, a change from ‘no’ to ‘no’ is not a change at all. You see? (We are not “polling” the value at regular intervals, we are simply notified if the state changes… and there are only two possible states: ‘yes’ (we are loading and we must not have been loading before) and ‘no’ (we must have been loading, but now we are finished with that). And, conversely, a change from “is loading is yes” to “is loading is yes” is ALSO not a change in state. (Not that this ever happens.)

And so, this workflow will only fire when we were previously loading and now we are done loading.

Note that I’ve set the “Run this” condition to “every time” (rather than “Just once” – which would mean the first time we see this transition of state), so we might see this event and execute this workflow more than once.

NOW, if wanted to understand JUST THE FIRST TIME that the RG loaded data and then finished loading data (which may be what you want to do!), we would select the “Just once” option. The event (and, hence, the workflow) will only fire once.

You can be forgiven for not understanding this as the docs do not tell you this, they assume that this is “common sense”. (The person who designed this early Bubble logic was quite skilled and didn’t fuck around, unlike the current engineers, who regularly do stupid stuff.)

But now you understand the common sense of all of this.

These facts can be verified empirically by writing to the console every time we see the RG’s
“loading” state go to “no”. For example, using my free “Debug Buddy” plugin (which simply writes junk to the console) you can see when this state changes (go get it by installing my List Shifter plugin in your project). Like so:

And you’ll see in the console:

… anytime this happens.

2 Likes

Hi @keith

Thanks for your detailed explanation. I went down the rabbit hole on another part of the app and only resurfaced to look into this again.

My use case is for a quiz that shows a question, then inside that single row, it shows a repeating group of answers. I attempted to use the is loading is “no” however this resulted in the button not showing on load. I’m using it as a condition and not as a trigger or check in a workflow. The idea is to have a button for next question (show next page in RG) and when it’s the last question, click finish quiz to calculate the result.

My Question repeating group is a fixed number of cells, as I want to use paging between questions. Then the question has a repeating group inside that with between 2 and 4 answers. With the next button.

When on the second to last page, clicking next instantly changes it to ‘finish quiz’ before the question or answers load.

Thanks for the tip on Debug Buddy also, very handy.