Garth -- congratulations and thank you for the useful feedback.

So, can we see it? Or at least some screen dumps?

- D.

On Feb 1, 2006, at 12:36 PM, Garth Smedley wrote:


We have just deployed our first Laszlo-based application and I thought I'd take a moment to share some of our experiences. What follows may seem fairly critical because it focuses mainly on the problems we ran into and how we solved them. So I should start by mentioning that the project was a complete success. The clients love the application in a large part due to Laszlo's great looking UI. I personally had a lot of fun working with Laszlo and would not hesitate to use it in future projects.

The Project

In August '05 we were contracted to build a disease registry system for doctors and case managers working with diabetes patients. This is a data-centric application with about 200 data items on each form and a new form for every visit with a patient.

The Decision

When we started we had plenty of experience building Java-based web applications and some of us had experience building Rich Clients with XUL, dotNet and wxWindows. We decided to try OpenLaszlo for several reasons: User Experience - Case managers use the application many times a day so it had to look and feel great. Cross-Platform Support - Had to support a wide range of operating systems and browsers XML Datasets - Built-in mapping of XML to controls simplifies development.
Charts - Needed to be able to display several of these.
Open Source - Needed to keep costs down and have access to source
New Stuff  - We like working with fun new systems.

The Details

Getting basic functions to work was easy; just drop a few controls on the page and hook them up with a bit of JavaScript. But getting the UI right is all about the details and this is where we sometimes found ourselves struggling. I attribute this mainly to the immaturity of the Laszlo components, in most cases we were able to find solutions on the forums or fix them directly in the source ourselves. Here are some examples of the things we ran into: Combobox - no support for searching by first letter. We modified the component to do this. Tabbing - trouble setting focus to the first item in a replicated list. Never did solve this one. Tabbing and scrolling - Wanted to scroll items into view when they receive focus. Partial solution found. Scrolling Input Text - Looks like this might be available now through a Laszlo Mail component Sorting Tabs - When adding several items the sorting would fail. Worked around this one. Table layout - We needed to layout fields and labels in a table. Wrote a tablelayout. Cursors - changing to a wait cursor doesn't really work for long operations, at times two cursors become visible or the mouse seems frozen. No workaround. Date/Phone filters - Wrote our own but would have been easier with more control of text entry. Several of these are nice-to-have things that our users would easily get used to, getting the basic functions was very straightforward and for the most part we found the Laszlo components well-suited to our needs.

Another more fundamental issue we ran into was getting the alignment and layout right in complex screens. Eventually we were able to get things to look the way we wanted but it seemed to take a great deal of trial and error, typically involving turning on bgcolor's for views to see what was happening. Before we were done we wrote a debug utility to highlight views on mouseover, but I think the real solution is a good screen layout tool. One that lets you manipulate layouts, sizes, positions and alignment and see the results immediately. We did get better at this as we gained more experience, the best bit of advice I can give is to draw your view/ layout hierarchy on a piece of paper first.

Performance

The evil Flash message has one advantage, it forces you to keep user wait time below 20 seconds. I never want my users to see that message and we worked pretty hard to make sure they didn't. We ran into speed issues in three places. Startup. We have a form with about 200 data items on it, several of which are lists and comboboxes generated from database tables. We tried Kranking first and let me say that I fully support the decision to remove that feature. Deferred Instantiation was the solution. The application design lent itself well to this and it worked beautifully. Comboboxes. There has been a lot of discussion about this lately. We had one rather large combobox that could appear several times on the same form and could be extended dynamically by the user. We wrote a sharedcombobox component that works a little differently than the newcombobox and isn't as complete but was sufficient for our purposes. Many Forms. Instantiating several of our large forms ground the system to a halt but we needed to allow switching between data for different patient visits. The solution was to create a single form and switch the dataset it pointed to. Works well and is very fast.

Development Process

Over the years I have gotten used to advanced development environments like Visual Studio and Eclipse. Maybe I've gotten soft but when coding in Laszlo I really want that little red underline to appear when I misspell a function or attribute name. However, Laszlo does support isolated component testing very well. Typically we would extract the small piece we were working on, include only the files it needed, and attach it to an in-line dataset instead of a remote one. This allowed a very quick edit/compile/debug cycle.

The ability to easily switch between file-based and remote datasets also allowed us to develop UI pieces while the database access code was still being written.

Creating custom components is Laszlo is very easy. We created several from simple expandable views and Yes/No controls to complex object list controls. It does take a little while to completely understand what is going on with replication but that is partly because it is a fairly novel concept.

Summary

We spent about four months working on the project with three developers spending time working in Laszlo. The end result was great, we shipped on time and the client is very happy with the application. Those of us who have had experience developing HTML applications certainly never want to go back to that.

I'll be watching the progress of OpenLaszlo with great interest and looking for opportunities to use it in future projects.

Regards,

Garth

_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user

_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user

Reply via email to