Assuming strings:

If (currentID.charAt(0) == activeID)  {                       //if the first
character matches the activeId

            return true;

}

Else  {

            return false;

}

 

 

If the ids are numbers then the logic will be different.

 

Tracy Spratt,

Lariat Services, development services available

  _____  

From: [email protected] [mailto:[email protected]] On
Behalf Of fumeng5
Sent: Saturday, May 02, 2009 5:19 PM
To: [email protected]
Subject: [flexcoders] Re: Sorting VBox elements based on an XML ID

 






I'm creating an ArrayCollection based on the XML loaded in. I iterate over
that and build the UI. I have a simple conditional that decides whether to
run one block of code and create a button or run another and create a radio
button. I think that part is fine as it is right now. 

I've never worked with a Filter function before but what I'm understanding
is that I can get the ID for the button clicked without a problem. I've
tested that and it works. I just don't know how to compare that ID with all
the other IDs and return only the ones I want.

This is what I have so far for the Filter function:

private function stateFilterFunc(item:Object):Boolean {
var currentID:String = item.id; // The ID of the current item in the
DataProvider
var activeID:String = buttonID; // The ID of the button clicked on

if ( (activeID< currentID) )
return true;
else
return false;
}

So, how do I build the conditional that'll allow me to, in the case where ID
= 1, filter to show IDs that have 1, 11, 12, 13, etc...

And the IDs are 1 and 2 characters. 

Thank you for your help.

Matt

--- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
"Tracy Spratt" <tr...@...> wrote:
>
> In that case I would create a component that had two states, one radio and
> one button, and repeat that, passing in the entire currentItem in a setter
> function, and set the state based on the passed in data.
> 
> 
> 
> On the filter, are you asking for an e4x expression?
> 
> 
> 
> One tip is that in an e4x expression, you can use a function in place of
> in-line expressions, pass a ref to the current node into the function, do
> whatever logic and return a Boolean if the node should be included.
> 
> 
> 
> Are all the ids 1 or 2 chars only?
> 
> 
> 
> Tracy Spratt,
> 
> Lariat Services, development services available
> 
> _____ 
> 
> From: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com
[mailto:flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com]
On
> Behalf Of fumeng5
> Sent: Saturday, May 02, 2009 11:58 AM
> To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com
> Subject: [flexcoders] Re: Sorting VBox elements based on an XML ID
> 
> 
> 
> 
> 
> 
> 
> 
> I've got it almost working now. However, I'm trying to write a Filter
> function. This function will compare an ID and return a subset of IDs.
> 
> For example, an ID of 1 will return IDs with 11, 12, 13; an ID of 2 will
> return IDs with 21, 22, 23, etc...
> 
> How do I compare IDs as strings to return what I want? Any tip in the
right
> direction is greatly appreciated. 
> 
> --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
> "fumeng5" <fumeng5@> wrote:
> >
> > Hmmm...I didn't know about the Repeater component, that's quite useful.
> However, I should have explained that I'm not working with all the same
> components. The XML is more complex than I posted. 
> > 
> > Here's what it really looks like:
> > 
> > <Class> 
> > <Class_ID>1</Class_ID>
> > <Class_Name>First Class</Class_Name>
> > <Class_Amount></Class_Amount>
> > </Class>
> > 
> > <Class> 
> > <Class_ID>2</Class_ID>
> > <Class_Name>Second Class</Class_Name>
> > <Class_Amount>1.31</Class_Amount>
> > </Class>
> > 
> > <Class> 
> > <Class_ID>11</Class_ID>
> > <Class_Name>Subclass of first class</Class_Name>
> > </Class>
> > 
> > So my conditional for building the UI goes like this; if Class_Amount is
> empty, this element has a subclass, i.e. 
> > 
> > for (var i:int=0; i<classData.length; i++){
> > 
> > if(classDataNode.Class_Amount == ''){
> > var myButton:Button = new Button();
> > myButton.label = classData[i].Class_Name;
> > addChild( myButton );
> > }else{
> > var myRadioButton:RadioButton = new RadioButton();
> > myRadioButton.label = classData[i].Class_Name;
> > addChild( myRadioButton );
> > }
> > }
> > 
> > I guess that with this scenario I'm not able to use the Repeater
compnent
> and will be forced to create a custom sorting of VBox child elements. 
> > 
> > Is that right? 
> > 
> > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com,
> "Tracy Spratt" <tracy@> wrote:
> > >
> > > Use Repeater, and then just sort the dataProvider.
> > > 
> > > 
> > > 
> > > Tracy Spratt,
> > > 
> > > Lariat Services, development services available
> > > 
> > > _____ 
> > > 
> > > From: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com
> [mailto:flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com]
> On
> > > Behalf Of fumeng5
> > > Sent: Friday, May 01, 2009 3:15 PM
> > > To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com
> > > Subject: [flexcoders] Sorting VBox elements based on an XML ID
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Hi,
> > > 
> > > I've got something that I'm trying to troubleshoot and I can't figure
it
> > > out. I have an XML file full of elements, i.e.
> > > 
> > > <Class> 
> > > <Class_ID>1</Class_ID>
> > > <Class_Name>First Class</Class_Name>
> > > </Class>
> > > 
> > > <Class> 
> > > <Class_ID>2</Class_ID>
> > > <Class_Name>Second Class</Class_Name>
> > > </Class>
> > > 
> > > <Class> 
> > > <Class_ID>11</Class_ID>
> > > <Class_Name>Subclass of first class</Class_Name>
> > > </Class>
> > > 
> > > <Class> 
> > > <Class_ID>21</Class_ID>
> > > <Class_Name>Subclass of second class</Class_Name>
> > > </Class>
> > > 
> > > ...
> > > 
> > > Some classes have subclasses, i.e. Class ID 1 has a subclass of Class
ID
> 11.
> > > And Class ID 2 has a subclass of Class ID 21. 
> > > 
> > > My XML parsing class creates UI elements based on the XML and adds
them
> to a
> > > VBox, i.e. 
> > > 
> > > private var classXML:XML;
> > > private var classData:XMLList;
> > > 
> > > for (var i:int=0; i<classData.length; i++){
> > > 
> > > var myButton:Button = new Button();
> > > myButton.label = classData[i].Class_Name;
> > > 
> > > addChild( myButton );
> > > }
> > > 
> > > When the XML first loads, the elements will be added to the VBox in
the
> way
> > > they're defined in the XML. 
> > > 
> > > However, I have to add the functionality that if a class is clicked it
> goes
> > > to the top of the VBox and all its subclasses are listed right under
it
> i.e.
> > > Class ID 1 is clicked, it goes to the top with Class ID 11 right under
> it. 
> > > 
> > > This is what I don't know how to do. What is the best way to resort
> children
> > > in a VBox based on ID? 
> > > 
> > > Any tips are very much appreciated. 
> > > 
> > > Thank you.
> > >
> >
>



Reply via email to