From 93b19240e297e32f4b7c2ef8ad5172926b2bb8ae Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Thu, 9 Oct 2014 14:43:51 +0100 Subject: [PATCH] fix tabs --- Netdisco/share/public/javascripts/portsort.js | 74 ++++++++++--------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/Netdisco/share/public/javascripts/portsort.js b/Netdisco/share/public/javascripts/portsort.js index 61b734b3..4f6b5ef8 100644 --- a/Netdisco/share/public/javascripts/portsort.js +++ b/Netdisco/share/public/javascripts/portsort.js @@ -24,45 +24,53 @@ * See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js */ function portSort (a, b) { - var re = /(^(-?\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, + var re = /(^(-?\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, // string regex - sre = /(^[ ]*|[ ]*$)/g, + sre = /(^[ ]*|[ ]*$)/g, // octal regex - ore = /^0/, - // convert all to strings and trim() - x = a.toString().replace(sre, '') || '', - y = b.toString().replace(sre, '') || ''; - // hack for foundry "10GigabitEthernet" -> cisco-like "TenGigabitEthernet" - x = x.replace(/^10GigabitEthernet/, 'GigabitEthernet'); - y = y.replace(/^10GigabitEthernet/, 'GigabitEthernet'); - // chunk/tokenize - var xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'); - for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { - // find floats not starting with '0', string or 0 if not defined (Clint Priest) - var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; - var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; - // handle numeric vs string comparison - number < string - (Kyle Adams) - if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? 1 : -1; - // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' - else if (typeof oFxNcL !== typeof oFyNcL) { - oFxNcL += ''; - oFyNcL += ''; - } - if (oFxNcL < oFyNcL) return -1; - if (oFxNcL > oFyNcL) return 1; - } - return 0; + ore = /^0/, + // convert all to strings and trim() + x = a.toString().replace(sre, '') || '', + y = b.toString().replace(sre, '') || ''; + + // hack for foundry "10GigabitEthernet" -> cisco-like "TenGigabitEthernet" + x = x.replace(/^10GigabitEthernet/, 'GigabitEthernet'); + y = y.replace(/^10GigabitEthernet/, 'GigabitEthernet'); + + // chunk/tokenize + var xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), + yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'); + + for (var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { + // find floats not starting with '0', string or 0 if not defined (Clint Priest) + var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; + var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; + + // handle numeric vs string comparison - number < string - (Kyle Adams) + if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { + return (isNaN(oFxNcL)) ? 1 : -1; + } + // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' + else if (typeof oFxNcL !== typeof oFyNcL) { + oFxNcL += ''; + oFyNcL += ''; + } + + if (oFxNcL < oFyNcL) return -1; + if (oFxNcL > oFyNcL) return 1; + } + + return 0; } jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "portsort-asc": function ( a, b ) { - return portSort(a,b); - }, + "portsort-asc": function ( a, b ) { + return portSort(a,b); + }, - "portsort-desc": function ( a, b ) { - return portSort(a,b) * -1; - } + "portsort-desc": function ( a, b ) { + return portSort(a,b) * -1; + } } ); }());