Fun Share: DVL Hack

I wanted to share a DVL hack shared by a user via Intercom. I have assembled a simple example here

tldr; You can bind a DVL to a blank table with a lotta rows. Set the empty string text to “”. Then loop through the list of table ID’s and assign DVL components properties without ever dumping data into the table!

AMA! Can’t wait to see what you all can thunk up with this special sauce!

3 Likes

neat trick! thanks for the hack!

3 Likes

I tried that previously but found out that cloning works much faster especially when you use a custom DVL.

However, until cloning becomes available in DnD, I use a sort of this trick to do the filtering of data using DVL. Basically go through the rows making unwanted ones hidden.

2 Likes

@muneer @mimostel

Hey all! I created this video to show how I bypass storing data in the local tables and instead paint it directly the the DVL. I feel this improves speed but would be happy to discuss or see someone create some benchmark tests.

And if you’re looking for easter eggs, there’s a nice little fully functioning Haversine function that uses the web viewer nicely tucked away here

https://x.thunkable.com/projectPage/621d2017323f1500115dcc67

3 Likes

Yes @jared, we have discussed this in the first week of the year.

I was actually waiting for a hack that does not use the local table at all.

I have used this previously and found out that I have to create more blocks than just creating the rows in the local table and populating them with data. This way the DVL will automatically display the table contents.

I think you might have a performance gain if the data set is comprised of many columns not just 2 or 3.

1 Like

Ahh. I probably used poor wording before, sorry about that.

At the moment, the two components must be linked; otherwise the dvl doesn’t know how many rows it’s supposed to have. Hopefully something we can see in the future!

1 Like

Thank you…
I will try this method as soon as my time will allow. It helps on my app the fact that at the time I need it, I already know the number of rows/columns needed to display.
As my beginner experience let me understand from your video, basically you skip the step of populate the local table, then custom modify on DVL… Using only local table row`s ID, you directly populate DVL. It should improve the speed, indeed (as any skipped step means less time in the process).

1 Like

As I promised, I tested on my app (as I’m really interested in improving the speed).
DVL have 26 rows/24 columns… colored differently, different fonts and so on.
Unfortunately i don’t feel any speed improvement between those 2 methods (classic bound DVL to a dynamically populated local table vs a blank local table from i use only ID`s and built directly a DVL.)
If you want to test by yourself, i can privately provide you the both link to my 2 apps, to see it.

2 Likes

Sure! I can build something out today to check to I’d you want to keep your project private :slight_smile:

My attempts to use this method have been hindered by these issues:

  1. Keeping data synchronized (by asynchronous calls) is difficult when several data grids are dependent on each other.

  2. If the datatable has fewer rows than the dataset received via REST/JSON, you need to synchronize the number of rows, and you need to be extremely cautious when you do this because the IDs that are generated for the datatable rows have to match the rendering of the data grid.

At the moment, I haven’t been able to make a viable use of this method, but it would be one of the most interesting ways to bind dataviewer grids and lists with REST/JSON data.

2 Likes