Table of Contents
OpenLaszlo components are high level objects that implement common user-interface functions. 
            They range from relatively simple objects like <button>
            
             to complex objects
            like <form>
            
             and <grid>
            
            .
            
         
Sources for LZ components are here.
This chapter is a tutorial which explains how components are used to create a simple survey tool.
               The following short tutorial shows how the vacation survey application works.  In this tutorial we show how various components
               such as <radiobutton>
               
                and <radiogroup>
               
                nest inside the <form> component, and how these and other components can be bound to data to collect
               and display survey results.
               
            
Please note that the methodology that we're using to explain how this application is constructed is not necessarily the best way to go about building an application. It's simply a way of explaining how the application works from the inside out.
We begin constructing the questionnaire at the heart of the survey:
Example 41.1. Survey tool radiogroup
<canvas width="100%" height="200">
        <view>
          
                <radiogroup x="20" layout="class: simplelayout; axis: y; spacing:6" name="vote">
                    <radiobutton value="'hawaii'" selected="true">Hawaii</radiobutton>
                    <radiobutton value="'paris'">Paris</radiobutton>
                    <radiobutton value="'jamaica'">Jamaica</radiobutton>
                    <radiobutton value="'trenton'">Trenton</radiobutton>
                </radiogroup>
                
    
        </view>
</canvas>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2007, 2008 Laszlo Systems, Inc.  All Rights Reserved.                   *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
                     
                  As discussed above, the <form>
                  
                   element provides a structure for grouping various related components. 
                  By handling layout and common functions, <form> allows you to concentrate on behavior. In the code below, we've
                  added a button and associated it with the form's submit().
                  
               
Example 41.2. Survey tool simple form
<canvas width="100%" height="200">
        <view>
            <form name="myform" bgcolor="#c0c0c0" spacing="33">
                <submit id="surveysubmit"/>
 
                <view height="20">
                    <text>What is your favorite vacation spot?</text>
                </view> 
                <radiogroup x="20" layout="class: simplelayout; axis: y; spacing:6" name="vote">
                    <radiobutton value="'hawaii'" selected="true">Hawaii</radiobutton>
                    <radiobutton value="'paris'">Paris</radiobutton>
                    <radiobutton value="'jamaica'">Jamaica</radiobutton>
                    <radiobutton value="'trenton'">Trenton</radiobutton>
                </radiogroup>
                <button isdefault="true">Vote
                    <handler name="onclick">
                        surveysubmit.submit();
                    </handler>
                </button>
            </form>
        </view>
</canvas>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2007, 2008 Laszlo Systems, Inc.  All Rights Reserved.                   *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
                     
                  As we've seen above, the submit() on the form causes user responses to be recorded.
                  
                  
               
Example 41.3. data model
    <dataset name="surveydataset" type="http" src="http:survey.jsp"/>
    <node id="resultdata">
        <attribute name="hawaii" value="$path{'surveydataset:/response/summary/option[1]/text()'}"/>
        <attribute name="paris" value="$path{'surveydataset:/response/summary/option[2]/text()'}"/>
        <attribute name="jamaica" value="$path{'surveydataset:/response/summary/option[3]/text()'}"/>
        <attribute name="total" value="$path{'surveydataset:/response/summary/@total'}"/>
        <attribute name="vote" value="$path{'surveydataset:/response/vote/text()'}"/>
    </node>
                     Note the <submit>
                     
                      tag in the example (just below the <form> tag.)
                     
                  
    <submit id="surveysubmit" dataset="${surveydataset}"/>
                     The function of this tag is to associate the form with the dataset.  Later, when the submit() is invoked,
                     the data will be sent to the server.
                     
                  
                  As explained above, sometimes you can create your own new component by subclassing, or "extending" an existing component.
                   Here
                  the <alert>
                  
                   class is extended to create a new component called "myalert".  It is trivially different
                  from the default <alert>; its only difference is that it centers nicely over the survey box.
                  
               
Example 41.4. extending a component
    <class extends="alert" name="myalert" x="${Math.max(survey.width - this.width, 0)/2}" y="${Math.max(survey.height - this.height, 0)/3}">
    </class>
Copyright © 2002-2010 Laszlo Systems, Inc. All Rights Reserved. Unauthorized use, duplication or distribution is strictly prohibited. This is the proprietary information of Laszlo Systems, Inc. Use is subject to license terms.