Most of my charts are defined in MXML, but have dynamic portions (eg. the series list might be built dynamically).
On Wed, Mar 17, 2010 at 1:19 PM, netdeep <[email protected]> wrote: > > > > Thanks for the reply. I was really hoping the new builds would fix the > problem but they didn't. Even if they had, both 3.4 and 3.5a exhibit another > bug which ruins my app. Whenever I refresh the data, the chart goes into > some weird loop, redrawing its axis labels over and over again which makes > them flash. > > Was your chart done in actionscript? I wonder why it worked for you. There > is definitely a bug in there somewhere though. I never had any problems > before this. > > > --- In [email protected] <flexcoders%40yahoogroups.com>, Richard > Rodseth <rrods...@...> wrote: > > > > Sorry, I missed that you'd tried 3.5a. It did fix my problem. > > > > On Wed, Mar 17, 2010 at 8:47 AM, Richard Rodseth <rrods...@...> wrote: > > > > > I posted about this recently, but it hasn't shown up. > > > > > > Turns out there's a bug in DateTimeAxis, fixed in 3.4 > > > > > > http://bugs.adobe.com/jira/browse/FLEXDMV-2043 > > > > > > > > > On Wed, Mar 17, 2010 at 5:53 AM, 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> > > >> > > >> > > >> > > >> > > > > > > > > > > >

