A further note, the dataUnits seem to work for columnSeries, but not for 
plotSeries.  Or it could be just setting the units to "hours" that is the 
problem.  I'm looking into it further.  It would be great to get some 
confirmation that this is fixed in Flex 4.


--- In flexcoders@yahoogroups.com, "netdeep" <deep...@...> wrote:
>
> 
> Well, I think I've figured out the problem.  I didn't notice it before but on 
> the mxml chart I was using "dataUnits" and on the AS chart I was using 
> "labelUnits".  It looks like labelUnits are the culprit because when I 
> switched the AS to this, if finally rendered correctly.  I haven't tested it 
> extensively, but for now, it looks like that is working.
> 
> 
> 
> --- In flexcoders@yahoogroups.com, "netdeep" <deepnet@> wrote:
> >
> > 
> > I have an app which displays any type of chart based on actionscript class 
> > definitions.  It can't be done in mxml because the charts get drawn at 
> > runtime.  It has worked fine until recently.  The daylight savings time 
> > change has made it go all out of whack.  I rebuilt a sample version in mxml 
> > however and it displays correctly.  I've attempted to mimic this in a hard 
> > coded actionscript version as well but it just doesn't work.
> > 
> > In the code below, the columnWidthRatio is set to 1.1 so that the columns 
> > slightly overlap, but in the actionscript version, the bars are tiny with 
> > wide gaps between them.  Also, if I set the labelUnits to 'hours', the 
> > chart won't work at all.  It won't even draw anything, but just times out.
> > 
> > I am using Flex 3.3 on a Mac.  I've also tried Flex 3.5a but it didn't work 
> > with that either.
> > 
> >         
> >         [Bindable]
> >         public var DECKER:Array = [
> >            {point1:"Tue Mar 16 00:00:00 GMT-0400 2010", 
> > point2:6.021350380920805},
> >            {point1:"Mon Mar 15 00:00:00 GMT-0400 2010", 
> > point2:12.432308140005917},
> >            {point1:"Sun Mar 14 00:00:00 GMT-0500 2010", 
> > point2:19.558957234168425}  
> >         ];
> > 
> >             // actionscript version which doesn't work
> >             public function makeDateChart(genericChart:CartesianChart,
> >                             genericLegend:Legend, chartPanel:ChartPanel, 
> > chart:ChartObject):void {
> >                                     
> >                 // ChartObject is a custom object which holds display 
> > information
> >                 // as well as al the SeriesObjects (see below)
> >                 var axisList:ArrayCollection = chart.getAxisList();
> >                 var seriesArray:Array = new Array();
> >                 
> >                 var hAxis:DateTimeAxis = new DateTimeAxis();
> >                 
> >                         for (var i:int=0; i<axisList.length; i++) {
> >                                 var axis:AxisObject = axisList.getItemAt(i) 
> > as AxisObject;
> >                                 if (axis.getID() == "x Axis") {  
> >                                      hAxis.labelUnits = "days";
> >                                      genericChart.horizontalAxis = hAxis;
> >                                 }
> >                                 else {
> >                                    // Define vertical axis
> >                                    var vAxis:LinearAxis = new LinearAxis();
> >                                    genericChart.verticalAxis = vAxis;
> >                
> >                                     for (var j:int=0; 
> > j<axis.getSeriesList().length; j++) {
> >                                             // custom data object which 
> > holds data and display settings
> >                                             var ser:SeriesObject = 
> > axis.getSeriesList().getItemAt(j) as SeriesObject; 
> >                                     
> >                                             var columnSeries:ColumnSeries = 
> > new ColumnSeries();             
> >                                             // bind data...It doesn't 
> > matter if I bind 'pointList' or DECKER to this
> >                                             // either way it doesn't work 
> > for columnSeries- it does work for the
> >                                             // mxml object testCol (see 
> > prev post for static version of chart)
> >                                             
> > BindingUtils.bindProperty(columnSeries, "dataProvider", this, "DECKER");
> >                                             
> > BindingUtils.bindProperty(colSer, "dataProvider", this, "DECKER");
> >                                             // pointList would be used for 
> > the dynamic version
> > //                                          
> > BindingUtils.bindProperty(columnSeries, "dataProvider", ser, "pointList");
> > //                                          
> > BindingUtils.bindProperty(colSer, "dataProvider", ser, "pointList");
> >                                             columnSeries.columnWidthRatio = 
> > 1.1;
> > //                                          columnSeries.displayName = 
> > ser.name;
> >                                             columnSeries.xField="point1";
> >                                             columnSeries.yField="point2";
> >                                             seriesArray.push(columnSeries);
> >                                     }
> >                             }
> >                         }
> >                
> >                         genericChart.series = 
> > seriesArray;//.toArray().reverse();   
> >                         genericChart.percentWidth = 100;
> >                             genericChart.showDataTips = true;
> >                        
> >                         var hb:HBox = new HBox();
> >                        
> >                         hb.addChild(genericChart);
> >                         this.addChild(hb);
> >                      }
> > 
> >     <!-- mxml version which works -->
> >     <mx:HBox backgroundColor="white">
> >             <mx:CartesianChart showDataTips="true" id="testCol" >
> >             
> >                     <mx:horizontalAxis>
> >                 <mx:DateTimeAxis labelFunction="fullTimeLabelFunction" 
> > dataUnits="days"/>
> >             </mx:horizontalAxis>
> > 
> >             <mx:verticalAxis>
> >                 <mx:LinearAxis  />
> >             </mx:verticalAxis>
> > 
> >             <mx:series>
> >                 <mx:ColumnSeries id="colSer" columnWidthRatio="1.1" 
> > yField="point2" xField="point1" displayName="points"/>
> >             </mx:series>
> >             
> >             </mx:CartesianChart>
> >     </mx:HBox>
> >
>


Reply via email to