Since there seems to be some interest in Ajax development, and since there seems to be several parallel Ajax development efforts, perhaps now is a good time to come up with a coordinated plan for future Ajax development.

I'll start things off by reviewing what we've discussed so far and what work has been contributed so far. Everyone is welcome to join in and offer suggestions and ideas!

1. The screen widget XML code used for Ajax support should be rendering format agnostic and shouldn't tie the XML to a specific third party library.

2. Screen widgets should still output usable HTML when the user has JavaScript disabled. In other words, an Ajax-enabled page should still function properly with JavaScript turned off.

3. As much as possible, use new widget elements for Ajax support, instead of new attributes.

I discovered this while working on the Ajax code that was already in place. Having a widget attribute allows for only one Ajax event, where more than one Ajax event may be desired. A good example is the Ajax Example page in the Example component - two areas of the screen are updated asynchronously when a new item is added.

I created two new widget elements: <on-event-update-area> for the form widget, and <on-field-event-update-area> for the field elements. The number of elements used in a form widget is unlimited, so any number of Ajax events can be fired.

4. Decouple the widget Java code from the third party Ajax library via a JavaScript "connector." I added ajaxXxxx functions to the selectall.js file to do that. We're using the Prototype Ajax library now, but should we decide to change to another library in the future, we only have to rewrite the ajaxXxxx functions in selectall.js. It will be a simple change to make.

--------------------

Here is the current screen widget Ajax support:

1. <container> elements can be updated periodically.
2. <form> elements can update screen areas asynchronously.
3. Text input fields can have server-side autocompletion.

There are two things I would like to see added:

1. A date/time input control that has drop-down controls for each field (year, month, day, etc). As each drop-down is changed, the others are updated with valid choices. The valid choices would depend upon the user's locale.

2. "Smart" table headers that, when clicked, change the sort order of the table.

--------------------

That's it so far.

What new features should be added? Where do we go from here? Who wants to help?

-Adrian

Reply via email to