Friday, 12 April 2013

Barchartrenderer.mxml

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>

No comments:

Post a Comment