hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/operations/view/filesystem/PendingForm.mxml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow 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="700" height="400" 
         close="closeMe(event)" title="{R.get('PENDING_REQUESTS')}"
         creationComplete="init()"
         xmlns:view="it.ht.rcs.console.utils.*">
  <fx:Script>
    <![CDATA[
      import it.ht.rcs.console.agent.controller.AgentManager;
      import it.ht.rcs.console.agent.model.Agent;
      import it.ht.rcs.console.events.SessionEvent;
      import it.ht.rcs.console.target.model.Target;
      import it.ht.rcs.console.utils.AlertPopUp;
      import it.ht.rcs.console.utils.TimeUtils;
      
      import locale.R;
      
      import mx.collections.ArrayCollection;
      import mx.core.FlexGlobals;
      import mx.events.CloseEvent;
      import mx.managers.PopUpManager;
      import mx.rpc.events.FaultEvent;
      import mx.rpc.events.ResultEvent;
      
      import spark.components.gridClasses.GridSelectionMode;
      
      private var agent:Agent;
      private var itemsToDelete:int=0;
      private var deletionIndex:int=0;
      public var deletedItems:Array;
      
      protected function closeMe(event:*):void
      {
        dispatchEvent(new Event("pendingclose"))
        PopUpManager.removePopUp(this);
        
      }
      
      private function init():void
      {
        FlexGlobals.topLevelApplication.addEventListener(SessionEvent.LOGOUT, closeMe);
       
      }
      
      public function getFilesystems(agent:Agent):void
      {
        this.agent=agent;
        AgentManager.instance.getFilesystems(agent, onListResult)
      }
      
      private function onListResult(e:ResultEvent):void
      {
        trace("result")
        filesystemsDg.dataProvider=e.result as ArrayCollection;
        itemsToDelete=0;
        deletionIndex=0;
      }
      
      private function deleteFilesystem():void
      {
        deletedItems=new Array()
        itemsToDelete=filesystemsDg.selectedItems.length;
        deletionIndex=0;
        AlertPopUp.show(R.get('FILESYSTEM_DELETION_CONFIRM'), R.get('CONFIRM'),
          AlertPopUp.YES|AlertPopUp.NO, null,
          function(e:CloseEvent):void {
            if (e.detail == AlertPopUp.YES)
              doDelete(0)
          }, null, AlertPopUp.NO);
      }
      
      private function onDeleteResult(e:ResultEvent):void
      {
        deletionIndex++
          if(deletionIndex==itemsToDelete){
            getFilesystems(agent);
            
          }
          else{
            doDelete(deletionIndex)
          }
           
      }
      
      private function onDeleteFault(e:FaultEvent):void
      {
        AlertPopUp.show(e.fault.faultDetail)
      }
      
      private function doDelete(currentIndex:int):void
      {      
        AgentManager.instance.deleteFilesystem(agent,filesystemsDg.selectedItems[currentIndex]._id, onDeleteResult, onDeleteFault)
        deletedItems.push(filesystemsDg.selectedItems[currentIndex]);
      }
      
      private function dateFunction(item:Object, column:GridColumn):String
      {
        try
        {
          var value:Number=item[column.dataField];
          return value ?  TimeUtils.timestampFormatter(value * 1000) : 'not yet';
        }
        catch (e:Error)
        {
        }
        return '';
      }
      
    ]]>
  </fx:Script>

  <s:VGroup width="100%"
            height="100%"
            paddingBottom="20"
            paddingLeft="20"
            paddingRight="20"
            paddingTop="20">
    <s:Label text="This agents has {filesystemsDg.dataProvider.length} {R.get('PENDING_REQUESTS')}"/>
    <s:DataGrid id="filesystemsDg" width="100%" height="100%" sortableColumns="false" selectionMode="{GridSelectionMode.MULTIPLE_ROWS}">
      <s:columns>
        <s:ArrayList>
          
          <s:GridColumn dataField="path" headerText="{R.get('PATH')}"/>
          <s:GridColumn dataField="depth" headerText="{R.get('DEPTH')}" width="50"/>
          <s:GridColumn dataField="created_at" headerText="{R.get('CREATED_AT')}" width="130" labelFunction="dateFunction"/>
          <s:GridColumn dataField="sent_at" headerText="{R.get('SENT_AT')}" width="130" labelFunction="dateFunction"/>
        </s:ArrayList>
      </s:columns>
    </s:DataGrid>
    <s:HGroup horizontalAlign="center" width="100%">
      <s:Button label="{R.get('DELETE')}" enabled="{filesystemsDg.selectedItems.length>0}" click="deleteFilesystem()"/>
      <s:Button label="{R.get('CANCEL')}" click="closeMe(event)"/>
    </s:HGroup>
  </s:VGroup>
  
</s:TitleWindow>