| Index: runtime/bin/vmservice/client/lib/src/observatory_elements/observatory_element.dart
|
| ===================================================================
|
| --- runtime/bin/vmservice/client/lib/src/observatory_elements/observatory_element.dart (revision 32126)
|
| +++ runtime/bin/vmservice/client/lib/src/observatory_elements/observatory_element.dart (working copy)
|
| @@ -4,6 +4,7 @@
|
|
|
| library observatory_element;
|
|
|
| +import 'dart:math';
|
| import 'package:polymer/polymer.dart';
|
| import 'package:observatory/observatory.dart';
|
| export 'package:observatory/observatory.dart';
|
| @@ -30,4 +31,67 @@
|
| void appChanged(oldValue) {
|
| }
|
| bool get applyAuthorStyles => true;
|
| -}
|
| +
|
| + static String _zeroPad(int value, int pad) {
|
| + String prefix = "";
|
| + while (pad > 1) {
|
| + int pow10 = pow(10, pad - 1);
|
| + if (value < pow10) {
|
| + prefix = prefix + "0";
|
| + }
|
| + pad--;
|
| + }
|
| + return "${prefix}${value}";
|
| + }
|
| +
|
| + String formatTime(double time) {
|
| + if (time == null) {
|
| + return "-";
|
| + }
|
| + const millisPerHour = 60 * 60 * 1000;
|
| + const millisPerMinute = 60 * 1000;
|
| + const millisPerSecond = 1000;
|
| +
|
| + var millis = (time * millisPerSecond).round();
|
| +
|
| + var hours = millis ~/ millisPerHour;
|
| + millis = millis % millisPerHour;
|
| +
|
| + var minutes = millis ~/ millisPerMinute;
|
| + millis = millis % millisPerMinute;
|
| +
|
| + var seconds = millis ~/ millisPerSecond;
|
| + millis = millis % millisPerSecond;
|
| +
|
| + return ("${_zeroPad(hours,2)}"
|
| + ":${_zeroPad(minutes,2)}"
|
| + ":${_zeroPad(seconds,2)}"
|
| + ".${_zeroPad(millis,3)}");
|
| +
|
| + }
|
| +
|
| + String formatSize(int bytes) {
|
| + const int bytesPerKB = 1024;
|
| + const int bytesPerMB = 1024 * bytesPerKB;
|
| + const int bytesPerGB = 1024 * bytesPerMB;
|
| + const int bytesPerTB = 1024 * bytesPerGB;
|
| +
|
| + if (bytes < bytesPerKB) {
|
| + return "${bytes}B";
|
| + } else if (bytes < bytesPerMB) {
|
| + return "${(bytes / bytesPerKB).round()}KB";
|
| + } else if (bytes < bytesPerGB) {
|
| + return "${(bytes / bytesPerMB).round()}MB";
|
| + } else if (bytes < bytesPerTB) {
|
| + return "${(bytes / bytesPerGB).round()}GB";
|
| + } else {
|
| + return "${(bytes / bytesPerTB).round()}TB";
|
| + }
|
| + }
|
| +
|
| + String fileAndLine(Map frame) {
|
| + var file = frame['script']['user_name'];
|
| + var shortFile = file.substring(file.lastIndexOf('/') + 1);
|
| + return "${shortFile}:${frame['line']}";
|
| + }
|
| +}
|
|
|