The following code generates bar chart.And the bar chart can be
drilldown based on adding Levels in the following Zoomintoseries().
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox height="180" width="100%" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.charts.HitData;
import mx.charts.events.ChartItemEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
private var ws:WebService;
private var Level:int = 0;
private var Cdtxt:String = "";
private var LocCd:String = "";
private var Cd:String = "";
[Bindable]
public var dpac:ArrayCollection = new ArrayCollection
public var initSeriesArray:Array = new Array();
public var level:Number = 1;
public var newSeries:Array;
[Bindable]
public var drillDownDataSet:ArrayCollection;
[Bindable]
public var dp:ArrayCollection = dpac;
override public function set data(value:Object):void
{
super.data = value;
if (value.hasOwnProperty("detail2"))
//column.dataProvider = value.detail2;
dp = value.detail2;
dpac = dp
}
private function initApp():void
{
// Get initial series Array -- to be reloaded when it returns
// from a drill down.
initSeriesArray = column.series;
}
private function zoomIntoSeries(e:ChartItemEvent):void
{
e.stopImmediatePropagation();
var hitData:HitData = e.hitData;
if (Level==0)
{
Cdtxt = "DRILL1"
LocCd = hitData.item.CUST;
Cd = "";
}
else if (Level==1)
{
Cdtxt = "DRILL2"
LocCd = hitData.item.LOC;
Cd = hitData.item.CUST;
}
else
{
Cdtxt = "DRILL"
LocCd = hitData.item.LOC;
Cd = "";
}
ws = new WebService();
ws.wsdl="http://localhost/ds/Service1.asmx?WSDL";
ws.addEventListener("result", echoResultHandler);
ws.addEventListener("fault", faultHandler);
ws.loadWSDL();
ws.search("Test_Test", Cdtxt, Cd, "", LocCd, "", "", "");
}
private function echoResultHandler(event:ResultEvent):void
{
var pietmpArr:ArrayCollection = new ArrayCollection();
var TmpArr:ArrayCollection = new ArrayCollection();
pietmpArr = event.result.Tables.Table.Rows;
for (var i:int=0; i<=pietmpArr.length-1;i++)
{
var TmpObj:Object = new Object();
TmpObj['CUST'] = pietmpArr[i].ACT
TmpObj['VALUE'] = pietmpArr[i].VAL
TmpObj['LOC'] = pietmpArr[i].CD
TmpArr.addItem(TmpObj);
}
dp = TmpArr
if (Cdtxt == "DRILL")
{
Level = 0
}
else
{
Level = Level + 1
}
}
private function faultHandler(event:FaultEvent):void
{
Alert.show("Bye")
}
]]>
</mx:Script>
<mx:SeriesSlide id="slideIn" duration="1000" direction="down"/>
<mx:SeriesSlide id="slideOut" duration="1000" direction="up"/>
<mx:ColumnChart id="column"
height="180"
width="395"
showDataTips="true"
x="1" y="311"
dataProvider="{dp}"
itemClick="zoomIntoSeries(event)"
type="stacked">
<mx:horizontalAxis>
<mx:CategoryAxis id="ca1" categoryField="CUST"/>
</mx:horizontalAxis>
<mx:series>
<mx:ColumnSeries id="s1"
xField="CUST"
yField="VALUE"
displayName="VALUE"
hideDataEffect="slideOut"
showDataEffect="slideIn"
/>
<!-- <mx:ColumnSeries id="s2"
xField="CUST"
yField="VAL1"
displayName="VAL1"
click="zoomIntoSeries(event)"
/>-->
</mx:series>
</mx:ColumnChart>
<mx:Legend dataProvider="{column}"/>
</mx:VBox>
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox height="180" width="100%" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.charts.HitData;
import mx.charts.events.ChartItemEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
private var ws:WebService;
private var Level:int = 0;
private var Cdtxt:String = "";
private var LocCd:String = "";
private var Cd:String = "";
[Bindable]
public var dpac:ArrayCollection = new ArrayCollection
public var initSeriesArray:Array = new Array();
public var level:Number = 1;
public var newSeries:Array;
[Bindable]
public var drillDownDataSet:ArrayCollection;
[Bindable]
public var dp:ArrayCollection = dpac;
override public function set data(value:Object):void
{
super.data = value;
if (value.hasOwnProperty("detail2"))
//column.dataProvider = value.detail2;
dp = value.detail2;
dpac = dp
}
private function initApp():void
{
// Get initial series Array -- to be reloaded when it returns
// from a drill down.
initSeriesArray = column.series;
}
private function zoomIntoSeries(e:ChartItemEvent):void
{
e.stopImmediatePropagation();
var hitData:HitData = e.hitData;
if (Level==0)
{
Cdtxt = "DRILL1"
LocCd = hitData.item.CUST;
Cd = "";
}
else if (Level==1)
{
Cdtxt = "DRILL2"
LocCd = hitData.item.LOC;
Cd = hitData.item.CUST;
}
else
{
Cdtxt = "DRILL"
LocCd = hitData.item.LOC;
Cd = "";
}
ws = new WebService();
ws.wsdl="http://localhost/ds/Service1.asmx?WSDL";
ws.addEventListener("result", echoResultHandler);
ws.addEventListener("fault", faultHandler);
ws.loadWSDL();
ws.search("Test_Test", Cdtxt, Cd, "", LocCd, "", "", "");
}
private function echoResultHandler(event:ResultEvent):void
{
var pietmpArr:ArrayCollection = new ArrayCollection();
var TmpArr:ArrayCollection = new ArrayCollection();
pietmpArr = event.result.Tables.Table.Rows;
for (var i:int=0; i<=pietmpArr.length-1;i++)
{
var TmpObj:Object = new Object();
TmpObj['CUST'] = pietmpArr[i].ACT
TmpObj['VALUE'] = pietmpArr[i].VAL
TmpObj['LOC'] = pietmpArr[i].CD
TmpArr.addItem(TmpObj);
}
dp = TmpArr
if (Cdtxt == "DRILL")
{
Level = 0
}
else
{
Level = Level + 1
}
}
private function faultHandler(event:FaultEvent):void
{
Alert.show("Bye")
}
]]>
</mx:Script>
<mx:SeriesSlide id="slideIn" duration="1000" direction="down"/>
<mx:SeriesSlide id="slideOut" duration="1000" direction="up"/>
<mx:ColumnChart id="column"
height="180"
width="395"
showDataTips="true"
x="1" y="311"
dataProvider="{dp}"
itemClick="zoomIntoSeries(event)"
type="stacked">
<mx:horizontalAxis>
<mx:CategoryAxis id="ca1" categoryField="CUST"/>
</mx:horizontalAxis>
<mx:series>
<mx:ColumnSeries id="s1"
xField="CUST"
yField="VALUE"
displayName="VALUE"
hideDataEffect="slideOut"
showDataEffect="slideIn"
/>
<!-- <mx:ColumnSeries id="s2"
xField="CUST"
yField="VAL1"
displayName="VAL1"
click="zoomIntoSeries(event)"
/>-->
</mx:series>
</mx:ColumnChart>
<mx:Legend dataProvider="{column}"/>
</mx:VBox>
No comments:
Post a Comment