SOLVED: I was using the right RegEx expression but on the wrong elements. I had
it backwards.
The solution is this:
var pattern:RegExp = new RegExp('^' + activeID + ".*");
pattern.test( currentID )
--- In [email protected], "fumeng5" <fume...@...> wrote:
>
> Thank you. That expression is bringing back only itself, i.e. the element in
> the DP with the ID I'm testing against.
>
> I'm hoping to have an element with an ID of '3', to bring back '31', '32',
> etc...
>
> I've adjusted the expression thinking it will do the trick but it doesn't
> seem to cut it:
>
> var pattern:RegExp = new RegExp(currentID + "\d*");
>
> Doesn't this say as long as the test string has the currentID at the
> beginning plus any digits after it???
>
> and then i test the string like this:
>
> activeID.match( pattern )
>
> thanks for your help.
>
> matt
> --- In [email protected], thomas parquier <mailinglists@> wrote:
> >
> > 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 : thomas.parquier@
> > softphone : sip:webattitude@ <sip%3Awebattitude@>
> > téléphone portable : +33601 822 056
> >
> >
> > 2009/5/3 fumeng5 <fumeng5@>
> >
> > >
> > >
> > > 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" <tracy@> 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.
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > >
> > >
> >
>