var tmplate = "";

iReport.views.SidebarPanel = Ext.extend(Ext.Panel, {
  dock: "left",
  width: 300,
  layout: "card",
  cls: "sidebarpanel",

  initComponent: function() {

    this.store = new Ext.data.Store({
      fields: ['name', 'desc', "pValue", "rank", "genes", "neighborCount", {
        name: "smallp",
        convert: function(v,r){
          return (r.data.pValue + "").substring(0,5);
        }
      }]
    })
    
    if(this.matrix == "interactions"){
      var template = '<h5>{name}</h5><span class="count">{genes.length} GEGs</span> <span class="neighbors">{neighborCount} Neighbors</span>';
    }else{
      var template = '<h5>{name}</h5><span class="count">{genes.length} GEGs</span> <span class="pvalue">{smallp} pValue</span>';  
    }
      
    this.list = new Ext.List({
      cls: "first-list",
      itemTpl: template, 
      store: this.store,
      listeners: {
        selectionchange: {fn: this.onSelect, scope: this}
      }
    });

    this.listpanel = new Ext.Panel({
        cls: "slideout-gene",
        layout: 'card',
        items: this.list,
        dockedItems: [{
          xtype: 'toolbar',
          title: this.matrix
        }],
        listeners: {
          activate: { fn: function(){
            this.list.getSelectionModel().deselectAll();
            Ext.repaint();
          }, scope: this }
        }
    });
    
    this.list.on('afterrender', this.loadData, this);

    this.items = [this.listpanel];

    iReport.views.SidebarPanel.superclass.initComponent.call(this);
  },
  
  loadData: function(){
    
    var listA
    if(this.matrix == "pathways"){
      listA = pathways.list;
    }else if(this.matrix == "processes"){
      listA = bioProcesses.list;
    }else if(this.matrix == "diseases"){
      listA = diseases.list;
    }else if(this.matrix == "interactions"){
      var lLen = genes.list.length;
      var listData = [];
      var l;
      for (l=0; l < lLen; l++) {
        if(!genes.list[l].inContext) continue;
        listData.push(genes.list[l]);
        listData[listData.length -1].idx = l;
        listData[listData.length -1].nRank = Math.floor(1000 * genes.list[l].neighborCount/genes.maxNumMembers["neighbors"]);
        listData[listData.length -1].quartile =  3 - quartile(genes.list[l].neighborCount, {min:0, max:genes.maxNumMembers["neighbors"]});
        listData[listData.length -1].symbol = (genes.list[l].symbol == null) ? genes.list[l].name : genes.list[l].symbol;
        listData[listData.length -1].expRank = Math.floor((genes.list[l].foldChange-genes.fcRange.min)*genes.fcRange.inv*1000);
      }
      function sortNeighborCount(a, b) { return b.neighborCount - a.neighborCount; }
      var list = listData.sort(sortNeighborCount)
      listA = list.filter(function(e,i,a){return (i <= gDisplayData)})
    }
    
    this.store.add(listA)
  },

  onSelect: function(sel, records){

      if (records[0] !== undefined) {
        // get list of genes
        var list = records[0].data.getGenesInContext();
        
        if(this.matrix != "pathways"){
          // highlitelist
          Charts[this.matrix].hiliteList(list);

          // set filter selection
          selectionMgr.set(records[0].data)          
        }
        
        var secondCard = new iReport.views.SidebarSecondPanel({
          prevCard: this.listpanel,
          matrix: this.matrix,
          record: records[0]
        });

        this.setActiveItem(secondCard, 'slide');
      }
  }

})

Ext.reg('sidebarpanel', iReport.views.SidebarPanel);


