Expand dashboard auto-scaling and convertible units (#5920)
##### Summary Add a two more units that allow auto-scaling and conversion: nanoseconds and num. As a result, e.g. 1000 nanoseconds -> 1 microseconds, 1000000 nanoseconds -> 1 milliseconds, 1000 num -> 1 num (K) etc. ##### Component Name web/gui/dashboard ##### Additional Information This PR just expands the existing auto-scaling units (e.g. packets/s, milliseconds, etc.) and follow the corresponding coding style.
Qingkun Li committed
Sep 6, 2019 at 03:02 UTC
6f3007537f1e4214bd5635d26f17c3d98e78afa6
2 files changed
+146
web/gui/dashboard.js
+73
@@ -868,6 +868,13 @@ NETDATA.unitsConversion = {
868
'TiB': 1024,
869
'PiB': 1024 * 1024,
870
'EiB': 1024 * 1024 * 1024
871
+ },
872
+ 'num': {
873
+ 'num': 1,
874
+ 'num (K)': 1000,
875
+ 'num (M)': 1000000,
876
+ 'num (G)': 1000000000,
877
+ 'num (T)': 1000000000000
878
}
879
/*
880
'milliseconds': {
@@ -967,6 +974,72 @@ NETDATA.unitsConversion = {
974
+ NETDATA.zeropad(milliseconds);
975
}
976
}
977
+ },
978
+ 'nanoseconds': {
979
+ 'nanoseconds': {
980
+ check: function (max) {
981
+ return NETDATA.options.current.seconds_as_time && max < 1000;
982
+ },
983
+ convert: function (nanoseconds) {
984
+ let tms = Math.round(nanoseconds * 10);
985
+ nanoseconds = Math.floor(tms / 10);
986
+
987
+ tms -= nanoseconds * 10;
988
+
989
+ return (nanoseconds).toString() + '.' + tms.toString();
990
+ }
991
+ },
992
+ 'microseconds': {
993
+ check: function (max) {
994
+ return NETDATA.options.current.seconds_as_time
995
+ && max >= 1000 && max < 1000 * 1000;
996
+ },
997
+ convert: function (nanoseconds) {
998
+ nanoseconds = Math.round(nanoseconds);
999
+
1000
+ let microseconds = Math.floor(nanoseconds / 1000);
1001
+ nanoseconds -= microseconds * 1000;
1002
+
1003
+ nanoseconds = Math.round(nanoseconds / 10 );
1004
+
1005
+ return microseconds.toString() + '.'
1006
+ + NETDATA.zeropad(nanoseconds);
1007
+ }
1008
+ },
1009
+ 'milliseconds': {
1010
+ check: function (max) {
1011
+ return NETDATA.options.current.seconds_as_time
1012
+ && max >= 1000 * 1000 && max < 1000 * 1000 * 1000;
1013
+ },
1014
+ convert: function (nanoseconds) {
1015
+ nanoseconds = Math.round(nanoseconds);
1016
+
1017
+ let milliseconds = Math.floor(nanoseconds / 1000 / 1000);
1018
+ nanoseconds -= milliseconds * 1000 * 1000;
1019
+
1020
+ nanoseconds = Math.round(nanoseconds / 1000 / 10);
1021
+
1022
+ return milliseconds.toString() + '.'
1023
+ + NETDATA.zeropad(nanoseconds);
1024
+ }
1025
+ },
1026
+ 'seconds': {
1027
+ check: function (max) {
1028
+ return NETDATA.options.current.seconds_as_time
1029
+ && max >= 1000 * 1000 * 1000;
1030
+ },
1031
+ convert: function (nanoseconds) {
1032
+ nanoseconds = Math.round(nanoseconds);
1033
+
1034
+ let seconds = Math.floor(nanoseconds / 1000 / 1000 / 1000);
1035
+ nanoseconds -= seconds * 1000 * 1000 * 1000;
1036
+
1037
+ nanoseconds = Math.round(nanoseconds / 1000 / 1000 / 10);
1038
+
1039
+ return seconds.toString() + '.'
1040
+ + NETDATA.zeropad(nanoseconds);
1041
+ }
1042
+ },
1043
}
1044
},
1045
web/gui/src/dashboard.js/units-conversion.js
+73
@@ -101,6 +101,13 @@ NETDATA.unitsConversion = {
101
'TiB': 1024,
102
'PiB': 1024 * 1024,
103
'EiB': 1024 * 1024 * 1024
104
+ },
105
+ 'num': {
106
+ 'num': 1,
107
+ 'num (K)': 1000,
108
+ 'num (M)': 1000000,
109
+ 'num (G)': 1000000000,
110
+ 'num (T)': 1000000000000
111
}
112
/*
113
'milliseconds': {
@@ -200,6 +207,72 @@ NETDATA.unitsConversion = {
207
+ NETDATA.zeropad(milliseconds);
208
}
209
}
210
+ },
211
+ 'nanoseconds': {
212
+ 'nanoseconds': {
213
+ check: function (max) {
214
+ return NETDATA.options.current.seconds_as_time && max < 1000;
215
+ },
216
+ convert: function (nanoseconds) {
217
+ let tms = Math.round(nanoseconds * 10);
218
+ nanoseconds = Math.floor(tms / 10);
219
+
220
+ tms -= nanoseconds * 10;
221
+
222
+ return (nanoseconds).toString() + '.' + tms.toString();
223
+ }
224
+ },
225
+ 'microseconds': {
226
+ check: function (max) {
227
+ return NETDATA.options.current.seconds_as_time
228
+ && max >= 1000 && max < 1000 * 1000;
229
+ },
230
+ convert: function (nanoseconds) {
231
+ nanoseconds = Math.round(nanoseconds);
232
+
233
+ let microseconds = Math.floor(nanoseconds / 1000);
234
+ nanoseconds -= microseconds * 1000;
235
+
236
+ nanoseconds = Math.round(nanoseconds / 10 );
237
+
238
+ return microseconds.toString() + '.'
239
+ + NETDATA.zeropad(nanoseconds);
240
+ }
241
+ },
242
+ 'milliseconds': {
243
+ check: function (max) {
244
+ return NETDATA.options.current.seconds_as_time
245
+ && max >= 1000 * 1000 && max < 1000 * 1000 * 1000;
246
+ },
247
+ convert: function (nanoseconds) {
248
+ nanoseconds = Math.round(nanoseconds);
249
+
250
+ let milliseconds = Math.floor(nanoseconds / 1000 / 1000);
251
+ nanoseconds -= milliseconds * 1000 * 1000;
252
+
253
+ nanoseconds = Math.round(nanoseconds / 1000 / 10);
254
+
255
+ return milliseconds.toString() + '.'
256
+ + NETDATA.zeropad(nanoseconds);
257
+ }
258
+ },
259
+ 'seconds': {
260
+ check: function (max) {
261
+ return NETDATA.options.current.seconds_as_time
262
+ && max >= 1000 * 1000 * 1000;
263
+ },
264
+ convert: function (nanoseconds) {
265
+ nanoseconds = Math.round(nanoseconds);
266
+
267
+ let seconds = Math.floor(nanoseconds / 1000 / 1000 / 1000);
268
+ nanoseconds -= seconds * 1000 * 1000 * 1000;
269
+
270
+ nanoseconds = Math.round(nanoseconds / 1000 / 1000 / 10);
271
+
272
+ return seconds.toString() + '.'
273
+ + NETDATA.zeropad(nanoseconds);
274
+ }
275
+ },
276
}
277
},
278