The following code generates reports in two tabs.In first tab reports generated in
DataGrid and in second tab reports generated in
Fusion Charts Using AdvancedDataGrid.
Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:ProComp="ProComp.*"
creationComplete="application1_creationCompleteHandler(event)">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script source="\\Common\\CommonScripts.as"/>
<fx:Style source="\\Common\\ApplicationSkin.css" />
<fx:Script>
<![CDATA[
import COMMON.*;
import mx.charts.BarChart;
import mx.charts.events.ChartItemEvent;
import mx.collections.ArrayCollection;
import mx.events.AdvancedDataGridEvent;
import mx.events.FlexEvent;
import mx.events.ListEvent;
import com.adobe.fiber.runtime.lib.StringFunc;
import com.as3xls.xls.ExcelFile;
import com.as3xls.xls.Sheet;
import mx.events.FlexEvent;
import mx.utils.UIDUtil;
import org.alivepdf.colors.RGBColor;
import org.alivepdf.display.Display;
import org.alivepdf.drawing.Joint;
import org.alivepdf.fonts.FontFamily;
import org.alivepdf.fonts.Style;
import org.alivepdf.images.PNGImage;
import org.alivepdf.layout.Layout;
import org.alivepdf.layout.Orientation;
import org.alivepdf.layout.Size;
import org.alivepdf.layout.Unit;
import org.alivepdf.pages.Page;
import org.alivepdf.pdf.PDF;
import org.alivepdf.saving.Method;
import org.osmf.metadata.Metadata;
private var myPDF:PDF;
private var RowId:String = "";
private var pdfData:ByteArray;
private var contacts:ArrayCollection;
[Bindable] public var collection:ArrayCollection = new ArrayCollection();
[Bindable]
private var AdvGrdArrCol:ArrayCollection= new ArrayCollection
private var ParentArrCol:ArrayCollection= new ArrayCollection
private var Sal:int;
private var BarChartArr:ArrayCollection = new ArrayCollection
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
TbRc.selected = true;
Act.selected = true;
Res.selected = true;
}
protected function Btn_Prv_clickHandler(event:MouseEvent):void
{
var a:int;
RowId = UIDUtil.createUID().toString();
var startDS:String = StringFunc.replaceAll(Perd.text,"/","");
//var sDate:Date = DateField.stringToDate(startDS,"MMDDYYYY");
var mm:String = StringFunc.left(startDS,2) //StringFunc.substring(sDate.toString(),4,3);
var year:String = StringFunc.right(startDS,4);
var FinYr:String = year + mm;
if (Res.selected = true)
a = 0;
else if (Acts.selected = true)
a = 1;
useWebService("Test_Test", "Report", "", "", FinYr, RowId, a.toString(), "");
addEventListener("DBExeComp",OnGridLoad)
}
private function OnGridLoad(evt:Event):void
{
removeEventListener("DBExeComp",OnGridLoad)
collection = RepArrCol[0];
dynamicColumn();
gridRpt.dataProvider = RepArrCol[1];
var TmpAct:String = "";
var TmpActNew:String = "";
for (var Loop:int=0; Loop<=RepArrCol[2].length-1;Loop++)
{
var obj:Object = new Object();
var tmpArrNew:ArrayCollection = new ArrayCollection();
var CustArr:ArrayCollection = new ArrayCollection();
Sal = 0;
if (TmpAct != RepArrCol[2][Loop].ACT)
{
var objnew:Object = new Object();
tmpArrNew = new ArrayCollection();
obj['ACT'] = RepArrCol[2][Loop].ACT
TmpAct = RepArrCol[2][Loop].ACT
for (var i:int=0; i<=RepArrCol[2].length-1;i++)
{
if (TmpAct == RepArrCol[2][i].ACT)
{
/* BAR CHART */
var barobj:Object = new Object();
barobj['CUST'] = RepArrCol[2][i].CUST
barobj['VALUE'] = RepArrCol[2][i].VAL
tmpArrNew.addItem(barobj)
}
}
//obj['VAL'] = Sal
objnew['detail2'] = tmpArrNew
CustArr.addItem(objnew)
obj['children'] = CustArr
ParentArrCol.addItem(obj)
}
}
}
private function dynamicColumn():void
{
this.gridRpt._hideHdnColumn = true;
this.gridRpt._headerText = StringFunc.replaceAll(collection.source[0].headerText.toString(),"~",",");
this.gridRpt._columnType = StringFunc.replaceAll(collection.source[0].coltyp.toString(),"~",",");
this.gridRpt._fontSize = 10;
this.gridRpt._fontName = "Arial";
this.gridRpt._columnWidth = StringFunc.replaceAll(collection.source[0].width.toString(),"~",",");
this.gridRpt._dataField = StringFunc.replaceAll(collection.source[0].dataField.toString(),"~",",");
}
protected function cmdExport_clickHandler(event:MouseEvent):void
{
if(gridRpt.dataProvider.source.length != 0 )
{
ExportToExcel("Test.xls");
}
else
{
Alert.show("Report is Empty!","Information");
return;
}
}
private function ExportToExcel(FileName:String)
{
try
{
var fields:Array = new Array();
var sheet:Sheet;
fields = [];
sheet = new Sheet();
var rowCont:int = gridRpt.dataProvider.source.length;
var dataprovd:ArrayCollection = new ArrayCollection(gridRpt.dataProvider.source);
sheet.resize(rowCont + 9,gridRpt.columnCount);
var Col:Array = gridRpt.columns;
var Ex:int = 0;
var ExStr:String = "Test.xls";
sheet.setCell(2,1,ExStr);
//sheet.setCell(4,0,"Date From: " + dt_From.text + " " + "To: " + dt_To.text);
for each(var DGField:DataGridColumn in Col)
{
fields.push(DGField.dataField.toString());
sheet.setCell(8,Ex,DGField.headerText.toString());
Ex++;
}
for(var r:int = 0;r< rowCont;r++)
{
var Rec:Object = dataprovd.getItemAt(r);
var Erow:int = r+1;
//insertRecordInSheet(Erow,sheet,Rec);
//var ColCount:int = ColsArr.length;
var Exc:int = 0;
for(var c:int = 0; c<fields.length; c++)
{
var ExFld:String =fields[c];
if(Rec[ExFld] != null)
{
sheet.setCell(Erow+8,Exc,Rec[ExFld].toString());
}
Exc++;
}
}
var Exls:ExcelFile = new ExcelFile();
Exls.sheets.addItem(sheet);
var Byt:ByteArray = Exls.saveToByteArray();
var FileRef:FileReference = new FileReference();
FileRef.addEventListener(Event.SELECT,alert);
var ExcStr:String = FileName;
FileRef.save(Byt,ExcStr);
}
catch(ex:Error)
{
Alert.show(ex.toString());
}
finally{}
}
private function alert(event:Event):void
{
Alert.show(event.currentTarget.name + " has been exported successfully!","Information");
}
]]>
</fx:Script>
<mx:TabNavigator x="38" y="84" width="1108" height="417">
<s:NavigatorContent label="SegmentwiseCOst" width="100%" height="100%">
<s:BorderContainer width="1086" height="373" id="brd" depth="1" x="10" y="4">
<ProComp:DataGridPro id ="gridRpt" depth="1" _showHScroll = "true"
tabIndex="6" showDataTips="true" doubleClickEnabled="true" visible="true"
_filter="true" _headerHeight="50" top="10" left="10" right="10" bottom="10" _lockColumnCount="1"/>
</s:BorderContainer>
</s:NavigatorContent>
<s:NavigatorContent label="Charts" width="100%" height="100%">
<mx:AdvancedDataGrid id="ChDg"
width="1008" height="346"
variableRowHeight="true" x="40" y="10">
<mx:dataProvider>
<mx:HierarchicalData source="{ParentArrCol}"/>
</mx:dataProvider>
<mx:rendererProviders>
<mx:AdvancedDataGridRendererProvider
dataField="detail2"
renderer="BarChartRenderer"
/>
</mx:rendererProviders>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="ACT" headerText="Act" width="50"/>
<!--<mx:AdvancedDataGridColumn dataField="detail2" headerText="Bar" width="150"/>-->
</mx:columns>
</mx:AdvancedDataGrid>
</s:NavigatorContent>
</mx:TabNavigator>
<s:Label x="726" y="6" text="Period"/>
<s:Label x="73" y="16" text="Report Group"/>
<s:Label x="322" y="12" text="Account Type"/>
<s:Label x="491" y="10" text="Report Type"/>
<s:RadioButton x="172" y="12" label="TbRecon" id="TbRc" groupName="RepGrp"/>
<s:RadioButton x="172" y="38" label="TbRecon with FgWip" id="TbFg" groupName="RepGrp"/>
<s:RadioButton x="408" y="12" label="Actual" id="Act" groupName="AccTyp"/>
<s:RadioButton x="408" y="38" label="Budget" id="Bud" groupName="AccTyp"/>
<s:RadioButton x="408" y="64" label="Standard" id="Std" groupName="AccTyp"/>
<s:RadioButton x="573" y="10" label="ResourceWise" id="Res" groupName="RepTyp"/>
<s:RadioButton x="573" y="38" label="ActivityWise" id="Acts" groupName="RepTyp"/>
<s:Button x="726" y="43" label="Preview" id="Btn_Prv" click="Btn_Prv_clickHandler(event)"/>
<s:Button x="808" y="43" label="Export" id="Btn_Exp" click="cmdExport_clickHandler(event)"/>
<s:Button x="891" y="43" label="Generate PDF" id="Btn_Pdf"/>
<mx:DateField x="771" y="6" id="Perd"/>
</s:Application>
Output: