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