| 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 formatCommaSeparated(int v) { |
| 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 |