aboutsummaryrefslogtreecommitdiff
path: root/gn2/wqflask/static/new/javascript/table_functions.js
diff options
context:
space:
mode:
authorAlexander Kabui2024-08-30 16:47:55 +0300
committerGitHub2024-08-30 16:47:55 +0300
commited20621c23a9a41152f3d6a48334f2a31c018033 (patch)
tree5e2182b99f5f05e2f667dfce1b762921c4ec62dc /gn2/wqflask/static/new/javascript/table_functions.js
parent9a345d8abf2f0045b2c47bfcf1ae5860273452be (diff)
parent6db49002d4d2e69fcf4fdd6be6aceeea7b95664f (diff)
downloadgenenetwork2-ed20621c23a9a41152f3d6a48334f2a31c018033.tar.gz
Merge pull request #861 from genenetwork/feature/gnqa-search-2
Feature/gnqa search 2
Diffstat (limited to 'gn2/wqflask/static/new/javascript/table_functions.js')
-rw-r--r--gn2/wqflask/static/new/javascript/table_functions.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/gn2/wqflask/static/new/javascript/table_functions.js b/gn2/wqflask/static/new/javascript/table_functions.js
index 62888cd9..a648778e 100644
--- a/gn2/wqflask/static/new/javascript/table_functions.js
+++ b/gn2/wqflask/static/new/javascript/table_functions.js
@@ -88,3 +88,50 @@ function saveColumnSettings(tableId, traitTable) {
// Save (or update) the settings in localStorage
localStorage.setItem(tableId, JSON.stringify(userColumnDefs));
}
+
+let naturalAsc = $.fn.dataTableExt.oSort["natural-ci-asc"]
+let naturalDesc = $.fn.dataTableExt.oSort["natural-ci-desc"]
+
+let na_equivalent_vals = ["N/A", "--", "", "NULL"]; //ZS: Since there are multiple values that should be treated the same as N/A
+
+function extractInnerText(the_string){
+ var span = document.createElement('span');
+ span.innerHTML = the_string;
+ return span.textContent || span.innerText;
+}
+
+function sortNAs(a, b, sort_function){
+ if ( na_equivalent_vals.includes(a) && na_equivalent_vals.includes(b)) {
+ return 0;
+ }
+ if (na_equivalent_vals.includes(a)){
+ return 1
+ }
+ if (na_equivalent_vals.includes(b)) {
+ return -1;
+ }
+ return sort_function(a, b)
+}
+
+$.extend( $.fn.dataTableExt.oSort, {
+ "natural-minus-na-asc": function (a, b) {
+ return sortNAs(extractInnerText(a), extractInnerText(b), naturalAsc)
+ },
+ "natural-minus-na-desc": function (a, b) {
+ return sortNAs(extractInnerText(a), extractInnerText(b), naturalDesc)
+ }
+});
+
+$.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';
+ } );
+};
+
+$.fn.dataTable.ext.order['dom-inner-text'] = function ( settings, col )
+{
+ return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+ return $(td).text();
+ } );
+} \ No newline at end of file