Matt:

Thanks for fixing the bug request.

Yes, all nulls seem to sort high, but that means if you click the 
heading twice it always fails because the nulls sort to the top, and 
the sort algorithm fails on the second pass.

One thing that could be done as a workaround, is to have the routine 
that determines which type of sorting to do look down the column 
until it finds the first (or first 2) non-null fields and use that 
info to determine the type of sorting to do. If it finds all nulls it 
doesn't need to sort anything.

Irrespective of fixing the bug, adding a property/attribute to define 
the internal comparator would be beneficial IMltHO. 


--- In flexcoders@yahoogroups.com, "Matt Chotin" <[EMAIL PROTECTED]> wrote:
>
> And I guess let me add a few other things.
> 
>  
> 
> 1)      With regard to the bug itself, I'm guessing that the issue 
is
> that first item in the collection to be sorted has the null value.  
This
> is causing an error because we can't determine what kind of 
comparator
> to use by default.  If your first item hadn't been null you 
wouldn't see
> the issue. This means that you should specify the comparator you 
want to
> use, but one could argue that perhaps more information could be 
added to
> the DataGridColumn to provide an option for some of the provided
> comparators.  
> 
> 2)      I can't remember in our code which way null compares to an
> actual value, but they will group together.
> 
> 3)      There will of course be a process for code to get 
contributed to
> the SDK.  We'll have more info on this as we get closer to release, 
but
> in general it will involve having a bug filed in the bugbase, votes
> indicating the community's interest in having it fixed along with 
SDK
> management agreeing that the contribution is useful, and then the
> committers (SDK engineering) approval of the fix.
> 
>  
> 
> Matt
> 
>  
> 
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On
> Behalf Of Matt Chotin
> Sent: Sunday, December 02, 2007 3:57 PM
> To: flexcoders@yahoogroups.com
> Subject: RE: [flexcoders] Re: If Flex is open source, how do we go 
about
> changing the language?
> 
>  
> 
> I've moved this bug to https://bugs.adobe.com/jira/browse/SDK-13808
> since it is not related to the ActionScript compiler, it's only in 
the
> Flex classes.
> 
>  
> 
> Matt
> 
>  
> 
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On
> Behalf Of aceoohay
> Sent: Saturday, December 01, 2007 9:14 PM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: If Flex is open source, how do we go about
> changing the language?
> 
>  
> 
> Gordon:
> 
> Per your request I have filed a bug report. It can be found here;
> 
> https://bugs.adobe.com/jira/browse/ASC-3042
> 
> Paul
> --- In flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com>
> , "aceoohay" <pauls@> wrote:
> >
> > Gordon, et al:
> > 
> > Here is a simple test that will show the problem;
> > 
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
> > layout="absolute"
> > creationComplete="initApp()">
> > <mx:Script>
> > <![CDATA[
> > import mx.collections.ArrayCollection;
> > import mx.controls.Alert;
> > [Bindable] public var acData:ArrayCollection = new 
> > ArrayCollection;
> > private function initApp():void
> > {
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:1,col2:new Date
> > (),col3:true,col4:"A"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:2,col2:new Date
> > (),col3:null,col4:"B"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:3,col2:new Date
> > (),col3:true,col4:"C"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:4,col2:new Date
> > (),col3:null,col4:"D"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:5,col2:new Date
> > (),col3:true,col4:"E"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > acData.addItem({col1:6,col2:new Date
> > (),col3:false,col4:"F"});
> > acData.addItem
> > ({col1:null,col2:null,col3:null,col4:null});
> > dgSortTest.dataProvider = acData;
> > }
> > ]]>
> > </mx:Script>
> > 
> > <mx:DataGrid id="dgSortTest" x="26" y="10">
> > <mx:columns>
> > <mx:DataGridColumn headerText="Column 1" 
> > dataField="col1"/>
> > <mx:DataGridColumn headerText="Column 2" 
> > dataField="col2"/>
> > <mx:DataGridColumn headerText="Column 3" 
> > dataField="col3"/>
> > <mx:DataGridColumn headerText="Column 4" 
> > dataField="col4"/>
> > </mx:columns>
> > </mx:DataGrid>
> > 
> > </mx:Application>
> > 
> > --- In flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com> , "Gordon Smith" <gosmith@> 
wrote:
> > >
> > > Your use case seem very reasonable to me. In this particular 
case 
> I
> > > disagree with my esteemed colleague Alex (who sits across from 
> > me)... I
> > > think our default sorting routines should handle null values. 
So 
> > please
> > > file this as a bug at http://bugs.adobe.com/flex and feel free 
to
> > > mention that I consider it a bug.
> > > 
> > > However, I agree with Alex that it probably will not get fixed 
in 
> > time
> > > for the Flex 3 release, as the bar is currently extremely high 
for
> > > making changes at this point. We've got to stabilize the 
release 
> > and get
> > > it out! So you'll need to use a workaround for now.
> > > 
> > > Gordon Smith
> > > Adobe Flex SDK Team
> > > 
> > > ________________________________
> > > 
> > > From: flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  
> > [mailto:flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com> ] On
> > > Behalf Of aceoohay
> > > Sent: Saturday, December 01, 2007 2:38 PM
> > > To: flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com>
> 
> > > Subject: [flexcoders] Re: If Flex is open source, how do we go 
> about
> > > changing the language?
> > > 
> > > 
> > > 
> > > Gordon:
> > > 
> > > This thread was not intended as a technical thread, which is 
why 
> I 
> > > didn't include the details about the problem. I documented the 
> > > problem in the following post;
> > > 
> > > http://tech.groups.yahoo.com/group/flexcoders/message/95131
> > > <http://tech.groups.yahoo.com/group/flexcoders/message/95131> 
> > > 
> > > The only responses I got seemed to indicate that the behavior 
was 
> > by 
> > > design, as opposed to a bug.
> > > 
> > > Yes, it does throw a runtime error.
> > > 
> > > I just signed up over at the Adobe bugs site.
> > > 
> > > Paul
> > > 
> > > --- In flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > , "Gordon Smith" <gosmith@> wrote:
> > > >
> > > > > it gets confused when there are nulls in date, numeric, or 
> > boolean
> > > > fields
> > > > 
> > > > > this is by design
> > > > 
> > > > I doubt that we designed this code to intentionally get 
> > > confused. : ) It
> > > > sounds like we're simply not properly handling null field 
> values 
> > > when
> > > > sorting.
> > > > 
> > > > What do you mean by "get confused"? Does it throw an RTE? Do 
> the 
> > > nulls
> > > > cause incorrect sorting of the non-null values? Do the nulls 
> not 
> > > sort
> > > > together? How kind of sorting behavior do you think should 
> occur 
> > > when
> > > > there are null values? Should they sort before or after other 
> > > values?
> > > > Please file the bug at htp://bugs.adobe.com/flex.
> > > <htp://bugs.adobe.com/flex.> 
> > > > 
> > > > BTW, the Flex SDK is not yet open-source, but it will be soon.
> > > > 
> > > > Gordon Smith
> > > > Adobe Flex SDK Team
> > > > 
> > > > ________________________________
> > > > 
> > > > From: flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > 
> > > [mailto:flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com>
> > > ] On
> > > > Behalf Of aceoohay
> > > > Sent: Friday, November 30, 2007 9:33 PM
> > > > To: flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> > 40yahoogroups.com> 
> > > > Subject: [flexcoders] If Flex is open source, how do we go 
about
> > > > changing the language?
> > > > 
> > > > 
> > > > 
> > > > I just ran across what I consider a significant deficiency in 
> > Flex. 
> > > > To correct this problem would require an addition of two 
> > attributes 
> > > > to the mx:DataGridColumn class.
> > > > 
> > > > I could make a change to my version of the language, or 
perhaps 
> I 
> > > > could create an inherited class. However, I feel strongly 
that 
> > the 
> > > > problem is so fundamental that it should be changed in the 
> > > language. 
> > > > How do I go about making this happen?
> > > > 
> > > > The problem is this;
> > > > 
> > > > It appears that when sorting a DataGrid by clicking a column 
> that 
> > > > Flex currently does its best to determine the data type and 
> sorts 
> > > > based on that data type. The problem is that it gets confused 
> > when 
> > > > there are nulls in date, numeric, or boolean fields. When it 
> gets 
> > > > confused it ralph's on its shoes (blows up). Based on my 
> > research, 
> > > > including reading a bit of the file sortField.as, this is by 
> > design.
> > > > 
> > > > There is a way around it but it requires instantiating a 
> compare 
> > > > function for each column that might get a null, and might be 
> one 
> > of 
> > > > non string data types. The workaround is to create a 
function, 
> > and 
> > > > use the "sortCompareFunction" attribute to call a that 
> function. 
> > > > There is even a kludgier workaround to make the function 
> generic 
> > by 
> > > > using the "headerRelease" attribute of the DataGrid to update 
a 
> > > > public variable with the column number.
> > > > 
> > > > Since it seems as though this is an ubiquitous problem, it 
> should 
> > > be 
> > > > solved in the language itself. The best approach that I came 
up 
> > > with 
> > > > is to have two new attributes for the mx:DataGridColumn;
> > > > 
> > > > sortDataType - Basically specify the type of data contained 
in 
> > the 
> > > > column that would be honored by the sort routine irrespective 
> of 
> > > the 
> > > > values contained in the column. Values would be any valid 
data 
> > type.
> > > > 
> > > > sortNullCollatingSequence - This would define whether nulls 
get 
> > > > sorted to the top or bottom of the list. Values would be low -
 
> > > which 
> > > > would indicate that nulls would sort lower than the lowest 
> normal 
> > > > value, and high - which would indicate that nulls would sort 
> > higher 
> > > > than the highest normal value.
> > > > 
> > > > This is one possible solution, there may be better ones but 
in 
> my 
> > > > opinion the current method should be improved. I would like 
to 
> > see 
> > > it 
> > > > implemented quickly as I believe it is a serious problem.
> > > > 
> > > > How do I go about getting this taken seriously, and not 
> assigned 
> > > > an "enhancement request number" and never looked at again?
> > > > 
> > > > Paul
> > > >
> > >
> >
>


Reply via email to