On 6/11/13 3:36 PM, "Justin Mclean" <jus...@classsoftware.com> wrote:
>Hi, > >Given that there's only an issue with the test and it work fine in the >browser and in 99% of cases (an assumption but not an unreasonable one) >the performance is significantly better I think we try and get the test >to pass rather than adding back the validateNow. Well, I'm not sure it is only an issue with the test. Here's a modification of the test case you sent out. All it does is spread out the work of the old init() method into buttons so the renderers have to update after the ADG creation is complete. Start the app, hit the "Grouped Data" button, then the "Expand All" button, then the "rtl" button. Compare with 4.9. I haven't looked into it any further, but this kind of difference in behavior makes me nervous. Thoughts? -Alex <?xml version="1.0" encoding="utf-8"?> <mx:Application layout="vertical" height="700" width="850" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init(event)"> <fx:Script> <![CDATA[ import mx.events.FlexEvent; import mx.collections.*; import mx.controls.NumericStepper; import mx.formatters.CurrencyFormatter; import mx.styles.StyleManager; import mx.controls.advancedDataGridClasses.*; protected function init(event:FlexEvent):void { createColumnGroups(); } [Bindable] private var ac:ArrayCollection = new ArrayCollection(); public var companies:AdvancedDataGridColumn = new AdvancedDataGridColumn("Company"); public var quarters:AdvancedDataGridColumn = new AdvancedDataGridColumn("Quarter"); public var india:AdvancedDataGridColumn = new AdvancedDataGridColumn("India"); public var veeranistan:AdvancedDataGridColumn = new AdvancedDataGridColumn("Veeranistan"); public var pareestan:AdvancedDataGridColumn = new AdvancedDataGridColumn("Pareestan"); public var licenses:AdvancedDataGridColumn = new AdvancedDataGridColumn("Licenses"); public var countries:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup(); public var toplevel:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup(); [Bindable] public var hierarch_data:Array = [ { feature:"ADG", children:[ { feature:"ADG", subFeature:"Multi column sorting", startDate:{day:"Monday", Year:2007}, endDate:"1/07/07" }, { feature:"ADG", subFeature:"Custom rows", startDate:{day:"Monday", Year:2009}, endDate:"01/18/07" }, { feature:"ADG", subFeature:"Tree Views", startDate:{day:"Monday", Year:2006}, endDate:"01/29/07" }, { feature:"ADG", subFeature:"Collections", startDate:{day:"Monday", Year:2004}, endDate:"04/25/07" } ] } ]; [Bindable] private var mydata:ArrayCollection = new ArrayCollection ([ {Company:"Adobe", Quarter:1, India:"2 million", Veeranistan:"2 million", Pareestan:"3 million", Licenses:433764538}, {Company:"IBM", Quarter:1, India:"9 million", Veeranistan:"1 million", Pareestan:"5 million", Licenses:456789002}, {Company:"KaashifSoft", Quarter:1, India:"99 million", Veeranistan:"99 million", Pareestan:"99 million", Licenses:456712340}, {Company:"NisheetSoft", Quarter:1, India:"0 million", Veeranistan:"0 million", Pareestan:"0 million", Licenses:456782313}, {Company:"Microsoft", Quarter:1, India:"6 million", Veeranistan:"5 million", Pareestan:"6 million", Licenses:354216789}, {Company:"Satyam", Quarter:1, India:"1 million", Veeranistan:"3 million", Pareestan:"2 million", Licenses:325146789}, {Company:"Subex", Quarter:1, India:"2 million", Veeranistan:"9 million", Pareestan:"1 million", Licenses:321456978}, {Company:"Infosys", Quarter:1, India:"0.89 million", Veeranistan:"12 million", Pareestan:"4.5 million", Licenses:321475689}, {Company:"MCAfee", Quarter:1, India:"3 million", Veeranistan:"5.98 million", Pareestan:"6.2 million", Licenses:321467589}, {Company:"MPhasis", Quarter:1, India:"2 million", Veeranistan:"1.5 million", Pareestan:"6.7 million", Licenses:123456789}, {Company:"Symphony", Quarter:1, India:"3.4 million", Veeranistan:"6.1 million", Pareestan:"7.8 million", Licenses:341256789}, {Company:"Wipro", Quarter:1, India:"5 million", Veeranistan:"2 million", Pareestan:"7 million", Licenses:321654789}, {Company:"Google", Quarter:1, India:"3 million", Veeranistan:"4 million", Pareestan:"1 million", Licenses:321458769 } ]); public function createColumnGroups():void { countries.headerText="Countries"; toplevel.headerText="Top Level"; var countriesarr:Array = new Array(); var toplevelarr:Array = new Array(); countriesarr.push(india); countriesarr.push(pareestan); countriesarr.push(veeranistan); toplevelarr.push(quarters); mydatagrid.dataProvider=mydata; countries.children = countriesarr; toplevelarr.push(countries); toplevel.children=toplevelarr; mydatagrid.groupedColumns=[companies, toplevel, licenses]; mydatagrid.dataProvider.refresh(); companies.dataField="Company"; quarters.dataField="Quarter"; licenses.dataField="Licenses"; } public function groupedData():void { var mygroup:GroupingCollection2 = new GroupingCollection2(); mygroup.source=mydata; var group:Grouping = new Grouping(); group.fields = [new GroupingField("Company"), new GroupingField("Licenses")]; group.label = "Company"; mygroup.grouping = group; mygroup.refresh(); mydatagrid.dataProvider = mygroup; mydatagrid.validateNow(); } public function insertColumns():void { var mycols:AdvancedDataGridColumn = new AdvancedDataGridColumn("ggg"); var mycolsarr:Array = mydatagrid.groupedColumns; mycolsarr.push(mycols); mydatagrid.groupedColumns = mycolsarr; } public function insertColumngroups():void { var mycolgroup:AdvancedDataGridColumnGroup = new AdvancedDataGridColumnGroup(); mycolgroup.headerText = "topmost "; var mycolsarr:Array = new Array(mydatagrid.groupedColumns[0]); mycolgroup.children = mycolsarr; var tempCols:Array = mydatagrid.groupedColumns.slice(1,mydatagrid.groupedColumns.length); mydatagrid.groupedColumns = [mycolgroup].concat(tempCols); } public function hierarchicaldata_setter():void { var hierarchs:HierarchicalData = new HierarchicalData(); hierarchs.source = hierarch_data; mydatagrid..dataProvider = hierarchs; companies.dataField = "feature"; quarters.dataField = "subFeature"; licenses.dataField = "endDate"; } public function vrHeight():void { for(var i:int=0;i<20;i++) { var rnd:* = Math.random(); var obj:Object = {Company:"column-A0",Quarter:"column-B"+rnd,India:"column-C"+rnd,Veeranista n:"Column-D"+rnd,Pareestan:"Column-E"+rnd,Licenses:"Column-F"+rnd} ac.addItem(obj); } mydatagrid.dataProvider = ac; mydatagrid.variableRowHeight = true; mydatagrid.wordWrap = true; } public function headerRenderer():void { countries.headerRenderer = new ClassFactory(mx.controls.NumericStepper); toplevel.headerRenderer = new ClassFactory(mx.controls.TextArea); quarters.headerRenderer = new ClassFactory(mx.controls.TextInput); } public function customHeaderRenderer():void { //toplevel.headerRenderer = new ClassFactory(myheads); } public function visibleColumns():void { toplevel.visible = false; } public function headerSkin():void { //StyleManager.getStyleDeclaration("AdvancedDataGrid").setStyle("headerHori zontalSeparatorSkin",myhorskin); } public function myStyleFunction(data:Object,col:AdvancedDataGridColumn):Object { return { color:0xFF0000}; } public function myFormatting():void { mydatagrid.styleFunction = myStyleFunction; mydata.refresh(); var forms:CurrencyFormatter = new CurrencyFormatter(); forms.currencySymbol = "$"; createColumnGroups(); licenses.formatter = forms; mydatagrid.dataProvider.refresh(); } public function myColumnSpan():void { var renders:AdvancedDataGridRendererProvider = new AdvancedDataGridRendererProvider(); renders.column = companies; var renderarr:Array = new Array(); renders.dataField = "Company"; renders.columnSpan = 2; renders.renderer = new ClassFactory(mx.controls.NumericStepper); renderarr.push(renders); mydatagrid.rendererProviders = renderarr; } public function generateXML():void { mydatagrid.dataProvider = comps; } ]]> </fx:Script> <fx:Declarations> <fx:XMLList id="comps"> <companylist> <Company>AalishaanSoft</Company> <Quarter> 1 </Quarter> <India>34 million</India> <Veeranistan>1.5 million</Veeranistan> <Pareestan>5 million</Pareestan> <Licenses>321475987</Licenses> </companylist> <companylist> <Company>MughaleAzamSoft</Company> <Quarter> 1 </Quarter> <India>3.4 million</India> <Veeranistan>2 million</Veeranistan> <Pareestan>5.4 million</Pareestan> <Licenses>321475987</Licenses> </companylist> <companylist> <Company>SheeshMahalSoft</Company> <Quarter> 1 </Quarter> <India>45 million</India> <Veeranistan>15 million</Veeranistan> <Pareestan>5.1 million</Pareestan> <Licenses>321745987</Licenses> </companylist> <companylist> <Company>AjnabeeSoft</Company> <Quarter> 1 </Quarter> <India>14 million</India> <Veeranistan>11 million</Veeranistan> <Pareestan>5.7 million</Pareestan> <Licenses>321479587</Licenses> </companylist> </fx:XMLList> </fx:Declarations> <mx:VBox> <mx:Canvas id="box" width="100%" height="100%"> <mx:AdvancedDataGrid id="mydatagrid" /> </mx:Canvas> <mx:TextInput id="ti"/> <mx:HBox> <mx:Button label="grouped data" click="groupedData()" /> <mx:Button label="expand all" click="mydatagrid.expandAll();" /> <mx:Button label="rtl" click="mydatagrid.setStyle('layoutDirection', 'rtl')" /> <mx:Button label="color" click="mydatagrid.setStyle('color', 0xFF0000)" /> </mx:HBox> </mx:VBox> </mx:Application>