<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="hbox1_creationCompleteHandler(event)"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" xmlns:nestedtreedatagrid="com.flexicious.nestedtreedatagrid.*">
<fx:Script>
<![CDATA[
import com.flexicious.example.model.billing.LineItem;
import com.flexicious.example.utils.ExampleUtils;
import com.flexicious.nestedtreedatagrid.cells.FlexDataGridCell;
import com.flexicious.nestedtreedatagrid.cells.FlexDataGridFooterCell;
import com.flexicious.nestedtreedatagrid.interfaces.IFlexDataGridCell;
import com.flexicious.nestedtreedatagrid.utils.ExtendedUIUtils;
import com.flexicious.nestedtreedatagrid.valueobjects.RowInfo;
import com.flexicious.nestedtreedatagrid.valueobjects.RowPositionInfo;
import com.flexicious.utils.UIUtils;
import mock.FlexiciousMockGenerator;
import mx.collections.ArrayCollection;
import mx.collections.HierarchicalCollectionView;
import mx.collections.HierarchicalData;
import mx.collections.IList;
import mx.collections.XMLListCollection;
import mx.events.FlexEvent;
import pdf.AlivePdfGenerator;
protected function hbox1_creationCompleteHandler(event:FlexEvent):void
{
}
private function getDataValue(item:Object,col:FlexDataGridColumn,cell:IFlexDataGridCell=null):String{
var val:Object="";
var nestDepth:int=cell.level.nestDepth;
if(nestDepth==3){
val=ExtendedUIUtils.resolveExpression(item, col.dataField)
return val?UIUtils.formatCurrency(parseFloat(val.toString())):"";
}
return getTotal(item,nestDepth+1,col.dataField,false);
}
private function getFooter(cell:FlexDataGridFooterCell):String{
var val:Object=cell.rowInfo.data;
return getTotal(val,cell.level.nestDepth,cell.column.dataField,true);
}
private function getTotal(val:Object,nestDepth:int,dataField:String,usePrefix:Boolean):*{
var arr:Object=[];
var lbl:String="";
var regionGroup:Object
var region:Object
var rep:Object
if(val is IList || val is Array){
for each( regionGroup in val){
for each( region in regionGroup.children()){
for each( rep in region.children()){
arr.push({"value":rep[dataField]});
}
}
}
}
else if(nestDepth==1){
for each( regionGroup in val.children()){
for each( region in regionGroup.children()){
for each( rep in region.children()){
arr.push({"value":rep[dataField]});
}
}
}
}
else if(nestDepth==2){
for each(var region1:Object in val.children()){
for each(var rep1:Object in region1.children()){
arr.push({"value":rep1[dataField]});
}
}
lbl="Region "
}
else if(nestDepth==3){
for each(var rep2:Object in val.children()){
arr.push({"value":rep2[dataField]});
}
lbl="State "
}
return (usePrefix?lbl+"Sum:":"")+ UIUtils.formatCurrency(UIUtils.sum(arr,"value"));
}
]]>
</fx:Script>
<fx:Declarations>
<fx:XMLList id="dpHierarchyXML" >
<Region Region="Southwest">
<Region Region="Arizona">
<Territory_Rep Territory_Rep="Barbara Jennings"
Actual="38865" Estimate="40000"/>
<Territory_Rep Territory_Rep="Dana Binn"
Actual="29885" Estimate="30000"/>
</Region>
<Region Region="Central California">
<Territory_Rep Territory_Rep="Joe Smith"
Actual="29134" Estimate="30000"/>
</Region>
<Region Region="Nevada">
<Territory_Rep Territory_Rep="Bethany Pittman"
Actual="52888" Estimate="45000"/>
</Region>
<Region Region="Northern California">
<Territory_Rep Territory_Rep="Lauren Ipsum"
Actual="38805" Estimate="40000"/>
<Territory_Rep Territory_Rep="T.R. Smith"
Actual="55498" Estimate="40000"/>
</Region>
<Region Region="Southern California">
<Territory_Rep Territory_Rep="Alice Treu"
Actual="44985" Estimate="45000"/>
<Territory_Rep Territory_Rep="Jane Grove"
Actual="44913" Estimate="45000"/>
</Region>
</Region>
<Region Region="Northeast">
<Region Region="New York">
<Territory_Rep Territory_Rep="Alex Smith"
Actual="49229" Estimate="50000"/>
<Territory_Rep Territory_Rep="Joe Pittman"
Actual="35555" Estimate="40000"/>
</Region>
<Region Region="New Jersey">
<Territory_Rep Territory_Rep="Joe Smith"
Actual="28394" Estimate="30000"/>
</Region>
<Region Region="Connecticut">
<Territory_Rep Territory_Rep="Amanda Peters"
Actual="44331" Estimate="55000"/>
<Territory_Rep Territory_Rep="Jake Fremmer"
Actual="55434" Estimate="65000"/>
</Region>
</Region>
</fx:XMLList>
</fx:Declarations>
<nestedtreedatagrid:FlexDataGrid id="grid" width="100%" height="100%" enablePrint="true" enablePreferencePersistence="true"
enableExport="true" enableCopy="true" enableFilters="true" enableDrillDown="true"
pdfBytesReady="new AlivePdfGenerator().generate(event.target as FlexDataGrid ,event.printOptions)"
enableFooters="true" initialSortField="title"
initialSortAscending="true" forcePagerRow="true"
dataProvider="{new XMLListCollection(dpHierarchyXML)}" enableHideIfNoChildren="true"
preferencePersistenceKey="xmlGroupedData">
<nestedtreedatagrid:columnLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel >
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridColumn dataField="@Region"
headerText="Region" />
<nestedtreedatagrid:FlexDataGridColumn dataField="@Territory_Rep"
headerText="Territory Rep" filterControl="TextInput" filterOperation="BeginsWith"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="@Actual"
headerText="Actual"
footerAlign="center"
labelFunction2="getDataValue"
footerLabelFunction2="getFooter"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="@Estimate"
headerText="Estimate"
footerAlign="center"
labelFunction2="getDataValue"
footerLabelFunction2="getFooter"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel reusePreviousLevelColumns="true" enableFooters="true">
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel reusePreviousLevelColumns="true" enableFooters="true">
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:nextLevel>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:nextLevel>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:columnLevel>
</nestedtreedatagrid:FlexDataGrid>
</mx:HBox>