<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="initApp()"
pageTitle="DataGrid Simple Demo" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.IViewCursor;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import flash.events.Event;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.formatters.DateFormatter;
import mx.managers.CursorManager;
import mx.collections.*;
import mx.utils.ObjectUtil;
[Bindable]
private var sessionAC:ArrayCollection;
private function initApp():void
{
CursorManager.setBusyCursor();
sessionConn.send();
}
private function resultSessionHandler(event:ResultEvent):void
{
var source:ArrayCollection = sessionConn.lastResult.sessions.session as ArrayCollection;
var cursor:IViewCursor = source.createCursor();
var result:ArrayCollection = new ArrayCollection();
while (!cursor.afterLast)
{
var currentObj:Object = cursor.current;
var sd:String = currentObj["date"];
var objDate:Date = new Date(Number(sd.substr(0, 4)), Number(sd.substr(5, 2))-1, Number(sd.substr(8, 2)),
Number(sd.substr(11, 2)), Number(sd.substr(14, 2)), Number(sd.substr(17, 2)), 0);
currentObj["date"] = objDate;
currentObj["aplace"] = Math.round(Math.random()*100);
result.addItem(currentObj);
cursor.moveNext();
}
var sortCount:Sort = new Sort();
sortCount.fields = [new SortField("date")];
result.sort = sortCount;
result.refresh();
sessionAC = result;
countSession.text = "Total: "+sessionAC.length;
CursorManager.removeBusyCursor();
}
private function doReloadAction(event:Event):void {
sessionAC = new ArrayCollection();
countSession.text = "Total: 0";
CursorManager.setBusyCursor();
sessionConn.send();
}
public var dateFormat:mx.formatters.DateFormatter;
private function showDate(item:Object, column:DataGridColumn):String
{
if (dateFormat == null) {
dateFormat = new mx.formatters.DateFormatter();
dateFormat.formatString = "MM/DD HH:NN";
}
var field:String = column.dataField;
return dateFormat.format(item[field]);
}
private function productCompareFunction(obj1:Object, obj2:Object):int {
var result:int = 0;
result = ObjectUtil.stringCompare(obj1.product, obj2.product, true);
if (result == 0) {
result = ObjectUtil.dateCompare(obj1.date, obj2.date);
}
return result;
}
private function dateCompareFunction(obj1:Object, obj2:Object):int {
var result:int = 0;
result = ObjectUtil.dateCompare(obj1.date, obj2.date);
if (result == 0) {
var level1:Number = levelTransform[obj1.level];
var level2:Number = levelTransform[obj2.level];
result = (level1 < level2 ? -1 : (level1 > level2 ? 1 : 0));
}
return result;
}
private var levelTransform:Object = { beginner:0, intermediate:1, advanced:2 };
private function levelCompareFunction(obj1:Object, obj2:Object):int {
var result:int = 0;
var level1:Number = levelTransform[obj1.level];
var level2:Number = levelTransform[obj2.level];
result = (level1 < level2 ? -1 : (level1 > level2 ? 1 : 0));
if (result == 0) {
result = ObjectUtil.stringCompare(obj1.product, obj2.product, true);
if (result == 0) {
result = ObjectUtil.dateCompare(obj1.date, obj2.date);
}
}
return result;
}
]]>
</mx:Script>
<mx:HTTPService id="sessionConn" url="sessions.xml" useProxy="false" result="resultSessionHandler(event)"/>
<mx:Panel layout="vertical" left="5" top="5" right="5" bottom="5" title="MAX 2006 Sessions"
paddingTop="5" paddingLeft="5" paddingBottom="5" paddingRight="5">
<mx:HBox width="100%" height="30">
<mx:Image source="icon/max2006.png" autoLoad="true"/>
<mx:Spacer width="100%"/>
<mx:Label id="countSession" text="Total: 0" width="70"/>
<mx:Button label="Refresh" toolTip="Reload" width="90" click="doReloadAction(event)"/>
<mx:Spacer width="10" />
</mx:HBox>
<mx:DataGrid id="alarmDG" dataProvider="{sessionAC}" width="100%" height="100%" paddingLeft="20">
<mx:columns>
<mx:DataGridColumn dataField="firstname" headerText="FirstName" width="100"/>
<mx:DataGridColumn dataField="lastname" headerText="LastName" width="100"/>
<mx:DataGridColumn dataField="title" headerText="Title" showDataTips="true"/>
<mx:DataGridColumn dataField="date" headerText="Date" labelFunction="showDate" textAlign="center" sortCompareFunction="dateCompareFunction" width="90"/>
<mx:DataGridColumn dataField="product" headerText="Product" itemRenderer="IconProductRenderer" sortCompareFunction="productCompareFunction" showDataTips="true" width="70"/>
<mx:DataGridColumn dataField="level" headerText="Level" itemRenderer="renderer.IconLevelRenderer" sortCompareFunction="levelCompareFunction" showDataTips="true" width="70"/>
<mx:DataGridColumn dataField="aplace" headerText="Avail. place" textAlign="center" itemRenderer="renderer.PlaceRenderer" width="100"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>