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

Side by Side Diff: runtime/bin/vmservice/client/deployed/web/index.html

Issue 148153007: Add Google Charts to Observatory and use it in allocation profiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js" ></script> 1 <!DOCTYPE html><html><head>
2 <script src="packages/custom_element/custom-elements.debug.js"></script> 2
3 <script src="packages/browser/interop.js"></script> 3
4 <meta charset="utf-8">
5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss">
4 6
5 <title>Dart VM Observatory</title> 7 <title>Dart VM Observatory</title>
6 <meta charset="utf-8"> 8 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
7 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss"> 9
8 10
9 <script src="index.html_bootstrap.dart.js"></script> 11 <script src="index.html_bootstrap.dart.js"></script>
10 12
11 </head> 13 </head>
12 <body><polymer-element name="observatory-element"> 14 <body><polymer-element name="observatory-element">
13 15
14 </polymer-element><polymer-element name="breakpoint-list" extends="observatory-e lement"> 16 </polymer-element><polymer-element name="breakpoint-list" extends="observatory-e lement">
15 <template> 17 <template>
16 <template if="{{ msg['breakpoints'].isEmpty }}"> 18 <template if="{{ msg['breakpoints'].isEmpty }}">
17 <div class="panel panel-warning"> 19 <div class="panel panel-warning">
18 <div class="panel-body">No breakpoints</div> 20 <div class="panel-body">No breakpoints</div>
19 </div> 21 </div>
20 </template> 22 </template>
21 <template if="{{ msg['breakpoints'].isNotEmpty }}"> 23 <template if="{{ msg['breakpoints'].isNotEmpty }}">
22 <ul class="list-group"> 24 <ul class="list-group">
23 <template repeat="{{ bpt in msg['breakpoints'] }}"> 25 <template repeat="{{ bpt in msg['breakpoints'] }}">
24 <li class="list-group-item"> 26 <li class="list-group-item">
25 {{ bpt }} 27 {{ bpt }}
26 </li> 28 </li>
27 </template> 29 </template>
28 </ul> 30 </ul>
29 </template> 31 </template>
30 </template> 32 </template>
31 33
32 </polymer-element><polymer-element name="service-ref" extends="observatory-eleme nt"> 34 </polymer-element><polymer-element name="service-ref" extends="observatory-eleme nt">
33 35
34 </polymer-element><polymer-element name="class-ref" extends="service-ref"> 36 </polymer-element><polymer-element name="class-ref" extends="service-ref">
35 <template> 37 <template>
36 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> 38 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
37 </template> 39 </template>
38 40
39 </polymer-element> 41 </polymer-element>
40 <polymer-element name="error-view" extends="observatory-element"> 42 <polymer-element name="error-view" extends="observatory-element">
41 <template> 43 <template>
42 <div class="row"> 44 <div class="row">
43 <div class="col-md-8 col-md-offset-2"> 45 <div class="col-md-8 col-md-offset-2">
44 <div class="panel panel-danger"> 46 <div class="panel panel-danger">
45 <div class="panel-heading">{{ error['errorType'] }}</div> 47 <div class="panel-heading">{{ error['errorType'] }}</div>
46 <div class="panel-body"> 48 <div class="panel-body">
47 <p>{{ error['text'] }}</p> 49 <p>{{ error['text'] }}</p>
48 </div> 50 </div>
49 </div> 51 </div>
50 </div> 52 </div>
51 </div> 53 </div>
52 </template> 54 </template>
53 55
54 </polymer-element><polymer-element name="field-ref" extends="service-ref"> 56 </polymer-element><polymer-element name="field-ref" extends="service-ref">
55 <template> 57 <template>
56 <div> 58 <div>
57 <template if="{{ ref['final'] }}"> final </template> 59 <template if="{{ ref['final'] }}"> final </template>
58 <template if="{{ ref['const'] }}"> const </template> 60 <template if="{{ ref['const'] }}"> const </template>
59 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}"> 61 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}">
60 var 62 var
61 </template> 63 </template>
62 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> 64 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
63 <class-ref app="{{ app }}" ref="{{ ref['declared_type'] }}"></class-ref> 65 <class-ref app="{{ app }}" ref="{{ ref['declared_type'] }}"></class-ref>
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 </table> 151 </table>
150 </template> 152 </template>
151 <template if="{{ cls['error'] != null }}"> 153 <template if="{{ cls['error'] != null }}">
152 <error-view error_obj="{{ cls['error'] }}"></error-view> 154 <error-view error_obj="{{ cls['error'] }}"></error-view>
153 </template> 155 </template>
154 </div> 156 </div>
155 </div> 157 </div>
156 </div> 158 </div>
157 </div> 159 </div>
158 </template> 160 </template>
159 161
160 </polymer-element> 162 </polymer-element>
161 <polymer-element name="code-ref" extends="service-ref"> 163 <polymer-element name="code-ref" extends="service-ref">
162 <template> 164 <template>
163 <a href="{{ url }}">{{ name }}</a> 165 <a href="{{ url }}">{{ name }}</a>
164 </template> 166 </template>
165 167
166 </polymer-element><polymer-element name="disassembly-entry" extends="observatory -element"> 168 </polymer-element><polymer-element name="disassembly-entry" extends="observatory -element">
167 <template> 169 <template>
168 <div class="row"> 170 <div class="row">
169 <div class="col-md-2">{{ instruction.formattedTicks() }}</div> 171 <div class="col-md-2">{{ instruction.formattedTicks() }}</div>
170 <div class="col-md-2">{{ instruction.formattedAddress() }}</div> 172 <div class="col-md-2">{{ instruction.formattedAddress() }}</div>
171 <div class="col-md-4"> 173 <div class="col-md-4">
172 <code>{{ instruction.machine }} {{ instruction.human }}</code> 174 <code>{{ instruction.machine }} {{ instruction.human }}</code>
173 </div> 175 </div>
174 </div> 176 </div>
175 </template> 177 </template>
176 178
177 </polymer-element><polymer-element name="code-view" extends="observatory-element "> 179 </polymer-element><polymer-element name="code-view" extends="observatory-element ">
178 <template> 180 <template>
179 <div class="row"> 181 <div class="row">
180 <div class="col-md-8 col-md-offset-2"> 182 <div class="col-md-8 col-md-offset-2">
181 <div class="{{ cssPanelClass }}"> 183 <div class="{{ cssPanelClass }}">
182 <div class="panel-heading"> 184 <div class="panel-heading">
183 <function-ref app="{{ app }}" ref="{{ code.functionRef }}"></function- ref> 185 <function-ref app="{{ app }}" ref="{{ code.functionRef }}"></function- ref>
184 </div> 186 </div>
185 <div class="panel-body"> 187 <div class="panel-body">
186 <div class="row"> 188 <div class="row">
187 <div class="col-md-2"><strong>Samples</strong></div> 189 <div class="col-md-2"><strong>Samples</strong></div>
188 <div class="col-md-2"><strong>Address</strong></div> 190 <div class="col-md-2"><strong>Address</strong></div>
189 <div><strong>Instruction</strong></div> 191 <div><strong>Instruction</strong></div>
190 </div> 192 </div>
191 <template repeat="{{ instruction in code.instructions }}"> 193 <template repeat="{{ instruction in code.instructions }}">
192 <disassembly-entry instruction="{{ instruction }}"> 194 <disassembly-entry instruction="{{ instruction }}">
193 </disassembly-entry> 195 </disassembly-entry>
194 </template> 196 </template>
195 </div> 197 </div>
196 </div> 198 </div>
197 </div> 199 </div>
198 </div> 200 </div>
199 </template> 201 </template>
200 202
201 </polymer-element><polymer-element name="collapsible-content" extends="observato ry-element"> 203 </polymer-element><polymer-element name="collapsible-content" extends="observato ry-element">
202 <template> 204 <template>
203 <div class="well row"> 205 <div class="well row">
204 <a on-click="toggleDisplay" class="btn muted unselectable"> 206 <a on-click="toggleDisplay" class="btn muted unselectable">
205 Raw message... <i class="{{ iconClass }}"></i> 207 Raw message... <i class="{{ iconClass }}"></i>
206 </a> 208 </a>
207 <div style="display: {{ displayValue }}" class="well"> 209 <div style="display: {{ displayValue }}" class="well">
208 <content></content> 210 <content></content>
209 </div> 211 </div>
210 </div> 212 </div>
211 </template> 213 </template>
212 214
213 </polymer-element><polymer-element name="field-view" extends="observatory-elemen t"> 215 </polymer-element><polymer-element name="field-view" extends="observatory-elemen t">
214 <template> 216 <template>
215 <div class="row"> 217 <div class="row">
216 <div class="col-md-8 col-md-offset-2"> 218 <div class="col-md-8 col-md-offset-2">
217 <div class="panel panel-warning"> 219 <div class="panel panel-warning">
218 <div class="panel-heading"> 220 <div class="panel-heading">
219 <template if="{{ field['static'] }}">static</template> 221 <template if="{{ field['static'] }}">static</template>
220 <template if="{{ field['final'] }}">final</template> 222 <template if="{{ field['final'] }}">final</template>
221 <template if="{{ field['const'] }}">const</template> 223 <template if="{{ field['const'] }}">const</template>
222 {{ field['user_name'] }} ({{ field['name'] }}) 224 {{ field['user_name'] }} ({{ field['name'] }})
(...skipping 17 matching lines...) Expand all
240 </template> 242 </template>
241 <blockquote> 243 <blockquote>
242 <class-ref app="{{ app }}" ref="{{ field['guard_class'] }}"></class- ref> 244 <class-ref app="{{ app }}" ref="{{ field['guard_class'] }}"></class- ref>
243 </blockquote> 245 </blockquote>
244 </template> 246 </template>
245 </div> 247 </div>
246 </div> 248 </div>
247 </div> 249 </div>
248 </div> 250 </div>
249 </template> 251 </template>
250 252
251 </polymer-element><polymer-element name="function-view" extends="observatory-ele ment"> 253 </polymer-element><polymer-element name="function-view" extends="observatory-ele ment">
252 <template> 254 <template>
253 <div class="row"> 255 <div class="row">
254 <div class="col-md-8 col-md-offset-2"> 256 <div class="col-md-8 col-md-offset-2">
255 <div class="panel panel-warning"> 257 <div class="panel panel-warning">
256 <div class="panel-heading"> 258 <div class="panel-heading">
257 {{ function['user_name'] }} ({{ function['name'] }}) 259 {{ function['user_name'] }} ({{ function['name'] }})
258 <class-ref app="{{ app }}" ref="{{ function['class'] }}"></class-ref> 260 <class-ref app="{{ app }}" ref="{{ function['class'] }}"></class-ref>
259 </div> 261 </div>
260 <div class="panel-body"> 262 <div class="panel-body">
(...skipping 27 matching lines...) Expand all
288 <tr> 290 <tr>
289 <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</t d> 291 <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</t d>
290 </tr> 292 </tr>
291 </tbody> 293 </tbody>
292 </table> 294 </table>
293 </div> 295 </div>
294 </div> 296 </div>
295 </div> 297 </div>
296 </div> 298 </div>
297 </template> 299 </template>
298 300
299 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e lement"> 301 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e lement">
300 <template> 302 <template>
301 <div class="row"> 303 <div class="row">
302 <div class="col-md-1"> 304 <div class="col-md-1">
303 <img src="img/isolate_icon.png" class="img-polaroid"> 305 <img src="img/isolate_icon.png" class="img-polaroid">
304 </div> 306 </div>
305 <div class="col-md-1">{{ isolate }}</div> 307 <div class="col-md-1">{{ isolate }}</div>
306 <div class="col-md-10">{{ name }}</div> 308 <div class="col-md-10">{{ name }}</div>
307 </div> 309 </div>
308 <div class="row"> 310 <div class="row">
309 <div class="col-md-2"></div> 311 <div class="col-md-2"></div>
310 <div class="col-md-1"> 312 <div class="col-md-1">
311 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac e') }}">Stacktrace</a> 313 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac e') }}">Stacktrace</a>
312 </div> 314 </div>
313 <div class="col-md-1"> 315 <div class="col-md-1">
314 <a href="{{ app.locationManager.relativeLink(isolate, 'library') }}">Lib rary</a> 316 <a href="{{ app.locationManager.relativeLink(isolate, 'library') }}">Lib rary</a>
315 </div> 317 </div>
316 <div class="col-md-1"> 318 <div class="col-md-1">
317 <a href="{{ app.locationManager.relativeLink(isolate, 'debug/breakpoints ') }}">Breakpoints</a> 319 <a href="{{ app.locationManager.relativeLink(isolate, 'debug/breakpoints ') }}">Breakpoints</a>
318 </div> 320 </div>
319 <div class="col-md-1"> 321 <div class="col-md-1">
320 <a href="{{ app.locationManager.relativeLink(isolate, 'profile') }}">Pro file</a> 322 <a href="{{ app.locationManager.relativeLink(isolate, 'profile') }}">Pro file</a>
321 </div> 323 </div>
322 <div class="col-md-1"> 324 <div class="col-md-1">
323 <a href="{{ app.locationManager.relativeLink(isolate, 'allocationprofile ') }}">Allocation Profile</a> 325 <a href="{{ app.locationManager.relativeLink(isolate, 'allocationprofile ') }}">Allocation Profile</a>
324 </div> 326 </div>
325 <div class="col-md-8"></div> 327 <div class="col-md-8"></div>
326 </div> 328 </div>
327 </template> 329 </template>
328 330
329 </polymer-element> 331 </polymer-element>
330 <polymer-element name="isolate-list" extends="observatory-element"> 332 <polymer-element name="isolate-list" extends="observatory-element">
331 <template> 333 <template>
332 <ul class="list-group"> 334 <ul class="list-group">
333 <template repeat="{{ isolate in app.isolateManager.isolates.values }}"> 335 <template repeat="{{ isolate in app.isolateManager.isolates.values }}">
334 <li class="list-group-item"> 336 <li class="list-group-item">
335 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso late.name }}"></isolate-summary> 337 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso late.name }}"></isolate-summary>
336 </li> 338 </li>
337 </template> 339 </template>
338 </ul> 340 </ul>
339 (<a href="{{ app.locationManager.absoluteLink('cpu') }}">cpu</a>) 341 (<a href="{{ app.locationManager.absoluteLink('cpu') }}">cpu</a>)
340 342
341 </template> 343 </template>
342 344
343 </polymer-element><polymer-element name="instance-view" extends="observatory-ele ment"> 345 </polymer-element><polymer-element name="instance-view" extends="observatory-ele ment">
344 <template> 346 <template>
345 <div class="row"> 347 <div class="row">
346 <div class="col-md-8 col-md-offset-2"> 348 <div class="col-md-8 col-md-offset-2">
347 <div class="panel panel-warning"> 349 <div class="panel panel-warning">
348 <div class="panel-heading"> 350 <div class="panel-heading">
349 Instance of 351 Instance of
350 <class-ref app="{{ app }}" ref="{{ instance['class'] }}"></class-ref> 352 <class-ref app="{{ app }}" ref="{{ instance['class'] }}"></class-ref>
351 </div> 353 </div>
352 <div class="panel-body"> 354 <div class="panel-body">
(...skipping 16 matching lines...) Expand all
369 </table> 371 </table>
370 </template> 372 </template>
371 <template if="{{ instance['error'] != null }}"> 373 <template if="{{ instance['error'] != null }}">
372 <error-view error_obj="{{ instance['error'] }}"></error-view> 374 <error-view error_obj="{{ instance['error'] }}"></error-view>
373 </template> 375 </template>
374 </div> 376 </div>
375 </div> 377 </div>
376 </div> 378 </div>
377 </div> 379 </div>
378 </template> 380 </template>
379 381
380 </polymer-element> 382 </polymer-element>
381 <polymer-element name="json-view" extends="observatory-element"> 383 <polymer-element name="json-view" extends="observatory-element">
382 <template> 384 <template>
383 <template bind="" if="{{ valueType == 'Primitive' }}"> 385 <template bind="" if="{{ valueType == 'Primitive' }}">
384 <span>{{primitiveString}}</span> 386 <span>{{primitiveString}}</span>
385 </template> 387 </template>
386 <template bind="" if="{{ valueType == 'List' }}"> 388 <template bind="" if="{{ valueType == 'List' }}">
387 <table class="table table-condensed table-bordered"> 389 <table class="table table-condensed table-bordered">
388 <caption class="text-left">List, {{list.length}}</caption> 390 <caption class="text-left">List, {{list.length}}</caption>
389 <tbody> 391 <tbody>
390 <tr template="" repeat="{{item in list)}}"> 392 <tr template="" repeat="{{item in list)}}">
391 <th>{{counter}}</th> 393 <th>{{counter}}</th>
392 <td><json-view json="{{item}}"></json-view></td> 394 <td><json-view json="{{item}}"></json-view></td>
393 </tr> 395 </tr>
394 </tbody> 396 </tbody>
395 </table> 397 </table>
396 </template> 398 </template>
397 <template if="{{ valueType == 'Map' }}"> 399 <template if="{{ valueType == 'Map' }}">
398 <table class="table table-condensed table-bordered"> 400 <table class="table table-condensed table-bordered">
399 <caption class="text-left">Map, {{keys.length}}</caption> 401 <caption class="text-left">Map, {{keys.length}}</caption>
400 <tbody> 402 <tbody>
401 <tr template="" repeat="{{key in keys}}"> 403 <tr template="" repeat="{{key in keys}}">
402 <th>{{key}}</th> 404 <th>{{key}}</th>
403 <td><json-view json="{{value(key)}}"></json-view></td> 405 <td><json-view json="{{value(key)}}"></json-view></td>
404 </tr> 406 </tr>
405 </tbody> 407 </tbody>
406 </table> 408 </table>
407 </template> 409 </template>
408 </template> 410 </template>
409 411
410 </polymer-element> 412 </polymer-element>
411 <polymer-element name="script-ref" extends="service-ref"> 413 <polymer-element name="script-ref" extends="service-ref">
412 <template> 414 <template>
413 <a href="{{ url }}">{{ name }}</a> 415 <a href="{{ url }}">{{ name }}</a>
414 </template> 416 </template>
415 417
416 </polymer-element><polymer-element name="library-view" extends="observatory-elem ent"> 418 </polymer-element><polymer-element name="library-view" extends="observatory-elem ent">
417 <template> 419 <template>
418 <div class="alert alert-success">Library {{ library['name'] }}</div> 420 <div class="alert alert-success">Library {{ library['name'] }}</div>
419 <div class="alert alert-info">Scripts</div> 421 <div class="alert alert-info">Scripts</div>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 <class-ref app="{{ app }}" ref="{{ cls }}"></class-ref> 474 <class-ref app="{{ app }}" ref="{{ cls }}"></class-ref>
473 </td> 475 </td>
474 <td> 476 <td>
475 <class-ref app="{{ app }}" ref="{{ cls }}" internal=""></class-ref> 477 <class-ref app="{{ app }}" ref="{{ cls }}" internal=""></class-ref>
476 </td> 478 </td>
477 </tr> 479 </tr>
478 </tbody> 480 </tbody>
479 </table> 481 </table>
480 482
481 </template> 483 </template>
482 484
483 </polymer-element><polymer-element name="heap-profile" extends="observatory-elem ent"> 485 </polymer-element><polymer-element name="heap-profile" extends="observatory-elem ent">
484 <template> 486 <template>
485 <div> 487 <div>
486 <button type="button" on-click="{{refreshData}}">Refresh</button> 488 <button type="button" on-click="{{refreshData}}">Refresh</button>
487 </div> 489 </div>
488 <div> 490 <div class="row">
489 <span>New Space </span> 491 <div id="newPieChart" class="col-md-4" style="height: 400px">
490 <span>{{ status(true) }}</span> 492 </div>
493 <div id="newStatus" class="col-md-2">
494 <table class="table">
495 <tbody>
496 <tr>
497 <td>Collections</td>
498 <td>{{ formattedCollections(true) }}</td>
499 </tr>
500 <tr>
501 <td>Average Collection Time</td>
502 <td>{{ formattedAverage(true) }}</td>
503 </tr>
504 <tr>
505 <td>Cumulative Collection Time</td>
506 <td>{{ formattedTotalCollectionTime(true) }}</td>
507 </tr>
508 </tbody>
509 </table>
510 </div>
511 <div id="oldPieChart" class="col-md-4" style="height: 400px">
512 </div>
513 <div id="oldStatus" class="col-md-2">
514 <table class="table">
515 <tbody>
516 <tr>
517 <td>Collections</td>
518 <td>{{ formattedCollections(true) }}</td>
519 </tr>
520 <tr>
521 <td>Average Collection Time</td>
522 <td>{{ formattedAverage(true) }}</td>
523 </tr>
524 <tr>
525 <td>Cumulative Collection Time</td>
526 <td>{{ formattedTotalCollectionTime(true) }}</td>
527 </tr>
528 </tbody>
529 </table>
530 </div>
491 </div> 531 </div>
492 <div> 532 <div class="row">
493 <span>Old Space </span> 533 <div id="table" class="col-md-12" style="height: 800px"></div>
494 <span>{{ status(false) }}</span>
495 </div> 534 </div>
496 <table class="table table-hover">
497 <thead>
498 <tr>
499 <th>Class</th>
500 <th><button on-click="{{changeSortColumn}}" data-msg="1">Current (new)</ button></th>
501 <th><button on-click="{{changeSortColumn}}" data-msg="2">Allocated since GC (new)</button></th>
502 <th><button on-click="{{changeSortColumn}}" data-msg="3">Total before la st GC (new)</button></th>
503 <th><button on-click="{{changeSortColumn}}" data-msg="4">Total after las t GC (new)</button></th>
504 <th><button on-click="{{changeSortColumn}}" data-msg="5">Current (old)</ button></th>
505 <th><button on-click="{{changeSortColumn}}" data-msg="6">Allocated since GC (old)</button></th>
506 <th><button on-click="{{changeSortColumn}}" data-msg="7">Total before la st GC (old)</button></th>
507 <th><button on-click="{{changeSortColumn}}" data-msg="8">Total after las t GC (old)</button></th>
508 </tr>
509 </thead>
510 <tbody>
511 <tr template="" repeat="{{ cls in sortedProfile }}">
512 <td><class-ref app="{{ app }}" ref="{{ cls['class'] }}"></class-ref></td>
513 <td>{{ current(cls, true) }}</td>
514 <td>{{ allocated(cls, true) }}</td>
515 <td>{{ beforeGC(cls, true) }}</td>
516 <td>{{ afterGC(cls, true) }}</td>
517 <td>{{ current(cls, false) }}</td>
518 <td>{{ allocated(cls, false) }}</td>
519 <td>{{ beforeGC(cls, false) }}</td>
520 <td>{{ afterGC(cls, false) }}</td>
521 </tr>
522 </tbody>
523 </table>
524 </template> 535 </template>
525 536
526 </polymer-element><polymer-element name="script-view" extends="observatory-eleme nt"> 537 </polymer-element>
538 <polymer-element name="script-view" extends="observatory-element">
527 <template> 539 <template>
528 <div class="row"> 540 <div class="row">
529 <div class="col-md-8 col-md-offset-2"> 541 <div class="col-md-8 col-md-offset-2">
530 <div class="panel-heading"> 542 <div class="panel-heading">
531 <button on-click="{{refreshCoverage}}">Refresh Coverage</button> 543 <button on-click="{{refreshCoverage}}">Refresh Coverage</button>
532 {{ script.scriptRef['user_name'] }} 544 {{ script.scriptRef['user_name'] }}
533 {{ script.coveredPercentageFormatted() }} 545 {{ script.coveredPercentageFormatted() }}
534 </div> 546 </div>
535 <div class="panel-body"> 547 <div class="panel-body">
536 <table style="width:100%"> 548 <table style="width:100%">
(...skipping 25 matching lines...) Expand all
562 <tbody> 574 <tbody>
563 <tr template="" repeat="{{ frame in trace['members'] }}"> 575 <tr template="" repeat="{{ frame in trace['members'] }}">
564 <td></td> 576 <td></td>
565 <td><function-ref app="{{ app }}" ref="{{ frame['function'] }}"></functi on-ref></td> 577 <td><function-ref app="{{ app }}" ref="{{ frame['function'] }}"></functi on-ref></td>
566 <td><script-ref app="{{ app }}" ref="{{ frame['script'] }}"></script-ref ></td> 578 <td><script-ref app="{{ app }}" ref="{{ frame['script'] }}"></script-ref ></td>
567 <td>{{ frame['line'] }}</td> 579 <td>{{ frame['line'] }}</td>
568 </tr> 580 </tr>
569 </tbody> 581 </tbody>
570 </table> 582 </table>
571 </template> 583 </template>
572 584
573 </polymer-element><polymer-element name="message-viewer" extends="observatory-el ement"> 585 </polymer-element><polymer-element name="message-viewer" extends="observatory-el ement">
574 <!-- 586 <!--
575 This is a big switch statement which instantiates the custom element 587 This is a big switch statement which instantiates the custom element
576 designated to display the message type. 588 designated to display the message type.
577 --> 589 -->
578 <template> 590 <template>
579 <!-- If the message type is an IsolateList --> 591 <!-- If the message type is an IsolateList -->
580 <template if="{{ messageType == 'IsolateList' }}"> 592 <template if="{{ messageType == 'IsolateList' }}">
581 <isolate-list app="{{ app }}"></isolate-list> 593 <isolate-list app="{{ app }}"></isolate-list>
582 </template> 594 </template>
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 <script-view app="{{ app }}" script="{{ message['script'] }}"></script-vie w> 639 <script-view app="{{ app }}" script="{{ message['script'] }}"></script-vie w>
628 </template> 640 </template>
629 <template if="{{ messageType == 'AllocationProfile' }}"> 641 <template if="{{ messageType == 'AllocationProfile' }}">
630 <heap-profile app="{{ app }}" profile="{{ message }}"></heap-profile> 642 <heap-profile app="{{ app }}" profile="{{ message }}"></heap-profile>
631 </template> 643 </template>
632 <template if="{{ messageType == 'CPU' }}"> 644 <template if="{{ messageType == 'CPU' }}">
633 <json-view json="{{ message }}"></json-view> 645 <json-view json="{{ message }}"></json-view>
634 </template> 646 </template>
635 <!-- Add new views and message types in the future here. --> 647 <!-- Add new views and message types in the future here. -->
636 </template> 648 </template>
637 649
638 </polymer-element><polymer-element name="navigation-bar-isolate" extends="observ atory-element"> 650 </polymer-element><polymer-element name="navigation-bar-isolate" extends="observ atory-element">
639 <template> 651 <template>
640 <ul class="nav navbar-nav"> 652 <ul class="nav navbar-nav">
641 <li><a href="{{ currentIsolateLink('') }}"> {{currentIsolateName()}}</a> </li> 653 <li><a href="{{ currentIsolateLink('') }}"> {{currentIsolateName()}}</a> </li>
642 <template repeat="{{link in links}}"> 654 <template repeat="{{link in links}}">
643 <li><a href="{{ currentIsolateLink(link) }}">{{ link }}</a></li> 655 <li><a href="{{ currentIsolateLink(link) }}">{{ link }}</a></li>
644 </template> 656 </template>
645 </ul> 657 </ul>
646 </template> 658 </template>
647 659
648 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el ement"> 660 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el ement">
649 <template> 661 <template>
650 <nav class="navbar navbar-default" role="navigation"> 662 <nav class="navbar navbar-default" role="navigation">
651 <div class="navbar-header"> 663 <div class="navbar-header">
652 <a class="navbar-brand" href="#/isolates">Observatory</a> 664 <a class="navbar-brand" href="#/isolates">Observatory</a>
653 </div> 665 </div>
654 <template if="{{ app.locationManager.hasCurrentIsolate }}"> 666 <template if="{{ app.locationManager.hasCurrentIsolate }}">
655 <div class="collapse navbar-collapse navbar-ex1-collapse"> 667 <div class="collapse navbar-collapse navbar-ex1-collapse">
656 <navigation-bar-isolate app="{{ app }}"></navigation-bar-isolate> 668 <navigation-bar-isolate app="{{ app }}"></navigation-bar-isolate>
657 </div> 669 </div>
658 </template> 670 </template>
659 </nav> 671 </nav>
660 </template> 672 </template>
661 673
662 </polymer-element><polymer-element name="isolate-profile" extends="observatory-e lement"> 674 </polymer-element><polymer-element name="isolate-profile" extends="observatory-e lement">
663 <template> 675 <template>
664 <p> P R O F I L E </p> 676 <p> P R O F I L E </p>
665 <div> 677 <div>
666 <button type="button" on-click="{{refreshData}}">Refresh profile data</but ton> 678 <button type="button" on-click="{{refreshData}}">Refresh profile data</but ton>
667 <span>Top</span> 679 <span>Top</span>
668 <select selectedindex="{{methodCountSelected}}" value="{{methodCounts[meth odCountSelected]}}"> 680 <select selectedindex="{{methodCountSelected}}" value="{{methodCounts[meth odCountSelected]}}">
669 <option template="" repeat="{{count in methodCounts}}">{{count}}</option > 681 <option template="" repeat="{{count in methodCounts}}">{{count}}</option >
670 </select> 682 </select>
671 <span>methods</span> 683 <span>methods</span>
(...skipping 11 matching lines...) Expand all
683 <tr template="" repeat="{{ code in topExclusiveCodes }}"> 695 <tr template="" repeat="{{ code in topExclusiveCodes }}">
684 <td>{{ codeTicks(code, false) }}</td> 696 <td>{{ codeTicks(code, false) }}</td>
685 <td>{{ codePercent(code, false) }}</td> 697 <td>{{ codePercent(code, false) }}</td>
686 <td> 698 <td>
687 <span>{{ codeName(code) }}</span> 699 <span>{{ codeName(code) }}</span>
688 <code-ref app="{{ app }}" ref="{{ code.codeRef }}"></code-ref> 700 <code-ref app="{{ app }}" ref="{{ code.codeRef }}"></code-ref>
689 </td> 701 </td>
690 </tr> 702 </tr>
691 </tbody></table> 703 </tbody></table>
692 </template> 704 </template>
693 705
694 </polymer-element> 706 </polymer-element>
695 <polymer-element name="response-viewer" extends="observatory-element"> 707 <polymer-element name="response-viewer" extends="observatory-element">
696 <template> 708 <template>
697 <template repeat="{{ message in app.requestManager.responses }}"> 709 <template repeat="{{ message in app.requestManager.responses }}">
698 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer> 710 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer>
699 </template> 711 </template>
700 </template> 712 </template>
701 713
702 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element"> 714 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element">
703 <template> 715 <template>
704 <navigation-bar app="{{ app }}"></navigation-bar> 716 <navigation-bar app="{{ app }}"></navigation-bar>
705 <template if="{{ app.locationManager.profile }}"> 717 <template if="{{ app.locationManager.profile }}">
706 <isolate-profile app="{{ app }}"></isolate-profile> 718 <isolate-profile app="{{ app }}"></isolate-profile>
707 </template> 719 </template>
708 <template if="{{ app.locationManager.profile == false }}"> 720 <template if="{{ app.locationManager.profile == false }}">
709 <response-viewer app="{{ app }}"></response-viewer> 721 <response-viewer app="{{ app }}"></response-viewer>
710 </template> 722 </template>
711 </template> 723 </template>
712 724
713 </polymer-element> 725 </polymer-element>
714 <observatory-application></observatory-application> 726 <observatory-application></observatory-application>
715 727
716 </body></html> 728 </body></html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698