summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMorris Jobke <morris.jobke@gmail.com>2014-06-02 10:38:46 +0200
committerMorris Jobke <morris.jobke@gmail.com>2014-06-02 15:33:09 +0200
commit5d457dafc1d8a2aafb0d630a7f8a5b56cef7d97b (patch)
treef1bd503c4325abc493b70f10507bfea53186afa7 /core
parentd39216c5e76b32c496ff39c19bddfbc4fa4247ac (diff)
downloadnextcloud-server-5d457dafc1d8a2aafb0d630a7f8a5b56cef7d97b.tar.gz
nextcloud-server-5d457dafc1d8a2aafb0d630a7f8a5b56cef7d97b.zip
display "<1 kB" for really small files
* added parameters for humanFileSize to trigger that behaviour * add unit tests for that
Diffstat (limited to 'core')
-rw-r--r--core/js/js.js10
-rw-r--r--core/js/tests/specs/coreSpec.js13
2 files changed, 22 insertions, 1 deletions
diff --git a/core/js/js.js b/core/js/js.js
index cf35d8aac6a..cbe466bf11c 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1163,9 +1163,10 @@ $.fn.filterAttr = function(attr_name, attr_value) {
/**
* Returns a human readable file size
* @param {number} size Size in bytes
+ * @param {boolean} skipSmallSizes return '< 1 kB' for small files
* @return {string}
*/
-function humanFileSize(size) {
+function humanFileSize(size, skipSmallSizes) {
var humanList = ['B', 'kB', 'MB', 'GB', 'TB'];
// Calculate Log with base 1024: size = 1024 ** order
var order = size?Math.floor(Math.log(size) / Math.log(1024)):0;
@@ -1173,6 +1174,13 @@ function humanFileSize(size) {
order = Math.min(humanList.length - 1, order);
var readableFormat = humanList[order];
var relativeSize = (size / Math.pow(1024, order)).toFixed(1);
+ if(skipSmallSizes === true && order === 0) {
+ if(relativeSize !== "0.0"){
+ return '< 1 kB';
+ } else {
+ return '0 kB';
+ }
+ }
if(order < 2){
relativeSize = parseFloat(relativeSize).toFixed(0);
}
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js
index 65f768fbc51..6b85d8be166 100644
--- a/core/js/tests/specs/coreSpec.js
+++ b/core/js/tests/specs/coreSpec.js
@@ -489,6 +489,19 @@ describe('Core base tests', function() {
expect(OC.Util.humanFileSize(data[i][0])).toEqual(data[i][1]);
}
});
+ it('renders file sizes with the correct unit for small sizes', function() {
+ var data = [
+ [0, '0 kB'],
+ [125, '< 1 kB'],
+ [128000, '125 kB'],
+ [128000000, '122.1 MB'],
+ [128000000000, '119.2 GB'],
+ [128000000000000, '116.4 TB']
+ ];
+ for (var i = 0; i < data.length; i++) {
+ expect(OC.Util.humanFileSize(data[i][0], true)).toEqual(data[i][1]);
+ }
+ });
});
});
});