Hey Tom,
When trying the code below, I get "VerifyError: Error #1014: Class
IVisualElement could not be found".
The code should be cut and past friendly, with only
xmlns:axiis1="org.axiis.*" and xmlns:scale="org.axiis.layouts.scale.*"
namespace references being changed from the LineAreaSeriesExample.html
example on the Axiis website.
Any thoughts on this would be good because the error occurs at compile
time, and give no pointer to the nature of the problem/where it
occurs.
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="
http://ns.adobe.com/mxml/2009"
xmlns:s="library://
ns.adobe.com/flex/spark"
xmlns:mx="library://
ns.adobe.com/flex/halo"
xmlns:charts="org.axiis.charts.*"
creationComplete="start();"
xmlns:series="org.axiis.charts.series.*"
xmlns:groupings="org.axiis.charts.groupings.*"
xmlns:degrafa="
http://www.degrafa.com/2007"
xmlns:states="org.axiis.states.*"
xmlns:paint="org.axiis.paint.*"
xmlns:Examples="Examples.*"
xmlns:axis="org.axiis.charts.axis.*"
xmlns:labels="org.axiis.charts.labels.*"
xmlns:utils="org.axiis.utils.*"
xmlns:axiis1="org.axiis.*"
xmlns:scale="org.axiis.layouts.scale.*">
<fx:Style source="styles/Axiis_Examples.css"/>
<fx:Script>
<![CDATA[
import org.axiis.data.DataSet;
private var ds:DataSet = new DataSet();
public function start():void
{
ds.processCsvAsTable(payload, false);
ds.pivotTable(0);
ds.aggregateData(ds.data.pivot, "rows.columns",
["value"]);
vScale.maxValue =
ds.data.pivot.aggregates.columns_value_max / 6;
dataProvider = ds.data.pivot.rows;
dc.invalidateDisplayList();
}
private function axisLabel(obj:Object):String
{
return formatter.format(Number(obj) / 1000);
}
private function filterColumns(obj:Object):Boolean
{
//Don't want filter fields, trim columns
if (obj.index < 1 || obj.index > dataSlice.value)
return false;
else
return true;
}
private function filterRows(obj:Object):Boolean
{
//Trim our rows
if (obj.columns[0].value == "Baseline")
return false;
else
return true;
}
]]>
</fx:Script>
<fx:Declarations>
<fx:String id="payload" source="data/LineSeriesData.csv"/>
<mx:CurrencyFormatter currencySymbol="k"
precision="0"
id="formatter"
alignSymbol="right"
useThousandsSeparator="true"/>
<!-- GLOBAL VARIABLES -->
<fx:Object id="dataProvider"/>
<fx:String id="verticalField"/>
<fx:Number id="percentGap">.02</fx:Number>
<!-- EXPRESSIONS -->
<utils:NumericExpression id="tension" value="{slider.value/210}"
valueChanged="{if (myLineGroup) dc.invalidateDisplayList();}"/>
<!-- CHART -->
<scale:LinearScale dataProvider="{dataProvider}"
minLayout="0"
maxLayout="{myLineGroup.height}"
id="vScale"
minValue="{(layoutGroup.selectedValue ==
LineSeriesGroup.MODE_STACK_FLOW) ? -Number(vScale.maxValue) : 0}"/>
<!-- FILLS & STROKES -->
<fx:Array id="palettes">
<paint:LayoutAutoPalette id="outerPalette"
layout="{myLineGroup}" colorFrom="0xCC3333" colorTo="0x3333CC"/>
<paint:LayoutAutoPalette id="clusterPalette"
layout="{myLineGroup}" colorFrom="{outerPalette.currentColor}"
colorTo="{outerPalette.currentColor | 0x337f00}"/>
<paint:LayoutAutoPalette id="areaPalette"
layout="{myLineGroup.plotLayout}" colorFrom="0x3333CC"
colorTo="0xCC3333"/>
</fx:Array>
<fx:Array id="fills">
<degrafa:LinearGradientFill id="areaFill" angle="90"
enableEvents="false">
<degrafa:GradientStop color="{areaPalette.currentColor}"
alpha=".95"/>
<degrafa:GradientStop color="{areaPalette.currentColor |
0x999933}" alpha=".65"/>
</degrafa:LinearGradientFill>
<degrafa:LinearGradientFill id="clusterFill" angle="45"
enableEvents="false">
<degrafa:GradientStop
color="{clusterPalette.currentColor}"/>
<degrafa:GradientStop color="{clusterPalette.currentColor
| 0xFFFFFF}" alpha=".85"/>
</degrafa:LinearGradientFill>
</fx:Array>
<fx:Array id="strokes">
<degrafa:LinearGradientStroke id="colStroke"
pixelHinting="true" angle="45" enableEvents="false">
<degrafa:GradientStop color="0xFFFFFF" alpha=".7"/>
<degrafa:GradientStop color="0xFFFFFF" alpha=".3"/>
</degrafa:LinearGradientStroke>
<degrafa:SolidStroke color="0xFFFFFF" alpha=".3"/>
<degrafa:SolidStroke color="0x222222" id="axisStroke"
pixelHinting="true"/>
<degrafa:SolidStroke color="{areaPalette.currentColor}"
id="myStroke"
weight="1"
alpha="1"
caps="none"
pixelHinting="true"/>
</fx:Array>
</fx:Declarations>
<Examples:ExampleBackground width="100%" height="100%"
title="Horizontal Chart" subTitle="Lines and Areas"/>
<axiis1:DataCanvas width="80%"
id="dc"
top="120"
bottom="100"
horizontalCenter="0"
strokes="{strokes}"
fills="{fills}"
palettes="{palettes}"
showDataTips="true">
<!-- Background -->
<axiis1:backgroundGeometries>
<axis:VAxis verticalScale="{vScale}"
tickStroke="{axisStroke}"
width="{dc.width}"
height="{myLineGroup.height}"
emitDataTips="false"
fontFamily="Myriad Pro"
fontColor="0"
fontSize="14"
tickGap="5"
majorTickSpacing="50"
labelFunction="{axisLabel}"/>
<degrafa:Line x="0"
x1="{myLineGroup.x+myLineGroup.width}"
y="{myLineGroup.height}"
y1="{myLineGroup.height}"
stroke="{axisStroke}"/>
</axiis1:backgroundGeometries>
<!-- Layouts -->
<axiis1:layouts>
<groupings:LineSeriesGroup id="myLineGroup"
x="10"
y="0"
height="{dc.height-70}"
width="{dc.width-35}"
tension="{tension.value}"
markerColor="{areaPalette.currentColor}"
dataFilterFunction="{filterRows}"
showArea="{area.selected}"
plotFilterFunction="{filterColumns}"
markerSize="8"
showMarker="{showMarker.selected}"
mode="{int(layoutGroup.selectedValue)}"
dataProvider="{dataProvider}"
plotCollection="columns"
dataField="value"
verticalScale="{vScale}"
stroke="{myStroke}"
fill="{areaFill}"/>
</axiis1:layouts>
</axiis1:DataCanvas>
<!-- DISPLAY OBJECTS -->
<mx:HBox id="myBox" bottom="50" horizontalCenter="0">
<mx:HBox>
<mx:Label text="Line Curve" textAlign="right"
verticalCenter="0"/>
<mx:HSlider width="80"
id="slider"
minimum="1"
maximum="80"
value="35"
liveDragging="true"
showTrackHighlight="false"
verticalCenter="-5"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="% Data" textAlign="right"
verticalCenter="0"/>
<mx:HSlider width="80"
id="dataSlice"
minimum="3"
maximum="220"
value="30"
snapInterval="1"
change="{dc.invalidateDisplayList();
myLineGroup.invalidateDataProvider();}"
showTrackHighlight="false"
verticalCenter="-5"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="Area" textAlign="right" verticalCenter="0"/
>
<mx:CheckBox id="area" change="{dc.invalidateDisplayList
();}" selected="true"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:HBox>
<mx:Label text="Marker" textAlign="right"
verticalCenter="0"/>
<mx:CheckBox id="showMarker"
change="{dc.invalidateDisplayList();}"/>
</mx:HBox>
<mx:Label text="|"/>
<mx:Spacer width="20"/>
<mx:HBox>
<mx:RadioButtonGroup id="layoutGroup"
change="{dc.invalidateDisplayList();}"/>
<mx:RadioButton label="Overlay" group="{layoutGroup}"
value="{LineSeriesGroup.MODE_BASELINE}" selected="true"/>
<mx:RadioButton label="Stack" group="{layoutGroup}"
value="{LineSeriesGroup.MODE_STACK_ZERO}"/>
<mx:RadioButton label="Flow" group="{layoutGroup}"
value="{LineSeriesGroup.MODE_STACK_FLOW}"/>
</mx:HBox>
</mx:HBox>
</s:Application>