Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const dateRangeReg = /(\d{2}\s\d{4})?\s?\.\.\s?(\d{2}\s\d{4})?/;
- function isDateRange(str) {
- var re = new RegExp(dateRangeReg);
- return re.test(str);
- }
- function changeFormat(oldFormatDate){
- return oldFormatDate.slice(3) + "-" + oldFormatDate.substr(0, 2);
- }
- function compareDateRanges(first, second) {
- var periodsFirst = first.split(/\s?\.\.\s?/);
- var periodsSecond = second.split(/\s?\.\.\s?/);
- if ((periodsFirst[0] === "") && (periodsSecond[0] !== "")) {
- return false;
- }
- if ((periodsFirst[0] !== "") && (periodsSecond[0] === "")) {
- return true;
- }
- if ((periodsFirst[0] === "") && (periodsSecond[0] === "")) {
- var ldf = new Date(periodsFirst[1]).getTime();
- var lds = new Date(periodsSecond[1]).getTime();
- return ldf > lds;
- }
- periodsFirst.forEach(function(period, index){
- this[index] = changeFormat(period);
- }, periodsFirst);
- periodsSecond.forEach(function(period, index){
- this[index] = changeFormat(period);
- }, periodsSecond);
- var firstFromDate = new Date(periodsFirst[0]).getTime();
- var secondFromDate = new Date(periodsSecond[0]).getTime();
- if (firstFromDate === secondFromDate) {
- if (periodsSecond[1] === "") {
- return true;
- }
- if (periodsFirst[1] === "") {
- return false;
- }
- var firstLastDate = new Date(periodsFirst[1]).getTime();
- var secondLastDate = new Date(periodsSecond[1]).getTime();
- return (firstLastDate > secondLastDate)
- } else
- if (firstFromDate > secondFromDate) {
- return true;
- }
- return false;
- }
- function isBigger(first, second) {
- if (second === "") {
- return first !== "";
- }
- if (first === "") return false;
- if (parseInt(first).toString().length === first.length) {
- return parseInt(first) > parseInt(second);
- }
- if (isDateRange(first)) {
- return compareDateRanges(first, second);
- }
- return first.toLowerCase() > second.toLowerCase();
- }
- function setArrow(table, num, dir) {
- var column = table.getElementsByTagName("tr")[0].getElementsByTagName("th")[num].innerHTML;
- if (dir === 'desc') {
- column = column + '▼';
- } else if (dir === 'asc') {
- column = column + '▲';
- }
- table.getElementsByTagName("tr")[0].getElementsByTagName("th")[num].innerHTML = column;
- }
- function removeAllArrows(table) {
- const regArrow = /(▼)|(▲)/;
- var column = table.getElementsByTagName("tr")[0].getElementsByTagName("th");
- for (var i = 1; i < column.length - 1; i++) {
- var str = column[i].innerHTML;
- str = str.replace(regArrow, "");
- table.getElementsByTagName("tr")[0].getElementsByTagName("th")[i].innerHTML = str;
- }
- }
- function sortTable(num) {
- var table, rows, switching, i, first, second, shouldSwitch, dir, switchcount = 0;
- table = document.getElementById("gens");
- removeAllArrows(table);
- switching = true;
- dir = "asc";
- while (switching) {
- switching = false;
- rows = table.getElementsByTagName("tr");
- for (i = 1; i < (rows.length - 1); i++) {
- shouldSwitch = false;
- first = rows[i].getElementsByTagName("td")[num].innerHTML;
- second = rows[i + 1].getElementsByTagName("td")[num].innerHTML;
- if (dir === "asc") {
- if (isBigger(first, second)) {
- shouldSwitch = true;
- break;
- }
- } else if (dir === "desc") {
- if (isBigger(second, first)) {
- shouldSwitch = true;
- break;
- }
- }
- }
- if (shouldSwitch) {
- rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
- switching = true;
- switchcount ++;
- } else {
- if (switchcount === 0 && dir === "asc") {
- dir = "desc";
- switching = true;
- }
- }
- }
- setArrow(table, num, dir);
- for (i = 1; i < rows.length; i++) {
- rows[i].getElementsByTagName("td")[0].innerHTML = i;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement