On Jun 28, 2016, at 1:37 PM, Alain Couthures wrote:

> As a possible workaround, you might try to insert the text, before the 
> submission being effectively sent, at the event "xforms-submit-serialize".

Thank you for the suggestion.  I have now finally had the opportunity
to try it.  For the record, this form of the submission did not work:
 
  <xf:submission id="send-query" resource="./balbus.php" method="get" 
replace="instance" instance="results">
    <xf:delete ev:event="xforms-submit" 
nodeset="instance('results')/child::node()"/>
    <xf:insert ev:event="xforms-submit-serialize" context="instance('results')" 
origin="instance('ui')/query-in-progress"/>
  </xf:submission>

(The use of different events on the delete and insert was an attempt 
to force them to happen in a particular order.  Using xforms-submit-serialize
on both didn't work, either.)

But when the submission takes this form, I got the desired behavior (the old 
results
vanish and the text 'Query in progress' appears instead):
 
  <xf:submission id="send-query" resource="./balbus.php" method="get" 
replace="instance" instance="results">
    <xf:setnode ev:event="xforms-submit-serialize" ref="instance('results')" 
inner="serialize(instance('ui')/query-in-progress)"/>
  </xf:submission>

I do not understand why setnode should work when insert + delete
does not (and if anyone reading this understands why, I'll be glad of
an explanation), but for the moment I'm happy, and I record this
outcome for the sake of anyone who finds this thread while trying to
solve a similar problem.

Michael


> 
> Thank you for your feedback!
> 
> --Alain
> 
> Le 20/06/2016 à 20:32, C. M. Sperberg-McQueen a écrit :
>> I have a form that performs a query against a database back end,
>> shows the results, and keeps the search box open so the user can
>> issue a new search.
>> 
>>   http://tlrr.blackmesatech.com/2016/01/balbus.xhtml
>> 
>> (Useful searches: "Alfenus", "Balbus" for fast searches, "Cicero" for a
>> slower one.)
>> 
>> In the current version of the form, nothing visual happens when
>> the user issues a new search; if the search is slow, the user can think
>> "something went wrong, the browser didn't notice the click, I'll
>> click again".  So I'd like the Search button to clear the old results,
>> display the text "Query in progress ..." in some way (ideally in the
>> work area where the results used to be), and issue the query submission
>> to the back end.
>> 
>> A first cut made the trigger look like this:
>> 
>>       <xf:trigger>
>>      <xf:label>Search</xf:label>
>>      <xf:action ev:event="DOMActivate">
>>        <xf:delete nodeset="instance('results')/child::node()"/>
>>        <xf:insert context="instance('results')" 
>> origin="instance('ui')/query-in-progress"/>
>>        <xf:setvalue ref="instance('q')/startpos" value="1"/>
>>        <xf:send submission="send-query"/>
>>      </xf:action>
>>       </xf:trigger>
>> 
>> And I added the 'Query in progress ...' display this way:
>> 
>>     <xf:group ref="instance('results')/query-in-progress">
>>       <p>Query in progress ...</p>
>>     </xf:group>
>> 
>> (It should be noted that the send-query submission replaces the
>> 'results' instance entirely, so the empty 'query-in-progress' element
>> there goes away when the results of the query are returned.)
>> 
>> The trigger and group just shown, however, do not in fact make
>> the old results disappear or the text "Query in progress ..." appear;
>> there no change to the display until the results of the query come back.
>> 
>> Consulting the spec, I see that my problem is apparently described
>> in the section on 'deferred updates', near the beginning of section 10:
>> 
>>> Deferred Updates: Sequences of one or more XForms Actions have a deferred 
>>> effect on XForms model and user interface processing. Implementations are 
>>> free to use any strategy to accomplish deferred updates, but the end result 
>>> must be as follows: Instance data changes performed by a set of actions do 
>>> not result in immediate computation dependency rebuilding, recalculation, 
>>> revalidate and form control refreshing until the termination of the 
>>> outermost action handler, as described here.
>> OK, I think I can see the point of that rule.
>> 
>> Later on in the same section, however, it says
>> 
>>> Actions that directly invoke rebuild, recalculate, revalidate, or refresh 
>>> always have an immediate effect, and clear the corresponding deferred 
>>> update flag. The XForms Actions in this category are:
>>> 
>>> rebuild
>>> recalculate
>>> revalidate
>>> refresh
>> So I tried inserting first one, then a different one, and finally all four 
>> of these actions
>> into my trigger:
>> 
>>       <xf:trigger>
>>      <xf:label>Search</xf:label>
>>      <xf:action ev:event="DOMActivate">
>>        <!--* <xf:message level="ephemeral">Query in progress</xf:message> 
>> *-->
>>        <xf:delete nodeset="instance('results')/child::node()"/>
>>        <xf:insert context="instance('results')" 
>> origin="instance('ui')/query-in-progress"/>
>> 
>>        <xf:rebuild/>
>>        <xf:recalculate/>
>>        <xf:revalidate/>
>>        <xf:refresh/>
>> 
>>        <xf:setvalue ref="instance('q')/startpos" value="1"/>
>>        <xf:send submission="send-query"/>
>>      </xf:action>
>>       </xf:trigger>
>> 
>> The result is that the behavior is still unchanged.  Have I misunderstood 
>> the spec?
>> Am I doing something wrong?
>> 
>> How can I cause a single button press to (a) clear the results and display a 
>> 'be patient'
>> message, and (b) perform a submission which will automatically clear that 
>> be-patient
>> message when the results come back?
>> 
>> Thanks for any help.
>> 
> 
> 
> ------------------------------------------------------------------------------
> Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
> Francisco, CA to explore cutting-edge tech and listen to tech luminaries
> present their vision of the future. This family event has something for
> everyone, including kids. Get more information and register today.
> http://sdm.link/attshape
> _______________________________________________
> Xsltforms-support mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/xsltforms-support

-- 
****************************************************************
* C. M. Sperberg-McQueen, Black Mesa Technologies LLC
* http://www.blackmesatech.com 
* http://cmsmcq.com/mib                 
* http://balisage.net
****************************************************************





------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Xsltforms-support mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xsltforms-support

Reply via email to