You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2014/11/18 19:16:23 UTC
[2/2] git commit: [flex-asjs] [refs/heads/develop] - Updated FlexJS
chart package with refurbished optimized-chart classes.
Updated FlexJS chart package with refurbished optimized-chart classes.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/32cd93b6
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/32cd93b6
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/32cd93b6
Branch: refs/heads/develop
Commit: 32cd93b62b4318d268f956426251aa7a9956063c
Parents: cea869d
Author: Peter Ent <pe...@apache.org>
Authored: Tue Nov 18 13:16:08 2014 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Tue Nov 18 13:16:08 2014 -0500
----------------------------------------------------------------------
.../as/projects/FlexJSJX/basic-manifest.xml | 8 +-
frameworks/as/projects/FlexJSJX/defaults.css | 22 +-
.../as/projects/FlexJSJX/src/FlexJSJXClasses.as | 10 +-
.../apache/flex/charts/beads/AxisBaseBead.as | 128 ++++++---
.../org/apache/flex/charts/beads/ChartView.as | 153 ++++++++++
.../charts/beads/HorizontalCategoryAxisBead.as | 32 +--
.../charts/beads/HorizontalLinearAxisBead.as | 32 +--
.../charts/beads/VerticalCategoryAxisBead.as | 45 ++-
.../flex/charts/beads/VerticalLinearAxisBead.as | 36 +--
.../flex/charts/beads/layouts/BarChartLayout.as | 20 +-
.../charts/beads/layouts/ColumnChartLayout.as | 13 +-
.../layouts/LineChartCategoryVsLinearLayout.as | 9 +-
.../layouts/LineChartLinearVsLinearLayout.as | 9 +-
.../flex/charts/beads/layouts/PieChartLayout.as | 4 +
.../beads/layouts/StackedBarChartLayout.as | 22 +-
.../beads/layouts/StackedColumnChartLayout.as | 19 +-
.../flex/charts/optimized/SVGBoxItemRenderer.as | 207 ++++++++++++++
.../flex/charts/optimized/SVGChartAxisGroup.as | 142 ++++++++++
.../flex/charts/optimized/SVGChartDataGroup.as | 158 +++++++++++
.../optimized/SVGLineSegmentItemRenderer.as | 201 +++++++++++++
.../charts/optimized/SVGWedgeItemRenderer.as | 281 +++++++++++++++++++
.../optimized/SVGBoxItemRenderer.as | 207 --------------
.../optimized/SVGChartDataGroup.as | 157 -----------
.../optimized/SVGLineSegmentItemRenderer.as | 201 -------------
.../optimized/SVGWedgeItemRenderer.as | 281 -------------------
.../as/projects/FlexJSUI/src/FlexJSUIClasses.as | 3 +
.../org/apache/flex/charts/core/IAxisBead.as | 7 +
.../org/apache/flex/charts/core/IAxisGroup.as | 42 +++
.../charts/supportClasses/ChartAxisGroup.as | 168 +++++++++++
.../flex/core/graphics/GraphicsContainer.as | 13 +
.../org/apache/flex/charts/core/IAxisGroup.js | 45 +++
.../charts/supportClasses/ChartAxisGroup.js | 71 +++++
.../charts/supportClasses/ChartDataGroup.js | 1 +
33 files changed, 1705 insertions(+), 1042 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/basic-manifest.xml b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
index 8070963..0dac3c8 100644
--- a/frameworks/as/projects/FlexJSJX/basic-manifest.xml
+++ b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
@@ -52,10 +52,10 @@
<component id="LineChartLinearVsLinearLayout" class="org.apache.flex.charts.beads.layouts.LineChartLinearVsLinearLayout" />
<component id="VerticalColumnLayout" class="org.apache.flex.html.beads.layouts.VerticalColumnLayout" />
- <component id="SVGChartDataGroup" class="org.apache.flex.charts.supportClasses.optimized.SVGChartDataGroup"/>
- <component id="SVGBoxItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGBoxItemRenderer"/>
- <component id="SVGWedgeItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGWedgeItemRenderer"/>
- <component id="SVGLineSegmentItemRenderer" class="org.apache.flex.charts.supportClasses.optimized.SVGLineSegmentItemRenderer"/>
+ <component id="SVGChartDataGroup" class="org.apache.flex.charts.optimized.SVGChartDataGroup"/>
+ <component id="SVGBoxItemRenderer" class="org.apache.flex.charts.optimized.SVGBoxItemRenderer"/>
+ <component id="SVGWedgeItemRenderer" class="org.apache.flex.charts.optimized.SVGWedgeItemRenderer"/>
+ <component id="SVGLineSegmentItemRenderer" class="org.apache.flex.charts.optimized.SVGLineSegmentItemRenderer"/>
<component id="DragMouseController" class="org.apache.flex.html.beads.controllers.DragMouseController" />
<component id="DropMouseController" class="org.apache.flex.html.beads.controllers.DropMouseController" />
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/defaults.css b/frameworks/as/projects/FlexJSJX/defaults.css
index bcb9171..d2c8648 100644
--- a/frameworks/as/projects/FlexJSJX/defaults.css
+++ b/frameworks/as/projects/FlexJSJX/defaults.css
@@ -22,23 +22,27 @@
BarChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.BarChartLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
+ IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+ IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
}
ColumnChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.ColumnChartLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
+ IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+ IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
}
DataGrid
@@ -71,19 +75,21 @@ DateField {
LineChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.LineChartCategoryVsLinearLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
IConnectedItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.LineSegmentItemRenderer");
+ IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+ IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
}
PieChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.PieChartLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
@@ -94,21 +100,25 @@ PieChart
StackedColumnChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.StackedColumnChartLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
+ IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+ IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
}
StackedBarChart
{
IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");
- IBeadView: ClassReference("org.apache.flex.html.beads.ListView");
+ IBeadView: ClassReference("org.apache.flex.charts.beads.ChartView");
IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController");
IBeadLayout: ClassReference("org.apache.flex.charts.beads.layouts.StackedBarChartLayout");
IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
+ IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+ IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
index d4e51a6..0e9027e 100644
--- a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
+++ b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
@@ -28,6 +28,7 @@ package
internal class FlexJSJXClasses
{
+ import org.apache.flex.charts.beads.ChartView; ChartView;
import org.apache.flex.charts.beads.ChartItemRendererFactory; ChartItemRendererFactory;
import org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData; DataItemRendererFactoryForSeriesData;
import org.apache.flex.charts.beads.HorizontalCategoryAxisBead; HorizontalCategoryAxisBead;
@@ -47,10 +48,11 @@ internal class FlexJSJXClasses
import org.apache.flex.charts.supportClasses.BoxItemRenderer; BoxItemRenderer;
import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer; LineSegmentItemRenderer;
import org.apache.flex.charts.supportClasses.WedgeItemRenderer; WedgeItemRenderer;
- import org.apache.flex.charts.supportClasses.optimized.SVGChartDataGroup; SVGChartDataGroup;
- import org.apache.flex.charts.supportClasses.optimized.SVGBoxItemRenderer; SVGBoxItemRenderer;
- import org.apache.flex.charts.supportClasses.optimized.SVGWedgeItemRenderer; SVGWedgeItemRenderer;
- import org.apache.flex.charts.supportClasses.optimized.SVGLineSegmentItemRenderer; SVGLineSegmentItemRenderer;
+ import org.apache.flex.charts.optimized.SVGChartAxisGroup; SVGChartAxisGroup;
+ import org.apache.flex.charts.optimized.SVGChartDataGroup; SVGChartDataGroup;
+ import org.apache.flex.charts.optimized.SVGBoxItemRenderer; SVGBoxItemRenderer;
+ import org.apache.flex.charts.optimized.SVGWedgeItemRenderer; SVGWedgeItemRenderer;
+ import org.apache.flex.charts.optimized.SVGLineSegmentItemRenderer; SVGLineSegmentItemRenderer;
import org.apache.flex.effects.Tween; Tween;
import org.apache.flex.effects.Move; Move;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/AxisBaseBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/AxisBaseBead.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/AxisBaseBead.as
index 3f4f5c7..29990b0 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/AxisBaseBead.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/AxisBaseBead.as
@@ -19,14 +19,33 @@
package org.apache.flex.charts.beads
{
import org.apache.flex.charts.core.IAxisBead;
+ import org.apache.flex.charts.core.IAxisGroup;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.UIBase;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
import org.apache.flex.core.graphics.IStroke;
- import org.apache.flex.core.graphics.Path;
+ import org.apache.flex.core.graphics.SolidColor;
import org.apache.flex.core.graphics.SolidColorStroke;
+ /**
+ * The AxisBaseBead is the base class for the chart axis beads.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
public class AxisBaseBead implements IAxisBead
{
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
public function AxisBaseBead()
{
// create default dark stroke for the axis line and tick marks
@@ -39,9 +58,26 @@ package org.apache.flex.charts.beads
axisStroke = blackLine;
tickStroke = blackLine;
+
+ var blackFill:SolidColor = new SolidColor();
+ blackFill.color = 0x111111;
+ blackFill.alpha = 1.0;
+
+ tickFill = blackFill;
}
+ private var _strand:IStrand;
+ private var wrapper:GraphicsContainer;
+ private var _axisGroup:IAxisGroup;
+
private var _placement:String = "unset";
+ private var _axisStroke:IStroke;
+ private var _tickStroke:IStroke;
+ private var _tickFill:IFill;
+
+ private var tickPathString:String = null;
+ private var tickMaxWidth:Number = 0;
+ private var tickMaxHeight:Number = 0;
/**
* The placement of the axis with respect to the chart area. Valid
@@ -62,8 +98,6 @@ package org.apache.flex.charts.beads
_placement = value;
}
- private var _axisStroke:IStroke;
-
/**
* The stroke used to draw the line for the axis.
*
@@ -81,8 +115,6 @@ package org.apache.flex.charts.beads
_axisStroke = value;
}
- private var _tickStroke:IStroke;
-
/**
* The stroke used to draw each tick mark.
*
@@ -100,7 +132,41 @@ package org.apache.flex.charts.beads
_tickStroke = value;
}
- private var _strand:IStrand;
+ /**
+ * The stroke used to draw each tick label.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get tickFill():IFill
+ {
+ return _tickFill;
+ }
+ public function set tickFill(value:IFill):void
+ {
+ _tickFill = value;
+ }
+
+ /**
+ * The container space for lines, tick marks, etc.
+ */
+ public function get axisGroup():IAxisGroup
+ {
+ return _axisGroup;
+ }
+ public function set axisGroup(value:IAxisGroup):void
+ {
+ _axisGroup = value;
+
+ wrapper = new GraphicsContainer();
+ UIBase(_axisGroup).addElement(wrapper);
+ wrapper.x = 0;
+ wrapper.y = 0;
+ wrapper.width = UIBase(_axisGroup).width;
+ wrapper.height = UIBase(_axisGroup).height;
+ }
/**
* @copy org.apache.flex.core.IBead#strand
@@ -119,26 +185,28 @@ package org.apache.flex.charts.beads
return _strand;
}
- protected function drawAxisPath(originX:Number, originY:Number, xoffset:Number, yoffset:Number):Path
- {
- var axisPath:Path = new Path();
- // set (x,y) before adding as element to set the location correctly
- axisPath.x = originX;
- axisPath.y = originY;
- axisPath.width = 1+xoffset;
- axisPath.height = 1+yoffset;
- UIBase(strand).addElement(axisPath);
- axisPath.stroke = axisStroke;
- var pathLine:String = "M 0 0 l "+String(xoffset)+" "+String(yoffset);
- axisPath.drawPath(0, 0, pathLine);
-
- return axisPath;
+ /**
+ * @private
+ */
+ protected function drawAxisPath(originX:Number, originY:Number, xoffset:Number, yoffset:Number):void
+ {
+ axisGroup.drawAxisLine(originX, originY, xoffset, yoffset, axisStroke);
}
- private var tickPathString:String = null;
- private var tickMaxWidth:Number = 0;
- private var tickMaxHeight:Number = 0;
+ /**
+ * @private
+ */
+ protected function addTickLabel(text:String, xpos:Number, ypos:Number, boxWidth:Number, boxHeight:Number):void
+ {
+ var isHorizontal:Boolean = (placement == "bottom") || (placement == "top");
+
+ if (isHorizontal) axisGroup.drawHorizontalTickLabel(text, xpos, ypos, boxWidth, boxHeight, tickFill);
+ else axisGroup.drawVerticalTickLabel(text, xpos, ypos, boxWidth, boxHeight, tickFill);
+ }
+ /**
+ * @private
+ */
protected function addTickMark(xpos:Number, ypos:Number, xoffset:Number, yoffset:Number):void
{
if (tickPathString == null) tickPathString = "";
@@ -149,18 +217,12 @@ package org.apache.flex.charts.beads
tickMaxHeight= Math.max(tickMaxHeight, ypos+yoffset);
}
+ /**
+ * @private
+ */
protected function drawTickPath(originX:Number, originY:Number):void
{
- var tickPath:Path = new Path();
- // set (x,y) before adding as element to set the location correctly
- tickPath.x = originX;
- tickPath.y = originY;
- tickPath.width = tickMaxWidth;
- tickPath.height = tickMaxHeight;
- UIBase(strand).addElement(tickPath);
- tickPath.stroke = tickStroke;
- tickPath.drawPath( 0, 0, tickPathString );
-
+ axisGroup.drawTickMarks(originX, originY, tickMaxWidth, tickMaxHeight, tickPathString, tickStroke);
tickPathString = null;
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/ChartView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/ChartView.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/ChartView.as
new file mode 100644
index 0000000..1b3c2d8
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/ChartView.as
@@ -0,0 +1,153 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+ import org.apache.flex.charts.core.IAxisGroup;
+ 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.IBeadView;
+ import org.apache.flex.core.IParent;
+ import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.IStrand;
+ import org.apache.flex.core.UIBase;
+ import org.apache.flex.core.ValuesManager;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.IEventDispatcher;
+ import org.apache.flex.html.beads.ListView;
+
+ public class ChartView extends ListView implements IBeadView
+ {
+ public function ChartView()
+ {
+ super();
+ }
+
+ private var _strand:IStrand;
+ private var _horizontalAxisGroup:IAxisGroup;
+ private var _verticalAxisGroup:IAxisGroup;
+
+ /**
+ * @copy org.apache.flex.core.IBead#strand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+
+ _strand = value;
+ IEventDispatcher(_strand).addEventListener("widthChanged", handleLocalChange);
+ IEventDispatcher(_strand).addEventListener("heightChanged",handleLocalChange);
+
+ var listModel:ISelectionModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+ listModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
+
+ var haxis:IHorizontalAxisBead = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
+ if (haxis && _horizontalAxisGroup == null) {
+ _horizontalAxisGroup = new (ValuesManager.valuesImpl.getValue(value, "iHorizontalAxisGroup")) as IAxisGroup;
+ haxis.axisGroup = _horizontalAxisGroup;
+ IParent(_strand).addElement(_horizontalAxisGroup);
+ }
+
+ var vaxis:IVerticalAxisBead = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
+ if (vaxis && _verticalAxisGroup == null) {
+ _verticalAxisGroup = new (ValuesManager.valuesImpl.getValue(value, "iVerticalAxisGroup")) as IAxisGroup;
+ vaxis.axisGroup = _verticalAxisGroup;
+ IParent(_strand).addElement(_verticalAxisGroup);
+ }
+
+ if (_strand.getBeadByType(IBeadLayout) == null)
+ {
+ var layout:IBeadLayout = new (ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout")) as IBeadLayout;
+ _strand.addBead(layout);
+ }
+
+ handleLocalChange(null);
+ }
+
+ public function get horizontalAxisGroup():IAxisGroup
+ {
+ return _horizontalAxisGroup;
+ }
+
+ public function get verticalAxisGroup():IAxisGroup
+ {
+ return _verticalAxisGroup;
+ }
+
+ /**
+ * @private
+ */
+ override protected function dataProviderChangeHandler(event:Event):void
+ {
+ if (verticalAxisGroup) {
+ verticalAxisGroup.removeAllElements();
+ }
+
+ if (horizontalAxisGroup) {
+ horizontalAxisGroup.removeAllElements();
+ }
+
+ dataGroup.removeAllElements();
+ }
+
+ /**
+ * @private
+ */
+ private function handleLocalChange(event:Event):void
+ {
+ var widthAdjustment:Number = 0;
+ var heightAdjustment:Number = 0;
+
+ var vaxis:IVerticalAxisBead = _strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
+ var haxis:IHorizontalAxisBead = _strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
+
+ if (vaxis) {
+ widthAdjustment = vaxis.axisWidth;
+ }
+
+ if (haxis) {
+ heightAdjustment = haxis.axisHeight;
+ }
+
+ UIBase(dataGroup).x = widthAdjustment;
+ UIBase(dataGroup).y = 0;
+ UIBase(dataGroup).width = UIBase(dataGroup).width - widthAdjustment;
+ UIBase(dataGroup).height= UIBase(dataGroup).height - heightAdjustment;
+
+ if (verticalAxisGroup) {
+ UIBase(verticalAxisGroup).x = 0;
+ UIBase(verticalAxisGroup).y = 0;
+ UIBase(verticalAxisGroup).width = widthAdjustment;
+ UIBase(verticalAxisGroup).height = UIBase(dataGroup).height;
+ }
+
+ if (horizontalAxisGroup) {
+ UIBase(horizontalAxisGroup).x = widthAdjustment;
+ UIBase(horizontalAxisGroup).y = UIBase(dataGroup).height;
+ UIBase(horizontalAxisGroup).width = UIBase(dataGroup).width;
+ UIBase(horizontalAxisGroup).height = heightAdjustment;
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as
index dd9e76b..b65d7ac 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as
@@ -19,15 +19,12 @@
package org.apache.flex.charts.beads
{
import org.apache.flex.charts.core.IHorizontalAxisBead;
- import org.apache.flex.charts.core.IVerticalAxisBead;
import org.apache.flex.core.IBead;
import org.apache.flex.core.ISelectionModel;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.UIBase;
- import org.apache.flex.core.graphics.Path;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
- import org.apache.flex.html.Label;
import org.apache.flex.html.beads.models.ArraySelectionModel;
/**
@@ -144,37 +141,26 @@ package org.apache.flex.charts.beads
if (model.dataProvider is Array) items = model.dataProvider as Array;
else return;
- var yAxis:IVerticalAxisBead;
- if (strand.getBeadByType(IVerticalAxisBead)) yAxis = strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
- var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth;
-
- var xpos:Number = yAxisOffset;
- var xAxisHeightOffset:Number = axisHeight;
- var useWidth:Number = UIBase(strand).width-yAxisOffset;
- var originX:Number = xpos;
- var originY:Number = UIBase(strand).height - xAxisHeightOffset;
+ var xpos:Number = 0;
+ var useWidth:Number = UIBase(axisGroup).width;
// place the labels below the axis enough to account for the tick marks
- var labelY:Number = UIBase(strand).height + 8;
+ var labelY:Number = 7;
var itemWidth:Number = (useWidth - gap*(items.length-1))/items.length;
- for(var i:int=0; i < items.length; i++) {
- var label:Label = new Label();
- label.text = items[i][categoryField];
- label.x = xpos;
- label.y = labelY - xAxisHeightOffset;
-
- UIBase(strand).addElement(label);
+ for(var i:int=0; i < items.length; i++)
+ {
+ addTickLabel(items[i][categoryField], xpos + itemWidth/2, labelY, itemWidth, 0);
// add a tick mark, too
- addTickMark(xpos + itemWidth/2 - originX, UIBase(strand).height - xAxisHeightOffset - originY, 0, 5);
+ addTickMark(xpos + itemWidth/2, 0, 0, 5);
xpos += itemWidth + gap;
}
// draw the axis and the tick marks
- drawAxisPath(originX, originY, useWidth, 0);
- drawTickPath(originX, originY);
+ drawAxisPath(0, 0, useWidth, 1);
+ drawTickPath(0, 1);
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as
index 432fec1..41a0666 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as
@@ -20,15 +20,12 @@ package org.apache.flex.charts.beads
{
import org.apache.flex.charts.core.IChart;
import org.apache.flex.charts.core.IHorizontalAxisBead;
- import org.apache.flex.charts.core.IVerticalAxisBead;
import org.apache.flex.core.IBead;
import org.apache.flex.core.ISelectionModel;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.UIBase;
- import org.apache.flex.core.graphics.Path;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
- import org.apache.flex.html.Label;
import org.apache.flex.html.beads.models.ArraySelectionModel;
/**
@@ -186,18 +183,10 @@ package org.apache.flex.charts.beads
if (model.dataProvider is Array) items = model.dataProvider as Array;
else return;
+ var xpos:Number = 0;
+ var useWidth:Number = UIBase(axisGroup).width;
var series:Array = IChart(strand).series;
- var yAxis:IVerticalAxisBead;
- if (strand.getBeadByType(IVerticalAxisBead)) yAxis = strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
- var yAxisOffset:Number = yAxis == null ? 0 : yAxis.axisWidth;
-
- var xpos:Number = yAxisOffset;
- var xAxisHeightOffset:Number = axisHeight;
- var useWidth:Number = UIBase(strand).width - yAxisOffset;
- var originX:Number = xpos;
- var originY:Number = UIBase(strand).height - xAxisHeightOffset;
-
// determine minimum and maximum values, if needed
if (isNaN(minValue)) {
minValue = Number.MAX_VALUE;
@@ -222,25 +211,22 @@ package org.apache.flex.charts.beads
var tickValue:Number = minValue;
// place the labels below the axis enough to account for the tick marks
- var labelY:Number = UIBase(strand).height + 8;
+ var labelY:Number = 7;
- for(i=0; i < numTicks+1; i++) {
- var label:Label = new Label();
- label.text = formatLabel(tickValue);
- label.x = xpos - label.width/2;
- label.y = labelY - xAxisHeightOffset;
- UIBase(strand).addElement(label);
+ for(i=0; i < numTicks+1; i++)
+ {
+ addTickLabel(formatLabel(tickValue), xpos, labelY, tickSpacing, 0);
// add a tick mark, too
- addTickMark(xpos - originX, UIBase(strand).height - xAxisHeightOffset - originY, 0, 5);
+ addTickMark(xpos, 0, 0, 5);
xpos += tickSpacing;
tickValue += tickStep;
}
// draw the axis and tick marks
- drawAxisPath(originX, originY, useWidth, 0);
- drawTickPath(originX, originY);
+ drawAxisPath(0, 0, useWidth, 0);
+ drawTickPath(0, 1);
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as
index be405ad..f898f18 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as
@@ -19,16 +19,13 @@
package org.apache.flex.charts.beads
{
import org.apache.flex.charts.core.IChart;
- import org.apache.flex.charts.core.IHorizontalAxisBead;
import org.apache.flex.charts.core.IVerticalAxisBead;
import org.apache.flex.core.IBead;
import org.apache.flex.core.ISelectionModel;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.UIBase;
- import org.apache.flex.core.graphics.Path;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
- import org.apache.flex.html.Label;
import org.apache.flex.html.beads.models.ArraySelectionModel;
/**
@@ -148,38 +145,28 @@ package org.apache.flex.charts.beads
var series:Array = IChart(strand).series;
- var xAxis:IHorizontalAxisBead;
- if (strand.getBeadByType(IHorizontalAxisBead)) xAxis = strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
- var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight;
+ var useHeight:Number = UIBase(axisGroup).height;
+ var useWidth:Number = UIBase(axisGroup).width;
+ var itemHeight:Number = (useHeight - gap*(items.length-1)) / items.length;
+ var xpos:Number = 0;
+ var ypos:Number = useHeight - itemHeight/2;
- var yAxisWidthOffset:Number = axisWidth;
- var useHeight:Number = (UIBase(strand).height-xAxisOffset) / items.length;
- var seriesHeight:Number = useHeight/series.length;
- var xpos:Number = yAxisWidthOffset;
- var ypos:Number = UIBase(strand).height - xAxisOffset - seriesHeight - gap;
- var originX:Number = yAxisWidthOffset;
- var originY:Number = 0;
+ var numTicks:Number = items.length;
+ var tickSpacing:Number = itemHeight + gap;
- // place the labels left of the axis enough to account for the tick marks
- var labelX:Number = 0;
-
- for(var i:int=0; i < items.length; i++) {
- var label:Label = new Label();
- label.text = items[i][categoryField];
- label.x = 0;
- label.y = (ypos + useHeight/2) - label.height/2;
- label.width = yAxisWidthOffset;
- UIBase(strand).addElement(label);
-
- // add a tick mark
- addTickMark(0, ypos + useHeight/2 - originY, 5, 0);
+ for(var i:int=0; i < items.length; i++)
+ {
+ addTickLabel(items[i][categoryField], 0, ypos, 0, itemHeight);
+
+ // add a tick mark, too.
+ addTickMark(useWidth-6, ypos, 5, 0);
- ypos -= useHeight;
+ ypos -= tickSpacing;
}
// draw the axis and tick marks
- drawAxisPath(originX, originY, 0, UIBase(strand).height - xAxisOffset);
- drawTickPath(originX-5, originY);
+ drawAxisPath(useWidth-1, 0, 0, useHeight);
+ drawTickPath(useWidth-6, 0);
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as
index aa98b89..cd3ad95 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as
@@ -19,16 +19,13 @@
package org.apache.flex.charts.beads
{
import org.apache.flex.charts.core.IChart;
- import org.apache.flex.charts.core.IHorizontalAxisBead;
import org.apache.flex.charts.core.IVerticalAxisBead;
import org.apache.flex.core.IBead;
import org.apache.flex.core.ISelectionModel;
import org.apache.flex.core.IStrand;
import org.apache.flex.core.UIBase;
- import org.apache.flex.core.graphics.Path;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
- import org.apache.flex.html.Label;
import org.apache.flex.html.beads.models.ArraySelectionModel;
/**
@@ -172,16 +169,10 @@ package org.apache.flex.charts.beads
var series:Array = IChart(strand).series;
- var xAxis:IHorizontalAxisBead;
- if (strand.getBeadByType(IHorizontalAxisBead)) xAxis = strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
- var xAxisOffset:Number = xAxis == null ? 0 : xAxis.axisHeight;
-
- var yAxisWidthOffset:Number = axisWidth;
- var useHeight:Number = UIBase(strand).height-xAxisOffset;
- var xpos:Number = yAxisWidthOffset;
+ var useHeight:Number = UIBase(axisGroup).height;
+ var useWidth:Number = UIBase(axisGroup).width;
+ var xpos:Number = 0;
var ypos:Number = useHeight;
- var originX:Number = yAxisWidthOffset;
- var originY:Number = 0;
// determine minimum and maximum values, if needed
if (isNaN(minValue)) {
@@ -206,30 +197,23 @@ package org.apache.flex.charts.beads
var tickSpacing:Number = useHeight/numTicks;
var tickValue:Number = minValue;
- // adjust ypos to the first tick position
- ypos = useHeight;// - tickSpacing;
-
// place the labels below the axis enough to account for the tick marks
- var labelY:Number = UIBase(strand).height + 8;
+ var labelY:Number = UIBase(axisGroup).height + 8;
- for(i=0; i < numTicks+1; i++) {
- var label:Label = new Label();
- label.text = formatLabel(tickValue);
- label.x = 0;
- label.y = ypos - label.height/2;
- UIBase(strand).addElement(label);
+ for(i=0; i < numTicks+1; i++)
+ {
+ addTickLabel(formatLabel(tickValue), 0, ypos, 0, tickSpacing);
// add a tick mark, too.
- //addTickMark(xpos - 5 - originX, ypos - originY, 5, 0);
- addTickMark(0, ypos-originY, 5, 0);
+ addTickMark(useWidth-6, ypos, 5, 0);
ypos -= tickSpacing;
tickValue += tickStep;
}
// draw the axis and the tick marks
- drawAxisPath(originX, originY, 0, useHeight);
- drawTickPath(originX-5, originY);
+ drawAxisPath(useWidth-1, 0, 0, useHeight);
+ drawTickPath(useWidth-6, 0);
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 22181e6..e4b0aa1 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
@@ -24,6 +24,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.BarSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -83,18 +84,15 @@ package org.apache.flex.charts.beads.layouts
return;
var n:int = dp.length;
+ var useWidth:Number = UIBase(chartDataGroup).width;
+ var useHeight:Number = UIBase(chartDataGroup).height;
+ var itemHeight:Number = (useHeight - gap*(dp.length-1))/dp.length;
+ var seriesHeight:Number = itemHeight/chart.series.length;
+ var ypos:Number = useHeight;
+
var maxXValue:Number = 0;
var seriesMaxes:Array = [];
- var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight;
- var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth;
-
- 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 = chart.height - xAxisOffset - seriesHeight;
-
for (var s:int = 0; s < chart.series.length; s++)
{
var bcs:BarSeries = chart.series[s] as BarSeries;
@@ -123,8 +121,8 @@ package org.apache.flex.charts.beads.layouts
var child:IChartItemRenderer = chartDataGroup.getItemRendererForSeriesAtIndex(bcs,i);
xValue = Number(data[bcs.xField]);
- child.x = yAxisOffset;
- child.y = ypos;
+ child.x = 0;
+ child.y = ypos - seriesHeight;
child.width = xValue*seriesMaxes[s].scaleFactor;
child.height = seriesHeight;
ypos -= seriesHeight;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 5958614..d7a4784 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
@@ -23,7 +23,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.ColumnSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
- import org.apache.flex.core.IUIBase;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -73,13 +73,10 @@ package org.apache.flex.charts.beads.layouts
if (!dp)
return;
- 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 = chart.width-yAxisOffset;;
- var useHeight:Number = chart.height - xAxisOffset;
+ var n:int = dp.length;
+ var xpos:Number = 0;
+ var useWidth:Number = UIBase(chartDataGroup).width;
+ var useHeight:Number = UIBase(chartDataGroup).height;
var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length;
var seriesWidth:Number = itemWidth/chart.series.length;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 1ba895b..acf33b8 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
@@ -25,6 +25,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.LineSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -54,12 +55,12 @@ package org.apache.flex.charts.beads.layouts
return;
var n:int = dp.length;
- var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight;
- var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth;
+ var xAxisOffset:Number = 0;
+ var yAxisOffset:Number = 0;
var xpos:Number = yAxisOffset;
- var useWidth:Number = chart.width-yAxisOffset;;
- var useHeight:Number = chart.height - xAxisOffset;
+ var useWidth:Number = UIBase(chartDataGroup).width-yAxisOffset;;
+ var useHeight:Number = UIBase(chartDataGroup).height - xAxisOffset;
var itemWidth:Number = useWidth/dp.length;
var maxYValue:Number = 0;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 a126e8c..54769e5 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
@@ -25,6 +25,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.LineSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -54,13 +55,13 @@ package org.apache.flex.charts.beads.layouts
return;
var n:int = dp.length;
- var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight;
- var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth;
+ var xAxisOffset:Number = 0;
+ var yAxisOffset:Number = 0;
var xpos:Number = yAxisOffset;
var ypos:Number = xAxisOffset;
- var useWidth:Number = chart.width - yAxisOffset;;
- var useHeight:Number = chart.height - xAxisOffset;
+ var useWidth:Number = UIBase(chartDataGroup).width - yAxisOffset;;
+ var useHeight:Number = UIBase(chartDataGroup).height - xAxisOffset;
var itemWidth:Number = useWidth/dp.length;
var seriesMaxes:Array = [];
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 08fe213..40bdcf4 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
@@ -115,6 +115,10 @@ package org.apache.flex.charts.beads.layouts
end = start + (360.0 * obj.percent);
var arc:Number = 360.0 * obj.percent;
+ child.x = 0;
+ child.y = 0;
+ child.width = useWidth;
+ child.height = useHeight;
child.centerX = centerX;
child.centerY = centerY;
child.startAngle = start*Math.PI/180;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 bfb1f84..2fafb29 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
@@ -24,6 +24,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.BarSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -85,14 +86,12 @@ package org.apache.flex.charts.beads.layouts
var maxXValue:Number = 0;
var seriesMaxes:Array = [];
- var xAxisOffset:Number = horizontalAxisBead == null ? 0 : horizontalAxisBead.axisHeight;
- var yAxisOffset:Number = verticalAxisBead == null ? 0 : verticalAxisBead.axisWidth;
-
- 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 = chart.height - xAxisOffset - seriesHeight;
+ var useWidth:Number = UIBase(chartDataGroup).width;
+ var useHeight:Number = UIBase(chartDataGroup).height;
+ var itemHeight:Number = (useHeight - gap*(dp.length-1))/n;
+ var seriesHeight:Number = itemHeight;
+ var xpos:Number = 0;
+ var ypos:Number = useHeight;
var barValues:Array = [];
var maxValue:Number = 0;
@@ -121,7 +120,8 @@ package org.apache.flex.charts.beads.layouts
for (i=0; i < n; i++)
{
data = dp[i];
- xpos = yAxisOffset;
+
+ xpos = 0;
for (s=0; s < chart.series.length; s++)
{
@@ -132,13 +132,13 @@ package org.apache.flex.charts.beads.layouts
child.x = xpos;
child.width = xValue*scaleFactor;
- child.y = ypos;
+ child.y = ypos - seriesHeight;
child.height = seriesHeight;
xpos += xValue*scaleFactor;
}
- ypos -= gap + seriesHeight;
+ ypos -= (itemHeight + gap);
}
IEventDispatcher(chart).dispatchEvent(new Event("layoutComplete"));
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/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 5348bb7..b09ff9f 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
@@ -23,6 +23,7 @@ package org.apache.flex.charts.beads.layouts
import org.apache.flex.charts.supportClasses.ColumnSeries;
import org.apache.flex.core.IBeadLayout;
import org.apache.flex.core.ISelectionModel;
+ import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
@@ -81,14 +82,12 @@ package org.apache.flex.charts.beads.layouts
return;
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 ypos:Number = 0;
- var useWidth:Number = chart.width-yAxisOffset;
- var useHeight:Number = chart.height - xAxisOffset;
+ var useWidth:Number = UIBase(chartDataGroup).width;
+ var useHeight:Number = UIBase(chartDataGroup).height;
var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length;
+ var seriesWidth:Number = itemWidth;
+ var xpos:Number = 0;
+ var ypos:Number = 0;
var maxYValue:Number = 0;
@@ -125,12 +124,12 @@ package org.apache.flex.charts.beads.layouts
bcs = chart.series[s] as ColumnSeries;
var child:IChartItemRenderer = chartDataGroup.getItemRendererForSeriesAtIndex(bcs,i);
- yValue = Number(data[bcs.yField]);
+ yValue = Math.floor(Number(data[bcs.yField]));
child.x = xpos;
child.width = itemWidth;
- child.y = ypos - yValue*scaleFactor;
- child.height = yValue*scaleFactor;
+ child.y = ypos - Math.ceil(yValue*scaleFactor);
+ child.height = Math.floor(yValue*scaleFactor);
ypos = child.y;
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGBoxItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGBoxItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGBoxItemRenderer.as
new file mode 100644
index 0000000..5e4f1e5
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGBoxItemRenderer.as
@@ -0,0 +1,207 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.optimized
+{
+ import org.apache.flex.charts.core.IChartItemRenderer;
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.SolidColor;
+ import org.apache.flex.core.graphics.SolidColorStroke;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+
+ /**
+ * The SVGBoxItemRenderer draws its graphics directly into a SVGChartDataGroup
+ * (GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGBoxItemRenderer extends DataItemRenderer implements IChartItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGBoxItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _yField:String = "y";
+
+ /**
+ * The name of the field containing the value for the Y axis.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get yField():String
+ {
+ return _yField;
+ }
+ public function set yField(value:String):void
+ {
+ _yField = value;
+ }
+
+ private var _xField:String = "x";
+
+ /**
+ * The name of the field containing the value for the X axis.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get xField():String
+ {
+ return _xField;
+ }
+ public function set xField(value:String):void
+ {
+ _xField = value;
+ }
+
+ private var _fill:IFill;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fill():IFill
+ {
+ return _fill;
+ }
+ public function set fill(value:IFill):void
+ {
+ _fill = value;
+ }
+
+ private var _stroke:IStroke;
+
+ /**
+ * The outline of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ }
+
+ /**
+ * @copy org.apache.flex.supportClasses.UIItemRendererBase#data
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+ drawBar();
+ }
+
+ /**
+ * @copy org.apache.flex.core.UIBase#width
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set width(value:Number):void
+ {
+ super.width = value;
+ drawBar();
+ }
+
+ /**
+ * @copy org.apache.flex.core.UIBase#height
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set height(value:Number):void
+ {
+ super.height = value;
+ drawBar();
+ }
+
+ /**
+ * @private
+ */
+ protected function drawBar():void
+ {
+ if ((this.width > 0) && (this.height > 0))
+ {
+ var hsdg:SVGChartDataGroup = this.itemRendererParent as SVGChartDataGroup;
+
+ hsdg.fill = fill;
+ hsdg.stroke = stroke;
+ hsdg.drawRect(this.x, this.y, this.width, this.height);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartAxisGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartAxisGroup.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartAxisGroup.as
new file mode 100644
index 0000000..529de40
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartAxisGroup.as
@@ -0,0 +1,142 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.optimized
+{
+ import org.apache.flex.charts.core.IAxisGroup;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
+ import org.apache.flex.core.graphics.IStroke;
+
+ /**
+ * The SVGChartAxisGroup provides a GraphicsContainer whose drawing functions
+ * can be used to display a chart's axis graphics without resorting to the
+ * creation of extra objects.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGChartAxisGroup extends GraphicsContainer implements IAxisGroup
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGChartAxisGroup()
+ {
+ super();
+ }
+
+ /**
+ * @private
+ */
+ override public function addedToParent():void
+ {
+ super.addedToParent();
+ }
+
+ /**
+ * Draws a horizontal tick label centered in the box at the given position.
+ *
+ * @param text The label to display.
+ * @param xpos The x position of the label's upper left corner.
+ * @param ypos The y position of the label's upper left corner.
+ * @param boxWith The size of the box into which the label should be drawn.
+ * @param boxHeight The size of the box into which the label should be drawn.
+ * @param tickFill A fill to use to display the label.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function drawHorizontalTickLabel( text:String, xpos:Number, ypos:Number, boxWidth:Number, boxHeight:Number, tickFill:IFill ):void
+ {
+ fill = tickFill;
+ drawText(text, xpos-boxWidth/2, ypos);
+ }
+
+ /**
+ * Draws a vertical tick label centered in the box at the given position.
+ *
+ * @param text The label to display.
+ * @param xpos The x position of the label's upper left corner.
+ * @param ypos The y position of the label's upper left corner.
+ * @param boxWith The size of the box into which the label should be drawn.
+ * @param boxHeight The size of the box into which the label should be drawn.
+ * @param tickFill A fill to use to display the label.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function drawVerticalTickLabel( text:String, xpos:Number, ypos:Number, boxWidth:Number, boxHeight:Number, tickFill:IFill ):void
+ {
+ fill = tickFill;
+ drawText(text, xpos, ypos-9);
+ }
+
+ /**
+ * Draws an set of tick marks are determined in the marks path.
+ *
+ * @param originX The upper left corner of the space into which the tick marks are drawn.
+ * @param originY The upper left corner of the space into which the tick marks are drawn.
+ * @param width The size of the box into which the tick marks are drawn.
+ * @param height The size of the box into which the tick marks are drawn.
+ * @param tickStroke The stroke to use to display the tick marks.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function drawTickMarks( originX:Number, originY:Number, width:Number, height:Number, marks:String, tickStroke:IStroke ):void
+ {
+ stroke = tickStroke;
+ drawPath(marks);
+ }
+
+ /**
+ * Draws the axis line at the given position.
+ *
+ * @param originX The upper left corner of the space into which the axis line is drawn.
+ * @param originY The upper left corner of the space into which the axis line is drawn.
+ * @param width The size of the box into which the line is drawn.
+ * @param height The size of the box into which the line is drawn.
+ * @param lineStroke The stroke to use to display the line.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function drawAxisLine( originX:Number, originY:Number, width:Number, height:Number, lineStroke:IStroke ):void
+ {
+ stroke = lineStroke;
+ var pathLine:String = "M " + String(originX) + " " + String(originY) + " l "+String(width)+" "+String(height);
+ drawPath(pathLine);
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartDataGroup.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartDataGroup.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartDataGroup.as
new file mode 100644
index 0000000..60e43cc
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGChartDataGroup.as
@@ -0,0 +1,158 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.optimized
+{
+ import org.apache.flex.charts.core.IChartDataGroup;
+ import org.apache.flex.charts.core.IChartItemRenderer;
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.IContentView;
+ import org.apache.flex.core.IItemRenderer;
+ import org.apache.flex.core.IItemRendererParent;
+ import org.apache.flex.core.UIBase;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.events.Event;
+
+ /**
+ * The SVGChartDataGroup serves as the drawing canvas for SVG itemRenderers. Rather than having
+ * individual itemRenderer objects in the display list, this class provides a canvas where the
+ * itemRenderers can draw directly using the flex.core.graphics package.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGChartDataGroup extends GraphicsContainer implements IItemRendererParent, IContentView, IChartDataGroup
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGChartDataGroup()
+ {
+ super();
+
+ _children = new Array();
+
+ addEventListener("widthChanged", resizeContainer);
+ addEventListener("heightChanged", resizeContainer);
+ }
+
+ private var _children:Array;
+
+ /**
+ * @copy org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemRendererForIndex(index:int):IItemRenderer
+ {
+ if (index < 0 || index >= _children.length) return null;
+ return _children[index] as IItemRenderer;
+ }
+
+ /**
+ * Returns the itemRenderer that matches both the series and child index. A null return is
+ * valid since some charts have optional itemRenderers for their series.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemRendererForSeriesAtIndex(series:IChartSeries, index:int):IChartItemRenderer
+ {
+ var n:int = _children.length;
+ for(var i:int=0; i < n; i++)
+ {
+ var child:IChartItemRenderer = _children[i] as IChartItemRenderer;
+ if (child && child.series == series) {
+ if (index == 0) return child;
+ --index;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @copy org.apache.flex.core.IItemRendererParent#removeAllElements()
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function removeAllElements():void
+ {
+ super.removeAllElements();
+ _children = new Array();
+ }
+
+ /**
+ * Overrides the addElement function to set the element into an internal
+ * list.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function addElement(value:Object, dispatchEvent:Boolean = true):void
+ {
+ _children.push(value);
+
+ var base:UIBase = value as UIBase;
+ base.addedToParent();
+ }
+
+ /**
+ * Overrides the addElementAt function to set the element into an internal
+ * list.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function addElementAt(value:Object, index:int, dispatchEvent:Boolean = true):void
+ {
+ if (index >= _children.length) _children.push(value);
+ else _children.splice(index, 0, value);
+
+ var base:UIBase = value as UIBase;
+ base.addedToParent();
+ }
+
+ /**
+ * @private
+ */
+ private function resizeContainer(event:Event) : void
+ {
+ // might need to do something with this
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as
new file mode 100644
index 0000000..d92a0ed
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGLineSegmentItemRenderer.as
@@ -0,0 +1,201 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.optimized
+{
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.Path;
+ import org.apache.flex.core.graphics.SolidColorStroke;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+ import org.apache.flex.charts.supportClasses.ILineSegmentItemRenderer;
+
+ /**
+ * The SVGLineSegmentItemRenderer draws its graphics directly into a SVGChartDataGroup (a
+ * GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGLineSegmentItemRenderer extends DataItemRenderer implements ILineSegmentItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGLineSegmentItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _points:Array;
+
+ /**
+ * The points of the vertices.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get points():Array
+ {
+ return _points;
+ }
+ public function set points(value:Array):void
+ {
+ _points = value;
+ drawLine();
+ }
+
+ private var _stroke:IStroke;
+
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ drawLine();
+ }
+
+ /**
+ * @copy org.apache.flex.supportClasses.UIItemRendererBase#data
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set data(value:Object):void
+ {
+ super.data = value;
+ }
+
+ /**
+ * The name of the field containing the value for the Y axis. This is not implemented by this class.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get yField():String
+ {
+ return null;
+ }
+ public function set yField(value:String):void
+ {
+ }
+
+ /**
+ * The name of the field containing the value for the X axis. This is not implemented by this class.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get xField():String
+ {
+ return null;
+ }
+ public function set xField(value:String):void
+ {
+ }
+
+ private var _fillColor:uint;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fillColor():uint
+ {
+ return _fillColor;
+ }
+ public function set fillColor(value:uint):void
+ {
+ _fillColor = value;
+ }
+
+ /**
+ * @private
+ */
+ protected function drawLine():void
+ {
+ if (points != null)
+ {
+ var graphicsContainer:GraphicsContainer = this.itemRendererParent as GraphicsContainer;
+
+ if (stroke == null) {
+ var solidColorStroke:SolidColorStroke = new SolidColorStroke();
+ solidColorStroke.color = 0x000088;
+ solidColorStroke.weight = 1;
+ solidColorStroke.alpha = 1;
+ _stroke = solidColorStroke;
+ }
+
+ graphicsContainer.stroke = stroke;
+ graphicsContainer.fill = null;
+
+ var pathString:String = "";
+
+ for (var i:int=0; i < points.length; i++) {
+ var point:Object = points[i];
+ if (i == 0) pathString += "M "+point.x+" "+point.y+" ";
+ else pathString += "L "+point.x+" "+point.y+" ";
+ }
+
+ graphicsContainer.drawPath(pathString);
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as
new file mode 100644
index 0000000..03e0195
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/optimized/SVGWedgeItemRenderer.as
@@ -0,0 +1,281 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.optimized
+{
+ import org.apache.flex.charts.core.IChartSeries;
+ import org.apache.flex.core.graphics.GraphicsContainer;
+ import org.apache.flex.core.graphics.IFill;
+ import org.apache.flex.core.graphics.IStroke;
+ import org.apache.flex.core.graphics.Path;
+ import org.apache.flex.html.supportClasses.DataItemRenderer;
+ import org.apache.flex.charts.supportClasses.IWedgeItemRenderer;
+
+ /**
+ * The SVGWedgeItemRenderer draws its graphics directly into a SVGChartDataGroup
+ * (a GraphicsContainer).
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class SVGWedgeItemRenderer extends DataItemRenderer implements IWedgeItemRenderer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function SVGWedgeItemRenderer()
+ {
+ super();
+ }
+
+ private var _series:IChartSeries;
+
+ /**
+ * The series to which this itemRenderer instance belongs. Or, the series
+ * being presented.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get series():IChartSeries
+ {
+ return _series;
+ }
+ public function set series(value:IChartSeries):void
+ {
+ _series = value;
+ }
+
+ private var _centerX:Number;
+
+ /**
+ * The X coordinate of the center of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get centerX():Number
+ {
+ return _centerX;
+ }
+ public function set centerX(value:Number):void
+ {
+ _centerX = value;
+ drawWedgeInternal();
+ }
+
+ private var _centerY:Number;
+
+ /**
+ * The Y coordinate of the center of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get centerY():Number
+ {
+ return _centerY;
+ }
+ public function set centerY(value:Number):void
+ {
+ _centerY = value;
+ drawWedgeInternal();
+ }
+
+ private var _startAngle:Number;
+
+ /**
+ * The starting angle (radians) of the wedge.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get startAngle():Number
+ {
+ return _startAngle;
+ }
+ public function set startAngle(value:Number):void
+ {
+ _startAngle = value;
+ drawWedgeInternal();
+ }
+
+ private var _arc:Number;
+
+ /**
+ * The sweep (radians) of the wedge, relative to the startAngle.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get arc():Number
+ {
+ return _arc;
+ }
+ public function set arc(value:Number):void
+ {
+ _arc = value;
+ drawWedgeInternal();
+ }
+
+ private var _radius:Number;
+
+ /**
+ * The radius of the pie.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get radius():Number
+ {
+ return _radius;
+ }
+ public function set radius(value:Number):void
+ {
+ _radius = value;
+ drawWedgeInternal();
+ }
+
+ private var _fill:IFill;
+
+ /**
+ * The color used to fill the interior of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get fill():IFill
+ {
+ return _fill;
+ }
+ public function set fill(value:IFill):void
+ {
+ _fill = value;
+ }
+
+ private var _stroke:IStroke;
+
+ /**
+ * The outline of the box.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get stroke():IStroke
+ {
+ return _stroke;
+ }
+ public function set stroke(value:IStroke):void
+ {
+ _stroke = value;
+ }
+
+ /**
+ * @private
+ */
+ private function drawWedgeInternal():void
+ {
+ if ( !isNaN(centerX) && !isNaN(centerY) && !isNaN(startAngle) && !isNaN(arc) && !isNaN(radius) ) {
+ drawWedge(centerX, centerY, startAngle, arc, radius, radius, false);
+ }
+ }
+
+ /**
+ * @private
+ *
+ * Draw a wedge of a circle
+ * @param graphics the graphics object to draw into
+ * @param x the x center of the circle
+ * @param y the y center of the circle
+ * @param startAngle start angle (radians)
+ * @param arc sweep angle (radians)
+ * @param radius radius of the circle
+ * @param yRadius vertical radius (or radius if none given)
+ * @param continueFlag if true, uses a moveTo call to start drawing at the start point of the circle; else continues drawing using only lineTo and curveTo
+ *
+ */
+ public function drawWedge(x:Number, y:Number,
+ startAngle:Number, arc:Number,
+ radius:Number, yRadius:Number = NaN,
+ continueFlag:Boolean = false):void
+ {
+ var graphicsContainer:GraphicsContainer = this.itemRendererParent as GraphicsContainer;
+
+ var x1:Number = x + radius * Math.cos(startAngle);
+ var y1:Number = y + radius * Math.sin(startAngle);
+ var x2:Number = x + radius * Math.cos(startAngle + arc);
+ var y2:Number = y + radius * Math.sin(startAngle + arc);
+
+ var pathString:String = 'M' + x + ' ' + y + ' L' + x1 + ' ' + y1 + ' A' + radius + ' ' + radius +
+ ' 0 0 1 ' + x2 + ' ' + y2 + ' z';
+
+ graphicsContainer.fill = fill;
+ graphicsContainer.stroke = stroke;
+ graphicsContainer.drawPath(pathString);
+ }
+
+ /*
+ * Ignored by WedgeItemRenderer
+ */
+
+ /**
+ * @private
+ */
+ public function get xField():String
+ {
+ return null;
+ }
+ public function set xField(value:String):void
+ {
+ }
+
+ /**
+ * @private
+ */
+ public function get yField():String
+ {
+ return null;
+ }
+ public function set yField(value:String):void
+ {
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/32cd93b6/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
deleted file mode 100644
index a85b554..0000000
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/optimized/SVGBoxItemRenderer.as
+++ /dev/null
@@ -1,207 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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.supportClasses.optimized
-{
- import org.apache.flex.charts.core.IChartItemRenderer;
- import org.apache.flex.charts.core.IChartSeries;
- import org.apache.flex.core.graphics.GraphicsContainer;
- import org.apache.flex.core.graphics.IFill;
- import org.apache.flex.core.graphics.IStroke;
- import org.apache.flex.core.graphics.SolidColor;
- import org.apache.flex.core.graphics.SolidColorStroke;
- import org.apache.flex.html.supportClasses.DataItemRenderer;
-
- /**
- * The SVGBoxItemRenderer draws its graphics directly into a SVGChartDataGroup
- * (GraphicsContainer).
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public class SVGBoxItemRenderer extends DataItemRenderer implements IChartItemRenderer
- {
- /**
- * constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function SVGBoxItemRenderer()
- {
- super();
- }
-
- private var _series:IChartSeries;
-
- /**
- * The series to which this itemRenderer instance belongs. Or, the series
- * being presented.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get series():IChartSeries
- {
- return _series;
- }
- public function set series(value:IChartSeries):void
- {
- _series = value;
- }
-
- private var _yField:String = "y";
-
- /**
- * The name of the field containing the value for the Y axis.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get yField():String
- {
- return _yField;
- }
- public function set yField(value:String):void
- {
- _yField = value;
- }
-
- private var _xField:String = "x";
-
- /**
- * The name of the field containing the value for the X axis.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get xField():String
- {
- return _xField;
- }
- public function set xField(value:String):void
- {
- _xField = value;
- }
-
- private var _fill:IFill;
-
- /**
- * The color used to fill the interior of the box.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get fill():IFill
- {
- return _fill;
- }
- public function set fill(value:IFill):void
- {
- _fill = value;
- }
-
- private var _stroke:IStroke;
-
- /**
- * The outline of the box.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get stroke():IStroke
- {
- return _stroke;
- }
- public function set stroke(value:IStroke):void
- {
- _stroke = value;
- }
-
- /**
- * @copy org.apache.flex.supportClasses.UIItemRendererBase#data
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- override public function set data(value:Object):void
- {
- super.data = value;
- drawBar();
- }
-
- /**
- * @copy org.apache.flex.core.UIBase#width
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- override public function set width(value:Number):void
- {
- super.width = value;
- drawBar();
- }
-
- /**
- * @copy org.apache.flex.core.UIBase#height
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- override public function set height(value:Number):void
- {
- super.height = value;
- drawBar();
- }
-
- /**
- * @private
- */
- protected function drawBar():void
- {
- if ((this.width > 0) && (this.height > 0))
- {
- var hsdg:SVGChartDataGroup = this.itemRendererParent as SVGChartDataGroup;
-
- hsdg.fill = fill;
- hsdg.stroke = stroke;
- hsdg.drawRect(this.x, this.y, this.width, this.height);
- }
- }
- }
-}
\ No newline at end of file