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