<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:parallel="org.un.cava.birdeye.qavis.parallel.*"
    xmlns:util="com.michaelvandaniker.visualization.util.*"
    backgroundColor="0xffffff"
    backgroundGradientColors="[0xffffff,0xffffff]"
    initialize="start()" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            import mx.managers.ToolTipManager;
            
            private const toolTipFields:Array = ["Cereal","Calories","Protein","Fat",
                "Sodium","Fiber","Carbohydrates","Sugars","Potassium","Vitamins"]; 
            
            private function start():void
            {
                ToolTipManager.showDelay = 0;
                csv.parse();
            }
            
            private function writeSelectedItemsLabel(arr:Array):String
            {
                var toReturn:String = "";
                for(var a:int = 0; a < arr.length; a++)
                {
                    toReturn += arr[a]["Cereal"];
                    if(a < arr.length - 1)
                        toReturn += ", ";
                }
                return toReturn;
            }
            
            private function writeToolTip(toolTipItems:Array):String
            {
                if(toolTipItems.length == 0)
                {
                    return "";
                }
                else if(toolTipItems.length == 1)
                {
                    var toReturn:String = "";
                    for each(var cereal:Object in toolTipItems)
                    {
                        for each(var field:String in toolTipFields)
                        {
                            toReturn += field + ": " + cereal[field] + "\n";
                        }
                    }
                    return toReturn;
                }
                else
                {
                    return toolTipItems.length + " cereals";
                }
            } 
        ]]>
    </mx:Script>
    
    <util:CSVParser id="csv">
        <mx:String source="/data/cereal.csv"/>
    </util:CSVParser>
    
    <parallel:ParallelCoordinatePlot id="pcp"
        dataProvider="{csv.rows}" toolTipFunction="{writeToolTip}"
        width="100%" height="100%">
        <parallel:axisRenderers>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Calories"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Protein"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Fat"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Sodium"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Fiber"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Carbohydrates"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Sugars"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Potassium"/>
            <parallel:ParallelCoordinateAxisRenderer fieldName="Vitamins"/>
        </parallel:axisRenderers>
    </parallel:ParallelCoordinatePlot>
    
    <mx:Label text="{writeSelectedItemsLabel(pcp.selectedItems)}"/>
    
</mx:Application>