Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  const dateRangeReg = /(\d{2}\s\d{4})?\s?\.\.\s?(\d{2}\s\d{4})?/;
  2.             function isDateRange(str) {
  3.                 var re = new RegExp(dateRangeReg);
  4.                 return re.test(str);
  5.             }
  6.  
  7.             function changeFormat(oldFormatDate){
  8.                 return oldFormatDate.slice(3) + "-" + oldFormatDate.substr(0, 2);
  9.             }
  10.  
  11.             function compareDateRanges(first, second) {
  12.                 var periodsFirst = first.split(/\s?\.\.\s?/);
  13.                 var periodsSecond = second.split(/\s?\.\.\s?/);
  14.  
  15.                 if ((periodsFirst[0] === "") && (periodsSecond[0] !== "")) {
  16.                     return false;
  17.                 }
  18.                 if ((periodsFirst[0] !== "") && (periodsSecond[0] === "")) {
  19.                     return true;
  20.                 }
  21.                 if ((periodsFirst[0] === "") && (periodsSecond[0] === "")) {
  22.                     var ldf = new Date(periodsFirst[1]).getTime();
  23.                     var lds = new Date(periodsSecond[1]).getTime();
  24.                     return  ldf > lds;
  25.                 }
  26.  
  27.                 periodsFirst.forEach(function(period, index){
  28.                     this[index] = changeFormat(period);
  29.                 }, periodsFirst);
  30.  
  31.                 periodsSecond.forEach(function(period, index){
  32.                     this[index] = changeFormat(period);
  33.                 }, periodsSecond);
  34.  
  35.                 var firstFromDate = new Date(periodsFirst[0]).getTime();
  36.                 var secondFromDate = new Date(periodsSecond[0]).getTime();
  37.  
  38.                 if (firstFromDate === secondFromDate) {
  39.                     if (periodsSecond[1] === "") {
  40.                         return true;
  41.                     }
  42.                     if (periodsFirst[1] === "") {
  43.                         return false;
  44.                     }
  45.                     var firstLastDate = new Date(periodsFirst[1]).getTime();
  46.                     var secondLastDate = new Date(periodsSecond[1]).getTime();
  47.                     return (firstLastDate > secondLastDate)
  48.                 } else
  49.                 if (firstFromDate > secondFromDate) {
  50.                     return true;
  51.                 }
  52.                 return false;
  53.             }
  54.  
  55.  
  56.             function isBigger(first, second) {
  57.                 if (second === "") {
  58.                     return first !== "";
  59.                 }
  60.                 if (first === "") return false;
  61.  
  62.                 if (parseInt(first).toString().length === first.length) {
  63.                     return  parseInt(first) > parseInt(second);
  64.                 }
  65.  
  66.                 if (isDateRange(first)) {
  67.                     return compareDateRanges(first, second);
  68.                 }
  69.  
  70.                 return first.toLowerCase() > second.toLowerCase();
  71.             }
  72.  
  73.             function setArrow(table, num, dir) {
  74.                 var column = table.getElementsByTagName("tr")[0].getElementsByTagName("th")[num].innerHTML;
  75.                 if (dir === 'desc') {
  76.                     column = column + '▼';
  77.                 } else if (dir === 'asc') {
  78.                     column = column + '▲';
  79.                 }
  80.                 table.getElementsByTagName("tr")[0].getElementsByTagName("th")[num].innerHTML = column;
  81.             }
  82.  
  83.             function removeAllArrows(table) {
  84.                 const regArrow = /(▼)|(▲)/;
  85.                 var column = table.getElementsByTagName("tr")[0].getElementsByTagName("th");
  86.                 for (var i = 1; i < column.length - 1; i++) {
  87.                     var str = column[i].innerHTML;
  88.                     str = str.replace(regArrow, "");
  89.                     table.getElementsByTagName("tr")[0].getElementsByTagName("th")[i].innerHTML = str;
  90.                 }
  91.             }
  92.  
  93.             function sortTable(num) {
  94.                 var table, rows, switching, i, first, second, shouldSwitch, dir, switchcount = 0;
  95.                 table = document.getElementById("gens");
  96.                 removeAllArrows(table);
  97.                 switching = true;
  98.                 dir = "asc";
  99.                 while (switching) {
  100.                     switching = false;
  101.                     rows = table.getElementsByTagName("tr");
  102.                     for (i = 1; i < (rows.length - 1); i++) {
  103.                         shouldSwitch = false;
  104.                         first = rows[i].getElementsByTagName("td")[num].innerHTML;
  105.                         second = rows[i + 1].getElementsByTagName("td")[num].innerHTML;
  106.                         if (dir === "asc") {
  107.                             if (isBigger(first, second)) {
  108.                                 shouldSwitch = true;
  109.                                 break;
  110.                             }
  111.                         } else if (dir === "desc") {
  112.                             if (isBigger(second, first)) {
  113.                                 shouldSwitch = true;
  114.                                 break;
  115.                             }
  116.                         }
  117.                     }
  118.                     if (shouldSwitch) {
  119.                         rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
  120.                         switching = true;
  121.                         switchcount ++;
  122.                     } else {
  123.                         if (switchcount === 0 && dir === "asc") {
  124.                             dir = "desc";
  125.                             switching = true;
  126.                         }
  127.                     }
  128.                 }
  129.                 setArrow(table, num, dir);
  130.                 for (i = 1; i < rows.length; i++) {
  131.                     rows[i].getElementsByTagName("td")[0].innerHTML = i;
  132.                 }
  133.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement