diff options
author | zsloan | 2016-11-11 16:13:24 +0000 |
---|---|---|
committer | zsloan | 2016-11-11 16:13:24 +0000 |
commit | 7b83c8c46977942acb271e7f1cf187d00bc7ff5a (patch) | |
tree | b532de0cb33250ee2d62e68be0032fcdd4020c48 | |
parent | 9ae56c7ba77c4603e550641931bdaea404481f1f (diff) | |
download | genenetwork2-7b83c8c46977942acb271e7f1cf187d00bc7ff5a.tar.gz |
Fixed problem that caused checkboxes to not work with Scroller search results pages
Improved the way the table width is set for search results page
-rw-r--r-- | wqflask/base/trait.py | 14 | ||||
-rw-r--r-- | wqflask/wqflask/templates/search_result_page.html | 67 |
2 files changed, 67 insertions, 14 deletions
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py index 11a91d1d..c8c503e2 100644 --- a/wqflask/base/trait.py +++ b/wqflask/base/trait.py @@ -23,6 +23,8 @@ from flask import Flask, g, request from utility.logger import getLogger logger = getLogger(__name__ ) +from wqflask import user_manager + def print_mem(stage=""): mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss print("{}: {}".format(stage, mem/1024)) @@ -134,7 +136,7 @@ class GeneralTrait(object): additive = "N/A" else: additive = "%.3f" % round(float(self.additive), 2) - return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="{{ data_hmac(\'{}:{}\'.format(' + str(self.name) + ',' + self.dataset.name + ')) }}">', + return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="' + user_manager.data_hmac('{}:{}'.format(str(self.name), self.dataset.name)) + '">', index, '<a href="/show_trait?trait_id='+str(self.name)+'&dataset='+self.dataset.name+'">'+str(self.name)+'</a>', self.symbol, @@ -150,7 +152,7 @@ class GeneralTrait(object): else: additive = "%.2f" % round(float(self.additive), 2) if self.pubmed_id: - return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="{{ data_hmac(\'{}:{}\'.format(' + str(self.name) + ',' + self.dataset.name + ')) }}">', + return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="' + user_manager.data_hmac('{}:{}'.format(str(self.name), self.dataset.name)) + '">', index, '<a href="/show_trait?trait_id='+str(self.name)+'&dataset='+self.dataset.name+'">'+str(self.name)+'</a>', self.description_display, @@ -160,7 +162,7 @@ class GeneralTrait(object): self.LRS_location_repr, additive] else: - return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="{{ data_hmac(\'{}:{}\'.format(' + str(self.name) + ',' + self.dataset.name + ')) }}">', + return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="' + user_manager.data_hmac('{}:{}'.format(str(self.name), self.dataset.name)) + '">', index, '<a href="/show_trait?trait_id='+str(self.name)+'&dataset='+self.dataset.name+'">'+str(self.name)+'</a>', self.description_display, @@ -170,7 +172,7 @@ class GeneralTrait(object): self.LRS_location_repr, additive] elif self.dataset.type == "Geno": - return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="{{ data_hmac(\'{}:{}\'.format(' + str(self.name) + ',' + self.dataset.name + ')) }}">', + return ['<input type="checkbox" name="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" value="' + user_manager.data_hmac('{}:{}'.format(str(self.name), self.dataset.name)) + '">', index, '<a href="/show_trait?trait_id='+str(self.name)+'&dataset='+self.dataset.name+'">'+str(self.name)+'</a>', self.location_repr] @@ -486,7 +488,7 @@ class GeneralTrait(object): #XZ: trait_location_value is used for sorting self.location_repr = 'N/A' - trait_location_value = 1000000 + self.location_value = 1000000 if self.chr and self.mb: #Checks if the chromosome number can be cast to an int (i.e. isn't "X" or "Y") @@ -507,7 +509,7 @@ class GeneralTrait(object): elif self.dataset.type == "Geno": self.location_repr = 'N/A' - trait_location_value = 1000000 + self.location_value = 1000000 if self.chr and self.mb: #Checks if the chromosome number can be cast to an int (i.e. isn't "X" or "Y") diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html index f522564d..f8565042 100644 --- a/wqflask/wqflask/templates/search_result_page.html +++ b/wqflask/wqflask/templates/search_result_page.html @@ -2,7 +2,7 @@ {% block title %}Search Results{% endblock %} {% block css %} <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/jquery.dataTables.min.css" /> - <link rel="stylesheet" type="text/css" href="/static/new/packages/Datatables/extensions/scroller.dataTables.min.css"> + <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/scroller.dataTables.min.css"> <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/dataTables.fixedHeader.css" > <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/fixedcolumns/3.0.4/css/dataTables.fixedColumns.css"> {% endblock %} @@ -11,7 +11,7 @@ {{ header("Search Results", 'GeneNetwork found {}.'.format(numify(results|count, "record", "records"))) }} - <div class="container" {% if dataset.type == 'Geno' %}style="width: 500px !important;"{% endif %}> + <div> <input type="hidden" name="uc_id" id="uc_id" value="{{ uc_id }}"> <!-- Need to customize text more for other types of searches --> @@ -78,8 +78,8 @@ {% endif %} --> - <div id="table_container" style="background-color: #eeeeee; border: 1px solid black;"> - <table class="table table-hover table-striped nowrap" id='trait_table' {% if dataset.type == 'Geno' %}width="400px"{% endif %} style="float: left;"> + <div id="table_container" style="background-color: #eeeeee; border: 1px solid black; width: {% if dataset.type == 'ProbeSet' %}1300{% elif dataset.type == 'Publish' %}1200{% elif dataset.type == 'Geno' %}500{% endif %}px;"> + <table class="table table-hover table-striped nowrap" id='trait_table' style="float: left;"> <thead> <tr> <th style="background-color: #eeeeee;"></th> @@ -122,7 +122,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="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> <script language="javascript" type="text/javascript" src="/static/new/js_external/jszip.min.js"></script> @@ -144,10 +144,45 @@ } }); + function change_buttons() { + buttons = ["#add", "#remove"]; + num_checked = $('.trait_checkbox:checked').length; + if (num_checked === 0) { + for (_i = 0, _len = buttons.length; _i < _len; _i++) { + button = buttons[_i]; + $(button).prop("disabled", true); + } + } else { + for (_j = 0, _len2 = buttons.length; _j < _len2; _j++) { + button = buttons[_j]; + $(button).prop("disabled", false); + } + } + //}); + 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') + } + } + } + console.time("Creating table"); {% if dataset.type == 'ProbeSet' %} //ZS: Need to make sort by symbol, also need to make sure blank symbol fields at the bottom and symbols starting with numbers below letters $('#trait_table').DataTable( { + "drawCallback": function( settings ) { + $('#trait_table tr').click(function(event) { + if (event.target.type !== 'checkbox') { + $(':checkbox', this).trigger('click'); + } + }); + $('.trait_checkbox:checkbox').on("change", change_buttons); + }, "createdRow": function ( row, data, index ) { $('td', row).eq(1).attr('align', 'right'); $('td', row).eq(1).attr('data-export', index+1); @@ -187,7 +222,7 @@ "iDisplayLength": -1, "deferRender": true, "bSortClasses": false, - "scrollY": "700px", + "scrollY": true, "scrollCollapse": false, "scroller": true, "paging": false @@ -195,6 +230,14 @@ {% elif dataset.type == 'Publish' %} $('#trait_table').DataTable( { + "drawCallback": function( settings ) { + $('#trait_table tr').click(function(event) { + if (event.target.type !== 'checkbox') { + $(':checkbox', this).trigger('click'); + } + }); + $('.trait_checkbox:checkbox').on("change", change_buttons); + }, "createdRow": function ( row, data, index ) { $('td', row).eq(1).attr('align', 'right'); $('td', row).eq(1).attr('data-export', index+1); @@ -234,13 +277,21 @@ "autoWidth": false, "deferRender": true, "bSortClasses": false, - "scrollY": "700px", + "scrollY": true, "scrollCollapse": true, "scroller": true, "paging": false } ); {% elif dataset.type == 'Geno' %} $('#trait_table').DataTable( { + "drawCallback": function( settings ) { + $('#trait_table tr').click(function(event) { + if (event.target.type !== 'checkbox') { + $(':checkbox', this).trigger('click'); + } + }); + $('.trait_checkbox:checkbox').on("change", change_buttons); + }, "createdRow": function ( row, data, index ) { $('td', row).eq(1).attr('align', 'right'); $('td', row).eq(1).attr('data-export', index+1); @@ -260,7 +311,7 @@ "autoWidth": false, "deferRender": true, "bSortClasses": false, - "scrollY": "700px", + "scrollY": true, "scrollCollapse": true, "scroller": true, "paging": false |