hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/alerting/view/LogsTable.mxml

Summary

Maintainability
Test Coverage
<?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>