[Seaside] Showing and hiding an overlay during an ajax call

Dave lasmiste at gmail.com
Mon Jul 10 18:22:09 UTC 2017


Hi Esteban, thanks for your reply.

My idea to use the addLoadScript is because I have to perform the
longServerOperation also on the initial page load.
BTW there is something I don't understand, probably due to my lack of ajax
knowledge.

I have to perform the longServerOperation on the onSuccess: because the
callback has to set some parameters needed to be retrieved by the
longServerOperation. So after the callback I use the onSuccess: to perform
the longOperation and then to hide the overlay, but I don't know how to call
the two instructions in sequence.

Dave



Esteban A. Maringolo wrote
> Hi Dave,
> 
> You shouldn't do a "addLoadScript:" but rather a simple script.
> 
> ej:
> 
> html anchor
>   url: 'javascript:void()';
>   onClick: (html jQuery script: [:s |
>                     s <<  (JSStream on: '$.LoadingOverlay("show");').
>                     s << html jQuery ajax
>                                callback: [ "long server operation" ];
>                                onSuccess: (JSStream on:
> '$.LoadingOverlay("hide")')
>                   ] );
>   with: 'Click me to run lenghty server operation'
> 
> 
> addLoadScript: is used document-wide, and mostly at the initial page
> load, so it isn't suitable to be used as a script (it is, a javascript
> anonymous function) you pass to be used as a handler or callback.
> 
> Hope it helps.
> 
> 
> 
> Esteban A. Maringolo
> 
> 
> 2017-07-10 13:45 GMT-03:00 Dave <

> lasmiste@

> >:
>> Hi guys,
>>
>> I want to show and dismiss an overlay
>> (https://gasparesganga.com/labs/jquery-loading-overlay/) during an quite
>> long processing that starts from an ajax call.
>> Showing the overlay is not an issue, but I can't dismiss it.
>>
>>
>> My code is:
>>
>>
>> html document addLoadScript: (JSStream on: '$.LoadingOverlay("show");').
>>
>> html jQuery ajax
>>                 callback: [ ... ] value: (JSStream on: '...');
>>                 onSuccess:
>>                         ((html jQuery id: 'myId') load
>>                                 html: [ :h | self veryLongOperationOn: h
>> ]).
>>
>>
>> Now I don't know where to put the code to hide the overlay. If I write:
>>
>> html jQuery ajax
>>                 callback: [ ... ] value: (JSStream on: '...');
>>                 onSuccess:
>>                         ((html jQuery id: 'myId') load
>>                                 html: [ :h | self veryLongOperationOn: h
>> ]);
>>                 *onComplete: (html document addLoadScript: (JSStream on:
>> '$.LoadingOverlay("hide");'))*
>>
>> The overlay immediately disappears because the onComplete does not wait
>> for
>> the veryLongOperation. So I think I should put the code in the block
>> like:
>>
>> html jQuery ajax
>>                 callback: [ ... ] value: (JSStream on: '...');
>>                 onSuccess:
>>                         ((html jQuery id: 'myId') load
>>                                 html: [ :h | self veryLongOperationOn: h.
>>                                 *h document addLoadScript: (JSStream on:
>> '$.LoadingOverlay("hide");')*
>> ])
>>
>> but of course it does not work.
>>
>> Can you help me please?
>> TIA
>> Dave
>>
>>
>>
>> --
>> View this message in context:
>> http://forum.world.st/Showing-and-hiding-an-overlay-during-an-ajax-call-tp4954136.html
>> Sent from the Seaside General mailing list archive at Nabble.com.
>> _______________________________________________
>> seaside mailing list
>> 

> seaside at .squeakfoundation

>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> _______________________________________________
> seaside mailing list

> seaside at .squeakfoundation

> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside





--
View this message in context: http://forum.world.st/Showing-and-hiding-an-overlay-during-an-ajax-call-tp4954136p4954187.html
Sent from the Seaside General mailing list archive at Nabble.com.


More information about the seaside mailing list