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

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

Issue 199363002: Rework library and class view pages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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> 1 <!DOCTYPE html><html><head>
2 2
3 3
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss"> 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss">
6 6
7 <title>Dart VM Observatory</title> 7 <title>Dart VM Observatory</title>
8 <script type="text/javascript" src="https://www.google.com/jsapi"></script> 8 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
9 9
10 10
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 </li> 220 </li>
221 </template> 221 </template>
222 </ul> 222 </ul>
223 </template> 223 </template>
224 </template> 224 </template>
225 225
226 </polymer-element> 226 </polymer-element>
227 <polymer-element name="service-ref" extends="observatory-element"> 227 <polymer-element name="service-ref" extends="observatory-element">
228 228
229 </polymer-element><polymer-element name="class-ref" extends="service-ref"> 229 </polymer-element><polymer-element name="class-ref" extends="service-ref">
230 <template> 230
231 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> 231 <template><a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a></template>
232 </template> 232
233 233
234 </polymer-element> 234 </polymer-element>
235 <polymer-element name="error-view" extends="observatory-element"> 235 <polymer-element name="curly-block">
236 <template>
237 <div class="row">
238 <div class="col-md-8 col-md-offset-2">
239 <div class="panel panel-danger">
240 <div class="panel-heading">{{ error.kind }}</div>
241 <div class="panel-body">
242 <p>{{ error.message }}</p>
243 </div>
244 </div>
245 </div>
246 </div>
247 </template>
248
249 </polymer-element><polymer-element name="field-ref" extends="service-ref">
250 <template>
251 <div>
252 <template if="{{ ref['final'] }}"> final </template>
253 <template if="{{ ref['const'] }}"> const </template>
254 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}">
255 var
256 </template>
257 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
258 <class-ref ref="{{ ref['declared_type'] }}"></class-ref>
259 </template>
260 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
261 </div>
262 </template> </polymer-element><polymer-element name="function-ref" extends="ser vice-ref">
263 <template>
264 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
265 </template>
266
267 </polymer-element><polymer-element name="curly-block">
268 <template> 236 <template>
269 <style> 237 <style>
270 .idle { 238 .idle {
271 display: inline-block; 239 display: inline-block;
272 color: #0489c3; 240 color: #0489c3;
273 cursor: pointer; 241 cursor: pointer;
274 } 242 }
275 .busy { 243 .busy {
276 display: inline-block; 244 display: inline-block;
277 color: white; 245 color: white;
(...skipping 22 matching lines...) Expand all
300 <template if="{{ !busy }}"> 268 <template if="{{ !busy }}">
301 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊞&nbsp;& nbsp;</div></a>} 269 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊞&nbsp;& nbsp;</div></a>}
302 </template> 270 </template>
303 </template> 271 </template>
304 </template> 272 </template>
305 273
306 </polymer-element> 274 </polymer-element>
307 <polymer-element name="instance-ref" extends="service-ref"> 275 <polymer-element name="instance-ref" extends="service-ref">
308 <template> 276 <template>
309 <style> 277 <style>
310 .member { 278 .memberList {
279 display: table;
280 }
281 .memberItem {
282 display: table-row;
283 }
284 .memberName, .memberValue {
285 display: table-cell;
311 vertical-align: top; 286 vertical-align: top;
312 padding: 1px 0 1px 1em; 287 padding: 3px 0 3px 1em;
288 font: 400 14px 'Montserrat', sans-serif;
313 } 289 }
314 </style> 290 </style>
315 <div> 291 <div>
316 <template if="{{ isUnexpected(ref.serviceType) }}"> 292 <template if="{{ isUnexpected(ref.serviceType) }}">
317 unexpected reference type &lt;{{ ref.serviceType }}&gt; 293 unexpected reference type &lt;{{ ref.serviceType }}&gt;
318 </template> 294 </template>
319 295
320 <template if="{{ isError(ref.serviceType) }}"> 296 <template if="{{ isError(ref.serviceType) }}">
321 <pre>{{ ref.message }}</pre> 297 <pre>{{ ref.message }}</pre>
322 </template> 298 </template>
323 299
324 <template if="{{ isNull(ref.serviceType) }}"> 300 <template if="{{ isNull(ref.serviceType) }}">
325 <div title="{{ hoverText }}">{{ ref['preview'] }}</div> 301 <div title="{{ hoverText }}">{{ ref['preview'] }}</div>
326 </template> 302 </template>
327 303
328 <template if="{{ (isString(ref.serviceType) || 304 <template if="{{ (isString(ref.serviceType) ||
329 isBool(ref.serviceType) || 305 isBool(ref.serviceType) ||
330 isInt(ref.serviceType)) }}"> 306 isInt(ref.serviceType)) }}">
331 <a href="{{ url }}">{{ ref['preview'] }}</a> 307 <a href="{{ url }}">{{ ref['preview'] }}</a>
332 </template> 308 </template>
333 309
334 <template if="{{ isClosure(ref.serviceType) }}"> 310 <template if="{{ isClosure(ref.serviceType) }}">
335 <a href="{{ url }}"> 311 <a href="{{ url }}">
312 <!-- TODO(turnidge): Switch this to fully-qualified function -->
336 {{ ref['closureFunc']['user_name'] }} 313 {{ ref['closureFunc']['user_name'] }}
337 </a> 314 </a>
338 </template> 315 </template>
339 316
340 <template if="{{ isInstance(ref.serviceType) }}"> 317 <template if="{{ isInstance(ref.serviceType) }}">
341 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> 318 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a>
342 <curly-block callback="{{ expander() }}"> 319 <curly-block callback="{{ expander() }}">
343 <table> 320 <div class="memberList">
344 <tbody><tr template="" repeat="{{ field in ref['fields'] }}"> 321 <template repeat="{{ field in ref['fields'] }}">
345 <td class="member">{{ field['decl']['user_name'] }}</td> 322 <div class="memberItem">
346 <td class="member"> 323 <div class="memberName">
347 <instance-ref ref="{{ field['value'] }}"></instance-ref> 324 {{ field['decl']['user_name'] }}
348 </td> 325 </div>
349 </tr> 326 <div class="memberValue">
350 </tbody></table> 327 <instance-ref ref="{{ field['value'] }}"></instance-ref>
328 </div>
329 </div>
330 </template>
331 </div>
351 </curly-block> 332 </curly-block>
352 </template> 333 </template>
353 334
354 <template if="{{ isList(ref.serviceType) }}"> 335 <template if="{{ isList(ref.serviceType) }}">
355 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em> ({{ ref['le ngth']}})</a> 336 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em> ({{ ref['le ngth']}})</a>
356 <curly-block callback="{{ expander() }}"> 337 <curly-block callback="{{ expander() }}">
357 <table> 338 <div class="memberList">
358 <tbody><tr template="" repeat="{{ element in ref['elements'] }}"> 339 <template repeat="{{ element in ref['elements'] }}">
359 <td class="member">[{{ element['index']}}]</td> 340 <div class="memberItem">
360 <td class="member"> 341 <div class="memberName">[{{ element['index']}}]</div>
361 <instance-ref ref="{{ element['value'] }}"></instance-ref> 342 <div class="memberValue">
362 </td> 343 <instance-ref ref="{{ element['value'] }}"></instance-ref>
363 </tr> 344 </div>
364 </tbody></table> 345 </div>
346 </template>
347 </div>
365 </curly-block> 348 </curly-block>
366 </template> 349 </template>
367 350
368 </div> 351 </div>
369 </template> 352 </template>
370 353
371 </polymer-element> 354 </polymer-element>
355 <polymer-element name="eval-box" extends="observatory-element">
356 <template>
357 <style>
358 .textbox {
359 width: 80ex;
360 font: 400 16px 'Montserrat', sans-serif;
361 }
362 .bigtextbox {
363 font: 400 16px 'Montserrat', sans-serif;
364 }
365 .button {
366 font: 400 16px 'Montserrat', sans-serif;
367 }
368 .radios {
369 display: inline;
370 }
371 .radios label{
372 padding-left: 15px;
373 }
374 .historyExpr, .historyValue {
375 vertical-align: text-top;
376 font: 400 14px 'Montserrat', sans-serif;
377 }
378 .historyExpr a {
379 display: block;
380 color: black;
381 text-decoration: none;
382 padding: 6px 6px;
383 cursor: pointer;
384 white-space: pre-line;
385 }
386 .historyExpr a:hover {
387 background-color: #e1f5fe
388 }
389 .historyValue {
390 display: block;
391 padding: 6px 6px;
392 }
393 </style>
394 <form>
395 <template if="{{ lineMode == '1-line' }}">
396 <input class="textbox" type="text" value="{{ text }}">
397 </template>
398 <template if="{{ lineMode == 'N-line' }}">
399 <textarea class="bigtextbox" rows="5" cols="80" value="{{ text }}"></tex tarea>
400 </template>
401
402 <input class="button" type="submit" value="Evaluate" on-click="{{ eval }}" >
403 <div class="radios" on-change="{{ updateLineMode }}">
404 <label for="1-line">1-line
405 <input type="radio" name="lineMode" value="1-line" checked="">
406 </label>
407 <label for="N-line">N-line
408 <input type="radio" name="lineMode" value="N-line">
409 </label>
410 </div>
411 </form>
412
413 <br>
414 <template if="{{ results.isNotEmpty }}">
415 <table>
416 <tbody><tr template="" repeat="{{ result in results }}">
417 <td class="historyExpr">
418 <a class="expr" on-click="{{ selectExpr }}" expr="{{ result['expr'] }}">{{ result['expr'] }}</a>
419 </td>
420 <td class="historyValue">
421 <template if="{{ result['value'] == null }}">
422 <div style="color:#aaa;cursor:wait;">&lt;pending&gt;</div>
423 </template>
424 <template if="{{ result['value'] != null }}">
425 <instance-ref isolate="{{ isolate }}" ref="{{ result['value'] }}">
426 </instance-ref>
427 </template>
428 </td>
429 </tr>
430 </tbody></table>
431 </template>
432 </template>
433 </polymer-element>
434
435
436 <polymer-element name="field-ref" extends="service-ref">
437 <template>
438 <div>
439 <template if="{{ ref['final'] }}"> final </template>
440 <template if="{{ ref['const'] }}"> const </template>
441 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}">
442 var
443 </template>
444 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
445 <class-ref ref="{{ ref['declared_type'] }}"></class-ref>
446 </template>
447 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
448 </div>
449 </template> </polymer-element><polymer-element name="function-ref" extends="ser vice-ref">
450 <!-- TODO(turnidge): Is there a way to add newlines to this without
451 messing up the output? -->
452 <template><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}"><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><template if="{ { qualified &amp;&amp; hasParent }}"><function-ref ref="{{ ref['parent'] }}" qua lified="{{ true }}"></function-ref>.</template><a href="{{ url }}">{{ name }}</a ></template>
453
454
455 </polymer-element>
372 <polymer-element name="library-ref" extends="service-ref"> 456 <polymer-element name="library-ref" extends="service-ref">
373 <template> 457 <template>
374 <a href="{{ url }}">{{ name }}</a> 458 <a href="{{ url }}">{{ name }}</a>
375 </template> 459 </template>
376 460
377 </polymer-element><polymer-element name="class-view" extends="observatory-elemen t"> 461 </polymer-element><polymer-element name="script-ref" extends="service-ref">
462 <template>
463 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
464 </template>
465
466 </polymer-element>
467 <polymer-element name="class-view" extends="observatory-element">
378 <template> 468 <template>
469 <style>
470 .content {
471 padding-left: 10%;
472 font: 400 14px 'Montserrat', sans-serif;
473 }
474 h1 {
475 font: 400 18px 'Montserrat', sans-serif;
476 }
477 .memberList {
478 display: table;
479 }
480 .memberItem {
481 display: table-row;
482 }
483 .memberName, .memberValue {
484 display: table-cell;
485 vertical-align: top;
486 padding: 3px 0 3px 1em;
487 font: 400 14px 'Montserrat', sans-serif;
488 }
489 </style>
490
379 <nav-bar> 491 <nav-bar>
380 <top-nav-menu></top-nav-menu> 492 <top-nav-menu></top-nav-menu>
381 <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu> 493 <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu>
382 <library-nav-menu library="{{ cls['library'] }}"></library-nav-menu> 494 <library-nav-menu library="{{ cls['library'] }}"></library-nav-menu>
383 <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu> 495 <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu>
384 <nav-refresh callback="{{ refresh }}"></nav-refresh> 496 <nav-refresh callback="{{ refresh }}"></nav-refresh>
385 </nav-bar> 497 </nav-bar>
386 498
387 <div class="row"> 499 <div class="content">
388 <div class="col-md-8 col-md-offset-2"> 500 <h1>
389 <div class="panel panel-warning"> 501 <template if="{{ cls['abstract'] }}">
390 <div class="panel-heading"> 502 abstract
391 class <strong>{{ cls.name }}</strong> 503 </template>
392 <template if="{{ cls['super']['type'] != 'Null' }}"> 504 <template if="{{ cls['patch'] }}">
393 extends 505 patch
394 <class-ref ref="{{ cls['super'] }}"></class-ref> 506 </template>
395 </template> 507 class {{ cls.name }}
396 <p></p> 508 </h1>
397 <library-ref ref="{{ cls['library'] }}"></library-ref> 509 <div class="memberList">
510 <div class="memberItem">
511 <div class="memberName">library</div>
512 <div class="memberValue">
513 <library-ref ref="{{ cls['library'] }}"></library-ref>
514 </div>
398 </div> 515 </div>
399 <div class="panel-body"> 516 <div class="memberItem">
400 <table class="table table-hover"> 517 <div class="memberName">script</div>
401 <tbody> 518 <div class="memberValue">
402 <tr> 519 <script-ref ref="{{ cls['script'] }}" line="{{ cls['line'] }}">
403 <td>Abstract</td><td>{{ cls['abstract'] }}</td> 520 </script-ref>
404 </tr> 521 </div>
405 <tr>
406 <td>Const</td><td>{{ cls['const'] }}</td>
407 </tr>
408 <tr>
409 <td>Finalized</td><td>{{ cls['const'] }}</td>
410 </tr>
411 <tr>
412 <td>Implemented</td><td>{{ cls['implemented'] }}</td>
413 </tr>
414 <tr>
415 <td>Patch</td><td>{{ cls['patch'] }}</td>
416 </tr>
417 <tr>
418 <td>VM Name</td><td>{{ cls['name'] }}</td>
419 </tr>
420 </tbody>
421 </table>
422 <template if="{{ cls['error'] == null }}">
423 <blockquote><strong>Fields</strong></blockquote>
424 <table class="table table-hover">
425 <tbody>
426 <tr template="" repeat="{{ field in cls['fields'] }}">
427 <td><field-ref ref="{{ field }}"></field-ref></td>
428 <td><instance-ref ref="{{ field['value'] }}"></instance-ref></ td>
429 </tr>
430 </tbody>
431 </table>
432 <blockquote><strong>Functions</strong></blockquote>
433 <table class="table table-hover">
434 <thead>
435 <tr>
436 <th>User Name</th>
437 <th>VM Name</th>
438 </tr>
439 </thead>
440 <tbody>
441 <tr template="" repeat="{{ function in cls['functions'] }}">
442 <td><function-ref ref="{{ function }}"></function-ref></td>
443 <td><function-ref ref="{{ function }}" internal=""></function- ref></td>
444 </tr>
445 </tbody>
446 </table>
447 </template>
448 <template if="{{ cls['error'] != null }}">
449 <error-view error_obj="{{ cls['error'] }}"></error-view>
450 </template>
451 </div> 522 </div>
523
524 <div class="memberItem">&nbsp;</div>
525
526 <template if="{{ cls['super']['type'] != 'Null' }}">
527 <div class="memberItem">
528 <div class="memberName">extends</div>
529 <div class="memberValue">
530 <class-ref ref="{{ cls['super'] }}"></class-ref>
531 </div>
532 </div>
533 </template>
534 <template if="{{ cls['subclasses'].length > 0 }}">
535 <div class="memberItem">
536 <div class="memberName">extended by</div>
537 <div class="memberValue">
538 <template repeat="{{ subclass in cls['subclasses'] }}">
539 <class-ref ref="{{ subclass }}"></class-ref>
540 </template>
541 </div>
542 </div>
543 </template>
544
545 <div class="memberItem">&nbsp;</div>
546
547 <template if="{{ cls['interfaces'].length > 0 }}">
548 <div class="memberItem">
549 <div class="memberName">implements</div>
550 <div class="memberValue">
551 <template repeat="{{ interface in cls['interfaces'] }}">
552 <class-ref ref="{{ interface }}"></class-ref>
553 </template>
554 </div>
555 </div>
556 </template>
557 <template if="{{ cls.name != cls.vmName }}">
558 <div class="memberItem">
559 <div class="memberName">vm name</div>
560 <div class="memberValue">{{ cls.vmName }}</div>
561 </div>
562 </template>
452 </div> 563 </div>
453 </div> 564 </div>
565
566 <template if="{{ cls['error'] != null }}">
567 <!-- TODO(turnidge): Don't use instance-ref for error display here -->
568 <instance-ref ref="{{ cls['error'] }}"></instance-ref>
569 </template>
570
571 <hr>
572
573 <div class="content">
574 <template if="{{ cls['fields'].isNotEmpty }}">
575 fields ({{ cls['fields'].length }})
576 <curly-block>
577 <div class="memberList">
578 <template repeat="{{ field in cls['fields'] }}">
579 <div class="memberItem">
580 <div class="memberName">
581 <field-ref ref="{{ field }}"></field-ref>
582 </div>
583 <div class="memberValue">
584 <template if="{{ field['value'] != null }}">
585 <instance-ref ref="{{ field['value'] }}"></instance-ref>
586 </template>
587 </div>
588 </div>
589 </template>
590 </div>
591 </curly-block><br>
592 </template>
593
594 <template if="{{ cls['functions'].isNotEmpty }}">
595 functions ({{ cls['functions'].length }})
596 <curly-block>
597 <div class="memberList">
598 <template repeat="{{ function in cls['functions'] }}">
599 <div class="memberItem">
600 <div class="memberValue">
601 <function-ref ref="{{ function }}" qualified="{{ false }}">
602 </function-ref>
603 </div>
604 </div>
605 </template>
606 </div>
607 </curly-block><br>
608 </template>
454 </div> 609 </div>
610
611 <hr>
612
613 <div class="content">
614 <eval-box callback="{{ eval }}"></eval-box>
615 </div>
616 <br><br><br><br>
617 <br><br><br><br>
455 </template> 618 </template>
456 619
457 </polymer-element> 620 </polymer-element>
458 <polymer-element name="code-ref" extends="service-ref"> 621 <polymer-element name="code-ref" extends="service-ref">
459 <template> 622 <template>
460 <a href="{{ url }}">{{ name }}</a> 623 <a href="{{ url }}">{{ name }}</a>
461 </template> 624 </template>
462 625
463 </polymer-element><polymer-element name="code-view" extends="observatory-element "> 626 </polymer-element><polymer-element name="code-view" extends="observatory-element ">
464 <template> 627 <template>
465 <nav-bar> 628 <nav-bar>
466 <top-nav-menu></top-nav-menu> 629 <top-nav-menu></top-nav-menu>
467 <isolate-nav-menu isolate="{{ code.isolate }}"></isolate-nav-menu> 630 <isolate-nav-menu isolate="{{ code.isolate }}"></isolate-nav-menu>
468 <nav-menu link="." anchor="{{ code.name }}" last="{{ true }}"></nav-menu> 631 <nav-menu link="." anchor="{{ code.name }}" last="{{ true }}"></nav-menu>
469 <nav-refresh callback="{{ refresh }}"></nav-refresh> 632 <nav-refresh callback="{{ refresh }}"></nav-refresh>
470 </nav-bar> 633 </nav-bar>
471 <style> 634 <style>
472 .content { 635 .content {
473 padding-left: 10%; 636 padding-left: 10%;
474 font: 400 14px 'Montserrat', sans-serif; 637 font: 400 14px 'Montserrat', sans-serif;
475 } 638 }
476 h1 { 639 h1 {
477 font: 400 18px 'Montserrat', sans-serif; 640 font: 400 18px 'Montserrat', sans-serif;
478 } 641 }
479 .member, .memberHeader { 642 .memberList {
643 display: table;
644 }
645 .memberItem {
646 display: table-row;
647 }
648 .memberName, .memberValue {
649 display: table-cell;
480 vertical-align: top; 650 vertical-align: top;
481 padding: 3px 0 3px 1em; 651 padding: 3px 0 3px 1em;
482 font: 400 14px 'Montserrat', sans-serif; 652 font: 400 14px 'Montserrat', sans-serif;
483 } 653 }
484 .monospace { 654 .monospace {
485 font-family: consolas, courier, monospace; 655 font-family: consolas, courier, monospace;
486 font-size: 1em; 656 font-size: 1em;
487 line-height: 1.2em; 657 line-height: 1.2em;
488 white-space: nowrap; 658 white-space: nowrap;
489 } 659 }
490 </style> 660 </style>
491 <div class="content"> 661 <div class="content">
492 <h1>Code for {{ code.name }}</h1> 662 <h1>Code for {{ code.name }}</h1>
493 <table> 663 <div class="memberList">
494 <tbody><tr> 664 <div class="memberItem">
495 <td class="memberHeader">kind</td> 665 <div class="memberName">kind</div>
496 <td class="member">{{code.kind}}</td> 666 <div class="memberValue">{{code.kind}}</div>
497 </tr> 667 </div>
498 <tr> 668 <div class="memberItem">
499 <td class="memberHeader">function</td> 669 <div class="memberName">function</div>
500 <td class="member"> 670 <div class="memberValue">
501 <function-ref ref="{{code.function}}"> 671 <function-ref ref="{{code.function}}">
502 </function-ref> 672 </function-ref>
503 </td> 673 </div>
504 </tr> 674 </div>
505 <tr> 675 <div class="memberItem">
506 <td class="memberHeader">Inclusive</td> 676 <div class="memberName">Inclusive</div>
507 <td class="member">{{ code.formattedInclusiveTicks }}</td> 677 <div class="memberValue">{{ code.formattedInclusiveTicks }}</div>
508 </tr> 678 </div>
509 <tr> 679 <div class="memberItem">
510 <td class="memberHeader">Exclusive</td> 680 <div class="memberName">Exclusive</div>
511 <td class="member">{{ code.formattedExclusiveTicks }}</td> 681 <div class="memberValue">{{ code.formattedExclusiveTicks }}</div>
512 </tr> 682 </div>
513 <tr> 683 <div class="memberItem">
514 <td class="memberHeader">Constant object pool</td> 684 <div class="memberName">Constant object pool</div>
515 <td class="member"> 685 <div class="memberValue">
516 <instance-ref ref="{{ code.objectPool }}"></instance-ref> 686 <instance-ref ref="{{ code.objectPool }}"></instance-ref>
517 </td> 687 </div>
518 </tr> 688 </div>
519 </tbody></table> 689 </div>
520 </div> 690 </div>
521 <hr> 691 <hr>
522 <div class="content"> 692 <div class="content">
523 <template if="{{ code.hasDisassembly }}"> 693 <template if="{{ code.hasDisassembly }}">
524 <div class="row"> 694 <div class="row">
525 <div class="col-md-2 memberHeader">Inclusive</div> 695 <div class="col-md-2 memberHeader">Inclusive</div>
526 <div class="col-md-2 memberHeader">Exclusive</div> 696 <div class="col-md-2 memberHeader">Exclusive</div>
527 <div class="col-md-2 memberHeader">Address</div> 697 <div class="col-md-2 memberHeader">Address</div>
528 <div class="col-md-6 memberHeader">Disassembly</div> 698 <div class="col-md-6 memberHeader">Disassembly</div>
529 </div> 699 </div>
(...skipping 15 matching lines...) Expand all
545 <div class="well row"> 715 <div class="well row">
546 <a on-click="toggleDisplay" class="btn muted unselectable"> 716 <a on-click="toggleDisplay" class="btn muted unselectable">
547 Raw message... <i class="{{ iconClass }}"></i> 717 Raw message... <i class="{{ iconClass }}"></i>
548 </a> 718 </a>
549 <div style="display: {{ displayValue }}" class="well"> 719 <div style="display: {{ displayValue }}" class="well">
550 <content></content> 720 <content></content>
551 </div> 721 </div>
552 </div> 722 </div>
553 </template> 723 </template>
554 724
555 </polymer-element><polymer-element name="eval-box" extends="observatory-element" > 725 </polymer-element><polymer-element name="error-view" extends="observatory-elemen t">
556 <template> 726 <template>
557 <style> 727 <div class="row">
558 .textbox { 728 <div class="col-md-8 col-md-offset-2">
559 width: 80ex; 729 <div class="panel panel-danger">
560 font: 400 16px 'Montserrat', sans-serif; 730 <div class="panel-heading">{{ error.kind }}</div>
561 } 731 <div class="panel-body">
562 .bigtextbox { 732 <p>{{ error.message }}</p>
563 font: 400 16px 'Montserrat', sans-serif; 733 </div>
564 }
565 .button {
566 font: 400 16px 'Montserrat', sans-serif;
567 }
568 .radios {
569 display: inline;
570 }
571 .radios label{
572 padding-left: 15px;
573 }
574 .historyExpr, .historyValue {
575 vertical-align: text-top;
576 font: 400 14px 'Montserrat', sans-serif;
577 }
578 .historyExpr a {
579 display: block;
580 color: black;
581 text-decoration: none;
582 padding: 6px 6px;
583 cursor: pointer;
584 white-space: pre-line;
585 }
586 .historyExpr a:hover {
587 background-color: #e1f5fe
588 }
589 .historyValue {
590 display: block;
591 padding: 6px 6px;
592 }
593 </style>
594 <form>
595 <template if="{{ lineMode == '1-line' }}">
596 <input class="textbox" type="text" value="{{ text }}">
597 </template>
598 <template if="{{ lineMode == 'N-line' }}">
599 <textarea class="bigtextbox" rows="5" cols="80" value="{{ text }}"></tex tarea>
600 </template>
601
602 <input class="button" type="submit" value="Evaluate" on-click="{{ eval }}" >
603 <div class="radios" on-change="{{ updateLineMode }}">
604 <label for="1-line">1-line
605 <input type="radio" name="lineMode" value="1-line" checked="">
606 </label>
607 <label for="N-line">N-line
608 <input type="radio" name="lineMode" value="N-line">
609 </label>
610 </div> 734 </div>
611 </form> 735 </div>
612 736 </div>
613 <br>
614 <template if="{{ results.isNotEmpty }}">
615 <table>
616 <tbody><tr template="" repeat="{{ result in results }}">
617 <td class="historyExpr">
618 <a class="expr" on-click="{{ selectExpr }}" expr="{{ result['expr'] }}">{{ result['expr'] }}</a>
619 </td>
620 <td class="historyValue">
621 <template if="{{ result['value'] == null }}">
622 <div style="color:#aaa;cursor:wait;">&lt;pending&gt;</div>
623 </template>
624 <template if="{{ result['value'] != null }}">
625 <instance-ref isolate="{{ isolate }}" ref="{{ result['value'] }}">
626 </instance-ref>
627 </template>
628 </td>
629 </tr>
630 </tbody></table>
631 </template>
632 </template> 737 </template>
633 </polymer-element> 738
634 739 </polymer-element><polymer-element name="field-view" extends="observatory-elemen t">
635
636 <polymer-element name="field-view" extends="observatory-element">
637 <template> 740 <template>
638 <nav-bar> 741 <nav-bar>
639 <top-nav-menu></top-nav-menu> 742 <top-nav-menu></top-nav-menu>
640 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> 743 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
641 <template if="{{ field['owner'].serviceType == 'Class' }}"> 744 <template if="{{ field['owner'].serviceType == 'Class' }}">
642 <!-- TODO(turnidge): Add library nav menu here. --> 745 <!-- TODO(turnidge): Add library nav menu here. -->
643 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> 746 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu>
644 </template> 747 </template>
645 <template if="{{ field['owner'].serviceType == 'Library' }}"> 748 <template if="{{ field['owner'].serviceType == 'Library' }}">
646 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> 749 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu>
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 </tr> 845 </tr>
743 </tbody> 846 </tbody>
744 </table> 847 </table>
745 </div> 848 </div>
746 </div> 849 </div>
747 </div> 850 </div>
748 </div> 851 </div>
749 </template> 852 </template>
750 853
751 </polymer-element> 854 </polymer-element>
752 <polymer-element name="script-ref" extends="service-ref">
753 <template>
754 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
755 </template>
756
757 </polymer-element>
758 <polymer-element name="isolate-summary" extends="observatory-element"> 855 <polymer-element name="isolate-summary" extends="observatory-element">
759 <template> 856 <template>
760 <div class="row"> 857 <div class="row">
761 <div class="col-md-1"> 858 <div class="col-md-1">
762 <img src="img/isolate_icon.png" class="img-polaroid"> 859 <img src="img/isolate_icon.png" class="img-polaroid">
763 </div> 860 </div>
764 861
765 <div class="col-md-1">{{ isolate.vmName }}</div> 862 <div class="col-md-1">{{ isolate.vmName }}</div>
766 863
767 <!-- TODO(turnidge): Use function-ref when it can take isolate param --> 864 <!-- TODO(turnidge): Use function-ref when it can take isolate param -->
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 </nav-bar> 972 </nav-bar>
876 973
877 <style> 974 <style>
878 .content { 975 .content {
879 padding-left: 10%; 976 padding-left: 10%;
880 font: 400 14px 'Montserrat', sans-serif; 977 font: 400 14px 'Montserrat', sans-serif;
881 } 978 }
882 h1 { 979 h1 {
883 font: 400 18px 'Montserrat', sans-serif; 980 font: 400 18px 'Montserrat', sans-serif;
884 } 981 }
885 .member { 982 .memberList {
983 display: table;
984 }
985 .memberItem {
986 display: table-row;
987 }
988 .memberName, .memberValue {
989 display: table-cell;
886 vertical-align: top; 990 vertical-align: top;
887 padding: 3px 0 3px 1em; 991 padding: 3px 0 3px 1em;
888 font: 400 14px 'Montserrat', sans-serif; 992 font: 400 14px 'Montserrat', sans-serif;
889 }
890 .memberBold {
891 vertical-align: top;
892 padding: 3px 0 3px 1em;
893 font: 400 14px 'Montserrat', sans-serif;
894 } 993 }
895 </style> 994 </style>
896 995
897 <template if="{{ instance['error'] != null }}"> 996 <template if="{{ instance['error'] != null }}">
898 <error-view error_obj="{{ instance['error'] }}"></error-view> 997 <error-view error_obj="{{ instance['error'] }}"></error-view>
899 </template> 998 </template>
900 999
901 <template if="{{ instance['error'] == null }}"> 1000 <template if="{{ instance['error'] == null }}">
902 <div class="content"> 1001 <div class="content">
903 <!-- TODO(turnidge): Handle null instances. --> 1002 <!-- TODO(turnidge): Handle null instances. -->
904 <h1>instance of {{ instance['class']['user_name'] }}</h1> 1003 <h1>instance of {{ instance['class']['user_name'] }}</h1>
905 <table> 1004 <div class="memberList">
906 <tbody><tr> 1005 <div class="memberItem">
907 <td class="memberBold">class</td> 1006 <div class="memberName">class</div>
908 <td class="member"> 1007 <div class="memberValue">
909 <class-ref ref="{{ instance['class'] }}"> 1008 <class-ref ref="{{ instance['class'] }}">
910 </class-ref> 1009 </class-ref>
911 </td> 1010 </div>
912 </tr> 1011 </div>
913 <tr template="" if="{{ instance['preview'] != null }}"> 1012 <template if="{{ instance['preview'] != null }}">
914 <td class="memberBold">preview</td> 1013 <div class="memberItem">
915 <td class="member">{{ instance['preview'] }}</td> 1014 <div class="memberName">preview</div>
916 </tr> 1015 <div class="memberValue">{{ instance['preview'] }}</div>
917 <tr> 1016 </div>
918 <td class="memberBold">size</td> 1017 </template>
919 <td class="member">{{ instance['size'] | formatSize }}</td> 1018 <div class="memberItem">
920 </tr> 1019 <div class="memberName">size</div>
921 </tbody></table> 1020 <div class="memberValue">{{ instance['size'] | formatSize }}</div>
1021 </div>
1022 </div>
922 </div> 1023 </div>
923 1024
924 <hr> 1025 <hr>
925 1026
926 <div class="content"> 1027 <div class="content">
927 <template if="{{ instance['fields'].isNotEmpty }}"> 1028 <template if="{{ instance['fields'].isNotEmpty }}">
928 fields ({{ instance['fields'].length }}) 1029 fields ({{ instance['fields'].length }})
929 <curly-block> 1030 <curly-block>
930 <table> 1031 <div class="memberList">
931 <tbody><tr template="" repeat="{{ field in instance['fields'] }}"> 1032 <template repeat="{{ field in instance['fields'] }}">
932 <td class="member"> 1033 <div class="memberItem">
933 <field-ref ref="{{ field['decl'] }}"></field-ref> 1034 <div class="memberName">
934 </td> 1035 <field-ref ref="{{ field['decl'] }}"></field-ref>
935 <td class="member"> 1036 </div>
936 <instance-ref ref="{{ field['value'] }}"></instance-ref> 1037 <div class="memberValue">
937 </td> 1038 <instance-ref ref="{{ field['value'] }}"></instance-ref>
938 </tr> 1039 </div>
939 </tbody></table> 1040 </div>
1041 </template>
1042 </div>
940 </curly-block> 1043 </curly-block>
941 </template> 1044 </template>
942 1045
943 <template if="{{ instance['nativeFields'].isNotEmpty }}"> 1046 <template if="{{ instance['nativeFields'].isNotEmpty }}">
944 native fields ({{ instance['nativeFields'].length }}) 1047 native fields ({{ instance['nativeFields'].length }})
945 <curly-block> 1048 <curly-block>
946 <table> 1049 <div class="memberList">
947 <tbody><tr template="" repeat="{{ field in instance['nativeFields' ] }}"> 1050 <template repeat="{{ field in instance['nativeFields'] }}">
948 <td class="member">[{{ field['index']}}]</td> 1051 <div class="memberItem">
949 <td class="member">[{{ field['value']}}]</td> 1052 <div class="memberName">[{{ field['index']}}]</div>
950 </tr> 1053 <div class="memberValue">[{{ field['value']}}]</div>
951 </tbody></table> 1054 </div>
952 </curly-block> 1055 </template>
1056 </div>
1057 </curly-block><br>
953 </template> 1058 </template>
954 1059
955 <template if="{{ instance['elements'].isNotEmpty }}"> 1060 <template if="{{ instance['elements'].isNotEmpty }}">
956 elements ({{ instance['elements'].length }}) 1061 elements ({{ instance['elements'].length }})
957 <curly-block> 1062 <curly-block>
958 <table> 1063 <div class="memberList">
959 <tbody><tr template="" repeat="{{ element in instance['elements'] }}"> 1064 <template repeat="{{ element in instance['elements'] }}">
960 <td class="member">[{{ element['index']}}]</td> 1065 <div class="memberItem">
961 <td class="member"> 1066 <div class="memberName">[{{ element['index']}}]</div>
962 <instance-ref ref="{{ element['value'] }}"> 1067 <div class="memberValue">
963 </instance-ref> 1068 <instance-ref ref="{{ element['value'] }}">
964 </td> 1069 </instance-ref>
965 </tr> 1070 </div>
966 </tbody></table> 1071 </div>
967 </curly-block> 1072 </template>
1073 </div>
1074 </curly-block><br>
968 </template> 1075 </template>
969 </div> 1076 </div>
970 1077
971 <hr> 1078 <hr>
972 1079
973 <div class="content"> 1080 <div class="content">
974 <eval-box callback="{{ eval }}"></eval-box> 1081 <eval-box callback="{{ eval }}"></eval-box>
975 </div> 1082 </div>
976 <br><br><br><br> 1083 <br><br><br><br>
977 <br><br><br><br> 1084 <br><br><br><br>
(...skipping 26 matching lines...) Expand all
1004 <td><json-view json="{{value(key)}}"></json-view></td> 1111 <td><json-view json="{{value(key)}}"></json-view></td>
1005 </tr> 1112 </tr>
1006 </tbody> 1113 </tbody>
1007 </table> 1114 </table>
1008 </template> 1115 </template>
1009 </template> 1116 </template>
1010 1117
1011 </polymer-element> 1118 </polymer-element>
1012 <polymer-element name="library-view" extends="observatory-element"> 1119 <polymer-element name="library-view" extends="observatory-element">
1013 <template> 1120 <template>
1121 <style>
1122 .content {
1123 padding-left: 10%;
1124 font: 400 14px 'Montserrat', sans-serif;
1125 }
1126 h1 {
1127 font: 400 18px 'Montserrat', sans-serif;
1128 }
1129 .memberList {
1130 display: table;
1131 }
1132 .memberItem {
1133 display: table-row;
1134 }
1135 .memberName, .memberValue {
1136 display: table-cell;
1137 vertical-align: top;
1138 padding: 3px 0 3px 1em;
1139 font: 400 14px 'Montserrat', sans-serif;
1140 }
1141 </style>
1142
1014 <nav-bar> 1143 <nav-bar>
1015 <top-nav-menu></top-nav-menu> 1144 <top-nav-menu></top-nav-menu>
1016 <isolate-nav-menu isolate="{{ library.isolate }}"></isolate-nav-menu> 1145 <isolate-nav-menu isolate="{{ library.isolate }}"></isolate-nav-menu>
1017 <library-nav-menu library="{{ library }}" last="{{ true }}"></library-nav- menu> 1146 <library-nav-menu library="{{ library }}" last="{{ true }}"></library-nav- menu>
1018 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1147 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1019 </nav-bar> 1148 </nav-bar>
1020 1149
1021 <div class="alert alert-info">Scripts</div> 1150 <div class="content">
1022 <table class="table table-hover"> 1151 <h1>
1023 <tbody> 1152 <!-- TODO(turnidge): Handle unnamed libraries -->
1024 <tr template="" repeat="{{ script in library['scripts']}}"> 1153 library {{ library.name }}
1025 <td> 1154 </h1>
1026 {{ script.kind }} 1155 <div class="memberList">
1027 </td> 1156 <div class="memberItem">
1028 <td> 1157 <div class="memberName">url</div>
1029 <script-ref ref="{{ script }}"></script-ref> 1158 <div class="memberValue">{{ library['url'] }}</div>
1030 </td> 1159 </div>
1031 </tr> 1160 <template if="{{ library['imports'].length > 0 }}">
1032 </tbody> 1161 <div class="memberItem">
1033 </table> 1162 <div class="memberName">imports</div>
1034 <div class="alert alert-info">Imported Libraries</div> 1163 <div class="memberValue">
1035 <table class="table table-hover"> 1164 <template repeat="{{ import in library['imports'] }}">
1036 <tbody> 1165 <library-ref ref="{{ import }}"></library-ref>
1037 <tr template="" repeat="{{ lib in library['libraries'] }}"> 1166 </template>
1038 <td> 1167 </div>
1039 <library-ref ref="{{ lib }}"></library-ref> 1168 </div>
1040 </td> 1169 </template>
1041 </tr> 1170 <template if="{{ library.name != library.vmName }}">
1042 </tbody> 1171 <div class="memberItem">
1043 </table> 1172 <div class="memberName">vm name</div>
1044 <div class="alert alert-info">Variables</div> 1173 <div class="memberValue">{{ library.vmName }}</div>
1045 <table class="table table-hover"> 1174 </div>
1046 <tbody> 1175 </template>
1047 <tr template="" repeat="{{ variable in library['variables'] }}"> 1176 </div>
1048 <td><field-ref ref="{{ variable }}"></field-ref></td> 1177 </div>
1049 <td><instance-ref ref="{{ variable['value'] }}"></instance-ref></td>
1050 </tr>
1051 </tbody>
1052 </table>
1053 <div class="alert alert-info">Functions</div>
1054 <table class="table table-hover">
1055 <tbody>
1056 <tr template="" repeat="{{ func in library['functions'] }}">
1057 <td>
1058 <function-ref ref="{{ func }}"></function-ref>
1059 </td>
1060 </tr>
1061 </tbody>
1062 </table>
1063 <div class="alert alert-info">Classes</div>
1064 <table class="table table-hover">
1065 <thead>
1066 <tr>
1067 <th>Name</th>
1068 <th>Internal Name</th>
1069 </tr>
1070 </thead>
1071 <tbody>
1072 <tr template="" repeat="{{ cls in library['classes'] }}">
1073 <td>
1074 <class-ref ref="{{ cls }}"></class-ref>
1075 </td>
1076 <td>
1077 <class-ref ref="{{ cls }}" internal=""></class-ref>
1078 </td>
1079 </tr>
1080 </tbody>
1081 </table>
1082 1178
1179 <hr>
1180
1181 <div class="content">
1182 <template if="{{ library['scripts'].isNotEmpty }}">
1183 scripts ({{ library['scripts'].length }})
1184 <curly-block>
1185 <div class="memberList">
1186 <template repeat="{{ script in library['scripts'] }}">
1187 <div class="memberItem">
1188 <div class="memberValue">
1189 <script-ref ref="{{ script }}"></script-ref>
1190 </div>
1191 </div>
1192 </template>
1193 </div>
1194 </curly-block><br>
1195 </template>
1196
1197 <template if="{{ library['classes'].isNotEmpty }}">
1198 classes ({{ library['classes'].length }})
1199 <curly-block>
1200 <div class="memberList">
1201 <template repeat="{{ cls in library['classes'] }}">
1202 <div class="memberItem">
1203 <div class="memberValue">
1204 <class-ref ref="{{ cls }}"></class-ref>
1205 </div>
1206 </div>
1207 </template>
1208 </div>
1209 </curly-block><br>
1210 </template>
1211
1212 <template if="{{ library['variables'].isNotEmpty }}">
1213 variables ({{ library['variables'].length }})
1214 <curly-block>
1215 <div class="memberList">
1216 <template repeat="{{ field in library['variables'] }}">
1217 <div class="memberItem">
1218 <div class="memberName">
1219 <field-ref ref="{{ field }}"></field-ref>
1220 </div>
1221 <div class="memberValue">
1222 <template if="{{ field['value'] != null }}">
1223 <instance-ref ref="{{ field['value'] }}"></instance-ref>
1224 </template>
1225 </div>
1226 </div>
1227 </template>
1228 </div>
1229 </curly-block><br>
1230 </template>
1231
1232 <template if="{{ library['functions'].isNotEmpty }}">
1233 functions ({{ library['functions'].length }})
1234 <curly-block>
1235 <div class="memberList">
1236 <template repeat="{{ function in library['functions'] }}">
1237 <div class="memberItem">
1238 <div class="memberValue">
1239 <function-ref ref="{{ function }}"></function-ref>
1240 </div>
1241 </div>
1242 </template>
1243 </div>
1244 </curly-block><br>
1245 </template>
1246 </div>
1247
1248 <hr>
1249
1250 <div class="content">
1251 <eval-box callback="{{ eval }}"></eval-box>
1252 </div>
1253 <br><br><br><br>
1254 <br><br><br><br>
1083 </template> 1255 </template>
1084 1256
1085 </polymer-element> 1257 </polymer-element>
1086 <polymer-element name="isolate-profile" extends="observatory-element"> 1258 <polymer-element name="isolate-profile" extends="observatory-element">
1087 <template> 1259 <template>
1088 <nav-bar> 1260 <nav-bar>
1089 <top-nav-menu></top-nav-menu> 1261 <top-nav-menu></top-nav-menu>
1090 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu> 1262 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu>
1091 <nav-menu link="." anchor="cpu profile" last="{{ true }}"></nav-menu> 1263 <nav-menu link="." anchor="cpu profile" last="{{ true }}"></nav-menu>
1092 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1264 <nav-refresh callback="{{ refresh }}"></nav-refresh>
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1226 </table> 1398 </table>
1227 </div> 1399 </div>
1228 </div> 1400 </div>
1229 </div> 1401 </div>
1230 </template> 1402 </template>
1231 1403
1232 </polymer-element> 1404 </polymer-element>
1233 <polymer-element name="stack-frame" extends="observatory-element"> 1405 <polymer-element name="stack-frame" extends="observatory-element">
1234 <template> 1406 <template>
1235 <style> 1407 <style>
1236 .member { 1408 .memberList {
1409 display: table;
1410 }
1411 .memberItem {
1412 display: table-row;
1413 }
1414 .memberName, .memberValue {
1415 display: table-cell;
1237 vertical-align: top; 1416 vertical-align: top;
1238 padding: 0 0 0 1em; 1417 padding: 3px 0 3px 1em;
1418 font: 400 14px 'Montserrat', sans-serif;
1239 } 1419 }
1240 </style> 1420 </style>
1241 <div class="row"> 1421 <div class="row">
1242 <div class="col-md-1"></div> 1422 <div class="col-md-1"></div>
1243 <div class="col-md-1"> 1423 <div class="col-md-1">
1244 #{{ frame['depth'] }} 1424 #{{ frame['depth'] }}
1245 </div> 1425 </div>
1246 <div class="col-md-9"> 1426 <div class="col-md-9">
1247 <function-ref ref="{{ frame['function'] }}"></function-ref> 1427 <function-ref ref="{{ frame['function'] }}"></function-ref>
1248 ( <script-ref ref="{{ frame['script'] }}" line="{{ frame['line'] }}"> 1428 ( <script-ref ref="{{ frame['script'] }}" line="{{ frame['line'] }}">
1249 </script-ref> ) 1429 </script-ref> )
1430
1250 <curly-block> 1431 <curly-block>
1251 <table> 1432 <div class="memberList">
1252 <tbody><tr template="" repeat="{{ v in frame['vars'] }}"> 1433 <template repeat="{{ v in frame['vars'] }}">
1253 <td class="member">{{ v['name']}}</td> 1434 <div class="memberItem">
1254 <td class="member"> 1435 <div class="memberName">{{ v['name']}}</div>
1255 <instance-ref ref="{{ v['value'] }}"></instance-ref> 1436 <div class="memberValue">
1256 </td> 1437 <instance-ref ref="{{ v['value'] }}"></instance-ref>
1257 </tr> 1438 </div>
1258 </tbody></table> 1439 </div>
1440 </template>
1441 </div>
1259 </curly-block> 1442 </curly-block>
1260 1443
1261 </div> 1444 </div>
1262 <div class="col-md-1"></div> 1445 <div class="col-md-1"></div>
1263 </div> 1446 </div>
1264 1447
1265 1448
1266 </template> 1449 </template>
1267 1450
1268 </polymer-element> 1451 </polymer-element>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 <template> 1490 <template>
1308 <response-viewer app="{{ app }}"></response-viewer> 1491 <response-viewer app="{{ app }}"></response-viewer>
1309 </template> 1492 </template>
1310 1493
1311 </polymer-element> 1494 </polymer-element>
1312 1495
1313 1496
1314 <observatory-application></observatory-application> 1497 <observatory-application></observatory-application>
1315 1498
1316 </body></html> 1499 </body></html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698