about summary refs log tree commit diff
diff options
context:
space:
mode:
authorzsloan2016-10-21 20:55:54 +0000
committerzsloan2016-10-21 20:55:54 +0000
commiteb4a6942d51f1f69135f95fb14587a6494732eda (patch)
tree4537d9a90b1e40dad96e2718989b7668da63d3b3
parent4feab4e85475834fafa930291934b441d1611e44 (diff)
downloadgenenetwork2-eb4a6942d51f1f69135f95fb14587a6494732eda.tar.gz
Added CSV table download option to both gene and pheno global search
The "Database" part of the metadata isn't displayed for global search table downloads

In both regular and global search, the table can not be sorted by whether the first column is checked

Removed some unused datatables/javascript from the regular and global search page html
-rw-r--r--wqflask/wqflask/export_traits.py3
-rw-r--r--wqflask/wqflask/static/new/javascript/search_results.js2
-rw-r--r--wqflask/wqflask/templates/gsearch_gene.html97
-rw-r--r--wqflask/wqflask/templates/gsearch_pheno.html106
-rw-r--r--wqflask/wqflask/templates/search_result_page.html44
5 files changed, 85 insertions, 167 deletions
diff --git a/wqflask/wqflask/export_traits.py b/wqflask/wqflask/export_traits.py
index eeed72f1..f8fce929 100644
--- a/wqflask/wqflask/export_traits.py
+++ b/wqflask/wqflask/export_traits.py
@@ -22,7 +22,8 @@ def export_search_results_csv(targs):
     metadata = []
 
     metadata.append(["Citations: Please see www.genenetwork.org/reference.html"])
-    metadata.append(["Database: " + targs['database_name']])
+    if targs['database_name'] != "None":
+        metadata.append(["Database: " + targs['database_name']])
     metadata.append(["Date: " + datetime.datetime.now().strftime("%B %d, %Y")])
     metadata.append(["Time: " + datetime.datetime.now().strftime("%H:%M GMT")])
     metadata.append(["Status of data ownership: Possibly unpublished data; please see www.genenetwork.org/statusandContact.html for details on sources, ownership, and usage of these data."])
diff --git a/wqflask/wqflask/static/new/javascript/search_results.js b/wqflask/wqflask/static/new/javascript/search_results.js
index 5250523f..40fdff70 100644
--- a/wqflask/wqflask/static/new/javascript/search_results.js
+++ b/wqflask/wqflask/static/new/javascript/search_results.js
@@ -73,7 +73,6 @@ $(function() {
   });
 
   $('.trait_checkbox:checkbox').change(function() {
-      console.log("CHANGED")
       change_buttons()
 
       if ($(this).is(":checked")) {
@@ -108,7 +107,6 @@ $(function() {
     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);
     if (num_checked === 0) {
       for (_i = 0, _len = buttons.length; _i < _len; _i++) {
         button = buttons[_i];
diff --git a/wqflask/wqflask/templates/gsearch_gene.html b/wqflask/wqflask/templates/gsearch_gene.html
index 2d970b36..776b8d07 100644
--- a/wqflask/wqflask/templates/gsearch_gene.html
+++ b/wqflask/wqflask/templates/gsearch_gene.html
@@ -20,46 +20,51 @@
             <button class="btn btn-default" id="add" disabled ><span class="glyphicon glyphicon-plus-sign"></span> Add</button>
             <input type="text" id="searchbox" class="form-control" style="width: 180px; display: inline;" placeholder="Search This Table For ...">
             <input type="text" id="select_top" class="form-control" style="width: 120px; display: inline;" placeholder="Select Top ...">
-
             <br />
             <br />
+            <form id="export_form" method="POST" action="/export_traits_csv">
+              <input type="hidden" name="database_name" id="database_name" value="None">
+              <input type="hidden" name="export_data" id="export_data" value="">
+              <button class="btn btn-default" id="export_traits">Download CSV</button>
+            </form>
+            <br />
             <div style="width: 2000px; background-color: #eeeeee; border: 1px solid black;">
               <table width="2000px" id="trait_table" class="table table-hover table-striped" >
                 <thead>
                   <tr>
                     <th style="background-color: #eeeeee;"></th>
-                    <th style="background-color: #eeeeee;">Index</th>
-                    <th style="background-color: #eeeeee;">Species</th> 
-                    <th style="background-color: #eeeeee;">Group</th> 
-                    <th style="background-color: #eeeeee;">Tissue</th> 
-                    <th style="background-color: #eeeeee;">Dataset</th> 
-                    <th style="background-color: #eeeeee;">Record</th> 
-                    <th style="background-color: #eeeeee;">Symbol</th> 
-                    <th style="background-color: #eeeeee;">Description</th> 
-                    <th style="background-color: #eeeeee;">Location</th>
-                    <th style="background-color: #eeeeee;">Mean</th>
-                    <th style="background-color: #eeeeee;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
-                    <th style="background-color: #eeeeee;">Max LRS Location</th>
-                    <th style="background-color: #eeeeee;">Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    <th data-export="Index" style="background-color: #eeeeee;">Index</th>
+                    <th data-export="Species" style="background-color: #eeeeee;">Species</th> 
+                    <th data-export="Group" style="background-color: #eeeeee;">Group</th> 
+                    <th data-export="Tissue" style="background-color: #eeeeee;">Tissue</th> 
+                    <th data-export="Dataset" style="background-color: #eeeeee;">Dataset</th> 
+                    <th data-export="Record" style="background-color: #eeeeee;">Record</th> 
+                    <th data-export="Symbol" style="background-color: #eeeeee;">Symbol</th> 
+                    <th data-export="Description" style="background-color: #eeeeee;">Description</th> 
+                    <th data-export="Location" style="background-color: #eeeeee;">Location</th>
+                    <th data-export="Mean" style="background-color: #eeeeee;">Mean</th>
+                    <th data-export="Max LRS" style="background-color: #eeeeee;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    <th data-export="Max LRS Location" style="background-color: #eeeeee;">Max LRS Location</th>
+                    <th data-export="Additive Effect" style="background-color: #eeeeee;">Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
                   </tr>
                 </thead> 
                 <tbody>
                   {% for this_trait in trait_list %}
                   <tr id="trait:{{ this_trait.name }}:{{ this_trait.dataset.name }}">
                     <td><input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="{{ data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) }}"></td>
-                    <td>{{ loop.index }}</td>
-                    <td>{{ this_trait.dataset.group.species }}</td>
-                    <td>{{ this_trait.dataset.group.name }}</td>
-                    <td>{{ this_trait.dataset.tissue }}</td>
-                    <td>{{ this_trait.dataset.name }}</td>
-                    <td><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
-                    <td>{{ this_trait.symbol }}</td>
-                    <td>{{ this_trait.description_display }}</td>
-                    <td align="right">{{ this_trait.location_repr }}</td>
-                    <td align="right">{{ '%0.3f' % this_trait.mean|float }}</td>
-                    <td align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
-                    <td align="right">{{ this_trait.LRS_location_repr }}</td>
-                    <td align="right">{% if this_trait.additive != "" %}{{ '%0.3f' % this_trait.additive|float }}{% else %}N/A{% endif %}</td>
+                    <td data-export="{{ loop.index }}">{{ loop.index }}</td>
+                    <td data-export="{{ this_trait.dataset.group.species }}">{{ this_trait.dataset.group.species }}</td>
+                    <td data-export="{{ this_trait.dataset.group.name }}">{{ this_trait.dataset.group.name }}</td>
+                    <td data-export="{{ this_trait.dataset.tissue }}">{{ this_trait.dataset.tissue }}</td>
+                    <td data-export="{{ this_trait.dataset.name }}">{{ this_trait.dataset.name }}</td>
+                    <td data-export="{{ this_trait.name }}"><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
+                    <td data-export="{{ this_trait.symbol }}">{{ this_trait.symbol }}</td>
+                    <td data-export="{{ this_trait.description_display }}">{{ this_trait.description_display }}</td>
+                    <td data-export="{{ this_trait.location_repr }}" align="right">{{ this_trait.location_repr }}</td>
+                    <td data-export="{{ '%0.3f' % this_trait.mean|float }}" align="right">{{ '%0.3f' % this_trait.mean|float }}</td>
+                    <td data-export="{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}" align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
+                    <td data-export="{{ this_trait.LRS_location_repr }}" align="right">{{ this_trait.LRS_location_repr }}</td>
+                    <td data-export="{% if this_trait.additive != "" %}{{ '%0.3f' % this_trait.additive|float }}{% else %}N/A{% endif %}" align="right">{% if this_trait.additive != "" %}{{ '%0.3f' % this_trait.additive|float }}{% else %}N/A{% endif %}</td>
                   </tr>
                   {% endfor %}
                 </tbody>
@@ -105,27 +110,12 @@
     <script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
 	
     <script type="text/javascript" charset="utf-8">
-        function getValue(x) {
-            if (x.indexOf('input') >= 0) {
-                if ($(x).val() == 'x') {
-                    return 0;
-                }
-                else {
-                   return parseFloat($(x).val());
-                }
-            }
-            else if (isNaN(x)) {
-                return x;
-            }
-            return parseFloat(x);
-        }
-
         $.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 () {
             
@@ -138,19 +128,8 @@
             console.time("Creating table");
             $('#trait_table').DataTable( {
                 "paging": false,
-                "buttons": [
-                    {
-                       extend: 'csvHtml5',
-                       text: 'Download CSV',
-                       title: 'search_results',
-                       fieldBoundary: '"',
-                       exportOptions: {
-                           columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
-                       }
-                    }
-                ],
                 "columns": [
-                    { "type": "natural" },
+                    { "orderDataType": "dom-checkbox" },
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural", "width": "8%"  },
@@ -165,8 +144,14 @@
                     { "type": "natural", "width": "8%" },
                     { "type": "natural" }
                 ],
+                "columnDefs": [
+                    {
+                        "targets": 0,
+                        "orderDataType": "dom-checkbox"
+                    }
+                ],
                 "order": [[1, "asc" ]],
-                "sDom": "Btir",
+                "sDom": "tir",
                 "autoWidth": false,
                 "bDeferRender": true,
                 "scrollY": "800px",
diff --git a/wqflask/wqflask/templates/gsearch_pheno.html b/wqflask/wqflask/templates/gsearch_pheno.html
index be4981bb..9aad7568 100644
--- a/wqflask/wqflask/templates/gsearch_pheno.html
+++ b/wqflask/wqflask/templates/gsearch_pheno.html
@@ -25,37 +25,43 @@
             <input type="text" id="select_top" class="form-control" style="width: 200px; display: inline;" placeholder="Select Top ...">
             <br />
             <br />
+            <form id="export_form" method="POST" action="/export_traits_csv">
+              <input type="hidden" name="database_name" id="database_name" value="None">
+              <input type="hidden" name="export_data" id="export_data" value="">
+              <button class="btn btn-default" id="export_traits">Download CSV</button>
+            </form>
+            <br />
             <div style="width: 1500px; background-color: #eeeeee; border: 1px solid black;">
             <table width="1500px" id="trait_table" class="table table-hover table-striped">
                 <thead>
                     <tr>
                         <th style="background-color: #eeeeee;"></th>
-                        <th style="background-color: #eeeeee;">Index</th>
-                        <th style="background-color: #eeeeee;">Species</th>
-                        <th style="background-color: #eeeeee;">Group</th>
-                        <th style="background-color: #eeeeee;">Record</th>
-                        <th style="background-color: #eeeeee;">Description</th>
-                        <th style="background-color: #eeeeee;">Authors</th>
-                        <th style="background-color: #eeeeee;">Year</th>
-                        <th style="background-color: #eeeeee; text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
-                        <th style="background-color: #eeeeee;">Max LRS Location</th>
-                        <th style="background-color: #eeeeee; text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th data-export="Index" style="background-color: #eeeeee;">Index</th>
+                        <th data-export="Species" style="background-color: #eeeeee;">Species</th>
+                        <th data-export="Group" style="background-color: #eeeeee;">Group</th>
+                        <th data-export="Record" style="background-color: #eeeeee;">Record</th>
+                        <th data-export="Description" style="background-color: #eeeeee;">Description</th>
+                        <th data-export="Authors" style="background-color: #eeeeee;">Authors</th>
+                        <th data-export="Year" style="background-color: #eeeeee;">Year</th>
+                        <th data-export="LRS" style="background-color: #eeeeee; text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th data-export="LRS Location" style="background-color: #eeeeee;">Max LRS Location</th>
+                        <th data-export="Additive Effect" style="background-color: #eeeeee; text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
                     </tr>
                 </thead>
                 <tbody>
                  {% for this_trait in trait_list %}
                     <TR id="trait:{{ this_trait.name }}:{{ this_trait.dataset.name }}">
                         <td><INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) }}"></td>
-                        <td>{{ loop.index }}</td>
-                        <td>{{ this_trait.dataset.group.species }}</td>
-                        <td>{{ this_trait.dataset.group.name }}</td>
-                        <td><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
-                        <td>{{ this_trait.description_display }}</td>
-                        <td>{{ this_trait.authors }}</td>
-                        <td data-order="{{ this_trait.pubmed_text }}"><a href="{{ this_trait.pubmed_link }}">{{ this_trait.pubmed_text }}</a></td>
-                        <td align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
-                        <td align="right">{{ this_trait.LRS_location_repr }}</td>
-                        <td align="right">{% if this_trait.additive != "" %}{{ this_trait.additive }}{% else %}N/A{% endif %}</td>
+                        <td data-export="{{ loop.index }}">{{ loop.index }}</td>
+                        <td data-export="{{ this_trait.dataset.group.species }}">{{ this_trait.dataset.group.species }}</td>
+                        <td data-export="{{ this_trait.dataset.group.name }}">{{ this_trait.dataset.group.name }}</td>
+                        <td data-export="{{ this_trait.name }}"><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
+                        <td data-export="{{ this_trait.description_display }}">{{ this_trait.description_display }}</td>
+                        <td data-export="{{ this_trait.authors }}">{{ this_trait.authors }}</td>
+                        <td data-export="{{ this_trait.pubmed_text }}" data-order="{{ this_trait.pubmed_text }}"><a href="{{ this_trait.pubmed_link }}">{{ this_trait.pubmed_text }}</a></td>
+                        <td data-export="{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}" align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
+                        <td data-export="{{ this_trait.LRS_location_repr }}" align="right">{{ this_trait.LRS_location_repr }}</td>
+                        <td data-export="{% if this_trait.additive != "" %}{{ this_trait.additive }}{% else %}N/A{% endif %}" align="right">{% if this_trait.additive != "" %}{{ this_trait.additive }}{% else %}N/A{% endif %}</td>
                     </TR>
                 {% endfor %}
                 </tbody>
@@ -98,40 +104,11 @@
     <script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
 	
     <script type="text/javascript" charset="utf-8">
-        function getValue(x) {
-            if (x.indexOf('input') >= 0) {
-                if ($(x).val() == 'x') {
-                    return 0;
-                }
-                else {
-                   return parseFloat($(x).val());
-                }
-            }
-            else if (isNaN(x)) {
-                return x;
-            }
-            return parseFloat(x);
-        }
-            
-        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 () {
@@ -145,19 +122,8 @@
             console.time("Creating table");
             $('#trait_table').DataTable( {
                 "paging": false,
-                "buttons": [
-                    {
-                       extend: 'csvHtml5',
-                       text: 'Download CSV',
-                       title: 'search_results',
-                       fieldBoundary: '"',
-                       exportOptions: {
-                           columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-                       }
-                    }
-                ],
                 "columns": [
-                    { "type": "natural" },
+                    { "orderDataType": "dom-checkbox" },
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
@@ -169,8 +135,14 @@
                     { "type": "natural", "width": "12%"},
                     { "type": "natural" }
                 ],
+                "columnDefs": [
+                    {
+                        "targets": 0,
+                        "orderDataType": "dom-checkbox"
+                    }
+                ],
                 "order": [[1, "asc" ]],
-                "sDom": "Btir",
+                "sDom": "tir",
                 "autoWidth": false,
                 "bDeferRender": true,
                 "scrollY": "800px",
diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html
index f44714f3..b6aab101 100644
--- a/wqflask/wqflask/templates/search_result_page.html
+++ b/wqflask/wqflask/templates/search_result_page.html
@@ -59,9 +59,9 @@
           <br />
           <br />
           <form id="export_form" method="POST" action="/export_traits_csv">
-          <input type="hidden" name="database_name" id="database_name" value="{{ dataset.fullname }}">
-          <input type="hidden" name="export_data" id="export_data" value="">
-          <button class="btn btn-default" id="export_traits">Download CSV</button>
+            <input type="hidden" name="database_name" id="database_name" value="{{ dataset.fullname }}">
+            <input type="hidden" name="export_data" id="export_data" value="">
+            <button class="btn btn-default" id="export_traits">Download CSV</button>
           </form>
           <br />
 <!--
@@ -176,44 +176,6 @@
     <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/extensions/dataTables.fixedHeader.min.js"></script>
 	
     <script type="text/javascript" charset="utf-8">
-        function getValue(x) {
-            if (x.indexOf('input') >= 0) {
-                if ($(x).val() == 'x') {
-                    return 0;
-                }
-                else {
-                   return parseFloat($(x).val());
-                }
-            }
-            else if (isNaN(x)) {
-                return x;
-            }
-            return parseFloat(x);
-        }
-
-
-        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));
-        };
-
-
         $(document).ready( function () {
             
             $('#trait_table tr').click(function(event) {