changeset 32:cbd4d7e3f155 draft

Uploaded
author mzeidler
date Wed, 25 Sep 2013 06:45:02 -0400
parents 83f8da489fad
children 9337c80d6672
files jqBarGraph.2.1.js
diffstat 1 files changed, 111 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/jqBarGraph.2.1.js	Tue Sep 24 18:59:40 2013 -0400
+++ b/jqBarGraph.2.1.js	Wed Sep 25 06:45:02 2013 -0400
@@ -94,24 +94,39 @@
 		
 		arr = opts[el.id];
 		data = arr.data;
-		
+		if(arr.tab=='reads'){
+		  val_index=0;
+		}
+		else{
+		  val_index=1;
+		}
+
 		//check if array is bad or empty
 		if(data == undefined) {
 			$(el).html('There is not enought data for graph');
 			return;
 		}
-		//sorting ascending or descending
-		if(arr.sort == 'asc') data.sort(sortNumberAsc);
-		if(arr.sort == 'desc') data.sort(sortNumberDesc);
+		//sorting ascending or descending
+		if(arr.tab == 'reads'){
+		  if(arr.sort == 'asc'){
+		      data.sort(sortReadsAsc);    
+		  }
+		  if(arr.sort == 'desc'){
+		      data.sort(sortReadsDesc);        
+		  }
+		}
+		if(arr.tab == 'basepairs'){
+		  if(arr.sort == 'asc'){
+		      data.sort(sortBasesAsc);
+		   }
+		   if(arr.sort == 'desc'){
+		      data.sort(sortBasesDesc);
+		   }
+		}
 		if(arr.sortBar == 'asc') sortBars(data, barAsc);
-		if(arr.sortBar == 'desc')sortBars(data,barDesc);
-        if(arr.tab=='reads'){
-		  val_index=0;
-		}
-		else{
-		  val_index=1;
-
-		}
+		if(arr.sortBar == 'desc')sortBars(data, barDesc);
+    
+		
 		
 		legend = '';
 		prefix = arr.prefix;
@@ -136,7 +151,8 @@
 		else{
 		  val_index=1;
 
-		}
+		}
+		console.log(arr.tab,arr.sort,val_index);
  		for(var val in data){
  			
  			valueData = data[val][0];
@@ -263,8 +279,8 @@
 	        $("#sortDesc"+el.id).click(function(){
 	           if(opts[el.id].sort!='desc'){
 	               opts[el.id].sort='desc';
-	               $('#'+el.id).html('');
-	               $('#'+el.id).jqbargraph(opts[el.id]);
+	               $('#graphHolder'+el.id).html('');
+	               $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
 	           }
     
 	        });
@@ -287,7 +303,6 @@
 	        
 	        $("#showBasepairs"+el.id).click(function(){
 	               opts[el.id].tab='basepairs';
-	               $("#label"+el.id).html('Cumulative basepairs assigned to family');
 	               $('#graphHolder'+el.id).html('');
 	               $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
 	               
@@ -296,7 +311,6 @@
 	        });
 	        $("#showReads"+el.id).click(function(){
 	               opts[el.id].tab='reads';
-	               $("#label"+el.id).html('Cumulative reads assigned to family');
 	               $('#graphHolder'+el.id).html('');
 	               $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
 	               
@@ -309,7 +323,11 @@
  		//position of title
  		if(arr.title){
  			$(el).wrap("<div id='graphHolder"+el.id+"'></div>");
- 			$('#graphHolder'+el.id).prepend("<div id='label"+el.id+"'>Cumulative reads assigned to family</div>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
+ 			if(arr.tab=='reads'){
+ 			    $('#graphHolder'+el.id).prepend("<div id='label"+el.id+"'>Cumulative reads assigned to family</div>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
+ 			}else{
+   			    $('#graphHolder'+el.id).prepend("<div id='label"+el.id+"'>Cumulative basepairs assigned to family</div>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
+ 			}
  			$('#graphHolder'+el.id).prepend("<a href=#files"+el.id+" onclick=fillDiv('"+el.id+"')>"+arr.title+"</a>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
  		    
   		}
@@ -358,17 +376,18 @@
 	        dict=arr.files;
 	        
 	        generateDownloadLink = function(family,region,filetype){
-	           out="no file";
-	           if(searchArray("region_"+region+"_"+filetype,dict[family][region])!=-1){
+	           out=" no file ";
+	           console.log(dict[family][region]);
+	           if($.inArray("region_"+region+"_"+filetype,dict[family][region])!=-1){
 	               out="<a href="+family+"/region_"+region+"_"+filetype+">download</a>";
 	           }
 	           return out;
 	           
 	        };
 	        generateShowLink = function(family,region){
-	           out="no image";
-
-	           if(searchArray("region_"+region+"_consensus.png",dict[family][region])!=-1){
+	           out=" no image ";
+               console.log($.inArray("region_"+region+"_consensus.png",dict[family][region]));
+	           if($.inArray("region_"+region+"_consensus.png",dict[family][region])!=-1){
 	               out="<a href=#image"+elid+" onclick=showImage('"+elid+"','"+region+"','"+ family +"/"+dict[family][region][3]+"')>show</a>";
 	           }
 	           return out;
@@ -379,10 +398,11 @@
 	        data = arr.data
 	        for(var val in data){
 	           for(var element in data[val][0]){     
-	                   dict[data[val][0][0][3]+"_"+data[val][1]][data[val][0][element][5]].push(data[val][0][element][0],data[val][0][element][1],data[val][0][element][4]);
+	                   dict[data[val][0][0][3]+"_"+data[val][1]][data[val][0][element][5]].push([data[val][0][element][0],data[val][0][element][1],data[val][0][element][4]]);
 	               
 	           }      
 	        }
+	        
             var div = document.getElementById("files" + elid);
             div.innerHTML="";
             out = "<div><b>Files for Sample "+arr.sample+"</b></div><p/>";
@@ -394,8 +414,11 @@
                     //out += "<b>"+directory+"</b>";
                     //out += "<div class='dirlist' id='" + directory + "_files'";
                     for (var region in dict[directory]) {
-                        if(dict[directory][region][5]){
-                            out += "<tr><td>"+directory+"</td><td>"+region+"</td><td>"+dict[directory][region][5]+"</td><td>"+dict[directory][region][6]+"</td><td>"+dict[directory][region][7]+"</td><td>"+generateDownloadLink(directory,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(directory,region,"alignment.bam")+"</td><td>"+generateDownloadLink(directory,region,"consensus.fa")+"</td><td>"+generateShowLink(directory,region)+" "+generateDownloadLink(directory,region,"consensus.png")+"</td></tr>";
+                        
+                        last = dict[directory][region][dict[directory][region].length-1];
+                        console.log(last);
+                        if(last instanceof Array && last[0]){
+                            out += "<tr><td>"+directory+"</td><td>"+region+"</td><td>"+last[0]+"</td><td>"+last[1]+"</td><td>"+last[2]+"</td><td>"+generateDownloadLink(directory,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(directory,region,"alignment.bam")+"</td><td>"+generateDownloadLink(directory,region,"consensus.fa")+"</td><td>"+generateShowLink(directory,region)+" "+generateDownloadLink(directory,region,"consensus.png")+"</td></tr>";
                         }
                     }
                     out += "</div>";
@@ -406,13 +429,13 @@
                 if (!region) {
                     for (var region in dict[dir]) {
                         if(dict[dir][region][5]){
-                            out += "<tr><td>"+dir+"</td><td>"+region+"</td><td>"+dict[dir][region][5]+"</td><td>"+dict[dir][region][6]+"</td><td>"+dict[dir][region][7]+"</td><td>"+generateDownloadLink(dir,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(dir,region,"alignment.bam")+"</td><td>"+generateDownloadLink(dir,region,"consensus.fa")+"</td><td>"+generateShowLink(dir,region)+" "+generateDownloadLink(dir,region,"consensus.png")+"</td></tr>";
+                            out += "<tr><td>"+dir+"</td><td>"+region+"</td><td>"+last[0]+"</td><td>"+last[1]+"</td><td>"+last[2]+"</td><td>"+generateDownloadLink(dir,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(dir,region,"alignment.bam")+"</td><td>"+generateDownloadLink(dir,region,"consensus.fa")+"</td><td>"+generateShowLink(dir,region)+" "+generateDownloadLink(dir,region,"consensus.png")+"</td></tr>";
                         }
                     }
                 } else {
 
                     if(dict[dir][region][5]){
-                        out += "<tr><td>"+dir+"</td><td>"+region+"</td><td>"+dict[dir][region][5]+"</td><td>"+dict[dir][region][6]+"</td><td>"+dict[dir][region][7]+"</td><td>"+generateDownloadLink(dir,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(dir,region,"alignment.bam")+"</td><td>"+generateDownloadLink(dir,region,"consensus.fa")+"</td><td>"+generateShowLink(dir,region)+"     "+generateDownloadLink(dir,region,"consensus.png")+"</td></tr>";
+                        out += "<tr><td>"+dir+"</td><td>"+region+"</td><td>"+last[0]+"</td><td>"+last[1]+"</td><td>"+last[2]+"</td><td>"+generateDownloadLink(dir,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(dir,region,"alignment.bam")+"</td><td>"+generateDownloadLink(dir,region,"consensus.fa")+"</td><td>"+generateShowLink(dir,region)+"     "+generateDownloadLink(dir,region,"consensus.png")+"</td></tr>";
                     }
                 }
             }
@@ -457,12 +480,7 @@
                 $('.files'+elid).css({'height': curr_hei+'px', 'width':'915px','position':'relative', 'overflow' : 'auto','background-color':'#D0D0D0', 'border':'2px solid silver','border-radius':'10px','display':'block' }).animate({'height':hei+'px'}, 1000);	           
             }
 	};
-	 searchArray = function(str, strArray){
-	       for (var j=0; j<strArray.length; j++) {
-                if (strArray[j].indexOf(str)!=-1) return j;
-            }
-            return -1;
-	 };
+
 	 
 	 showImage = function (elid,region, consensus_image,wi) {
             var div = document.getElementById("image" + elid);
@@ -533,10 +551,10 @@
 		showValuesColor: '#fff',
 		title: false
 	};
-	
+	
 	
 	//sorting functions
-	function sortNumberAsc(a,b){
+	function sortReadsAsc(a,b){
 	    sum_a=0
 	    for(var values in a){
 	       if(a[values] instanceof Array){
@@ -557,9 +575,31 @@
 		if (sum_a<sum_b) return -1;
 		if (sum_a>sum_b) return 1;
 		return 0;
+	}
+	function sortBasesAsc(a,b){
+	    sum_a=0
+	    for(var values in a){
+	       if(a[values] instanceof Array){
+	           for(var val in a[values]){
+	               sum_a+=a[values][val][1];
+	           }
+	       }
+	    }
+	    sum_b=0
+	    for(var values in b){
+	       if(b[values] instanceof Array){
+	           for(var val in b[values]){
+	               sum_b+=b[values][val][1];
+	           }
+	       }
+	    }
+	    
+		if (sum_a<sum_b) return -1;
+		if (sum_a>sum_b) return 1;
+		return 0;
 	}
 	
-	function sortNumberDesc(a,b){
+	function sortReadsDesc(a,b){
 		sum_a=0
 	    for(var values in a){
 	       if(a[values] instanceof Array){
@@ -581,6 +621,28 @@
 		if (sum_a>sum_b) return -1;
 		return 0;
 	}
+	function sortBasesDesc(a,b){
+		sum_a=0
+	    for(var values in a){
+	       if(a[values] instanceof Array){
+	           for(var val in a[values]){
+	               sum_a+=a[values][val][1];
+	           }
+	       }
+	    }
+	    sum_b=0
+	    for(var values in b){
+	       if(b[values] instanceof Array){
+	           for(var val in b[values]){
+	               sum_b+=b[values][val][1];
+	           }
+	       }
+	    }
+	    
+		if (sum_a<sum_b) return 1;
+		if (sum_a>sum_b) return -1;
+		return 0;
+	}
 	
     function sortBars(data,fun){
         for(var values in data){
@@ -591,6 +653,18 @@
                 data[values].push(last);       
         }           
     }
+	
+    function sortBars(data,fun){
+        for(var values in data){
+                last = data[values].pop();
+                for(var val in data[values]){
+                    data[values][val].sort(fun);
+                }
+                data[values].push(last);       
+        }           
+    }
+
+
     
     function barAsc(a,b){
         if(a[0]<b[0]) return -1;