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> >

