Loading a LONG list with images
Tom Glod
tom at makeshyft.com
Mon Feb 21 18:50:27 EST 2022
notice the use of send "" in 0 milliseconds...
This ensures that the rendering of the grid does not get held up by the
download. so the download happens in the background.
On Mon, Feb 21, 2022 at 6:47 PM Tom Glod <tom at makeshyft.com> wrote:
> This is how i did it ..... I hope this helps.
>
> First to use the "numberofrecords" way of setting the datagrid data.
> This is key, that way you only ever trigger loading of visible rows.
>
> This is the code from my dg column.
>
> global PixabayResults
>
>
> if PixabayResults["cache"]["DL:" & PixabayResults["data"][the
> dgindex of me]["previewURL"]] is empty then
> send "GetImageTrigger " & the dgindex of me & comma & quote &
> PixabayResults["data"][the dgindex of me]["previewURL"] & quote & comma &
> random(25500) to card "Search Pixabay"
> put image id 1410033 of card "Resources" into image 1 of me --
> 14110033 image id is the placeholder.
> set the visible of image 1 of me to true
> set the MyIndex of me to empty
> //set the visible of group "Image Tools" of me to false
> else
> put PixabayResults["cache"]["DL:" & PixabayResults["data"][the
> dgindex of me]["previewURL"]] into image 1 of me
> set the visible of image 1 of me to true
> set the MyIndex of me to the dgIndex of me
> delete global PixabayResults["downloaded"][the dgIndex of me] --
> delete the flag to update this row because its a visible row with newly
> downloaded file
> //set the visible of group "Image Tools" of me to false
> end if
>
>
> on GetImageTrigger ThisIndex,ThisURL,ThisRandom
> send "GetAndCachePreviewImage " & ThisIndex & comma & quote & ThisURL &
> quote & comma & random(25500) to card "Search Pixabay" in 0 milliseconds
> end GetImageTrigger
>
> on GetAndCachePreviewImage ThisIndex,ThisURL,ThisRandomNumber
> Task_Scheduler_Add "Download File To Variable","DL:" &
> ThisURL,ThisURL,"" -- this schedules TSNET request to download image then
> waits for the image to download
>
> wait until AppStarterStackTaskScheduler["finished"]["DL:" & ThisURL] is
> not empty with messages -- wait with messages until its finished
>
> if AppStarterStackTaskScheduler["finished"]["DL:" & ThisURL] is "error"
> then
> throw "Thumbnail Download Failed:" & ThisURL
> else
> put AppStarterStackTaskScheduler["data"]["DL:" & ThisURL]["data"]
> into PixabayResults["cache"]["DL:" & ThisURL]
> put 1 into PixabayResults["downloaded"][ThisIndex]
> delete variable AppStarterStackTaskScheduler["data"]["DL:" &
> ThisURL]["data"]
> end if
> end GetAndCachePreviewImage
>
>
>
>
>
>
>
>
>
>
> On Mon, Feb 21, 2022 at 6:20 PM Tom Glod <tom at makeshyft.com> wrote:
>
>> Dan can you check this video and the pixabay search example?
>> https://youtu.be/jN2bQbhQ0L8?t=216
>> Is this what you have in mind?
>> These images are loaded as the row comes into view.
>>
>> On Mon, Feb 21, 2022 at 6:07 PM Dan Friedman via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>
>>> Richard,
>>>
>>> Probably not over a couple thousand. The images are square -- they need
>>> to be resized to the DG template image size, but not scaled (H vs W).
>>>
>>> -Dan
>>>
>>>
>>> On 2/21/22, 12:14 PM, "use-livecode on behalf of Richard Gaskin via
>>> use-livecode" <use-livecode-bounces at lists.runrev.com on behalf of
>>> use-livecode at lists.runrev.com> wrote:
>>>
>>> How many images?
>>>
>>> I once made a solution for 3,000 images, but it may not scale well
>>> above
>>> 8,000 or so depending on memory and connection speed.
>>>
>>> --
>>> Richard Gaskin
>>> Fourth World Systems
>>>
>>>
>>>
>>>
>>> Dan Friedman wrote:
>>>
>>> > Does anyone have any answers to the issue of loading a long list
>>> with
>>> > images so that it loads images "as needed" like a webpage does.
>>> >
>>> > I have a DataGrid with several hundred rows. Each row has a
>>> specific
>>> > image that is to be displayed with that row (like a list of
>>> songs).
>>> > The image is loaded from the web. Is there a method to load the
>>> > DataGrid and only load the images for the rows that are shown?
>>> And,
>>> > when you scroll the grid, the images for the newly shown rows are
>>> then
>>> > loaded. The loading need to happen somehow without halting the
>>> > scrolling or making it stutter.
>>> >
>>> > I hope that makes sense!
>>> > -Dan
>>>
>>>
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>
More information about the use-livecode
mailing list