Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-21 Thread Alex Harui
Looks ok to me.  Is there some specific issue we should look at?  The 
expectation is that this is for a shopping cart and the number of items won’t 
be very big.  If you had 100,000 items, recomputing on every change could be 
slow, and then you might try to get smarter by looking at the event’s 
CollectionEventKind and making specific changes based on the kind.  For 
example, for an ADD event, all you need to do is add the new value to the old 
sum, no need to loop over everything.


On 12/21/11 7:35 AM, ZIONIST stinas...@yahoo.com wrote:






Hi guys, thanks to your help i have managed to get it to work finally. One 
question though, is this best practice? Below is the code.

?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=horizontal
xmlns:ns1=*
xmlns:ns2=as_logic.*
mx:states
mx:State name=dark
mx:SetProperty target={product}
name=text
value=Dark Chocolate/
mx:SetProperty target={price}
name=text
value=50/
/mx:State
mx:State name=spread
mx:SetProperty target={product}
name=text
value=Drinking Chocolate/
mx:SetProperty target={price}
name=text
value=100/
/mx:State
/mx:states

mx:Script
![CDATA[
import mx.events.FlexEvent;
import mx.controls.listClasses.ListData;
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;

[Bindable]
public var orderColl:ArrayCollection=new ArrayCollection();

private function addProduct():void
{

/*** Create an object to hold the data ***/
var obj:Object=new Object();

/*** Assign the variables to it ***/
obj.Product=product.text;
obj.Price=price.text;
obj.Qty=1;

/*** Add the object to the list ***/
orderColl.addItemAt(obj, 0);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);
}

public function deleteOrder():void
{

/*** Remove the item from the array collection ***/
orderColl.removeItemAt(products.selectedIndex);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);
}

/* public function changeQty(event:Event):void
{
var currentlySelectedItem:Object = products.selectedItem;
currentlySelectedItem.Qty =  qty.text;
}
 */

public function calculateSum(event:CollectionEvent):void
{
var amt:Number=0;
var n:int=orderColl.length;
for (var i:int=0; i  n; i++)
{
var cartEntry:Object=orderColl.getItemAt(i);
amt+=cartEntry.Qty * cartEntry.Price;
}
sum.text=usdFormatter.format(amt.toString());
}
]]
/mx:Script

mx:DefaultTileListEffect id=dtle0
  fadeOutDuration=300
  fadeInDuration=300
  moveDuration=650
  color=0xff/

mx:CurrencyFormatter id=usdFormatter
  precision=0
  currencySymbol=$
  alignSymbol=left/

mx:Canvas width=500
   height=300
mx:Label x=10
  y=10
  text=Milk Chocolate
  id=product/
mx:Label x=10
  y=36
  text=10
  id=price/
mx:Button x=10
   y=62
   label=submit
   click=addProduct()/
mx:Button x=10
   y=92
   label=Change State
   click=currentState='dark'/
mx:Button x=10
   y=122
   label=Drinking Chocolate
   click=currentState='spread'/
/mx:Canvas

mx:VBox width=340
 height=340
 horizontalAlign=center
 verticalAlign=middle

ns2:transparentList id=products
 width=300
 height=300
 dataProvider={orderColl}
 borderStyle=none
 itemsChangeEffect={dtle0}
ns2:itemRenderer
mx:Component
mx:HBox width=100%
 height=100%
 horizontalAlign=center
 verticalAlign=middle
 horizontalGap=0

 mx:Script
 ![CDATA[
 public function changeQty(event:Event):void
{
var currentlySelectedItem:Object = outerDocument.products.selectedItem;
currentlySelectedItem.Qty = qty.text;
outerDocument.orderColl.itemUpdated(currentlySelectedItem);
}
 ]]
 /mx:Script

mx:Image source=assets/trashcan.gif
  click=outerDocument.deleteOrder()/
mx:Label text={data.Product}
  styleName=orderLabel/
mx:Spacer width=100%/
mx:Label id=price
  text=${Number(qty.text)* Number(oldPrice.text)}
  styleName=orderLabel/
mx:TextInput id=qty
  width=30
  height=20
  text={data.Qty}
  change=changeQty(event)
  styleName=qtyInput/

mx:Label id=oldPrice
  text={data.Price}
  visible=false
  includeInLayout=false/

/mx:HBox
/mx:Component
/ns2:itemRenderer
/ns2:transparentList
mx:HBox
mx:Label text=Total:
  color=#FF
  fontWeight=bold/
mx:Label id=sum/
/mx:HBox
/mx:VBox

/mx:Application






--
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui


Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-21 Thread Alex Harui
Add a switch statement for event.kind, keep the last sum around, and modify it 
as appropriate.


On 12/21/11 11:51 AM, ZIONIST stinas...@yahoo.com wrote:






How do you do that?






--
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui


RE: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-12 Thread Davidson, Jerry
We need someone to monitor this list from a management prospective.  The
spams of srikanth reddy are becoming annoying.  Flip a flag and I'll be
happy to jump in limited to removing spam and spammers.

 

From: flexcoders@yahoogroups.com [mailto:flexcoders@yahoogroups.com] On
Behalf Of Alex Harui
Sent: Sunday, December 11, 2011 11:07 PM
To: flexcoders@yahoogroups.com
Subject: Re: [flexcoders] Re: getting the total of values of an array
collection that is updated manually

 

  

I didn't see any code that actually changes the quantity in the data
object.  The TextInput gets its initial value from the data via
databinding, and the change event calls something, but:

1.  you don't want to update on change, but rather on focusOut or
itemEditEnd (otherwise, as you type in 21 it will recompute for 2
and then 21) 
2.  You need to actually write to the dataObject.  Probably no need
to addEventListener again 
3.  Since you are using plain objects, you will need to call
itemUpdated on the orderColl


-Alex


On 12/10/11 5:42 AM, ZIONIST stinas...@yahoo.com wrote:


 
 
   

I have modified the app using Alex Harui's solution and it works when i
add a product to the cart and also updates the total when i delete an
item from the cart. But when i edit the quantity in the text input, the
total does not get updated. Below is the modified version. Anything am
missing?

?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=horizontal
xmlns:ns1=*
xmlns:ns2=as_logic.*
mx:states
mx:State name=dark
mx:SetProperty target={product}
name=text
value=Dark Chocolate/
mx:SetProperty target={price}
name=text
value=50/
/mx:State
mx:State name=spread
mx:SetProperty target={product}
name=text
value=Drinking Chocolate/
mx:SetProperty target={price}
name=text
value=100/
/mx:State
/mx:states

mx:Script
![CDATA[
import mx.events.FlexEvent;
import mx.controls.listClasses.ListData;
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;

[Bindable]
private var orderColl:ArrayCollection=new ArrayCollection();

private function addProduct():void
{

/*** Create an object to hold the data ***/
var obj:Object=new Object();

/*** Assign the variables to it ***/
obj.Product=product.text;
obj.Price=price.text;
obj.Qty=1;

/*** Add the object to the list ***/
orderColl.addItemAt(obj, 0);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE,
calculateSum);
}

public function deleteOrder():void
{

/*** Remove the item from the array collection ***/
orderColl.removeItemAt(products.selectedIndex);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE,
calculateSum);
}

public function changeQty(event:Event):void
{
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE,
calculateSum);
}

public function calculateSum(event:CollectionEvent):void
{
var amt:Number=0;
var n:int=orderColl.length;
for (var i:int=0; i  n; i++)
{
var cartEntry:Object=orderColl.getItemAt(i);
amt+=cartEntry.Qty * cartEntry.Price;
}
sum.text=usdFormatter.format(amt.toString());
}
]]
/mx:Script

mx:DefaultTileListEffect id=dtle0
  fadeOutDuration=300
  fadeInDuration=300
  moveDuration=650
  color=0xff/

mx:CurrencyFormatter id=usdFormatter
  precision=0
  currencySymbol=$
  alignSymbol=left/

mx:Canvas width=500
   height=300
mx:Label x=10
  y=10
  text=Milk Chocolate
  id=product/
mx:Label x=10
  y=36
  text=10
  id=price/
mx:Button x=10
   y=62
   label=submit
   click=addProduct()/
mx:Button x=10
   y=92
   label=Change State
   click=currentState='dark'/
mx:Button x=10
   y=122
   label=Drinking Chocolate
   click=currentState='spread'/
/mx:Canvas

mx:VBox width=340
 height=340
 horizontalAlign=center
 verticalAlign=middle

ns2:transparentList id=products
 width=300
 height=300
 dataProvider={orderColl}
 borderStyle=none
 itemsChangeEffect={dtle0}
ns2:itemRenderer
mx:Component
mx:HBox width=100%
 height=100%
 horizontalAlign=center
 verticalAlign=middle
 horizontalGap=0
mx:Image source=assets/trashcan.gif
  click=outerDocument.deleteOrder()/
mx:Label text={data.Product}
  styleName=orderLabel/
mx:Spacer width=100%/
mx:Label id=price
  text=${Number(qty.text)* Number(oldPrice.text)}
  styleName=orderLabel/
mx:TextInput id=qty
  width=30
  height=20
  text={data.Qty}
  change=outerDocument.changeQty(event)
  styleName=qtyInput/

mx:Label id=oldPrice
  text={data.Price}
  visible=false
  includeInLayout=false/
/mx:HBox
/mx:Component
/ns2:itemRenderer
/ns2:transparentList
mx:HBox
mx:Label text=Total:
  color=#FF
  fontWeight=bold/
mx:Label id=sum/
/mx:HBox
/mx:VBox

/mx:Application

 
   




-- 
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui





Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-11 Thread Alex Harui
I didn’t see any code that actually changes the quantity in the data object.  
The TextInput gets its initial value from the data via databinding, and the 
change event calls something, but:


 1.  you don’t want to update on change, but rather on focusOut or itemEditEnd 
(otherwise, as you type in “21” it will recompute for “2” and then “21”)
 2.  You need to actually write to the dataObject.  Probably no need to 
addEventListener again
 3.  Since you are using plain objects, you will need to call itemUpdated on 
the orderColl

-Alex


On 12/10/11 5:42 AM, ZIONIST stinas...@yahoo.com wrote:






I have modified the app using Alex Harui's solution and it works when i add a 
product to the cart and also updates the total when i delete an item from the 
cart. But when i edit the quantity in the text input, the total does not get 
updated. Below is the modified version. Anything am missing?

?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=horizontal
xmlns:ns1=*
xmlns:ns2=as_logic.*
mx:states
mx:State name=dark
mx:SetProperty target={product}
name=text
value=Dark Chocolate/
mx:SetProperty target={price}
name=text
value=50/
/mx:State
mx:State name=spread
mx:SetProperty target={product}
name=text
value=Drinking Chocolate/
mx:SetProperty target={price}
name=text
value=100/
/mx:State
/mx:states

mx:Script
![CDATA[
import mx.events.FlexEvent;
import mx.controls.listClasses.ListData;
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;

[Bindable]
private var orderColl:ArrayCollection=new ArrayCollection();

private function addProduct():void
{

/*** Create an object to hold the data ***/
var obj:Object=new Object();

/*** Assign the variables to it ***/
obj.Product=product.text;
obj.Price=price.text;
obj.Qty=1;

/*** Add the object to the list ***/
orderColl.addItemAt(obj, 0);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);
}

public function deleteOrder():void
{

/*** Remove the item from the array collection ***/
orderColl.removeItemAt(products.selectedIndex);
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);
}

public function changeQty(event:Event):void
{
orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);
}

public function calculateSum(event:CollectionEvent):void
{
var amt:Number=0;
var n:int=orderColl.length;
for (var i:int=0; i  n; i++)
{
var cartEntry:Object=orderColl.getItemAt(i);
amt+=cartEntry.Qty * cartEntry.Price;
}
sum.text=usdFormatter.format(amt.toString());
}
]]
/mx:Script

mx:DefaultTileListEffect id=dtle0
  fadeOutDuration=300
  fadeInDuration=300
  moveDuration=650
  color=0xff/

mx:CurrencyFormatter id=usdFormatter
  precision=0
  currencySymbol=$
  alignSymbol=left/

mx:Canvas width=500
   height=300
mx:Label x=10
  y=10
  text=Milk Chocolate
  id=product/
mx:Label x=10
  y=36
  text=10
  id=price/
mx:Button x=10
   y=62
   label=submit
   click=addProduct()/
mx:Button x=10
   y=92
   label=Change State
   click=currentState='dark'/
mx:Button x=10
   y=122
   label=Drinking Chocolate
   click=currentState='spread'/
/mx:Canvas

mx:VBox width=340
 height=340
 horizontalAlign=center
 verticalAlign=middle

ns2:transparentList id=products
 width=300
 height=300
 dataProvider={orderColl}
 borderStyle=none
 itemsChangeEffect={dtle0}
ns2:itemRenderer
mx:Component
mx:HBox width=100%
 height=100%
 horizontalAlign=center
 verticalAlign=middle
 horizontalGap=0
mx:Image source=assets/trashcan.gif
  click=outerDocument.deleteOrder()/
mx:Label text={data.Product}
  styleName=orderLabel/
mx:Spacer width=100%/
mx:Label id=price
  text=${Number(qty.text)* Number(oldPrice.text)}
  styleName=orderLabel/
mx:TextInput id=qty
  width=30
  height=20
  text={data.Qty}
  change=outerDocument.changeQty(event)
  styleName=qtyInput/

mx:Label id=oldPrice
  text={data.Price}
  visible=false
  includeInLayout=false/
/mx:HBox
/mx:Component
/ns2:itemRenderer
/ns2:transparentList
mx:HBox
mx:Label text=Total:
  color=#FF
  fontWeight=bold/
mx:Label id=sum/
/mx:HBox
/mx:VBox

/mx:Application






--
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui


Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-09 Thread Csomák Gábor
public function *deleteOrder*():void{
orderColl.removeItemAt(products.selectedIndex);
*init()*
}

private function *addProduct*():void
{

//Create an object to hold the data
var obj:Object=new Object();
//Assign the variables to it
obj.Product=product.text;
obj.Price=price.text;
//Add the object to the list
orderColl.addItemAt(obj, 0);
*init()*
}
On Fri, Dec 9, 2011 at 4:52 PM, ZIONIST stinas...@yahoo.com wrote:



 Hi Guys, i have finally got the total to update when new items are added
 to the cart. One thing that i have failed to do is to get the total to
 update when quantity is changed and when a product is removed from the
 cart(list component). Any help on this? Here is the latest code that only
 gets the total to update when a new product is added.


 App

 ?xml version=1.0 encoding=utf-8?
 mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
 layout=horizontal
 xmlns:ns1=*
 xmlns:ns2=as_logic.*

 mx:states
 mx:State name=dark
 mx:SetProperty target={product}
 name=text
 value=Dark Chocolate/
 mx:SetProperty target={price}
 name=text
 value=50/
 /mx:State
 mx:State name=spread
 mx:SetProperty target={product}
 name=text
 value=Drinking Chocolate/
 mx:SetProperty target={price}
 name=text
 value=100/
 /mx:State
 /mx:states

 mx:Script
 ![CDATA[
 import mx.controls.listClasses.ListData;
 import mx.collections.ArrayCollection;

 [Bindable]
 private var orderColl:ArrayCollection=new ArrayCollection();

 private function addProduct():void
 {

 //Create an object to hold the data
 var obj:Object=new Object();
 //Assign the variables to it
 obj.Product=product.text;
 obj.Price=price.text;
 //Add the object to the list
 orderColl.addItemAt(obj, 0);

 }

 public function deleteOrder():void

 {

 //Remove the item from the array collection
 orderColl.removeItemAt(products.selectedIndex);

 }

 public function init():void
 {
 var total:Number=0;
 for (var i:String in orderColl)
 {
 total+=Number(orderColl[i].Price);
 }
 sum.text=usdFormatter.format(total.toString());
 }
 ]]
 /mx:Script

 mx:DefaultTileListEffect id=dtle0
 fadeOutDuration=300
 fadeInDuration=300
 moveDuration=650
 color=0xff/

 mx:CurrencyFormatter id=usdFormatter
 precision=0
 currencySymbol=$
 alignSymbol=left/


 mx:Canvas width=500
 height=300
 mx:Label x=10
 y=10
 text=Milk Chocolate
 id=product/
 mx:Label x=10
 y=36
 text=10
 id=price/
 mx:Button x=10
 y=62
 label=submit
 click=addProduct();init()/
 mx:Button x=10
 y=92
 label=Change State
 click=currentState='dark'/
 mx:Button x=10
 y=122
 label=Drinking Chocolate
 click=currentState='spread'/
 /mx:Canvas

 mx:VBox width=340
 height=340
 horizontalAlign=center
 verticalAlign=middle

 ns2:transparentList id=products

 width=300
 height=300
 dataProvider={orderColl}
 borderStyle=none
 itemsChangeEffect={dtle0}
 ns2:itemRenderer
 mx:Component
 mx:HBox width=100%

 height=100%
 horizontalAlign=center
 verticalAlign=middle
 horizontalGap=0
 mx:Image source=assets/trashcan.gif
 click=outerDocument.deleteOrder()/

 mx:Label text={data.Product}
 styleName=orderLabel/
 mx:Spacer width=100%/
 mx:Label id=price
 text=${Number(qty.text)* Number(oldPrice.text)}
 styleName=orderLabel/
 mx:TextInput id=qty
 width=30
 height=20
 text=1
 styleName=qtyInput/

 mx:Label id=oldPrice
 text={data.Price}
 visible=false
 includeInLayout=false/
 /mx:HBox
 /mx:Component
 /ns2:itemRenderer
 /ns2:transparentList

 mx:HBox
 mx:Label text=Total:
 color=#FF
 fontWeight=bold/
 mx:Label id=sum/

 /mx:HBox
 /mx:VBox

 /mx:Application

  



Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-09 Thread claudiu ursica
You know there is an working example in this book pretty close to your, is flex 
4 though but you will get the picture.


http://www.amazon.com/Adobe-Flex-Training-Michael-Labriola/dp/0321660501


C




 From: ZIONIST stinas...@yahoo.com
To: flexcoders@yahoogroups.com 
Sent: Friday, December 9, 2011 4:52 PM
Subject: [flexcoders] Re: getting the total of values of an array collection 
that is updated manually
 

  
Hi Guys, i have finally got the total to update when new items are added to the 
cart. One thing that i have failed to do is to get the total to update when 
quantity is changed and when a product is removed from the cart(list 
component). Any help on this? Here is the latest code that only gets the total 
to update when a new product is added.

App

?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=horizontal
xmlns:ns1=*
xmlns:ns2=as_logic.*
mx:states
mx:State name=dark
mx:SetProperty target={product}
name=text
value=Dark Chocolate/
mx:SetProperty target={price}
name=text
value=50/
/mx:State
mx:State name=spread
mx:SetProperty target={product}
name=text
value=Drinking Chocolate/
mx:SetProperty target={price}
name=text
value=100/
/mx:State
/mx:states

mx:Script
![CDATA[
import mx.controls.listClasses.ListData;
import mx.collections.ArrayCollection;

[Bindable]
private var orderColl:ArrayCollection=new ArrayCollection();

private function addProduct():void
{

//Create an object to hold the data
var obj:Object=new Object();
//Assign the variables to it
obj.Product=product.text;
obj.Price=price.text;
//Add the object to the list
orderColl.addItemAt(obj, 0);

}

public function deleteOrder():void
{

//Remove the item from the array collection
orderColl.removeItemAt(products.selectedIndex);

} 

public function init():void
{
var total:Number=0;
for (var i:String in orderColl)
{
total+=Number(orderColl[i].Price);
}
sum.text=usdFormatter.format(total.toString());
}
]]
/mx:Script

mx:DefaultTileListEffect id=dtle0
fadeOutDuration=300
fadeInDuration=300
moveDuration=650
color=0xff/

mx:CurrencyFormatter id=usdFormatter
precision=0
currencySymbol=$
alignSymbol=left/

mx:Canvas width=500
height=300
mx:Label x=10
y=10
text=Milk Chocolate
id=product/
mx:Label x=10
y=36
text=10
id=price/
mx:Button x=10
y=62
label=submit
click=addProduct();init()/
mx:Button x=10
y=92
label=Change State
click=currentState='dark'/
mx:Button x=10
y=122
label=Drinking Chocolate
click=currentState='spread'/
/mx:Canvas

mx:VBox width=340
height=340
horizontalAlign=center
verticalAlign=middle

ns2:transparentList id=products
width=300
height=300
dataProvider={orderColl}
borderStyle=none
itemsChangeEffect={dtle0}
ns2:itemRenderer
mx:Component
mx:HBox width=100%
height=100%
horizontalAlign=center
verticalAlign=middle
horizontalGap=0
mx:Image source=assets/trashcan.gif
click=outerDocument.deleteOrder()/
mx:Label text={data.Product}
styleName=orderLabel/
mx:Spacer width=100%/
mx:Label id=price
text=${Number(qty.text)* Number(oldPrice.text)}
styleName=orderLabel/
mx:TextInput id=qty
width=30
height=20
text=1
styleName=qtyInput/

mx:Label id=oldPrice
text={data.Price}
visible=false
includeInLayout=false/
/mx:HBox
/mx:Component
/ns2:itemRenderer
/ns2:transparentList
mx:HBox
mx:Label text=Total:
color=#FF
fontWeight=bold/
mx:Label id=sum/
/mx:HBox
/mx:VBox

/mx:Application


 

Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-09 Thread Alex Harui
I haven’t been following this thread, and without looking at the book:

If you assume there won’t be more than 100 things in the cart, it is just as 
easy to add them all up every time there is a change.  Then some setup code 
should call:

orderColl.addEventListener(CollectionEvent.COLLECTION_CHANGE, calculateSum);

And calculate sum would do something like:

private function calculateSum(event:CollectionEvent):void
{
var amt:Number = 0;
var n:int = orderColl.length;
for (var i:int = 0; I  n; i++)
{
var cartEntry:Object = orderColl.getItemAt(i);
amt += cartEntry.quantity * cartEntry.price;
}
sum.text = amt.toPrecision(2);
}

On 12/9/11 2:09 PM, claudiu ursica the_bran...@yahoo.com wrote:






You know there is an working example in this book pretty close to your, is flex 
4 though but you will get the picture.

http://www.amazon.com/Adobe-Flex-Training-Michael-Labriola/dp/0321660501

C





 From: ZIONIST stinas...@yahoo.com
 To: flexcoders@yahoogroups.com
 Sent: Friday, December 9, 2011 4:52 PM
 Subject: [flexcoders] Re: getting the total of values of an array collection 
that is updated manually



Hi Guys, i have finally got the total to update when new items are added to the 
cart. One thing that i have failed to do is to get the total to update when 
quantity is changed and when a product is removed from the cart(list 
component). Any help on this? Here is the latest code that only gets the total 
to update when a new product is added.

App

?xml version=1.0 encoding=utf-8?
mx:Application xmlns:mx=http://www.adobe.com/2006/mxml;
layout=horizontal
xmlns:ns1=*
xmlns:ns2=as_logic.*
mx:states
mx:State name=dark
mx:SetProperty target={product}
name=text
value=Dark Chocolate/
mx:SetProperty target={price}
name=text
value=50/
/mx:State
mx:State name=spread
mx:SetProperty target={product}
name=text
value=Drinking Chocolate/
mx:SetProperty target={price}
name=text
value=100/
/mx:State
/mx:states

mx:Script
![CDATA[
import mx.controls.listClasses.ListData;
import mx.collections.ArrayCollection;

[Bindable]
private var orderColl:ArrayCollection=new ArrayCollection();

private function addProduct():void
{

//Create an object to hold the data
var obj:Object=new Object();
//Assign the variables to it
obj.Product=product.text;
obj.Price=price.text;
//Add the object to the list
orderColl.addItemAt(obj, 0);

}

public function deleteOrder():void
{

//Remove the item from the array collection
orderColl.removeItemAt(products.selectedIndex);

}

public function init():void
{
var total:Number=0;
for (var i:String in orderColl)
{
total+=Number(orderColl[i].Price);
}
sum.text=usdFormatter.format(total.toString());
}
]]
/mx:Script

mx:DefaultTileListEffect id=dtle0
  fadeOutDuration=300
  fadeInDuration=300
  moveDuration=650
  color=0xff/

mx:CurrencyFormatter id=usdFormatter
  precision=0
  currencySymbol=$
  alignSymbol=left/

mx:Canvas width=500
   height=300
mx:Label x=10
  y=10
  text=Milk Chocolate
  id=product/
mx:Label x=10
  y=36
  text=10
  id=price/
mx:Button x=10
   y=62
   label=submit
   click=addProduct();init()/
mx:Button x=10
   y=92
   label=Change State
   click=currentState='dark'/
mx:Button x=10
   y=122
   label=Drinking Chocolate
   click=currentState='spread'/
/mx:Canvas

mx:VBox width=340
 height=340
 horizontalAlign=center
 verticalAlign=middle

ns2:transparentList id=products
 width=300
 height=300
 dataProvider={orderColl}
 borderStyle=none
 itemsChangeEffect={dtle0}
ns2:itemRenderer
mx:Component
mx:HBox width=100%
 height=100%
 horizontalAlign=center
 verticalAlign=middle
 horizontalGap=0
mx:Image source=assets/trashcan.gif
  click=outerDocument.deleteOrder()/
mx:Label text={data.Product}
  styleName=orderLabel/
mx:Spacer width=100%/
mx:Label id=price
  text=${Number(qty.text)* Number(oldPrice.text)}
  styleName=orderLabel/
mx:TextInput id=qty
  width=30
  height=20
  text=1
  styleName=qtyInput/

mx:Label id=oldPrice
  text={data.Price}
  visible=false
  includeInLayout=false/
/mx:HBox
/mx:Component
/ns2:itemRenderer
/ns2:transparentList
mx:HBox
mx:Label text=Total:
  color=#FF
  fontWeight=bold/
mx:Label id=sum/
/mx:HBox
/mx:VBox

/mx:Application













--
Alex Harui
Flex SDK Team
Adobe System, Inc.
http://blogs.adobe.com/aharui


Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-06 Thread Csomák Gábor
private function updateTotal(){
var summ:Number=0
for(i:String in orderColl){
 summ+=orderColl[i]
}
total=summ
sum.text=total
}

and call this function at the end of init, addProduct, deleteOrder
functions.

On Tue, Dec 6, 2011 at 4:19 AM, ZIONIST stinas...@yahoo.com wrote:



 Tried that but it doesn't work. What am trying to do is to get the total
 price updated as new objects are added to the arraycollection that
 populates the list and also when the qty is changed the total updates too.
 could some one please help me.

 --- In flexcoders@yahoogroups.com, Csomák Gábor csomakk@... wrote:
 
  if i get your problem right, this will help. however, i didn't match the
  name of the arraycollection to yours
 
  var sum:Number=0
  for(i:String in arraycollectionvar){
  sum+=arraycollectionvar[i];
  }
  //here is the sum you need.
 
  On Mon, Dec 5, 2011 at 3:57 PM, ZIONIST stinasius@... wrote:
 
  
  
   anyone with an example similar to wht am trying to do?
  
  
  
 


  



Re: [flexcoders] Re: getting the total of values of an array collection that is updated manually

2011-12-05 Thread Csomák Gábor
if i get your problem right, this will help. however, i didn't match the
name of the arraycollection to yours

var sum:Number=0
for(i:String in arraycollectionvar){
sum+=arraycollectionvar[i];
}
//here is the sum you need.

On Mon, Dec 5, 2011 at 3:57 PM, ZIONIST stinas...@yahoo.com wrote:



 anyone with an example similar to wht am trying to do?