about summary refs log tree commit diff
path: root/gn2/wqflask/static/new/javascript/table_functions.js
diff options
context:
space:
mode:
Diffstat (limited to 'gn2/wqflask/static/new/javascript/table_functions.js')
-rw-r--r--gn2/wqflask/static/new/javascript/table_functions.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/gn2/wqflask/static/new/javascript/table_functions.js b/gn2/wqflask/static/new/javascript/table_functions.js
new file mode 100644
index 00000000..62888cd9
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/table_functions.js
@@ -0,0 +1,90 @@
+recheckRows = function(theTable, checkedRows){
+  // This is meant to recheck checkboxes after columns are resized
+  checkCells = theTable.column(0).nodes().to$();
+  for (let i = 0; i < checkCells.length; i++) {
+    if (checkedRows.includes(i)){
+      checkCells[i].childNodes[0].checked = true;
+    }
+  }
+
+  checkRows = traitTable.rows().nodes();
+  for (let i =0; i < checkRows.length; i++) {
+    if (checkedRows.includes(i)){
+      checkRows[i].classList.add("selected")
+    }
+  }
+}
+
+getCheckedRows = function(tableId){
+  let checkedRows = []
+  $("#" + tableId + " input.checkbox").each(function(index){
+    if ($(this).prop("checked") == true){
+      checkedRows.push(index);
+    }
+  });
+
+  return checkedRows
+}
+
+function setUserColumnsDefWidths(tableId, columnDefs) {
+  var userColumnDef;
+
+  // Get the settings for this table from localStorage
+  var userColumnDefs = JSON.parse(localStorage.getItem(tableId)) || [];
+
+  if (userColumnDefs.length === 0 ) return;
+
+  columnDefs.forEach( function(columnDef) {
+    // Check if there is a width specified for this column
+    userColumnDef = userColumnDefs.find( function(column) {
+      return column.targets === columnDef.targets;
+    });
+
+    // If there is, set the width of this columnDef in px
+    if ( userColumnDef ) {
+
+      columnDef.sWidth = userColumnDef.width + 'px';
+      columnDef.width = userColumnDef.width + 'px';
+
+      $('.toggle-vis').each(function(){
+        if ($(this).attr('data-column') == columnDef.targets){
+          if ($(this).hasClass("active")){
+            columnDef.bVisible = false
+          } else {
+            columnDef.bVisible = true
+          }
+        }
+      })
+    }
+  });
+
+  return columnDefs
+}
+
+function saveColumnSettings(tableId, traitTable) {
+  var userColumnDefs = JSON.parse(localStorage.getItem(tableId)) || [];
+  var width, header, existingSetting; 
+
+  traitTable.columns().every( function ( targets ) {
+    // Check if there is a setting for this column in localStorage
+    existingSetting = userColumnDefs.findIndex( function(column) { return column.targets === targets;});
+
+    // Get the width of this column
+    header = this.header();
+    width = $(header).width();
+
+    if ( existingSetting !== -1 ) {
+    // Update the width
+    userColumnDefs[existingSetting].width = width;
+    } else {
+      // Add the width for this column
+      userColumnDefs.push({
+          targets: targets,
+          width:  width,
+      });
+    }
+  });
+
+  // Save (or update) the settings in localStorage
+  localStorage.setItem(tableId, JSON.stringify(userColumnDefs));
+}