Created
April 28, 2016 15:15
-
-
Save dhyegocalota/38df51bb6d16788627aab9c9c94ff073 to your computer and use it in GitHub Desktop.
AWStats helper (from nexcess.net)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function bytes(e,r){return"string"==typeof e?parse(e):"number"==typeof e?format(e,r):null}function format(e,r){if(!numberIsFinite(e))return null;var a=Math.abs(e),t=r&&r.thousandsSeparator||"",n=r&&void 0!==r.decimalPlaces?r.decimalPlaces:2,i=Boolean(r&&r.fixedDecimals),o="B";a>=map.tb?o="TB":a>=map.gb?o="GB":a>=map.mb?o="MB":a>=map.kb&&(o="kB");var m=e/map[o.toLowerCase()],s=m.toFixed(n);return i||(s=s.replace(formatDecimalsRegExp,"$1")),t&&(s=s.replace(formatThousandsRegExp,t)),s+o}function parse(e){if("number"==typeof e&&!isNaN(e))return e;if("string"!=typeof e)return null;var r=parseRegExp.exec(e);if(null===r)return null;var a=parseFloat(r[1]),t=(r[4]||"b").toLowerCase();return Math.floor(map[t]*a)}var formatThousandsRegExp=/\B(?=(\d{3})+(?!\d))/g,formatDecimalsRegExp=/(?:\.0*|(\.[^0]+)0+)$/,map={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:1024*(1<<30)},numberIsFinite=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},parseRegExp=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|b)?$/i; | |
var isResumeNode = (rowNode) => !!rowNode.querySelector('td').innerText.match(/other/i); | |
var removeStream = (stream) => stream.forEach(log => log.wrapperNode.removeChild(log.rowNode)); | |
var appendStream = (stream) => stream.forEach(log => log.wrapperNode.appendChild(log.rowNode)); | |
var logTable = document.querySelectorAll('table.aws_data')[1]; | |
var nodeSizes = logTable.querySelectorAll('td:nth-child(4)'); | |
var sortedLogs = Array.from(nodeSizes) | |
.map(node => ({ node, rowNode: node.parentElement, wrapperNode: node.parentElement.parentElement, size: bytes(node.innerText) })) | |
.sort((x, y) => y.size - x.size); | |
var resumeLog = sortedLogs.filter(log => isResumeNode(log.rowNode)); | |
removeStream(sortedLogs); | |
appendStream(sortedLogs.filter(log => !isResumeNode(log.rowNode))); | |
appendStream(sortedLogs.filter(log => isResumeNode(log.rowNode))); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment