src/it/ht/rcs/console/alerting/view/LogsTable.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"
width="100%" height="100%" doubleClick="onDoubleClick(event)" doubleClickEnabled="true" selectionMode="multipleRows">
<fx:Script>
<![CDATA[
import it.ht.rcs.console.alert.model.AlertLog;
import it.ht.rcs.console.entities.controller.EntityManager;
import it.ht.rcs.console.entities.model.Link;
import it.ht.rcs.console.events.SectionEvent;
import it.ht.rcs.console.search.controller.SearchManager;
import it.ht.rcs.console.utils.TimeUtils;
import locale.R;
import mx.collections.ArrayCollection;
import mx.core.FlexGlobals;
import mx.managers.CursorManager;
private function formatDate(item:Object, column:GridColumn):String
{
return TimeUtils.timestampFormatter(item[column.dataField] * 1000);
}
private function formatEvidence(item:Object, column:GridColumn):String
{
// it's evidence
if (item.evidence.length != 0) {
return item.evidence.length.toString() + " evidence"
}
// it's entity
if (item.entities.length != 0) {
var ent:*;
var entities:String = "";
if (item.entities.length == 1) {//single entity
ent = EntityManager.instance.getItem(item.entities[0]);
if (ent != null)
return ent.name;
} else {//link
ent = EntityManager.instance.getItem(item.entities[0]);
if (ent != null)
entities = "'" + ent.name + "'"
ent = EntityManager.instance.getItem(item.entities[1]);
if (ent != null)
entities += " -> '" + ent.name + "'"
return entities
}
return entities;
}
return '';
}
private function onDoubleClick(event:MouseEvent):void
{
var log:AlertLog = selectedItem as AlertLog;
var se:SectionEvent = new SectionEvent(SectionEvent.CHANGE_SECTION);
if(log.entities && log.entities.length==2) //it's a link
{
se.section = SectionEvent.INTELLIGENCE;
se.subsection = 'links';
se.info=[log.entities.getItemAt(0), log.entities.getItemAt(1)]
se.item=SearchManager.instance.getItem(log.path.getItemAt(0) as String);
}
else if(log.entities && log.entities.length==1) //it's an entity
{
se.section = SectionEvent.INTELLIGENCE;
se.subsection = 'links';
se.info=[log.entities.getItemAt(0)]
se.item=SearchManager.instance.getItem(log.path.getItemAt(log.path.length-1) as String);
}
else
{
se.section = SectionEvent.OPERATIONS;
se.subsection = 'evidence';
se.item = SearchManager.instance.getItem(log.path.getItemAt(log.path.length-1) as String);
}
if (log.evidence.length > 0) {
se.evidenceIds = log.evidence.source;
}
/* if (log.entities.length > 0) {
// TODO: jump to entitiy
return;
} */
CursorManager.setBusyCursor()
FlexGlobals.topLevelApplication.dispatchEvent(se);
}
]]>
</fx:Script>
<s:columns>
<s:ArrayList>
<s:GridColumn width="130" dataField="time" headerText="{R.get('DATE')}"
labelFunction="formatDate" resizable="false" />
<s:GridColumn width="300" dataField="path" headerText="{R.get('PATH')}"
itemRenderer="it.ht.rcs.console.utils.PathRenderer"/>
<s:GridColumn headerText="Info" labelFunction="formatEvidence"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>