Hi all,

I'm trying to produce a booking form, where users can select their 
seat. The seats are laid out in a square. I'm currently doing this 
with 4 arrays, one for each side of the square. This is proving very 
complicated tho, as I have a remote object from a cfc returning the 
results from all 4 arrays, and its proving a nightmare to map the 
results back to the images? (full code below.

Anyone have any thoughts on how they would approach this?

Thanks
Shaun

--------

<?xml version="1.0"?>
<!-- Simple example to demonstrate the Repeater class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
layout="absolute" backgroundColor="#000000" 
backgroundGradientColors="[#222222, #222222]" creationComplete="init
()">

<mx:Style source="style.css" />

    <mx:Script>
        <![CDATA[
                import mx.formatters.CurrencyFormatter;
                import mx.controls.FormItemLabel;
                import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
  
                        [Bindable]
                        private var glowTarget:*;
  
            [Bindable]
            private var topRow:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 
10, 11];

                        [Bindable]
            private var rightCol:Array = [12, 13, 14, 15, 16, 17, 18, 
19, 20, 21, 22];

            [Bindable]
            private var bottomRow:Array = [33, 32, 31, 30, 29, 28, 
27, 26, 25, 24, 23];

                        [Bindable]      
            private var leftCol:Array = [44, 43, 42, 41, 40, 39, 38, 
37, 36, 35, 34];
            
            private var _ukFormatter:CurrencyFormatter;
            
            private function init():void
            {
                seatsManager.getAllSeats();
                
                // hide all the elements
                resUserName.visible = false
                    resButton.visible = false
                                reserved.visible = false
                                reserved2.visible = false
                                reserved3.visible = false
                                createAccountButton.visible = false

                                reserveLabel.visible = false
                                reservedText1.visible = false
                                reservedText2.visible = false
                                
                                payLabel.visible = false
                                payText1.visible = false
                                priceText.visible = false
                                payButton.visible = false
                                
            }
            
            private function changeDisplay(event:Event):void
            {
                var chosenSeatNo:String = 
event.currentTarget.getRepeaterItem();
                //Alert.show(String
(event.currentTarget.getRepeaterItem()));
                
                // build the txt strings
                centerLabel.text = 'Seat No. ' + chosenSeatNo;
                payLabel.text = 'Pay for Seat No. ' + chosenSeatNo;
                reserveLabel.text = 'Reserve Seat No. ' + 
chosenSeatNo;
                
                        // control glow of buttons
                                glowImage.end();
                                glowTarget = event.currentTarget;
                                glowImage.target = glowTarget;
                                glowImage.play();
                                
                                // do function call     
                                seatsManager.getChosenSeat
(chosenSeatNo)
            }
            
            private function handleFetchResult(event:ResultEvent):void
            {
                var seatNo:String = String
(event.result.intSeatNumber);
                var intId:String = String(event.result.intId);
                var intPrice:String = String(event.result.intPrice);
                                var intReserved:Boolean = 
event.result.intReserved;
                                var usr_alias:String = 
event.result.usr_alias;
                                var intPaid:Boolean = 
event.result.intPaid;
                        
                                _ukFormatter = new CurrencyFormatter
();
                                _ukFormatter.currencySymbol = "£";
                                _ukFormatter.precision = 2;
                                _ukFormatter.decimalSeparatorFrom 
= ".";
                                _ukFormatter.decimalSeparatorTo = ".";
                                _ukFormatter.useNegativeSign = true;
                                _ukFormatter.useThousandsSeparator = 
true;
                                _ukFormatter.alignSymbol = "left";
                        
                                intPrice = _ukFormatter.format
(intPrice);
                                priceText.text = 'Price for this seat 
is ' + intPrice;
                        
                                //seat is already paid for
                                if (intPaid)
                                {
                                        // change values of text 
thats visible
                                        reserved.text  = 'This seat 
is unavailable.'
                                        reserved2.text = 'It has been 
booked by ' + usr_alias;

                                        reserved.visible = true
                                        reserved2.visible = true

                                        // set other elements to 
hidden
                                        reserved3.visible = false
                        resUserName.visible = false
                            resButton.visible = false
                                        createAccountButton.visible = 
false
                                        payLabel.visible = false
                                        payText1.visible = false
                                        payButton.visible = false

                                        reserveLabel.visible = false
                                        reservedText1.visible = false
                                        reservedText2.visible = false
                                        priceText.visible = false
                                
                                }
                                
                                // not paid for
                                else
                                {

                                        // if reserved
                                        if (intReserved)
                                        {
                                                // change text
                                                reserved.text = 'This 
seat is reserved by ' + usr_alias;
                                                reserved2.text 
= 'This reservation can be removed, if you book this place now!'
                                                
                                                // show elements
                                                reserved.visible = 
true

                                                // hide reservation 
options
                                                reserveLabel.visible 
= false
                                                reservedText1.visible 
= false
                                                reservedText2.visible 
= false
                                                resUserName.visible = 
false
                                                

                                        }
                                        
                                        // not reserved
                                        else
                                        {
                                                
                                                reserved.text = 'This 
seat is available, you can reserve it, or book it.'
                                                reserved2.text = 'You 
must have an account to do this.'
                                                
                                                // show all elements
                                resUserName.visible     = true
                                    resButton.visible           = true
                                                reserved.visible 
                = true
                                                reserved2.visible 
                = true
                                                reserved3.visible 
                = true
                                        
        createAccountButton.visible = true
                
                                                reserveLabel.visible 
        = true
                                                reservedText1.visible 
        = true
                                                reservedText2.visible 
        = true
                                                
                                                payLabel.visible 
                = true
                                                payText1.visible 
                = true
                                                priceText.visible 
                = true
                                                payButton.visible 
                = true
                                        }

                                }
            }
            
            private function handleAllResult(event:ResultEvent):void
            {
                          var result:Array = event.result as Array;
                        
                                /* Create a new object */
                            var UpdateVO:Object = new Object();

                                /* Create an array to house the 
objects */
                            var UpdateResult:Array = new Array();
                            
                /* Loop over result array and populate new array with 
objects */
                            for(var i:int=0; i < result.length; i++){
                             UpdateVO = result[i];
                             trace(i)
                             trace("no= " + UpdateVO.intSeatNumber 
+ "reserved=" + UpdateVO.intReserved)
                             
                                if (UpdateVO.intReserved == 1)
                                        {
                                                topImage
[UpdateVO.intSeatNumber] = "assets/reserved.gif";       
                                                trace(topImage
[UpdateVO.intSeatNumber])
                                                
                                        }
                                else
                                        {
                                                topImage
[UpdateVO.intSeatNumber].source = "assets/pc.gif";
                                        }
                                //x[UpdateVO.intSeatNumber-1].toolTip 
= "Seat reserved, buy now to secure it.";
                                                                
                        
                             
            
                             // leftImage[UpdateVO.intSeatNumber-
1].source = "assets/reserved.gif";
                             
                           /*
                             if (UpdateVO.intPaid == 1)
                                 {
                                        topImage
[UpdateVO.intSeatNumber].source = "assets/paidfor.gif";
                                                topImage
[UpdateVO.intSeatNumber].toolTip = "Seat Booked";
                                     }
                             else
                                        {
                                             if (UpdateVO.intReserved 
== 1)
                                             {
                                                        trace
(UpdateVO.intSeatNumber, UpdateVO.intReserved)
                                                        topImage
[UpdateVO.intSeatNumber-1].source = "assets/reserved.gif";
                                                        topImage
[UpdateVO.intSeatNumber-1].toolTip = "Seat reserved, buy now to 
secure it.";
                                             }
                                        }                            
*/
                             //UpdateResult.push(UpdateVO);
    }
            }
            
            
        ]]>
    </mx:Script>

<mx:RemoteObject destination="ColdFusion" 
                                 id="seatsManager" 
                                 fault="Alert.show
(event.fault.message)" 
                                 source="langame.seats" 
                                 showBusyCursor="true">

        <mx:method  name="getAllSeats" result="handleAllResult
(event)" fault="Alert.show(event.fault.message)"/>      
        <mx:method name="getChosenSeat" result="handleFetchResult
(event)" fault="Alert.show(event.fault.message)"/>
        
</mx:RemoteObject>

        <!-- Glow effect -->
        <mx:Glow id="glowImage" blurXFrom="15.0" blurXTo="15.0" 
blurYFrom="15.0" blurYTo="15.0" duration="2000" repeatCount="0" 
color="0xFF0000" />

        <!-- Holding canvas -->
    <mx:Canvas x="10" y="10" width="1000" height="780">
       
       <!-- top row  -->
       <mx:HBox x="10" y="10">                  
            <mx:Repeater id="top" dataProvider="{topRow}">
    <!--            <mx:Button height="49" width="50" 
                    label="{String(rp.currentItem)}" 
                    click="Alert.show(String
(event.currentTarget.getRepeaterItem()) + ' pressed')"/>
                    -->
                        <mx:VBox>
                                <mx:Image id="topImage" 
styleName="reservedSeat" width="35" x="102" y="131" height="28" 
click="changeDisplay(event);"  useHandCursor="true" 
buttonMode="true" />
                            <mx:Text text="Seat {top.currentItem}" />
                        </mx:VBox>      

            </mx:Repeater>    
                </mx:HBox>
                
       <!-- left col  -->
       <mx:VBox x="10" y="70">
               <mx:Repeater id="lcol" dataProvider="{leftCol}">
                           
                   <mx:Image id="leftImage" styleName="reservedSeat" 
x="102" y="131" click="changeDisplay(event);"  width="35" height="28" 
buttonMode="true" useHandCursor="true" />
                           <mx:Text text=""  /><!-- text="Seat {String
(lcol.currentItem)}" -->

               </mx:Repeater>       
       </mx:VBox>

       <!-- right col  -->
       <mx:VBox x="572" y="70">
               <mx:Repeater id="rcol" dataProvider="{rightCol}">

                   <mx:Image id="rightImage" x="102" y="131" 
click="changeDisplay(event);" width="35" height="28" 
buttonMode="true" useHandCursor="true" />
                           <mx:Text text="Seat {String
(rcol.currentItem)}" />

               </mx:Repeater>              
       </mx:VBox>

       <!-- bottom row  -->
       <mx:HBox x="10" y="718">                 
            <mx:Repeater id="bottom" dataProvider="{bottomRow}">

                       <mx:VBox x="21" y="403">
                        <mx:Image id="bottomImage" x="102" y="131" 
click="changeDisplay(event);"  width="35" height="28" 
buttonMode="true" useHandCursor="true"/>
                        <mx:Text text="Seat {String
(bottom.currentItem)}" />
                       </mx:VBox>

            </mx:Repeater>    
       </mx:HBox>

                <!-- Start of center canvas -->
       <mx:Canvas x="102" y="101" width="462" height="459" 
backgroundColor="#222222">
          <mx:Label id="centerLabel" x="10" y="10" text="Select a 
seat to view the details about it." />

          <mx:Text id="priceText" text="priceText" x="10" y="400"/>
          <mx:Text id="reserved" x="10" y="41" />
          <mx:Text id="reserved2" x="10" y="68" />
          <mx:Text id="reserved3" x="10" y="95" text="Don't have an 
account?"/>
          <mx:Button x="10" y="122" label="Create Account" 
id="createAccountButton"/>
          
          <mx:Label x="10" y="163" id="reserveLabel" text="reserved 
label"/>
          <mx:Text x="10" y="194" text="Reserved places are not 
guaranteed." id="reservedText1"/>
          <mx:Text x="10" y="221" text="If you want to guarantee your 
space, then pay for it now!" id="reservedText2"/>
          <mx:TextInput id="resUserName" x="10" y="248"/>
          <mx:Button id="resButton" x="10" y="278" label="Reserve"/>

          <mx:Label x="10" y="342" text="paylabel" 
id="payLabel"/>        
          <mx:Text x="10" y="373" text="To guarantee your place, pay 
online now!" id="payText1"/>
          <mx:Button x="10" y="427" label="Pay online using PayPal" 
id="payButton"/>
         
       </mx:Canvas>
       
    </mx:Canvas>
</mx:Application>

Reply via email to