Loading a LONG list with images

Dan Friedman dan at clearvisiontech.com
Tue Feb 22 18:50:09 EST 2022


Tom,

Ok... I finally figured out the setting of dgNumberOfRecords and adding a GetDataForLine command.  So, the data is now loading. And, I am doing the check in FillInData to see if the image is loaded or not.  If it's not, I call getAndCachePreview with in turn does the download of the image.  The question is, when the download is complete where and how are you sending the message to refresh the row now that we have the image?

Thank you!
Dan 


On 2/21/22, 3:51 PM, "use-livecode on behalf of Tom Glod via use-livecode" <use-livecode-bounces at lists.runrev.com on behalf of use-livecode at lists.runrev.com> wrote:

    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
    >>>
    >>
    _______________________________________________
    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