Kawiesh

[BM] Sort Table

Jun 9th, 2020 (edited)
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. javascript: function toArray(c) {
  2.  var a, k;
  3.  a = new Array;
  4.  for (k = 0; k < c.length; ++k) a[k] = c[k];
  5.  return a;
  6. }
  7.  
  8. function insAtTop(par, child) {
  9.  if (par.childNodes.length) par.insertBefore(child, par.childNodes[0]);
  10.  else par.appendChild(child);
  11. }
  12.  
  13. function countCols(tab) {
  14.  var nCols, i;
  15.  nCols = 0;
  16.  for (i = 0; i < tab.rows.length; ++i)
  17.   if (tab.rows[i].cells.length > nCols) nCols = tab.rows[i].cells.length;
  18.  return nCols;
  19. }
  20.  
  21. function makeHeaderLink(tableNo, colNo, ord) {
  22.  var link;
  23.  link = document.createElement('a');
  24.  link.href = 'javascript:sortTable(' + tableNo + ',' + colNo + ',' + ord + ');';
  25.  link.appendChild(document.createTextNode((ord > 0) ? 'a' : 'd'));
  26.  return link;
  27. }
  28.  
  29. function makeHeader(tableNo, nCols) {
  30.  var header, headerCell, i;
  31.  header = document.createElement('tr');
  32.  for (i = 0; i < nCols; ++i) {
  33.   headerCell = document.createElement('td');
  34.   headerCell.appendChild(makeHeaderLink(tableNo, i, 1));
  35.   headerCell.appendChild(document.createTextNode('/'));
  36.   headerCell.appendChild(makeHeaderLink(tableNo, i, -1));
  37.   header.appendChild(headerCell);
  38.  }
  39.  return header;
  40. }
  41. g_tables = toArray(document.getElementsByTagName('table'));
  42. if (!g_tables.length) alert("This page doesn't contain any tables.");
  43. (function() {
  44.  var j, thead;
  45.  for (j = 0; j < g_tables.length; ++j) {
  46.   thead = g_tables[j].createTHead();
  47.   insAtTop(thead, makeHeader(j, countCols(g_tables[j])))
  48.  }
  49. })();
  50.  
  51. function compareRows(a, b) {
  52.  if (a.sortKey == b.sortKey) return 0;
  53.  return (a.sortKey < b.sortKey) ? g_order : -g_order;
  54. }
  55.  
  56. function sortTable(tableNo, colNo, ord) {
  57.  var table, rows, nR, bs, i, j, temp;
  58.  g_order = ord;
  59.  g_colNo = colNo;
  60.  table = g_tables[tableNo];
  61.  rows = new Array();
  62.  nR = 0;
  63.  bs = table.tBodies;
  64.  for (i = 0; i < bs.length; ++i)
  65.   for (j = 0; j < bs[i].rows.length; ++j) {
  66.    rows[nR] = bs[i].rows[j];
  67.    temp = rows[nR].cells[g_colNo];
  68.    if (temp) rows[nR].sortKey = temp.innerHTML;
  69.    else rows[nR].sortKey = "";
  70.    ++nR;
  71.   }
  72.  rows.sort(compareRows);
  73.  for (i = 0; i < rows.length; ++i) insAtTop(table.tBodies[0], rows[i]);
  74. }
Add Comment
Please, Sign In to add comment