Repository: flex-asjs Updated Branches: refs/heads/develop 61a9eeab1 -> 60f17d1bc
Some refactoring: created a base class for chart layouts (ChartBaseLayout) to make drawing graphics a little easier and more consistent. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/60f17d1b Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/60f17d1b Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/60f17d1b Branch: refs/heads/develop Commit: 60f17d1bc7bf5dac05d0c70c116176fde7276cdb Parents: 61a9eea Author: Peter Ent <[email protected]> Authored: Fri Sep 5 10:02:01 2014 -0400 Committer: Peter Ent <[email protected]> Committed: Fri Sep 5 10:02:01 2014 -0400 ---------------------------------------------------------------------- .../src/org/apache/flex/charts/BarChart.as | 1 - .../src/org/apache/flex/charts/ColumnChart.as | 17 +++ .../src/org/apache/flex/charts/LineChart.as | 17 +++ .../src/org/apache/flex/charts/PieChart.as | 34 ++--- .../flex/charts/beads/layouts/BarChartLayout.as | 71 +++------ .../charts/beads/layouts/ChartBaseLayout.as | 146 +++++++++++++++++++ .../charts/beads/layouts/ColumnChartLayout.as | 69 ++------- .../layouts/LineChartCategoryVsLinearLayout.as | 78 +++------- .../layouts/LineChartLinearVsLinearLayout.as | 73 +++------- .../flex/charts/beads/layouts/PieChartLayout.as | 58 ++------ .../beads/layouts/StackedBarChartLayout.as | 70 +++------ .../beads/layouts/StackedColumnChartLayout.as | 65 ++------- 12 files changed, 310 insertions(+), 389 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as index dd705fc..4065dd3 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as @@ -20,7 +20,6 @@ package org.apache.flex.charts { import org.apache.flex.charts.core.ChartBase; import org.apache.flex.charts.core.IChart; - import org.apache.flex.events.Event; /** * The BarChart class draws a multi-series graph of data using vertical http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as index 8c266ee..c9010b8 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as @@ -21,8 +21,25 @@ package org.apache.flex.charts import org.apache.flex.charts.core.ChartBase; import org.apache.flex.charts.core.IChart; + /** + * The ColumnChart displays a histogram chart where each series in + * in the chart is a vertical column placed side by side. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public class ColumnChart extends ChartBase implements IChart { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function ColumnChart() { super(); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as index c30034d..27ba0a5 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as @@ -21,8 +21,25 @@ package org.apache.flex.charts import org.apache.flex.charts.core.ChartBase; import org.apache.flex.charts.core.IChart; + /** + * The LineChart displays a series of line graphs with optional + * graphics at each vertex. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public class LineChart extends ChartBase implements IChart { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ public function LineChart() { super(); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as index ad23fd0..591e2d7 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as @@ -18,36 +18,30 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.charts { + import org.apache.flex.charts.core.ChartBase; import org.apache.flex.charts.core.IChart; - import org.apache.flex.events.Event; - import org.apache.flex.html.List; - public class PieChart extends List implements IChart + /** + * The PieChart displays data as a percentage of pie. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public class PieChart extends ChartBase implements IChart { - public function PieChart() - { - super(); - } - - private var _series:Array; - /** - * The collection of series for the chart. Each element of the - * series array should be of type BarChartSeries. - * + * constructor. + * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public function get series():Array - { - return _series; - } - public function set series(value:Array):void + public function PieChart() { - _series = value; - dispatchEvent(new Event("seriesChanged")); + super(); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as index e6e5092..71bc274 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as @@ -19,18 +19,11 @@ package org.apache.flex.charts.beads.layouts { import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.BarSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -43,26 +36,8 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class BarChartLayout implements IBeadLayout, ICartesianChartLayout + public class BarChartLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } private var _gap:Number = 20; @@ -88,39 +63,29 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - private function changeHandler(event:Event):void - { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + override protected function performLayout():void + { + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - var maxXValue:Number = 0; var seriesMaxes:Array = []; - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; - var useWidth:Number = UIBase(_strand).width - yAxisOffset; - var useHeight:Number = ((UIBase(_strand).height-xAxisOffset) / n) - gap; - var seriesHeight:Number = useHeight/series.length; + var useWidth:Number = chart.width - yAxisOffset; + var useHeight:Number = ((chart.height-xAxisOffset) / n) - gap; + var seriesHeight:Number = useHeight/chart.series.length; var xpos:Number = 0; - var ypos:Number = UIBase(_strand).height - xAxisOffset - seriesHeight; + var ypos:Number = chart.height - xAxisOffset - seriesHeight; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var bcs:BarSeries = series[s] as BarSeries; + var bcs:BarSeries = chart.series[s] as BarSeries; seriesMaxes.push({maxValue:0,scaleFactor:0}); for (var i:int = 0; i < n; i++) @@ -139,12 +104,12 @@ package org.apache.flex.charts.beads.layouts { data = dp[i]; - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - bcs = series[s] as BarSeries; + bcs = chart.series[s] as BarSeries; - var child:IChartItemRenderer = (series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + var child:IChartItemRenderer = (chart.series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = bcs.fillColor; xValue = Number(data[bcs.xField]); @@ -155,13 +120,13 @@ package org.apache.flex.charts.beads.layouts child.height = seriesHeight; ypos -= seriesHeight; - contentView.addElement(child); + chartDataGroup.addElement(child); } ypos -= gap; } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as new file mode 100644 index 0000000..8c5db61 --- /dev/null +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as @@ -0,0 +1,146 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.flex.charts.beads.layouts +{ + import org.apache.flex.charts.ChartDataGroup; + import org.apache.flex.charts.core.ChartBase; + import org.apache.flex.charts.core.IHorizontalAxisBead; + import org.apache.flex.charts.core.IVerticalAxisBead; + import org.apache.flex.core.IBeadLayout; + import org.apache.flex.core.ILayoutParent; + import org.apache.flex.core.IStrand; + import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; + + public class ChartBaseLayout implements IBeadLayout + { + public function ChartBaseLayout() + { + } + + private var _strand:IStrand; + + /** + * @copy org.apache.flex.core.IBead#strand + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function set strand(value:IStrand):void + { + _strand = value; + IEventDispatcher(value).addEventListener("widthChanged", changeHandler); + IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); + IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); + IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); + } + + /** + * Returns the strand, cast as an instance of ChartBase. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get chart():ChartBase + { + return _strand as ChartBase; + } + + private var _xAxis:IHorizontalAxisBead = null; + + /** + * The horizontal axis bead or null if one is not present. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get horizontalAxisBead():IHorizontalAxisBead + { + if (_xAxis == null) { + if (chart.getBeadByType(IHorizontalAxisBead)) _xAxis = chart.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; + } + return _xAxis; + } + + private var _yAxis:IVerticalAxisBead = null; + + /** + * The vertical axis bead or null if one is not present. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get verticalAxisBead():IVerticalAxisBead + { + if (_yAxis == null) { + if (chart.getBeadByType(IVerticalAxisBead)) _yAxis = chart.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; + } + return _yAxis; + } + + private var _chartDataGroup:ChartDataGroup; + + /** + * Returns the object into which the chart elements are drawn or added. The ChartDataGroup implements + * IContentView. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get chartDataGroup():ChartDataGroup + { + if (_chartDataGroup == null) { + var layoutParent:ILayoutParent = chart.getBeadByType(ILayoutParent) as ILayoutParent; + _chartDataGroup = layoutParent.contentView as ChartDataGroup; + } + return _chartDataGroup; + } + + /** + * @private + */ + private function changeHandler(event:Event):void + { + performLayout(); + } + + /** + * Subclasses should implement this to draw the chart, adding elements to the chartDataGroup. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + protected function performLayout():void + { + // implement in subclass + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as index 98ef16b..9c78f0c 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as @@ -19,18 +19,10 @@ package org.apache.flex.charts.beads.layouts { import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; - import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.ColumnSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -43,31 +35,12 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class ColumnChartLayout implements IBeadLayout, ICartesianChartLayout + public class ColumnChartLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { public function ColumnChartLayout() { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - private var _gap:Number = 20; /** @@ -92,39 +65,29 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - private function changeHandler(event:Event):void + override protected function performLayout():void { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; - var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var n:int = dp.length; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; var xpos:Number = yAxisOffset; - var useWidth:Number = UIBase(_strand).width-yAxisOffset;; - var useHeight:Number = UIBase(_strand).height - xAxisOffset; + var useWidth:Number = chart.width-yAxisOffset;; + var useHeight:Number = chart.height - xAxisOffset; var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length; - var seriesWidth:Number = itemWidth/series.length; + var seriesWidth:Number = itemWidth/chart.series.length; var maxYValue:Number = 0; var seriesMaxes:Array = []; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var bcs:ColumnSeries = series[s] as ColumnSeries; + var bcs:ColumnSeries = chart.series[s] as ColumnSeries; seriesMaxes.push({maxValue:0,scaleFactor:0}); for (var i:int = 0; i < n; i++) @@ -143,12 +106,12 @@ package org.apache.flex.charts.beads.layouts { data = dp[i]; - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - bcs = series[s] as ColumnSeries; + bcs = chart.series[s] as ColumnSeries; var child:IChartItemRenderer = bcs.itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = bcs.fillColor; yValue = Number(data[bcs.yField]); @@ -159,13 +122,13 @@ package org.apache.flex.charts.beads.layouts child.height = yValue*seriesMaxes[s].scaleFactor; xpos += seriesWidth; - contentView.addElement(child); + chartDataGroup.addElement(child); } xpos += gap; } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as index 941e31d..07d4d8e 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as @@ -18,23 +18,13 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.charts.beads.layouts { - import org.apache.flex.charts.beads.ChartItemRendererFactory; import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IConnectedItemRenderer; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer; import org.apache.flex.charts.supportClasses.LineSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.IDataProviderItemRendererMapper; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -47,67 +37,37 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class LineChartCategoryVsLinearLayout implements IBeadLayout, ICartesianChartLayout + public class LineChartCategoryVsLinearLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { public function LineChartCategoryVsLinearLayout() { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - /** * @private */ - private function changeHandler(event:Event):void - { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - contentView.removeAllElements(); - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + override protected function performLayout():void + { + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; var xpos:Number = yAxisOffset; - var useWidth:Number = UIBase(_strand).width-yAxisOffset;; - var useHeight:Number = UIBase(_strand).height - xAxisOffset; + var useWidth:Number = chart.width-yAxisOffset;; + var useHeight:Number = chart.height - xAxisOffset; var itemWidth:Number = useWidth/dp.length; var maxYValue:Number = 0; var seriesMaxes:Array = []; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var aseries:IChartSeries = series[s] as IChartSeries; + var aseries:IChartSeries = chart.series[s] as IChartSeries; seriesMaxes.push({maxValue:0,scaleFactor:0,points:[]}); for (var i:int = 0; i < n; i++) @@ -125,9 +85,9 @@ package org.apache.flex.charts.beads.layouts // draw the itemRenderers at each vertex and build the points array for the // line segment. - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - aseries = series[s] as IChartSeries; + aseries = chart.series[s] as IChartSeries; xpos = yAxisOffset + itemWidth/2; @@ -143,14 +103,14 @@ package org.apache.flex.charts.beads.layouts if (aseries.itemRenderer) { var child:IChartItemRenderer = aseries.itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = aseries.fillColor; child.x = childX - 5; child.y = childY - 5; child.width = 10; child.height = 10; - contentView.addElement(child); + chartDataGroup.addElement(child); } xpos += itemWidth; @@ -159,9 +119,9 @@ package org.apache.flex.charts.beads.layouts // draw the line segment - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - var lcs:LineSeries = series[s] as LineSeries; + var lcs:LineSeries = chart.series[s] as LineSeries; if (lcs.lineSegmentRenderer) { @@ -170,12 +130,12 @@ package org.apache.flex.charts.beads.layouts renderer.lineThickness = lcs.lineThickness; renderer.data = lcs; renderer.points = seriesMaxes[s].points; - renderer.itemRendererParent = contentView; - contentView.addElement(renderer); + renderer.itemRendererParent = chartDataGroup; + chartDataGroup.addElement(renderer); } } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as index 44bf7a0..73226d6 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as @@ -19,19 +19,12 @@ package org.apache.flex.charts.beads.layouts { import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer; import org.apache.flex.charts.supportClasses.LineSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -44,67 +37,37 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class LineChartLinearVsLinearLayout implements IBeadLayout, ICartesianChartLayout + public class LineChartLinearVsLinearLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { public function LineChartLinearVsLinearLayout() { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - /** * @private */ - private function changeHandler(event:Event):void + override protected function performLayout():void { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - contentView.removeAllElements(); - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; var xpos:Number = yAxisOffset; var ypos:Number = xAxisOffset; - var useWidth:Number = UIBase(_strand).width - yAxisOffset;; - var useHeight:Number = UIBase(_strand).height - xAxisOffset; + var useWidth:Number = chart.width - yAxisOffset;; + var useHeight:Number = chart.height - xAxisOffset; var itemWidth:Number = useWidth/dp.length; var seriesMaxes:Array = []; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var aseries:IChartSeries = series[s] as IChartSeries; + var aseries:IChartSeries = chart.series[s] as IChartSeries; seriesMaxes.push({minX:Number.MAX_VALUE,maxX:Number.MIN_VALUE, minY:Number.MAX_VALUE,maxY:Number.MIN_VALUE, scaleX:0,scaleY:0,points:[]}); @@ -130,9 +93,9 @@ package org.apache.flex.charts.beads.layouts // draw the itemRenderers at each vertex and build the points array for the // line segment. - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - aseries = series[s] as IChartSeries; + aseries = chart.series[s] as IChartSeries; for (i=0; i < n; i++) { @@ -147,23 +110,23 @@ package org.apache.flex.charts.beads.layouts if (aseries.itemRenderer) { var child:IChartItemRenderer = aseries.itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = aseries.fillColor; child.x = childX - 5; child.y = childY - 5; child.width = 10; child.height = 10; - contentView.addElement(child); + chartDataGroup.addElement(child); } } } // draw the line segment - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - var lcs:LineSeries = series[s] as LineSeries; + var lcs:LineSeries = chart.series[s] as LineSeries; if (lcs.lineSegmentRenderer) { @@ -172,12 +135,12 @@ package org.apache.flex.charts.beads.layouts renderer.lineThickness = lcs.lineThickness; renderer.data = lcs; renderer.points = seriesMaxes[s].points; - renderer.itemRendererParent = contentView; - contentView.addElement(renderer); + renderer.itemRendererParent = chartDataGroup; + chartDataGroup.addElement(renderer); } } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as index 2f0e959..60b0141 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as @@ -18,16 +18,11 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.charts.beads.layouts { - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartSeries; import org.apache.flex.charts.supportClasses.PieSeries; import org.apache.flex.charts.supportClasses.WedgeItemRenderer; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -40,7 +35,7 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class PieChartLayout implements IBeadLayout + public class PieChartLayout extends ChartBaseLayout implements IBeadLayout { /** * constructor. @@ -54,54 +49,29 @@ package org.apache.flex.charts.beads.layouts { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - /** * @private */ - private function changeHandler(event:Event):void + override protected function performLayout():void { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - contentView.removeAllElements(); - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); var xpos:Number = 0; - var useWidth:Number = UIBase(_strand).width; - var useHeight:Number = UIBase(_strand).height; + var useWidth:Number = chart.width; + var useHeight:Number = chart.height; var maxYValue:Number = 0; var seriesMaxes:Array = []; - var colors:Array = [0xFF0000, 0xFF9900, 0xFFFF00, 0x00FF00, 0x00FFcc, 0x0000FF, 0xcc00FF, 0xFF00cc, 0x888888, 0x333333, 0xFFcc99]; + var colors:Array = [0xFF964D, 0x964DFF, 0xF80012, 0x96FF4D, 0x4D96FF, 0x8A8A01, 0x23009C, 0x4A4A4A, 0x23579D]; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var pcs:PieSeries = series[s] as PieSeries; + var pcs:PieSeries = chart.series[s] as PieSeries; for (var i:int = 0; i < n; i++) { @@ -132,22 +102,22 @@ package org.apache.flex.charts.beads.layouts obj = seriesMaxes[i]; data = dp[i]; - var child:WedgeItemRenderer = (series[s] as IChartSeries).itemRenderer.newInstance() as WedgeItemRenderer; - child.itemRendererParent = contentView; + var child:WedgeItemRenderer = (chart.series[s] as IChartSeries).itemRenderer.newInstance() as WedgeItemRenderer; + child.itemRendererParent = chartDataGroup; child.data = data; - child.fillColor = colors[i]; - contentView.addElement(child); + child.fillColor = colors[i%colors.length]; + chartDataGroup.addElement(child); end = start + (360.0 * obj.percent); var arc:Number = 360.0 * obj.percent; - trace("Draw arc from "+start+" to "+(start+arc)); +// trace("Draw arc from "+start+" to "+(start+arc)); child.drawWedge(centerX, centerY, start*Math.PI/180, arc*Math.PI/180, radius); start += arc; } } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as index fed26b0..a6a61a6 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as @@ -19,18 +19,11 @@ package org.apache.flex.charts.beads.layouts { import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.BarSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -43,7 +36,7 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class StackedBarChartLayout implements IBeadLayout, ICartesianChartLayout + public class StackedBarChartLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { /** * constructor @@ -57,25 +50,6 @@ package org.apache.flex.charts.beads.layouts { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - private var _gap:Number = 20; /** @@ -100,35 +74,25 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - private function changeHandler(event:Event):void + override protected function performLayout():void { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; - var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - + var n:int = dp.length; var maxXValue:Number = 0; var seriesMaxes:Array = []; - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; - var useWidth:Number = UIBase(_strand).width - yAxisOffset; - var useHeight:Number = ((UIBase(_strand).height-xAxisOffset) / n) - gap; + var useWidth:Number = chart.width - yAxisOffset; + var useHeight:Number = ((chart.height-xAxisOffset) / n) - gap; var seriesHeight:Number = useHeight; var xpos:Number = xAxisOffset; - var ypos:Number = UIBase(_strand).height - xAxisOffset - seriesHeight; + var ypos:Number = chart.height - xAxisOffset - seriesHeight; var barValues:Array = []; var maxValue:Number = 0; @@ -140,9 +104,9 @@ package org.apache.flex.charts.beads.layouts var data:Object = dp[i]; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var bcs:BarSeries = series[s] as BarSeries; + var bcs:BarSeries = chart.series[s] as BarSeries; var field:String = bcs.xField; var xValue:Number = Number(data[field]); @@ -159,12 +123,12 @@ package org.apache.flex.charts.beads.layouts data = dp[i]; xpos = yAxisOffset; - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - bcs = series[s] as BarSeries; + bcs = chart.series[s] as BarSeries; - var child:IChartItemRenderer = (series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + var child:IChartItemRenderer = (chart.series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = bcs.fillColor; xValue = Number(data[bcs.xField]); @@ -176,13 +140,13 @@ package org.apache.flex.charts.beads.layouts xpos += xValue*scaleFactor; - contentView.addElement(child); + chartDataGroup.addElement(child); } ypos -= gap + seriesHeight; } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as index 574dca8..d0fafc2 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as @@ -19,18 +19,10 @@ package org.apache.flex.charts.beads.layouts { import org.apache.flex.charts.core.ICartesianChartLayout; - import org.apache.flex.charts.core.IChart; import org.apache.flex.charts.core.IChartItemRenderer; - import org.apache.flex.charts.core.IChartSeries; - import org.apache.flex.charts.core.IHorizontalAxisBead; - import org.apache.flex.charts.core.IVerticalAxisBead; import org.apache.flex.charts.supportClasses.ColumnSeries; import org.apache.flex.core.IBeadLayout; - import org.apache.flex.core.IContentView; - import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -43,7 +35,7 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public class StackedColumnChartLayout implements IBeadLayout, ICartesianChartLayout + public class StackedColumnChartLayout extends ChartBaseLayout implements IBeadLayout, ICartesianChartLayout { /** * constructor @@ -57,25 +49,6 @@ package org.apache.flex.charts.beads.layouts { } - private var _strand:IStrand; - - /** - * @copy org.apache.flex.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("widthChanged", changeHandler); - IEventDispatcher(value).addEventListener("childrenAdded", changeHandler); - IEventDispatcher(value).addEventListener("itemsCreated", changeHandler); - IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler); - } - private var _gap:Number = 20; /** @@ -100,31 +73,21 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - private function changeHandler(event:Event):void + override protected function performLayout():void { - var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; - var contentView:IContentView = layoutParent.contentView as IContentView; - - var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; + var selectionModel:ISelectionModel = chart.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) return; - var series:Array = IChart(_strand).series; var n:int = dp.length; - trace("There are "+series.length+" series in this chart"); - - var xAxis:IHorizontalAxisBead; - if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead; - var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight; - var yAxis:IVerticalAxisBead; - if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead; - var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth; + var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight; + var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth; var xpos:Number = yAxisOffset; var ypos:Number = 0; - var useWidth:Number = UIBase(_strand).width-yAxisOffset; - var useHeight:Number = UIBase(_strand).height - xAxisOffset; + var useWidth:Number = chart.width-yAxisOffset; + var useHeight:Number = chart.height - xAxisOffset; var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length; var maxYValue:Number = 0; @@ -138,9 +101,9 @@ package org.apache.flex.charts.beads.layouts barValues.push({totalValue:0, scaleFactor:0}); var data:Object = dp[i]; - for (var s:int = 0; s < series.length; s++) + for (var s:int = 0; s < chart.series.length; s++) { - var bcs:ColumnSeries = series[s] as ColumnSeries; + var bcs:ColumnSeries = chart.series[s] as ColumnSeries; var field:String = bcs.yField; var yValue:Number = Number(data[field]); @@ -157,12 +120,12 @@ package org.apache.flex.charts.beads.layouts data = dp[i]; ypos = useHeight; - for (s=0; s < series.length; s++) + for (s=0; s < chart.series.length; s++) { - bcs = series[s] as ColumnSeries; + bcs = chart.series[s] as ColumnSeries; var child:IChartItemRenderer = bcs.itemRenderer.newInstance() as IChartItemRenderer; - child.itemRendererParent = contentView; + child.itemRendererParent = chartDataGroup; child.data = data; child.fillColor = bcs.fillColor; yValue = Number(data[bcs.yField]); @@ -174,13 +137,13 @@ package org.apache.flex.charts.beads.layouts ypos = child.y; - contentView.addElement(child); + chartDataGroup.addElement(child); } xpos += gap + itemWidth; } - IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete")); + IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete")); } } } \ No newline at end of file
