[Seaside] Showing progress
Jupiter Jones
jupiter.jones at mail.com
Fri Mar 3 05:38:51 UTC 2017
Hi Joachim,
Thanks for your response. I’m pretty sure this is how I’ll need to deal with it. I’m deploying on GemStone so this approach requires a bit more work to implement well - I was hoping there was a poor-mans solution :)
Cheers,
J
> On 3 Mar 2017, at 3:33 pm, jtuchel at objektfabrik.de wrote:
>
> Jupiter.
>
> not a perfect answer, but what I'd try is forking the actual processing as a background process on the server and add two inst vars to the component:
>
> * processingDone
> * currentProgressMessage
>
> which would be updated by the background process as it progresses through its job.
>
> The first ajax call would be finished right after forking the background process, so teh browser would get an instant answer. All you need to do then is set up a timeOut() and have the browser ask for the current progress by issueing ajax calls every, say, 750-1000msec, until the server responds with "processingDone=true".
>
> The problem is, I have written something like this in Javascript, where I registered a callback for the progress message in renderContentOn: , but have no idea how to do it in Seaside's javascript rendering methods.
>
> I hope this idea helps you get a step further.
>
> Joachim
>
>
>
>
> Am 03.03.17 um 03:54 schrieb Jupiter Jones:
>> Hi all,
>>
>> I have a relatively short process (about 5 to 10 seconds) that I would like to show the progress of.
>>
>> It’s triggered by ajax:
>>
>> html button
>> bePush;
>> onClick:
>> (html jQuery ajax script: [ :s | self fetchShowingProgressOnScript: s ]);
>>
>> fetchShowingProgressOnScript: s
>>
>> s << (s jQuery id: ‘progress')
>> html: [ :r | r paragraph: 'Connecting to Downer...' ].
>> integration connect.
>> s << (s jQuery id: ‘progress')
>> html: [ :r | r paragraph: 'Logging In...' ].
>> integration login.
>> s << (s jQuery id: ‘progress')
>> html: [ :r | r paragraph: 'Looking up ' , self idToFetch ].
>> integration find: self idToFetch..
>> s << (s jQuery id: ‘progress') html: [ :r | r paragraph: 'Done.' ].
>> integration quit
>>
>> However this won’t work because the script will not be returned to the browser until the method completes.
>>
>> What’s the recommended way of going about this? Can you push a partial result without a streaming server?
>>
>> Is there a way of doing this without some kind of polling loop and running the long operation in a separate thread?
>>
>> Cheers,
>>
>> Jupiter
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
> --
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel mailto:jtuchel at objektfabrik.de
> Fliederweg 1 http://www.objektfabrik.de
> D-71640 Ludwigsburg http://joachimtuchel.wordpress.com
> Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
More information about the seaside
mailing list