Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 part of app; | |
| 6 | |
| 7 class Utils { | |
| 8 static String formatPercent(num a, num total) { | |
| 9 var percent = 100.0 * (a / total); | |
| 10 return '${percent.toStringAsFixed(2)}%'; | |
| 11 } | |
| 12 | |
| 13 static String zeroPad(int value, int pad) { | |
| 14 String prefix = ""; | |
| 15 while (pad > 1) { | |
| 16 int pow10 = pow(10, pad - 1); | |
| 17 if (value < pow10) { | |
| 18 prefix = prefix + "0"; | |
| 19 } | |
| 20 pad--; | |
| 21 } | |
| 22 return "${prefix}${value}"; | |
| 23 } | |
| 24 | |
| 25 static String formatCommaSeperated(int v) { | |
|
turnidge
2014/04/21 22:29:32
Seperated/Separated
Cutch
2014/04/22 15:03:25
Done.
| |
| 26 const COMMA_EVERY = 1000; | |
| 27 if (v < COMMA_EVERY) { | |
| 28 return v.toString(); | |
| 29 } | |
| 30 var mod = v % COMMA_EVERY; | |
| 31 v ~/= COMMA_EVERY; | |
| 32 var r = '${zeroPad(mod, 3)}'; | |
| 33 while (v > COMMA_EVERY) { | |
| 34 mod = v % COMMA_EVERY; | |
| 35 r = '${zeroPad(mod, 3)},$r'; | |
| 36 v ~/= COMMA_EVERY; | |
| 37 } | |
| 38 if (v != 0) { | |
| 39 r = '$v,$r'; | |
| 40 } | |
| 41 return r; | |
| 42 } | |
| 43 | |
| 44 static String formatTimePrecise(double time) { | |
| 45 if (time == null) { | |
| 46 return "-"; | |
| 47 } | |
| 48 const millisPerHour = 60 * 60 * 1000; | |
| 49 const millisPerMinute = 60 * 1000; | |
| 50 const millisPerSecond = 1000; | |
| 51 | |
| 52 var millis = (time * millisPerSecond).round(); | |
| 53 | |
| 54 var hours = millis ~/ millisPerHour; | |
| 55 millis = millis % millisPerHour; | |
| 56 | |
| 57 var minutes = millis ~/ millisPerMinute; | |
| 58 millis = millis % millisPerMinute; | |
| 59 | |
| 60 var seconds = millis ~/ millisPerSecond; | |
| 61 millis = millis % millisPerSecond; | |
| 62 | |
| 63 if (hours > 0) { | |
| 64 return ("${zeroPad(hours,2)}" | |
| 65 ":${zeroPad(minutes,2)}" | |
| 66 ":${zeroPad(seconds,2)}" | |
| 67 ".${zeroPad(millis,3)}"); | |
| 68 } else { | |
| 69 return ("${zeroPad(minutes,2)}" | |
| 70 ":${zeroPad(seconds,2)}" | |
| 71 ".${zeroPad(millis,3)}"); | |
| 72 } | |
| 73 } | |
| 74 | |
| 75 static String formatSize(int bytes) { | |
| 76 const int bytesPerKB = 1024; | |
| 77 const int bytesPerMB = 1024 * bytesPerKB; | |
| 78 const int bytesPerGB = 1024 * bytesPerMB; | |
| 79 const int bytesPerTB = 1024 * bytesPerGB; | |
| 80 | |
| 81 if (bytes < bytesPerKB) { | |
| 82 return "${bytes}B"; | |
| 83 } else if (bytes < bytesPerMB) { | |
| 84 return "${(bytes / bytesPerKB).round()}KB"; | |
| 85 } else if (bytes < bytesPerGB) { | |
| 86 return "${(bytes / bytesPerMB).round()}MB"; | |
| 87 } else if (bytes < bytesPerTB) { | |
| 88 return "${(bytes / bytesPerGB).round()}GB"; | |
| 89 } else { | |
| 90 return "${(bytes / bytesPerTB).round()}TB"; | |
| 91 } | |
| 92 } | |
| 93 | |
| 94 static String formatTime(double time) { | |
| 95 if (time == null) { | |
| 96 return "-"; | |
| 97 } | |
| 98 const millisPerHour = 60 * 60 * 1000; | |
| 99 const millisPerMinute = 60 * 1000; | |
| 100 const millisPerSecond = 1000; | |
| 101 | |
| 102 var millis = (time * millisPerSecond).round(); | |
| 103 | |
| 104 var hours = millis ~/ millisPerHour; | |
| 105 millis = millis % millisPerHour; | |
| 106 | |
| 107 var minutes = millis ~/ millisPerMinute; | |
| 108 millis = millis % millisPerMinute; | |
| 109 | |
| 110 var seconds = millis ~/ millisPerSecond; | |
| 111 | |
| 112 StringBuffer out = new StringBuffer(); | |
| 113 if (hours != 0) { | |
| 114 return '${hours}h ${minutes}m ${seconds}s'; | |
| 115 } | |
| 116 if (minutes != 0) { | |
| 117 return '${minutes}m ${seconds}s'; | |
| 118 } | |
| 119 return '${seconds}s'; | |
| 120 } | |
| 121 | |
| 122 static String formatSeconds(double x) { | |
| 123 return x.toStringAsFixed(2); | |
| 124 } | |
| 125 } | |
| OLD | NEW |