From 283e10fc0e2121f274317a08b58dbd764fefa19f Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 10 Dec 2019 11:45:49 +0300 Subject: [PATCH 1/2] add file's measure select --- src/inject.js | 55 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/src/inject.js b/src/inject.js index a2da69d..8a1e01e 100755 --- a/src/inject.js +++ b/src/inject.js @@ -36,7 +36,7 @@ const getRepoObject = () => { } } -const getHumanReadableSizeObject = (bytes) => { +const getHumanReadableSizeObject = (bytes, selectedMeasure = 'auto') => { if (bytes === 0) { return { size: 0, @@ -46,7 +46,16 @@ const getHumanReadableSizeObject = (bytes) => { const K = 1024 const MEASURE = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] - const i = Math.floor(Math.log(bytes) / Math.log(K)) + + let i = Math.floor(Math.log(bytes) / Math.log(K)) + + if (selectedMeasure !== 'auto') { + for (let size in MEASURE) { + if (MEASURE[size] === selectedMeasure) { + i = size + } + } + } return { size: parseFloat((bytes / Math.pow(K, i)).toFixed(2)), @@ -54,10 +63,10 @@ const getHumanReadableSizeObject = (bytes) => { } } -const getHumanReadableSize = (size) => { +const getHumanReadableSize = (size, selectedSize = 'auto') => { if (!size) return '' - const t = getHumanReadableSizeObject(size) + const t = getHumanReadableSizeObject(size, selectedSize) return t.size + ' ' + t.measure } @@ -75,6 +84,24 @@ const getSizeHTML = (size) => { ].join('') } +const getSelectHTML = (selectedMeasure = 'auto') => { + + return [ + `` + ].join('') +} + const checkStatus = (response) => { if (response.status >= 200 && response.status < 300) { return response @@ -106,7 +133,7 @@ const getAPIData = (uri) => { const getFileName = text => text.trim().split('/')[0] -const checkForRepoPage = async () => { +const checkForRepoPage = async (selectedMeasure = 'auto') => { const repoObj = getRepoObject() if (!repoObj) return @@ -139,6 +166,16 @@ const checkForRepoPage = async () => { let items = document.querySelectorAll('table tbody tr.js-navigation-item td:nth-child(2) a') let ageForReference = document.querySelectorAll('table tbody tr.js-navigation-item td:last-child') + const th = document.querySelector('th:last-child'); + th.style.textAlign = 'right' + th.style.paddingRight = '10px' + th.style.fontWeight = 'normal' + th.innerHTML = getSelectHTML(selectedMeasure) + const select = document.querySelector('#chooseMeasure') + select.title = 'Choose measure' + select.style.cssText = 'cursor: pointer' + select.onchange = recountSizes + if (!list) { await new Promise((resolve, reject) => { setTimeout(function () { @@ -168,7 +205,7 @@ const checkForRepoPage = async () => { } else if (t === '..') { label = '' } else { - label = getHumanReadableSize(t) + label = getHumanReadableSize(t, selectedMeasure) } td.innerHTML = `${label}` @@ -177,6 +214,12 @@ const checkForRepoPage = async () => { } } +const recountSizes = (e) => { + const oldTdElems = document.querySelectorAll('span.github-repo-size-td') + oldTdElems.forEach(el => el.parentNode.remove()) + checkForRepoPage(e.target.value) +} + const loadFolderSizes = async () => { const files = document.querySelectorAll('table tbody tr.js-navigation-item:not(.up-tree) td.content a') const folderSizes = document.querySelectorAll('td.github-repo-size-folder > span') From 97396758eeda34e0b4793724c1a2267a033d2944 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 10 Dec 2019 16:57:15 +0300 Subject: [PATCH 2/2] fix dir size count --- src/inject.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/inject.js b/src/inject.js index 8a1e01e..2e4e005 100755 --- a/src/inject.js +++ b/src/inject.js @@ -148,7 +148,7 @@ const checkForRepoPage = async (selectedMeasure = 'auto') => { const newLiElem = document.getElementById(LI_TAG_ID) newLiElem.title = 'Click to load folder sizes' newLiElem.style.cssText = 'cursor: pointer' - newLiElem.onclick = loadFolderSizes + newLiElem.onclick = () => loadFolderSizes(selectedMeasure) } }) } @@ -201,7 +201,7 @@ const checkForRepoPage = async (selectedMeasure = 'auto') => { td.className += ' github-repo-size-folder' td.title = 'Click to load folder size' td.style.cssText = 'cursor: pointer' - td.onclick = loadFolderSizes + td.onclick = () => loadFolderSizes(selectedMeasure) } else if (t === '..') { label = '' } else { @@ -214,13 +214,14 @@ const checkForRepoPage = async (selectedMeasure = 'auto') => { } } -const recountSizes = (e) => { +const recountSizes = (e) => { const oldTdElems = document.querySelectorAll('span.github-repo-size-td') oldTdElems.forEach(el => el.parentNode.remove()) + document.querySelector('#' + LI_TAG_ID).remove() checkForRepoPage(e.target.value) } -const loadFolderSizes = async () => { +const loadFolderSizes = async (selectedSize = auto) => { const files = document.querySelectorAll('table tbody tr.js-navigation-item:not(.up-tree) td.content a') const folderSizes = document.querySelectorAll('td.github-repo-size-folder > span') const liElem = document.getElementById(LI_TAG_ID) @@ -265,7 +266,7 @@ const loadFolderSizes = async () => { for (const folderSize of folderSizes) { const t = sizeObj[getFileName(files[i++].text)] - folderSize.textContent = getHumanReadableSize(t) + folderSize.textContent = getHumanReadableSize(t, selectedSize) } }