annotate jqBarGraph.2.1.js @ 44:a8b31d446fec draft default tip

updated vhom regions with multiple hit file input and adapted visualization
author mzeidler
date Mon, 04 Nov 2013 11:57:55 -0500
parents 310843ad5112
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
1 /**
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
2 * jqBarGraph - jQuery plugin
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
3 * @version: 1.1 (2011/04/03)
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
4 * @requires jQuery v1.2.2 or later
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
5 * @author Ivan Lazarevic
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
6 * Examples and documentation at: http://www.workshop.rs/jqbargraph/
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
7 *
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
8 * Dual licensed under the MIT and GPL licenses:
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
9 * http://www.opensource.org/licenses/mit-license.php
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
10 * http://www.gnu.org/licenses/gpl.html
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
11 *
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
12 * @param data: arrayOfData // array of data for your graph
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
13 * @param title: false // title of your graph, accept HTML
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
14 * @param barSpace: 10 // this is default space between bars in pixels
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
15 * @param width: 400 // default width of your graph ghhjgjhg
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
16 * @param height: 200 //default height of your graph
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
17 * @param color: '#000000' // if you don't send colors for your data this will be default bars color
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
18 * @param colors: false // array of colors that will be used for your bars and legends
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
19 * @param lbl: '' // if there is no label in your array
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
20 * @param sort: false // sort your data before displaying graph, you can sort as 'asc' or 'desc'
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
21 * @param position: 'bottom' // position of your bars, can be 'bottom' or 'top'. 'top' doesn't work for multi type
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
22 * @param prefix: '' // text that will be shown before every label
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
23 * @param postfix: '' // text that will be shown after every label
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
24 * @param animate: true // if you don't need animated appereance change to false
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
25 * @param speed: 2 // speed of animation in seconds
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
26 * @param legendWidth: 100 // width of your legend box
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
27 * @param legend: false // if you want legend change to true
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
28 * @param legends: false // array for legend. for simple graph type legend will be extracted from labels if you don't set this
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
29 * @param type: false // for multi array data default graph type is stacked, you can change to 'multi' for multi bar type
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
30 * @param showValues: true // you can use this for multi and stacked type and it will show values of every bar part
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
31 * @param showValuesColor: '#fff' // color of font for values
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
32
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
33 * @example $('#divForGraph').jqBarGraph({ data: arrayOfData });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
34
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
35 **/
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
36
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
37 (function($) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
38 var opts = new Array;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
39 var level = new Array;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
40
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
41 $.fn.jqBarGraph = $.fn.jqbargraph = function(options){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
43 init = function(el){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
44
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
45 opts[el.id] = $.extend({}, $.fn.jqBarGraph.defaults, options);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
46 $(el).css({'height': opts[el.id].height, 'position':'relative', 'text-align':'center' });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
47
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
48
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
49 doGraph(el);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
50
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
51 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
52
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
53 // sum of array elements
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
54 sum = function(ar,tab){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
55 total = 0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
56 for(var val in ar){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
57 total += ar[val][tab];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
58 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
59 return total.toFixed(2);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
60 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
61
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
62 // count max value of array
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
63 max = function(ar,tab){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
64 maxvalue = 0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
65 for(var fam in ar){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
66 for(var sample in ar[fam]["samples"]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
67
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
68 value = sum(ar[fam]["samples"][sample],tab);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
69 if (parseFloat(value) > parseFloat(maxvalue)) maxvalue=value;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
70 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
71 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
72 return maxvalue;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
73 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
74
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
75
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
76 doGraph = function(el){
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
77
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
78 arr = opts[el.id];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
79 data = arr.data;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
80 data_keys=Object.keys(data);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
81 color_map=arr.colors;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
82
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
83 n_bars=0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
84
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
85 for(fam in data){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
86 for(sample in data[fam]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
87 n_bars+=1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
88 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
89 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
90
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
91
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
92 //check if array is bad or empty
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
93 if(data == undefined) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
94 $(el).html('There is not enought data for graph');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
95 return;
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
96 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
97 //sorting ascending or descending
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
98
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
99 if(arr.sort == 'asc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
100 data_keys=sortGraph(arr,sortAsc);
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
101 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
102 if(arr.sort == 'desc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
103 data_keys=sortGraph(arr,sortDesc);
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
104 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
105
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
106
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
107 max1 = max(data,arr.tab);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
108
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
109 m = Math.max(max(data,'reads'),max(data,'bp'));
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
110
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
111 w = (m+"").length * 10;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
112 legend = '';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
113 prefix = arr.prefix;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
114 postfix = arr.postfix;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
115 space = arr.barSpace; //space between bars
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
116 legendWidth = arr.legend ? arr.legendWidth : 0; //width of legend box
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
117 fieldWidth = w //width of bar
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
118
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
119 totalHeight = $(el).height(); //total height of graph box
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
120 var leg = new Array(); //legends array
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
121
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
122 //max value in data, I use this to calculate height of bar
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
123
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
124
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
125 var i=0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
126 var fields=0
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
127 for(var key in data_keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
128 space=arr.barSpace;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
129 fam = data_keys[key];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
130
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
131 for(var sample in data[fam]["samples"]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
132
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
133 valueData = data[fam]["samples"][sample];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
134 value = sum(valueData,arr.tab);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
135 sample_keys=Object.keys(valueData);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
136
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
137 lbl = fam
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
138 unique = fam+sample+el.id; //unique identifier
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
139 fieldWidth = w+space;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
140 fields = fields+w+arr.barSpace;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
141
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
142 if (lbl == undefined) lbl = arr.lbl;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
143
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
144 margin_top=4;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
145
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
146 unique_fam = fam+el.id;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
147 out = "<div class='graphField"+el.id+"' id='graphField"+unique+"' style='position: absolute'>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
148
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
149 out += "<a class='graphLabelLink' href=#files"+el.id+" onclick=fillDiv('"+el.id+"','"+fam+"','"+sample+"')><div class='graphValue"+el.id+"' id='graphValue"+unique+"'>"+parseInt(value)+"</div></a>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
150
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
151 out += "<div class='graphBar"+el.id+"' id='graphFieldBar"+unique+"' style='background-color:#fff;position: relative; overflow: hidden;'></div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
152 //console.log(color)
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
153 // if there is no legend or exist legends display lbl at the bottom
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
154
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
155 out += "<a class='graphLabelLink' href=#files"+el.id+" onclick=fillDiv('"+el.id+"','"+fam+"')><div class='graphLabel"+el.id+"' id='graphLabel"+unique+"'style='margin-top:"+margin_top+"px;'>"+lbl+"</div></a>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
156 out += "</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
157
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
158
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
159
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
160 $(el).append(out);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
161 $(".graphLabel"+el.id).css({'-webkit-transform': 'rotate(30deg)', '-moz-transform': 'rotate(30deg)','-o-transform': 'rotate(30deg)', '-ms-transform': 'rotate(30deg)','transform': 'rotate(30deg)', 'height':'100'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
162 $('a.graphLabel').css({
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
163 'text-decoration': 'none',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
164 'color':'black'
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
165 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
166
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
167 totalHeightBar = totalHeight - $('.graphLabel'+el.id).height() - $('.graphValue'+el.id).height()-margin_top;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
168 fieldHeight = (totalHeightBar*value)/max1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
169
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
170 $('#graphField'+unique).css({
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
171 'left': (w+arr.barSpace)*i,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
172 'width': w,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
173 'margin-left': space});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
174
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
175
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
176 maxe = max1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
177 k=0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
178 for(var r in valueData){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
179 k+=1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
180 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
181
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
182
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
183 if(arr.sortBar=='asc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
184 sample_keys=sortBar(valueData,arr.tab, barAsc);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
185 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
186 if(arr.sortBar=='desc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
187 sample_keys=sortBar(valueData,arr.tab, barDesc);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
188 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
189
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
190
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
191 for(var s_key in sample_keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
192 region = sample_keys[s_key];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
193
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
194 heig = (totalHeightBar*valueData[region][arr.tab]/maxe);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
195
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
196 if(navigator.userAgent.match('Safari') && !navigator.userAgent.match('Chrom')){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
197
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
198 heig = heig + (arr.borderSize/1.85);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
199 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
200
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
201 wid = parseInt((fieldWidth-space)/k);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
202 sv = ''; // show values
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
203 fs = 0; // font size
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
204 if (arr.showValues){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
205 sv = arr.prefix+valueData[region][arr.tab]+arr.postfix;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
206 fs = 12; // font-size is 0 if showValues = false
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
207 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
208
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
209 o = "<a class='subBarLink' href=#files"+el.id+" onclick=fillDiv('"+el.id+"','"+fam+"','"+sample+"','"+region+"')><div class='subBars"+el.id+"' style=' box-sizing:border-box; -moz-box-sizing:border-box; -ms-box-sizing:border-box; -webkit-box-sizing:border-box; height:"+heig+"px; border-top:"+arr.borderSize+"px solid; border-color: "+arr.showValuesColor+"; background-color: "+color_map[sample][valueData[region]["state"]]+"; left:"+wid*parseInt(region)+"px; color:"+arr.showValuesColor+"; font-size:"+fs+"px' >"+sv+"</div></a>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
210 $('#graphFieldBar'+unique).prepend(o);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
211 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
212
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
213 //position of bars
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
214 if(arr.position == 'bottom') $('.graphField'+el.id).css('bottom',0);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
215
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
216
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
217
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
218
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
219
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
220 // animated apearing
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
221 if(arr.animate){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
222 $('#graphFieldBar'+unique).css({ 'height' : 0 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
223 $('#graphFieldBar'+unique).animate({'height': fieldHeight},arr.speed*1000);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
224 } else {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
225 $('#graphFieldBar'+unique).css({'height': fieldHeight});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
226 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
227 i=i+1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
228 space=0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
229 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
230
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
231 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
232 ws = fields + legendWidth + 40;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
233 $(el).css({'width': ws})
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
234 arr.width=ws;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
235
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
236 createLegend(color_map,el.id); // create legend from array
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
237 createLinks(el.id);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
238 //position of legend
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
239
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
240 $(el).append("<div id='legendHolder"+el.id+"'></div>");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
241 $('#legendHolder'+el.id).css({ 'width': 200, 'float': 'right','text-align' : 'left'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
242 $('#legendHolder'+el.id).append(legend);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
243 $('#legendHolder'+el.id).append(links);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
244 $('.legendBar'+el.id).css({ 'float':'left', 'margin': 3, 'margin-left':'40','height': 12, 'width': 20, 'font-size': 0});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
245 $('.linkBar'+el.id).css({'margin-left':'40'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
246
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
247
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
248 $("#sortAsc"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
249 if(opts[el.id].sort!='asc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
250 opts[el.id].sort='asc';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
251 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
252 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
253 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
254
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
255 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
256 $("#sortDesc"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
257 if(opts[el.id].sort!='desc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
258 opts[el.id].sort='desc';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
259 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
260 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
261 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
262
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
263 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
264 $("#sortBarAsc"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
265 if(opts[el.id].sortBar!='asc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
266 opts[el.id].sortBar='asc';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
267 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
268 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
269 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
270
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
271 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
272 $("#sortBarDesc"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
273 if(opts[el.id].sortBar!='desc'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
274 opts[el.id].sortBar='desc';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
275 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
276 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
277 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
278
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
279 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
280
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
281 $("#showBasepairs"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
282 opts[el.id].tab='bp';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
283 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
284 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
285
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
286
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
287
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
288 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
289 $("#showReads"+el.id).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
290 opts[el.id].tab='reads';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
291 $('#graphHolder'+el.id).html('');
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
292 $('#graphHolder'+el.id).jqbargraph(opts[el.id]);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
293
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
294
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
295
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
296 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
297
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
298
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
299
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
300 //position of title
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
301 if(arr.title){
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
302 $(el).wrap("<div id='graphHolder"+el.id+"'></div>");
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
303 if(arr.tab=='reads'){
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
304 $('#graphHolder'+el.id).prepend("<div id='label"+el.id+"'>Cumulative reads assigned to family</div>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
305 }else{
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
306 $('#graphHolder'+el.id).prepend("<div id='label"+el.id+"'>Cumulative basepairs assigned to family</div>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
307 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
308 $('#graphHolder'+el.id).prepend("<a href=#files"+el.id+" onclick=fillDiv('"+el.id+"')>"+arr.title+"</a>").css({ 'width' : arr.width+'px', 'text-align' : 'center' });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
309
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
310 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
311 $("#graphHolder"+el.id).append("<div class='files"+el.id+"' id='files"+el.id+"' ></div><p/>");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
312 $('.files'+el.id).css({'width' : arr.width+'px','background-color':'silver', 'border':'2px solid gray', 'display':'none'})
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
313
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
314 $("#graphHolder"+el.id).append("<div class='image"+el.id+"' id='image"+el.id+"' ></div>");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
315 $('.image'+el.id).css({'width' : arr.width+'px','background-color':'silver', 'border':'2px solid gray', 'display':'none'})
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
316
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
317 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
318
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
319
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
320 //creating legend from array
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
321 createLegend = function(color_map,id){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
322 legend = '';
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
323 for(var sample in color_map){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
324 legend += "<div id='legend"+sample+"' style='overflow: hidden; zoom: 1; margin-left: 20;'><b>"+sample+"</b></div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
325 for(var state in color_map[sample]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
326 legend += "<div id='legend"+sample+state+"' style='overflow: hidden; zoom: 1;'>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
327 legend += "<div class='legendBar"+id+"' id='legendColor"+sample+state+"' style='background-color:"+color_map[sample][state]+"'></div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
328 legend += "<div class='legendLabel"+id+"' id='graphLabel"+unique+"'>"+state+"</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
329 legend += "</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
330 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
331 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
332 };
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
333
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
334 createLinks = function(id){
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
335 links="<div class='linkBar"+id+"'>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
336 links+="<div ><a href='javascript:void(0);' id='sortAsc"+id+"' >sort ascending</a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
337 links+="<div ><a href='javascript:void(0);' id='sortDesc"+id+"'>sort descending</a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
338 links+="<div ><a href='javascript:void(0);' id='sortBarAsc"+id+"'>sort bars ascending</a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
339 links+="<div ><a href='javascript:void(0);' id='sortBarDesc"+id+"'>sort bars descending</a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
340 if(opts[id].tab=='reads'){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
341 links+="<div ><a href='javascript:void(0);' id='showBasepairs"+id+"'>show basepair chart </a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
342 }else{
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
343 links+="<div ><a href='javascript:void(0);' id='showReads"+id+"'>show read chart </a></div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
344 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
345 links+="</div>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
346
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
347
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
348 };
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
349
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
350 fillDiv = function (elid, family,sample, region) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
351
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
352
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
353
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
354 arr=opts[elid].data;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
355
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
356 generateDownloadLink = function(family,sample,region,filetype){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
357 out=" no file ";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
358
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
359 if(arr[family]["samples"][sample][region]["files"][filetype]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
360 out="<a href="+arr[family]["type"]+"_"+family+"/region_"+region+"_"+filetype+">download</a>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
361 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
362 return out;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
363
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
364 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
365 generateShowLink = function(family,sample,region){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
366 out=" no image ";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
367 if(arr[family]["samples"][sample][region]["files"]["consensus.png"]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
368 out="<a href=#image"+elid+" onclick=showImage('"+elid+"','"+region+"','"+arr[family]["type"]+"_"+family +"/region_"+region+"_consensus.png')>show</a>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
369 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
370 return out;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
371
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
372 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
373 generateLine=function(family,sample,region){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
374
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
375 return "<tr><td>"+family+"</td><td>"+sample+"</td><td>"+region+"</td><td>"+arr[family]["samples"][sample][region]["reads"]+"</td><td>"+arr[family]["samples"][sample][region]["bp"]+"</td><td>"+arr[family]["samples"][sample][region]["length"]+"</td><td>"+generateDownloadLink(family,sample,region,"unaligned.fa.bzip2")+"</td><td>"+generateDownloadLink(family,sample,region,"alignment.bam")+"</td><td>"+generateDownloadLink(family,sample,region,"consensus.fa")+"</td><td>"+generateShowLink(family,sample,region)+" "+generateDownloadLink(family,sample,region,"consensus.png")+"</td></tr>";
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
376
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
377 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
378
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
379
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
380 var div = document.getElementById("files" + elid);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
381 div.innerHTML="";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
382
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
383 out = "<div><H3>Files for selected data "+sample+"</H3></div><p/>";
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
384
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
385 out += "<div class='" + elid + "_files' id='" + elid + "_files'><table id='"+elid+"table' class='"+elid+"table' border=1 cellpadding=3 cellspacing=0 style=' border: 1pt solid #000000; border-Collapse: collapse; font-size: 12px;'>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
386 out += "<tr><th>family</th><th>sample</th><th>region</th><th>#reads</th><th>#basepairs</th><th>region length</th><th>unaligned fasta</th><th>bam alignment</th><th>consensus fasta</th><th>consensus diagram</th></tr>"
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
387 if (!family) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
388 if(sample){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
389 for (var fam in arr) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
390 for (var region in arr[fam]["samples"][sample]) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
391 out+= generateLine(fam,sample,region);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
392 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
393
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
394 out += "</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
395 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
396
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
397 }else{
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
398 for (var fam in arr) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
399 for(var sample in arr[fam]["samples"]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
400 for (var region in arr[fam]["samples"][sample]) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
401 out+= generateLine(fam,sample,region);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
402 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
403
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
404 out += "</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
405 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
406 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
407 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
408 } else {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
409 out += "<b>"+ family+"</b>" ;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
410 if (!sample) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
411 for (var sample in arr[family]["samples"]) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
412 for(var region in arr[family]["samples"][sample]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
413
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
414 out+= generateLine(family,sample,region);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
415 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
416 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
417 } else {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
418 if(!region){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
419 for(var region in arr[family]["samples"][sample]){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
420 out+= generateLine(family,sample,region);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
421 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
422 } else {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
423
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
424 out+= generateLine(family,sample,region);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
425 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
426
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
427 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
428 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
429 out += "</div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
430
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
431 $(div).append(out);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
432 $(div).append("<div class='close_files"+elid+"'style='cursor:pointer;'>x</div>");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
433 $("a").css({'color':'black'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
434 $("table").css({'border':'collapse'});
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
435
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
436 $(".close_files"+elid).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
437 $('.files'+elid).animate({'height':'0px'},1000,'',function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
438 $('.files'+elid).css({'display':'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
439 $('.files'+elid).removeClass("selected");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
440 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
441
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
442
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
443 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
444 $("div.close_files"+elid).css({'color':'white','position':'absolute','top':'2','left':'2','background-color':'red','border':'1px solid white','border-radius':'20px','height':'20px','width':'20px','text-align': 'center'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
445 $("a.close_files"+elid).css({'color':'white', 'text-decoration': 'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
446 $('.files'+elid).css({'width': 'auto','display':'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
447 wi=$('.files'+elid).width()+15;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
448
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
449
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
450
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
451 if(!$('.files'+elid).hasClass("selected")){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
452 $('.files'+elid).css({'height': 'auto','display':'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
453 hei=$('.files'+elid).height();
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
454 hei=parseInt(hei)+10;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
455 hei=hei>400? hei=400 : hei;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
456 $('.files'+elid).css({'width':wi+'px','position':'relative','height':'0px', 'overflow' : 'auto','background-color':'rgb(223, 229, 249)', 'border':'2px solid silver', 'display':'block' });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
457 $('.files'+elid).animate({'height':hei+'px'}, 1000,'',function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
458
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
459 $('.files'+elid).addClass("selected");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
460 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
461 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
462 else{
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
463
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
464 curr_hei=$('.files'+elid).height();
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
465 $('.files'+elid).css({'height': 'auto','display':'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
466 hei=$('.files'+elid).height();
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
467 hei=parseInt(hei)+10;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
468 hei=hei>400? hei=400 : hei;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
469 $('.files'+elid).css({'height': curr_hei+'px', 'width':wi+'px','position':'relative', 'overflow' : 'auto','background-color':'rgb(223, 229, 249)', 'border':'2px solid silver', 'display':'block' }).animate({'height':hei+'px'}, 1000);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
470 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
471 };
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
472
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
473
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
474 showImage = function (elid,region, consensus_image,wi) {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
475 var div = document.getElementById("image" + elid);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
476 div.innerHTML="";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
477 out="<div><H3>Consensus Image for Region "+region+"</H3></div>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
478 newImg= new Image();
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
479 newImg.src=consensus_image;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
480 wid=newImg.width;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
481 hig=newImg.height;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
482 out+="<img id='image_file"+elid+"' src="+consensus_image+" alt="+consensus_image+" style='width:"+wid+";height:"+hig+";'>";
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
483 $(div).append(out)
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
484
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
485
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
486 $(div).append("<div class='close_image"+elid+"'style='cursor:pointer;'>x</div>");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
487 $(".close_image"+elid).click(function(){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
488
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
489 $('.image'+elid).css({'display':'none'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
490 $('.image'+elid).removeClass("selected");
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
491
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
492
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
493 });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
494 $("div.close_image"+elid).css({'color':'white','position':'absolute','top':'2','left':'2','background-color':'red','border':'1px solid white','border-radius':'20px','height':'20px','width':'20px','text-align': 'center'});
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
495 $("a.close_image"+elid).css({'color':'white', 'text-decoration': 'none'});
37
f325e9116e21 Uploaded
mzeidler
parents: 36
diff changeset
496
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
497 wi=$('.files'+elid).width();
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
498
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
499
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
500 if(!$('.image'+elid).hasClass("selected")){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
501 $('.image'+elid).css({'width':wi+'px','position':'relative','height':'auto', 'overflow' : 'auto','background-color':'rgb(223, 229, 249)', 'border':'2px solid silver', 'display':'block' });
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
502
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
503 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
504
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
505 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
506
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
507
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
508 this.each (
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
509 function()
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
510 { init(this); }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
511 )
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
512
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
513 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
514
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
515 // default values
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
516 $.fn.jqBarGraph.defaults = {
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
517 barSpace: 10,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
518 width: 400,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
519 height: 600,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
520 color: '#000000',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
521 colors: false,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
522 lbl: '',
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
523 sort: false, // 'asc' or 'desc'
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
524 sortBar: false,
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
525 tab: 'reads',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
526 position: 'bottom', // or 'top' doesn't work for multi type
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
527 prefix: '',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
528 postfix: '',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
529 animate: true,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
530 speed: 3.0,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
531 legendWidth: 150,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
532 legend: false,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
533 type: false, // or 'multi'
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
534 showValues: false,
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
535 borderSize: 1,
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
536 showValuesColor: '#fff',
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
537 title: false
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
538 };
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
539
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
540 function sortGraph(arr,fun){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
541
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
542 sum = function(ar,tab){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
543 total = 0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
544 for(var val in ar){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
545 total += ar[val][tab];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
546 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
547 return total;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
548 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
549
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
550
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
551 data = arr.data;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
552 keys=Object.keys(data);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
553 tab = arr.tab;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
554 keys2 = new Array(keys.length);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
555
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
556 for(var key in keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
557 fam = keys[key];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
558 ss=0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
559 for(var sample in data[fam]['samples']){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
560
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
561 s = sum(data[fam]["samples"][sample],tab);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
562 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
563 ss = ss+s;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
564 keys2[key]={'key':keys[key], 'sum':ss};
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
565 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
566 keys2.sort(fun);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
567
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
568 for (key in keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
569
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
570 keys[key] = keys2[key]['key'];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
571 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
572 return keys;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
573 };
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
574
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
575 //sorting functions
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
576 function sortAsc(a,b){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
577
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
578 if (a["sum"]<b["sum"]) return -1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
579 if (a["sum"]>b["sum"]) return 1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
580 return 0;
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
581 }
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
582 function sortDesc(a,b){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
583
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
584 if (a["sum"]<b["sum"]) return 1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
585 if (a["sum"]>b["sum"]) return -1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
586 return 0;
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
587 }
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
588
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
589
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
590 function sortBar(sample,tab,fun){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
591 keys=Object.keys(sample);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
592 keys2 = new Array(data_keys.length);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
593 for(var key in keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
594 keys2[key]={ 'key':keys[key],'value':sample[keys[key]][tab]};
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
595
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
596 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
597
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
598 keys2.sort(fun);
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
599 for (key in keys){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
600 keys[key]= keys2[key]['key'];
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
601 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
602
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
603 return keys;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
604 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
605
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
606
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
607
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
608
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
609 function barAsc(a,b){
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
610 if(a['value']<b['value']) return -1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
611 if(a['value']>b['value']) return 1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
612 return 0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
613 }
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
614
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
615 function barDesc(a,b){
42
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
616 if(a['value']<b['value']) return 1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
617 if(a['value']>b['value']) return -1;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
618 return 0;
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
619 }
310843ad5112 Uploaded
mzeidler
parents: 37
diff changeset
620
12
af2085ce7001 Uploaded
mzeidler
parents:
diff changeset
621 })(jQuery);