about summary refs log tree commit diff
path: root/wqflask
diff options
context:
space:
mode:
authorzsloan2015-08-11 20:41:42 +0000
committerzsloan2015-08-11 20:41:42 +0000
commit743f44c6e90549a7d6d1dad85a594277a3dc0cb9 (patch)
treefc90c6bd82ac314f4992896bd311f47c8f38f93b /wqflask
parent3169d94d9b05410aa9b5380477bf10827c6afcde (diff)
downloadgenenetwork2-743f44c6e90549a7d6d1dad85a594277a3dc0cb9.tar.gz
Highlighting works for all trait selection options (select all, invert, select top)
Search table and Select Top options added to global and regular search pages
Diffstat (limited to 'wqflask')
-rwxr-xr-xwqflask/wqflask/interval_mapping/interval_mapping.py4
-rw-r--r--wqflask/wqflask/static/new/javascript/create_lodchart.js9
-rw-r--r--wqflask/wqflask/static/new/javascript/lod_chart.js11
-rwxr-xr-xwqflask/wqflask/static/new/javascript/search_results.coffee3
-rwxr-xr-xwqflask/wqflask/static/new/javascript/search_results.js101
-rwxr-xr-xwqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css2
-rwxr-xr-xwqflask/wqflask/templates/gsearch_gene.html46
-rwxr-xr-xwqflask/wqflask/templates/search_result_page.html4
8 files changed, 127 insertions, 53 deletions
diff --git a/wqflask/wqflask/interval_mapping/interval_mapping.py b/wqflask/wqflask/interval_mapping/interval_mapping.py
index 79cb1481..108bc747 100755
--- a/wqflask/wqflask/interval_mapping/interval_mapping.py
+++ b/wqflask/wqflask/interval_mapping/interval_mapping.py
@@ -72,7 +72,7 @@ class IntervalMapping(object):
         
         json_filename = webqtlUtil.genRandStr(prefix="intmap_")
         json.dumps(self.json_data, webqtlConfig.TMPDIR + json_filename)
-        
+
         self.js_data = dict(
             result_score_type = self.score_type,
             manhattan_plot = self.manhattan_plot,
@@ -220,7 +220,7 @@ class IntervalMapping(object):
                 self.json_data['additive'].append(qtl.additive)
             locus = {"name":reaper_locus.name, "chr":reaper_locus.chr, "cM":reaper_locus.cM, "Mb":reaper_locus.Mb}
             qtl = {"lrs_value": qtl.lrs, "chr":reaper_locus.chr, "Mb":reaper_locus.Mb,
-                   "cM":reaper_locus.cM, "name":reaper_locus.name, "additive":qtl.additive}
+                   "cM":reaper_locus.cM, "name":reaper_locus.name, "additive":qtl.additive, "dominance":qtl.dominance}
             self.qtl_results.append(qtl)
 
 
diff --git a/wqflask/wqflask/static/new/javascript/create_lodchart.js b/wqflask/wqflask/static/new/javascript/create_lodchart.js
index 2537e9e2..b8fcf1f8 100644
--- a/wqflask/wqflask/static/new/javascript/create_lodchart.js
+++ b/wqflask/wqflask/static/new/javascript/create_lodchart.js
@@ -3,7 +3,7 @@
   var create_lod_chart;
 
   create_lod_chart = function() {
-    var additive, chrrect, data, h, halfh, margin, mychart, totalh, totalw, w;
+    var chrrect, data, h, halfh, margin, mychart, totalh, totalw, w;
     h = 500;
     w = 1200;
     margin = {
@@ -16,12 +16,7 @@
     halfh = h + margin.top + margin.bottom;
     totalh = halfh * 2;
     totalw = w + margin.left + margin.right;
-    if ('additive' in js_data) {
-      additive = js_data.additive;
-    } else {
-      additive = false;
-    }
-    console.log("js_data:", js_data);
+    //console.log("js_data:", js_data);
     mychart = lodchart().lodvarname("lod.hk").height(h).width(w).margin(margin).ylab(js_data.result_score_type + " score").manhattanPlot(js_data.manhattan_plot);
     data = js_data.json_data;
     d3.select("div#topchart").datum(data).call(mychart);
diff --git a/wqflask/wqflask/static/new/javascript/lod_chart.js b/wqflask/wqflask/static/new/javascript/lod_chart.js
index 35b37070..2ea3a3e8 100644
--- a/wqflask/wqflask/static/new/javascript/lod_chart.js
+++ b/wqflask/wqflask/static/new/javascript/lod_chart.js
@@ -29,7 +29,8 @@ lodchart = function() {
   darkrect = "#F1F1F9";
   lightrect = "#FBFBFF";
   lodlinecolor = "darkslateblue";
-  additivelinecolor = "red";
+  additivelinecolor_plus = "red";
+  additivelinecolor_negative = "green";
   linewidth = 2;
   suggestivecolor = "gainsboro";
   significantcolor = "#EBC7C7";
@@ -208,7 +209,13 @@ lodchart = function() {
           for (k = 0, len1 = ref1.length; k < len1; k++) {
             chr = ref1[k];
             if (chr.indexOf(data['chr'])) {
-              curves.append("path").datum(data.posByChr[chr[0]]).attr("d", additivecurve(chr[0], lodvarnum)).attr("stroke", additivelinecolor).attr("fill", "none").attr("stroke-width", 1).style("pointer-events", "none");
+              if (additivecurve(chr[0], lodvarnum).y < 0) {
+                additivecurve(chr[0], lodvarnum).y = Math.abs(additivecurve(chr[0], lodvarnum).y)
+                curves.append("path").datum(data.posByChr[chr[0]]).attr("d", additivecurve(chr[0], lodvarnum)).attr("stroke", additivelinecolor_negative).attr("fill", "none").attr("stroke-width", 1).style("pointer-events", "none");
+              }
+              else {
+                curves.append("path").datum(data.posByChr[chr[0]]).attr("d", additivecurve(chr[0], lodvarnum)).attr("stroke", additivelinecolor_plus).attr("fill", "none").attr("stroke-width", 1).style("pointer-events", "none");
+              }
             }
           }
         }
diff --git a/wqflask/wqflask/static/new/javascript/search_results.coffee b/wqflask/wqflask/static/new/javascript/search_results.coffee
index c4e6b1a2..e0cfc61a 100755
--- a/wqflask/wqflask/static/new/javascript/search_results.coffee
+++ b/wqflask/wqflask/static/new/javascript/search_results.coffee
@@ -15,8 +15,7 @@ $ ->
         $(".trait_checkbox").trigger('click')
 
     add = ->
-        traits = $("#trait_table input:checked").map(->
-            return $(this).val()).get()
+        traits = $("#trait_table input:checked").map(-> return $(this).val()).get()
         console.log("checked length is:", traits.length)
         console.log("checked is:", traits)
         $.colorbox({href:"/collections/add?traits=#{traits}"})
diff --git a/wqflask/wqflask/static/new/javascript/search_results.js b/wqflask/wqflask/static/new/javascript/search_results.js
index ba2ebb4f..7f9ff896 100755
--- a/wqflask/wqflask/static/new/javascript/search_results.js
+++ b/wqflask/wqflask/static/new/javascript/search_results.js
@@ -1,17 +1,81 @@
-// Generated by CoffeeScript 1.8.0
 $(function() {
   var add, change_buttons, checked_traits, deselect_all, invert, remove, removed_traits, select_all;
+
   checked_traits = null;
   select_all = function() {
     console.log("selected_all");
-    return $(".trait_checkbox").prop('checked', true);
+    $(".trait_checkbox").each(function() {
+        $(this).prop('checked', true);
+        if (!$(this).closest('tr').hasClass('selected')) {
+            $(this).closest('tr').addClass('selected')
+        }
+    });
   };
+
   deselect_all = function() {
-    return $(".trait_checkbox").prop('checked', false);
+    $(".trait_checkbox").each(function() {
+        $(this).prop('checked', false);
+        if ($(this).closest('tr').hasClass('selected')) {
+            $(this).closest('tr').removeClass('selected')
+        }
+    });
   };
+
   invert = function() {
-    return $(".trait_checkbox").trigger('click');
+    $(".trait_checkbox").each(function() {
+        if ($(this).prop('checked') == true) {
+            $(this).prop('checked', false)
+        }
+        else {
+            $(this).prop('checked', true)
+        }
+
+        if ($(this).closest('tr').hasClass('selected')) {
+            $(this).closest('tr').removeClass('selected')
+        }
+        else {
+            $(this).closest('tr').addClass('selected')
+        }
+    });
   };
+
+  $('#searchbox').keyup(function(){
+      $('#trait_table').DataTable().search($(this).val()).draw();
+  });
+
+  $('#select_top').keyup(function(){
+      num_rows = $(this).val()
+      if (num_rows = parseInt(num_rows)){
+          i = 0
+          $('#trait_table > tbody > tr').each(function(){
+              if (i < num_rows) {
+                  $(this).find('.trait_checkbox').prop("checked", true)
+                  if (!$(this).closest('tr').hasClass('selected')) {
+                      $(this).closest('tr').addClass('selected')
+                  }
+              }
+              i += 1
+          });
+      }
+  });            
+
+  $('.trait_checkbox:checkbox').change(function() {
+      console.log("CHANGED")
+      change_buttons()
+
+      if ($(this).is(":checked")) {
+          if (!$(this).closest('tr').hasClass('selected')) {
+              $(this).closest('tr').addClass('selected')
+          }
+      }
+      else {
+          if ($(this).closest('tr').hasClass('selected')) {
+              $(this).closest('tr').removeClass('selected')
+          }
+      }  
+       
+  });
+
   add = function() {
     var traits;
     traits = $("#trait_table input:checked").map(function() {
@@ -28,7 +92,7 @@ $(function() {
     return checked_traits.closest("tr").fadeOut();
   };
   change_buttons = function() {
-    var button, buttons, item, num_checked, text, _i, _j, _k, _l, _len, _len1, _len2, _len3, _results, _results1;
+    var button, buttons, item, num_checked, text, _i, _j, _k, _l, _len, _len2, _len3, _len4, _results, _results2;
     buttons = ["#add", "#remove"];
     num_checked = $('.trait_checkbox:checked').length;
     console.log("num_checked is:", num_checked);
@@ -38,31 +102,13 @@ $(function() {
         $(button).prop("disabled", true);
       }
     } else {
-      for (_j = 0, _len1 = buttons.length; _j < _len1; _j++) {
+      for (_j = 0, _len2 = buttons.length; _j < _len2; _j++) {
         button = buttons[_j];
         $(button).prop("disabled", false);
       }
     }
-    if (num_checked > 1) {
-      console.log("in loop");
-      _results = [];
-      for (_k = 0, _len2 = buttons.length; _k < _len2; _k++) {
-        item = buttons[_k];
-        console.log("  processing item:", item);
-        _results.push(text = $(item).html());
-      }
-      return _results;
-    } else {
-      console.log("in loop");
-      _results1 = [];
-      for (_l = 0, _len3 = buttons.length; _l < _len3; _l++) {
-        item = buttons[_l];
-        console.log("  processing item:", item);
-        _results1.push(text = $(item).html());
-      }
-      return _results1;
-    }
   };
+
   remove = function() {
     var traits, uc_id;
     checked_traits = $("#trait_table input:checked");
@@ -88,6 +134,5 @@ $(function() {
   $("#invert").click(invert);
   $("#add").click(add);
   $("#remove").click(remove);
-  $('.trait_checkbox').click(change_buttons);
-  return $('.btn').click(change_buttons);
-});
+  $('.trait_checkbox, .btn').click(change_buttons);
+});
\ No newline at end of file
diff --git a/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css b/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
index eec02ef5..c8303de2 100755
--- a/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
+++ b/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
@@ -65,7 +65,7 @@ table.dataTable tbody tr {
   background-color: #ffffff;
 }
 table.dataTable tbody tr.selected {
-  background-color: #B0BED9;
+  background-color: #ffff99;
 }
 table.dataTable tbody th,
 table.dataTable tbody td {
diff --git a/wqflask/wqflask/templates/gsearch_gene.html b/wqflask/wqflask/templates/gsearch_gene.html
index 3e1cb32e..1f525c5f 100755
--- a/wqflask/wqflask/templates/gsearch_gene.html
+++ b/wqflask/wqflask/templates/gsearch_gene.html
@@ -21,6 +21,9 @@
             <button class="btn btn-default" id="invert"><span class="glyphicon glyphicon-resize-vertical"></span> Invert</button>
             <button class="btn btn-default" id="add"><span class="glyphicon glyphicon-plus-sign"></span> Add</button>
             <button class="btn btn-primary pull-right"><span class="glyphicon glyphicon-download"></span> Download Table</button>
+            <input type="text" id="searchbox" class="form-control" style="width: 200px; display: inline;" placeholder="Search This Table For ...">
+            <input type="text" id="select_top" class="form-control" style="width: 200px; display: inline;" placeholder="Select Top ...">
+
             <br />
             <br />
             <table class="table table-hover table-striped" id="trait_table">
@@ -47,7 +50,7 @@
                 <tbody>
                     {% for this_trait in results %}
                     <TR>
-						<td><input type="checkbox">{{ loop.index }}</td>
+						<td><input class="trait_checkbox" type="checkbox">{{ loop.index }}</td>
                         {% for item in this_trait %}
 							<TD>{{ item }}</TD>
 						{% endfor %}
@@ -64,7 +67,7 @@
 {% endblock %}
 
 {% block js %}
-	<script type="text/javascript" src="/static/new/javascript/search_results.js"></script>
+    <script language="javascript" type="text/javascript" src="/static/new/javascript/search_results.js"></script>
     
     <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.dataTables.min.js"></script>
     <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.naturalSort.js"></script>
@@ -105,13 +108,35 @@
                 return ((x < y) ? -1 : ((x > y) ? 1 : 0));
             }
         };
+
+        jQuery.fn.dataTableExt.oSort['cust-txt-asc'] = function (a, b) {
+            var x = getValue(a);
+            var y = getValue(b); 
             
+            if (x == 'N/A' || x == '') {
+                return 1;
+            }
+            else if (y == 'N/A' || y == '') {
+                return -1;
+            }
+            else {
+                return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+            }
+        };
+  
         jQuery.fn.dataTableExt.oSort['cust-txt-desc'] = function (a, b) {
             var x = getValue(a);
             var y = getValue(b);
             return ((x < y) ? 1 : ((x > y) ? -1 : 0));
         };
 
+        $.fn.dataTable.ext.order['dom-checkbox'] = function  ( settings, col )
+        {
+            return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+                return $('input', td).prop('checked') ? '1' : '0';
+            } );
+        }
+
         $(document).ready( function () {
             
             $('#trait_table tr').click(function(event) {
@@ -129,17 +154,17 @@
                     { "type": "natural", "width": "15%"  },
                     { "type": "cust-txt" },
                     { "type": "natural", "width": "12%"  },
-					{ "type": "natural", "width": "12%"  },
-					{ "type": "natural", "width": "12%"  },
-					{ "type": "natural", "width": "12%"  },
-					{ "type": "natural", "width": "12%"  },
+                    { "type": "natural", "width": "12%"  },
+                    { "type": "natural", "width": "12%"  },
+                    { "type": "natural", "width": "12%"  },
+                    { "type": "natural", "width": "12%"  },
                     { "type": "natural", "width": "15%"  },
-					{ "type": "natural" },
-					{ "type": "natural" },
-					{ "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
                     { "type": "cust-txt" }
                 ],
-				"sDom": "RJtir",
+                "sDom": "RJtir",
                 "iDisplayLength": -1,
                 "autoWidth": true,
                 "bLengthChange": true,
@@ -153,6 +178,7 @@
                 "paging": false
             } );
             console.timeEnd("Creating table");
+
         });
         
     </script>
diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html
index 335ab213..ca5f28d9 100755
--- a/wqflask/wqflask/templates/search_result_page.html
+++ b/wqflask/wqflask/templates/search_result_page.html
@@ -43,9 +43,11 @@
           <button class="btn btn-default" id="select_all"><span class="glyphicon glyphicon-ok"></span> Select All</button>
           <button class="btn btn-default" id="deselect_all"><span class="glyphicon glyphicon-remove"></span> Deselect All</button>
           <button class="btn btn-default" id="invert"><span class="glyphicon glyphicon-resize-vertical"></span> Invert</button>
-          <button class="btn btn-default" id="add"><span class="glyphicon glyphicon-plus-sign"></span> Add</button>
+          <button class="btn btn-default" id="add" disabled><span class="glyphicon glyphicon-plus-sign"></span> Add</button>
           <button class="btn btn-default"><span class="glyphicon glyphicon-download"></span> Download Table</button>
           <button id="redraw" class="btn btn-default">Reset Columns</button>
+          <input type="text" id="searchbox" class="form-control" style="width: 200px; display: inline;" placeholder="Search This Table For ...">
+          <input type="text" id="select_top" class="form-control" style="width: 200px; display: inline;" placeholder="Select Top ...">
           <br />
           <br />
           <div id="table_container">