Hi Robert, Here is the new jira: https://issues.apache.org/jira/browse/TAP5-1102
Also its worth looking at https://issues.apache.org/jira/browse/TAP5-775. Although an unrelated issue, I thought that depending on what Howard was planning, this might provide some features to work off. The AjaxFormLoop is one of those components I can certainly see people using more and more of in future, so seems to me at least to be worth the effort. Cheers, Peter ----- Original Message ----- From: "Robert Zeigler" <robe...@scazdl.org> To: "Tapestry users" <users@tapestry.apache.org> Sent: Friday, 9 April, 2010 18:12:22 GMT +02:00 Athens, Beirut, Bucharest, Istanbul Subject: Re: Tweaking an AjaxFormLoop Not that I'm aware of. Feel free to search jira and create one. :) Robert On Apr 9, 2010, at 4/95:39 AM , Peter Stavrinides wrote: > Nice post! and came at just the right time for me too... so thanks > for the tips! > > +1 for feature addition, any Jira open? > > cheers, > Peter > > ----- Original Message ----- > From: "Juan Isern" <juanis...@gmail.com> > To: users@tapestry.apache.org > Sent: Friday, 9 April, 2010 08:09:40 GMT +02:00 Athens, Beirut, > Bucharest, Istanbul > Subject: Re: Tweaking an AjaxFormLoop > > > Robert, following your recomendation finally implemented a component > that > does basically nothing but register itself as a trigger and has an id > assigned by tap as well. > > On the client side, I have a global map<triggerId, rowInjector> and a > function triggerRowInjector(triggerId) so that I can inject rows > selectively. > > As for the effect thing, you can see that they're hardcoded in the > function > Tapestry.Initializer.formLoopRemoveLink so I overrode it making them > consistent. > > I'm using tapestry 5.1.0.5, so I expect this "solution" to be broken > by... > 5.2, maybe? :P > > > > > Robert Zeigler wrote: >> >> That just sounds like you're asking for trouble down the road, >> though. ;) >> You're effectively relying on implementation details of the >> component. >> It'll break if: >> * AjaxFormLoop changes the id of the contained RowInjector >> component >> * You want more than one AjaxFormLoop on the page >> >> I'll grant you that it works... for now. :) And it's the sort of >> solution I might put in projects that I write for myself, but not a >> solution I would put into a project I write for clients. >> >> It's probably worth submitting a jira for a feature addition to make >> this sort of functionality easier/more robust. >> >> Robert >> >> On Apr 8, 2010, at 4/89:20 PM , Brian Heston wrote: >> >>> I've done something similar without much hacking. In my case I have >>> an autocomplete field in each row, and when a selection is made I >>> needed to add a new row automatically so the user can enter the next >>> item. I found that the row injector always has the same name, so I >>> just call the trigger function defined in tapestry.js when I want to >>> add the new row. The addRow parameter is empty so the link doesn't >>> render, but the trigger still does. >>> >>> <div t:type="ajaxFormLoop" t:source="items" t:value="item"> >>> <t:submitNotifier> >>> <input type="text" t:type="textField" t:value="item.name" >>> t:mixins="autocomplete2" t:afterUpdateElement="itemSelected"/> >>> </t:submitNotifier> >>> ... >>> <t:parameter name="addRow"></t:parameter> >>> </div> >>> >>> function itemSelected() { >>> $("rowInjector").trigger(); >>> } >>> >>> You may notice that I'm using my own autocomplete mixin, which I had >>> to make to expose the afterUpdateElement event, but if you've got >>> some other logic that invokes the adding of a row the idea should be >>> the same. >>> >>> Hope this helps, >>> Brian >>> >>> >>> ________________________________________ >>> From: Juan Isern [juanis...@gmail.com] >>> Sent: Thursday, April 08, 2010 6:43 PM >>> To: users@tapestry.apache.org >>> Subject: Re: Tweaking an AjaxFormLoop >>> >>> Robert, I've got to say that you gave me the answer that I feared >>> most. >>> >>> Hehe, REALLY thanks for your tips, I knew already that sooner or >>> later I had >>> to hack into tapestry.js >>> >>> Cheers! >>> >>> >>> Robert Zeigler wrote: >>>> >>>> >>>> On Apr 8, 2010, at 4/81:48 PM , Juan Isern wrote: >>>> >>>>> What I would like to do is to trigger an "addRow" event by >>>>> executing >>>>> some >>>>> javascript (that will be invoked when an upload finishes). I >>>>> thought >>>>> of >>>>> simulating a click event on an invisible "add row" link but I'm >>>>> sure >>>>> there's >>>>> a prettier solution out there. >>>>> >>>> >>>> There are other ways to do it, although I'm not sure I would call >>>> them >>>> "prettier". :) >>>> AjaxFormLoop places an "AjaxFormLoopContext" object into the >>>> environment when it renders. >>>> You can access this object and add a call to "addAddRowTrigger". >>>> That >>>> part is pretty. The main issue (for you) is that tapestry then >>>> assumes >>>> that the trigger is going to be invoked on the "click" action, >>>> which >>>> isn't what you want in this case. >>>> There's a way around it, and that's where things get uglier. You >>>> can >>>> monkey patch tapestry.js to override >>>> Tapestry.Initializer.ajaxFormLoop, and make it behave how you want. >>>> This is typically how I've implemented custom "add row" >>>> functionality. >>>> >>>> It might be a nifty change to enable a second form of the >>>> "addAddRowTrigger" that takes, say, a js callback name as a 2nd >>>> argument. Or perhaps some flag triggering whether the first >>>> argument >>>> is an id or a callback. In any event, the initializer could then >>>> check for the appropriate condition, and if the condition is met, >>>> the >>>> initializer would delegate the setup to the callback, passing in >>>> the >>>> row injector, rather than assuming a click. If there's enough >>>> interest in something like this, I would be willing to do the >>>> work to >>>> add it to the framework (the exact api would need to be worked out, >>>> though). >>>> >>>> >>>>> The same question could apply to any client-side ajax behavior, >>>>> like >>>>> refreshing zones. Is there any way to do it programmatically via >>>>> javascript? >>>>> >>>> >>>> The best answer here is to take a look for yourself through >>>> (mainly) >>>> the tapestry.js file. >>>> But, yes, you can refresh zones in non-default ways; the trick (as >>>> with AjaxFormLoop above) is getting a handle to the runtime js >>>> objects. >>>> >>>>> Another thing: the javascript effect displayed when a row is >>>>> added/ >>>>> removed >>>>> behaves in a somewhat weird fashion. Can be this effect be >>>>> disabled or >>>>> configured? >>>>> >>>> >>>> http://tapestry.apache.org/tapestry5.1/tapestry-core/ref/org/apache/tapestry5/corelib/components/AjaxFormLoop.html >>>> Check out the "show" parameter. >>>> >>>>> Thanks a lot! >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/Tweaking-an-AjaxFormLoop-tp28182870p28182870.html >>>>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Tweaking-an-AjaxFormLoop-tp28182870p28186610.html >>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> > > -- > View this message in context: > http://old.nabble.com/Tweaking-an-AjaxFormLoop-tp28182870p28187698.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org