<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
    
    
    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            import mx.controls.LinkButton;
            import mx.collections.IViewCursor;
            import mx.charts.series.items.LineSeriesItem;
            import mx.charts.events.ChartItemEvent;
            
            
        
            
            private var startIndex:Number=0;
            private var endIndex:Number=0;
            
            private function onSelectedItems( event:ChartItemEvent ):void
            {
                var a:Array = chart.selectedChartItems;
                var len:int = a.length;
                
                if( len > 1 )
                {
                    startIndex = LineSeriesItem( a[0] ).index + startIndex;
                    endIndex = startIndex + len -1 ;                
                    dummy1.refresh();
                    trace(">>>>> ", startIndex, endIndex );
                }
                
                var ui:LinkButton = new LinkButton();
                ui.label = startIndex + "-" + endIndex + "->";
                
                ui.data = {start: startIndex , end:endIndex};
                ui.addEventListener( MouseEvent.CLICK,onClickFallBack , false, 0 , true );
                drillBox.addChild( ui );
            }
            
            private function ff( item:Object ):Boolean
            {
                
                
                var i:int = 
                dummy1.list.getItemIndex( item );
                if( i < startIndex || i>endIndex )
                    return false                
                
                return true;    
            }
            
            private function reset():void
            {
                startIndex = 0;
                endIndex = 0;
                dummy1.filterFunction = null;
                dummy1.refresh();
                dummy1.filterFunction = ff;
                
                var len:int = drillBox.numChildren-1
                for( var i:int = len; i > 0 ; i-- )
                {
                    drillBox.removeChildAt(i);
                    
                }
            }
            
            
            
            
            private function onClickFallBack(e:MouseEvent):void
            {
                var b:LinkButton = e.currentTarget as LinkButton;
                drillIntoByRange( b.data );
                
                var c:int = drillBox.getChildIndex( b );
                
                
                var len:int = drillBox.numChildren-1;
                for( var i:int=len ;i>c;i--)
                {
                    drillBox.removeChildAt( i );
                }
                
            }
            
            private function drillIntoByRange( d:Object):void
            {
                startIndex = d.start;
                endIndex = d.end;
                dummy1.refresh();
            }
            
            
        ]]>
    </mx:Script>
    
    <mx:Panel width="90%" height="90%" horizontalCenter="0" verticalCenter="0">
    
        <mx:HBox id="drillBox" horizontalGap="1" paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10">
            <mx:LinkButton label="Rest=>" click="reset();"/>
        </mx:HBox>
        
        <mx:LineChart id="chart" 
            width="100%" height="100%" showAllDataTips="true" selectionMode="multiple" change="onSelectedItems(event)">
            <mx:series>
                <mx:LineSeries id="ls1" dataProvider="{dummy1}" yField="value" showDataEffect="{interpolateIn}"/>
            </mx:series>
        </mx:LineChart>
    </mx:Panel>
    
    <mx:SeriesInterpolate id="interpolateIn" duration="300"/>


    <mx:ArrayCollection id="dummy1" filterFunction="{ff}" >
        <mx:Object label="a1" value="190"/>
        <mx:Object label="a2" value="920"/>
        <mx:Object label="a3" value="90"/>
        <mx:Object label="a4" value="650"/>
        <mx:Object label="a5" value="290"/>
        <mx:Object label="a7" value="490"/>
        <mx:Object label="a6" value="390"/>
        <mx:Object label="a12" value="990"/>
        <mx:Object label="a8" value="90"/>
        <mx:Object label="a9" value="590"/>
        <mx:Object label="a10" value="90"/>
        <mx:Object label="a11" value="890"/>
        <mx:Object label="b3" value="300"/>
        <mx:Object label="b2" value="200"/>
        <mx:Object label="b6" value="600"/>
        <mx:Object label="b1" value="100"/>
        <mx:Object label="b7" value="700"/>
        <mx:Object label="b5" value="500"/>
        <mx:Object label="b4" value="400"/>
        <mx:Object label="b11" value="1200"/>
        <mx:Object label="b8" value="800"/>
        <mx:Object label="b12" value="1300"/>
        <mx:Object label="b9" value="900"/>
        <mx:Object label="b10" value="1000"/>
    </mx:ArrayCollection>
    
    
</mx:Application>