Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: runtime/observatory/lib/utils.dart

Issue 2989083002: Add memory-dashboard page to Observatory (Closed)
Patch Set: Upgrade to latest virtual-collection Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library utils; 5 library utils;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:math'; 8 import 'dart:math';
9 9
10 enum DurationComponent {
11 Days,
12 Hours,
13 Minutes,
14 Seconds,
15 Milliseconds,
16 Microseconds
17 }
18
10 class Utils { 19 class Utils {
11 static String formatPercentNormalized(double x) { 20 static String formatPercentNormalized(double x) {
12 var percent = 100.0 * x; 21 var percent = 100.0 * x;
13 return '${percent.toStringAsFixed(2)}%'; 22 return '${percent.toStringAsFixed(2)}%';
14 } 23 }
15 24
16 static String formatPercent(num a, num total) { 25 static String formatPercent(num a, num total) {
17 return formatPercentNormalized(a / total); 26 return formatPercentNormalized(a / total);
18 } 27 }
19 28
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 return '${seconds}s'; 143 return '${seconds}s';
135 } 144 }
136 145
137 static String formatDateTime(DateTime now) { 146 static String formatDateTime(DateTime now) {
138 return '${now.year}-${now.month}-${now.day} ' 147 return '${now.year}-${now.month}-${now.day} '
139 '${now.hour.toString().padLeft(2)}:' 148 '${now.hour.toString().padLeft(2)}:'
140 '${now.minute.toString().padLeft(2)}:' 149 '${now.minute.toString().padLeft(2)}:'
141 '${now.second.toString().padLeft(2)}'; 150 '${now.second.toString().padLeft(2)}';
142 } 151 }
143 152
153 static String formatDuration(Duration duration,
154 {DurationComponent precision = DurationComponent.Microseconds,
155 String future = '',
156 String past = 'ago'}) {
157 var value = duration.isNegative
158 ? -duration.inMicroseconds
159 : duration.inMicroseconds;
siva 2017/08/03 18:14:51 Would it be the same as var value = duration.inMic
cbernaschina 2017/08/03 22:32:53 Done.
160 switch (precision) {
161 case DurationComponent.Days:
162 value = (value / Duration.MICROSECONDS_PER_DAY).round();
163 break;
164 case DurationComponent.Hours:
165 value = (value / Duration.MICROSECONDS_PER_HOUR).round();
166 break;
167 case DurationComponent.Minutes:
168 value = (value / Duration.MICROSECONDS_PER_MINUTE).round();
169 break;
170 case DurationComponent.Seconds:
171 value = (value / Duration.MICROSECONDS_PER_SECOND).round();
172 break;
173 case DurationComponent.Milliseconds:
174 value = (value / Duration.MICROSECONDS_PER_MILLISECOND).round();
175 break;
176 case DurationComponent.Microseconds:
177 break;
178 }
179 final components = <String>[];
180 if (duration.isNegative) {
181 if (!past.isEmpty) {
182 components.add(past);
183 }
184 } else {
185 if (!future.isEmpty) {
186 components.add(future);
187 }
188 }
189 switch (precision) {
190 case DurationComponent.Microseconds:
191 components.add('${value % Duration.MICROSECONDS_PER_MILLISECOND}μs');
192 value = (value / Duration.MICROSECONDS_PER_MILLISECOND).floor();
193 if (value != 0) {
194 continue Milliseconds;
195 }
196 break;
197 Milliseconds:
198 case DurationComponent.Milliseconds:
199 components.add('${value % Duration.MILLISECONDS_PER_SECOND}ms');
200 value = (value / Duration.MILLISECONDS_PER_SECOND).floor();
201 if (value != 0) {
202 continue Seconds;
203 }
204 break;
205 Seconds:
206 case DurationComponent.Seconds:
207 components.add('${value % Duration.SECONDS_PER_MINUTE}s');
208 value = (value / Duration.SECONDS_PER_MINUTE).floor();
209 ;
210 if (value != 0) {
211 continue Minutes;
212 }
213 break;
214 Minutes:
215 case DurationComponent.Minutes:
216 components.add('${value % Duration.MINUTES_PER_HOUR}m');
217 value = (value / Duration.MINUTES_PER_HOUR).floor();
218 if (value != 0) {
219 continue Hours;
220 }
221 break;
222 Hours:
223 case DurationComponent.Hours:
224 components.add('${value % Duration.HOURS_PER_DAY}h');
225 value = (value / Duration.HOURS_PER_DAY).floor();
226 if (value != 0) {
227 continue Days;
228 }
229 break;
230 Days:
231 case DurationComponent.Days:
232 components.add('${value}d');
233 }
234 return components.reversed.join(' ');
235 }
236
144 static String formatSeconds(double x) { 237 static String formatSeconds(double x) {
145 return x.toStringAsFixed(2); 238 return x.toStringAsFixed(2);
146 } 239 }
147 240
148 static String formatMillis(double x) { 241 static String formatMillis(double x) {
149 return x.toStringAsFixed(2); 242 return x.toStringAsFixed(2);
150 } 243 }
151 244
152 static String formatDurationInSeconds(Duration x) => 245 static String formatDurationInSeconds(Duration x) =>
153 formatSeconds(x.inMicroseconds / Duration.MICROSECONDS_PER_SECOND); 246 formatSeconds(x.inMicroseconds / Duration.MICROSECONDS_PER_SECOND);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 if (_timer != null) { 300 if (_timer != null) {
208 // Already scheduled. 301 // Already scheduled.
209 return; 302 return;
210 } 303 }
211 _timer = new Timer(Duration.ZERO, () { 304 _timer = new Timer(Duration.ZERO, () {
212 _timer = null; 305 _timer = null;
213 callback(); 306 callback();
214 }); 307 });
215 } 308 }
216 } 309 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698