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 [email protected], "netdeep" <deep...@...> 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