Mercurial > repos > immport-devteam > flow_overview
comparison js/overview.js @ 1:b5453d07f740 draft default tip
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/flow_overview commit 65373effef15809f3db0e5f9603ef808f4110aa3"
author | azomics |
---|---|
date | Wed, 29 Jul 2020 17:03:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:8283ff163ba6 | 1:b5453d07f740 |
---|---|
1 // Copyright (c) 2016 Northrop Grumman. | |
2 // All rights reserved. | |
3 | |
4 var scatterData2D = {}; | |
5 var scatterData3D = {}; | |
6 var scatterData3DMFI = {}; | |
7 var scatterDataMFI = {}; | |
8 var tableContent; | |
9 var newNames ={}; | |
10 var configbp = {}; | |
11 var bpurl = "./boxplotData.json"; | |
12 | |
13 var waitForFinalEvent = (function () { | |
14 var timers = {}; | |
15 return function (callback, ms, uniqueId) { | |
16 if (!uniqueId) { | |
17 uniqueId = "Don't call this twice without a uniqueId"; | |
18 } | |
19 if (timers[uniqueId]) { | |
20 clearTimeout (timers[uniqueId]); | |
21 } | |
22 timers[uniqueId] = setTimeout(callback, ms); | |
23 }; | |
24 })(); | |
25 | |
26 var updateOverviewPlotDisplay = function(data) { | |
27 $('#overviewPlotDiv').empty(); | |
28 $('#overviewPlotDiv').html(data); | |
29 }; | |
30 | |
31 var displayMFI = function() { | |
32 var url = "flow.mfi_pop"; | |
33 d3.text(url, function(error, data){ | |
34 var mfiHdgs = [], | |
35 pp = [], | |
36 mfiTableData = [], | |
37 mfiTableHeadings = [], | |
38 mfiTargets = [], | |
39 mfiTableHTML = '<table id="mfitable" class="dtable display compact" cellspacing="0" width="100%"/>', | |
40 popcol = 1, | |
41 mfiEditorData =[]; | |
42 | |
43 if (error){ | |
44 alert("Problem retrieving data"); | |
45 return; | |
46 } | |
47 mfiHdgs = data.split("\n")[0].split("\t"); | |
48 pp = mfiHdgs.pop(); | |
49 mfiHdgs.unshift(pp); | |
50 mfiHdgs.unshift("Comment"); | |
51 data = d3.tsv.parse(data); | |
52 function handleSubmit(method, url, d, successCallBack, errorCallBack) { | |
53 var output = {data : mfiTableData}; | |
54 successCallBack(output); | |
55 } | |
56 | |
57 $('#mfiDiv').empty(); | |
58 mfiTableData = $.extend(true,[],data); | |
59 mfiTableData.forEach(function(d){ | |
60 d.Comment = d.Population; | |
61 newNames[parseInt(d.Population)] = d.Comment; | |
62 }); | |
63 //var mfiData = mfiTableData.filter(function(d){return d}); | |
64 tableContent = $.extend(true, [], mfiTableData); | |
65 mfiHdgs.forEach(function(d,i) { | |
66 mfiTableHeadings.push({"data": d, "title": d}); | |
67 mfiEditorData.push({"label" : d, "name" : d}); | |
68 }); | |
69 | |
70 for (var i = 2, j = mfiHdgs.length - 2; i<j; i++){ | |
71 mfiTargets.push(i); | |
72 } | |
73 | |
74 $('#mfiDiv').html(mfiTableHTML); | |
75 var editor = new $.fn.dataTable.Editor({ | |
76 ajax: handleSubmit, | |
77 table: '#mfitable', | |
78 fields: mfiEditorData, | |
79 idSrc: 'Population' | |
80 }); | |
81 $('#mfitable').on('click', 'tbody td:first-child', function (e) { | |
82 editor.bubble(this); | |
83 }); | |
84 var mfiTable = $('#mfitable').DataTable({ | |
85 columns: mfiTableHeadings, | |
86 data: mfiTableData, | |
87 order: [[ popcol, "asc" ]], | |
88 pageLength: 25, | |
89 dom: '<"top"Bi>t<"bottom"lp><"clear">', | |
90 columnDefs: [{ | |
91 targets: mfiTargets, | |
92 className: "dt-body-right", | |
93 render: function(data, type, row){ | |
94 return parseFloat(data).toFixed(2); | |
95 } | |
96 }, { | |
97 targets: [mfiHdgs.length - 2], | |
98 className: "dt-body-right" | |
99 }, { | |
100 targets: [mfiHdgs.length-1], | |
101 className: "dt-body-right", | |
102 render: function(data, type, row){ | |
103 return parseFloat(data).toFixed(2) + '%'; | |
104 } | |
105 } | |
106 ], | |
107 buttons: [ | |
108 'copy', 'pdfHtml5','csvHtml5', 'colvis' | |
109 ], | |
110 colReorder: {fixedColumnsLeft:1}, | |
111 select: true | |
112 }); | |
113 editor.on('preSubmit', function(e, object, action){ | |
114 var data = object.data; | |
115 var key = Object.keys(data)[0]; | |
116 var count = object.data[key]['Comment']; | |
117 mfiTableData.forEach(function(d) { | |
118 if (d.Population === key) { | |
119 d.Comment = count; | |
120 newNames[parseInt(d.Population)] = count; | |
121 } | |
122 }); | |
123 tableContent = $.extend(true, [], mfiTableData); | |
124 }); | |
125 }); | |
126 }; | |
127 | |
128 var displayOverviewPlot = function() { | |
129 var url = "flow.overview"; | |
130 $.ajax({ | |
131 url: url, | |
132 dataType: "text", | |
133 success: function(data) { | |
134 updateOverviewPlotDisplay(data); | |
135 } | |
136 }); | |
137 }; | |
138 | |
139 var displayScatter2D = function() { | |
140 var url = "flow.sample"; | |
141 $.ajax({ | |
142 url: url, | |
143 dataType: "text", | |
144 success: function(text) { | |
145 var mfi_url = "flow.mfi_pop"; | |
146 $.ajax({ | |
147 url: mfi_url, | |
148 dataType: "text", | |
149 success: function(mfi_text) { | |
150 scatterDataMFI = new processMFI(mfi_text); | |
151 scatterData2D = new processData(text); | |
152 displayScatterToolbar2D(); | |
153 displayScatterPopulation2D(); | |
154 processScatterData2D(); | |
155 processScatterDataMFI2D(); | |
156 displayScatterPlot2D(); | |
157 $(window).on('resize',function() { | |
158 waitForFinalEvent(function() { | |
159 processScatterData2D(); | |
160 displayScatterPlot2D(); | |
161 }, 500, "resize2D"); | |
162 }); | |
163 } | |
164 }); | |
165 } | |
166 }); | |
167 }; | |
168 | |
169 var displayScatter3D = function() { | |
170 var url = "flow.sample"; | |
171 $.ajax({ | |
172 url: url, | |
173 dataType: "text", | |
174 success: function(text) { | |
175 var mfi_url = "flow.mfi_pop"; | |
176 $.ajax({ | |
177 url: mfi_url, | |
178 dataType: "text", | |
179 success: function(mfi_text) { | |
180 scatterData3DMFI = new processMFI(mfi_text); | |
181 scatterData3D = new processData(text); | |
182 displayScatterToolbar3D(); | |
183 displayScatterPopulation3D(); | |
184 processScatterData3D(); | |
185 processScatterData3DMFI(); | |
186 displayScatterPlot3D(); | |
187 $(window).on('resize',function() { | |
188 waitForFinalEvent(function() { | |
189 processScatterData3D(); | |
190 displayScatterPlot3D(); | |
191 }, 500, "resize3D"); | |
192 }); | |
193 } | |
194 }); | |
195 } | |
196 }); | |
197 }; | |
198 | |
199 var displayMFIBoxplot = function() { | |
200 $.ajax({ | |
201 url: bpurl, | |
202 dataType: "json", | |
203 success: function(data) { | |
204 configbp = { | |
205 displaybutton : '#updateDisplaybp', | |
206 toggledisplayj : '#changeDisplay', | |
207 toggledisplay : 'changeDisplay', | |
208 popSelectj : '.popSelectbp', | |
209 plotdivj : '#plotDivbp', | |
210 csdata : data, | |
211 plotdiv : 'plotDivbp', | |
212 type : 'boxplot', | |
213 table : '#popTablebp tbody', | |
214 popSelect : 'popSelectbp', | |
215 allMarkers : [], | |
216 selectedMarkers: [], | |
217 allPopulations : [], | |
218 selectedPopulations : [], | |
219 popSelectAll : '#popSelectAllbp', | |
220 popSelectCheck: '.popSelectbp:checked', | |
221 mrkrSelectAll : '#mrkrSelectAll', | |
222 mrkrSelectCheck: '.mrkrSelect:checked', | |
223 mrkrSelect : 'mrkrSelect', | |
224 mtable : '#mrkrTable tbody', | |
225 mrkrSelectj: '.mrkrSelect', | |
226 displayvalues: '#displayLabels', | |
227 displayMFI: '#displayMFI', | |
228 view: 'p', | |
229 mrkrNames : Object.keys(data.mfi) | |
230 }; | |
231 displayToolbar(configbp); | |
232 } | |
233 }); | |
234 }; | |
235 | |
236 function processData(text) { | |
237 var data = d3.tsv.parseRows(text).map(function(row) { | |
238 return row.map(function(value) { | |
239 if (isNaN(value)) { | |
240 return value; | |
241 } | |
242 return +value; | |
243 }); | |
244 }); | |
245 | |
246 this.columnHeadings = data.shift(); | |
247 this.columnHeadings.pop(); | |
248 var popCol = data[0].length - 1; | |
249 var p = data.map(function(value,index) { | |
250 return parseInt(value[popCol]); | |
251 }); | |
252 | |
253 var populations = {}; | |
254 for (var i = 0; i < p.length; i++) { | |
255 if (populations[p[i]] === undefined) { | |
256 populations[p[i]] = 1; | |
257 } else { | |
258 populations[p[i]] = populations[p[i]] + 1; | |
259 } | |
260 } | |
261 | |
262 this.popCol = popCol; | |
263 this.populations = d3.set(p).values(); | |
264 this.populations = this.populations.map(function(value,index) { | |
265 return parseInt(value); | |
266 }); | |
267 this.selectedPopulations = this.populations; | |
268 this.percent = this.populations.map(function(value,index) { | |
269 return Math.floor(populations[value] * 10000.0 / data.length) / 100.0; | |
270 }); | |
271 | |
272 this.data = data; | |
273 this.m1 = 0; | |
274 this.m2 = 1; | |
275 this.m3 = 2; | |
276 this.view = 1; | |
277 }; | |
278 | |
279 function processMFI(text) { | |
280 data = d3.tsv.parseRows(text).map(function(row) { | |
281 return row.map(function(value) { | |
282 if (isNaN(value)) { | |
283 return value; | |
284 } | |
285 return +value; | |
286 }); | |
287 }); | |
288 | |
289 // Get the Headings Row, then remove the Count, Percentage and | |
290 // Population headings | |
291 this.columnHeadings = data.shift(); | |
292 this.columnHeadings.pop(); | |
293 this.columnHeadings.pop(); | |
294 this.columnHeadings.pop(); | |
295 | |
296 var popCol = data[0].length -1; | |
297 var pop = data.map(function(value,index) { | |
298 return parseInt(value[popCol]); | |
299 }); | |
300 | |
301 var perCol = data[0].length -2; | |
302 var per = data.map(function(value,index) { | |
303 return parseFloat(value[perCol]); | |
304 }); | |
305 | |
306 var countCol = data[0].length -3; | |
307 var count = data.map(function(value,index) { | |
308 return parseInt(value[countCol]); | |
309 }); | |
310 | |
311 this.popCol = popCol; | |
312 this.populations = pop; | |
313 this.selectedPopulations = pop; | |
314 this.percent = per; | |
315 this.counts = count; | |
316 | |
317 var l = data[0].length; | |
318 this.data = data.map(function(row) { | |
319 return row.splice(0,countCol); | |
320 }); | |
321 this.poplist = pop; | |
322 this.m1 = 0; | |
323 this.m2 = 1; | |
324 this.m3 = 2; | |
325 }; |