New free plugin (9 march/20) - Orchestra! Refer to inside repeating groups cell(s) from outside

Hello fellow Bubblers! I’ve been making custom plugins for some time already and frequently made plugin elements work inside repeating groups so my clients would be able to control them inidividually, dynamically and with N instances of the plugin element.

I’ve decided to isolate the mechanism that allows that and found out that it just works with normal plain Bubble and also other plugins that aren’t optimized with such mechanism and, well, decided to make it into a plugin that allows all of us to melt down that silly barrier that prevents us from referring to things inside repeating groups from outside. :smiley:

Fellow plugin makers, there’s something in the end for you too :slight_smile:

Anyway, here it is! I call it Orchestra! Since the Maestro element stays out of the repeating group and the Musicians element stays inside the repeating group cell.

Here’s the plugin page:

Technically this works by allowing you to use an external element to trigger a workflow that runs inside the repeating group cell! And you can even specify one cell, a specific group of cells or all of them. Literally this eliminates the weird limitation of not being able to refer to things inside a repeating group.

So you can now control other plugins too, for example a free plugin from someone else (to show I didn’t fiddled with it internally) to toggle visibility of password inputs, normally you can’t refer to a specific cell’s input from outside the repeating group, but with my plugin you now can! Check it out:

giftoggle

It can also be used to extract data from the repeating group, so no other plugins involved, just a “set state” action, to show it works with vanilla Bubble:

gifextractdatafromrg

Here’s just a creative use to delay running each workflow:

delayed_trigger_rg

You can see those examples here: sdfsfsdfsdf | Bubble Editor
When you open the workflow page, use the folders “first example” and “second example” to better understand what goes on.

In short: Place the Maestro element outside, then Musicians element inside the repeating group, initialize musicians like in the example and whenever you want to trigger a workflow you just specify the target cell(s) and it’ll run the workflow inside the custom event provided by the plugin “when the musicians are triggered this workflow will run inside each cell”.

I made it as straightforward and simple to use as possible! Check it out and enjoy (:
Please keep possible bug reports and suggestions coming (:

Plugin makers: If you ever have any issue making your element work inside repeating groups, take a look into the code of this plugin. I burned a lot of neurons to make it simple like that! Feel free to use that mechanism to properly refer to your elements or just install this plugin (or your copy of it) and make it work, since it’s universal. Also feel free to reach out to me with doubts and suggestions.

This is a sibling plugin to New free plugin (9 march/20) - Satellite, trigger worfklows in reusable elements from the page and vice-versa

52 Likes

Cool. I figured somebody would eventually build that. Thanks for sharing the code and will have a look at it.

4 Likes

Yeah this is what I was talking about the other day!
The sibling plugin, Satellite, uses the same mechanism, however not needing to specify an element by number/count, so its code is simpler and more straightforward to initially understand.
What changes is that Orchestra counts the elements loaded in the page… and then fires the right custom event based on that.
It’s essentially a mix of Bubble events and Javascript events, one acting where the other can’t.

Amazing! Great work! It’s all so simple when it’s explained in detail :slight_smile:

You should really link to your plugin page here, @vini_brito. For anyone puzzled, his new plugin is called “Orchestra”… it is this one:

6 Likes

You’re right! Skipped that link. Will add ASAP (:

Quick aside, @vini_brito: Couldn’t the interface here be a bit simpler?

Instead of having the user give a Musician a class name, should these not just generate their own unique class name and publish that state to their own “ID” (or whatever you want to call it) output? (I use nanoid for such things.)

Then, to target a group of Musicians from Maestro, user just selects the ID of the Musician they want to target (e.g., as some_musician's ID).

This would have the added benefit of ensuring the user cannot provide an invalid class name.

Second, while a Maestro element is useful, it’s not required (and may in fact be mostly redundant). If Musicians have a generic Action that can be used to send triggerEvent, any condition that can be constructed in a repeating group cell can be used to have a Musician communicate out to the page and trigger a workflow.

Just some things to think about here.

1 Like

Hmm, sure, that’s definitely food for thought, I’ll be digesting it for a while…

This is awesome! Thank you

BTW, your published plugin cannot be forked because it has not yet been synced to a GitHub repo.

I don’t understand what you mean by this at all:

All I see happening here is that (knowing the index of some cell in an RG), you return the value of the cell in the RG (and it’s not fast). Am I seeing that wrong?

You don’t need a plugin to do that. The value of the item at index X of a Repeating Group is simply:

Repeating Group's :List_of_type :item #X

What am I missing here?

Oh, I was talking about the input’s value. Not the list fed to the repeating group.

Looked for this on my third day with bubble … and found it!!! For the win!! Thank you!

I used the “when musician revealed” workflow trigger. I needed to have a maestro outside the repeating group.

1 Like

Hi @vini_brito,

Thanks for the plugin. I’m trying it out and it’s doing what I need it to do but throwing an error in a pop up that states:

The plugin Orchestra / action Trigger musicians under a Maestro threw the following error: TypeError: Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'.
at eval (PLUGIN_Orchestra-element_action--Maestro-Trigger-musicians-under-.js:64:12)
at https://dhtiece9044ep.cloudfront.net/package/run_debug_js/bd26f9b852ce97213fc1d47972dd6bdc1a58159c5af48f3110ff5403d2c8490c/xfalse/x6:18:464348 (please report this to the plugin author)

In the action that is throwing the error, I have set the cell to trigger as the count of a repeating group (see below), because I basically want to trigger the last item added. I think your plugin doesn’t like this for some reason.

I can PM you more details if required. Thanks.

Regards
Louis

Hello Louis!

Make sure you’ve used the “initialize musician” in the “musician revealed” event and that the class name is an exact match, case sensitive.

Also keep in mind that the cell must be loaded, filled with something and visible, for the cell and its elements, including the musician, to be initialized.
So if you’re only displaying 4 items, the cell of the item number 56 won’t be loaded and you won’t be able to run a workflow in that cell, since it wasn’t loaded.

1 Like

Hi Vini, I think the problem may well be what you describe in your second paragraph. I have tried adding a delay (to ensure that the cell exists before I attempt to initialise the ‘musician’ ) but perhaps it needs to be longer. I’ll try a few other things. Tusks for your response.

You only use the action to initialize the musician in the event “Musician X Revealed”, because this event fires when the cell is initialized. Exactly how the example shows.
Just have the cell loaded and you’ll be able to refer to it.
Of course you cannot refer to a cell that doesn’t exists yet.

You can always do things on the data source of the repeating group, though.

1 Like

Hi @vini_brito thanks for the plugin , i wonder if this plugin can work in my case ! I’m planning to drag texts (one cell from repeating group ) then drop it on another group (image),After that download both image and dragged texts as PNG .

Note : All the available plugins that let you download group (anything) to image ask for group ID and since the dragged texts are coming from outside of the group then the plugin didn’t recognize it (didn’t work ) can your plugin help me ?
Link in case you want to check : https://bubble.io/page?type=page&name=index&id=draggablecopy&tab=tabs-1

Thanks again

Dooooooooooooooooood… Great work!

1 Like

This is the best plugin ever. @vini_brito

1 Like