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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
import angular from "angular";
import _ from "lodash";
function minSizeFilter() {
return function (input, max) {
var max = max || 8;
if (input.length > max) {
return "_" + input.substring(input.length - max + 1)
}
return input
};
}
function exclamationFilter() {
return function (input) {
if (input === undefined || input === '') {
return '?';
}
return input;
};
}
function bytesFilter() {
return function (bytes, low_precision) {
low_precision = low_precision || false;
if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0) {
return bytes;
}
const symbols = ['Y', 'Z', 'E', 'P', 'T', 'G', 'M', 'K'];
const prefix = {
'Y': 1208925819614629174706176,
'Z': 1180591620717411303424,
'E': 1152921504606846976,
'P': 1125899906842624,
'T': 1099511627776,
'G': 1073741824,
'M': 1048576,
'K': 1024
};
for (var i = 0; i < symbols.length; i++) {
var symbol = symbols[i];
var value = bytes / prefix[symbol];
if (value > 1) {
var decimal_precision = 0;
if (value < 10) {
decimal_precision = 2;
}
else if (value < 100) {
decimal_precision = 1;
}
if (low_precision) {
if (symbol == 'MK') {
decimal_precision = 0;
}
else {
decimal_precision = _.min([1, decimal_precision]);
}
}
else if (symbol == 'K') {
decimal_precision = 0;
}
return parseFloat(value).toFixed(decimal_precision) + symbol;
}
}
return bytes.toFixed(0);
}
}
function bitsFilter($filter) {
return function (bits, low_precision) {
bits = Math.round(bits) * 8;
return $filter('bytes')(bits, low_precision) + 'b';
}
}
function leftPadFilter() {
return function (value, length, chars) {
length = length || 0;
chars = chars || ' ';
return _.padStart(value, length, chars);
}
}
function timemillisFilter() {
return function (array) {
var sum = 0.0;
for (var i = 0; i < array.length; i++) {
sum += array[i] * 1000.0;
}
return sum;
}
}
function timedeltaFilter($filter) {
return function (value) {
var sum = $filter('timemillis')(value);
var d = new Date(sum);
return {
hours: d.getUTCHours(), // TODO : multiple days ( * (d.getDay() * 24)))
minutes: d.getUTCMinutes(),
seconds: d.getUTCSeconds(),
milliseconds: parseInt("" + d.getUTCMilliseconds() / 10)
};
}
}
export default angular.module("glancesApp")
.filter("min_size", minSizeFilter)
.filter("exclamation", exclamationFilter)
.filter("bytes", bytesFilter)
.filter("bits", bitsFilter)
.filter("leftPad", leftPadFilter)
.filter("timemillis", timemillisFilter)
.filter("timedelta", timedeltaFilter);
|