I'm not sure currentID is replaced in slash syntax, so :
var pattern:RegExp = new RegExp('^'+currentID);
should work.thomas --- http://www.web-attitude.fr/ msn : [email protected] softphone : sip:[email protected] <sip%[email protected]> téléphone portable : +33601 822 056 2009/5/3 fumeng5 <[email protected]> > > > Wow, works like a charm; big thanks. > > And if I want to test it against IDs with 3 characters I'm thinking that > RegExes are the way to go. Here's what I've got that isn't quite working. > > var currentID:String = item.id.toString(); > var pattern:RegExp = /^<currentID>/; > > if ( pattern.test( activeID ) ) > > return true; > else > return false; > > I'm thinking my pattern will test for the currentID (no matter how many > characters) at the beginning of the activeID. But it's not making any > matches. Am I that far off? > > --- In [email protected] <flexcoders%40yahoogroups.com>, "Tracy > Spratt" <tr...@...> wrote: > > > > 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] <flexcoders%40yahoogroups.com> [mailto: > [email protected] <flexcoders%40yahoogroups.com>] On > > Behalf Of fumeng5 > > Sent: Saturday, May 02, 2009 5:19 PM > > To: [email protected] <flexcoders%40yahoogroups.com> > > 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<flexcoders%2540yahoogroups.com>> > ups.com, > > "Tracy Spratt" <tracy@> 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<flexcoders%2540yahoogroups.com>> > ups.com > > [mailto:flexcod...@yahoogro > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > ups.com] > > On > > > Behalf Of fumeng5 > > > Sent: Saturday, May 02, 2009 11:58 AM > > > To: flexcod...@yahoogro > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.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<flexcoders%2540yahoogroups.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<flexcoders%2540yahoogroups.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<flexcoders%2540yahoogroups.com> > > > > ups.com > > > [mailto:flexcod...@yahoogro > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.com>> > ups.com] > > > On > > > > > Behalf Of fumeng5 > > > > > Sent: Friday, May 01, 2009 3:15 PM > > > > > To: flexcod...@yahoogro > > > > > <mailto:flexcoders%40yahoogroups.com<flexcoders%2540yahoogroups.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. > > > > > > > > > > > > > > > > >

