src/it/ht/rcs/console/operations/view/ips/IpsGrid.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:filters="it.ht.rcs.console.operations.view.evidences.filters.*"
width="100%"
height="100%"
sortableColumns="false"
variableRowHeight="true"
doubleClickEnabled="true"
gridClick="onGridClick(event)"
gridDoubleClick="onGridDoubleClick(event)">
<fx:Metadata>
[Event(name="dataChange", type="flash.events.Event")]
[Event(name="itemDoubleClick", type="spark.events.GridEvent")]
</fx:Metadata>
<fx:Script>
<![CDATA[
import it.ht.rcs.console.evidence.controller.EvidenceManager;
import it.ht.rcs.console.utils.Size;
import it.ht.rcs.console.utils.TimeUtils;
import locale.R;
import spark.events.GridEvent;
[Bindable]
public var filter:Object=EvidenceManager.instance.ipsFilter;
private var lastColumnIndex:int=-1;
private var lastRowIndex:int=-1;
private function dateLabelFunction(item:Object, column:GridColumn):String
{
if (column.dataField == "da")
return TimeUtils.timestampFormatter(item[column.dataField] * 1000);
else if (column.dataField == "data.begin")
return TimeUtils.timestampFormatter(item.data.begin * 1000);
else if (column.dataField == "data.end")
return TimeUtils.timestampFormatter(item.data.end * 1000);
else
return "Unknown"
}
private function formatCountTotal(item:Object, column:GridColumn):String
{
return String(item.data.count)+"/"+String(item.data.total)
}
private function formatSize(item:Object, column:GridColumn):String
{
return Size.toHumanBytes(item.data.size)
}
private function formatSpeed(item:Object, column:GridColumn):String
{
return Size.toHumanBytes(item.data.speed)+"/s";
}
private function formatContent(item:Object, column:GridColumn):String
{
var address:String;
var city:String;
var country:String;
var street_number:String;
var street:String;
var postal_code:String;
if (item.data.address == null)
{
address='(unknown)';
}
else
{
city=item.data.address.city || "";
country=item.data.address.country || "";
street_number=item.data.address.street_number || "";
street=item.data.address.street || "";
postal_code=item.data.address.postal_code || "";
address=city;
if (country != "")
address+=" (" + country + ") ";
if (street_number != "")
address+=street_number + " ";
if (street != "")
address+=street + " ";
if (postal_code != "")
address+=postal_code;
}
return address
}
private function onGridClick(e:GridEvent):void
{
lastRowIndex=e.rowIndex;
lastColumnIndex=e.columnIndex;
}
private function onGridDoubleClick(e:GridEvent):void
{
if (e.rowIndex == lastRowIndex && e.columnIndex == lastColumnIndex)
{
var ge:GridEvent=new GridEvent("itemDoubleClick", true);
ge.columnIndex=e.columnIndex;
ge.column=e.column;
ge.rowIndex=e.rowIndex
ge.item=e.item;
dispatchEvent(ge);
}
lastRowIndex=e.rowIndex;
lastColumnIndex=e.columnIndex;
}
public function scrollDown():void
{
if (this.grid)
this.grid.ensureCellIsVisible(this.dataProvider.length - 1);
}
]]>
</fx:Script>
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="da"
headerText="{R.get('SYNC_START')}"
labelFunction="dateLabelFunction"
resizable="false">
<s:headerRenderer>
<fx:Component>
<filters:AbstractHeaderRenderer filter="{outerDocument.filter}"
editable="true"
popupFactory="it.ht.rcs.console.operations.view.evidences.filters.DateFilterPopup"/>
</fx:Component>
</s:headerRenderer>
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout verticalAlign="middle"
horizontalAlign="left"
paddingLeft="6"
paddingRight="6"
paddingTop="4"/>
</s:layout>
<s:Label id="labelDisplay"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<!-- <s:GridColumn dataField="data.begin"
width="130"
labelFunction="dateLabelFunction"
headerText="Begin"
resizable="false">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout horizontalAlign="left"
verticalAlign="top"
paddingBottom="8"
paddingLeft="4"
paddingRight="4"
paddingTop="8"/>
</s:layout>
<s:Label id="labelDisplay"
maxDisplayedLines="4"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>-->
<s:GridColumn dataField="data.end"
labelFunction="dateLabelFunction"
headerText="{R.get('SYNC_END')}"
resizable="false">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout horizontalAlign="left"
verticalAlign="top"
paddingBottom="8"
paddingLeft="4"
paddingRight="4"
paddingTop="8"/>
</s:layout>
<s:Label id="labelDisplay"
maxDisplayedLines="4"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="data.ip"
headerText="Ip"
resizable="false"
>
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout verticalAlign="middle"
horizontalAlign="left"
paddingLeft="6"
paddingRight="6"
paddingTop="4"/>
</s:layout>
<s:Label id="labelDisplay"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="data.count"
labelFunction="formatCountTotal"
headerText="{R.get('EVIDENCE')}"
resizable="false">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout horizontalAlign="left"
verticalAlign="top"
paddingBottom="8"
paddingLeft="4"
paddingRight="4"
paddingTop="8"/>
</s:layout>
<s:Label id="labelDisplay"
maxDisplayedLines="4"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="data.size"
headerText="{R.get('SIZE')}"
resizable="false"
labelFunction="formatSize">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout horizontalAlign="left"
verticalAlign="top"
paddingBottom="8"
paddingLeft="4"
paddingRight="4"
paddingTop="8"/>
</s:layout>
<s:Label id="labelDisplay"
maxDisplayedLines="4"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="data.speed"
labelFunction="formatSpeed"
headerText="{R.get('SPEED')}"
>
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:layout>
<s:HorizontalLayout horizontalAlign="left"
verticalAlign="top"
paddingBottom="8"
paddingLeft="4"
paddingRight="4"
paddingTop="8"/>
</s:layout>
<s:Label id="labelDisplay"
maxDisplayedLines="4"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="data.timeout" width="70"
itemRenderer="it.ht.rcs.console.operations.view.evidences.renderers.TimeoutRenderer"
headerText="{R.get('TIMEOUT')}"
resizable="false">
</s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>