Sorry I need RegEx once or twice a year and don't know the syntax enough to help.
Tracy Spratt, Lariat Services, development services available _____ From: [email protected] [mailto:[email protected]] On Behalf Of fumeng5 Sent: Saturday, May 02, 2009 11:01 PM To: [email protected] Subject: [flexcoders] Re: Sorting VBox elements based on an XML ID 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 flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.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: 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 5:19 PM > To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.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> 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> 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. > > > > > > > > > >

