forked from joni2back/angular-filemanager
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilters.js
46 lines (39 loc) · 1.6 KB
/
filters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(function(angular) {
'use strict';
var app = angular.module('FileManagerApp');
app.filter('strLimit', ['$filter', function($filter) {
return function(input, limit, more) {
if (input.length <= limit) {
return input;
}
return $filter('limitTo')(input, limit) + (more || '...');
};
}]);
app.filter('fileExtension', ['$filter', function($filter) {
return function(input) {
return /\./.test(input) && $filter('strLimit')(input.split('.').pop(), 3, '..') || '';
};
}]);
app.filter('formatDate', ['$filter', function() {
return function(input) {
return input instanceof Date ?
input.toISOString().substring(0, 19).replace('T', ' ') :
(input.toLocaleString || input.toString).apply(input);
};
}]);
app.filter('humanReadableFileSize', ['$filter', 'fileManagerConfig', function($filter, fileManagerConfig) {
// See https://en.wikipedia.org/wiki/Binary_prefix
var decimalByteUnits = [' kB', ' MB', ' GB', ' TB', 'PB', 'EB', 'ZB', 'YB'];
var binaryByteUnits = ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
return function(input) {
var i = -1;
var fileSizeInBytes = input;
do {
fileSizeInBytes = fileSizeInBytes / 1024;
i++;
} while (fileSizeInBytes > 1024);
var result = fileManagerConfig.useBinarySizePrefixes ? binaryByteUnits[i] : decimalByteUnits[i];
return Math.max(fileSizeInBytes, 0.1).toFixed(1) + ' ' + result;
};
}]);
})(angular);