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

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

Issue 443713004: Rename vmservice/client to vmservice/observatory to match package name. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html><html><head>
2 <title>Dart VM Observatory</title>
3 <meta charset="utf-8">
4
5
6
7
8
9
10
11 </head>
12 <body><script src="packages/web_components/platform.js"></script>
13
14
15 <!-- unminfied for debugging:
16 <link rel="import" href="src/js/polymer/layout.html">
17 <script src="src/js/polymer/polymer.concat.js"></script>
18 -->
19
20
21
22 <style shim-shadowdom="">
23 /*******************************
24 Flex Layout
25 *******************************/
26
27 html /deep/ [layout][horizontal], html /deep/ [layout][vertical] {
28 display: -ms-flexbox;
29 display: -webkit-flex;
30 display: flex;
31 }
32
33 html /deep/ [layout][horizontal][inline], html /deep/ [layout][vertical][inline] {
34 display: -ms-inline-flexbox;
35 display: -webkit-inline-flex;
36 display: inline-flex;
37 }
38
39 html /deep/ [layout][horizontal] {
40 -ms-flex-direction: row;
41 -webkit-flex-direction: row;
42 flex-direction: row;
43 }
44
45 html /deep/ [layout][horizontal][reverse] {
46 -ms-flex-direction: row-reverse;
47 -webkit-flex-direction: row-reverse;
48 flex-direction: row-reverse;
49 }
50
51 html /deep/ [layout][vertical] {
52 -ms-flex-direction: column;
53 -webkit-flex-direction: column;
54 flex-direction: column;
55 }
56
57 html /deep/ [layout][vertical][reverse] {
58 -ms-flex-direction: column-reverse;
59 -webkit-flex-direction: column-reverse;
60 flex-direction: column-reverse;
61 }
62
63 html /deep/ [layout][wrap] {
64 -ms-flex-wrap: wrap;
65 -webkit-flex-wrap: wrap;
66 flex-wrap: wrap;
67 }
68
69 html /deep/ [layout][wrap-reverse] {
70 -ms-flex-wrap: wrap-reverse;
71 -webkit-flex-wrap: wrap-reverse;
72 flex-wrap: wrap-reverse;
73 }
74
75 html /deep/ [flex] {
76 -ms-flex: 1;
77 -webkit-flex: 1;
78 flex: 1;
79 }
80
81 html /deep/ [flex][auto] {
82 -ms-flex: 1 1 auto;
83 -webkit-flex: 1 1 auto;
84 flex: 1 1 auto;
85 }
86
87 html /deep/ [flex][none] {
88 -ms-flex: none;
89 -webkit-flex: none;
90 flex: none;
91 }
92
93 html /deep/ [flex][one] {
94 -ms-flex: 1;
95 -webkit-flex: 1;
96 flex: 1;
97 }
98
99 html /deep/ [flex][two] {
100 -ms-flex: 2;
101 -webkit-flex: 2;
102 flex: 2;
103 }
104
105 html /deep/ [flex][three] {
106 -ms-flex: 3;
107 -webkit-flex: 3;
108 flex: 3;
109 }
110
111 html /deep/ [flex][four] {
112 -ms-flex: 4;
113 -webkit-flex: 4;
114 flex: 4;
115 }
116
117 html /deep/ [flex][five] {
118 -ms-flex: 5;
119 -webkit-flex: 5;
120 flex: 5;
121 }
122
123 html /deep/ [flex][six] {
124 -ms-flex: 6;
125 -webkit-flex: 6;
126 flex: 6;
127 }
128
129 html /deep/ [flex][seven] {
130 -ms-flex: 7;
131 -webkit-flex: 7;
132 flex: 7;
133 }
134
135 html /deep/ [flex][eight] {
136 -ms-flex: 8;
137 -webkit-flex: 8;
138 flex: 8;
139 }
140
141 html /deep/ [flex][nine] {
142 -ms-flex: 9;
143 -webkit-flex: 9;
144 flex: 9;
145 }
146
147 html /deep/ [flex][ten] {
148 -ms-flex: 10;
149 -webkit-flex: 10;
150 flex: 10;
151 }
152
153 html /deep/ [flex][eleven] {
154 -ms-flex: 11;
155 -webkit-flex: 11;
156 flex: 11;
157 }
158
159 html /deep/ [flex][twelve] {
160 -ms-flex: 12;
161 -webkit-flex: 12;
162 flex: 12;
163 }
164
165 /* alignment in cross axis */
166
167 html /deep/ [layout][start] {
168 -ms-flex-align: start;
169 -webkit-align-items: flex-start;
170 align-items: flex-start;
171 }
172
173 html /deep/ [layout][center] {
174 -ms-flex-align: center;
175 -webkit-align-items: center;
176 align-items: center;
177 }
178
179 html /deep/ [layout][end] {
180 -ms-flex-align: end;
181 -webkit-align-items: flex-end;
182 align-items: flex-end;
183 }
184
185 /* alignment in main axis */
186
187 html /deep/ [layout][start-justified] {
188 -ms-flex-pack: start;
189 -webkit-justify-content: flex-start;
190 justify-content: flex-start;
191 }
192
193 html /deep/ [layout][center-justified] {
194 -ms-flex-pack: center;
195 -webkit-justify-content: center;
196 justify-content: center;
197 }
198
199 html /deep/ [layout][end-justified] {
200 -ms-flex-pack: end;
201 -webkit-justify-content: flex-end;
202 justify-content: flex-end;
203 }
204
205 html /deep/ [layout][around-justified] {
206 -ms-flex-pack: around;
207 -webkit-justify-content: space-around;
208 justify-content: space-around;
209 }
210
211 html /deep/ [layout][justified] {
212 -ms-flex-pack: justify;
213 -webkit-justify-content: space-between;
214 justify-content: space-between;
215 }
216
217 /* self alignment */
218
219 html /deep/ [self-start] {
220 -ms-align-self: flex-start;
221 -webkit-align-self: flex-start;
222 align-self: flex-start;
223 }
224
225 html /deep/ [self-center] {
226 -ms-align-self: center;
227 -webkit-align-self: center;
228 align-self: center;
229 }
230
231 html /deep/ [self-end] {
232 -ms-align-self: flex-end;
233 -webkit-align-self: flex-end;
234 align-self: flex-end;
235 }
236
237 html /deep/ [self-stretch] {
238 -ms-align-self: stretch;
239 -webkit-align-self: stretch;
240 align-self: stretch;
241 }
242
243 /*******************************
244 Other Layout
245 *******************************/
246
247 html /deep/ [block] {
248 display: block;
249 }
250
251 /* ie support for hidden */
252 html /deep/ [hidden] {
253 display: none !important;
254 }
255
256 html /deep/ [relative] {
257 position: relative;
258 }
259
260 html /deep/ [fit] {
261 position: absolute;
262 top: 0;
263 right: 0;
264 bottom: 0;
265 left: 0;
266 }
267
268 body[fullbleed] {
269 margin: 0;
270 height: 100vh;
271 }
272
273 /*******************************
274 Other
275 *******************************/
276
277 html /deep/ [segment], html /deep/ segment {
278 display: block;
279 position: relative;
280 -webkit-box-sizing: border-box;
281 -ms-box-sizing: border-box;
282 box-sizing: border-box;
283 margin: 1em 0.5em;
284 padding: 1em;
285 background-color: white;
286 -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
287 box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
288 border-radius: 5px 5px 5px 5px;
289 }
290
291 </style><script src="packages/polymer/src/js/polymer/polymer.js"></script><scrip t>
292 // TODO(sigmund): remove this script tag (dartbug.com/19650). This empty
293 // script tag is necessary to work around a bug in Chrome 36.
294 </script><script type="text/javascript" src="https://www.google.com/jsapi"></scr ipt><style>
295 /* Global styles */
296 * {
297 margin: 0;
298 padding: 0;
299 font: 400 14px 'Montserrat', sans-serif;
300 color: #333;
301 box-sizing: border-box;
302 }
303
304 .content {
305 padding-left: 10%;
306 font: 400 14px 'Montserrat', sans-serif;
307 }
308
309 .content-centered {
310 padding-left: 10%;
311 padding-right: 10%;
312 font: 400 14px 'Montserrat', sans-serif;
313 }
314
315 .content-centered-big {
316 padding-left: 5%;
317 padding-right: 5%;
318 font: 400 14px 'Montserrat', sans-serif;
319 }
320
321 h1 {
322 font: 400 18px 'Montserrat', sans-serif;
323 }
324
325 .memberList {
326 display: table;
327 }
328
329 .memberItem {
330 display: table-row;
331 }
332
333 .memberName, .memberValue {
334 display: table-cell;
335 vertical-align: top;
336 padding: 3px 0 3px 1em;
337 font: 400 14px 'Montserrat', sans-serif;
338 }
339
340 .monospace {
341 font-family: consolas, courier, monospace;
342 font-size: 1em;
343 line-height: 1.2em;
344 white-space: nowrap;
345 }
346
347 a {
348 color: #0489c3;
349 text-decoration: none;
350 }
351
352 a:hover {
353 text-decoration: underline;
354 }
355
356 em {
357 color: inherit;
358 font-style: italic;
359 }
360
361 b {
362 color: inherit;
363 font-weight: bold;
364 }
365
366 hr {
367 margin-top: 20px;
368 margin-bottom: 20px;
369 border: 0;
370 border-top: 1px solid #eee;
371 height: 0;
372 box-sizing: content-box;
373 }
374
375 .list-group {
376 padding-left: 0;
377 margin-bottom: 20px;
378 }
379
380 .list-group-item {
381 position: relative;
382 display: block;
383 padding: 10px 15px;
384 margin-bottom: -1px;
385 background-color: #fff;
386 }
387
388 .list-group-item:first-child {
389 /* rounded top corners */
390 border-top-right-radius:4px;
391 border-top-left-radius:4px;
392 }
393
394 .list-group-item:last-child {
395 margin-bottom: 0;
396 /* rounded bottom corners */
397 border-bottom-right-radius: 4px;
398 border-bottom-left-radius:4px;
399 }
400
401 /* Flex row container */
402 .flex-row {
403 display: flex;
404 flex-direction: row;
405 }
406
407 /* Flex column container */
408 .flex-column {
409 display: flex;
410 flex-direction: column;
411 }
412
413 .flex-item-fit {
414 flex-grow: 1;
415 flex-shrink: 1;
416 flex-basis: auto;
417 }
418
419 .flex-item-no-shrink {
420 flex-grow: 0;
421 flex-shrink: 0;
422 flex-basis: auto;
423 }
424
425 .flex-item-fill {
426 flex-grow: 0;
427 flex-shrink: 1; /* shrink when pressured */
428 flex-basis: 100%; /* try and take 100% */
429 }
430
431 .flex-item-fixed-1-12 {
432 flex-grow: 0;
433 flex-shrink: 0;
434 flex-basis: 8.3%;
435 }
436
437 .flex-item-fixed-2-12 {
438 flex-grow: 0;
439 flex-shrink: 0;
440 flex-basis: 16.6%;
441 }
442
443 .flex-item-fixed-4-12 {
444 flex-grow: 0;
445 flex-shrink: 0;
446 flex-basis: 33.3333%;
447 }
448
449 .flex-item-fixed-6-12, .flex-item-50-percent {
450 flex-grow: 0;
451 flex-shrink: 0;
452 flex-basis: 50%;
453 }
454
455 .flex-item-fixed-8-12 {
456 flex-grow: 0;
457 flex-shrink: 0;
458 flex-basis: 66.6666%;
459 }
460
461 .flex-item-fixed-9-12 {
462 flex-grow: 0;
463 flex-shrink: 0;
464 flex-basis: 75%;
465 }
466
467
468 .flex-item-fixed-12-12 {
469 flex-grow: 0;
470 flex-shrink: 0;
471 flex-basis: 100%;
472 }
473
474 .flex-item-10-percent {
475 flex-grow: 0;
476 flex-shrink: 0;
477 flex-basis: 10%;
478 }
479
480 .flex-item-15-percent {
481 flex-grow: 0;
482 flex-shrink: 0;
483 flex-basis: 15%;
484 }
485
486 .flex-item-20-percent {
487 flex-grow: 0;
488 flex-shrink: 0;
489 flex-basis: 20%;
490 }
491
492 .flex-item-30-percent {
493 flex-grow: 0;
494 flex-shrink: 0;
495 flex-basis: 30%;
496 }
497
498 .flex-item-40-percent {
499 flex-grow: 0;
500 flex-shrink: 0;
501 flex-basis: 40%;
502 }
503
504 .flex-item-50-percent {
505 flex-grow: 0;
506 flex-shrink: 0;
507 flex-basis: 50%;
508 }
509
510 .flex-item-60-percent {
511 flex-grow: 0;
512 flex-shrink: 0;
513 flex-basis: 60%;
514 }
515
516 .flex-item-70-percent {
517 flex-grow: 0;
518 flex-shrink: 0;
519 flex-basis: 70%;
520 }
521
522 .flex-item-80-percent {
523 flex-grow: 0;
524 flex-shrink: 0;
525 flex-basis: 80%;
526 }
527
528 .well {
529 min-height: 20px;
530 padding: 19px;
531 margin-bottom: 20px;
532 background-color: #f5f5f5;
533 border: 1px solid #e3e3e3;
534 border-radius: 4px;
535 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
536 }
537
538 .break-wrap {
539 word-wrap: break-word;
540 }
541 </style>
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592 <polymer-element name="curly-block">
593 <template>
594 <style>
595 .idle {
596 display: inline-block;
597 color: #0489c3;
598 cursor: pointer;
599 }
600 .busy {
601 display: inline-block;
602 color: white;
603 cursor: wait;
604 }
605 </style>
606 <template if="{{ expanded }}">
607 <template if="{{ busy }}">
608 {<div class="busy">&nbsp;&nbsp;⊟&nbsp;&nbsp;</div>
609 <br>
610 <content></content>
611 }
612 </template>
613 <template if="{{ !busy }}">
614 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊟&nbsp;& nbsp;</div></a>
615 <br>
616 <content></content>
617 }
618 </template>
619 </template>
620
621 <template if="{{ !expanded }}">
622 <template if="{{ busy }}">
623 {<div class="busy">&nbsp;&nbsp;⊞&nbsp;&nbsp;</div>}
624 </template>
625 <template if="{{ !busy }}">
626 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊞&nbsp;& nbsp;</div></a>}
627 </template>
628 </template>
629 </template>
630 </polymer-element>
631
632
633
634
635 <polymer-element name="observatory-element">
636 </polymer-element>
637
638
639
640
641 <polymer-element name="service-ref" extends="observatory-element">
642 </polymer-element>
643
644 <polymer-element name="instance-ref" extends="service-ref">
645 <template>
646 <style>
647 /* Global styles */
648 * {
649 margin: 0;
650 padding: 0;
651 font: 400 14px 'Montserrat', sans-serif;
652 color: #333;
653 box-sizing: border-box;
654 }
655
656 .content {
657 padding-left: 10%;
658 font: 400 14px 'Montserrat', sans-serif;
659 }
660
661 .content-centered {
662 padding-left: 10%;
663 padding-right: 10%;
664 font: 400 14px 'Montserrat', sans-serif;
665 }
666
667 .content-centered-big {
668 padding-left: 5%;
669 padding-right: 5%;
670 font: 400 14px 'Montserrat', sans-serif;
671 }
672
673 h1 {
674 font: 400 18px 'Montserrat', sans-serif;
675 }
676
677 .memberList {
678 display: table;
679 }
680
681 .memberItem {
682 display: table-row;
683 }
684
685 .memberName, .memberValue {
686 display: table-cell;
687 vertical-align: top;
688 padding: 3px 0 3px 1em;
689 font: 400 14px 'Montserrat', sans-serif;
690 }
691
692 .monospace {
693 font-family: consolas, courier, monospace;
694 font-size: 1em;
695 line-height: 1.2em;
696 white-space: nowrap;
697 }
698
699 a {
700 color: #0489c3;
701 text-decoration: none;
702 }
703
704 a:hover {
705 text-decoration: underline;
706 }
707
708 em {
709 color: inherit;
710 font-style: italic;
711 }
712
713 b {
714 color: inherit;
715 font-weight: bold;
716 }
717
718 hr {
719 margin-top: 20px;
720 margin-bottom: 20px;
721 border: 0;
722 border-top: 1px solid #eee;
723 height: 0;
724 box-sizing: content-box;
725 }
726
727 .list-group {
728 padding-left: 0;
729 margin-bottom: 20px;
730 }
731
732 .list-group-item {
733 position: relative;
734 display: block;
735 padding: 10px 15px;
736 margin-bottom: -1px;
737 background-color: #fff;
738 }
739
740 .list-group-item:first-child {
741 /* rounded top corners */
742 border-top-right-radius:4px;
743 border-top-left-radius:4px;
744 }
745
746 .list-group-item:last-child {
747 margin-bottom: 0;
748 /* rounded bottom corners */
749 border-bottom-right-radius: 4px;
750 border-bottom-left-radius:4px;
751 }
752
753 /* Flex row container */
754 .flex-row {
755 display: flex;
756 flex-direction: row;
757 }
758
759 /* Flex column container */
760 .flex-column {
761 display: flex;
762 flex-direction: column;
763 }
764
765 .flex-item-fit {
766 flex-grow: 1;
767 flex-shrink: 1;
768 flex-basis: auto;
769 }
770
771 .flex-item-no-shrink {
772 flex-grow: 0;
773 flex-shrink: 0;
774 flex-basis: auto;
775 }
776
777 .flex-item-fill {
778 flex-grow: 0;
779 flex-shrink: 1; /* shrink when pressured */
780 flex-basis: 100%; /* try and take 100% */
781 }
782
783 .flex-item-fixed-1-12 {
784 flex-grow: 0;
785 flex-shrink: 0;
786 flex-basis: 8.3%;
787 }
788
789 .flex-item-fixed-2-12 {
790 flex-grow: 0;
791 flex-shrink: 0;
792 flex-basis: 16.6%;
793 }
794
795 .flex-item-fixed-4-12 {
796 flex-grow: 0;
797 flex-shrink: 0;
798 flex-basis: 33.3333%;
799 }
800
801 .flex-item-fixed-6-12, .flex-item-50-percent {
802 flex-grow: 0;
803 flex-shrink: 0;
804 flex-basis: 50%;
805 }
806
807 .flex-item-fixed-8-12 {
808 flex-grow: 0;
809 flex-shrink: 0;
810 flex-basis: 66.6666%;
811 }
812
813 .flex-item-fixed-9-12 {
814 flex-grow: 0;
815 flex-shrink: 0;
816 flex-basis: 75%;
817 }
818
819
820 .flex-item-fixed-12-12 {
821 flex-grow: 0;
822 flex-shrink: 0;
823 flex-basis: 100%;
824 }
825
826 .flex-item-10-percent {
827 flex-grow: 0;
828 flex-shrink: 0;
829 flex-basis: 10%;
830 }
831
832 .flex-item-15-percent {
833 flex-grow: 0;
834 flex-shrink: 0;
835 flex-basis: 15%;
836 }
837
838 .flex-item-20-percent {
839 flex-grow: 0;
840 flex-shrink: 0;
841 flex-basis: 20%;
842 }
843
844 .flex-item-30-percent {
845 flex-grow: 0;
846 flex-shrink: 0;
847 flex-basis: 30%;
848 }
849
850 .flex-item-40-percent {
851 flex-grow: 0;
852 flex-shrink: 0;
853 flex-basis: 40%;
854 }
855
856 .flex-item-50-percent {
857 flex-grow: 0;
858 flex-shrink: 0;
859 flex-basis: 50%;
860 }
861
862 .flex-item-60-percent {
863 flex-grow: 0;
864 flex-shrink: 0;
865 flex-basis: 60%;
866 }
867
868 .flex-item-70-percent {
869 flex-grow: 0;
870 flex-shrink: 0;
871 flex-basis: 70%;
872 }
873
874 .flex-item-80-percent {
875 flex-grow: 0;
876 flex-shrink: 0;
877 flex-basis: 80%;
878 }
879
880 .well {
881 min-height: 20px;
882 padding: 19px;
883 margin-bottom: 20px;
884 background-color: #f5f5f5;
885 border: 1px solid #e3e3e3;
886 border-radius: 4px;
887 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
888 }
889
890 .break-wrap {
891 word-wrap: break-word;
892 }
893 </style>
894 <style>
895 .errorBox {
896 background-color: #f5f5f5;
897 border: 1px solid #ccc;
898 padding: 10px;
899 font-family: consolas, courier, monospace;
900 font-size: 1em;
901 line-height: 1.2em;
902 white-space: pre;
903 }
904 </style>
905 <span>
906 <template if="{{ isError(ref.serviceType) }}">
907 <pre class="errorBox">{{ ref.message }}</pre>
908 </template>
909
910 <template if="{{ isUnexpected(ref.serviceType) }}">
911 unexpected reference type &lt;{{ ref.serviceType }}&gt;
912 </template>
913
914 <template if="{{ isNull(ref.serviceType) }}">
915 <div title="{{ hoverText }}">{{ ref['valueAsString'] }}</div>
916 </template>
917
918 <template if="{{ (isString(ref.serviceType) ||
919 isBool(ref.serviceType) ||
920 isInt(ref.serviceType)) ||
921 isDouble(ref.serviceType)) }}">
922 <a on-click="{{ goto }}" href="{{ url }}">{{ ref['valueAsString'] }}</a>
923 </template>
924
925 <template if="{{ (isType(ref.serviceType)) }}">
926 <a on-click="{{ goto }}" href="{{ url }}">{{ ref['user_name'] }}</a>
927 </template>
928
929 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
930 ref['closureFunc'] != null}}">
931 <a on-click="{{ goto }}" href="{{ url }}">
932 <!-- TODO(turnidge): Switch this to fully-qualified function -->
933 {{ ref['closureFunc'].name }}
934 </a>
935 </template>
936
937 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
938 ref['closureFunc'] == null}}">
939 <a on-click="{{ goto }}" href="{{ url }}"><em>{{ ref['class'].name }}</e m></a>
940 <curly-block callback="{{ expander() }}">
941 <div class="memberList">
942 <template repeat="{{ field in ref['fields'] }}">
943 <div class="memberItem">
944 <div class="memberName">
945 {{ field['decl']['user_name'] }}
946 </div>
947 <div class="memberValue">
948 <instance-ref ref="{{ field['value'] }}"></instance-ref>
949 </div>
950 </div>
951 </template>
952 </div>
953 </curly-block>
954 </template>
955
956 <template if="{{ isList(ref.serviceType) }}">
957 <a on-click="{{ goto }}" href="{{ url }}"><em>{{ ref['class'].name }}</e m> ({{ ref['length']}})</a>
958 <curly-block callback="{{ expander() }}">
959 <div class="memberList">
960 <template repeat="{{ element in ref['elements'] }}">
961 <div class="memberItem">
962 <div class="memberName">[{{ element['index']}}]</div>
963 <div class="memberValue">
964 <instance-ref ref="{{ element['value'] }}"></instance-ref>
965 </div>
966 </div>
967 </template>
968 </div>
969 </curly-block>
970 </template>
971 </span>
972 </template>
973 </polymer-element>
974
975 <polymer-element name="action-link">
976 <template>
977 <style>
978 .idle {
979 color: #0489c3;
980 cursor: pointer;
981 text-decoration: none;
982 }
983 .idle:hover {
984 text-decoration: underline;
985 }
986 .busy {
987 color: #aaa;
988 cursor: wait;
989 text-decoration: none;
990 }
991 </style>
992
993 <template if="{{ busy }}">
994 <span class="busy">[{{ label }}]</span>
995 </template>
996 <template if="{{ !busy }}">
997 <template if="{{ color == null }}">
998 <span class="idle"><a on-click="{{ doAction }}">[{{ label }}]</a></span>
999 </template>
1000 <template if="{{ color != null }}">
1001 <span class="idle" style="color:{{ color }}"><a on-click="{{ doAction }} ">[{{ label }}]</a></span>
1002 </template>
1003 </template>
1004 </template>
1005 </polymer-element>
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016 <polymer-element name="nav-bar" extends="observatory-element">
1017 <template>
1018 <style>
1019 /* Global styles */
1020 * {
1021 margin: 0;
1022 padding: 0;
1023 font: 400 14px 'Montserrat', sans-serif;
1024 color: #333;
1025 box-sizing: border-box;
1026 }
1027
1028 .content {
1029 padding-left: 10%;
1030 font: 400 14px 'Montserrat', sans-serif;
1031 }
1032
1033 .content-centered {
1034 padding-left: 10%;
1035 padding-right: 10%;
1036 font: 400 14px 'Montserrat', sans-serif;
1037 }
1038
1039 .content-centered-big {
1040 padding-left: 5%;
1041 padding-right: 5%;
1042 font: 400 14px 'Montserrat', sans-serif;
1043 }
1044
1045 h1 {
1046 font: 400 18px 'Montserrat', sans-serif;
1047 }
1048
1049 .memberList {
1050 display: table;
1051 }
1052
1053 .memberItem {
1054 display: table-row;
1055 }
1056
1057 .memberName, .memberValue {
1058 display: table-cell;
1059 vertical-align: top;
1060 padding: 3px 0 3px 1em;
1061 font: 400 14px 'Montserrat', sans-serif;
1062 }
1063
1064 .monospace {
1065 font-family: consolas, courier, monospace;
1066 font-size: 1em;
1067 line-height: 1.2em;
1068 white-space: nowrap;
1069 }
1070
1071 a {
1072 color: #0489c3;
1073 text-decoration: none;
1074 }
1075
1076 a:hover {
1077 text-decoration: underline;
1078 }
1079
1080 em {
1081 color: inherit;
1082 font-style: italic;
1083 }
1084
1085 b {
1086 color: inherit;
1087 font-weight: bold;
1088 }
1089
1090 hr {
1091 margin-top: 20px;
1092 margin-bottom: 20px;
1093 border: 0;
1094 border-top: 1px solid #eee;
1095 height: 0;
1096 box-sizing: content-box;
1097 }
1098
1099 .list-group {
1100 padding-left: 0;
1101 margin-bottom: 20px;
1102 }
1103
1104 .list-group-item {
1105 position: relative;
1106 display: block;
1107 padding: 10px 15px;
1108 margin-bottom: -1px;
1109 background-color: #fff;
1110 }
1111
1112 .list-group-item:first-child {
1113 /* rounded top corners */
1114 border-top-right-radius:4px;
1115 border-top-left-radius:4px;
1116 }
1117
1118 .list-group-item:last-child {
1119 margin-bottom: 0;
1120 /* rounded bottom corners */
1121 border-bottom-right-radius: 4px;
1122 border-bottom-left-radius:4px;
1123 }
1124
1125 /* Flex row container */
1126 .flex-row {
1127 display: flex;
1128 flex-direction: row;
1129 }
1130
1131 /* Flex column container */
1132 .flex-column {
1133 display: flex;
1134 flex-direction: column;
1135 }
1136
1137 .flex-item-fit {
1138 flex-grow: 1;
1139 flex-shrink: 1;
1140 flex-basis: auto;
1141 }
1142
1143 .flex-item-no-shrink {
1144 flex-grow: 0;
1145 flex-shrink: 0;
1146 flex-basis: auto;
1147 }
1148
1149 .flex-item-fill {
1150 flex-grow: 0;
1151 flex-shrink: 1; /* shrink when pressured */
1152 flex-basis: 100%; /* try and take 100% */
1153 }
1154
1155 .flex-item-fixed-1-12 {
1156 flex-grow: 0;
1157 flex-shrink: 0;
1158 flex-basis: 8.3%;
1159 }
1160
1161 .flex-item-fixed-2-12 {
1162 flex-grow: 0;
1163 flex-shrink: 0;
1164 flex-basis: 16.6%;
1165 }
1166
1167 .flex-item-fixed-4-12 {
1168 flex-grow: 0;
1169 flex-shrink: 0;
1170 flex-basis: 33.3333%;
1171 }
1172
1173 .flex-item-fixed-6-12, .flex-item-50-percent {
1174 flex-grow: 0;
1175 flex-shrink: 0;
1176 flex-basis: 50%;
1177 }
1178
1179 .flex-item-fixed-8-12 {
1180 flex-grow: 0;
1181 flex-shrink: 0;
1182 flex-basis: 66.6666%;
1183 }
1184
1185 .flex-item-fixed-9-12 {
1186 flex-grow: 0;
1187 flex-shrink: 0;
1188 flex-basis: 75%;
1189 }
1190
1191
1192 .flex-item-fixed-12-12 {
1193 flex-grow: 0;
1194 flex-shrink: 0;
1195 flex-basis: 100%;
1196 }
1197
1198 .flex-item-10-percent {
1199 flex-grow: 0;
1200 flex-shrink: 0;
1201 flex-basis: 10%;
1202 }
1203
1204 .flex-item-15-percent {
1205 flex-grow: 0;
1206 flex-shrink: 0;
1207 flex-basis: 15%;
1208 }
1209
1210 .flex-item-20-percent {
1211 flex-grow: 0;
1212 flex-shrink: 0;
1213 flex-basis: 20%;
1214 }
1215
1216 .flex-item-30-percent {
1217 flex-grow: 0;
1218 flex-shrink: 0;
1219 flex-basis: 30%;
1220 }
1221
1222 .flex-item-40-percent {
1223 flex-grow: 0;
1224 flex-shrink: 0;
1225 flex-basis: 40%;
1226 }
1227
1228 .flex-item-50-percent {
1229 flex-grow: 0;
1230 flex-shrink: 0;
1231 flex-basis: 50%;
1232 }
1233
1234 .flex-item-60-percent {
1235 flex-grow: 0;
1236 flex-shrink: 0;
1237 flex-basis: 60%;
1238 }
1239
1240 .flex-item-70-percent {
1241 flex-grow: 0;
1242 flex-shrink: 0;
1243 flex-basis: 70%;
1244 }
1245
1246 .flex-item-80-percent {
1247 flex-grow: 0;
1248 flex-shrink: 0;
1249 flex-basis: 80%;
1250 }
1251
1252 .well {
1253 min-height: 20px;
1254 padding: 19px;
1255 margin-bottom: 20px;
1256 background-color: #f5f5f5;
1257 border: 1px solid #e3e3e3;
1258 border-radius: 4px;
1259 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
1260 }
1261
1262 .break-wrap {
1263 word-wrap: break-word;
1264 }
1265 </style>
1266 <style>
1267 nav {
1268 position: fixed;
1269 width: 100%;
1270 z-index: 1000;
1271 }
1272 nav ul {
1273 display: inline-table;
1274 position: relative;
1275 list-style: none;
1276 padding-left: 0;
1277 margin-left: 0;
1278 width: 100%;
1279 z-index: 1000;
1280 font: 400 16px 'Montserrat', sans-serif;
1281 color: white;
1282 background-color: #0489c3;
1283 }
1284 nav ul:after {
1285 content: ""; clear: both; display: block;
1286 }
1287 .vertical-spacer {
1288 height: 40px;
1289 background-color: #0489c3;
1290 }
1291 </style>
1292 <nav>
1293 <ul>
1294 <nav-notify events="{{ app.notifications }}"></nav-notify>
1295 <content></content>
1296 </ul>
1297 </nav>
1298 <div class="vertical-spacer">
1299 </div>
1300 <template if="{{ pad }}">
1301 <br>
1302 </template>
1303 </template>
1304 </polymer-element>
1305
1306 <polymer-element name="nav-menu" extends="observatory-element">
1307 <template>
1308 <style>
1309 .menu, .spacer {
1310 float: left;
1311 }
1312 .menu a, .spacer {
1313 display: block;
1314 padding: 12px 8px;
1315 color: White;
1316 text-decoration: none;
1317 }
1318 .menu:hover {
1319 background: #455;
1320 }
1321 .menu ul {
1322 display: none;
1323 position: absolute;
1324 top: 98%;
1325 list-style: none;
1326 margin: 0;
1327 padding: 0;
1328 width: auto;
1329 z-index: 1000;
1330 font: 400 16px 'Montserrat', sans-serif;
1331 color: white;
1332 background: #567;
1333 }
1334 .menu ul:after {
1335 content: ""; clear: both; display: block;
1336 }
1337 .menu:hover > ul {
1338 display: block;
1339 }
1340 </style>
1341
1342 <li class="menu">
1343 <a on-click="{{ goto }}" href="{{ gotoLink(link) }}">{{ anchor }}</a>
1344 <ul><content></content></ul>
1345 </li>
1346 <template if="{{ !last }}">
1347 <li class="spacer">&gt;</li>
1348 </template>
1349
1350 </template>
1351 </polymer-element>
1352
1353 <polymer-element name="nav-menu-item" extends="observatory-element">
1354 <template>
1355 <style>
1356 li {
1357 float: none;
1358 border-top: 1px solid #677;
1359 border-bottom: 1px solid #556; position: relative;
1360 }
1361 li:hover {
1362 background: #455;
1363 }
1364 li ul {
1365 display: none;
1366 position: absolute;
1367 top:0;
1368 left: 100%;
1369 list-style: none;
1370 padding: 0;
1371 margin-left: 0;
1372 width: auto;
1373 z-index: 1000;
1374 font: 400 16px 'Montserrat', sans-serif;
1375 color: white;
1376 background: #567;
1377 }
1378 li ul:after {
1379 content: ""; clear: both; display: block;
1380 }
1381 li:hover > ul {
1382 display: block;
1383 }
1384 li a {
1385 display: block;
1386 padding: 12px 12px;
1387 color: white;
1388 text-decoration: none;
1389 }
1390 </style>
1391 <li><a on-click="{{ goto }}" href="{{ gotoLink(link) }}">{{ anchor }}</a>
1392 <ul><content></content></ul>
1393 </li>
1394 </template>
1395 </polymer-element>
1396
1397 <polymer-element name="nav-refresh" extends="observatory-element">
1398 <template>
1399 <style>
1400 .active {
1401 color: #aaa;
1402 cursor: wait;
1403 }
1404 .idle {
1405 color: #000;
1406 }
1407 li {
1408 float: right;
1409 margin: 0;
1410 }
1411 li button {
1412 margin: 3px;
1413 padding: 8px;
1414 }
1415 </style>
1416 <li>
1417 <template if="{{ active }}">
1418 <button class="active" on-click="{{ buttonClick }}">{{ label }}</button>
1419 </template>
1420 <template if="{{ !active }}">
1421 <button class="idle" on-click="{{ buttonClick }}">{{ label }}</button>
1422 </template>
1423 </li>
1424 </template>
1425 </polymer-element>
1426
1427 <polymer-element name="nav-control" extends="observatory-element">
1428 <template>
1429 <style>
1430 .black {
1431 color: #000;
1432 }
1433 li {
1434 float: right;
1435 margin: 0;
1436 }
1437 button {
1438 margin: 3px;
1439 padding: 8px;
1440 }
1441 </style>
1442 <!-- Disable until issues with history in Dartium are fixed
1443 <li>
1444 <button class="black" on-click="{{ back }}">&#9664;</button>
1445 <button class="black" on-click="{{ forward }}">&#9654;</button>
1446 </li>
1447 -->
1448 </template>
1449 </polymer-element>
1450
1451 <polymer-element name="top-nav-menu">
1452 <template>
1453 <nav-menu link="/vm" anchor="Observatory" last="{{ last }}">
1454 <nav-menu-item link="/vm-connect/" anchor="Connect to a different VM"></na v-menu-item>
1455 <content></content>
1456 </nav-menu>
1457 </template>
1458 </polymer-element>
1459
1460 <polymer-element name="isolate-nav-menu" extends="observatory-element">
1461 <template>
1462 <nav-menu link="{{ hashLinkWorkaround }}" anchor="{{ isolate.name }}" last=" {{ last }}">
1463 <nav-menu-item link="{{ isolate.relativeLink('stacktrace') }}" anchor="sta ck trace"></nav-menu-item>
1464 <nav-menu-item link="{{ isolate.relativeLink('profile') }}" anchor="cpu pr ofile"></nav-menu-item>
1465 <nav-menu-item link="{{ isolate.relativeLink('allocationprofile') }}" anch or="allocation profile"></nav-menu-item>
1466 <nav-menu-item link="{{ isolate.relativeLink('heapmap') }}" anchor="heap m ap"></nav-menu-item>
1467 <nav-menu-item link="{{ isolate.relativeLink('debug/breakpoints') }}" anch or="breakpoints"></nav-menu-item>
1468 <content></content>
1469 </nav-menu>
1470 </template>
1471 </polymer-element>
1472
1473 <polymer-element name="library-nav-menu" extends="observatory-element">
1474 <template>
1475 <nav-menu link="{{ library.link }}" anchor="{{ library.name }}" last="{{ las t }}">
1476 <content></content>
1477 </nav-menu>
1478 </template>
1479 </polymer-element>
1480
1481 <polymer-element name="class-nav-menu" extends="observatory-element">
1482 <template>
1483 <nav-menu link="{{ cls.link }}" anchor="{{ cls.name }}" last="{{ last }}">
1484 <content></content>
1485 </nav-menu>
1486 </template>
1487 </polymer-element>
1488
1489 <polymer-element name="nav-notify" extends="observatory-element">
1490 <template>
1491 <style>
1492 .menu {
1493 float: right;
1494 }
1495 .menu .list {
1496 display: block;
1497 position: absolute;
1498 top: 98%;
1499 right: 0;
1500 margin: 0;
1501 padding: 0;
1502 width: auto;
1503 z-index: 1000;
1504 font: 400 12px 'Montserrat', sans-serif;
1505 color: white;
1506 background: none;
1507 }
1508 </style>
1509
1510 <div class="menu">
1511 <div class="list">
1512 <template repeat="{{ event in events }}">
1513 <nav-notify-item events="{{ events }}" event="{{ event }}">
1514 </nav-notify-item>
1515 </template>
1516 </div>
1517 </div>
1518 </template>
1519 </polymer-element>
1520
1521 <polymer-element name="nav-notify-item" extends="observatory-element">
1522 <template>
1523 <style>
1524 .item {
1525 position: relative;
1526 padding: 16px;
1527 margin-top: 10px;
1528 margin-right: 10px;
1529 padding-right: 25px;
1530 width: 200px;
1531 color: #ddd;
1532 background: rgba(0,0,0,.6);
1533 border: solid 2px white;
1534 box-shadow: 0 0 5px black;
1535 border-radius: 5px;
1536 animation: fadein 1s;
1537 }
1538
1539 @keyframes fadein {
1540 from { opacity: 0; }
1541 to { opacity: 1; }
1542 }
1543
1544 a.link {
1545 color: white;
1546 text-decoration: none;
1547 }
1548 a.link:hover {
1549 text-decoration: underline;
1550 }
1551
1552 a.boxclose {
1553 position: absolute;
1554 display: block;
1555 top: 4px;
1556 right: 4px;
1557 height: 18px;
1558 width: 18px;
1559 line-height: 16px;
1560 border-radius: 9px;
1561 color: white;
1562 font-size: 18px;
1563 cursor: pointer;
1564 text-align: center;
1565 }
1566 a.boxclose:hover {
1567 background: rgba(255,255,255,0.5);
1568 }
1569 </style>
1570 <template if="{{ event.eventType == 'IsolateInterrupted' ||
1571 event.eventType == 'BreakpointReached' ||
1572 event.eventType == 'ExceptionThrown' }}">
1573 <div class="item">
1574 Isolate
1575 <a class="link" on-click="{{ goto }}" href="{{ event.isolate.link }}">{{ event.isolate.name }}</a>
1576 is paused
1577 <template if="{{ event.breakpoint != null }}">
1578 at breakpoint
1579 </template>
1580 <template if="{{ event.eventType == 'ExceptionThrown' }}">
1581 at exception
1582 </template>
1583
1584 <br><br>
1585 <action-link callback="{{ resume }}" label="resume" color="white">
1586 </action-link>
1587 <action-link callback="{{ stepInto }}" label="step" color="white">
1588 </action-link>
1589 <action-link callback="{{ stepOver }}" label="step&nbsp;over" color="whi te"></action-link>
1590 <action-link callback="{{ stepOut }}" label="step&nbsp;out" color="white "></action-link>
1591 <a class="boxclose" on-click="{{ closeItem }}">×</a>
1592 </div>
1593 </template>
1594 </template>
1595 </polymer-element>
1596
1597
1598
1599 <polymer-element name="breakpoint-list" extends="observatory-element">
1600 <template>
1601 <style>
1602 /* Global styles */
1603 * {
1604 margin: 0;
1605 padding: 0;
1606 font: 400 14px 'Montserrat', sans-serif;
1607 color: #333;
1608 box-sizing: border-box;
1609 }
1610
1611 .content {
1612 padding-left: 10%;
1613 font: 400 14px 'Montserrat', sans-serif;
1614 }
1615
1616 .content-centered {
1617 padding-left: 10%;
1618 padding-right: 10%;
1619 font: 400 14px 'Montserrat', sans-serif;
1620 }
1621
1622 .content-centered-big {
1623 padding-left: 5%;
1624 padding-right: 5%;
1625 font: 400 14px 'Montserrat', sans-serif;
1626 }
1627
1628 h1 {
1629 font: 400 18px 'Montserrat', sans-serif;
1630 }
1631
1632 .memberList {
1633 display: table;
1634 }
1635
1636 .memberItem {
1637 display: table-row;
1638 }
1639
1640 .memberName, .memberValue {
1641 display: table-cell;
1642 vertical-align: top;
1643 padding: 3px 0 3px 1em;
1644 font: 400 14px 'Montserrat', sans-serif;
1645 }
1646
1647 .monospace {
1648 font-family: consolas, courier, monospace;
1649 font-size: 1em;
1650 line-height: 1.2em;
1651 white-space: nowrap;
1652 }
1653
1654 a {
1655 color: #0489c3;
1656 text-decoration: none;
1657 }
1658
1659 a:hover {
1660 text-decoration: underline;
1661 }
1662
1663 em {
1664 color: inherit;
1665 font-style: italic;
1666 }
1667
1668 b {
1669 color: inherit;
1670 font-weight: bold;
1671 }
1672
1673 hr {
1674 margin-top: 20px;
1675 margin-bottom: 20px;
1676 border: 0;
1677 border-top: 1px solid #eee;
1678 height: 0;
1679 box-sizing: content-box;
1680 }
1681
1682 .list-group {
1683 padding-left: 0;
1684 margin-bottom: 20px;
1685 }
1686
1687 .list-group-item {
1688 position: relative;
1689 display: block;
1690 padding: 10px 15px;
1691 margin-bottom: -1px;
1692 background-color: #fff;
1693 }
1694
1695 .list-group-item:first-child {
1696 /* rounded top corners */
1697 border-top-right-radius:4px;
1698 border-top-left-radius:4px;
1699 }
1700
1701 .list-group-item:last-child {
1702 margin-bottom: 0;
1703 /* rounded bottom corners */
1704 border-bottom-right-radius: 4px;
1705 border-bottom-left-radius:4px;
1706 }
1707
1708 /* Flex row container */
1709 .flex-row {
1710 display: flex;
1711 flex-direction: row;
1712 }
1713
1714 /* Flex column container */
1715 .flex-column {
1716 display: flex;
1717 flex-direction: column;
1718 }
1719
1720 .flex-item-fit {
1721 flex-grow: 1;
1722 flex-shrink: 1;
1723 flex-basis: auto;
1724 }
1725
1726 .flex-item-no-shrink {
1727 flex-grow: 0;
1728 flex-shrink: 0;
1729 flex-basis: auto;
1730 }
1731
1732 .flex-item-fill {
1733 flex-grow: 0;
1734 flex-shrink: 1; /* shrink when pressured */
1735 flex-basis: 100%; /* try and take 100% */
1736 }
1737
1738 .flex-item-fixed-1-12 {
1739 flex-grow: 0;
1740 flex-shrink: 0;
1741 flex-basis: 8.3%;
1742 }
1743
1744 .flex-item-fixed-2-12 {
1745 flex-grow: 0;
1746 flex-shrink: 0;
1747 flex-basis: 16.6%;
1748 }
1749
1750 .flex-item-fixed-4-12 {
1751 flex-grow: 0;
1752 flex-shrink: 0;
1753 flex-basis: 33.3333%;
1754 }
1755
1756 .flex-item-fixed-6-12, .flex-item-50-percent {
1757 flex-grow: 0;
1758 flex-shrink: 0;
1759 flex-basis: 50%;
1760 }
1761
1762 .flex-item-fixed-8-12 {
1763 flex-grow: 0;
1764 flex-shrink: 0;
1765 flex-basis: 66.6666%;
1766 }
1767
1768 .flex-item-fixed-9-12 {
1769 flex-grow: 0;
1770 flex-shrink: 0;
1771 flex-basis: 75%;
1772 }
1773
1774
1775 .flex-item-fixed-12-12 {
1776 flex-grow: 0;
1777 flex-shrink: 0;
1778 flex-basis: 100%;
1779 }
1780
1781 .flex-item-10-percent {
1782 flex-grow: 0;
1783 flex-shrink: 0;
1784 flex-basis: 10%;
1785 }
1786
1787 .flex-item-15-percent {
1788 flex-grow: 0;
1789 flex-shrink: 0;
1790 flex-basis: 15%;
1791 }
1792
1793 .flex-item-20-percent {
1794 flex-grow: 0;
1795 flex-shrink: 0;
1796 flex-basis: 20%;
1797 }
1798
1799 .flex-item-30-percent {
1800 flex-grow: 0;
1801 flex-shrink: 0;
1802 flex-basis: 30%;
1803 }
1804
1805 .flex-item-40-percent {
1806 flex-grow: 0;
1807 flex-shrink: 0;
1808 flex-basis: 40%;
1809 }
1810
1811 .flex-item-50-percent {
1812 flex-grow: 0;
1813 flex-shrink: 0;
1814 flex-basis: 50%;
1815 }
1816
1817 .flex-item-60-percent {
1818 flex-grow: 0;
1819 flex-shrink: 0;
1820 flex-basis: 60%;
1821 }
1822
1823 .flex-item-70-percent {
1824 flex-grow: 0;
1825 flex-shrink: 0;
1826 flex-basis: 70%;
1827 }
1828
1829 .flex-item-80-percent {
1830 flex-grow: 0;
1831 flex-shrink: 0;
1832 flex-basis: 80%;
1833 }
1834
1835 .well {
1836 min-height: 20px;
1837 padding: 19px;
1838 margin-bottom: 20px;
1839 background-color: #f5f5f5;
1840 border: 1px solid #e3e3e3;
1841 border-radius: 4px;
1842 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
1843 }
1844
1845 .break-wrap {
1846 word-wrap: break-word;
1847 }
1848 </style>
1849 <nav-bar>
1850 <top-nav-menu></top-nav-menu>
1851 <isolate-nav-menu isolate="{{ msg.isolate }}"></isolate-nav-menu>
1852 <nav-menu link="{{ gotoLink(msg.isolate.relativeLink('debug/breakpoints')) }}" anchor="breakpoints" last="{{ true }}"></nav-menu>
1853 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1854 <nav-control></nav-control>
1855 </nav-bar>
1856 <template if="{{ msg['breakpoints'].isEmpty }}">
1857 <div>
1858 <div>No breakpoints</div>
1859 </div>
1860 </template>
1861 <template if="{{ msg['breakpoints'].isNotEmpty }}">
1862 <ul class="list-group">
1863 <template repeat="{{ bpt in msg['breakpoints'] }}">
1864 <li class="list-group-item">
1865 {{ bpt }}
1866 </li>
1867 </template>
1868 </ul>
1869 </template>
1870 </template>
1871 </polymer-element>
1872
1873
1874
1875
1876
1877 <polymer-element name="class-ref" extends="service-ref">
1878 <template><style>
1879 /* Global styles */
1880 * {
1881 margin: 0;
1882 padding: 0;
1883 font: 400 14px 'Montserrat', sans-serif;
1884 color: #333;
1885 box-sizing: border-box;
1886 }
1887
1888 .content {
1889 padding-left: 10%;
1890 font: 400 14px 'Montserrat', sans-serif;
1891 }
1892
1893 .content-centered {
1894 padding-left: 10%;
1895 padding-right: 10%;
1896 font: 400 14px 'Montserrat', sans-serif;
1897 }
1898
1899 .content-centered-big {
1900 padding-left: 5%;
1901 padding-right: 5%;
1902 font: 400 14px 'Montserrat', sans-serif;
1903 }
1904
1905 h1 {
1906 font: 400 18px 'Montserrat', sans-serif;
1907 }
1908
1909 .memberList {
1910 display: table;
1911 }
1912
1913 .memberItem {
1914 display: table-row;
1915 }
1916
1917 .memberName, .memberValue {
1918 display: table-cell;
1919 vertical-align: top;
1920 padding: 3px 0 3px 1em;
1921 font: 400 14px 'Montserrat', sans-serif;
1922 }
1923
1924 .monospace {
1925 font-family: consolas, courier, monospace;
1926 font-size: 1em;
1927 line-height: 1.2em;
1928 white-space: nowrap;
1929 }
1930
1931 a {
1932 color: #0489c3;
1933 text-decoration: none;
1934 }
1935
1936 a:hover {
1937 text-decoration: underline;
1938 }
1939
1940 em {
1941 color: inherit;
1942 font-style: italic;
1943 }
1944
1945 b {
1946 color: inherit;
1947 font-weight: bold;
1948 }
1949
1950 hr {
1951 margin-top: 20px;
1952 margin-bottom: 20px;
1953 border: 0;
1954 border-top: 1px solid #eee;
1955 height: 0;
1956 box-sizing: content-box;
1957 }
1958
1959 .list-group {
1960 padding-left: 0;
1961 margin-bottom: 20px;
1962 }
1963
1964 .list-group-item {
1965 position: relative;
1966 display: block;
1967 padding: 10px 15px;
1968 margin-bottom: -1px;
1969 background-color: #fff;
1970 }
1971
1972 .list-group-item:first-child {
1973 /* rounded top corners */
1974 border-top-right-radius:4px;
1975 border-top-left-radius:4px;
1976 }
1977
1978 .list-group-item:last-child {
1979 margin-bottom: 0;
1980 /* rounded bottom corners */
1981 border-bottom-right-radius: 4px;
1982 border-bottom-left-radius:4px;
1983 }
1984
1985 /* Flex row container */
1986 .flex-row {
1987 display: flex;
1988 flex-direction: row;
1989 }
1990
1991 /* Flex column container */
1992 .flex-column {
1993 display: flex;
1994 flex-direction: column;
1995 }
1996
1997 .flex-item-fit {
1998 flex-grow: 1;
1999 flex-shrink: 1;
2000 flex-basis: auto;
2001 }
2002
2003 .flex-item-no-shrink {
2004 flex-grow: 0;
2005 flex-shrink: 0;
2006 flex-basis: auto;
2007 }
2008
2009 .flex-item-fill {
2010 flex-grow: 0;
2011 flex-shrink: 1; /* shrink when pressured */
2012 flex-basis: 100%; /* try and take 100% */
2013 }
2014
2015 .flex-item-fixed-1-12 {
2016 flex-grow: 0;
2017 flex-shrink: 0;
2018 flex-basis: 8.3%;
2019 }
2020
2021 .flex-item-fixed-2-12 {
2022 flex-grow: 0;
2023 flex-shrink: 0;
2024 flex-basis: 16.6%;
2025 }
2026
2027 .flex-item-fixed-4-12 {
2028 flex-grow: 0;
2029 flex-shrink: 0;
2030 flex-basis: 33.3333%;
2031 }
2032
2033 .flex-item-fixed-6-12, .flex-item-50-percent {
2034 flex-grow: 0;
2035 flex-shrink: 0;
2036 flex-basis: 50%;
2037 }
2038
2039 .flex-item-fixed-8-12 {
2040 flex-grow: 0;
2041 flex-shrink: 0;
2042 flex-basis: 66.6666%;
2043 }
2044
2045 .flex-item-fixed-9-12 {
2046 flex-grow: 0;
2047 flex-shrink: 0;
2048 flex-basis: 75%;
2049 }
2050
2051
2052 .flex-item-fixed-12-12 {
2053 flex-grow: 0;
2054 flex-shrink: 0;
2055 flex-basis: 100%;
2056 }
2057
2058 .flex-item-10-percent {
2059 flex-grow: 0;
2060 flex-shrink: 0;
2061 flex-basis: 10%;
2062 }
2063
2064 .flex-item-15-percent {
2065 flex-grow: 0;
2066 flex-shrink: 0;
2067 flex-basis: 15%;
2068 }
2069
2070 .flex-item-20-percent {
2071 flex-grow: 0;
2072 flex-shrink: 0;
2073 flex-basis: 20%;
2074 }
2075
2076 .flex-item-30-percent {
2077 flex-grow: 0;
2078 flex-shrink: 0;
2079 flex-basis: 30%;
2080 }
2081
2082 .flex-item-40-percent {
2083 flex-grow: 0;
2084 flex-shrink: 0;
2085 flex-basis: 40%;
2086 }
2087
2088 .flex-item-50-percent {
2089 flex-grow: 0;
2090 flex-shrink: 0;
2091 flex-basis: 50%;
2092 }
2093
2094 .flex-item-60-percent {
2095 flex-grow: 0;
2096 flex-shrink: 0;
2097 flex-basis: 60%;
2098 }
2099
2100 .flex-item-70-percent {
2101 flex-grow: 0;
2102 flex-shrink: 0;
2103 flex-basis: 70%;
2104 }
2105
2106 .flex-item-80-percent {
2107 flex-grow: 0;
2108 flex-shrink: 0;
2109 flex-basis: 80%;
2110 }
2111
2112 .well {
2113 min-height: 20px;
2114 padding: 19px;
2115 margin-bottom: 20px;
2116 background-color: #f5f5f5;
2117 border: 1px solid #e3e3e3;
2118 border-radius: 4px;
2119 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
2120 }
2121
2122 .break-wrap {
2123 word-wrap: break-word;
2124 }
2125 </style><a on-click="{{ goto }}" title="{{ hoverText }}" href="{{ url }}">{{ nam e }}</a></template>
2126 </polymer-element>
2127
2128
2129
2130
2131
2132
2133
2134 <polymer-element name="class-tree" extends="observatory-element">
2135 <template>
2136 <style>
2137 /* Global styles */
2138 * {
2139 margin: 0;
2140 padding: 0;
2141 font: 400 14px 'Montserrat', sans-serif;
2142 color: #333;
2143 box-sizing: border-box;
2144 }
2145
2146 .content {
2147 padding-left: 10%;
2148 font: 400 14px 'Montserrat', sans-serif;
2149 }
2150
2151 .content-centered {
2152 padding-left: 10%;
2153 padding-right: 10%;
2154 font: 400 14px 'Montserrat', sans-serif;
2155 }
2156
2157 .content-centered-big {
2158 padding-left: 5%;
2159 padding-right: 5%;
2160 font: 400 14px 'Montserrat', sans-serif;
2161 }
2162
2163 h1 {
2164 font: 400 18px 'Montserrat', sans-serif;
2165 }
2166
2167 .memberList {
2168 display: table;
2169 }
2170
2171 .memberItem {
2172 display: table-row;
2173 }
2174
2175 .memberName, .memberValue {
2176 display: table-cell;
2177 vertical-align: top;
2178 padding: 3px 0 3px 1em;
2179 font: 400 14px 'Montserrat', sans-serif;
2180 }
2181
2182 .monospace {
2183 font-family: consolas, courier, monospace;
2184 font-size: 1em;
2185 line-height: 1.2em;
2186 white-space: nowrap;
2187 }
2188
2189 a {
2190 color: #0489c3;
2191 text-decoration: none;
2192 }
2193
2194 a:hover {
2195 text-decoration: underline;
2196 }
2197
2198 em {
2199 color: inherit;
2200 font-style: italic;
2201 }
2202
2203 b {
2204 color: inherit;
2205 font-weight: bold;
2206 }
2207
2208 hr {
2209 margin-top: 20px;
2210 margin-bottom: 20px;
2211 border: 0;
2212 border-top: 1px solid #eee;
2213 height: 0;
2214 box-sizing: content-box;
2215 }
2216
2217 .list-group {
2218 padding-left: 0;
2219 margin-bottom: 20px;
2220 }
2221
2222 .list-group-item {
2223 position: relative;
2224 display: block;
2225 padding: 10px 15px;
2226 margin-bottom: -1px;
2227 background-color: #fff;
2228 }
2229
2230 .list-group-item:first-child {
2231 /* rounded top corners */
2232 border-top-right-radius:4px;
2233 border-top-left-radius:4px;
2234 }
2235
2236 .list-group-item:last-child {
2237 margin-bottom: 0;
2238 /* rounded bottom corners */
2239 border-bottom-right-radius: 4px;
2240 border-bottom-left-radius:4px;
2241 }
2242
2243 /* Flex row container */
2244 .flex-row {
2245 display: flex;
2246 flex-direction: row;
2247 }
2248
2249 /* Flex column container */
2250 .flex-column {
2251 display: flex;
2252 flex-direction: column;
2253 }
2254
2255 .flex-item-fit {
2256 flex-grow: 1;
2257 flex-shrink: 1;
2258 flex-basis: auto;
2259 }
2260
2261 .flex-item-no-shrink {
2262 flex-grow: 0;
2263 flex-shrink: 0;
2264 flex-basis: auto;
2265 }
2266
2267 .flex-item-fill {
2268 flex-grow: 0;
2269 flex-shrink: 1; /* shrink when pressured */
2270 flex-basis: 100%; /* try and take 100% */
2271 }
2272
2273 .flex-item-fixed-1-12 {
2274 flex-grow: 0;
2275 flex-shrink: 0;
2276 flex-basis: 8.3%;
2277 }
2278
2279 .flex-item-fixed-2-12 {
2280 flex-grow: 0;
2281 flex-shrink: 0;
2282 flex-basis: 16.6%;
2283 }
2284
2285 .flex-item-fixed-4-12 {
2286 flex-grow: 0;
2287 flex-shrink: 0;
2288 flex-basis: 33.3333%;
2289 }
2290
2291 .flex-item-fixed-6-12, .flex-item-50-percent {
2292 flex-grow: 0;
2293 flex-shrink: 0;
2294 flex-basis: 50%;
2295 }
2296
2297 .flex-item-fixed-8-12 {
2298 flex-grow: 0;
2299 flex-shrink: 0;
2300 flex-basis: 66.6666%;
2301 }
2302
2303 .flex-item-fixed-9-12 {
2304 flex-grow: 0;
2305 flex-shrink: 0;
2306 flex-basis: 75%;
2307 }
2308
2309
2310 .flex-item-fixed-12-12 {
2311 flex-grow: 0;
2312 flex-shrink: 0;
2313 flex-basis: 100%;
2314 }
2315
2316 .flex-item-10-percent {
2317 flex-grow: 0;
2318 flex-shrink: 0;
2319 flex-basis: 10%;
2320 }
2321
2322 .flex-item-15-percent {
2323 flex-grow: 0;
2324 flex-shrink: 0;
2325 flex-basis: 15%;
2326 }
2327
2328 .flex-item-20-percent {
2329 flex-grow: 0;
2330 flex-shrink: 0;
2331 flex-basis: 20%;
2332 }
2333
2334 .flex-item-30-percent {
2335 flex-grow: 0;
2336 flex-shrink: 0;
2337 flex-basis: 30%;
2338 }
2339
2340 .flex-item-40-percent {
2341 flex-grow: 0;
2342 flex-shrink: 0;
2343 flex-basis: 40%;
2344 }
2345
2346 .flex-item-50-percent {
2347 flex-grow: 0;
2348 flex-shrink: 0;
2349 flex-basis: 50%;
2350 }
2351
2352 .flex-item-60-percent {
2353 flex-grow: 0;
2354 flex-shrink: 0;
2355 flex-basis: 60%;
2356 }
2357
2358 .flex-item-70-percent {
2359 flex-grow: 0;
2360 flex-shrink: 0;
2361 flex-basis: 70%;
2362 }
2363
2364 .flex-item-80-percent {
2365 flex-grow: 0;
2366 flex-shrink: 0;
2367 flex-basis: 80%;
2368 }
2369
2370 .well {
2371 min-height: 20px;
2372 padding: 19px;
2373 margin-bottom: 20px;
2374 background-color: #f5f5f5;
2375 border: 1px solid #e3e3e3;
2376 border-radius: 4px;
2377 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
2378 }
2379
2380 .break-wrap {
2381 word-wrap: break-word;
2382 }
2383 </style>
2384 <style>
2385 .table {
2386 border-collapse: collapse!important;
2387 width: 100%;
2388 margin-bottom: 20px
2389 }
2390 .table thead > tr > th,
2391 .table tbody > tr > th,
2392 .table tfoot > tr > th,
2393 .table thead > tr > td,
2394 .table tbody > tr > td,
2395 .table tfoot > tr > td {
2396 padding: 8px;
2397 vertical-align: top;
2398 }
2399 .table thead > tr > th {
2400 vertical-align: bottom;
2401 text-align: left;
2402 border-bottom:2px solid #ddd;
2403 }
2404
2405 tr:hover > td {
2406 background-color: #FFF3E3;
2407 }
2408 .rowColor0 {
2409 background-color: #FFE9CC;
2410 }
2411 .rowColor1 {
2412 background-color: #FFDEB2;
2413 }
2414 .rowColor2 {
2415 background-color: #FFD399;
2416 }
2417 .rowColor3 {
2418 background-color: #FFC87F;
2419 }
2420 .rowColor4 {
2421 background-color: #FFBD66;
2422 }
2423 .rowColor5 {
2424 background-color: #FFB24C;
2425 }
2426 .rowColor6 {
2427 background-color: #FFA733;
2428 }
2429 .rowColor7 {
2430 background-color: #FF9C19;
2431 }
2432 .rowColor8 {
2433 background-color: #FF9100;
2434 }
2435
2436 .tooltip {
2437 display: block;
2438 position: absolute;
2439 visibility: hidden;
2440 opacity: 0;
2441 transition: visibility 0s linear 0.5s;
2442 transition: opacity .4s ease-in-out;
2443 }
2444
2445 tr:hover .tooltip {
2446 display: block;
2447 position: absolute;
2448 top: 100%;
2449 right: 100%;
2450 visibility: visible;
2451 z-index: 999;
2452 width: 400px;
2453 color: #ffffff;
2454 background-color: #0489c3;
2455 border-top-right-radius: 8px;
2456 border-top-left-radius: 8px;
2457 border-bottom-right-radius: 8px;
2458 border-bottom-left-radius: 8px;
2459 transition: visibility 0s linear 0.5s;
2460 transition: opacity .4s ease-in-out;
2461 opacity: 1;
2462 }
2463
2464 .white {
2465 color: #ffffff;
2466 }
2467 </style>
2468 <nav-bar>
2469 <top-nav-menu last="{{ true }}"></top-nav-menu>
2470 <nav-control></nav-control>
2471 </nav-bar>
2472 <div class="content-centered">
2473 <h1>Class Hierarchy</h1>
2474 <table id="tableTree" class="table">
2475 <thead>
2476 <tr>
2477 <th>Class</th>
2478 </tr>
2479 </thead>
2480 <tbody>
2481 <tr template="" repeat="{{row in tree.rows }}">
2482 <td on-click="{{toggleExpanded}}" class="{{ coloring(row) }}" style= "{{ padding(row) }}">
2483 <span id="expand" style="{{ row.expanderStyle }}">{{ row.expander }}</span>
2484 <class-ref ref="{{ row.cls }}"></class-ref>
2485 </td>
2486 </tr>
2487 </tbody>
2488 </table>
2489 </div>
2490 </template>
2491 </polymer-element>
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511 <polymer-element name="eval-box" extends="observatory-element">
2512 <template>
2513 <style>
2514 .textbox {
2515 width: 80ex;
2516 font: 400 16px 'Montserrat', sans-serif;
2517 }
2518 .bigtextbox {
2519 font: 400 16px 'Montserrat', sans-serif;
2520 }
2521 .button {
2522 font: 400 16px 'Montserrat', sans-serif;
2523 }
2524 .radios {
2525 display: inline;
2526 }
2527 .radios label{
2528 padding-left: 15px;
2529 }
2530 .historyExpr, .historyValue {
2531 vertical-align: text-top;
2532 font: 400 14px 'Montserrat', sans-serif;
2533 }
2534 .historyExpr a {
2535 display: block;
2536 color: black;
2537 text-decoration: none;
2538 padding: 6px 6px;
2539 cursor: pointer;
2540 white-space: pre-line;
2541 }
2542 .historyExpr a:hover {
2543 background-color: #fff3e3;
2544 }
2545 .historyValue {
2546 display: block;
2547 padding: 6px 6px;
2548 }
2549 </style>
2550 <form>
2551 <template if="{{ lineMode == '1-line' }}">
2552 <input class="textbox" type="text" value="{{ text }}">
2553 </template>
2554 <template if="{{ lineMode == 'N-line' }}">
2555 <textarea class="bigtextbox" rows="5" cols="80" value="{{ text }}"></tex tarea>
2556 </template>
2557
2558 <input class="button" type="submit" value="Evaluate" on-click="{{ eval }}" >
2559 <div class="radios" on-change="{{ updateLineMode }}">
2560 <label for="1-line">1-line
2561 <input type="radio" name="lineMode" value="1-line" checked="">
2562 </label>
2563 <label for="N-line">N-line
2564 <input type="radio" name="lineMode" value="N-line">
2565 </label>
2566 </div>
2567 </form>
2568
2569 <br>
2570 <template if="{{ results.isNotEmpty }}">
2571 <table>
2572 <tbody><tr template="" repeat="{{ result in results }}">
2573 <td class="historyExpr">
2574 <a class="expr" on-click="{{ selectExpr }}" expr="{{ result['expr'] }}">{{ result['expr'] }}</a>
2575 </td>
2576 <td class="historyValue">
2577 <template if="{{ result['value'] == null }}">
2578 <div style="color:#aaa;cursor:wait;">&lt;pending&gt;</div>
2579 </template>
2580 <template if="{{ result['value'] != null }}">
2581 <instance-ref ref="{{ result['value'] }}"></instance-ref>
2582 </template>
2583 </td>
2584 </tr>
2585 </tbody></table>
2586 </template>
2587 </template>
2588 </polymer-element>
2589
2590
2591
2592
2593
2594 <polymer-element name="eval-link">
2595 <template>
2596 <style>
2597 .idle {
2598 color: #0489c3;
2599 cursor: pointer;
2600 }
2601 .busy {
2602 color: #aaa;
2603 cursor: wait;
2604 }
2605 </style>
2606
2607 <template if="{{ busy }}">
2608 <span class="busy">{{ label }}</span>
2609 </template>
2610 <template if="{{ !busy }}">
2611 <span class="idle"><a on-click="{{ evalNow }}">{{ label }}</a></span>
2612 </template>
2613 <template if="{{ result != null }}">
2614 = <instance-ref ref="{{ result }}"></instance-ref>
2615 </template>
2616 </template>
2617 </polymer-element>
2618
2619
2620
2621
2622
2623
2624
2625 <polymer-element name="field-ref" extends="service-ref">
2626 <template>
2627 <style>
2628 /* Global styles */
2629 * {
2630 margin: 0;
2631 padding: 0;
2632 font: 400 14px 'Montserrat', sans-serif;
2633 color: #333;
2634 box-sizing: border-box;
2635 }
2636
2637 .content {
2638 padding-left: 10%;
2639 font: 400 14px 'Montserrat', sans-serif;
2640 }
2641
2642 .content-centered {
2643 padding-left: 10%;
2644 padding-right: 10%;
2645 font: 400 14px 'Montserrat', sans-serif;
2646 }
2647
2648 .content-centered-big {
2649 padding-left: 5%;
2650 padding-right: 5%;
2651 font: 400 14px 'Montserrat', sans-serif;
2652 }
2653
2654 h1 {
2655 font: 400 18px 'Montserrat', sans-serif;
2656 }
2657
2658 .memberList {
2659 display: table;
2660 }
2661
2662 .memberItem {
2663 display: table-row;
2664 }
2665
2666 .memberName, .memberValue {
2667 display: table-cell;
2668 vertical-align: top;
2669 padding: 3px 0 3px 1em;
2670 font: 400 14px 'Montserrat', sans-serif;
2671 }
2672
2673 .monospace {
2674 font-family: consolas, courier, monospace;
2675 font-size: 1em;
2676 line-height: 1.2em;
2677 white-space: nowrap;
2678 }
2679
2680 a {
2681 color: #0489c3;
2682 text-decoration: none;
2683 }
2684
2685 a:hover {
2686 text-decoration: underline;
2687 }
2688
2689 em {
2690 color: inherit;
2691 font-style: italic;
2692 }
2693
2694 b {
2695 color: inherit;
2696 font-weight: bold;
2697 }
2698
2699 hr {
2700 margin-top: 20px;
2701 margin-bottom: 20px;
2702 border: 0;
2703 border-top: 1px solid #eee;
2704 height: 0;
2705 box-sizing: content-box;
2706 }
2707
2708 .list-group {
2709 padding-left: 0;
2710 margin-bottom: 20px;
2711 }
2712
2713 .list-group-item {
2714 position: relative;
2715 display: block;
2716 padding: 10px 15px;
2717 margin-bottom: -1px;
2718 background-color: #fff;
2719 }
2720
2721 .list-group-item:first-child {
2722 /* rounded top corners */
2723 border-top-right-radius:4px;
2724 border-top-left-radius:4px;
2725 }
2726
2727 .list-group-item:last-child {
2728 margin-bottom: 0;
2729 /* rounded bottom corners */
2730 border-bottom-right-radius: 4px;
2731 border-bottom-left-radius:4px;
2732 }
2733
2734 /* Flex row container */
2735 .flex-row {
2736 display: flex;
2737 flex-direction: row;
2738 }
2739
2740 /* Flex column container */
2741 .flex-column {
2742 display: flex;
2743 flex-direction: column;
2744 }
2745
2746 .flex-item-fit {
2747 flex-grow: 1;
2748 flex-shrink: 1;
2749 flex-basis: auto;
2750 }
2751
2752 .flex-item-no-shrink {
2753 flex-grow: 0;
2754 flex-shrink: 0;
2755 flex-basis: auto;
2756 }
2757
2758 .flex-item-fill {
2759 flex-grow: 0;
2760 flex-shrink: 1; /* shrink when pressured */
2761 flex-basis: 100%; /* try and take 100% */
2762 }
2763
2764 .flex-item-fixed-1-12 {
2765 flex-grow: 0;
2766 flex-shrink: 0;
2767 flex-basis: 8.3%;
2768 }
2769
2770 .flex-item-fixed-2-12 {
2771 flex-grow: 0;
2772 flex-shrink: 0;
2773 flex-basis: 16.6%;
2774 }
2775
2776 .flex-item-fixed-4-12 {
2777 flex-grow: 0;
2778 flex-shrink: 0;
2779 flex-basis: 33.3333%;
2780 }
2781
2782 .flex-item-fixed-6-12, .flex-item-50-percent {
2783 flex-grow: 0;
2784 flex-shrink: 0;
2785 flex-basis: 50%;
2786 }
2787
2788 .flex-item-fixed-8-12 {
2789 flex-grow: 0;
2790 flex-shrink: 0;
2791 flex-basis: 66.6666%;
2792 }
2793
2794 .flex-item-fixed-9-12 {
2795 flex-grow: 0;
2796 flex-shrink: 0;
2797 flex-basis: 75%;
2798 }
2799
2800
2801 .flex-item-fixed-12-12 {
2802 flex-grow: 0;
2803 flex-shrink: 0;
2804 flex-basis: 100%;
2805 }
2806
2807 .flex-item-10-percent {
2808 flex-grow: 0;
2809 flex-shrink: 0;
2810 flex-basis: 10%;
2811 }
2812
2813 .flex-item-15-percent {
2814 flex-grow: 0;
2815 flex-shrink: 0;
2816 flex-basis: 15%;
2817 }
2818
2819 .flex-item-20-percent {
2820 flex-grow: 0;
2821 flex-shrink: 0;
2822 flex-basis: 20%;
2823 }
2824
2825 .flex-item-30-percent {
2826 flex-grow: 0;
2827 flex-shrink: 0;
2828 flex-basis: 30%;
2829 }
2830
2831 .flex-item-40-percent {
2832 flex-grow: 0;
2833 flex-shrink: 0;
2834 flex-basis: 40%;
2835 }
2836
2837 .flex-item-50-percent {
2838 flex-grow: 0;
2839 flex-shrink: 0;
2840 flex-basis: 50%;
2841 }
2842
2843 .flex-item-60-percent {
2844 flex-grow: 0;
2845 flex-shrink: 0;
2846 flex-basis: 60%;
2847 }
2848
2849 .flex-item-70-percent {
2850 flex-grow: 0;
2851 flex-shrink: 0;
2852 flex-basis: 70%;
2853 }
2854
2855 .flex-item-80-percent {
2856 flex-grow: 0;
2857 flex-shrink: 0;
2858 flex-basis: 80%;
2859 }
2860
2861 .well {
2862 min-height: 20px;
2863 padding: 19px;
2864 margin-bottom: 20px;
2865 background-color: #f5f5f5;
2866 border: 1px solid #e3e3e3;
2867 border-radius: 4px;
2868 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
2869 }
2870
2871 .break-wrap {
2872 word-wrap: break-word;
2873 }
2874 </style>
2875 <div>
2876 <template if="{{ ref['static'] }}">static</template>
2877 <template if="{{ ref['final'] }}">final</template>
2878 <template if="{{ ref['const'] }}">const</template>
2879 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp;
2880 !ref['final'] &amp;&amp; !ref['const']) }}">
2881 var
2882 </template>
2883 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
2884 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref>
2885 </template>
2886 <a on-click="{{ goto }}" title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
2887 </div>
2888 </template>
2889 </polymer-element>
2890
2891
2892
2893
2894
2895
2896 <polymer-element name="function-ref" extends="service-ref">
2897 <template><style>
2898 /* Global styles */
2899 * {
2900 margin: 0;
2901 padding: 0;
2902 font: 400 14px 'Montserrat', sans-serif;
2903 color: #333;
2904 box-sizing: border-box;
2905 }
2906
2907 .content {
2908 padding-left: 10%;
2909 font: 400 14px 'Montserrat', sans-serif;
2910 }
2911
2912 .content-centered {
2913 padding-left: 10%;
2914 padding-right: 10%;
2915 font: 400 14px 'Montserrat', sans-serif;
2916 }
2917
2918 .content-centered-big {
2919 padding-left: 5%;
2920 padding-right: 5%;
2921 font: 400 14px 'Montserrat', sans-serif;
2922 }
2923
2924 h1 {
2925 font: 400 18px 'Montserrat', sans-serif;
2926 }
2927
2928 .memberList {
2929 display: table;
2930 }
2931
2932 .memberItem {
2933 display: table-row;
2934 }
2935
2936 .memberName, .memberValue {
2937 display: table-cell;
2938 vertical-align: top;
2939 padding: 3px 0 3px 1em;
2940 font: 400 14px 'Montserrat', sans-serif;
2941 }
2942
2943 .monospace {
2944 font-family: consolas, courier, monospace;
2945 font-size: 1em;
2946 line-height: 1.2em;
2947 white-space: nowrap;
2948 }
2949
2950 a {
2951 color: #0489c3;
2952 text-decoration: none;
2953 }
2954
2955 a:hover {
2956 text-decoration: underline;
2957 }
2958
2959 em {
2960 color: inherit;
2961 font-style: italic;
2962 }
2963
2964 b {
2965 color: inherit;
2966 font-weight: bold;
2967 }
2968
2969 hr {
2970 margin-top: 20px;
2971 margin-bottom: 20px;
2972 border: 0;
2973 border-top: 1px solid #eee;
2974 height: 0;
2975 box-sizing: content-box;
2976 }
2977
2978 .list-group {
2979 padding-left: 0;
2980 margin-bottom: 20px;
2981 }
2982
2983 .list-group-item {
2984 position: relative;
2985 display: block;
2986 padding: 10px 15px;
2987 margin-bottom: -1px;
2988 background-color: #fff;
2989 }
2990
2991 .list-group-item:first-child {
2992 /* rounded top corners */
2993 border-top-right-radius:4px;
2994 border-top-left-radius:4px;
2995 }
2996
2997 .list-group-item:last-child {
2998 margin-bottom: 0;
2999 /* rounded bottom corners */
3000 border-bottom-right-radius: 4px;
3001 border-bottom-left-radius:4px;
3002 }
3003
3004 /* Flex row container */
3005 .flex-row {
3006 display: flex;
3007 flex-direction: row;
3008 }
3009
3010 /* Flex column container */
3011 .flex-column {
3012 display: flex;
3013 flex-direction: column;
3014 }
3015
3016 .flex-item-fit {
3017 flex-grow: 1;
3018 flex-shrink: 1;
3019 flex-basis: auto;
3020 }
3021
3022 .flex-item-no-shrink {
3023 flex-grow: 0;
3024 flex-shrink: 0;
3025 flex-basis: auto;
3026 }
3027
3028 .flex-item-fill {
3029 flex-grow: 0;
3030 flex-shrink: 1; /* shrink when pressured */
3031 flex-basis: 100%; /* try and take 100% */
3032 }
3033
3034 .flex-item-fixed-1-12 {
3035 flex-grow: 0;
3036 flex-shrink: 0;
3037 flex-basis: 8.3%;
3038 }
3039
3040 .flex-item-fixed-2-12 {
3041 flex-grow: 0;
3042 flex-shrink: 0;
3043 flex-basis: 16.6%;
3044 }
3045
3046 .flex-item-fixed-4-12 {
3047 flex-grow: 0;
3048 flex-shrink: 0;
3049 flex-basis: 33.3333%;
3050 }
3051
3052 .flex-item-fixed-6-12, .flex-item-50-percent {
3053 flex-grow: 0;
3054 flex-shrink: 0;
3055 flex-basis: 50%;
3056 }
3057
3058 .flex-item-fixed-8-12 {
3059 flex-grow: 0;
3060 flex-shrink: 0;
3061 flex-basis: 66.6666%;
3062 }
3063
3064 .flex-item-fixed-9-12 {
3065 flex-grow: 0;
3066 flex-shrink: 0;
3067 flex-basis: 75%;
3068 }
3069
3070
3071 .flex-item-fixed-12-12 {
3072 flex-grow: 0;
3073 flex-shrink: 0;
3074 flex-basis: 100%;
3075 }
3076
3077 .flex-item-10-percent {
3078 flex-grow: 0;
3079 flex-shrink: 0;
3080 flex-basis: 10%;
3081 }
3082
3083 .flex-item-15-percent {
3084 flex-grow: 0;
3085 flex-shrink: 0;
3086 flex-basis: 15%;
3087 }
3088
3089 .flex-item-20-percent {
3090 flex-grow: 0;
3091 flex-shrink: 0;
3092 flex-basis: 20%;
3093 }
3094
3095 .flex-item-30-percent {
3096 flex-grow: 0;
3097 flex-shrink: 0;
3098 flex-basis: 30%;
3099 }
3100
3101 .flex-item-40-percent {
3102 flex-grow: 0;
3103 flex-shrink: 0;
3104 flex-basis: 40%;
3105 }
3106
3107 .flex-item-50-percent {
3108 flex-grow: 0;
3109 flex-shrink: 0;
3110 flex-basis: 50%;
3111 }
3112
3113 .flex-item-60-percent {
3114 flex-grow: 0;
3115 flex-shrink: 0;
3116 flex-basis: 60%;
3117 }
3118
3119 .flex-item-70-percent {
3120 flex-grow: 0;
3121 flex-shrink: 0;
3122 flex-basis: 70%;
3123 }
3124
3125 .flex-item-80-percent {
3126 flex-grow: 0;
3127 flex-shrink: 0;
3128 flex-basis: 80%;
3129 }
3130
3131 .well {
3132 min-height: 20px;
3133 padding: 19px;
3134 margin-bottom: 20px;
3135 background-color: #f5f5f5;
3136 border: 1px solid #e3e3e3;
3137 border-radius: 4px;
3138 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
3139 }
3140
3141 .break-wrap {
3142 word-wrap: break-word;
3143 }
3144 </style><!-- These comments are here to allow newlines.
3145 --><template if="{{ ref.isDart }}"><!--
3146 --><template if="{{ qualified &amp;&amp; ref.parent == null &amp;&amp; re f.owningClass != null }}"><!--
3147 --><class-ref ref="{{ ref.owningClass] }}"></class-ref>.</template><!--
3148 --><template if="{{ qualified &amp;&amp; ref.parent != null }}"><!--
3149 --><function-ref ref="{{ ref.parent }}" qualified="{{ true }}">
3150 </function-ref>.<!--
3151 --></template><a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a><!--
3152 --></template><template if="{{ !ref.isDart }}"><span> {{ name }}</span></templ ate></template>
3153 </polymer-element>
3154
3155
3156
3157
3158 <polymer-element name="library-ref" extends="service-ref">
3159 <template><style>
3160 /* Global styles */
3161 * {
3162 margin: 0;
3163 padding: 0;
3164 font: 400 14px 'Montserrat', sans-serif;
3165 color: #333;
3166 box-sizing: border-box;
3167 }
3168
3169 .content {
3170 padding-left: 10%;
3171 font: 400 14px 'Montserrat', sans-serif;
3172 }
3173
3174 .content-centered {
3175 padding-left: 10%;
3176 padding-right: 10%;
3177 font: 400 14px 'Montserrat', sans-serif;
3178 }
3179
3180 .content-centered-big {
3181 padding-left: 5%;
3182 padding-right: 5%;
3183 font: 400 14px 'Montserrat', sans-serif;
3184 }
3185
3186 h1 {
3187 font: 400 18px 'Montserrat', sans-serif;
3188 }
3189
3190 .memberList {
3191 display: table;
3192 }
3193
3194 .memberItem {
3195 display: table-row;
3196 }
3197
3198 .memberName, .memberValue {
3199 display: table-cell;
3200 vertical-align: top;
3201 padding: 3px 0 3px 1em;
3202 font: 400 14px 'Montserrat', sans-serif;
3203 }
3204
3205 .monospace {
3206 font-family: consolas, courier, monospace;
3207 font-size: 1em;
3208 line-height: 1.2em;
3209 white-space: nowrap;
3210 }
3211
3212 a {
3213 color: #0489c3;
3214 text-decoration: none;
3215 }
3216
3217 a:hover {
3218 text-decoration: underline;
3219 }
3220
3221 em {
3222 color: inherit;
3223 font-style: italic;
3224 }
3225
3226 b {
3227 color: inherit;
3228 font-weight: bold;
3229 }
3230
3231 hr {
3232 margin-top: 20px;
3233 margin-bottom: 20px;
3234 border: 0;
3235 border-top: 1px solid #eee;
3236 height: 0;
3237 box-sizing: content-box;
3238 }
3239
3240 .list-group {
3241 padding-left: 0;
3242 margin-bottom: 20px;
3243 }
3244
3245 .list-group-item {
3246 position: relative;
3247 display: block;
3248 padding: 10px 15px;
3249 margin-bottom: -1px;
3250 background-color: #fff;
3251 }
3252
3253 .list-group-item:first-child {
3254 /* rounded top corners */
3255 border-top-right-radius:4px;
3256 border-top-left-radius:4px;
3257 }
3258
3259 .list-group-item:last-child {
3260 margin-bottom: 0;
3261 /* rounded bottom corners */
3262 border-bottom-right-radius: 4px;
3263 border-bottom-left-radius:4px;
3264 }
3265
3266 /* Flex row container */
3267 .flex-row {
3268 display: flex;
3269 flex-direction: row;
3270 }
3271
3272 /* Flex column container */
3273 .flex-column {
3274 display: flex;
3275 flex-direction: column;
3276 }
3277
3278 .flex-item-fit {
3279 flex-grow: 1;
3280 flex-shrink: 1;
3281 flex-basis: auto;
3282 }
3283
3284 .flex-item-no-shrink {
3285 flex-grow: 0;
3286 flex-shrink: 0;
3287 flex-basis: auto;
3288 }
3289
3290 .flex-item-fill {
3291 flex-grow: 0;
3292 flex-shrink: 1; /* shrink when pressured */
3293 flex-basis: 100%; /* try and take 100% */
3294 }
3295
3296 .flex-item-fixed-1-12 {
3297 flex-grow: 0;
3298 flex-shrink: 0;
3299 flex-basis: 8.3%;
3300 }
3301
3302 .flex-item-fixed-2-12 {
3303 flex-grow: 0;
3304 flex-shrink: 0;
3305 flex-basis: 16.6%;
3306 }
3307
3308 .flex-item-fixed-4-12 {
3309 flex-grow: 0;
3310 flex-shrink: 0;
3311 flex-basis: 33.3333%;
3312 }
3313
3314 .flex-item-fixed-6-12, .flex-item-50-percent {
3315 flex-grow: 0;
3316 flex-shrink: 0;
3317 flex-basis: 50%;
3318 }
3319
3320 .flex-item-fixed-8-12 {
3321 flex-grow: 0;
3322 flex-shrink: 0;
3323 flex-basis: 66.6666%;
3324 }
3325
3326 .flex-item-fixed-9-12 {
3327 flex-grow: 0;
3328 flex-shrink: 0;
3329 flex-basis: 75%;
3330 }
3331
3332
3333 .flex-item-fixed-12-12 {
3334 flex-grow: 0;
3335 flex-shrink: 0;
3336 flex-basis: 100%;
3337 }
3338
3339 .flex-item-10-percent {
3340 flex-grow: 0;
3341 flex-shrink: 0;
3342 flex-basis: 10%;
3343 }
3344
3345 .flex-item-15-percent {
3346 flex-grow: 0;
3347 flex-shrink: 0;
3348 flex-basis: 15%;
3349 }
3350
3351 .flex-item-20-percent {
3352 flex-grow: 0;
3353 flex-shrink: 0;
3354 flex-basis: 20%;
3355 }
3356
3357 .flex-item-30-percent {
3358 flex-grow: 0;
3359 flex-shrink: 0;
3360 flex-basis: 30%;
3361 }
3362
3363 .flex-item-40-percent {
3364 flex-grow: 0;
3365 flex-shrink: 0;
3366 flex-basis: 40%;
3367 }
3368
3369 .flex-item-50-percent {
3370 flex-grow: 0;
3371 flex-shrink: 0;
3372 flex-basis: 50%;
3373 }
3374
3375 .flex-item-60-percent {
3376 flex-grow: 0;
3377 flex-shrink: 0;
3378 flex-basis: 60%;
3379 }
3380
3381 .flex-item-70-percent {
3382 flex-grow: 0;
3383 flex-shrink: 0;
3384 flex-basis: 70%;
3385 }
3386
3387 .flex-item-80-percent {
3388 flex-grow: 0;
3389 flex-shrink: 0;
3390 flex-basis: 80%;
3391 }
3392
3393 .well {
3394 min-height: 20px;
3395 padding: 19px;
3396 margin-bottom: 20px;
3397 background-color: #f5f5f5;
3398 border: 1px solid #e3e3e3;
3399 border-radius: 4px;
3400 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
3401 }
3402
3403 .break-wrap {
3404 word-wrap: break-word;
3405 }
3406 </style>
3407 <template if="{{ nameIsEmpty }}">
3408 <a on-click="{{ goto }}" href="{{ url }}">unnamed</a>
3409 </template>
3410 <template if="{{ !nameIsEmpty }}">
3411 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
3412 </template>
3413 </template>
3414 </polymer-element>
3415
3416
3417
3418
3419 <polymer-element name="script-inset" extends="observatory-element">
3420 <template>
3421 <style>
3422 .sourceInset {
3423 padding-left: 15%;
3424 padding-right: 15%;
3425 }
3426 .sourceBox {
3427 width: 100%;
3428 background-color: #f5f5f5;
3429 border: 1px solid #ccc;
3430 padding: 10px;
3431 overflow-y: auto;
3432 }
3433 .sourceTable {
3434 display: table;
3435 }
3436 .sourceRow {
3437 display: table-row;
3438 }
3439 .sourceItem, .sourceItemCurrent {
3440 display: table-cell;
3441 vertical-align: top;
3442 font: 400 14px consolas, courier, monospace;
3443 line-height: 125%;
3444 white-space: pre;
3445 }
3446 .sourceItemCurrent {
3447 background-color: #6cf;
3448 }
3449 .hitsNone, .hitsNotExecuted, .hitsExecuted {
3450 min-width: 32px;
3451 text-align: right;
3452 }
3453 .hitsNotExecuted {
3454 background-color: #e66;
3455 }
3456 .hitsExecuted {
3457 background-color: #6d6;
3458 }
3459 </style>
3460 <div class="sourceInset">
3461 <content></content>
3462 <div class="sourceBox" style="height:{{height}}">
3463 <div class="sourceTable">
3464 <template if="{{ linesReady }}">
3465 <template repeat="{{ line in lines }}">
3466 <div class="sourceRow" id="{{ makeLineId(line.line) }}">
3467 <breakpoint-toggle line="{{ line }}"></breakpoint-toggle>
3468
3469 <div class="sourceItem">&nbsp;</div>
3470
3471 <template if="{{ line.hits == null ||
3472 line.hits < 0 }}">
3473 <div class="hitsNone">{{ line.line }}</div>
3474 </template>
3475 <template if="{{ line.hits == 0 }}">
3476 <div class="hitsNotExecuted">{{ line.line }}</div>
3477 </template>
3478 <template if="{{ line.hits > 0 }}">
3479 <div class="hitsExecuted">{{ line.line }}</div>
3480 </template>
3481
3482 <div class="sourceItem">&nbsp;</div>
3483
3484 <template if="{{ line.line == currentLine }}">
3485 <div class="sourceItemCurrent">{{line.text}}</div>
3486 </template>
3487 <template if="{{ line.line != currentLine }}">
3488 <div class="sourceItem">{{line.text}}</div>
3489 </template>
3490 </div>
3491 </template>
3492 </template>
3493
3494 <template if="{{ !linesReady }}">
3495 <div class="sourceRow">
3496 <div class="sourceItem">loading...</div>
3497 </div>
3498 </template>
3499 </div>
3500 </div>
3501 </div>
3502 </template>
3503 </polymer-element>
3504
3505 <polymer-element name="breakpoint-toggle" extends="observatory-element">
3506 <template>
3507 <style>
3508 .emptyBreakpoint, .possibleBreakpoint, .busyBreakpoint, .unresolvedBreakpo int, .resolvedBreakpoint {
3509 display: table-cell;
3510 vertical-align: top;
3511 font: 400 14px consolas, courier, monospace;
3512 min-width: 1em;
3513 text-align: center;
3514 cursor: pointer;
3515 }
3516 .possibleBreakpoint {
3517 color: #e0e0e0;
3518 }
3519 .possibleBreakpoint:hover {
3520 color: white;
3521 background-color: #777;
3522 }
3523 .busyBreakpoint {
3524 color: white;
3525 background-color: black;
3526 cursor: wait;
3527 }
3528 .unresolvedBreakpoint {
3529 color: white;
3530 background-color: #cac;
3531 }
3532 .resolvedBreakpoint {
3533 color: white;
3534 background-color: #e66;
3535 }
3536 </style>
3537
3538 <template if="{{ line.possibleBpt &amp;&amp; busy}}">
3539 <div class="busyBreakpoint">B</div>
3540 </template>
3541
3542 <template if="{{ line.bpt == null &amp;&amp; !line.possibleBpt }}">
3543 <div class="emptyBreakpoint">&nbsp;</div>
3544 </template>
3545
3546 <template if="{{ line.bpt == null &amp;&amp; line.possibleBpt &amp;&amp; !bu sy}}">
3547 <div class="possibleBreakpoint">
3548 <a on-click="{{ toggleBreakpoint }}">B</a>
3549 </div>
3550 </template>
3551
3552 <template if="{{ line.bpt != null &amp;&amp; !line.bpt['resolved'] &amp;&amp ; !busy}}">
3553 <div class="unresolvedBreakpoint">
3554 <a on-click="{{ toggleBreakpoint }}">B</a>
3555 </div>
3556 </template>
3557
3558 <template if="{{ line.bpt != null &amp;&amp; line.bpt['resolved'] &amp;&amp; !busy}}">
3559 <div class="resolvedBreakpoint">
3560 <a on-click="{{ toggleBreakpoint }}">B</a>
3561 </div>
3562 </template>
3563
3564 </template>
3565 </polymer-element>
3566
3567
3568
3569
3570
3571
3572 <polymer-element name="script-ref" extends="service-ref">
3573 <template>
3574 <style>
3575 /* Global styles */
3576 * {
3577 margin: 0;
3578 padding: 0;
3579 font: 400 14px 'Montserrat', sans-serif;
3580 color: #333;
3581 box-sizing: border-box;
3582 }
3583
3584 .content {
3585 padding-left: 10%;
3586 font: 400 14px 'Montserrat', sans-serif;
3587 }
3588
3589 .content-centered {
3590 padding-left: 10%;
3591 padding-right: 10%;
3592 font: 400 14px 'Montserrat', sans-serif;
3593 }
3594
3595 .content-centered-big {
3596 padding-left: 5%;
3597 padding-right: 5%;
3598 font: 400 14px 'Montserrat', sans-serif;
3599 }
3600
3601 h1 {
3602 font: 400 18px 'Montserrat', sans-serif;
3603 }
3604
3605 .memberList {
3606 display: table;
3607 }
3608
3609 .memberItem {
3610 display: table-row;
3611 }
3612
3613 .memberName, .memberValue {
3614 display: table-cell;
3615 vertical-align: top;
3616 padding: 3px 0 3px 1em;
3617 font: 400 14px 'Montserrat', sans-serif;
3618 }
3619
3620 .monospace {
3621 font-family: consolas, courier, monospace;
3622 font-size: 1em;
3623 line-height: 1.2em;
3624 white-space: nowrap;
3625 }
3626
3627 a {
3628 color: #0489c3;
3629 text-decoration: none;
3630 }
3631
3632 a:hover {
3633 text-decoration: underline;
3634 }
3635
3636 em {
3637 color: inherit;
3638 font-style: italic;
3639 }
3640
3641 b {
3642 color: inherit;
3643 font-weight: bold;
3644 }
3645
3646 hr {
3647 margin-top: 20px;
3648 margin-bottom: 20px;
3649 border: 0;
3650 border-top: 1px solid #eee;
3651 height: 0;
3652 box-sizing: content-box;
3653 }
3654
3655 .list-group {
3656 padding-left: 0;
3657 margin-bottom: 20px;
3658 }
3659
3660 .list-group-item {
3661 position: relative;
3662 display: block;
3663 padding: 10px 15px;
3664 margin-bottom: -1px;
3665 background-color: #fff;
3666 }
3667
3668 .list-group-item:first-child {
3669 /* rounded top corners */
3670 border-top-right-radius:4px;
3671 border-top-left-radius:4px;
3672 }
3673
3674 .list-group-item:last-child {
3675 margin-bottom: 0;
3676 /* rounded bottom corners */
3677 border-bottom-right-radius: 4px;
3678 border-bottom-left-radius:4px;
3679 }
3680
3681 /* Flex row container */
3682 .flex-row {
3683 display: flex;
3684 flex-direction: row;
3685 }
3686
3687 /* Flex column container */
3688 .flex-column {
3689 display: flex;
3690 flex-direction: column;
3691 }
3692
3693 .flex-item-fit {
3694 flex-grow: 1;
3695 flex-shrink: 1;
3696 flex-basis: auto;
3697 }
3698
3699 .flex-item-no-shrink {
3700 flex-grow: 0;
3701 flex-shrink: 0;
3702 flex-basis: auto;
3703 }
3704
3705 .flex-item-fill {
3706 flex-grow: 0;
3707 flex-shrink: 1; /* shrink when pressured */
3708 flex-basis: 100%; /* try and take 100% */
3709 }
3710
3711 .flex-item-fixed-1-12 {
3712 flex-grow: 0;
3713 flex-shrink: 0;
3714 flex-basis: 8.3%;
3715 }
3716
3717 .flex-item-fixed-2-12 {
3718 flex-grow: 0;
3719 flex-shrink: 0;
3720 flex-basis: 16.6%;
3721 }
3722
3723 .flex-item-fixed-4-12 {
3724 flex-grow: 0;
3725 flex-shrink: 0;
3726 flex-basis: 33.3333%;
3727 }
3728
3729 .flex-item-fixed-6-12, .flex-item-50-percent {
3730 flex-grow: 0;
3731 flex-shrink: 0;
3732 flex-basis: 50%;
3733 }
3734
3735 .flex-item-fixed-8-12 {
3736 flex-grow: 0;
3737 flex-shrink: 0;
3738 flex-basis: 66.6666%;
3739 }
3740
3741 .flex-item-fixed-9-12 {
3742 flex-grow: 0;
3743 flex-shrink: 0;
3744 flex-basis: 75%;
3745 }
3746
3747
3748 .flex-item-fixed-12-12 {
3749 flex-grow: 0;
3750 flex-shrink: 0;
3751 flex-basis: 100%;
3752 }
3753
3754 .flex-item-10-percent {
3755 flex-grow: 0;
3756 flex-shrink: 0;
3757 flex-basis: 10%;
3758 }
3759
3760 .flex-item-15-percent {
3761 flex-grow: 0;
3762 flex-shrink: 0;
3763 flex-basis: 15%;
3764 }
3765
3766 .flex-item-20-percent {
3767 flex-grow: 0;
3768 flex-shrink: 0;
3769 flex-basis: 20%;
3770 }
3771
3772 .flex-item-30-percent {
3773 flex-grow: 0;
3774 flex-shrink: 0;
3775 flex-basis: 30%;
3776 }
3777
3778 .flex-item-40-percent {
3779 flex-grow: 0;
3780 flex-shrink: 0;
3781 flex-basis: 40%;
3782 }
3783
3784 .flex-item-50-percent {
3785 flex-grow: 0;
3786 flex-shrink: 0;
3787 flex-basis: 50%;
3788 }
3789
3790 .flex-item-60-percent {
3791 flex-grow: 0;
3792 flex-shrink: 0;
3793 flex-basis: 60%;
3794 }
3795
3796 .flex-item-70-percent {
3797 flex-grow: 0;
3798 flex-shrink: 0;
3799 flex-basis: 70%;
3800 }
3801
3802 .flex-item-80-percent {
3803 flex-grow: 0;
3804 flex-shrink: 0;
3805 flex-basis: 80%;
3806 }
3807
3808 .well {
3809 min-height: 20px;
3810 padding: 19px;
3811 margin-bottom: 20px;
3812 background-color: #f5f5f5;
3813 border: 1px solid #e3e3e3;
3814 border-radius: 4px;
3815 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
3816 }
3817
3818 .break-wrap {
3819 word-wrap: break-word;
3820 }
3821 </style>
3822 <a on-click="{{ goto }}" title="{{ hoverText }}" href="{{ url }}">{{ name }}</ a>
3823 </template>
3824 </polymer-element>
3825
3826
3827 <polymer-element name="class-view" extends="observatory-element">
3828 <template>
3829 <style>
3830 /* Global styles */
3831 * {
3832 margin: 0;
3833 padding: 0;
3834 font: 400 14px 'Montserrat', sans-serif;
3835 color: #333;
3836 box-sizing: border-box;
3837 }
3838
3839 .content {
3840 padding-left: 10%;
3841 font: 400 14px 'Montserrat', sans-serif;
3842 }
3843
3844 .content-centered {
3845 padding-left: 10%;
3846 padding-right: 10%;
3847 font: 400 14px 'Montserrat', sans-serif;
3848 }
3849
3850 .content-centered-big {
3851 padding-left: 5%;
3852 padding-right: 5%;
3853 font: 400 14px 'Montserrat', sans-serif;
3854 }
3855
3856 h1 {
3857 font: 400 18px 'Montserrat', sans-serif;
3858 }
3859
3860 .memberList {
3861 display: table;
3862 }
3863
3864 .memberItem {
3865 display: table-row;
3866 }
3867
3868 .memberName, .memberValue {
3869 display: table-cell;
3870 vertical-align: top;
3871 padding: 3px 0 3px 1em;
3872 font: 400 14px 'Montserrat', sans-serif;
3873 }
3874
3875 .monospace {
3876 font-family: consolas, courier, monospace;
3877 font-size: 1em;
3878 line-height: 1.2em;
3879 white-space: nowrap;
3880 }
3881
3882 a {
3883 color: #0489c3;
3884 text-decoration: none;
3885 }
3886
3887 a:hover {
3888 text-decoration: underline;
3889 }
3890
3891 em {
3892 color: inherit;
3893 font-style: italic;
3894 }
3895
3896 b {
3897 color: inherit;
3898 font-weight: bold;
3899 }
3900
3901 hr {
3902 margin-top: 20px;
3903 margin-bottom: 20px;
3904 border: 0;
3905 border-top: 1px solid #eee;
3906 height: 0;
3907 box-sizing: content-box;
3908 }
3909
3910 .list-group {
3911 padding-left: 0;
3912 margin-bottom: 20px;
3913 }
3914
3915 .list-group-item {
3916 position: relative;
3917 display: block;
3918 padding: 10px 15px;
3919 margin-bottom: -1px;
3920 background-color: #fff;
3921 }
3922
3923 .list-group-item:first-child {
3924 /* rounded top corners */
3925 border-top-right-radius:4px;
3926 border-top-left-radius:4px;
3927 }
3928
3929 .list-group-item:last-child {
3930 margin-bottom: 0;
3931 /* rounded bottom corners */
3932 border-bottom-right-radius: 4px;
3933 border-bottom-left-radius:4px;
3934 }
3935
3936 /* Flex row container */
3937 .flex-row {
3938 display: flex;
3939 flex-direction: row;
3940 }
3941
3942 /* Flex column container */
3943 .flex-column {
3944 display: flex;
3945 flex-direction: column;
3946 }
3947
3948 .flex-item-fit {
3949 flex-grow: 1;
3950 flex-shrink: 1;
3951 flex-basis: auto;
3952 }
3953
3954 .flex-item-no-shrink {
3955 flex-grow: 0;
3956 flex-shrink: 0;
3957 flex-basis: auto;
3958 }
3959
3960 .flex-item-fill {
3961 flex-grow: 0;
3962 flex-shrink: 1; /* shrink when pressured */
3963 flex-basis: 100%; /* try and take 100% */
3964 }
3965
3966 .flex-item-fixed-1-12 {
3967 flex-grow: 0;
3968 flex-shrink: 0;
3969 flex-basis: 8.3%;
3970 }
3971
3972 .flex-item-fixed-2-12 {
3973 flex-grow: 0;
3974 flex-shrink: 0;
3975 flex-basis: 16.6%;
3976 }
3977
3978 .flex-item-fixed-4-12 {
3979 flex-grow: 0;
3980 flex-shrink: 0;
3981 flex-basis: 33.3333%;
3982 }
3983
3984 .flex-item-fixed-6-12, .flex-item-50-percent {
3985 flex-grow: 0;
3986 flex-shrink: 0;
3987 flex-basis: 50%;
3988 }
3989
3990 .flex-item-fixed-8-12 {
3991 flex-grow: 0;
3992 flex-shrink: 0;
3993 flex-basis: 66.6666%;
3994 }
3995
3996 .flex-item-fixed-9-12 {
3997 flex-grow: 0;
3998 flex-shrink: 0;
3999 flex-basis: 75%;
4000 }
4001
4002
4003 .flex-item-fixed-12-12 {
4004 flex-grow: 0;
4005 flex-shrink: 0;
4006 flex-basis: 100%;
4007 }
4008
4009 .flex-item-10-percent {
4010 flex-grow: 0;
4011 flex-shrink: 0;
4012 flex-basis: 10%;
4013 }
4014
4015 .flex-item-15-percent {
4016 flex-grow: 0;
4017 flex-shrink: 0;
4018 flex-basis: 15%;
4019 }
4020
4021 .flex-item-20-percent {
4022 flex-grow: 0;
4023 flex-shrink: 0;
4024 flex-basis: 20%;
4025 }
4026
4027 .flex-item-30-percent {
4028 flex-grow: 0;
4029 flex-shrink: 0;
4030 flex-basis: 30%;
4031 }
4032
4033 .flex-item-40-percent {
4034 flex-grow: 0;
4035 flex-shrink: 0;
4036 flex-basis: 40%;
4037 }
4038
4039 .flex-item-50-percent {
4040 flex-grow: 0;
4041 flex-shrink: 0;
4042 flex-basis: 50%;
4043 }
4044
4045 .flex-item-60-percent {
4046 flex-grow: 0;
4047 flex-shrink: 0;
4048 flex-basis: 60%;
4049 }
4050
4051 .flex-item-70-percent {
4052 flex-grow: 0;
4053 flex-shrink: 0;
4054 flex-basis: 70%;
4055 }
4056
4057 .flex-item-80-percent {
4058 flex-grow: 0;
4059 flex-shrink: 0;
4060 flex-basis: 80%;
4061 }
4062
4063 .well {
4064 min-height: 20px;
4065 padding: 19px;
4066 margin-bottom: 20px;
4067 background-color: #f5f5f5;
4068 border: 1px solid #e3e3e3;
4069 border-radius: 4px;
4070 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
4071 }
4072
4073 .break-wrap {
4074 word-wrap: break-word;
4075 }
4076 </style>
4077 <nav-bar>
4078 <top-nav-menu></top-nav-menu>
4079 <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu>
4080 <library-nav-menu library="{{ cls.library }}"></library-nav-menu>
4081 <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu>
4082 <nav-refresh callback="{{ refreshCoverage }}" label="Refresh Coverage"></n av-refresh>
4083 <nav-refresh callback="{{ refresh }}"></nav-refresh>
4084 <nav-control></nav-control>
4085 </nav-bar>
4086
4087 <div class="content">
4088 <h1>
4089 <template if="{{ cls.isAbstract }}">
4090 abstract
4091 </template>
4092 <template if="{{ cls.isPatch }}">
4093 patch
4094 </template>
4095 class {{ cls.name }}
4096 </h1>
4097 <div class="memberList">
4098 <div class="memberItem">
4099 <div class="memberName">library</div>
4100 <div class="memberValue">
4101 <library-ref ref="{{ cls.library }}"></library-ref>
4102 </div>
4103 </div>
4104 <div class="memberItem">
4105 <div class="memberName">script</div>
4106 <div class="memberValue">
4107 <script-ref ref="{{ cls.script }}" pos="{{ cls.tokenPos }}">
4108 </script-ref>
4109 </div>
4110 </div>
4111
4112 <div class="memberItem">&nbsp;</div>
4113
4114 <template if="{{ cls.superClass != null }}">
4115 <div class="memberItem">
4116 <div class="memberName">extends</div>
4117 <div class="memberValue">
4118 <class-ref ref="{{ cls.superClass }}"></class-ref>
4119 </div>
4120 </div>
4121 </template>
4122 <template if="{{ cls.subClasses.length > 0 }}">
4123 <div class="memberItem">
4124 <div class="memberName">extended by</div>
4125 <div class="memberValue">
4126 <template repeat="{{ subclass in cls.subClasses }}">
4127 <class-ref ref="{{ subclass }}"></class-ref>
4128 </template>
4129 </div>
4130 </div>
4131 </template>
4132
4133 <div class="memberItem">&nbsp;</div>
4134
4135 <template if="{{ cls.interfaces.length > 0 }}">
4136 <div class="memberItem">
4137 <div class="memberName">implements</div>
4138 <div class="memberValue">
4139 <template repeat="{{ interface in cls.interfaces }}">
4140 <class-ref ref="{{ interface }}"></class-ref>
4141 </template>
4142 </div>
4143 </div>
4144 </template>
4145 <template if="{{ cls.name != cls.vmName }}">
4146 <div class="memberItem">
4147 <div class="memberName">vm name</div>
4148 <div class="memberValue">{{ cls.vmName }}</div>
4149 </div>
4150 </template>
4151 </div>
4152 </div>
4153
4154 <template if="{{ cls.error != null }}">
4155 <!-- TODO(turnidge): Don't use instance-ref for error display here -->
4156 <instance-ref ref="{{ cls.error }}"></instance-ref>
4157 </template>
4158
4159 <hr>
4160
4161 <div class="content">
4162 <template if="{{ cls.fields.isNotEmpty }}">
4163 fields ({{ cls.fields.length }})
4164 <curly-block expand="{{ cls.fields.length <= 8 }}">
4165 <div class="memberList">
4166 <template repeat="{{ field in cls.fields }}">
4167 <div class="memberItem">
4168 <div class="memberName">
4169 <field-ref ref="{{ field }}"></field-ref>
4170 </div>
4171 <div class="memberValue">
4172 <template if="{{ field['value'] != null }}">
4173 <instance-ref ref="{{ field['value'] }}"></instance-ref>
4174 </template>
4175 </div>
4176 </div>
4177 </template>
4178 </div>
4179 </curly-block><br><br>
4180 </template>
4181
4182 <template if="{{ cls.functions.isNotEmpty }}">
4183 functions ({{ cls.functions.length }})
4184 <curly-block expand="{{ cls.functions.length <= 8 }}">
4185 <div class="memberList">
4186 <template repeat="{{ function in cls.functions }}">
4187 <div class="memberItem">
4188 <div class="memberValue">
4189 <function-ref ref="{{ function }}" qualified="{{ false }}">
4190 </function-ref>
4191 </div>
4192 </div>
4193 </template>
4194 </div>
4195 </curly-block><br><br>
4196 </template>
4197
4198 <template if="{{ !cls.hasNoAllocations }}">
4199 instances
4200 <div class="memberItem">
4201 <div class="memberName">currently allocated</div>
4202 <div class="memberValue">
4203 count {{ cls.newSpace.current.instances + cls.oldSpace.current.ins tances }}
4204 (shallow size {{ cls.newSpace.current.bytes + cls.oldSpace.current .bytes | formatSize }})
4205 </div>
4206 </div>
4207 <div class="memberItem">
4208 <div class="memberName">strongly reachable</div>
4209 <div class="memberValue">
4210 <template if="{{ instances == null }}">
4211 <eval-link callback="{{ reachable }}" label="[find]" expr="100">
4212 </eval-link>
4213 </template>
4214 <template if="{{ instances != null }}">
4215 sample
4216 <instance-ref ref="{{ instances['sample'] }}"></instance-ref>
4217 <template if="{{ instances['totalCount'] > instances['sampleCoun t'] }}">
4218 <eval-link callback="{{ reachable }}" label="[more]" expr="{{ instances['sampleCount'] * 2 }}">
4219 </eval-link>
4220 </template>
4221 of total {{ instances['totalCount'] }}
4222 </template>
4223 </div>
4224 </div>
4225 <div class="memberItem">
4226 <div class="memberName">retained size</div>
4227 <div class="memberValue">
4228 <template if="{{ retainedBytes == null }}">
4229 <eval-link callback="{{ retainedSize }}" label="[calculate]">
4230 </eval-link>
4231 </template>
4232 <template if="{{ retainedBytes != null }}">
4233 {{ retainedBytes | formatSize }}
4234 </template>
4235 </div>
4236 </div>
4237 </template>
4238 </div>
4239
4240 <hr>
4241
4242 <div class="content">
4243 <eval-box callback="{{ eval }}"></eval-box>
4244 </div>
4245
4246 <hr>
4247 <script-inset script="{{ cls.script }}" startpos="{{ cls.tokenPos }}" endpos ="{{ cls.endTokenPos }}">
4248 </script-inset>
4249
4250 <br><br><br><br>
4251 <br><br><br><br>
4252 </template>
4253 </polymer-element>
4254
4255
4256
4257
4258
4259 <polymer-element name="code-ref" extends="service-ref">
4260 <template>
4261 <style>
4262 /* Global styles */
4263 * {
4264 margin: 0;
4265 padding: 0;
4266 font: 400 14px 'Montserrat', sans-serif;
4267 color: #333;
4268 box-sizing: border-box;
4269 }
4270
4271 .content {
4272 padding-left: 10%;
4273 font: 400 14px 'Montserrat', sans-serif;
4274 }
4275
4276 .content-centered {
4277 padding-left: 10%;
4278 padding-right: 10%;
4279 font: 400 14px 'Montserrat', sans-serif;
4280 }
4281
4282 .content-centered-big {
4283 padding-left: 5%;
4284 padding-right: 5%;
4285 font: 400 14px 'Montserrat', sans-serif;
4286 }
4287
4288 h1 {
4289 font: 400 18px 'Montserrat', sans-serif;
4290 }
4291
4292 .memberList {
4293 display: table;
4294 }
4295
4296 .memberItem {
4297 display: table-row;
4298 }
4299
4300 .memberName, .memberValue {
4301 display: table-cell;
4302 vertical-align: top;
4303 padding: 3px 0 3px 1em;
4304 font: 400 14px 'Montserrat', sans-serif;
4305 }
4306
4307 .monospace {
4308 font-family: consolas, courier, monospace;
4309 font-size: 1em;
4310 line-height: 1.2em;
4311 white-space: nowrap;
4312 }
4313
4314 a {
4315 color: #0489c3;
4316 text-decoration: none;
4317 }
4318
4319 a:hover {
4320 text-decoration: underline;
4321 }
4322
4323 em {
4324 color: inherit;
4325 font-style: italic;
4326 }
4327
4328 b {
4329 color: inherit;
4330 font-weight: bold;
4331 }
4332
4333 hr {
4334 margin-top: 20px;
4335 margin-bottom: 20px;
4336 border: 0;
4337 border-top: 1px solid #eee;
4338 height: 0;
4339 box-sizing: content-box;
4340 }
4341
4342 .list-group {
4343 padding-left: 0;
4344 margin-bottom: 20px;
4345 }
4346
4347 .list-group-item {
4348 position: relative;
4349 display: block;
4350 padding: 10px 15px;
4351 margin-bottom: -1px;
4352 background-color: #fff;
4353 }
4354
4355 .list-group-item:first-child {
4356 /* rounded top corners */
4357 border-top-right-radius:4px;
4358 border-top-left-radius:4px;
4359 }
4360
4361 .list-group-item:last-child {
4362 margin-bottom: 0;
4363 /* rounded bottom corners */
4364 border-bottom-right-radius: 4px;
4365 border-bottom-left-radius:4px;
4366 }
4367
4368 /* Flex row container */
4369 .flex-row {
4370 display: flex;
4371 flex-direction: row;
4372 }
4373
4374 /* Flex column container */
4375 .flex-column {
4376 display: flex;
4377 flex-direction: column;
4378 }
4379
4380 .flex-item-fit {
4381 flex-grow: 1;
4382 flex-shrink: 1;
4383 flex-basis: auto;
4384 }
4385
4386 .flex-item-no-shrink {
4387 flex-grow: 0;
4388 flex-shrink: 0;
4389 flex-basis: auto;
4390 }
4391
4392 .flex-item-fill {
4393 flex-grow: 0;
4394 flex-shrink: 1; /* shrink when pressured */
4395 flex-basis: 100%; /* try and take 100% */
4396 }
4397
4398 .flex-item-fixed-1-12 {
4399 flex-grow: 0;
4400 flex-shrink: 0;
4401 flex-basis: 8.3%;
4402 }
4403
4404 .flex-item-fixed-2-12 {
4405 flex-grow: 0;
4406 flex-shrink: 0;
4407 flex-basis: 16.6%;
4408 }
4409
4410 .flex-item-fixed-4-12 {
4411 flex-grow: 0;
4412 flex-shrink: 0;
4413 flex-basis: 33.3333%;
4414 }
4415
4416 .flex-item-fixed-6-12, .flex-item-50-percent {
4417 flex-grow: 0;
4418 flex-shrink: 0;
4419 flex-basis: 50%;
4420 }
4421
4422 .flex-item-fixed-8-12 {
4423 flex-grow: 0;
4424 flex-shrink: 0;
4425 flex-basis: 66.6666%;
4426 }
4427
4428 .flex-item-fixed-9-12 {
4429 flex-grow: 0;
4430 flex-shrink: 0;
4431 flex-basis: 75%;
4432 }
4433
4434
4435 .flex-item-fixed-12-12 {
4436 flex-grow: 0;
4437 flex-shrink: 0;
4438 flex-basis: 100%;
4439 }
4440
4441 .flex-item-10-percent {
4442 flex-grow: 0;
4443 flex-shrink: 0;
4444 flex-basis: 10%;
4445 }
4446
4447 .flex-item-15-percent {
4448 flex-grow: 0;
4449 flex-shrink: 0;
4450 flex-basis: 15%;
4451 }
4452
4453 .flex-item-20-percent {
4454 flex-grow: 0;
4455 flex-shrink: 0;
4456 flex-basis: 20%;
4457 }
4458
4459 .flex-item-30-percent {
4460 flex-grow: 0;
4461 flex-shrink: 0;
4462 flex-basis: 30%;
4463 }
4464
4465 .flex-item-40-percent {
4466 flex-grow: 0;
4467 flex-shrink: 0;
4468 flex-basis: 40%;
4469 }
4470
4471 .flex-item-50-percent {
4472 flex-grow: 0;
4473 flex-shrink: 0;
4474 flex-basis: 50%;
4475 }
4476
4477 .flex-item-60-percent {
4478 flex-grow: 0;
4479 flex-shrink: 0;
4480 flex-basis: 60%;
4481 }
4482
4483 .flex-item-70-percent {
4484 flex-grow: 0;
4485 flex-shrink: 0;
4486 flex-basis: 70%;
4487 }
4488
4489 .flex-item-80-percent {
4490 flex-grow: 0;
4491 flex-shrink: 0;
4492 flex-basis: 80%;
4493 }
4494
4495 .well {
4496 min-height: 20px;
4497 padding: 19px;
4498 margin-bottom: 20px;
4499 background-color: #f5f5f5;
4500 border: 1px solid #e3e3e3;
4501 border-radius: 4px;
4502 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
4503 }
4504
4505 .break-wrap {
4506 word-wrap: break-word;
4507 }
4508 </style>
4509 <template if="{{ code.isDartCode }}">
4510 <template if="{{ code.isOptimized }}">
4511 <a on-click="{{ goto }}" href="{{ url }}">*{{ name }}</a>
4512 </template>
4513 <template if="{{ !code.isOptimized }}">
4514 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
4515 </template>
4516 </template>
4517 <template if="{{ !code.isDartCode }}">
4518 <span>{{ name }}</span>
4519 </template>
4520 </template>
4521 </polymer-element>
4522
4523
4524
4525
4526
4527
4528
4529
4530 <polymer-element name="code-view" extends="observatory-element">
4531 <template>
4532 <style>
4533 /* Global styles */
4534 * {
4535 margin: 0;
4536 padding: 0;
4537 font: 400 14px 'Montserrat', sans-serif;
4538 color: #333;
4539 box-sizing: border-box;
4540 }
4541
4542 .content {
4543 padding-left: 10%;
4544 font: 400 14px 'Montserrat', sans-serif;
4545 }
4546
4547 .content-centered {
4548 padding-left: 10%;
4549 padding-right: 10%;
4550 font: 400 14px 'Montserrat', sans-serif;
4551 }
4552
4553 .content-centered-big {
4554 padding-left: 5%;
4555 padding-right: 5%;
4556 font: 400 14px 'Montserrat', sans-serif;
4557 }
4558
4559 h1 {
4560 font: 400 18px 'Montserrat', sans-serif;
4561 }
4562
4563 .memberList {
4564 display: table;
4565 }
4566
4567 .memberItem {
4568 display: table-row;
4569 }
4570
4571 .memberName, .memberValue {
4572 display: table-cell;
4573 vertical-align: top;
4574 padding: 3px 0 3px 1em;
4575 font: 400 14px 'Montserrat', sans-serif;
4576 }
4577
4578 .monospace {
4579 font-family: consolas, courier, monospace;
4580 font-size: 1em;
4581 line-height: 1.2em;
4582 white-space: nowrap;
4583 }
4584
4585 a {
4586 color: #0489c3;
4587 text-decoration: none;
4588 }
4589
4590 a:hover {
4591 text-decoration: underline;
4592 }
4593
4594 em {
4595 color: inherit;
4596 font-style: italic;
4597 }
4598
4599 b {
4600 color: inherit;
4601 font-weight: bold;
4602 }
4603
4604 hr {
4605 margin-top: 20px;
4606 margin-bottom: 20px;
4607 border: 0;
4608 border-top: 1px solid #eee;
4609 height: 0;
4610 box-sizing: content-box;
4611 }
4612
4613 .list-group {
4614 padding-left: 0;
4615 margin-bottom: 20px;
4616 }
4617
4618 .list-group-item {
4619 position: relative;
4620 display: block;
4621 padding: 10px 15px;
4622 margin-bottom: -1px;
4623 background-color: #fff;
4624 }
4625
4626 .list-group-item:first-child {
4627 /* rounded top corners */
4628 border-top-right-radius:4px;
4629 border-top-left-radius:4px;
4630 }
4631
4632 .list-group-item:last-child {
4633 margin-bottom: 0;
4634 /* rounded bottom corners */
4635 border-bottom-right-radius: 4px;
4636 border-bottom-left-radius:4px;
4637 }
4638
4639 /* Flex row container */
4640 .flex-row {
4641 display: flex;
4642 flex-direction: row;
4643 }
4644
4645 /* Flex column container */
4646 .flex-column {
4647 display: flex;
4648 flex-direction: column;
4649 }
4650
4651 .flex-item-fit {
4652 flex-grow: 1;
4653 flex-shrink: 1;
4654 flex-basis: auto;
4655 }
4656
4657 .flex-item-no-shrink {
4658 flex-grow: 0;
4659 flex-shrink: 0;
4660 flex-basis: auto;
4661 }
4662
4663 .flex-item-fill {
4664 flex-grow: 0;
4665 flex-shrink: 1; /* shrink when pressured */
4666 flex-basis: 100%; /* try and take 100% */
4667 }
4668
4669 .flex-item-fixed-1-12 {
4670 flex-grow: 0;
4671 flex-shrink: 0;
4672 flex-basis: 8.3%;
4673 }
4674
4675 .flex-item-fixed-2-12 {
4676 flex-grow: 0;
4677 flex-shrink: 0;
4678 flex-basis: 16.6%;
4679 }
4680
4681 .flex-item-fixed-4-12 {
4682 flex-grow: 0;
4683 flex-shrink: 0;
4684 flex-basis: 33.3333%;
4685 }
4686
4687 .flex-item-fixed-6-12, .flex-item-50-percent {
4688 flex-grow: 0;
4689 flex-shrink: 0;
4690 flex-basis: 50%;
4691 }
4692
4693 .flex-item-fixed-8-12 {
4694 flex-grow: 0;
4695 flex-shrink: 0;
4696 flex-basis: 66.6666%;
4697 }
4698
4699 .flex-item-fixed-9-12 {
4700 flex-grow: 0;
4701 flex-shrink: 0;
4702 flex-basis: 75%;
4703 }
4704
4705
4706 .flex-item-fixed-12-12 {
4707 flex-grow: 0;
4708 flex-shrink: 0;
4709 flex-basis: 100%;
4710 }
4711
4712 .flex-item-10-percent {
4713 flex-grow: 0;
4714 flex-shrink: 0;
4715 flex-basis: 10%;
4716 }
4717
4718 .flex-item-15-percent {
4719 flex-grow: 0;
4720 flex-shrink: 0;
4721 flex-basis: 15%;
4722 }
4723
4724 .flex-item-20-percent {
4725 flex-grow: 0;
4726 flex-shrink: 0;
4727 flex-basis: 20%;
4728 }
4729
4730 .flex-item-30-percent {
4731 flex-grow: 0;
4732 flex-shrink: 0;
4733 flex-basis: 30%;
4734 }
4735
4736 .flex-item-40-percent {
4737 flex-grow: 0;
4738 flex-shrink: 0;
4739 flex-basis: 40%;
4740 }
4741
4742 .flex-item-50-percent {
4743 flex-grow: 0;
4744 flex-shrink: 0;
4745 flex-basis: 50%;
4746 }
4747
4748 .flex-item-60-percent {
4749 flex-grow: 0;
4750 flex-shrink: 0;
4751 flex-basis: 60%;
4752 }
4753
4754 .flex-item-70-percent {
4755 flex-grow: 0;
4756 flex-shrink: 0;
4757 flex-basis: 70%;
4758 }
4759
4760 .flex-item-80-percent {
4761 flex-grow: 0;
4762 flex-shrink: 0;
4763 flex-basis: 80%;
4764 }
4765
4766 .well {
4767 min-height: 20px;
4768 padding: 19px;
4769 margin-bottom: 20px;
4770 background-color: #f5f5f5;
4771 border: 1px solid #e3e3e3;
4772 border-radius: 4px;
4773 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
4774 }
4775
4776 .break-wrap {
4777 word-wrap: break-word;
4778 }
4779 </style>
4780 <style>
4781 div.flex-row:hover {
4782 background-color: #FFF3E3;
4783 }
4784
4785 .highlight {
4786 background-color: #FFF3E3;
4787 }
4788
4789 .tooltip {
4790 display: block;
4791 position: absolute;
4792 visibility: hidden;
4793 opacity: 0;
4794 transition: visibility 0s linear 0.5s;
4795 transition: opacity .4s ease-in-out;
4796 }
4797
4798 .flex-row:hover .tooltip {
4799 display: block;
4800 position: absolute;
4801 top: 100%;
4802 visibility: visible;
4803 z-index: 999;
4804 width: auto;
4805 min-width: 400px;
4806 color: #ffffff;
4807 background-color: #FFF3E3;
4808 border-bottom-right-radius: 8px;
4809 border-bottom-left-radius: 8px;
4810 transition: visibility 0s linear 0.5s;
4811 transition: opacity .4s ease-in-out;
4812 opacity: 1;
4813 }
4814
4815 .descriptor-address {
4816 color: #0489c3;
4817 }
4818
4819 .snippet {
4820 text-align: center;
4821 margin-left: 10px;
4822 margin-right: 10px;
4823 }
4824
4825 </style>
4826 <nav-bar>
4827 <top-nav-menu></top-nav-menu>
4828 <isolate-nav-menu isolate="{{ code.isolate }}"></isolate-nav-menu>
4829 <nav-menu link="{{ code.link }}" anchor="{{ code.name }}" last="{{ true }} "></nav-menu>
4830 <nav-refresh callback="{{ refresh }}"></nav-refresh>
4831 <nav-control></nav-control>
4832 </nav-bar>
4833 <div class="content">
4834 <template if="{{ code.isDartCode &amp;&amp; code.isOptimized }}">
4835 <h1>Optimized code for {{ code.name }}</h1>
4836 </template>
4837 <template if="{{ !(code.isDartCode &amp;&amp; code.isOptimized) }}">
4838 <h1>Code for {{ code.name }}</h1>
4839 </template>
4840 <div class="memberList">
4841 <div class="memberItem">
4842 <div class="memberName">Kind</div>
4843 <div class="memberValue">{{code.kind}}</div>
4844 </div>
4845 <template if="{{ code.isDartCode }}">
4846 <div class="memberItem">
4847 <div class="memberName">Optimized</div>
4848 <div class="memberValue">{{code.isOptimized}}</div>
4849 </div>
4850 </template>
4851 <div class="memberItem">
4852 <div class="memberName">Function</div>
4853 <div class="memberValue">
4854 <function-ref ref="{{code.function}}">
4855 </function-ref>
4856 </div>
4857 </div>
4858 <div class="memberItem">
4859 <div class="memberName">Inclusive</div>
4860 <div class="memberValue">{{ code.formattedInclusiveTicks }}</div>
4861 </div>
4862 <div class="memberItem">
4863 <div class="memberName">Exclusive</div>
4864 <div class="memberValue">{{ code.formattedExclusiveTicks }}</div>
4865 </div>
4866 <div class="memberItem">
4867 <div class="memberName">Constant object pool</div>
4868 <div class="memberValue">
4869 <instance-ref ref="{{ code.objectPool }}"></instance-ref>
4870 </div>
4871 </div>
4872 </div>
4873 </div>
4874 <hr>
4875 <div class="content">
4876 <template if="{{ code.hasDisassembly }}">
4877 <div class="flex-row">
4878 <div class="flex-item-fixed-2-12 memberHeader">Inclusive</div>
4879 <div class="flex-item-fixed-2-12 memberHeader">Exclusive</div>
4880 <div class="flex-item-fixed-2-12 memberHeader">Address</div>
4881 <div class="flex-item-fixed-6-12 memberHeader">Disassembly</div>
4882 </div>
4883 </template>
4884 <template repeat="{{ instruction in code.instructions }}">
4885 <div class="flex-row" on-mouseover="{{ mouseOver }}" on-mouseout="{{ mou seOut }}" data-jump-target="{{ instruction.jumpTarget.address }}" id="addr-{{ in struction.address }}" style="position: relative">
4886 <template if="{{ instruction.isComment }}">
4887 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formatted Inclusive(code) }}</div>
4888 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formatted Exclusive(code) }}</div>
4889 <div class="flex-item-fixed-8-12 monospace">{{ instruction.human }}< /div>
4890 </template>
4891 <template if="{{ !instruction.isComment }}">
4892 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formatted Inclusive(code) }}</div>
4893 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formatted Exclusive(code) }}</div>
4894 <template if="{{ instruction.hasDescriptors }}">
4895 <div class="flex-item-fixed-2-12 monospace descriptor-address">
4896 <div class="tooltip">
4897 <template repeat="{{ descriptor in instruction.descriptors }}" >
4898 <div class="memberList">
4899 <div class="memberItem">
4900 <div class="memberName">Kind</div>
4901 <div class="memberValue">{{ descriptor.kind }}</div>
4902 </div>
4903 <div class="memberItem">
4904 <div class="memberName">Deoptimization ID</div>
4905 <div class="memberValue">{{ descriptor.formattedDeoptId() }}</div>
4906 </div>
4907 <template if="{{ descriptor.script != null }}">
4908 <div class="memberItem">
4909 <div class="memberName">Script</div>
4910 <div class="memberValue"><script-ref ref="{{ descriptor .script }}" pos="{{ descriptor.tokenPos }}"></script-ref></div>
4911 </div>
4912 </template>
4913 </div>
4914 <template if="{{ descriptor.script != null }}">
4915 <div class="snippet monospace">
4916 <span>{{ descriptor.formattedLine }}</span>
4917 </div>
4918 </template>
4919 </template>
4920 </div>
4921 {{ instruction.formattedAddress() }}
4922 </div>
4923 </template>
4924 <template if="{{ !instruction.hasDescriptors }}">
4925 <div class="flex-item-fixed-2-12 monospace">
4926 {{ instruction.formattedAddress() }}
4927 </div>
4928 </template>
4929 <div class="flex-item-fixed-6-12 monospace">
4930 {{ instruction.human }}
4931 </div>
4932 </template>
4933 </div>
4934 </template>
4935 </div>
4936 </template>
4937 </polymer-element>
4938
4939
4940
4941
4942
4943
4944 <polymer-element name="error-view" extends="observatory-element">
4945 <template>
4946 <style>
4947 /* Global styles */
4948 * {
4949 margin: 0;
4950 padding: 0;
4951 font: 400 14px 'Montserrat', sans-serif;
4952 color: #333;
4953 box-sizing: border-box;
4954 }
4955
4956 .content {
4957 padding-left: 10%;
4958 font: 400 14px 'Montserrat', sans-serif;
4959 }
4960
4961 .content-centered {
4962 padding-left: 10%;
4963 padding-right: 10%;
4964 font: 400 14px 'Montserrat', sans-serif;
4965 }
4966
4967 .content-centered-big {
4968 padding-left: 5%;
4969 padding-right: 5%;
4970 font: 400 14px 'Montserrat', sans-serif;
4971 }
4972
4973 h1 {
4974 font: 400 18px 'Montserrat', sans-serif;
4975 }
4976
4977 .memberList {
4978 display: table;
4979 }
4980
4981 .memberItem {
4982 display: table-row;
4983 }
4984
4985 .memberName, .memberValue {
4986 display: table-cell;
4987 vertical-align: top;
4988 padding: 3px 0 3px 1em;
4989 font: 400 14px 'Montserrat', sans-serif;
4990 }
4991
4992 .monospace {
4993 font-family: consolas, courier, monospace;
4994 font-size: 1em;
4995 line-height: 1.2em;
4996 white-space: nowrap;
4997 }
4998
4999 a {
5000 color: #0489c3;
5001 text-decoration: none;
5002 }
5003
5004 a:hover {
5005 text-decoration: underline;
5006 }
5007
5008 em {
5009 color: inherit;
5010 font-style: italic;
5011 }
5012
5013 b {
5014 color: inherit;
5015 font-weight: bold;
5016 }
5017
5018 hr {
5019 margin-top: 20px;
5020 margin-bottom: 20px;
5021 border: 0;
5022 border-top: 1px solid #eee;
5023 height: 0;
5024 box-sizing: content-box;
5025 }
5026
5027 .list-group {
5028 padding-left: 0;
5029 margin-bottom: 20px;
5030 }
5031
5032 .list-group-item {
5033 position: relative;
5034 display: block;
5035 padding: 10px 15px;
5036 margin-bottom: -1px;
5037 background-color: #fff;
5038 }
5039
5040 .list-group-item:first-child {
5041 /* rounded top corners */
5042 border-top-right-radius:4px;
5043 border-top-left-radius:4px;
5044 }
5045
5046 .list-group-item:last-child {
5047 margin-bottom: 0;
5048 /* rounded bottom corners */
5049 border-bottom-right-radius: 4px;
5050 border-bottom-left-radius:4px;
5051 }
5052
5053 /* Flex row container */
5054 .flex-row {
5055 display: flex;
5056 flex-direction: row;
5057 }
5058
5059 /* Flex column container */
5060 .flex-column {
5061 display: flex;
5062 flex-direction: column;
5063 }
5064
5065 .flex-item-fit {
5066 flex-grow: 1;
5067 flex-shrink: 1;
5068 flex-basis: auto;
5069 }
5070
5071 .flex-item-no-shrink {
5072 flex-grow: 0;
5073 flex-shrink: 0;
5074 flex-basis: auto;
5075 }
5076
5077 .flex-item-fill {
5078 flex-grow: 0;
5079 flex-shrink: 1; /* shrink when pressured */
5080 flex-basis: 100%; /* try and take 100% */
5081 }
5082
5083 .flex-item-fixed-1-12 {
5084 flex-grow: 0;
5085 flex-shrink: 0;
5086 flex-basis: 8.3%;
5087 }
5088
5089 .flex-item-fixed-2-12 {
5090 flex-grow: 0;
5091 flex-shrink: 0;
5092 flex-basis: 16.6%;
5093 }
5094
5095 .flex-item-fixed-4-12 {
5096 flex-grow: 0;
5097 flex-shrink: 0;
5098 flex-basis: 33.3333%;
5099 }
5100
5101 .flex-item-fixed-6-12, .flex-item-50-percent {
5102 flex-grow: 0;
5103 flex-shrink: 0;
5104 flex-basis: 50%;
5105 }
5106
5107 .flex-item-fixed-8-12 {
5108 flex-grow: 0;
5109 flex-shrink: 0;
5110 flex-basis: 66.6666%;
5111 }
5112
5113 .flex-item-fixed-9-12 {
5114 flex-grow: 0;
5115 flex-shrink: 0;
5116 flex-basis: 75%;
5117 }
5118
5119
5120 .flex-item-fixed-12-12 {
5121 flex-grow: 0;
5122 flex-shrink: 0;
5123 flex-basis: 100%;
5124 }
5125
5126 .flex-item-10-percent {
5127 flex-grow: 0;
5128 flex-shrink: 0;
5129 flex-basis: 10%;
5130 }
5131
5132 .flex-item-15-percent {
5133 flex-grow: 0;
5134 flex-shrink: 0;
5135 flex-basis: 15%;
5136 }
5137
5138 .flex-item-20-percent {
5139 flex-grow: 0;
5140 flex-shrink: 0;
5141 flex-basis: 20%;
5142 }
5143
5144 .flex-item-30-percent {
5145 flex-grow: 0;
5146 flex-shrink: 0;
5147 flex-basis: 30%;
5148 }
5149
5150 .flex-item-40-percent {
5151 flex-grow: 0;
5152 flex-shrink: 0;
5153 flex-basis: 40%;
5154 }
5155
5156 .flex-item-50-percent {
5157 flex-grow: 0;
5158 flex-shrink: 0;
5159 flex-basis: 50%;
5160 }
5161
5162 .flex-item-60-percent {
5163 flex-grow: 0;
5164 flex-shrink: 0;
5165 flex-basis: 60%;
5166 }
5167
5168 .flex-item-70-percent {
5169 flex-grow: 0;
5170 flex-shrink: 0;
5171 flex-basis: 70%;
5172 }
5173
5174 .flex-item-80-percent {
5175 flex-grow: 0;
5176 flex-shrink: 0;
5177 flex-basis: 80%;
5178 }
5179
5180 .well {
5181 min-height: 20px;
5182 padding: 19px;
5183 margin-bottom: 20px;
5184 background-color: #f5f5f5;
5185 border: 1px solid #e3e3e3;
5186 border-radius: 4px;
5187 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
5188 }
5189
5190 .break-wrap {
5191 word-wrap: break-word;
5192 }
5193 </style>
5194 <nav-bar>
5195 <top-nav-menu last="{{ true }}"></top-nav-menu>
5196 <nav-control></nav-control>
5197 </nav-bar>
5198 <div class="content-centered">
5199 <h1>{{ error.kind }}</h1>
5200 <br>
5201 <div class="well">{{ error.message }}</div>
5202 </div>
5203 </template>
5204 </polymer-element>
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215 <polymer-element name="field-view" extends="observatory-element">
5216 <template>
5217 <style>
5218 /* Global styles */
5219 * {
5220 margin: 0;
5221 padding: 0;
5222 font: 400 14px 'Montserrat', sans-serif;
5223 color: #333;
5224 box-sizing: border-box;
5225 }
5226
5227 .content {
5228 padding-left: 10%;
5229 font: 400 14px 'Montserrat', sans-serif;
5230 }
5231
5232 .content-centered {
5233 padding-left: 10%;
5234 padding-right: 10%;
5235 font: 400 14px 'Montserrat', sans-serif;
5236 }
5237
5238 .content-centered-big {
5239 padding-left: 5%;
5240 padding-right: 5%;
5241 font: 400 14px 'Montserrat', sans-serif;
5242 }
5243
5244 h1 {
5245 font: 400 18px 'Montserrat', sans-serif;
5246 }
5247
5248 .memberList {
5249 display: table;
5250 }
5251
5252 .memberItem {
5253 display: table-row;
5254 }
5255
5256 .memberName, .memberValue {
5257 display: table-cell;
5258 vertical-align: top;
5259 padding: 3px 0 3px 1em;
5260 font: 400 14px 'Montserrat', sans-serif;
5261 }
5262
5263 .monospace {
5264 font-family: consolas, courier, monospace;
5265 font-size: 1em;
5266 line-height: 1.2em;
5267 white-space: nowrap;
5268 }
5269
5270 a {
5271 color: #0489c3;
5272 text-decoration: none;
5273 }
5274
5275 a:hover {
5276 text-decoration: underline;
5277 }
5278
5279 em {
5280 color: inherit;
5281 font-style: italic;
5282 }
5283
5284 b {
5285 color: inherit;
5286 font-weight: bold;
5287 }
5288
5289 hr {
5290 margin-top: 20px;
5291 margin-bottom: 20px;
5292 border: 0;
5293 border-top: 1px solid #eee;
5294 height: 0;
5295 box-sizing: content-box;
5296 }
5297
5298 .list-group {
5299 padding-left: 0;
5300 margin-bottom: 20px;
5301 }
5302
5303 .list-group-item {
5304 position: relative;
5305 display: block;
5306 padding: 10px 15px;
5307 margin-bottom: -1px;
5308 background-color: #fff;
5309 }
5310
5311 .list-group-item:first-child {
5312 /* rounded top corners */
5313 border-top-right-radius:4px;
5314 border-top-left-radius:4px;
5315 }
5316
5317 .list-group-item:last-child {
5318 margin-bottom: 0;
5319 /* rounded bottom corners */
5320 border-bottom-right-radius: 4px;
5321 border-bottom-left-radius:4px;
5322 }
5323
5324 /* Flex row container */
5325 .flex-row {
5326 display: flex;
5327 flex-direction: row;
5328 }
5329
5330 /* Flex column container */
5331 .flex-column {
5332 display: flex;
5333 flex-direction: column;
5334 }
5335
5336 .flex-item-fit {
5337 flex-grow: 1;
5338 flex-shrink: 1;
5339 flex-basis: auto;
5340 }
5341
5342 .flex-item-no-shrink {
5343 flex-grow: 0;
5344 flex-shrink: 0;
5345 flex-basis: auto;
5346 }
5347
5348 .flex-item-fill {
5349 flex-grow: 0;
5350 flex-shrink: 1; /* shrink when pressured */
5351 flex-basis: 100%; /* try and take 100% */
5352 }
5353
5354 .flex-item-fixed-1-12 {
5355 flex-grow: 0;
5356 flex-shrink: 0;
5357 flex-basis: 8.3%;
5358 }
5359
5360 .flex-item-fixed-2-12 {
5361 flex-grow: 0;
5362 flex-shrink: 0;
5363 flex-basis: 16.6%;
5364 }
5365
5366 .flex-item-fixed-4-12 {
5367 flex-grow: 0;
5368 flex-shrink: 0;
5369 flex-basis: 33.3333%;
5370 }
5371
5372 .flex-item-fixed-6-12, .flex-item-50-percent {
5373 flex-grow: 0;
5374 flex-shrink: 0;
5375 flex-basis: 50%;
5376 }
5377
5378 .flex-item-fixed-8-12 {
5379 flex-grow: 0;
5380 flex-shrink: 0;
5381 flex-basis: 66.6666%;
5382 }
5383
5384 .flex-item-fixed-9-12 {
5385 flex-grow: 0;
5386 flex-shrink: 0;
5387 flex-basis: 75%;
5388 }
5389
5390
5391 .flex-item-fixed-12-12 {
5392 flex-grow: 0;
5393 flex-shrink: 0;
5394 flex-basis: 100%;
5395 }
5396
5397 .flex-item-10-percent {
5398 flex-grow: 0;
5399 flex-shrink: 0;
5400 flex-basis: 10%;
5401 }
5402
5403 .flex-item-15-percent {
5404 flex-grow: 0;
5405 flex-shrink: 0;
5406 flex-basis: 15%;
5407 }
5408
5409 .flex-item-20-percent {
5410 flex-grow: 0;
5411 flex-shrink: 0;
5412 flex-basis: 20%;
5413 }
5414
5415 .flex-item-30-percent {
5416 flex-grow: 0;
5417 flex-shrink: 0;
5418 flex-basis: 30%;
5419 }
5420
5421 .flex-item-40-percent {
5422 flex-grow: 0;
5423 flex-shrink: 0;
5424 flex-basis: 40%;
5425 }
5426
5427 .flex-item-50-percent {
5428 flex-grow: 0;
5429 flex-shrink: 0;
5430 flex-basis: 50%;
5431 }
5432
5433 .flex-item-60-percent {
5434 flex-grow: 0;
5435 flex-shrink: 0;
5436 flex-basis: 60%;
5437 }
5438
5439 .flex-item-70-percent {
5440 flex-grow: 0;
5441 flex-shrink: 0;
5442 flex-basis: 70%;
5443 }
5444
5445 .flex-item-80-percent {
5446 flex-grow: 0;
5447 flex-shrink: 0;
5448 flex-basis: 80%;
5449 }
5450
5451 .well {
5452 min-height: 20px;
5453 padding: 19px;
5454 margin-bottom: 20px;
5455 background-color: #f5f5f5;
5456 border: 1px solid #e3e3e3;
5457 border-radius: 4px;
5458 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
5459 }
5460
5461 .break-wrap {
5462 word-wrap: break-word;
5463 }
5464 </style>
5465 <nav-bar>
5466 <top-nav-menu></top-nav-menu>
5467 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
5468 <template if="{{ field['owner'].serviceType == 'Class' }}">
5469 <!-- TODO(turnidge): Add library nav menu here. -->
5470 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu>
5471 </template>
5472 <template if="{{ field['owner'].serviceType == 'Library' }}">
5473 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu>
5474 </template>
5475 <nav-menu link="{{ field.link }}" anchor="{{ field['user_name'] }}" last=" {{ true }}"></nav-menu>
5476 <nav-refresh callback="{{ refresh }}"></nav-refresh>
5477 <nav-control></nav-control>
5478 </nav-bar>
5479
5480 <div class="content">
5481 <h1>
5482 <template if="{{ field['static'] }}">static</template>
5483 <template if="{{ field['final'] }}">final</template>
5484 <template if="{{ field['const'] }}">const</template>
5485 <template if="{{ (field['declared_type']['name'] == 'dynamic' &amp;&amp;
5486 !field['final'] &amp;&amp; !field['const']) }}">
5487 var
5488 </template>
5489 <template if="{{ (field['declared_type']['user_name'] != 'dynamic') }}">
5490 {{ field['declared_type']['user_name'] }}
5491 </template>
5492 {{ field['user_name'] }}
5493 </h1>
5494 <div class="memberList">
5495 <div class="memberItem">
5496 <div class="memberName">owner</div>
5497 <div class="memberValue">
5498 <template if="{{ field['owner'].serviceType == 'Class' }}">
5499 <class-ref ref="{{ field['owner'] }}"></class-ref>
5500 </template>
5501 <template if="{{ field['owner'].serviceType != 'Class' }}">
5502 <library-ref ref="{{ field['owner'] }}"></library-ref>
5503 </template>
5504 </div>
5505 </div>
5506 <div class="memberItem">
5507 <div class="memberName">script</div>
5508 <div class="memberValue">
5509 <script-ref ref="{{ field['script'] }}"></script-ref>
5510 </div>
5511 </div>
5512 <template if="{{ !field['static'] }}">
5513 <div class="memberItem" title="The types observed for this field at ru ntime. Fields that are observed to have a single type at runtime or to never be null may allow for additional optimization.">
5514 <div class="memberName">observed types</div>
5515 <div class="memberValue">
5516 <template if="{{ field['guard_class'] == 'dynamic' }}">
5517 various
5518 </template>
5519 <template if="{{ field['guard_class'] == 'unknown' }}">
5520 none
5521 </template>
5522 <template if="{{ field['guard_class'] != 'unknown' &amp;&amp;
5523 field['guard_class'] != 'dynamic' }}">
5524 <class-ref ref="{{ field['guard_class'] }}"></class-ref>
5525 <template if="{{ field['guard_nullable'] }}">
5526 — null observed
5527 </template>
5528 <template if="{{ !field['guard_nullable'] }}">
5529 — null not observed
5530 </template>
5531 </template>
5532 </div>
5533 </div>
5534 </template>
5535 <template if="{{ field['value'] != null }}">
5536 <div class="memberItem">
5537 <div class="memberName">static value</div>
5538 <div class="memberValue">
5539 <instance-ref ref="{{ field['value'] }}"></instance-ref>
5540 </div>
5541 </div>
5542 </template>
5543 </div>
5544 </div>
5545 </template>
5546 </polymer-element>
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560 <polymer-element name="stack-frame" extends="observatory-element">
5561 <template>
5562 <style>
5563 /* Global styles */
5564 * {
5565 margin: 0;
5566 padding: 0;
5567 font: 400 14px 'Montserrat', sans-serif;
5568 color: #333;
5569 box-sizing: border-box;
5570 }
5571
5572 .content {
5573 padding-left: 10%;
5574 font: 400 14px 'Montserrat', sans-serif;
5575 }
5576
5577 .content-centered {
5578 padding-left: 10%;
5579 padding-right: 10%;
5580 font: 400 14px 'Montserrat', sans-serif;
5581 }
5582
5583 .content-centered-big {
5584 padding-left: 5%;
5585 padding-right: 5%;
5586 font: 400 14px 'Montserrat', sans-serif;
5587 }
5588
5589 h1 {
5590 font: 400 18px 'Montserrat', sans-serif;
5591 }
5592
5593 .memberList {
5594 display: table;
5595 }
5596
5597 .memberItem {
5598 display: table-row;
5599 }
5600
5601 .memberName, .memberValue {
5602 display: table-cell;
5603 vertical-align: top;
5604 padding: 3px 0 3px 1em;
5605 font: 400 14px 'Montserrat', sans-serif;
5606 }
5607
5608 .monospace {
5609 font-family: consolas, courier, monospace;
5610 font-size: 1em;
5611 line-height: 1.2em;
5612 white-space: nowrap;
5613 }
5614
5615 a {
5616 color: #0489c3;
5617 text-decoration: none;
5618 }
5619
5620 a:hover {
5621 text-decoration: underline;
5622 }
5623
5624 em {
5625 color: inherit;
5626 font-style: italic;
5627 }
5628
5629 b {
5630 color: inherit;
5631 font-weight: bold;
5632 }
5633
5634 hr {
5635 margin-top: 20px;
5636 margin-bottom: 20px;
5637 border: 0;
5638 border-top: 1px solid #eee;
5639 height: 0;
5640 box-sizing: content-box;
5641 }
5642
5643 .list-group {
5644 padding-left: 0;
5645 margin-bottom: 20px;
5646 }
5647
5648 .list-group-item {
5649 position: relative;
5650 display: block;
5651 padding: 10px 15px;
5652 margin-bottom: -1px;
5653 background-color: #fff;
5654 }
5655
5656 .list-group-item:first-child {
5657 /* rounded top corners */
5658 border-top-right-radius:4px;
5659 border-top-left-radius:4px;
5660 }
5661
5662 .list-group-item:last-child {
5663 margin-bottom: 0;
5664 /* rounded bottom corners */
5665 border-bottom-right-radius: 4px;
5666 border-bottom-left-radius:4px;
5667 }
5668
5669 /* Flex row container */
5670 .flex-row {
5671 display: flex;
5672 flex-direction: row;
5673 }
5674
5675 /* Flex column container */
5676 .flex-column {
5677 display: flex;
5678 flex-direction: column;
5679 }
5680
5681 .flex-item-fit {
5682 flex-grow: 1;
5683 flex-shrink: 1;
5684 flex-basis: auto;
5685 }
5686
5687 .flex-item-no-shrink {
5688 flex-grow: 0;
5689 flex-shrink: 0;
5690 flex-basis: auto;
5691 }
5692
5693 .flex-item-fill {
5694 flex-grow: 0;
5695 flex-shrink: 1; /* shrink when pressured */
5696 flex-basis: 100%; /* try and take 100% */
5697 }
5698
5699 .flex-item-fixed-1-12 {
5700 flex-grow: 0;
5701 flex-shrink: 0;
5702 flex-basis: 8.3%;
5703 }
5704
5705 .flex-item-fixed-2-12 {
5706 flex-grow: 0;
5707 flex-shrink: 0;
5708 flex-basis: 16.6%;
5709 }
5710
5711 .flex-item-fixed-4-12 {
5712 flex-grow: 0;
5713 flex-shrink: 0;
5714 flex-basis: 33.3333%;
5715 }
5716
5717 .flex-item-fixed-6-12, .flex-item-50-percent {
5718 flex-grow: 0;
5719 flex-shrink: 0;
5720 flex-basis: 50%;
5721 }
5722
5723 .flex-item-fixed-8-12 {
5724 flex-grow: 0;
5725 flex-shrink: 0;
5726 flex-basis: 66.6666%;
5727 }
5728
5729 .flex-item-fixed-9-12 {
5730 flex-grow: 0;
5731 flex-shrink: 0;
5732 flex-basis: 75%;
5733 }
5734
5735
5736 .flex-item-fixed-12-12 {
5737 flex-grow: 0;
5738 flex-shrink: 0;
5739 flex-basis: 100%;
5740 }
5741
5742 .flex-item-10-percent {
5743 flex-grow: 0;
5744 flex-shrink: 0;
5745 flex-basis: 10%;
5746 }
5747
5748 .flex-item-15-percent {
5749 flex-grow: 0;
5750 flex-shrink: 0;
5751 flex-basis: 15%;
5752 }
5753
5754 .flex-item-20-percent {
5755 flex-grow: 0;
5756 flex-shrink: 0;
5757 flex-basis: 20%;
5758 }
5759
5760 .flex-item-30-percent {
5761 flex-grow: 0;
5762 flex-shrink: 0;
5763 flex-basis: 30%;
5764 }
5765
5766 .flex-item-40-percent {
5767 flex-grow: 0;
5768 flex-shrink: 0;
5769 flex-basis: 40%;
5770 }
5771
5772 .flex-item-50-percent {
5773 flex-grow: 0;
5774 flex-shrink: 0;
5775 flex-basis: 50%;
5776 }
5777
5778 .flex-item-60-percent {
5779 flex-grow: 0;
5780 flex-shrink: 0;
5781 flex-basis: 60%;
5782 }
5783
5784 .flex-item-70-percent {
5785 flex-grow: 0;
5786 flex-shrink: 0;
5787 flex-basis: 70%;
5788 }
5789
5790 .flex-item-80-percent {
5791 flex-grow: 0;
5792 flex-shrink: 0;
5793 flex-basis: 80%;
5794 }
5795
5796 .well {
5797 min-height: 20px;
5798 padding: 19px;
5799 margin-bottom: 20px;
5800 background-color: #f5f5f5;
5801 border: 1px solid #e3e3e3;
5802 border-radius: 4px;
5803 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
5804 }
5805
5806 .break-wrap {
5807 word-wrap: break-word;
5808 }
5809 </style>
5810 <div class="flex-row">
5811 <div class="flex-item-fixed-1-12">
5812 </div>
5813 <div class="flex-item-fixed-1-12">
5814 #{{ frame['depth'] }}
5815 </div>
5816 <div class="flex-item-fixed-9-12">
5817 <function-ref ref="{{ frame['function'] }}"></function-ref>
5818 ( <script-ref ref="{{ frame['script'] }}" pos="{{ frame['tokenPos'] }} ">
5819 </script-ref> )
5820
5821 <curly-block>
5822 <div class="memberList">
5823 <template repeat="{{ v in frame['vars'] }}">
5824 <div class="memberItem">
5825 <div class="memberName">{{ v['name']}}</div>
5826 <div class="memberValue">
5827 <instance-ref ref="{{ v['value'] }}"></instance-ref>
5828 </div>
5829 </div>
5830 </template>
5831 </div>
5832 </curly-block>
5833 </div>
5834 <div class="flex-item-fixed-1-12">
5835 </div>
5836 </div>
5837 </template>
5838 </polymer-element>
5839
5840 <polymer-element name="flag-list" extends="observatory-element">
5841 <template>
5842 <style>
5843 /* Global styles */
5844 * {
5845 margin: 0;
5846 padding: 0;
5847 font: 400 14px 'Montserrat', sans-serif;
5848 color: #333;
5849 box-sizing: border-box;
5850 }
5851
5852 .content {
5853 padding-left: 10%;
5854 font: 400 14px 'Montserrat', sans-serif;
5855 }
5856
5857 .content-centered {
5858 padding-left: 10%;
5859 padding-right: 10%;
5860 font: 400 14px 'Montserrat', sans-serif;
5861 }
5862
5863 .content-centered-big {
5864 padding-left: 5%;
5865 padding-right: 5%;
5866 font: 400 14px 'Montserrat', sans-serif;
5867 }
5868
5869 h1 {
5870 font: 400 18px 'Montserrat', sans-serif;
5871 }
5872
5873 .memberList {
5874 display: table;
5875 }
5876
5877 .memberItem {
5878 display: table-row;
5879 }
5880
5881 .memberName, .memberValue {
5882 display: table-cell;
5883 vertical-align: top;
5884 padding: 3px 0 3px 1em;
5885 font: 400 14px 'Montserrat', sans-serif;
5886 }
5887
5888 .monospace {
5889 font-family: consolas, courier, monospace;
5890 font-size: 1em;
5891 line-height: 1.2em;
5892 white-space: nowrap;
5893 }
5894
5895 a {
5896 color: #0489c3;
5897 text-decoration: none;
5898 }
5899
5900 a:hover {
5901 text-decoration: underline;
5902 }
5903
5904 em {
5905 color: inherit;
5906 font-style: italic;
5907 }
5908
5909 b {
5910 color: inherit;
5911 font-weight: bold;
5912 }
5913
5914 hr {
5915 margin-top: 20px;
5916 margin-bottom: 20px;
5917 border: 0;
5918 border-top: 1px solid #eee;
5919 height: 0;
5920 box-sizing: content-box;
5921 }
5922
5923 .list-group {
5924 padding-left: 0;
5925 margin-bottom: 20px;
5926 }
5927
5928 .list-group-item {
5929 position: relative;
5930 display: block;
5931 padding: 10px 15px;
5932 margin-bottom: -1px;
5933 background-color: #fff;
5934 }
5935
5936 .list-group-item:first-child {
5937 /* rounded top corners */
5938 border-top-right-radius:4px;
5939 border-top-left-radius:4px;
5940 }
5941
5942 .list-group-item:last-child {
5943 margin-bottom: 0;
5944 /* rounded bottom corners */
5945 border-bottom-right-radius: 4px;
5946 border-bottom-left-radius:4px;
5947 }
5948
5949 /* Flex row container */
5950 .flex-row {
5951 display: flex;
5952 flex-direction: row;
5953 }
5954
5955 /* Flex column container */
5956 .flex-column {
5957 display: flex;
5958 flex-direction: column;
5959 }
5960
5961 .flex-item-fit {
5962 flex-grow: 1;
5963 flex-shrink: 1;
5964 flex-basis: auto;
5965 }
5966
5967 .flex-item-no-shrink {
5968 flex-grow: 0;
5969 flex-shrink: 0;
5970 flex-basis: auto;
5971 }
5972
5973 .flex-item-fill {
5974 flex-grow: 0;
5975 flex-shrink: 1; /* shrink when pressured */
5976 flex-basis: 100%; /* try and take 100% */
5977 }
5978
5979 .flex-item-fixed-1-12 {
5980 flex-grow: 0;
5981 flex-shrink: 0;
5982 flex-basis: 8.3%;
5983 }
5984
5985 .flex-item-fixed-2-12 {
5986 flex-grow: 0;
5987 flex-shrink: 0;
5988 flex-basis: 16.6%;
5989 }
5990
5991 .flex-item-fixed-4-12 {
5992 flex-grow: 0;
5993 flex-shrink: 0;
5994 flex-basis: 33.3333%;
5995 }
5996
5997 .flex-item-fixed-6-12, .flex-item-50-percent {
5998 flex-grow: 0;
5999 flex-shrink: 0;
6000 flex-basis: 50%;
6001 }
6002
6003 .flex-item-fixed-8-12 {
6004 flex-grow: 0;
6005 flex-shrink: 0;
6006 flex-basis: 66.6666%;
6007 }
6008
6009 .flex-item-fixed-9-12 {
6010 flex-grow: 0;
6011 flex-shrink: 0;
6012 flex-basis: 75%;
6013 }
6014
6015
6016 .flex-item-fixed-12-12 {
6017 flex-grow: 0;
6018 flex-shrink: 0;
6019 flex-basis: 100%;
6020 }
6021
6022 .flex-item-10-percent {
6023 flex-grow: 0;
6024 flex-shrink: 0;
6025 flex-basis: 10%;
6026 }
6027
6028 .flex-item-15-percent {
6029 flex-grow: 0;
6030 flex-shrink: 0;
6031 flex-basis: 15%;
6032 }
6033
6034 .flex-item-20-percent {
6035 flex-grow: 0;
6036 flex-shrink: 0;
6037 flex-basis: 20%;
6038 }
6039
6040 .flex-item-30-percent {
6041 flex-grow: 0;
6042 flex-shrink: 0;
6043 flex-basis: 30%;
6044 }
6045
6046 .flex-item-40-percent {
6047 flex-grow: 0;
6048 flex-shrink: 0;
6049 flex-basis: 40%;
6050 }
6051
6052 .flex-item-50-percent {
6053 flex-grow: 0;
6054 flex-shrink: 0;
6055 flex-basis: 50%;
6056 }
6057
6058 .flex-item-60-percent {
6059 flex-grow: 0;
6060 flex-shrink: 0;
6061 flex-basis: 60%;
6062 }
6063
6064 .flex-item-70-percent {
6065 flex-grow: 0;
6066 flex-shrink: 0;
6067 flex-basis: 70%;
6068 }
6069
6070 .flex-item-80-percent {
6071 flex-grow: 0;
6072 flex-shrink: 0;
6073 flex-basis: 80%;
6074 }
6075
6076 .well {
6077 min-height: 20px;
6078 padding: 19px;
6079 margin-bottom: 20px;
6080 background-color: #f5f5f5;
6081 border: 1px solid #e3e3e3;
6082 border-radius: 4px;
6083 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
6084 }
6085
6086 .break-wrap {
6087 word-wrap: break-word;
6088 }
6089 </style>
6090 <nav-bar>
6091 <top-nav-menu></top-nav-menu>
6092 <nav-menu link="{{ flagList.vm.relativeLink('flags') }}" anchor="flags" la st="{{ true }}"></nav-menu>
6093 <nav-refresh callback="{{ refresh }}"></nav-refresh>
6094 <nav-control></nav-control>
6095 </nav-bar>
6096
6097 <div class="content-centered">
6098 <template if="{{ flagList['modifiedFlags'].isNotEmpty }}">
6099 <h1>Modified Flags</h1>
6100 <br>
6101 <template repeat="{{ flag in flagList['modifiedFlags'] }}">
6102 <flag-item flag="{{ flag }}"></flag-item>
6103 <br>
6104 </template>
6105 <hr>
6106 </template>
6107
6108 <h1>Unmodified Flags</h1>
6109 <br>
6110 <template if="{{ flagList['unmodifiedFlags'].isEmpty }}">
6111 <em>None</em>
6112 </template>
6113 <template if="{{ flagList['unmodifiedFlags'].isNotEmpty }}">
6114 <template repeat="{{ flag in flagList['unmodifiedFlags'] }}">
6115 <flag-item flag="{{ flag }}"></flag-item>
6116 <br>
6117 </template>
6118 </template>
6119 </div>
6120
6121 </template>
6122 </polymer-element>
6123
6124 <polymer-element name="flag-item" extends="observatory-element">
6125 <template>
6126 <style>
6127 /* Global styles */
6128 * {
6129 margin: 0;
6130 padding: 0;
6131 font: 400 14px 'Montserrat', sans-serif;
6132 color: #333;
6133 box-sizing: border-box;
6134 }
6135
6136 .content {
6137 padding-left: 10%;
6138 font: 400 14px 'Montserrat', sans-serif;
6139 }
6140
6141 .content-centered {
6142 padding-left: 10%;
6143 padding-right: 10%;
6144 font: 400 14px 'Montserrat', sans-serif;
6145 }
6146
6147 .content-centered-big {
6148 padding-left: 5%;
6149 padding-right: 5%;
6150 font: 400 14px 'Montserrat', sans-serif;
6151 }
6152
6153 h1 {
6154 font: 400 18px 'Montserrat', sans-serif;
6155 }
6156
6157 .memberList {
6158 display: table;
6159 }
6160
6161 .memberItem {
6162 display: table-row;
6163 }
6164
6165 .memberName, .memberValue {
6166 display: table-cell;
6167 vertical-align: top;
6168 padding: 3px 0 3px 1em;
6169 font: 400 14px 'Montserrat', sans-serif;
6170 }
6171
6172 .monospace {
6173 font-family: consolas, courier, monospace;
6174 font-size: 1em;
6175 line-height: 1.2em;
6176 white-space: nowrap;
6177 }
6178
6179 a {
6180 color: #0489c3;
6181 text-decoration: none;
6182 }
6183
6184 a:hover {
6185 text-decoration: underline;
6186 }
6187
6188 em {
6189 color: inherit;
6190 font-style: italic;
6191 }
6192
6193 b {
6194 color: inherit;
6195 font-weight: bold;
6196 }
6197
6198 hr {
6199 margin-top: 20px;
6200 margin-bottom: 20px;
6201 border: 0;
6202 border-top: 1px solid #eee;
6203 height: 0;
6204 box-sizing: content-box;
6205 }
6206
6207 .list-group {
6208 padding-left: 0;
6209 margin-bottom: 20px;
6210 }
6211
6212 .list-group-item {
6213 position: relative;
6214 display: block;
6215 padding: 10px 15px;
6216 margin-bottom: -1px;
6217 background-color: #fff;
6218 }
6219
6220 .list-group-item:first-child {
6221 /* rounded top corners */
6222 border-top-right-radius:4px;
6223 border-top-left-radius:4px;
6224 }
6225
6226 .list-group-item:last-child {
6227 margin-bottom: 0;
6228 /* rounded bottom corners */
6229 border-bottom-right-radius: 4px;
6230 border-bottom-left-radius:4px;
6231 }
6232
6233 /* Flex row container */
6234 .flex-row {
6235 display: flex;
6236 flex-direction: row;
6237 }
6238
6239 /* Flex column container */
6240 .flex-column {
6241 display: flex;
6242 flex-direction: column;
6243 }
6244
6245 .flex-item-fit {
6246 flex-grow: 1;
6247 flex-shrink: 1;
6248 flex-basis: auto;
6249 }
6250
6251 .flex-item-no-shrink {
6252 flex-grow: 0;
6253 flex-shrink: 0;
6254 flex-basis: auto;
6255 }
6256
6257 .flex-item-fill {
6258 flex-grow: 0;
6259 flex-shrink: 1; /* shrink when pressured */
6260 flex-basis: 100%; /* try and take 100% */
6261 }
6262
6263 .flex-item-fixed-1-12 {
6264 flex-grow: 0;
6265 flex-shrink: 0;
6266 flex-basis: 8.3%;
6267 }
6268
6269 .flex-item-fixed-2-12 {
6270 flex-grow: 0;
6271 flex-shrink: 0;
6272 flex-basis: 16.6%;
6273 }
6274
6275 .flex-item-fixed-4-12 {
6276 flex-grow: 0;
6277 flex-shrink: 0;
6278 flex-basis: 33.3333%;
6279 }
6280
6281 .flex-item-fixed-6-12, .flex-item-50-percent {
6282 flex-grow: 0;
6283 flex-shrink: 0;
6284 flex-basis: 50%;
6285 }
6286
6287 .flex-item-fixed-8-12 {
6288 flex-grow: 0;
6289 flex-shrink: 0;
6290 flex-basis: 66.6666%;
6291 }
6292
6293 .flex-item-fixed-9-12 {
6294 flex-grow: 0;
6295 flex-shrink: 0;
6296 flex-basis: 75%;
6297 }
6298
6299
6300 .flex-item-fixed-12-12 {
6301 flex-grow: 0;
6302 flex-shrink: 0;
6303 flex-basis: 100%;
6304 }
6305
6306 .flex-item-10-percent {
6307 flex-grow: 0;
6308 flex-shrink: 0;
6309 flex-basis: 10%;
6310 }
6311
6312 .flex-item-15-percent {
6313 flex-grow: 0;
6314 flex-shrink: 0;
6315 flex-basis: 15%;
6316 }
6317
6318 .flex-item-20-percent {
6319 flex-grow: 0;
6320 flex-shrink: 0;
6321 flex-basis: 20%;
6322 }
6323
6324 .flex-item-30-percent {
6325 flex-grow: 0;
6326 flex-shrink: 0;
6327 flex-basis: 30%;
6328 }
6329
6330 .flex-item-40-percent {
6331 flex-grow: 0;
6332 flex-shrink: 0;
6333 flex-basis: 40%;
6334 }
6335
6336 .flex-item-50-percent {
6337 flex-grow: 0;
6338 flex-shrink: 0;
6339 flex-basis: 50%;
6340 }
6341
6342 .flex-item-60-percent {
6343 flex-grow: 0;
6344 flex-shrink: 0;
6345 flex-basis: 60%;
6346 }
6347
6348 .flex-item-70-percent {
6349 flex-grow: 0;
6350 flex-shrink: 0;
6351 flex-basis: 70%;
6352 }
6353
6354 .flex-item-80-percent {
6355 flex-grow: 0;
6356 flex-shrink: 0;
6357 flex-basis: 80%;
6358 }
6359
6360 .well {
6361 min-height: 20px;
6362 padding: 19px;
6363 margin-bottom: 20px;
6364 background-color: #f5f5f5;
6365 border: 1px solid #e3e3e3;
6366 border-radius: 4px;
6367 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
6368 }
6369
6370 .break-wrap {
6371 word-wrap: break-word;
6372 }
6373 </style>
6374 <span style="color:#aaa">// {{ flag['comment'] }}</span>
6375 <div style="padding: 3px 0">
6376 <b>{{ flag['name'] }}</b>
6377 &nbsp;=&nbsp;
6378 {{ flag['valueAsString'] }}
6379 </div>
6380 </template>
6381 </polymer-element>
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394 <polymer-element name="function-view" extends="observatory-element">
6395 <template>
6396 <style>
6397 /* Global styles */
6398 * {
6399 margin: 0;
6400 padding: 0;
6401 font: 400 14px 'Montserrat', sans-serif;
6402 color: #333;
6403 box-sizing: border-box;
6404 }
6405
6406 .content {
6407 padding-left: 10%;
6408 font: 400 14px 'Montserrat', sans-serif;
6409 }
6410
6411 .content-centered {
6412 padding-left: 10%;
6413 padding-right: 10%;
6414 font: 400 14px 'Montserrat', sans-serif;
6415 }
6416
6417 .content-centered-big {
6418 padding-left: 5%;
6419 padding-right: 5%;
6420 font: 400 14px 'Montserrat', sans-serif;
6421 }
6422
6423 h1 {
6424 font: 400 18px 'Montserrat', sans-serif;
6425 }
6426
6427 .memberList {
6428 display: table;
6429 }
6430
6431 .memberItem {
6432 display: table-row;
6433 }
6434
6435 .memberName, .memberValue {
6436 display: table-cell;
6437 vertical-align: top;
6438 padding: 3px 0 3px 1em;
6439 font: 400 14px 'Montserrat', sans-serif;
6440 }
6441
6442 .monospace {
6443 font-family: consolas, courier, monospace;
6444 font-size: 1em;
6445 line-height: 1.2em;
6446 white-space: nowrap;
6447 }
6448
6449 a {
6450 color: #0489c3;
6451 text-decoration: none;
6452 }
6453
6454 a:hover {
6455 text-decoration: underline;
6456 }
6457
6458 em {
6459 color: inherit;
6460 font-style: italic;
6461 }
6462
6463 b {
6464 color: inherit;
6465 font-weight: bold;
6466 }
6467
6468 hr {
6469 margin-top: 20px;
6470 margin-bottom: 20px;
6471 border: 0;
6472 border-top: 1px solid #eee;
6473 height: 0;
6474 box-sizing: content-box;
6475 }
6476
6477 .list-group {
6478 padding-left: 0;
6479 margin-bottom: 20px;
6480 }
6481
6482 .list-group-item {
6483 position: relative;
6484 display: block;
6485 padding: 10px 15px;
6486 margin-bottom: -1px;
6487 background-color: #fff;
6488 }
6489
6490 .list-group-item:first-child {
6491 /* rounded top corners */
6492 border-top-right-radius:4px;
6493 border-top-left-radius:4px;
6494 }
6495
6496 .list-group-item:last-child {
6497 margin-bottom: 0;
6498 /* rounded bottom corners */
6499 border-bottom-right-radius: 4px;
6500 border-bottom-left-radius:4px;
6501 }
6502
6503 /* Flex row container */
6504 .flex-row {
6505 display: flex;
6506 flex-direction: row;
6507 }
6508
6509 /* Flex column container */
6510 .flex-column {
6511 display: flex;
6512 flex-direction: column;
6513 }
6514
6515 .flex-item-fit {
6516 flex-grow: 1;
6517 flex-shrink: 1;
6518 flex-basis: auto;
6519 }
6520
6521 .flex-item-no-shrink {
6522 flex-grow: 0;
6523 flex-shrink: 0;
6524 flex-basis: auto;
6525 }
6526
6527 .flex-item-fill {
6528 flex-grow: 0;
6529 flex-shrink: 1; /* shrink when pressured */
6530 flex-basis: 100%; /* try and take 100% */
6531 }
6532
6533 .flex-item-fixed-1-12 {
6534 flex-grow: 0;
6535 flex-shrink: 0;
6536 flex-basis: 8.3%;
6537 }
6538
6539 .flex-item-fixed-2-12 {
6540 flex-grow: 0;
6541 flex-shrink: 0;
6542 flex-basis: 16.6%;
6543 }
6544
6545 .flex-item-fixed-4-12 {
6546 flex-grow: 0;
6547 flex-shrink: 0;
6548 flex-basis: 33.3333%;
6549 }
6550
6551 .flex-item-fixed-6-12, .flex-item-50-percent {
6552 flex-grow: 0;
6553 flex-shrink: 0;
6554 flex-basis: 50%;
6555 }
6556
6557 .flex-item-fixed-8-12 {
6558 flex-grow: 0;
6559 flex-shrink: 0;
6560 flex-basis: 66.6666%;
6561 }
6562
6563 .flex-item-fixed-9-12 {
6564 flex-grow: 0;
6565 flex-shrink: 0;
6566 flex-basis: 75%;
6567 }
6568
6569
6570 .flex-item-fixed-12-12 {
6571 flex-grow: 0;
6572 flex-shrink: 0;
6573 flex-basis: 100%;
6574 }
6575
6576 .flex-item-10-percent {
6577 flex-grow: 0;
6578 flex-shrink: 0;
6579 flex-basis: 10%;
6580 }
6581
6582 .flex-item-15-percent {
6583 flex-grow: 0;
6584 flex-shrink: 0;
6585 flex-basis: 15%;
6586 }
6587
6588 .flex-item-20-percent {
6589 flex-grow: 0;
6590 flex-shrink: 0;
6591 flex-basis: 20%;
6592 }
6593
6594 .flex-item-30-percent {
6595 flex-grow: 0;
6596 flex-shrink: 0;
6597 flex-basis: 30%;
6598 }
6599
6600 .flex-item-40-percent {
6601 flex-grow: 0;
6602 flex-shrink: 0;
6603 flex-basis: 40%;
6604 }
6605
6606 .flex-item-50-percent {
6607 flex-grow: 0;
6608 flex-shrink: 0;
6609 flex-basis: 50%;
6610 }
6611
6612 .flex-item-60-percent {
6613 flex-grow: 0;
6614 flex-shrink: 0;
6615 flex-basis: 60%;
6616 }
6617
6618 .flex-item-70-percent {
6619 flex-grow: 0;
6620 flex-shrink: 0;
6621 flex-basis: 70%;
6622 }
6623
6624 .flex-item-80-percent {
6625 flex-grow: 0;
6626 flex-shrink: 0;
6627 flex-basis: 80%;
6628 }
6629
6630 .well {
6631 min-height: 20px;
6632 padding: 19px;
6633 margin-bottom: 20px;
6634 background-color: #f5f5f5;
6635 border: 1px solid #e3e3e3;
6636 border-radius: 4px;
6637 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
6638 }
6639
6640 .break-wrap {
6641 word-wrap: break-word;
6642 }
6643 </style>
6644 <nav-bar>
6645 <top-nav-menu></top-nav-menu>
6646 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu>
6647 <template if="{{ function.owningClass != null }}">
6648 <!-- TODO(turnidge): Add library nav menu here. -->
6649 <class-nav-menu cls="{{ function.owningClass }}"></class-nav-menu>
6650 </template>
6651 <template if="{{ function.owningLibrary != null }}">
6652 <library-nav-menu library="{{ function.owningLibrary }}"></library-nav-m enu>
6653 </template>
6654 <nav-menu link="{{ function.link }}" anchor="{{ function.name }}" last="{{ true }}"></nav-menu>
6655 <nav-refresh callback="{{ refreshCoverage }}" label="Refresh Coverage"></n av-refresh>
6656 <nav-refresh callback="{{ refresh }}"></nav-refresh>
6657 <nav-control></nav-control>
6658 </nav-bar>
6659
6660 <div class="content">
6661 <h1>function {{ function.qualifiedName }}</h1>
6662
6663 <div class="memberList">
6664 <div class="memberItem">
6665 <div class="memberName">kind</div>
6666 <div class="memberValue">
6667 <template if="{{ function.isStatic }}">static</template>
6668 <template if="{{ function.isConst }}">const</template>
6669 {{ function.kind.toString() }}
6670 </div>
6671 </div>
6672 <template if="{{ function.parent != null }}">
6673 <div class="memberItem">
6674 <div class="memberName">parent function</div>
6675 <div class="memberValue">
6676 <function-ref ref="{{ function.parent }}"></function-ref>
6677 </div>
6678 </div>
6679 </template>
6680 <div class="memberItem">
6681 <div class="memberName">owner</div>
6682 <div class="memberValue">
6683 <template if="{{ function.owningClass != null }}">
6684 <class-ref ref="{{ function.owningClass }}"></class-ref>
6685 </template>
6686 <template if="{{ function.owningLibrary != null }}">
6687 <library-ref ref="{{ function.owningLibrary }}"></library-ref>
6688 </template>
6689 </div>
6690 </div>
6691 <div class="memberItem">
6692 <div class="memberName">script</div>
6693 <div class="memberValue">
6694 <script-ref ref="{{ function.script }}" pos="{{ function.tokenPos }} ">
6695 </script-ref>
6696 </div>
6697 </div>
6698
6699 <div class="memberItem">&nbsp;</div>
6700
6701 <template if="{{ function.code != null }}">
6702 <div class="memberItem">
6703 <div class="memberName">optimized code</div>
6704 <div class="memberValue">
6705 <code-ref ref="{{ function.code }}"></code-ref>
6706 </div>
6707 </div>
6708 </template>
6709 <template if="{{ function.unoptimizedCode != null }}">
6710 <div class="memberItem">
6711 <div class="memberName">unoptimized code</div>
6712 <div class="memberValue">
6713 <code-ref ref="{{ function.unoptimizedCode }}"></code-ref>
6714 </div>
6715 <div class="memberValue">
6716 <span title="This count is used to determine when a function wil l be optimized. It is a combination of call counts and other factors.">
6717 (usage count: {{ function.usageCounter }})
6718 </span>
6719 </div>
6720 </div>
6721 </template>
6722 <div class="memberItem">
6723 <div class="memberName">deoptimizations</div>
6724 <div class="memberValue">{{ function.deoptimizations }}</div>
6725 </div>
6726 <div class="memberItem">
6727 <div class="memberName">optimizable</div>
6728 <div class="memberValue">{{ function.isOptimizable }}</div>
6729 </div>
6730 <div class="memberItem">
6731 <div class="memberName">inlinable</div>
6732 <div class="memberValue">{{ function.isInlinable }}</div>
6733 </div>
6734 <template if="{{ function.name != function.vmName }}">
6735 <div class="memberItem">
6736 <div class="memberName">vm name</div>
6737 <div class="memberValue">{{ function.vmName }}</div>
6738 </div>
6739 </template>
6740 </div>
6741 </div>
6742
6743 <hr>
6744 <script-inset script="{{ function.script }}" startpos="{{ function.tokenPos }}" endpos="{{ function.endTokenPos }}">
6745 </script-inset>
6746
6747 <br>
6748 </template>
6749 </polymer-element>
6750
6751
6752
6753
6754
6755
6756
6757 <polymer-element name="heap-map" extends="observatory-element">
6758 <template>
6759 <style>
6760 /* Global styles */
6761 * {
6762 margin: 0;
6763 padding: 0;
6764 font: 400 14px 'Montserrat', sans-serif;
6765 color: #333;
6766 box-sizing: border-box;
6767 }
6768
6769 .content {
6770 padding-left: 10%;
6771 font: 400 14px 'Montserrat', sans-serif;
6772 }
6773
6774 .content-centered {
6775 padding-left: 10%;
6776 padding-right: 10%;
6777 font: 400 14px 'Montserrat', sans-serif;
6778 }
6779
6780 .content-centered-big {
6781 padding-left: 5%;
6782 padding-right: 5%;
6783 font: 400 14px 'Montserrat', sans-serif;
6784 }
6785
6786 h1 {
6787 font: 400 18px 'Montserrat', sans-serif;
6788 }
6789
6790 .memberList {
6791 display: table;
6792 }
6793
6794 .memberItem {
6795 display: table-row;
6796 }
6797
6798 .memberName, .memberValue {
6799 display: table-cell;
6800 vertical-align: top;
6801 padding: 3px 0 3px 1em;
6802 font: 400 14px 'Montserrat', sans-serif;
6803 }
6804
6805 .monospace {
6806 font-family: consolas, courier, monospace;
6807 font-size: 1em;
6808 line-height: 1.2em;
6809 white-space: nowrap;
6810 }
6811
6812 a {
6813 color: #0489c3;
6814 text-decoration: none;
6815 }
6816
6817 a:hover {
6818 text-decoration: underline;
6819 }
6820
6821 em {
6822 color: inherit;
6823 font-style: italic;
6824 }
6825
6826 b {
6827 color: inherit;
6828 font-weight: bold;
6829 }
6830
6831 hr {
6832 margin-top: 20px;
6833 margin-bottom: 20px;
6834 border: 0;
6835 border-top: 1px solid #eee;
6836 height: 0;
6837 box-sizing: content-box;
6838 }
6839
6840 .list-group {
6841 padding-left: 0;
6842 margin-bottom: 20px;
6843 }
6844
6845 .list-group-item {
6846 position: relative;
6847 display: block;
6848 padding: 10px 15px;
6849 margin-bottom: -1px;
6850 background-color: #fff;
6851 }
6852
6853 .list-group-item:first-child {
6854 /* rounded top corners */
6855 border-top-right-radius:4px;
6856 border-top-left-radius:4px;
6857 }
6858
6859 .list-group-item:last-child {
6860 margin-bottom: 0;
6861 /* rounded bottom corners */
6862 border-bottom-right-radius: 4px;
6863 border-bottom-left-radius:4px;
6864 }
6865
6866 /* Flex row container */
6867 .flex-row {
6868 display: flex;
6869 flex-direction: row;
6870 }
6871
6872 /* Flex column container */
6873 .flex-column {
6874 display: flex;
6875 flex-direction: column;
6876 }
6877
6878 .flex-item-fit {
6879 flex-grow: 1;
6880 flex-shrink: 1;
6881 flex-basis: auto;
6882 }
6883
6884 .flex-item-no-shrink {
6885 flex-grow: 0;
6886 flex-shrink: 0;
6887 flex-basis: auto;
6888 }
6889
6890 .flex-item-fill {
6891 flex-grow: 0;
6892 flex-shrink: 1; /* shrink when pressured */
6893 flex-basis: 100%; /* try and take 100% */
6894 }
6895
6896 .flex-item-fixed-1-12 {
6897 flex-grow: 0;
6898 flex-shrink: 0;
6899 flex-basis: 8.3%;
6900 }
6901
6902 .flex-item-fixed-2-12 {
6903 flex-grow: 0;
6904 flex-shrink: 0;
6905 flex-basis: 16.6%;
6906 }
6907
6908 .flex-item-fixed-4-12 {
6909 flex-grow: 0;
6910 flex-shrink: 0;
6911 flex-basis: 33.3333%;
6912 }
6913
6914 .flex-item-fixed-6-12, .flex-item-50-percent {
6915 flex-grow: 0;
6916 flex-shrink: 0;
6917 flex-basis: 50%;
6918 }
6919
6920 .flex-item-fixed-8-12 {
6921 flex-grow: 0;
6922 flex-shrink: 0;
6923 flex-basis: 66.6666%;
6924 }
6925
6926 .flex-item-fixed-9-12 {
6927 flex-grow: 0;
6928 flex-shrink: 0;
6929 flex-basis: 75%;
6930 }
6931
6932
6933 .flex-item-fixed-12-12 {
6934 flex-grow: 0;
6935 flex-shrink: 0;
6936 flex-basis: 100%;
6937 }
6938
6939 .flex-item-10-percent {
6940 flex-grow: 0;
6941 flex-shrink: 0;
6942 flex-basis: 10%;
6943 }
6944
6945 .flex-item-15-percent {
6946 flex-grow: 0;
6947 flex-shrink: 0;
6948 flex-basis: 15%;
6949 }
6950
6951 .flex-item-20-percent {
6952 flex-grow: 0;
6953 flex-shrink: 0;
6954 flex-basis: 20%;
6955 }
6956
6957 .flex-item-30-percent {
6958 flex-grow: 0;
6959 flex-shrink: 0;
6960 flex-basis: 30%;
6961 }
6962
6963 .flex-item-40-percent {
6964 flex-grow: 0;
6965 flex-shrink: 0;
6966 flex-basis: 40%;
6967 }
6968
6969 .flex-item-50-percent {
6970 flex-grow: 0;
6971 flex-shrink: 0;
6972 flex-basis: 50%;
6973 }
6974
6975 .flex-item-60-percent {
6976 flex-grow: 0;
6977 flex-shrink: 0;
6978 flex-basis: 60%;
6979 }
6980
6981 .flex-item-70-percent {
6982 flex-grow: 0;
6983 flex-shrink: 0;
6984 flex-basis: 70%;
6985 }
6986
6987 .flex-item-80-percent {
6988 flex-grow: 0;
6989 flex-shrink: 0;
6990 flex-basis: 80%;
6991 }
6992
6993 .well {
6994 min-height: 20px;
6995 padding: 19px;
6996 margin-bottom: 20px;
6997 background-color: #f5f5f5;
6998 border: 1px solid #e3e3e3;
6999 border-radius: 4px;
7000 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
7001 }
7002
7003 .break-wrap {
7004 word-wrap: break-word;
7005 }
7006 </style>
7007 <style>
7008 .hover {
7009 position: fixed;
7010 z-index: 999;
7011 height: 16px;
7012 width: 100%;
7013 background: #ffffff;
7014 }
7015 .spacer {
7016 height: 16px;
7017 background-color: red;
7018 }
7019 </style>
7020 <nav-bar pad="{{ false }}">
7021 <top-nav-menu></top-nav-menu>
7022 <isolate-nav-menu isolate="{{ fragmentation.isolate }}"></isolate-nav-menu>
7023 <nav-menu link="{{ fragmentation.isolate.relativeLink('heapmap') }}" anchor= "heap map" last="{{ true }}"></nav-menu>
7024 <nav-refresh callback="{{ refresh }}"></nav-refresh>
7025 <nav-control></nav-control>
7026 </nav-bar>
7027 <div class="hover">
7028 <p style="text-align:center">{{ status }}</p>
7029 </div>
7030 <div class="spacer">
7031 <!-- Make sure no data is covered by hover bar initially -->
7032 </div>
7033 <div class="flex-row">
7034 <canvas id="fragmentation" width="1px" height="1px"></canvas>
7035 </div>
7036 </template>
7037 </polymer-element>
7038
7039
7040
7041
7042
7043
7044 <polymer-element name="io-view" extends="observatory-element">
7045 <template>
7046 <style>
7047 /* Global styles */
7048 * {
7049 margin: 0;
7050 padding: 0;
7051 font: 400 14px 'Montserrat', sans-serif;
7052 color: #333;
7053 box-sizing: border-box;
7054 }
7055
7056 .content {
7057 padding-left: 10%;
7058 font: 400 14px 'Montserrat', sans-serif;
7059 }
7060
7061 .content-centered {
7062 padding-left: 10%;
7063 padding-right: 10%;
7064 font: 400 14px 'Montserrat', sans-serif;
7065 }
7066
7067 .content-centered-big {
7068 padding-left: 5%;
7069 padding-right: 5%;
7070 font: 400 14px 'Montserrat', sans-serif;
7071 }
7072
7073 h1 {
7074 font: 400 18px 'Montserrat', sans-serif;
7075 }
7076
7077 .memberList {
7078 display: table;
7079 }
7080
7081 .memberItem {
7082 display: table-row;
7083 }
7084
7085 .memberName, .memberValue {
7086 display: table-cell;
7087 vertical-align: top;
7088 padding: 3px 0 3px 1em;
7089 font: 400 14px 'Montserrat', sans-serif;
7090 }
7091
7092 .monospace {
7093 font-family: consolas, courier, monospace;
7094 font-size: 1em;
7095 line-height: 1.2em;
7096 white-space: nowrap;
7097 }
7098
7099 a {
7100 color: #0489c3;
7101 text-decoration: none;
7102 }
7103
7104 a:hover {
7105 text-decoration: underline;
7106 }
7107
7108 em {
7109 color: inherit;
7110 font-style: italic;
7111 }
7112
7113 b {
7114 color: inherit;
7115 font-weight: bold;
7116 }
7117
7118 hr {
7119 margin-top: 20px;
7120 margin-bottom: 20px;
7121 border: 0;
7122 border-top: 1px solid #eee;
7123 height: 0;
7124 box-sizing: content-box;
7125 }
7126
7127 .list-group {
7128 padding-left: 0;
7129 margin-bottom: 20px;
7130 }
7131
7132 .list-group-item {
7133 position: relative;
7134 display: block;
7135 padding: 10px 15px;
7136 margin-bottom: -1px;
7137 background-color: #fff;
7138 }
7139
7140 .list-group-item:first-child {
7141 /* rounded top corners */
7142 border-top-right-radius:4px;
7143 border-top-left-radius:4px;
7144 }
7145
7146 .list-group-item:last-child {
7147 margin-bottom: 0;
7148 /* rounded bottom corners */
7149 border-bottom-right-radius: 4px;
7150 border-bottom-left-radius:4px;
7151 }
7152
7153 /* Flex row container */
7154 .flex-row {
7155 display: flex;
7156 flex-direction: row;
7157 }
7158
7159 /* Flex column container */
7160 .flex-column {
7161 display: flex;
7162 flex-direction: column;
7163 }
7164
7165 .flex-item-fit {
7166 flex-grow: 1;
7167 flex-shrink: 1;
7168 flex-basis: auto;
7169 }
7170
7171 .flex-item-no-shrink {
7172 flex-grow: 0;
7173 flex-shrink: 0;
7174 flex-basis: auto;
7175 }
7176
7177 .flex-item-fill {
7178 flex-grow: 0;
7179 flex-shrink: 1; /* shrink when pressured */
7180 flex-basis: 100%; /* try and take 100% */
7181 }
7182
7183 .flex-item-fixed-1-12 {
7184 flex-grow: 0;
7185 flex-shrink: 0;
7186 flex-basis: 8.3%;
7187 }
7188
7189 .flex-item-fixed-2-12 {
7190 flex-grow: 0;
7191 flex-shrink: 0;
7192 flex-basis: 16.6%;
7193 }
7194
7195 .flex-item-fixed-4-12 {
7196 flex-grow: 0;
7197 flex-shrink: 0;
7198 flex-basis: 33.3333%;
7199 }
7200
7201 .flex-item-fixed-6-12, .flex-item-50-percent {
7202 flex-grow: 0;
7203 flex-shrink: 0;
7204 flex-basis: 50%;
7205 }
7206
7207 .flex-item-fixed-8-12 {
7208 flex-grow: 0;
7209 flex-shrink: 0;
7210 flex-basis: 66.6666%;
7211 }
7212
7213 .flex-item-fixed-9-12 {
7214 flex-grow: 0;
7215 flex-shrink: 0;
7216 flex-basis: 75%;
7217 }
7218
7219
7220 .flex-item-fixed-12-12 {
7221 flex-grow: 0;
7222 flex-shrink: 0;
7223 flex-basis: 100%;
7224 }
7225
7226 .flex-item-10-percent {
7227 flex-grow: 0;
7228 flex-shrink: 0;
7229 flex-basis: 10%;
7230 }
7231
7232 .flex-item-15-percent {
7233 flex-grow: 0;
7234 flex-shrink: 0;
7235 flex-basis: 15%;
7236 }
7237
7238 .flex-item-20-percent {
7239 flex-grow: 0;
7240 flex-shrink: 0;
7241 flex-basis: 20%;
7242 }
7243
7244 .flex-item-30-percent {
7245 flex-grow: 0;
7246 flex-shrink: 0;
7247 flex-basis: 30%;
7248 }
7249
7250 .flex-item-40-percent {
7251 flex-grow: 0;
7252 flex-shrink: 0;
7253 flex-basis: 40%;
7254 }
7255
7256 .flex-item-50-percent {
7257 flex-grow: 0;
7258 flex-shrink: 0;
7259 flex-basis: 50%;
7260 }
7261
7262 .flex-item-60-percent {
7263 flex-grow: 0;
7264 flex-shrink: 0;
7265 flex-basis: 60%;
7266 }
7267
7268 .flex-item-70-percent {
7269 flex-grow: 0;
7270 flex-shrink: 0;
7271 flex-basis: 70%;
7272 }
7273
7274 .flex-item-80-percent {
7275 flex-grow: 0;
7276 flex-shrink: 0;
7277 flex-basis: 80%;
7278 }
7279
7280 .well {
7281 min-height: 20px;
7282 padding: 19px;
7283 margin-bottom: 20px;
7284 background-color: #f5f5f5;
7285 border: 1px solid #e3e3e3;
7286 border-radius: 4px;
7287 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
7288 }
7289
7290 .break-wrap {
7291 word-wrap: break-word;
7292 }
7293 </style>
7294
7295 <nav-bar>
7296 <top-nav-menu last="{{ true }}"></top-nav-menu>
7297 <nav-refresh callback="{{ refresh }}"></nav-refresh>
7298 <nav-control></nav-control>
7299 </nav-bar>
7300
7301 <div class="content">
7302 <h1>dart:io</h1>
7303
7304 <br>
7305
7306 <ul class="list-group">
7307 <li class="list-group-item">
7308 <a on-click="{{ goto }}" href="{{gotoLink(io.isolate.relativeLink('io/ http/servers'))}}">HTTP Servers</a>
7309 </li>
7310 </ul>
7311
7312 <br>
7313
7314 <ul class="list-group">
7315 <li class="list-group-item">
7316 <a on-click="{{ goto }}" href="{{gotoLink(io.isolate.relativeLink('io/ sockets'))}}">Sockets</a>
7317 </li>
7318 </ul>
7319
7320 <br>
7321
7322 <ul class="list-group">
7323 <li class="list-group-item">
7324 <a on-click="{{ goto }}" href="{{gotoLink(io.isolate.relativeLink('io/ websockets'))}}">WebSockets</a>
7325 </li>
7326 </ul>
7327
7328 <br>
7329
7330 <ul class="list-group">
7331 <li class="list-group-item">
7332 <a on-click="{{ goto }}" href="{{gotoLink(io.isolate.relativeLink('io/ file/randomaccessfiles'))}}">Random Access Files</a>
7333 </li>
7334 </ul>
7335
7336 <br>
7337
7338 <ul class="list-group">
7339 <li class="list-group-item">
7340 <a on-click="{{ goto }}" href="{{gotoLink(io.isolate.relativeLink('io/ processes'))}}">Processess</a>
7341 </li>
7342 </ul>
7343
7344 </div>
7345 <br>
7346 <hr>
7347 </template>
7348 </polymer-element>
7349
7350 <polymer-element name="io-ref" extends="service-ref">
7351 <template>
7352 <style>
7353 /* Global styles */
7354 * {
7355 margin: 0;
7356 padding: 0;
7357 font: 400 14px 'Montserrat', sans-serif;
7358 color: #333;
7359 box-sizing: border-box;
7360 }
7361
7362 .content {
7363 padding-left: 10%;
7364 font: 400 14px 'Montserrat', sans-serif;
7365 }
7366
7367 .content-centered {
7368 padding-left: 10%;
7369 padding-right: 10%;
7370 font: 400 14px 'Montserrat', sans-serif;
7371 }
7372
7373 .content-centered-big {
7374 padding-left: 5%;
7375 padding-right: 5%;
7376 font: 400 14px 'Montserrat', sans-serif;
7377 }
7378
7379 h1 {
7380 font: 400 18px 'Montserrat', sans-serif;
7381 }
7382
7383 .memberList {
7384 display: table;
7385 }
7386
7387 .memberItem {
7388 display: table-row;
7389 }
7390
7391 .memberName, .memberValue {
7392 display: table-cell;
7393 vertical-align: top;
7394 padding: 3px 0 3px 1em;
7395 font: 400 14px 'Montserrat', sans-serif;
7396 }
7397
7398 .monospace {
7399 font-family: consolas, courier, monospace;
7400 font-size: 1em;
7401 line-height: 1.2em;
7402 white-space: nowrap;
7403 }
7404
7405 a {
7406 color: #0489c3;
7407 text-decoration: none;
7408 }
7409
7410 a:hover {
7411 text-decoration: underline;
7412 }
7413
7414 em {
7415 color: inherit;
7416 font-style: italic;
7417 }
7418
7419 b {
7420 color: inherit;
7421 font-weight: bold;
7422 }
7423
7424 hr {
7425 margin-top: 20px;
7426 margin-bottom: 20px;
7427 border: 0;
7428 border-top: 1px solid #eee;
7429 height: 0;
7430 box-sizing: content-box;
7431 }
7432
7433 .list-group {
7434 padding-left: 0;
7435 margin-bottom: 20px;
7436 }
7437
7438 .list-group-item {
7439 position: relative;
7440 display: block;
7441 padding: 10px 15px;
7442 margin-bottom: -1px;
7443 background-color: #fff;
7444 }
7445
7446 .list-group-item:first-child {
7447 /* rounded top corners */
7448 border-top-right-radius:4px;
7449 border-top-left-radius:4px;
7450 }
7451
7452 .list-group-item:last-child {
7453 margin-bottom: 0;
7454 /* rounded bottom corners */
7455 border-bottom-right-radius: 4px;
7456 border-bottom-left-radius:4px;
7457 }
7458
7459 /* Flex row container */
7460 .flex-row {
7461 display: flex;
7462 flex-direction: row;
7463 }
7464
7465 /* Flex column container */
7466 .flex-column {
7467 display: flex;
7468 flex-direction: column;
7469 }
7470
7471 .flex-item-fit {
7472 flex-grow: 1;
7473 flex-shrink: 1;
7474 flex-basis: auto;
7475 }
7476
7477 .flex-item-no-shrink {
7478 flex-grow: 0;
7479 flex-shrink: 0;
7480 flex-basis: auto;
7481 }
7482
7483 .flex-item-fill {
7484 flex-grow: 0;
7485 flex-shrink: 1; /* shrink when pressured */
7486 flex-basis: 100%; /* try and take 100% */
7487 }
7488
7489 .flex-item-fixed-1-12 {
7490 flex-grow: 0;
7491 flex-shrink: 0;
7492 flex-basis: 8.3%;
7493 }
7494
7495 .flex-item-fixed-2-12 {
7496 flex-grow: 0;
7497 flex-shrink: 0;
7498 flex-basis: 16.6%;
7499 }
7500
7501 .flex-item-fixed-4-12 {
7502 flex-grow: 0;
7503 flex-shrink: 0;
7504 flex-basis: 33.3333%;
7505 }
7506
7507 .flex-item-fixed-6-12, .flex-item-50-percent {
7508 flex-grow: 0;
7509 flex-shrink: 0;
7510 flex-basis: 50%;
7511 }
7512
7513 .flex-item-fixed-8-12 {
7514 flex-grow: 0;
7515 flex-shrink: 0;
7516 flex-basis: 66.6666%;
7517 }
7518
7519 .flex-item-fixed-9-12 {
7520 flex-grow: 0;
7521 flex-shrink: 0;
7522 flex-basis: 75%;
7523 }
7524
7525
7526 .flex-item-fixed-12-12 {
7527 flex-grow: 0;
7528 flex-shrink: 0;
7529 flex-basis: 100%;
7530 }
7531
7532 .flex-item-10-percent {
7533 flex-grow: 0;
7534 flex-shrink: 0;
7535 flex-basis: 10%;
7536 }
7537
7538 .flex-item-15-percent {
7539 flex-grow: 0;
7540 flex-shrink: 0;
7541 flex-basis: 15%;
7542 }
7543
7544 .flex-item-20-percent {
7545 flex-grow: 0;
7546 flex-shrink: 0;
7547 flex-basis: 20%;
7548 }
7549
7550 .flex-item-30-percent {
7551 flex-grow: 0;
7552 flex-shrink: 0;
7553 flex-basis: 30%;
7554 }
7555
7556 .flex-item-40-percent {
7557 flex-grow: 0;
7558 flex-shrink: 0;
7559 flex-basis: 40%;
7560 }
7561
7562 .flex-item-50-percent {
7563 flex-grow: 0;
7564 flex-shrink: 0;
7565 flex-basis: 50%;
7566 }
7567
7568 .flex-item-60-percent {
7569 flex-grow: 0;
7570 flex-shrink: 0;
7571 flex-basis: 60%;
7572 }
7573
7574 .flex-item-70-percent {
7575 flex-grow: 0;
7576 flex-shrink: 0;
7577 flex-basis: 70%;
7578 }
7579
7580 .flex-item-80-percent {
7581 flex-grow: 0;
7582 flex-shrink: 0;
7583 flex-basis: 80%;
7584 }
7585
7586 .well {
7587 min-height: 20px;
7588 padding: 19px;
7589 margin-bottom: 20px;
7590 background-color: #f5f5f5;
7591 border: 1px solid #e3e3e3;
7592 border-radius: 4px;
7593 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
7594 }
7595
7596 .break-wrap {
7597 word-wrap: break-word;
7598 }
7599 </style>
7600 <template if="{{ ref.serviceType == 'Socket' }}">
7601 <io-socket-ref ref="{{ ref }}"></io-socket-ref>
7602 </template>
7603 <template if="{{ ref.serviceType == 'HttpServerConnection' }}">
7604 <io-http-server-connection-ref ref="{{ ref }}"></io-http-server-connection -ref>
7605 </template>
7606 <template if="{{ ref.serviceType == 'HttpServer' }}">
7607 <io-http-server-ref ref="{{ ref }}"></io-http-server-ref>
7608 </template>
7609 <template if="{{ ref.serviceType == 'WebSocket' }}">
7610 <io-web-socket-ref ref="{{ ref }}"></io-web-socket-ref>
7611 </template>
7612 <template if="{{ ref.serviceType == 'Process' }}">
7613 <io-process-ref ref="{{ ref }}"></io-process-ref>
7614 </template>
7615 </template>
7616 </polymer-element>
7617
7618 <polymer-element name="io-http-server-list-view" extends="observatory-element">
7619 <template>
7620 <style>
7621 /* Global styles */
7622 * {
7623 margin: 0;
7624 padding: 0;
7625 font: 400 14px 'Montserrat', sans-serif;
7626 color: #333;
7627 box-sizing: border-box;
7628 }
7629
7630 .content {
7631 padding-left: 10%;
7632 font: 400 14px 'Montserrat', sans-serif;
7633 }
7634
7635 .content-centered {
7636 padding-left: 10%;
7637 padding-right: 10%;
7638 font: 400 14px 'Montserrat', sans-serif;
7639 }
7640
7641 .content-centered-big {
7642 padding-left: 5%;
7643 padding-right: 5%;
7644 font: 400 14px 'Montserrat', sans-serif;
7645 }
7646
7647 h1 {
7648 font: 400 18px 'Montserrat', sans-serif;
7649 }
7650
7651 .memberList {
7652 display: table;
7653 }
7654
7655 .memberItem {
7656 display: table-row;
7657 }
7658
7659 .memberName, .memberValue {
7660 display: table-cell;
7661 vertical-align: top;
7662 padding: 3px 0 3px 1em;
7663 font: 400 14px 'Montserrat', sans-serif;
7664 }
7665
7666 .monospace {
7667 font-family: consolas, courier, monospace;
7668 font-size: 1em;
7669 line-height: 1.2em;
7670 white-space: nowrap;
7671 }
7672
7673 a {
7674 color: #0489c3;
7675 text-decoration: none;
7676 }
7677
7678 a:hover {
7679 text-decoration: underline;
7680 }
7681
7682 em {
7683 color: inherit;
7684 font-style: italic;
7685 }
7686
7687 b {
7688 color: inherit;
7689 font-weight: bold;
7690 }
7691
7692 hr {
7693 margin-top: 20px;
7694 margin-bottom: 20px;
7695 border: 0;
7696 border-top: 1px solid #eee;
7697 height: 0;
7698 box-sizing: content-box;
7699 }
7700
7701 .list-group {
7702 padding-left: 0;
7703 margin-bottom: 20px;
7704 }
7705
7706 .list-group-item {
7707 position: relative;
7708 display: block;
7709 padding: 10px 15px;
7710 margin-bottom: -1px;
7711 background-color: #fff;
7712 }
7713
7714 .list-group-item:first-child {
7715 /* rounded top corners */
7716 border-top-right-radius:4px;
7717 border-top-left-radius:4px;
7718 }
7719
7720 .list-group-item:last-child {
7721 margin-bottom: 0;
7722 /* rounded bottom corners */
7723 border-bottom-right-radius: 4px;
7724 border-bottom-left-radius:4px;
7725 }
7726
7727 /* Flex row container */
7728 .flex-row {
7729 display: flex;
7730 flex-direction: row;
7731 }
7732
7733 /* Flex column container */
7734 .flex-column {
7735 display: flex;
7736 flex-direction: column;
7737 }
7738
7739 .flex-item-fit {
7740 flex-grow: 1;
7741 flex-shrink: 1;
7742 flex-basis: auto;
7743 }
7744
7745 .flex-item-no-shrink {
7746 flex-grow: 0;
7747 flex-shrink: 0;
7748 flex-basis: auto;
7749 }
7750
7751 .flex-item-fill {
7752 flex-grow: 0;
7753 flex-shrink: 1; /* shrink when pressured */
7754 flex-basis: 100%; /* try and take 100% */
7755 }
7756
7757 .flex-item-fixed-1-12 {
7758 flex-grow: 0;
7759 flex-shrink: 0;
7760 flex-basis: 8.3%;
7761 }
7762
7763 .flex-item-fixed-2-12 {
7764 flex-grow: 0;
7765 flex-shrink: 0;
7766 flex-basis: 16.6%;
7767 }
7768
7769 .flex-item-fixed-4-12 {
7770 flex-grow: 0;
7771 flex-shrink: 0;
7772 flex-basis: 33.3333%;
7773 }
7774
7775 .flex-item-fixed-6-12, .flex-item-50-percent {
7776 flex-grow: 0;
7777 flex-shrink: 0;
7778 flex-basis: 50%;
7779 }
7780
7781 .flex-item-fixed-8-12 {
7782 flex-grow: 0;
7783 flex-shrink: 0;
7784 flex-basis: 66.6666%;
7785 }
7786
7787 .flex-item-fixed-9-12 {
7788 flex-grow: 0;
7789 flex-shrink: 0;
7790 flex-basis: 75%;
7791 }
7792
7793
7794 .flex-item-fixed-12-12 {
7795 flex-grow: 0;
7796 flex-shrink: 0;
7797 flex-basis: 100%;
7798 }
7799
7800 .flex-item-10-percent {
7801 flex-grow: 0;
7802 flex-shrink: 0;
7803 flex-basis: 10%;
7804 }
7805
7806 .flex-item-15-percent {
7807 flex-grow: 0;
7808 flex-shrink: 0;
7809 flex-basis: 15%;
7810 }
7811
7812 .flex-item-20-percent {
7813 flex-grow: 0;
7814 flex-shrink: 0;
7815 flex-basis: 20%;
7816 }
7817
7818 .flex-item-30-percent {
7819 flex-grow: 0;
7820 flex-shrink: 0;
7821 flex-basis: 30%;
7822 }
7823
7824 .flex-item-40-percent {
7825 flex-grow: 0;
7826 flex-shrink: 0;
7827 flex-basis: 40%;
7828 }
7829
7830 .flex-item-50-percent {
7831 flex-grow: 0;
7832 flex-shrink: 0;
7833 flex-basis: 50%;
7834 }
7835
7836 .flex-item-60-percent {
7837 flex-grow: 0;
7838 flex-shrink: 0;
7839 flex-basis: 60%;
7840 }
7841
7842 .flex-item-70-percent {
7843 flex-grow: 0;
7844 flex-shrink: 0;
7845 flex-basis: 70%;
7846 }
7847
7848 .flex-item-80-percent {
7849 flex-grow: 0;
7850 flex-shrink: 0;
7851 flex-basis: 80%;
7852 }
7853
7854 .well {
7855 min-height: 20px;
7856 padding: 19px;
7857 margin-bottom: 20px;
7858 background-color: #f5f5f5;
7859 border: 1px solid #e3e3e3;
7860 border-radius: 4px;
7861 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
7862 }
7863
7864 .break-wrap {
7865 word-wrap: break-word;
7866 }
7867 </style>
7868
7869 <nav-bar>
7870 <top-nav-menu last="{{ true }}"></top-nav-menu>
7871 <nav-refresh callback="{{ refresh }}"></nav-refresh>
7872 </nav-bar>
7873
7874 <div class="content">
7875 <h1>HttpServers</h1>
7876
7877 <br>
7878
7879 <ul class="list-group">
7880 <template repeat="{{ httpServer in list['members'] }}">
7881 <li class="list-group-item">
7882 <io-http-server-ref ref="{{ httpServer }}"></io-http-server-ref>
7883 </li>
7884 </template>
7885 </ul>
7886 </div>
7887 <br>
7888 <hr>
7889 </template>
7890 </polymer-element>
7891
7892 <polymer-element name="io-http-server-ref" extends="service-ref">
7893 <template>
7894 <style>
7895 /* Global styles */
7896 * {
7897 margin: 0;
7898 padding: 0;
7899 font: 400 14px 'Montserrat', sans-serif;
7900 color: #333;
7901 box-sizing: border-box;
7902 }
7903
7904 .content {
7905 padding-left: 10%;
7906 font: 400 14px 'Montserrat', sans-serif;
7907 }
7908
7909 .content-centered {
7910 padding-left: 10%;
7911 padding-right: 10%;
7912 font: 400 14px 'Montserrat', sans-serif;
7913 }
7914
7915 .content-centered-big {
7916 padding-left: 5%;
7917 padding-right: 5%;
7918 font: 400 14px 'Montserrat', sans-serif;
7919 }
7920
7921 h1 {
7922 font: 400 18px 'Montserrat', sans-serif;
7923 }
7924
7925 .memberList {
7926 display: table;
7927 }
7928
7929 .memberItem {
7930 display: table-row;
7931 }
7932
7933 .memberName, .memberValue {
7934 display: table-cell;
7935 vertical-align: top;
7936 padding: 3px 0 3px 1em;
7937 font: 400 14px 'Montserrat', sans-serif;
7938 }
7939
7940 .monospace {
7941 font-family: consolas, courier, monospace;
7942 font-size: 1em;
7943 line-height: 1.2em;
7944 white-space: nowrap;
7945 }
7946
7947 a {
7948 color: #0489c3;
7949 text-decoration: none;
7950 }
7951
7952 a:hover {
7953 text-decoration: underline;
7954 }
7955
7956 em {
7957 color: inherit;
7958 font-style: italic;
7959 }
7960
7961 b {
7962 color: inherit;
7963 font-weight: bold;
7964 }
7965
7966 hr {
7967 margin-top: 20px;
7968 margin-bottom: 20px;
7969 border: 0;
7970 border-top: 1px solid #eee;
7971 height: 0;
7972 box-sizing: content-box;
7973 }
7974
7975 .list-group {
7976 padding-left: 0;
7977 margin-bottom: 20px;
7978 }
7979
7980 .list-group-item {
7981 position: relative;
7982 display: block;
7983 padding: 10px 15px;
7984 margin-bottom: -1px;
7985 background-color: #fff;
7986 }
7987
7988 .list-group-item:first-child {
7989 /* rounded top corners */
7990 border-top-right-radius:4px;
7991 border-top-left-radius:4px;
7992 }
7993
7994 .list-group-item:last-child {
7995 margin-bottom: 0;
7996 /* rounded bottom corners */
7997 border-bottom-right-radius: 4px;
7998 border-bottom-left-radius:4px;
7999 }
8000
8001 /* Flex row container */
8002 .flex-row {
8003 display: flex;
8004 flex-direction: row;
8005 }
8006
8007 /* Flex column container */
8008 .flex-column {
8009 display: flex;
8010 flex-direction: column;
8011 }
8012
8013 .flex-item-fit {
8014 flex-grow: 1;
8015 flex-shrink: 1;
8016 flex-basis: auto;
8017 }
8018
8019 .flex-item-no-shrink {
8020 flex-grow: 0;
8021 flex-shrink: 0;
8022 flex-basis: auto;
8023 }
8024
8025 .flex-item-fill {
8026 flex-grow: 0;
8027 flex-shrink: 1; /* shrink when pressured */
8028 flex-basis: 100%; /* try and take 100% */
8029 }
8030
8031 .flex-item-fixed-1-12 {
8032 flex-grow: 0;
8033 flex-shrink: 0;
8034 flex-basis: 8.3%;
8035 }
8036
8037 .flex-item-fixed-2-12 {
8038 flex-grow: 0;
8039 flex-shrink: 0;
8040 flex-basis: 16.6%;
8041 }
8042
8043 .flex-item-fixed-4-12 {
8044 flex-grow: 0;
8045 flex-shrink: 0;
8046 flex-basis: 33.3333%;
8047 }
8048
8049 .flex-item-fixed-6-12, .flex-item-50-percent {
8050 flex-grow: 0;
8051 flex-shrink: 0;
8052 flex-basis: 50%;
8053 }
8054
8055 .flex-item-fixed-8-12 {
8056 flex-grow: 0;
8057 flex-shrink: 0;
8058 flex-basis: 66.6666%;
8059 }
8060
8061 .flex-item-fixed-9-12 {
8062 flex-grow: 0;
8063 flex-shrink: 0;
8064 flex-basis: 75%;
8065 }
8066
8067
8068 .flex-item-fixed-12-12 {
8069 flex-grow: 0;
8070 flex-shrink: 0;
8071 flex-basis: 100%;
8072 }
8073
8074 .flex-item-10-percent {
8075 flex-grow: 0;
8076 flex-shrink: 0;
8077 flex-basis: 10%;
8078 }
8079
8080 .flex-item-15-percent {
8081 flex-grow: 0;
8082 flex-shrink: 0;
8083 flex-basis: 15%;
8084 }
8085
8086 .flex-item-20-percent {
8087 flex-grow: 0;
8088 flex-shrink: 0;
8089 flex-basis: 20%;
8090 }
8091
8092 .flex-item-30-percent {
8093 flex-grow: 0;
8094 flex-shrink: 0;
8095 flex-basis: 30%;
8096 }
8097
8098 .flex-item-40-percent {
8099 flex-grow: 0;
8100 flex-shrink: 0;
8101 flex-basis: 40%;
8102 }
8103
8104 .flex-item-50-percent {
8105 flex-grow: 0;
8106 flex-shrink: 0;
8107 flex-basis: 50%;
8108 }
8109
8110 .flex-item-60-percent {
8111 flex-grow: 0;
8112 flex-shrink: 0;
8113 flex-basis: 60%;
8114 }
8115
8116 .flex-item-70-percent {
8117 flex-grow: 0;
8118 flex-shrink: 0;
8119 flex-basis: 70%;
8120 }
8121
8122 .flex-item-80-percent {
8123 flex-grow: 0;
8124 flex-shrink: 0;
8125 flex-basis: 80%;
8126 }
8127
8128 .well {
8129 min-height: 20px;
8130 padding: 19px;
8131 margin-bottom: 20px;
8132 background-color: #f5f5f5;
8133 border: 1px solid #e3e3e3;
8134 border-radius: 4px;
8135 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
8136 }
8137
8138 .break-wrap {
8139 word-wrap: break-word;
8140 }
8141 </style>
8142 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
8143 </template>
8144 </polymer-element>
8145
8146 <polymer-element name="io-http-server-view" extends="observatory-element">
8147 <template>
8148 <style>
8149 /* Global styles */
8150 * {
8151 margin: 0;
8152 padding: 0;
8153 font: 400 14px 'Montserrat', sans-serif;
8154 color: #333;
8155 box-sizing: border-box;
8156 }
8157
8158 .content {
8159 padding-left: 10%;
8160 font: 400 14px 'Montserrat', sans-serif;
8161 }
8162
8163 .content-centered {
8164 padding-left: 10%;
8165 padding-right: 10%;
8166 font: 400 14px 'Montserrat', sans-serif;
8167 }
8168
8169 .content-centered-big {
8170 padding-left: 5%;
8171 padding-right: 5%;
8172 font: 400 14px 'Montserrat', sans-serif;
8173 }
8174
8175 h1 {
8176 font: 400 18px 'Montserrat', sans-serif;
8177 }
8178
8179 .memberList {
8180 display: table;
8181 }
8182
8183 .memberItem {
8184 display: table-row;
8185 }
8186
8187 .memberName, .memberValue {
8188 display: table-cell;
8189 vertical-align: top;
8190 padding: 3px 0 3px 1em;
8191 font: 400 14px 'Montserrat', sans-serif;
8192 }
8193
8194 .monospace {
8195 font-family: consolas, courier, monospace;
8196 font-size: 1em;
8197 line-height: 1.2em;
8198 white-space: nowrap;
8199 }
8200
8201 a {
8202 color: #0489c3;
8203 text-decoration: none;
8204 }
8205
8206 a:hover {
8207 text-decoration: underline;
8208 }
8209
8210 em {
8211 color: inherit;
8212 font-style: italic;
8213 }
8214
8215 b {
8216 color: inherit;
8217 font-weight: bold;
8218 }
8219
8220 hr {
8221 margin-top: 20px;
8222 margin-bottom: 20px;
8223 border: 0;
8224 border-top: 1px solid #eee;
8225 height: 0;
8226 box-sizing: content-box;
8227 }
8228
8229 .list-group {
8230 padding-left: 0;
8231 margin-bottom: 20px;
8232 }
8233
8234 .list-group-item {
8235 position: relative;
8236 display: block;
8237 padding: 10px 15px;
8238 margin-bottom: -1px;
8239 background-color: #fff;
8240 }
8241
8242 .list-group-item:first-child {
8243 /* rounded top corners */
8244 border-top-right-radius:4px;
8245 border-top-left-radius:4px;
8246 }
8247
8248 .list-group-item:last-child {
8249 margin-bottom: 0;
8250 /* rounded bottom corners */
8251 border-bottom-right-radius: 4px;
8252 border-bottom-left-radius:4px;
8253 }
8254
8255 /* Flex row container */
8256 .flex-row {
8257 display: flex;
8258 flex-direction: row;
8259 }
8260
8261 /* Flex column container */
8262 .flex-column {
8263 display: flex;
8264 flex-direction: column;
8265 }
8266
8267 .flex-item-fit {
8268 flex-grow: 1;
8269 flex-shrink: 1;
8270 flex-basis: auto;
8271 }
8272
8273 .flex-item-no-shrink {
8274 flex-grow: 0;
8275 flex-shrink: 0;
8276 flex-basis: auto;
8277 }
8278
8279 .flex-item-fill {
8280 flex-grow: 0;
8281 flex-shrink: 1; /* shrink when pressured */
8282 flex-basis: 100%; /* try and take 100% */
8283 }
8284
8285 .flex-item-fixed-1-12 {
8286 flex-grow: 0;
8287 flex-shrink: 0;
8288 flex-basis: 8.3%;
8289 }
8290
8291 .flex-item-fixed-2-12 {
8292 flex-grow: 0;
8293 flex-shrink: 0;
8294 flex-basis: 16.6%;
8295 }
8296
8297 .flex-item-fixed-4-12 {
8298 flex-grow: 0;
8299 flex-shrink: 0;
8300 flex-basis: 33.3333%;
8301 }
8302
8303 .flex-item-fixed-6-12, .flex-item-50-percent {
8304 flex-grow: 0;
8305 flex-shrink: 0;
8306 flex-basis: 50%;
8307 }
8308
8309 .flex-item-fixed-8-12 {
8310 flex-grow: 0;
8311 flex-shrink: 0;
8312 flex-basis: 66.6666%;
8313 }
8314
8315 .flex-item-fixed-9-12 {
8316 flex-grow: 0;
8317 flex-shrink: 0;
8318 flex-basis: 75%;
8319 }
8320
8321
8322 .flex-item-fixed-12-12 {
8323 flex-grow: 0;
8324 flex-shrink: 0;
8325 flex-basis: 100%;
8326 }
8327
8328 .flex-item-10-percent {
8329 flex-grow: 0;
8330 flex-shrink: 0;
8331 flex-basis: 10%;
8332 }
8333
8334 .flex-item-15-percent {
8335 flex-grow: 0;
8336 flex-shrink: 0;
8337 flex-basis: 15%;
8338 }
8339
8340 .flex-item-20-percent {
8341 flex-grow: 0;
8342 flex-shrink: 0;
8343 flex-basis: 20%;
8344 }
8345
8346 .flex-item-30-percent {
8347 flex-grow: 0;
8348 flex-shrink: 0;
8349 flex-basis: 30%;
8350 }
8351
8352 .flex-item-40-percent {
8353 flex-grow: 0;
8354 flex-shrink: 0;
8355 flex-basis: 40%;
8356 }
8357
8358 .flex-item-50-percent {
8359 flex-grow: 0;
8360 flex-shrink: 0;
8361 flex-basis: 50%;
8362 }
8363
8364 .flex-item-60-percent {
8365 flex-grow: 0;
8366 flex-shrink: 0;
8367 flex-basis: 60%;
8368 }
8369
8370 .flex-item-70-percent {
8371 flex-grow: 0;
8372 flex-shrink: 0;
8373 flex-basis: 70%;
8374 }
8375
8376 .flex-item-80-percent {
8377 flex-grow: 0;
8378 flex-shrink: 0;
8379 flex-basis: 80%;
8380 }
8381
8382 .well {
8383 min-height: 20px;
8384 padding: 19px;
8385 margin-bottom: 20px;
8386 background-color: #f5f5f5;
8387 border: 1px solid #e3e3e3;
8388 border-radius: 4px;
8389 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
8390 }
8391
8392 .break-wrap {
8393 word-wrap: break-word;
8394 }
8395 </style>
8396
8397 <nav-bar>
8398 <top-nav-menu last="{{ true }}"></top-nav-menu>
8399 <nav-refresh callback="{{ refresh }}"></nav-refresh>
8400 </nav-bar>
8401
8402 <div class="content">
8403 <h1>HttpServer</h1>
8404
8405 <br>
8406
8407 <div class="memberList">
8408 <div class="memberItem">
8409 <div class="memberName">Socket</div>
8410 <div class="memberValue"><io-socket-ref ref="{{ httpServer['socket'] } }"></io-socket-ref></div>
8411 </div>
8412 <div class="memberItem">
8413 <div class="memberName">Address</div>
8414 <div class="memberValue">{{ httpServer['address'] }}</div>
8415 </div>
8416 <div class="memberItem">
8417 <div class="memberName">Port</div>
8418 <div class="memberValue">{{ httpServer['port'] }}</div>
8419 </div>
8420 <div class="memberItem">
8421 <div class="memberName">Active connections</div>
8422 <ul class="list-group">
8423 <template repeat="{{ connection in httpServer['active'] }}">
8424 <li class="list-group-item">
8425 <io-http-server-connection-ref ref="{{ connection }}"></io-http- server-connection-ref>
8426 </li>
8427 </template>
8428 </ul>
8429 </div>
8430 <div class="memberItem">
8431 <div class="memberName">Idle connections</div>
8432 <ul class="list-group">
8433 <template repeat="{{ connection in httpServer['idle'] }}">
8434 <li class="list-group-item">
8435 <io-http-server-connection-ref ref="{{ connection }}"></io-http- server-connection-ref>
8436 </li>
8437 </template>
8438 </ul>
8439 </div>
8440 </div>
8441 </div>
8442 <br>
8443 <hr>
8444 </template>
8445 </polymer-element>
8446
8447 <polymer-element name="io-http-server-connection-ref" extends="service-ref">
8448 <template>
8449 <style>
8450 /* Global styles */
8451 * {
8452 margin: 0;
8453 padding: 0;
8454 font: 400 14px 'Montserrat', sans-serif;
8455 color: #333;
8456 box-sizing: border-box;
8457 }
8458
8459 .content {
8460 padding-left: 10%;
8461 font: 400 14px 'Montserrat', sans-serif;
8462 }
8463
8464 .content-centered {
8465 padding-left: 10%;
8466 padding-right: 10%;
8467 font: 400 14px 'Montserrat', sans-serif;
8468 }
8469
8470 .content-centered-big {
8471 padding-left: 5%;
8472 padding-right: 5%;
8473 font: 400 14px 'Montserrat', sans-serif;
8474 }
8475
8476 h1 {
8477 font: 400 18px 'Montserrat', sans-serif;
8478 }
8479
8480 .memberList {
8481 display: table;
8482 }
8483
8484 .memberItem {
8485 display: table-row;
8486 }
8487
8488 .memberName, .memberValue {
8489 display: table-cell;
8490 vertical-align: top;
8491 padding: 3px 0 3px 1em;
8492 font: 400 14px 'Montserrat', sans-serif;
8493 }
8494
8495 .monospace {
8496 font-family: consolas, courier, monospace;
8497 font-size: 1em;
8498 line-height: 1.2em;
8499 white-space: nowrap;
8500 }
8501
8502 a {
8503 color: #0489c3;
8504 text-decoration: none;
8505 }
8506
8507 a:hover {
8508 text-decoration: underline;
8509 }
8510
8511 em {
8512 color: inherit;
8513 font-style: italic;
8514 }
8515
8516 b {
8517 color: inherit;
8518 font-weight: bold;
8519 }
8520
8521 hr {
8522 margin-top: 20px;
8523 margin-bottom: 20px;
8524 border: 0;
8525 border-top: 1px solid #eee;
8526 height: 0;
8527 box-sizing: content-box;
8528 }
8529
8530 .list-group {
8531 padding-left: 0;
8532 margin-bottom: 20px;
8533 }
8534
8535 .list-group-item {
8536 position: relative;
8537 display: block;
8538 padding: 10px 15px;
8539 margin-bottom: -1px;
8540 background-color: #fff;
8541 }
8542
8543 .list-group-item:first-child {
8544 /* rounded top corners */
8545 border-top-right-radius:4px;
8546 border-top-left-radius:4px;
8547 }
8548
8549 .list-group-item:last-child {
8550 margin-bottom: 0;
8551 /* rounded bottom corners */
8552 border-bottom-right-radius: 4px;
8553 border-bottom-left-radius:4px;
8554 }
8555
8556 /* Flex row container */
8557 .flex-row {
8558 display: flex;
8559 flex-direction: row;
8560 }
8561
8562 /* Flex column container */
8563 .flex-column {
8564 display: flex;
8565 flex-direction: column;
8566 }
8567
8568 .flex-item-fit {
8569 flex-grow: 1;
8570 flex-shrink: 1;
8571 flex-basis: auto;
8572 }
8573
8574 .flex-item-no-shrink {
8575 flex-grow: 0;
8576 flex-shrink: 0;
8577 flex-basis: auto;
8578 }
8579
8580 .flex-item-fill {
8581 flex-grow: 0;
8582 flex-shrink: 1; /* shrink when pressured */
8583 flex-basis: 100%; /* try and take 100% */
8584 }
8585
8586 .flex-item-fixed-1-12 {
8587 flex-grow: 0;
8588 flex-shrink: 0;
8589 flex-basis: 8.3%;
8590 }
8591
8592 .flex-item-fixed-2-12 {
8593 flex-grow: 0;
8594 flex-shrink: 0;
8595 flex-basis: 16.6%;
8596 }
8597
8598 .flex-item-fixed-4-12 {
8599 flex-grow: 0;
8600 flex-shrink: 0;
8601 flex-basis: 33.3333%;
8602 }
8603
8604 .flex-item-fixed-6-12, .flex-item-50-percent {
8605 flex-grow: 0;
8606 flex-shrink: 0;
8607 flex-basis: 50%;
8608 }
8609
8610 .flex-item-fixed-8-12 {
8611 flex-grow: 0;
8612 flex-shrink: 0;
8613 flex-basis: 66.6666%;
8614 }
8615
8616 .flex-item-fixed-9-12 {
8617 flex-grow: 0;
8618 flex-shrink: 0;
8619 flex-basis: 75%;
8620 }
8621
8622
8623 .flex-item-fixed-12-12 {
8624 flex-grow: 0;
8625 flex-shrink: 0;
8626 flex-basis: 100%;
8627 }
8628
8629 .flex-item-10-percent {
8630 flex-grow: 0;
8631 flex-shrink: 0;
8632 flex-basis: 10%;
8633 }
8634
8635 .flex-item-15-percent {
8636 flex-grow: 0;
8637 flex-shrink: 0;
8638 flex-basis: 15%;
8639 }
8640
8641 .flex-item-20-percent {
8642 flex-grow: 0;
8643 flex-shrink: 0;
8644 flex-basis: 20%;
8645 }
8646
8647 .flex-item-30-percent {
8648 flex-grow: 0;
8649 flex-shrink: 0;
8650 flex-basis: 30%;
8651 }
8652
8653 .flex-item-40-percent {
8654 flex-grow: 0;
8655 flex-shrink: 0;
8656 flex-basis: 40%;
8657 }
8658
8659 .flex-item-50-percent {
8660 flex-grow: 0;
8661 flex-shrink: 0;
8662 flex-basis: 50%;
8663 }
8664
8665 .flex-item-60-percent {
8666 flex-grow: 0;
8667 flex-shrink: 0;
8668 flex-basis: 60%;
8669 }
8670
8671 .flex-item-70-percent {
8672 flex-grow: 0;
8673 flex-shrink: 0;
8674 flex-basis: 70%;
8675 }
8676
8677 .flex-item-80-percent {
8678 flex-grow: 0;
8679 flex-shrink: 0;
8680 flex-basis: 80%;
8681 }
8682
8683 .well {
8684 min-height: 20px;
8685 padding: 19px;
8686 margin-bottom: 20px;
8687 background-color: #f5f5f5;
8688 border: 1px solid #e3e3e3;
8689 border-radius: 4px;
8690 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
8691 }
8692
8693 .break-wrap {
8694 word-wrap: break-word;
8695 }
8696 </style>
8697 <a href="{{ url }}">{{ name }}</a>
8698 </template>
8699 </polymer-element>
8700
8701 <polymer-element name="io-http-server-connection-view" extends="observatory-elem ent">
8702 <template>
8703 <style>
8704 /* Global styles */
8705 * {
8706 margin: 0;
8707 padding: 0;
8708 font: 400 14px 'Montserrat', sans-serif;
8709 color: #333;
8710 box-sizing: border-box;
8711 }
8712
8713 .content {
8714 padding-left: 10%;
8715 font: 400 14px 'Montserrat', sans-serif;
8716 }
8717
8718 .content-centered {
8719 padding-left: 10%;
8720 padding-right: 10%;
8721 font: 400 14px 'Montserrat', sans-serif;
8722 }
8723
8724 .content-centered-big {
8725 padding-left: 5%;
8726 padding-right: 5%;
8727 font: 400 14px 'Montserrat', sans-serif;
8728 }
8729
8730 h1 {
8731 font: 400 18px 'Montserrat', sans-serif;
8732 }
8733
8734 .memberList {
8735 display: table;
8736 }
8737
8738 .memberItem {
8739 display: table-row;
8740 }
8741
8742 .memberName, .memberValue {
8743 display: table-cell;
8744 vertical-align: top;
8745 padding: 3px 0 3px 1em;
8746 font: 400 14px 'Montserrat', sans-serif;
8747 }
8748
8749 .monospace {
8750 font-family: consolas, courier, monospace;
8751 font-size: 1em;
8752 line-height: 1.2em;
8753 white-space: nowrap;
8754 }
8755
8756 a {
8757 color: #0489c3;
8758 text-decoration: none;
8759 }
8760
8761 a:hover {
8762 text-decoration: underline;
8763 }
8764
8765 em {
8766 color: inherit;
8767 font-style: italic;
8768 }
8769
8770 b {
8771 color: inherit;
8772 font-weight: bold;
8773 }
8774
8775 hr {
8776 margin-top: 20px;
8777 margin-bottom: 20px;
8778 border: 0;
8779 border-top: 1px solid #eee;
8780 height: 0;
8781 box-sizing: content-box;
8782 }
8783
8784 .list-group {
8785 padding-left: 0;
8786 margin-bottom: 20px;
8787 }
8788
8789 .list-group-item {
8790 position: relative;
8791 display: block;
8792 padding: 10px 15px;
8793 margin-bottom: -1px;
8794 background-color: #fff;
8795 }
8796
8797 .list-group-item:first-child {
8798 /* rounded top corners */
8799 border-top-right-radius:4px;
8800 border-top-left-radius:4px;
8801 }
8802
8803 .list-group-item:last-child {
8804 margin-bottom: 0;
8805 /* rounded bottom corners */
8806 border-bottom-right-radius: 4px;
8807 border-bottom-left-radius:4px;
8808 }
8809
8810 /* Flex row container */
8811 .flex-row {
8812 display: flex;
8813 flex-direction: row;
8814 }
8815
8816 /* Flex column container */
8817 .flex-column {
8818 display: flex;
8819 flex-direction: column;
8820 }
8821
8822 .flex-item-fit {
8823 flex-grow: 1;
8824 flex-shrink: 1;
8825 flex-basis: auto;
8826 }
8827
8828 .flex-item-no-shrink {
8829 flex-grow: 0;
8830 flex-shrink: 0;
8831 flex-basis: auto;
8832 }
8833
8834 .flex-item-fill {
8835 flex-grow: 0;
8836 flex-shrink: 1; /* shrink when pressured */
8837 flex-basis: 100%; /* try and take 100% */
8838 }
8839
8840 .flex-item-fixed-1-12 {
8841 flex-grow: 0;
8842 flex-shrink: 0;
8843 flex-basis: 8.3%;
8844 }
8845
8846 .flex-item-fixed-2-12 {
8847 flex-grow: 0;
8848 flex-shrink: 0;
8849 flex-basis: 16.6%;
8850 }
8851
8852 .flex-item-fixed-4-12 {
8853 flex-grow: 0;
8854 flex-shrink: 0;
8855 flex-basis: 33.3333%;
8856 }
8857
8858 .flex-item-fixed-6-12, .flex-item-50-percent {
8859 flex-grow: 0;
8860 flex-shrink: 0;
8861 flex-basis: 50%;
8862 }
8863
8864 .flex-item-fixed-8-12 {
8865 flex-grow: 0;
8866 flex-shrink: 0;
8867 flex-basis: 66.6666%;
8868 }
8869
8870 .flex-item-fixed-9-12 {
8871 flex-grow: 0;
8872 flex-shrink: 0;
8873 flex-basis: 75%;
8874 }
8875
8876
8877 .flex-item-fixed-12-12 {
8878 flex-grow: 0;
8879 flex-shrink: 0;
8880 flex-basis: 100%;
8881 }
8882
8883 .flex-item-10-percent {
8884 flex-grow: 0;
8885 flex-shrink: 0;
8886 flex-basis: 10%;
8887 }
8888
8889 .flex-item-15-percent {
8890 flex-grow: 0;
8891 flex-shrink: 0;
8892 flex-basis: 15%;
8893 }
8894
8895 .flex-item-20-percent {
8896 flex-grow: 0;
8897 flex-shrink: 0;
8898 flex-basis: 20%;
8899 }
8900
8901 .flex-item-30-percent {
8902 flex-grow: 0;
8903 flex-shrink: 0;
8904 flex-basis: 30%;
8905 }
8906
8907 .flex-item-40-percent {
8908 flex-grow: 0;
8909 flex-shrink: 0;
8910 flex-basis: 40%;
8911 }
8912
8913 .flex-item-50-percent {
8914 flex-grow: 0;
8915 flex-shrink: 0;
8916 flex-basis: 50%;
8917 }
8918
8919 .flex-item-60-percent {
8920 flex-grow: 0;
8921 flex-shrink: 0;
8922 flex-basis: 60%;
8923 }
8924
8925 .flex-item-70-percent {
8926 flex-grow: 0;
8927 flex-shrink: 0;
8928 flex-basis: 70%;
8929 }
8930
8931 .flex-item-80-percent {
8932 flex-grow: 0;
8933 flex-shrink: 0;
8934 flex-basis: 80%;
8935 }
8936
8937 .well {
8938 min-height: 20px;
8939 padding: 19px;
8940 margin-bottom: 20px;
8941 background-color: #f5f5f5;
8942 border: 1px solid #e3e3e3;
8943 border-radius: 4px;
8944 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
8945 }
8946
8947 .break-wrap {
8948 word-wrap: break-word;
8949 }
8950 </style>
8951
8952 <nav-bar>
8953 <top-nav-menu last="{{ true }}"></top-nav-menu>
8954 <nav-refresh callback="{{ refresh }}"></nav-refresh>
8955 </nav-bar>
8956
8957 <div class="content">
8958 <h1>HttpConnection</h1>
8959
8960 <br>
8961
8962 <div class="memberList">
8963 <div class="memberItem">
8964 <div class="memberName">Socket</div>
8965 <div class="memberValue"><io-socket-ref ref="{{ connection['socket'] } }"></io-socket-ref></div>
8966 </div>
8967 <div class="memberItem">
8968 <div class="memberName">State</div>
8969 <div class="memberValue">{{ connection['state'] }}</div>
8970 </div>
8971 <div class="memberItem">
8972 <div class="memberName">Server</div>
8973 <div class="memberValue"><io-http-server-ref ref="{{ connection['serve r'] }}"></io-http-server-ref></div>
8974 </div>
8975 </div>
8976 </div>
8977 <br>
8978 <hr>
8979 </template>
8980 </polymer-element>
8981
8982 <polymer-element name="io-socket-ref" extends="service-ref">
8983 <template>
8984 <style>
8985 /* Global styles */
8986 * {
8987 margin: 0;
8988 padding: 0;
8989 font: 400 14px 'Montserrat', sans-serif;
8990 color: #333;
8991 box-sizing: border-box;
8992 }
8993
8994 .content {
8995 padding-left: 10%;
8996 font: 400 14px 'Montserrat', sans-serif;
8997 }
8998
8999 .content-centered {
9000 padding-left: 10%;
9001 padding-right: 10%;
9002 font: 400 14px 'Montserrat', sans-serif;
9003 }
9004
9005 .content-centered-big {
9006 padding-left: 5%;
9007 padding-right: 5%;
9008 font: 400 14px 'Montserrat', sans-serif;
9009 }
9010
9011 h1 {
9012 font: 400 18px 'Montserrat', sans-serif;
9013 }
9014
9015 .memberList {
9016 display: table;
9017 }
9018
9019 .memberItem {
9020 display: table-row;
9021 }
9022
9023 .memberName, .memberValue {
9024 display: table-cell;
9025 vertical-align: top;
9026 padding: 3px 0 3px 1em;
9027 font: 400 14px 'Montserrat', sans-serif;
9028 }
9029
9030 .monospace {
9031 font-family: consolas, courier, monospace;
9032 font-size: 1em;
9033 line-height: 1.2em;
9034 white-space: nowrap;
9035 }
9036
9037 a {
9038 color: #0489c3;
9039 text-decoration: none;
9040 }
9041
9042 a:hover {
9043 text-decoration: underline;
9044 }
9045
9046 em {
9047 color: inherit;
9048 font-style: italic;
9049 }
9050
9051 b {
9052 color: inherit;
9053 font-weight: bold;
9054 }
9055
9056 hr {
9057 margin-top: 20px;
9058 margin-bottom: 20px;
9059 border: 0;
9060 border-top: 1px solid #eee;
9061 height: 0;
9062 box-sizing: content-box;
9063 }
9064
9065 .list-group {
9066 padding-left: 0;
9067 margin-bottom: 20px;
9068 }
9069
9070 .list-group-item {
9071 position: relative;
9072 display: block;
9073 padding: 10px 15px;
9074 margin-bottom: -1px;
9075 background-color: #fff;
9076 }
9077
9078 .list-group-item:first-child {
9079 /* rounded top corners */
9080 border-top-right-radius:4px;
9081 border-top-left-radius:4px;
9082 }
9083
9084 .list-group-item:last-child {
9085 margin-bottom: 0;
9086 /* rounded bottom corners */
9087 border-bottom-right-radius: 4px;
9088 border-bottom-left-radius:4px;
9089 }
9090
9091 /* Flex row container */
9092 .flex-row {
9093 display: flex;
9094 flex-direction: row;
9095 }
9096
9097 /* Flex column container */
9098 .flex-column {
9099 display: flex;
9100 flex-direction: column;
9101 }
9102
9103 .flex-item-fit {
9104 flex-grow: 1;
9105 flex-shrink: 1;
9106 flex-basis: auto;
9107 }
9108
9109 .flex-item-no-shrink {
9110 flex-grow: 0;
9111 flex-shrink: 0;
9112 flex-basis: auto;
9113 }
9114
9115 .flex-item-fill {
9116 flex-grow: 0;
9117 flex-shrink: 1; /* shrink when pressured */
9118 flex-basis: 100%; /* try and take 100% */
9119 }
9120
9121 .flex-item-fixed-1-12 {
9122 flex-grow: 0;
9123 flex-shrink: 0;
9124 flex-basis: 8.3%;
9125 }
9126
9127 .flex-item-fixed-2-12 {
9128 flex-grow: 0;
9129 flex-shrink: 0;
9130 flex-basis: 16.6%;
9131 }
9132
9133 .flex-item-fixed-4-12 {
9134 flex-grow: 0;
9135 flex-shrink: 0;
9136 flex-basis: 33.3333%;
9137 }
9138
9139 .flex-item-fixed-6-12, .flex-item-50-percent {
9140 flex-grow: 0;
9141 flex-shrink: 0;
9142 flex-basis: 50%;
9143 }
9144
9145 .flex-item-fixed-8-12 {
9146 flex-grow: 0;
9147 flex-shrink: 0;
9148 flex-basis: 66.6666%;
9149 }
9150
9151 .flex-item-fixed-9-12 {
9152 flex-grow: 0;
9153 flex-shrink: 0;
9154 flex-basis: 75%;
9155 }
9156
9157
9158 .flex-item-fixed-12-12 {
9159 flex-grow: 0;
9160 flex-shrink: 0;
9161 flex-basis: 100%;
9162 }
9163
9164 .flex-item-10-percent {
9165 flex-grow: 0;
9166 flex-shrink: 0;
9167 flex-basis: 10%;
9168 }
9169
9170 .flex-item-15-percent {
9171 flex-grow: 0;
9172 flex-shrink: 0;
9173 flex-basis: 15%;
9174 }
9175
9176 .flex-item-20-percent {
9177 flex-grow: 0;
9178 flex-shrink: 0;
9179 flex-basis: 20%;
9180 }
9181
9182 .flex-item-30-percent {
9183 flex-grow: 0;
9184 flex-shrink: 0;
9185 flex-basis: 30%;
9186 }
9187
9188 .flex-item-40-percent {
9189 flex-grow: 0;
9190 flex-shrink: 0;
9191 flex-basis: 40%;
9192 }
9193
9194 .flex-item-50-percent {
9195 flex-grow: 0;
9196 flex-shrink: 0;
9197 flex-basis: 50%;
9198 }
9199
9200 .flex-item-60-percent {
9201 flex-grow: 0;
9202 flex-shrink: 0;
9203 flex-basis: 60%;
9204 }
9205
9206 .flex-item-70-percent {
9207 flex-grow: 0;
9208 flex-shrink: 0;
9209 flex-basis: 70%;
9210 }
9211
9212 .flex-item-80-percent {
9213 flex-grow: 0;
9214 flex-shrink: 0;
9215 flex-basis: 80%;
9216 }
9217
9218 .well {
9219 min-height: 20px;
9220 padding: 19px;
9221 margin-bottom: 20px;
9222 background-color: #f5f5f5;
9223 border: 1px solid #e3e3e3;
9224 border-radius: 4px;
9225 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
9226 }
9227
9228 .break-wrap {
9229 word-wrap: break-word;
9230 }
9231 </style>
9232 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
9233 </template>
9234 </polymer-element>
9235
9236 <polymer-element name="io-socket-list-view" extends="observatory-element">
9237 <template>
9238 <style>
9239 /* Global styles */
9240 * {
9241 margin: 0;
9242 padding: 0;
9243 font: 400 14px 'Montserrat', sans-serif;
9244 color: #333;
9245 box-sizing: border-box;
9246 }
9247
9248 .content {
9249 padding-left: 10%;
9250 font: 400 14px 'Montserrat', sans-serif;
9251 }
9252
9253 .content-centered {
9254 padding-left: 10%;
9255 padding-right: 10%;
9256 font: 400 14px 'Montserrat', sans-serif;
9257 }
9258
9259 .content-centered-big {
9260 padding-left: 5%;
9261 padding-right: 5%;
9262 font: 400 14px 'Montserrat', sans-serif;
9263 }
9264
9265 h1 {
9266 font: 400 18px 'Montserrat', sans-serif;
9267 }
9268
9269 .memberList {
9270 display: table;
9271 }
9272
9273 .memberItem {
9274 display: table-row;
9275 }
9276
9277 .memberName, .memberValue {
9278 display: table-cell;
9279 vertical-align: top;
9280 padding: 3px 0 3px 1em;
9281 font: 400 14px 'Montserrat', sans-serif;
9282 }
9283
9284 .monospace {
9285 font-family: consolas, courier, monospace;
9286 font-size: 1em;
9287 line-height: 1.2em;
9288 white-space: nowrap;
9289 }
9290
9291 a {
9292 color: #0489c3;
9293 text-decoration: none;
9294 }
9295
9296 a:hover {
9297 text-decoration: underline;
9298 }
9299
9300 em {
9301 color: inherit;
9302 font-style: italic;
9303 }
9304
9305 b {
9306 color: inherit;
9307 font-weight: bold;
9308 }
9309
9310 hr {
9311 margin-top: 20px;
9312 margin-bottom: 20px;
9313 border: 0;
9314 border-top: 1px solid #eee;
9315 height: 0;
9316 box-sizing: content-box;
9317 }
9318
9319 .list-group {
9320 padding-left: 0;
9321 margin-bottom: 20px;
9322 }
9323
9324 .list-group-item {
9325 position: relative;
9326 display: block;
9327 padding: 10px 15px;
9328 margin-bottom: -1px;
9329 background-color: #fff;
9330 }
9331
9332 .list-group-item:first-child {
9333 /* rounded top corners */
9334 border-top-right-radius:4px;
9335 border-top-left-radius:4px;
9336 }
9337
9338 .list-group-item:last-child {
9339 margin-bottom: 0;
9340 /* rounded bottom corners */
9341 border-bottom-right-radius: 4px;
9342 border-bottom-left-radius:4px;
9343 }
9344
9345 /* Flex row container */
9346 .flex-row {
9347 display: flex;
9348 flex-direction: row;
9349 }
9350
9351 /* Flex column container */
9352 .flex-column {
9353 display: flex;
9354 flex-direction: column;
9355 }
9356
9357 .flex-item-fit {
9358 flex-grow: 1;
9359 flex-shrink: 1;
9360 flex-basis: auto;
9361 }
9362
9363 .flex-item-no-shrink {
9364 flex-grow: 0;
9365 flex-shrink: 0;
9366 flex-basis: auto;
9367 }
9368
9369 .flex-item-fill {
9370 flex-grow: 0;
9371 flex-shrink: 1; /* shrink when pressured */
9372 flex-basis: 100%; /* try and take 100% */
9373 }
9374
9375 .flex-item-fixed-1-12 {
9376 flex-grow: 0;
9377 flex-shrink: 0;
9378 flex-basis: 8.3%;
9379 }
9380
9381 .flex-item-fixed-2-12 {
9382 flex-grow: 0;
9383 flex-shrink: 0;
9384 flex-basis: 16.6%;
9385 }
9386
9387 .flex-item-fixed-4-12 {
9388 flex-grow: 0;
9389 flex-shrink: 0;
9390 flex-basis: 33.3333%;
9391 }
9392
9393 .flex-item-fixed-6-12, .flex-item-50-percent {
9394 flex-grow: 0;
9395 flex-shrink: 0;
9396 flex-basis: 50%;
9397 }
9398
9399 .flex-item-fixed-8-12 {
9400 flex-grow: 0;
9401 flex-shrink: 0;
9402 flex-basis: 66.6666%;
9403 }
9404
9405 .flex-item-fixed-9-12 {
9406 flex-grow: 0;
9407 flex-shrink: 0;
9408 flex-basis: 75%;
9409 }
9410
9411
9412 .flex-item-fixed-12-12 {
9413 flex-grow: 0;
9414 flex-shrink: 0;
9415 flex-basis: 100%;
9416 }
9417
9418 .flex-item-10-percent {
9419 flex-grow: 0;
9420 flex-shrink: 0;
9421 flex-basis: 10%;
9422 }
9423
9424 .flex-item-15-percent {
9425 flex-grow: 0;
9426 flex-shrink: 0;
9427 flex-basis: 15%;
9428 }
9429
9430 .flex-item-20-percent {
9431 flex-grow: 0;
9432 flex-shrink: 0;
9433 flex-basis: 20%;
9434 }
9435
9436 .flex-item-30-percent {
9437 flex-grow: 0;
9438 flex-shrink: 0;
9439 flex-basis: 30%;
9440 }
9441
9442 .flex-item-40-percent {
9443 flex-grow: 0;
9444 flex-shrink: 0;
9445 flex-basis: 40%;
9446 }
9447
9448 .flex-item-50-percent {
9449 flex-grow: 0;
9450 flex-shrink: 0;
9451 flex-basis: 50%;
9452 }
9453
9454 .flex-item-60-percent {
9455 flex-grow: 0;
9456 flex-shrink: 0;
9457 flex-basis: 60%;
9458 }
9459
9460 .flex-item-70-percent {
9461 flex-grow: 0;
9462 flex-shrink: 0;
9463 flex-basis: 70%;
9464 }
9465
9466 .flex-item-80-percent {
9467 flex-grow: 0;
9468 flex-shrink: 0;
9469 flex-basis: 80%;
9470 }
9471
9472 .well {
9473 min-height: 20px;
9474 padding: 19px;
9475 margin-bottom: 20px;
9476 background-color: #f5f5f5;
9477 border: 1px solid #e3e3e3;
9478 border-radius: 4px;
9479 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
9480 }
9481
9482 .break-wrap {
9483 word-wrap: break-word;
9484 }
9485 </style>
9486
9487 <nav-bar>
9488 <top-nav-menu last="{{ true }}"></top-nav-menu>
9489 <nav-refresh callback="{{ refresh }}"></nav-refresh>
9490 </nav-bar>
9491
9492 <div class="content">
9493 <h1>Sockets</h1>
9494
9495 <br>
9496
9497 <ul class="list-group">
9498 <template repeat="{{ socket in list['members'] }}">
9499 <li class="list-group-item">
9500 <io-socket-ref ref="{{ socket }}"></io-socket-ref>
9501 </li>
9502 </template>
9503 </ul>
9504 </div>
9505 <br>
9506 <hr>
9507 </template>
9508 </polymer-element>
9509
9510 <polymer-element name="io-socket-view" extends="observatory-element">
9511 <template>
9512 <style>
9513 /* Global styles */
9514 * {
9515 margin: 0;
9516 padding: 0;
9517 font: 400 14px 'Montserrat', sans-serif;
9518 color: #333;
9519 box-sizing: border-box;
9520 }
9521
9522 .content {
9523 padding-left: 10%;
9524 font: 400 14px 'Montserrat', sans-serif;
9525 }
9526
9527 .content-centered {
9528 padding-left: 10%;
9529 padding-right: 10%;
9530 font: 400 14px 'Montserrat', sans-serif;
9531 }
9532
9533 .content-centered-big {
9534 padding-left: 5%;
9535 padding-right: 5%;
9536 font: 400 14px 'Montserrat', sans-serif;
9537 }
9538
9539 h1 {
9540 font: 400 18px 'Montserrat', sans-serif;
9541 }
9542
9543 .memberList {
9544 display: table;
9545 }
9546
9547 .memberItem {
9548 display: table-row;
9549 }
9550
9551 .memberName, .memberValue {
9552 display: table-cell;
9553 vertical-align: top;
9554 padding: 3px 0 3px 1em;
9555 font: 400 14px 'Montserrat', sans-serif;
9556 }
9557
9558 .monospace {
9559 font-family: consolas, courier, monospace;
9560 font-size: 1em;
9561 line-height: 1.2em;
9562 white-space: nowrap;
9563 }
9564
9565 a {
9566 color: #0489c3;
9567 text-decoration: none;
9568 }
9569
9570 a:hover {
9571 text-decoration: underline;
9572 }
9573
9574 em {
9575 color: inherit;
9576 font-style: italic;
9577 }
9578
9579 b {
9580 color: inherit;
9581 font-weight: bold;
9582 }
9583
9584 hr {
9585 margin-top: 20px;
9586 margin-bottom: 20px;
9587 border: 0;
9588 border-top: 1px solid #eee;
9589 height: 0;
9590 box-sizing: content-box;
9591 }
9592
9593 .list-group {
9594 padding-left: 0;
9595 margin-bottom: 20px;
9596 }
9597
9598 .list-group-item {
9599 position: relative;
9600 display: block;
9601 padding: 10px 15px;
9602 margin-bottom: -1px;
9603 background-color: #fff;
9604 }
9605
9606 .list-group-item:first-child {
9607 /* rounded top corners */
9608 border-top-right-radius:4px;
9609 border-top-left-radius:4px;
9610 }
9611
9612 .list-group-item:last-child {
9613 margin-bottom: 0;
9614 /* rounded bottom corners */
9615 border-bottom-right-radius: 4px;
9616 border-bottom-left-radius:4px;
9617 }
9618
9619 /* Flex row container */
9620 .flex-row {
9621 display: flex;
9622 flex-direction: row;
9623 }
9624
9625 /* Flex column container */
9626 .flex-column {
9627 display: flex;
9628 flex-direction: column;
9629 }
9630
9631 .flex-item-fit {
9632 flex-grow: 1;
9633 flex-shrink: 1;
9634 flex-basis: auto;
9635 }
9636
9637 .flex-item-no-shrink {
9638 flex-grow: 0;
9639 flex-shrink: 0;
9640 flex-basis: auto;
9641 }
9642
9643 .flex-item-fill {
9644 flex-grow: 0;
9645 flex-shrink: 1; /* shrink when pressured */
9646 flex-basis: 100%; /* try and take 100% */
9647 }
9648
9649 .flex-item-fixed-1-12 {
9650 flex-grow: 0;
9651 flex-shrink: 0;
9652 flex-basis: 8.3%;
9653 }
9654
9655 .flex-item-fixed-2-12 {
9656 flex-grow: 0;
9657 flex-shrink: 0;
9658 flex-basis: 16.6%;
9659 }
9660
9661 .flex-item-fixed-4-12 {
9662 flex-grow: 0;
9663 flex-shrink: 0;
9664 flex-basis: 33.3333%;
9665 }
9666
9667 .flex-item-fixed-6-12, .flex-item-50-percent {
9668 flex-grow: 0;
9669 flex-shrink: 0;
9670 flex-basis: 50%;
9671 }
9672
9673 .flex-item-fixed-8-12 {
9674 flex-grow: 0;
9675 flex-shrink: 0;
9676 flex-basis: 66.6666%;
9677 }
9678
9679 .flex-item-fixed-9-12 {
9680 flex-grow: 0;
9681 flex-shrink: 0;
9682 flex-basis: 75%;
9683 }
9684
9685
9686 .flex-item-fixed-12-12 {
9687 flex-grow: 0;
9688 flex-shrink: 0;
9689 flex-basis: 100%;
9690 }
9691
9692 .flex-item-10-percent {
9693 flex-grow: 0;
9694 flex-shrink: 0;
9695 flex-basis: 10%;
9696 }
9697
9698 .flex-item-15-percent {
9699 flex-grow: 0;
9700 flex-shrink: 0;
9701 flex-basis: 15%;
9702 }
9703
9704 .flex-item-20-percent {
9705 flex-grow: 0;
9706 flex-shrink: 0;
9707 flex-basis: 20%;
9708 }
9709
9710 .flex-item-30-percent {
9711 flex-grow: 0;
9712 flex-shrink: 0;
9713 flex-basis: 30%;
9714 }
9715
9716 .flex-item-40-percent {
9717 flex-grow: 0;
9718 flex-shrink: 0;
9719 flex-basis: 40%;
9720 }
9721
9722 .flex-item-50-percent {
9723 flex-grow: 0;
9724 flex-shrink: 0;
9725 flex-basis: 50%;
9726 }
9727
9728 .flex-item-60-percent {
9729 flex-grow: 0;
9730 flex-shrink: 0;
9731 flex-basis: 60%;
9732 }
9733
9734 .flex-item-70-percent {
9735 flex-grow: 0;
9736 flex-shrink: 0;
9737 flex-basis: 70%;
9738 }
9739
9740 .flex-item-80-percent {
9741 flex-grow: 0;
9742 flex-shrink: 0;
9743 flex-basis: 80%;
9744 }
9745
9746 .well {
9747 min-height: 20px;
9748 padding: 19px;
9749 margin-bottom: 20px;
9750 background-color: #f5f5f5;
9751 border: 1px solid #e3e3e3;
9752 border-radius: 4px;
9753 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
9754 }
9755
9756 .break-wrap {
9757 word-wrap: break-word;
9758 }
9759 </style>
9760
9761 <nav-bar>
9762 <top-nav-menu last="{{ true }}"></top-nav-menu>
9763 <nav-refresh callback="{{ refresh }}"></nav-refresh>
9764 </nav-bar>
9765
9766 <div class="content">
9767 <!-- Pipe Socket -->
9768 <template if="{{ socket.isPipe }}">
9769 <h1>Pipe Socket</h1>
9770 <div class="memberList">
9771 <template if="{{ socket.socketOwner != null }}">
9772 <div class="memberItem">
9773 <div class="memberName">Owner</div>
9774 <div class="memberValue"><io-ref ref="{{ socket.socketOwner }}"></ io-ref></div>
9775 </div>
9776 </template>
9777 <div class="memberItem">
9778 <div class="memberName">File descriptor</div>
9779 <div class="memberValue">{{ socket.fd }}</div>
9780 </div>
9781 <div class="memberItem">
9782 <div class="memberName">Read Closed</div>
9783 <div class="memberValue">{{ socket.readClosed }}</div>
9784 </div>
9785 <div class="memberItem">
9786 <div class="memberName">Write Closed</div>
9787 <div class="memberValue">{{ socket.writeClosed }}</div>
9788 </div>
9789 <div class="memberItem">
9790 <div class="memberName">Closing</div>
9791 <div class="memberValue">{{ socket.closing }}</div>
9792 </div>
9793 </div>
9794 </template>
9795 <!-- Network Socket -->
9796 <template if="{{ !socket.isPipe }}">
9797 <h1>Network Socket</h1>
9798 <div class="memberList">
9799 <template if="{{ socket.socketOwner != null }}">
9800 <div class="memberItem">
9801 <div class="memberName">Owner</div>
9802 <div class="memberValue"><io-ref ref="{{ socket.socketOwner }}"></ io-ref></div>
9803 </div>
9804 </template>
9805 <div class="memberItem">
9806 <div class="memberName">Local Address</div>
9807 <div class="memberValue">{{ socket.localAddress }}</div>
9808 </div>
9809 <div class="memberItem">
9810 <div class="memberName">Local Port</div>
9811 <div class="memberValue">{{ socket.localPort }}</div>
9812 </div>
9813 <div class="memberItem">
9814 <div class="memberName">Remote Address</div>
9815 <div class="memberValue">{{ socket.remoteAddress }}</div>
9816 </div>
9817 <div class="memberItem">
9818 <div class="memberName">Remote Port</div>
9819 <div class="memberValue">{{ socket.remotePort }}</div>
9820 </div>
9821 <div class="memberItem">
9822 <div class="memberName">File descriptor</div>
9823 <div class="memberValue">{{ socket.fd }}</div>
9824 </div>
9825 <div class="memberItem">
9826 <div class="memberName">Read Closed</div>
9827 <div class="memberValue">{{ socket.readClosed }}</div>
9828 </div>
9829 <div class="memberItem">
9830 <div class="memberName">Write Closed</div>
9831 <div class="memberValue">{{ socket.writeClosed }}</div>
9832 </div>
9833 <div class="memberItem">
9834 <div class="memberName">Closing</div>
9835 <div class="memberValue">{{ socket.closing }}</div>
9836 </div>
9837 <div class="memberItem">
9838 <div class="memberName">Listening</div>
9839 <div class="memberValue">{{ socket.listening }}</div>
9840 </div>
9841 <div class="memberItem">
9842 <div class="memberName">Protocol</div>
9843 <div class="memberValue">{{ socket.protocol }}</div>
9844 </div>
9845 </div>
9846 </template>
9847 </div>
9848 <br>
9849 <hr>
9850 </template>
9851 </polymer-element>
9852
9853 <polymer-element name="io-web-socket-ref" extends="service-ref">
9854 <template>
9855 <style>
9856 /* Global styles */
9857 * {
9858 margin: 0;
9859 padding: 0;
9860 font: 400 14px 'Montserrat', sans-serif;
9861 color: #333;
9862 box-sizing: border-box;
9863 }
9864
9865 .content {
9866 padding-left: 10%;
9867 font: 400 14px 'Montserrat', sans-serif;
9868 }
9869
9870 .content-centered {
9871 padding-left: 10%;
9872 padding-right: 10%;
9873 font: 400 14px 'Montserrat', sans-serif;
9874 }
9875
9876 .content-centered-big {
9877 padding-left: 5%;
9878 padding-right: 5%;
9879 font: 400 14px 'Montserrat', sans-serif;
9880 }
9881
9882 h1 {
9883 font: 400 18px 'Montserrat', sans-serif;
9884 }
9885
9886 .memberList {
9887 display: table;
9888 }
9889
9890 .memberItem {
9891 display: table-row;
9892 }
9893
9894 .memberName, .memberValue {
9895 display: table-cell;
9896 vertical-align: top;
9897 padding: 3px 0 3px 1em;
9898 font: 400 14px 'Montserrat', sans-serif;
9899 }
9900
9901 .monospace {
9902 font-family: consolas, courier, monospace;
9903 font-size: 1em;
9904 line-height: 1.2em;
9905 white-space: nowrap;
9906 }
9907
9908 a {
9909 color: #0489c3;
9910 text-decoration: none;
9911 }
9912
9913 a:hover {
9914 text-decoration: underline;
9915 }
9916
9917 em {
9918 color: inherit;
9919 font-style: italic;
9920 }
9921
9922 b {
9923 color: inherit;
9924 font-weight: bold;
9925 }
9926
9927 hr {
9928 margin-top: 20px;
9929 margin-bottom: 20px;
9930 border: 0;
9931 border-top: 1px solid #eee;
9932 height: 0;
9933 box-sizing: content-box;
9934 }
9935
9936 .list-group {
9937 padding-left: 0;
9938 margin-bottom: 20px;
9939 }
9940
9941 .list-group-item {
9942 position: relative;
9943 display: block;
9944 padding: 10px 15px;
9945 margin-bottom: -1px;
9946 background-color: #fff;
9947 }
9948
9949 .list-group-item:first-child {
9950 /* rounded top corners */
9951 border-top-right-radius:4px;
9952 border-top-left-radius:4px;
9953 }
9954
9955 .list-group-item:last-child {
9956 margin-bottom: 0;
9957 /* rounded bottom corners */
9958 border-bottom-right-radius: 4px;
9959 border-bottom-left-radius:4px;
9960 }
9961
9962 /* Flex row container */
9963 .flex-row {
9964 display: flex;
9965 flex-direction: row;
9966 }
9967
9968 /* Flex column container */
9969 .flex-column {
9970 display: flex;
9971 flex-direction: column;
9972 }
9973
9974 .flex-item-fit {
9975 flex-grow: 1;
9976 flex-shrink: 1;
9977 flex-basis: auto;
9978 }
9979
9980 .flex-item-no-shrink {
9981 flex-grow: 0;
9982 flex-shrink: 0;
9983 flex-basis: auto;
9984 }
9985
9986 .flex-item-fill {
9987 flex-grow: 0;
9988 flex-shrink: 1; /* shrink when pressured */
9989 flex-basis: 100%; /* try and take 100% */
9990 }
9991
9992 .flex-item-fixed-1-12 {
9993 flex-grow: 0;
9994 flex-shrink: 0;
9995 flex-basis: 8.3%;
9996 }
9997
9998 .flex-item-fixed-2-12 {
9999 flex-grow: 0;
10000 flex-shrink: 0;
10001 flex-basis: 16.6%;
10002 }
10003
10004 .flex-item-fixed-4-12 {
10005 flex-grow: 0;
10006 flex-shrink: 0;
10007 flex-basis: 33.3333%;
10008 }
10009
10010 .flex-item-fixed-6-12, .flex-item-50-percent {
10011 flex-grow: 0;
10012 flex-shrink: 0;
10013 flex-basis: 50%;
10014 }
10015
10016 .flex-item-fixed-8-12 {
10017 flex-grow: 0;
10018 flex-shrink: 0;
10019 flex-basis: 66.6666%;
10020 }
10021
10022 .flex-item-fixed-9-12 {
10023 flex-grow: 0;
10024 flex-shrink: 0;
10025 flex-basis: 75%;
10026 }
10027
10028
10029 .flex-item-fixed-12-12 {
10030 flex-grow: 0;
10031 flex-shrink: 0;
10032 flex-basis: 100%;
10033 }
10034
10035 .flex-item-10-percent {
10036 flex-grow: 0;
10037 flex-shrink: 0;
10038 flex-basis: 10%;
10039 }
10040
10041 .flex-item-15-percent {
10042 flex-grow: 0;
10043 flex-shrink: 0;
10044 flex-basis: 15%;
10045 }
10046
10047 .flex-item-20-percent {
10048 flex-grow: 0;
10049 flex-shrink: 0;
10050 flex-basis: 20%;
10051 }
10052
10053 .flex-item-30-percent {
10054 flex-grow: 0;
10055 flex-shrink: 0;
10056 flex-basis: 30%;
10057 }
10058
10059 .flex-item-40-percent {
10060 flex-grow: 0;
10061 flex-shrink: 0;
10062 flex-basis: 40%;
10063 }
10064
10065 .flex-item-50-percent {
10066 flex-grow: 0;
10067 flex-shrink: 0;
10068 flex-basis: 50%;
10069 }
10070
10071 .flex-item-60-percent {
10072 flex-grow: 0;
10073 flex-shrink: 0;
10074 flex-basis: 60%;
10075 }
10076
10077 .flex-item-70-percent {
10078 flex-grow: 0;
10079 flex-shrink: 0;
10080 flex-basis: 70%;
10081 }
10082
10083 .flex-item-80-percent {
10084 flex-grow: 0;
10085 flex-shrink: 0;
10086 flex-basis: 80%;
10087 }
10088
10089 .well {
10090 min-height: 20px;
10091 padding: 19px;
10092 margin-bottom: 20px;
10093 background-color: #f5f5f5;
10094 border: 1px solid #e3e3e3;
10095 border-radius: 4px;
10096 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
10097 }
10098
10099 .break-wrap {
10100 word-wrap: break-word;
10101 }
10102 </style>
10103 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
10104 </template>
10105 </polymer-element>
10106
10107 <polymer-element name="io-web-socket-list-view" extends="observatory-element">
10108 <template>
10109 <style>
10110 /* Global styles */
10111 * {
10112 margin: 0;
10113 padding: 0;
10114 font: 400 14px 'Montserrat', sans-serif;
10115 color: #333;
10116 box-sizing: border-box;
10117 }
10118
10119 .content {
10120 padding-left: 10%;
10121 font: 400 14px 'Montserrat', sans-serif;
10122 }
10123
10124 .content-centered {
10125 padding-left: 10%;
10126 padding-right: 10%;
10127 font: 400 14px 'Montserrat', sans-serif;
10128 }
10129
10130 .content-centered-big {
10131 padding-left: 5%;
10132 padding-right: 5%;
10133 font: 400 14px 'Montserrat', sans-serif;
10134 }
10135
10136 h1 {
10137 font: 400 18px 'Montserrat', sans-serif;
10138 }
10139
10140 .memberList {
10141 display: table;
10142 }
10143
10144 .memberItem {
10145 display: table-row;
10146 }
10147
10148 .memberName, .memberValue {
10149 display: table-cell;
10150 vertical-align: top;
10151 padding: 3px 0 3px 1em;
10152 font: 400 14px 'Montserrat', sans-serif;
10153 }
10154
10155 .monospace {
10156 font-family: consolas, courier, monospace;
10157 font-size: 1em;
10158 line-height: 1.2em;
10159 white-space: nowrap;
10160 }
10161
10162 a {
10163 color: #0489c3;
10164 text-decoration: none;
10165 }
10166
10167 a:hover {
10168 text-decoration: underline;
10169 }
10170
10171 em {
10172 color: inherit;
10173 font-style: italic;
10174 }
10175
10176 b {
10177 color: inherit;
10178 font-weight: bold;
10179 }
10180
10181 hr {
10182 margin-top: 20px;
10183 margin-bottom: 20px;
10184 border: 0;
10185 border-top: 1px solid #eee;
10186 height: 0;
10187 box-sizing: content-box;
10188 }
10189
10190 .list-group {
10191 padding-left: 0;
10192 margin-bottom: 20px;
10193 }
10194
10195 .list-group-item {
10196 position: relative;
10197 display: block;
10198 padding: 10px 15px;
10199 margin-bottom: -1px;
10200 background-color: #fff;
10201 }
10202
10203 .list-group-item:first-child {
10204 /* rounded top corners */
10205 border-top-right-radius:4px;
10206 border-top-left-radius:4px;
10207 }
10208
10209 .list-group-item:last-child {
10210 margin-bottom: 0;
10211 /* rounded bottom corners */
10212 border-bottom-right-radius: 4px;
10213 border-bottom-left-radius:4px;
10214 }
10215
10216 /* Flex row container */
10217 .flex-row {
10218 display: flex;
10219 flex-direction: row;
10220 }
10221
10222 /* Flex column container */
10223 .flex-column {
10224 display: flex;
10225 flex-direction: column;
10226 }
10227
10228 .flex-item-fit {
10229 flex-grow: 1;
10230 flex-shrink: 1;
10231 flex-basis: auto;
10232 }
10233
10234 .flex-item-no-shrink {
10235 flex-grow: 0;
10236 flex-shrink: 0;
10237 flex-basis: auto;
10238 }
10239
10240 .flex-item-fill {
10241 flex-grow: 0;
10242 flex-shrink: 1; /* shrink when pressured */
10243 flex-basis: 100%; /* try and take 100% */
10244 }
10245
10246 .flex-item-fixed-1-12 {
10247 flex-grow: 0;
10248 flex-shrink: 0;
10249 flex-basis: 8.3%;
10250 }
10251
10252 .flex-item-fixed-2-12 {
10253 flex-grow: 0;
10254 flex-shrink: 0;
10255 flex-basis: 16.6%;
10256 }
10257
10258 .flex-item-fixed-4-12 {
10259 flex-grow: 0;
10260 flex-shrink: 0;
10261 flex-basis: 33.3333%;
10262 }
10263
10264 .flex-item-fixed-6-12, .flex-item-50-percent {
10265 flex-grow: 0;
10266 flex-shrink: 0;
10267 flex-basis: 50%;
10268 }
10269
10270 .flex-item-fixed-8-12 {
10271 flex-grow: 0;
10272 flex-shrink: 0;
10273 flex-basis: 66.6666%;
10274 }
10275
10276 .flex-item-fixed-9-12 {
10277 flex-grow: 0;
10278 flex-shrink: 0;
10279 flex-basis: 75%;
10280 }
10281
10282
10283 .flex-item-fixed-12-12 {
10284 flex-grow: 0;
10285 flex-shrink: 0;
10286 flex-basis: 100%;
10287 }
10288
10289 .flex-item-10-percent {
10290 flex-grow: 0;
10291 flex-shrink: 0;
10292 flex-basis: 10%;
10293 }
10294
10295 .flex-item-15-percent {
10296 flex-grow: 0;
10297 flex-shrink: 0;
10298 flex-basis: 15%;
10299 }
10300
10301 .flex-item-20-percent {
10302 flex-grow: 0;
10303 flex-shrink: 0;
10304 flex-basis: 20%;
10305 }
10306
10307 .flex-item-30-percent {
10308 flex-grow: 0;
10309 flex-shrink: 0;
10310 flex-basis: 30%;
10311 }
10312
10313 .flex-item-40-percent {
10314 flex-grow: 0;
10315 flex-shrink: 0;
10316 flex-basis: 40%;
10317 }
10318
10319 .flex-item-50-percent {
10320 flex-grow: 0;
10321 flex-shrink: 0;
10322 flex-basis: 50%;
10323 }
10324
10325 .flex-item-60-percent {
10326 flex-grow: 0;
10327 flex-shrink: 0;
10328 flex-basis: 60%;
10329 }
10330
10331 .flex-item-70-percent {
10332 flex-grow: 0;
10333 flex-shrink: 0;
10334 flex-basis: 70%;
10335 }
10336
10337 .flex-item-80-percent {
10338 flex-grow: 0;
10339 flex-shrink: 0;
10340 flex-basis: 80%;
10341 }
10342
10343 .well {
10344 min-height: 20px;
10345 padding: 19px;
10346 margin-bottom: 20px;
10347 background-color: #f5f5f5;
10348 border: 1px solid #e3e3e3;
10349 border-radius: 4px;
10350 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
10351 }
10352
10353 .break-wrap {
10354 word-wrap: break-word;
10355 }
10356 </style>
10357
10358 <nav-bar>
10359 <top-nav-menu last="{{ true }}"></top-nav-menu>
10360 <nav-refresh callback="{{ refresh }}"></nav-refresh>
10361 </nav-bar>
10362
10363 <div class="content">
10364 <h1>WebSockets</h1>
10365
10366 <br>
10367
10368 <ul class="list-group">
10369 <template repeat="{{ webSocket in list['members'] }}">
10370 <li class="list-group-item">
10371 <io-web-socket-ref ref="{{ webSocket }}"></io-web-socket-ref>
10372 </li>
10373 </template>
10374 </ul>
10375 </div>
10376 <br>
10377 <hr>
10378 </template>
10379 </polymer-element>
10380
10381 <polymer-element name="io-web-socket-view" extends="observatory-element">
10382 <template>
10383 <style>
10384 /* Global styles */
10385 * {
10386 margin: 0;
10387 padding: 0;
10388 font: 400 14px 'Montserrat', sans-serif;
10389 color: #333;
10390 box-sizing: border-box;
10391 }
10392
10393 .content {
10394 padding-left: 10%;
10395 font: 400 14px 'Montserrat', sans-serif;
10396 }
10397
10398 .content-centered {
10399 padding-left: 10%;
10400 padding-right: 10%;
10401 font: 400 14px 'Montserrat', sans-serif;
10402 }
10403
10404 .content-centered-big {
10405 padding-left: 5%;
10406 padding-right: 5%;
10407 font: 400 14px 'Montserrat', sans-serif;
10408 }
10409
10410 h1 {
10411 font: 400 18px 'Montserrat', sans-serif;
10412 }
10413
10414 .memberList {
10415 display: table;
10416 }
10417
10418 .memberItem {
10419 display: table-row;
10420 }
10421
10422 .memberName, .memberValue {
10423 display: table-cell;
10424 vertical-align: top;
10425 padding: 3px 0 3px 1em;
10426 font: 400 14px 'Montserrat', sans-serif;
10427 }
10428
10429 .monospace {
10430 font-family: consolas, courier, monospace;
10431 font-size: 1em;
10432 line-height: 1.2em;
10433 white-space: nowrap;
10434 }
10435
10436 a {
10437 color: #0489c3;
10438 text-decoration: none;
10439 }
10440
10441 a:hover {
10442 text-decoration: underline;
10443 }
10444
10445 em {
10446 color: inherit;
10447 font-style: italic;
10448 }
10449
10450 b {
10451 color: inherit;
10452 font-weight: bold;
10453 }
10454
10455 hr {
10456 margin-top: 20px;
10457 margin-bottom: 20px;
10458 border: 0;
10459 border-top: 1px solid #eee;
10460 height: 0;
10461 box-sizing: content-box;
10462 }
10463
10464 .list-group {
10465 padding-left: 0;
10466 margin-bottom: 20px;
10467 }
10468
10469 .list-group-item {
10470 position: relative;
10471 display: block;
10472 padding: 10px 15px;
10473 margin-bottom: -1px;
10474 background-color: #fff;
10475 }
10476
10477 .list-group-item:first-child {
10478 /* rounded top corners */
10479 border-top-right-radius:4px;
10480 border-top-left-radius:4px;
10481 }
10482
10483 .list-group-item:last-child {
10484 margin-bottom: 0;
10485 /* rounded bottom corners */
10486 border-bottom-right-radius: 4px;
10487 border-bottom-left-radius:4px;
10488 }
10489
10490 /* Flex row container */
10491 .flex-row {
10492 display: flex;
10493 flex-direction: row;
10494 }
10495
10496 /* Flex column container */
10497 .flex-column {
10498 display: flex;
10499 flex-direction: column;
10500 }
10501
10502 .flex-item-fit {
10503 flex-grow: 1;
10504 flex-shrink: 1;
10505 flex-basis: auto;
10506 }
10507
10508 .flex-item-no-shrink {
10509 flex-grow: 0;
10510 flex-shrink: 0;
10511 flex-basis: auto;
10512 }
10513
10514 .flex-item-fill {
10515 flex-grow: 0;
10516 flex-shrink: 1; /* shrink when pressured */
10517 flex-basis: 100%; /* try and take 100% */
10518 }
10519
10520 .flex-item-fixed-1-12 {
10521 flex-grow: 0;
10522 flex-shrink: 0;
10523 flex-basis: 8.3%;
10524 }
10525
10526 .flex-item-fixed-2-12 {
10527 flex-grow: 0;
10528 flex-shrink: 0;
10529 flex-basis: 16.6%;
10530 }
10531
10532 .flex-item-fixed-4-12 {
10533 flex-grow: 0;
10534 flex-shrink: 0;
10535 flex-basis: 33.3333%;
10536 }
10537
10538 .flex-item-fixed-6-12, .flex-item-50-percent {
10539 flex-grow: 0;
10540 flex-shrink: 0;
10541 flex-basis: 50%;
10542 }
10543
10544 .flex-item-fixed-8-12 {
10545 flex-grow: 0;
10546 flex-shrink: 0;
10547 flex-basis: 66.6666%;
10548 }
10549
10550 .flex-item-fixed-9-12 {
10551 flex-grow: 0;
10552 flex-shrink: 0;
10553 flex-basis: 75%;
10554 }
10555
10556
10557 .flex-item-fixed-12-12 {
10558 flex-grow: 0;
10559 flex-shrink: 0;
10560 flex-basis: 100%;
10561 }
10562
10563 .flex-item-10-percent {
10564 flex-grow: 0;
10565 flex-shrink: 0;
10566 flex-basis: 10%;
10567 }
10568
10569 .flex-item-15-percent {
10570 flex-grow: 0;
10571 flex-shrink: 0;
10572 flex-basis: 15%;
10573 }
10574
10575 .flex-item-20-percent {
10576 flex-grow: 0;
10577 flex-shrink: 0;
10578 flex-basis: 20%;
10579 }
10580
10581 .flex-item-30-percent {
10582 flex-grow: 0;
10583 flex-shrink: 0;
10584 flex-basis: 30%;
10585 }
10586
10587 .flex-item-40-percent {
10588 flex-grow: 0;
10589 flex-shrink: 0;
10590 flex-basis: 40%;
10591 }
10592
10593 .flex-item-50-percent {
10594 flex-grow: 0;
10595 flex-shrink: 0;
10596 flex-basis: 50%;
10597 }
10598
10599 .flex-item-60-percent {
10600 flex-grow: 0;
10601 flex-shrink: 0;
10602 flex-basis: 60%;
10603 }
10604
10605 .flex-item-70-percent {
10606 flex-grow: 0;
10607 flex-shrink: 0;
10608 flex-basis: 70%;
10609 }
10610
10611 .flex-item-80-percent {
10612 flex-grow: 0;
10613 flex-shrink: 0;
10614 flex-basis: 80%;
10615 }
10616
10617 .well {
10618 min-height: 20px;
10619 padding: 19px;
10620 margin-bottom: 20px;
10621 background-color: #f5f5f5;
10622 border: 1px solid #e3e3e3;
10623 border-radius: 4px;
10624 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
10625 }
10626
10627 .break-wrap {
10628 word-wrap: break-word;
10629 }
10630 </style>
10631
10632 <nav-bar>
10633 <top-nav-menu last="{{ true }}"></top-nav-menu>
10634 <nav-refresh callback="{{ refresh }}"></nav-refresh>
10635 </nav-bar>
10636
10637 <div class="content">
10638 <h1>WebSocket</h1>
10639
10640 <br>
10641
10642 <div class="memberList">
10643 <div class="memberItem">
10644 <div class="memberName">Socket</div>
10645 <div class="memberValue"><io-socket-ref ref="{{ webSocket['socket'] }} "></io-socket-ref></div>
10646 </div>
10647 </div>
10648 </div>
10649 <br>
10650 <hr>
10651 </template>
10652 </polymer-element>
10653
10654 <polymer-element name="io-random-access-file-ref" extends="service-ref">
10655 <template>
10656 <style>
10657 /* Global styles */
10658 * {
10659 margin: 0;
10660 padding: 0;
10661 font: 400 14px 'Montserrat', sans-serif;
10662 color: #333;
10663 box-sizing: border-box;
10664 }
10665
10666 .content {
10667 padding-left: 10%;
10668 font: 400 14px 'Montserrat', sans-serif;
10669 }
10670
10671 .content-centered {
10672 padding-left: 10%;
10673 padding-right: 10%;
10674 font: 400 14px 'Montserrat', sans-serif;
10675 }
10676
10677 .content-centered-big {
10678 padding-left: 5%;
10679 padding-right: 5%;
10680 font: 400 14px 'Montserrat', sans-serif;
10681 }
10682
10683 h1 {
10684 font: 400 18px 'Montserrat', sans-serif;
10685 }
10686
10687 .memberList {
10688 display: table;
10689 }
10690
10691 .memberItem {
10692 display: table-row;
10693 }
10694
10695 .memberName, .memberValue {
10696 display: table-cell;
10697 vertical-align: top;
10698 padding: 3px 0 3px 1em;
10699 font: 400 14px 'Montserrat', sans-serif;
10700 }
10701
10702 .monospace {
10703 font-family: consolas, courier, monospace;
10704 font-size: 1em;
10705 line-height: 1.2em;
10706 white-space: nowrap;
10707 }
10708
10709 a {
10710 color: #0489c3;
10711 text-decoration: none;
10712 }
10713
10714 a:hover {
10715 text-decoration: underline;
10716 }
10717
10718 em {
10719 color: inherit;
10720 font-style: italic;
10721 }
10722
10723 b {
10724 color: inherit;
10725 font-weight: bold;
10726 }
10727
10728 hr {
10729 margin-top: 20px;
10730 margin-bottom: 20px;
10731 border: 0;
10732 border-top: 1px solid #eee;
10733 height: 0;
10734 box-sizing: content-box;
10735 }
10736
10737 .list-group {
10738 padding-left: 0;
10739 margin-bottom: 20px;
10740 }
10741
10742 .list-group-item {
10743 position: relative;
10744 display: block;
10745 padding: 10px 15px;
10746 margin-bottom: -1px;
10747 background-color: #fff;
10748 }
10749
10750 .list-group-item:first-child {
10751 /* rounded top corners */
10752 border-top-right-radius:4px;
10753 border-top-left-radius:4px;
10754 }
10755
10756 .list-group-item:last-child {
10757 margin-bottom: 0;
10758 /* rounded bottom corners */
10759 border-bottom-right-radius: 4px;
10760 border-bottom-left-radius:4px;
10761 }
10762
10763 /* Flex row container */
10764 .flex-row {
10765 display: flex;
10766 flex-direction: row;
10767 }
10768
10769 /* Flex column container */
10770 .flex-column {
10771 display: flex;
10772 flex-direction: column;
10773 }
10774
10775 .flex-item-fit {
10776 flex-grow: 1;
10777 flex-shrink: 1;
10778 flex-basis: auto;
10779 }
10780
10781 .flex-item-no-shrink {
10782 flex-grow: 0;
10783 flex-shrink: 0;
10784 flex-basis: auto;
10785 }
10786
10787 .flex-item-fill {
10788 flex-grow: 0;
10789 flex-shrink: 1; /* shrink when pressured */
10790 flex-basis: 100%; /* try and take 100% */
10791 }
10792
10793 .flex-item-fixed-1-12 {
10794 flex-grow: 0;
10795 flex-shrink: 0;
10796 flex-basis: 8.3%;
10797 }
10798
10799 .flex-item-fixed-2-12 {
10800 flex-grow: 0;
10801 flex-shrink: 0;
10802 flex-basis: 16.6%;
10803 }
10804
10805 .flex-item-fixed-4-12 {
10806 flex-grow: 0;
10807 flex-shrink: 0;
10808 flex-basis: 33.3333%;
10809 }
10810
10811 .flex-item-fixed-6-12, .flex-item-50-percent {
10812 flex-grow: 0;
10813 flex-shrink: 0;
10814 flex-basis: 50%;
10815 }
10816
10817 .flex-item-fixed-8-12 {
10818 flex-grow: 0;
10819 flex-shrink: 0;
10820 flex-basis: 66.6666%;
10821 }
10822
10823 .flex-item-fixed-9-12 {
10824 flex-grow: 0;
10825 flex-shrink: 0;
10826 flex-basis: 75%;
10827 }
10828
10829
10830 .flex-item-fixed-12-12 {
10831 flex-grow: 0;
10832 flex-shrink: 0;
10833 flex-basis: 100%;
10834 }
10835
10836 .flex-item-10-percent {
10837 flex-grow: 0;
10838 flex-shrink: 0;
10839 flex-basis: 10%;
10840 }
10841
10842 .flex-item-15-percent {
10843 flex-grow: 0;
10844 flex-shrink: 0;
10845 flex-basis: 15%;
10846 }
10847
10848 .flex-item-20-percent {
10849 flex-grow: 0;
10850 flex-shrink: 0;
10851 flex-basis: 20%;
10852 }
10853
10854 .flex-item-30-percent {
10855 flex-grow: 0;
10856 flex-shrink: 0;
10857 flex-basis: 30%;
10858 }
10859
10860 .flex-item-40-percent {
10861 flex-grow: 0;
10862 flex-shrink: 0;
10863 flex-basis: 40%;
10864 }
10865
10866 .flex-item-50-percent {
10867 flex-grow: 0;
10868 flex-shrink: 0;
10869 flex-basis: 50%;
10870 }
10871
10872 .flex-item-60-percent {
10873 flex-grow: 0;
10874 flex-shrink: 0;
10875 flex-basis: 60%;
10876 }
10877
10878 .flex-item-70-percent {
10879 flex-grow: 0;
10880 flex-shrink: 0;
10881 flex-basis: 70%;
10882 }
10883
10884 .flex-item-80-percent {
10885 flex-grow: 0;
10886 flex-shrink: 0;
10887 flex-basis: 80%;
10888 }
10889
10890 .well {
10891 min-height: 20px;
10892 padding: 19px;
10893 margin-bottom: 20px;
10894 background-color: #f5f5f5;
10895 border: 1px solid #e3e3e3;
10896 border-radius: 4px;
10897 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
10898 }
10899
10900 .break-wrap {
10901 word-wrap: break-word;
10902 }
10903 </style>
10904 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
10905 </template>
10906 </polymer-element>
10907
10908 <polymer-element name="io-random-access-file-list-view" extends="observatory-ele ment">
10909 <template>
10910 <style>
10911 /* Global styles */
10912 * {
10913 margin: 0;
10914 padding: 0;
10915 font: 400 14px 'Montserrat', sans-serif;
10916 color: #333;
10917 box-sizing: border-box;
10918 }
10919
10920 .content {
10921 padding-left: 10%;
10922 font: 400 14px 'Montserrat', sans-serif;
10923 }
10924
10925 .content-centered {
10926 padding-left: 10%;
10927 padding-right: 10%;
10928 font: 400 14px 'Montserrat', sans-serif;
10929 }
10930
10931 .content-centered-big {
10932 padding-left: 5%;
10933 padding-right: 5%;
10934 font: 400 14px 'Montserrat', sans-serif;
10935 }
10936
10937 h1 {
10938 font: 400 18px 'Montserrat', sans-serif;
10939 }
10940
10941 .memberList {
10942 display: table;
10943 }
10944
10945 .memberItem {
10946 display: table-row;
10947 }
10948
10949 .memberName, .memberValue {
10950 display: table-cell;
10951 vertical-align: top;
10952 padding: 3px 0 3px 1em;
10953 font: 400 14px 'Montserrat', sans-serif;
10954 }
10955
10956 .monospace {
10957 font-family: consolas, courier, monospace;
10958 font-size: 1em;
10959 line-height: 1.2em;
10960 white-space: nowrap;
10961 }
10962
10963 a {
10964 color: #0489c3;
10965 text-decoration: none;
10966 }
10967
10968 a:hover {
10969 text-decoration: underline;
10970 }
10971
10972 em {
10973 color: inherit;
10974 font-style: italic;
10975 }
10976
10977 b {
10978 color: inherit;
10979 font-weight: bold;
10980 }
10981
10982 hr {
10983 margin-top: 20px;
10984 margin-bottom: 20px;
10985 border: 0;
10986 border-top: 1px solid #eee;
10987 height: 0;
10988 box-sizing: content-box;
10989 }
10990
10991 .list-group {
10992 padding-left: 0;
10993 margin-bottom: 20px;
10994 }
10995
10996 .list-group-item {
10997 position: relative;
10998 display: block;
10999 padding: 10px 15px;
11000 margin-bottom: -1px;
11001 background-color: #fff;
11002 }
11003
11004 .list-group-item:first-child {
11005 /* rounded top corners */
11006 border-top-right-radius:4px;
11007 border-top-left-radius:4px;
11008 }
11009
11010 .list-group-item:last-child {
11011 margin-bottom: 0;
11012 /* rounded bottom corners */
11013 border-bottom-right-radius: 4px;
11014 border-bottom-left-radius:4px;
11015 }
11016
11017 /* Flex row container */
11018 .flex-row {
11019 display: flex;
11020 flex-direction: row;
11021 }
11022
11023 /* Flex column container */
11024 .flex-column {
11025 display: flex;
11026 flex-direction: column;
11027 }
11028
11029 .flex-item-fit {
11030 flex-grow: 1;
11031 flex-shrink: 1;
11032 flex-basis: auto;
11033 }
11034
11035 .flex-item-no-shrink {
11036 flex-grow: 0;
11037 flex-shrink: 0;
11038 flex-basis: auto;
11039 }
11040
11041 .flex-item-fill {
11042 flex-grow: 0;
11043 flex-shrink: 1; /* shrink when pressured */
11044 flex-basis: 100%; /* try and take 100% */
11045 }
11046
11047 .flex-item-fixed-1-12 {
11048 flex-grow: 0;
11049 flex-shrink: 0;
11050 flex-basis: 8.3%;
11051 }
11052
11053 .flex-item-fixed-2-12 {
11054 flex-grow: 0;
11055 flex-shrink: 0;
11056 flex-basis: 16.6%;
11057 }
11058
11059 .flex-item-fixed-4-12 {
11060 flex-grow: 0;
11061 flex-shrink: 0;
11062 flex-basis: 33.3333%;
11063 }
11064
11065 .flex-item-fixed-6-12, .flex-item-50-percent {
11066 flex-grow: 0;
11067 flex-shrink: 0;
11068 flex-basis: 50%;
11069 }
11070
11071 .flex-item-fixed-8-12 {
11072 flex-grow: 0;
11073 flex-shrink: 0;
11074 flex-basis: 66.6666%;
11075 }
11076
11077 .flex-item-fixed-9-12 {
11078 flex-grow: 0;
11079 flex-shrink: 0;
11080 flex-basis: 75%;
11081 }
11082
11083
11084 .flex-item-fixed-12-12 {
11085 flex-grow: 0;
11086 flex-shrink: 0;
11087 flex-basis: 100%;
11088 }
11089
11090 .flex-item-10-percent {
11091 flex-grow: 0;
11092 flex-shrink: 0;
11093 flex-basis: 10%;
11094 }
11095
11096 .flex-item-15-percent {
11097 flex-grow: 0;
11098 flex-shrink: 0;
11099 flex-basis: 15%;
11100 }
11101
11102 .flex-item-20-percent {
11103 flex-grow: 0;
11104 flex-shrink: 0;
11105 flex-basis: 20%;
11106 }
11107
11108 .flex-item-30-percent {
11109 flex-grow: 0;
11110 flex-shrink: 0;
11111 flex-basis: 30%;
11112 }
11113
11114 .flex-item-40-percent {
11115 flex-grow: 0;
11116 flex-shrink: 0;
11117 flex-basis: 40%;
11118 }
11119
11120 .flex-item-50-percent {
11121 flex-grow: 0;
11122 flex-shrink: 0;
11123 flex-basis: 50%;
11124 }
11125
11126 .flex-item-60-percent {
11127 flex-grow: 0;
11128 flex-shrink: 0;
11129 flex-basis: 60%;
11130 }
11131
11132 .flex-item-70-percent {
11133 flex-grow: 0;
11134 flex-shrink: 0;
11135 flex-basis: 70%;
11136 }
11137
11138 .flex-item-80-percent {
11139 flex-grow: 0;
11140 flex-shrink: 0;
11141 flex-basis: 80%;
11142 }
11143
11144 .well {
11145 min-height: 20px;
11146 padding: 19px;
11147 margin-bottom: 20px;
11148 background-color: #f5f5f5;
11149 border: 1px solid #e3e3e3;
11150 border-radius: 4px;
11151 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
11152 }
11153
11154 .break-wrap {
11155 word-wrap: break-word;
11156 }
11157 </style>
11158
11159 <nav-bar>
11160 <top-nav-menu last="{{ true }}"></top-nav-menu>
11161 <nav-refresh callback="{{ refresh }}"></nav-refresh>
11162 </nav-bar>
11163
11164 <div class="content">
11165 <h1>Random Access Files</h1>
11166
11167 <br>
11168
11169 <ul class="list-group">
11170 <template repeat="{{ file in list['members'] }}">
11171 <li class="list-group-item">
11172 <io-random-access-file-ref ref="{{ file }}"></io-random-access-file- ref>
11173 </li>
11174 </template>
11175 </ul>
11176 </div>
11177 <br>
11178 <hr>
11179 </template>
11180 </polymer-element>
11181
11182 <polymer-element name="io-random-access-file-view" extends="observatory-element" >
11183 <template>
11184 <style>
11185 /* Global styles */
11186 * {
11187 margin: 0;
11188 padding: 0;
11189 font: 400 14px 'Montserrat', sans-serif;
11190 color: #333;
11191 box-sizing: border-box;
11192 }
11193
11194 .content {
11195 padding-left: 10%;
11196 font: 400 14px 'Montserrat', sans-serif;
11197 }
11198
11199 .content-centered {
11200 padding-left: 10%;
11201 padding-right: 10%;
11202 font: 400 14px 'Montserrat', sans-serif;
11203 }
11204
11205 .content-centered-big {
11206 padding-left: 5%;
11207 padding-right: 5%;
11208 font: 400 14px 'Montserrat', sans-serif;
11209 }
11210
11211 h1 {
11212 font: 400 18px 'Montserrat', sans-serif;
11213 }
11214
11215 .memberList {
11216 display: table;
11217 }
11218
11219 .memberItem {
11220 display: table-row;
11221 }
11222
11223 .memberName, .memberValue {
11224 display: table-cell;
11225 vertical-align: top;
11226 padding: 3px 0 3px 1em;
11227 font: 400 14px 'Montserrat', sans-serif;
11228 }
11229
11230 .monospace {
11231 font-family: consolas, courier, monospace;
11232 font-size: 1em;
11233 line-height: 1.2em;
11234 white-space: nowrap;
11235 }
11236
11237 a {
11238 color: #0489c3;
11239 text-decoration: none;
11240 }
11241
11242 a:hover {
11243 text-decoration: underline;
11244 }
11245
11246 em {
11247 color: inherit;
11248 font-style: italic;
11249 }
11250
11251 b {
11252 color: inherit;
11253 font-weight: bold;
11254 }
11255
11256 hr {
11257 margin-top: 20px;
11258 margin-bottom: 20px;
11259 border: 0;
11260 border-top: 1px solid #eee;
11261 height: 0;
11262 box-sizing: content-box;
11263 }
11264
11265 .list-group {
11266 padding-left: 0;
11267 margin-bottom: 20px;
11268 }
11269
11270 .list-group-item {
11271 position: relative;
11272 display: block;
11273 padding: 10px 15px;
11274 margin-bottom: -1px;
11275 background-color: #fff;
11276 }
11277
11278 .list-group-item:first-child {
11279 /* rounded top corners */
11280 border-top-right-radius:4px;
11281 border-top-left-radius:4px;
11282 }
11283
11284 .list-group-item:last-child {
11285 margin-bottom: 0;
11286 /* rounded bottom corners */
11287 border-bottom-right-radius: 4px;
11288 border-bottom-left-radius:4px;
11289 }
11290
11291 /* Flex row container */
11292 .flex-row {
11293 display: flex;
11294 flex-direction: row;
11295 }
11296
11297 /* Flex column container */
11298 .flex-column {
11299 display: flex;
11300 flex-direction: column;
11301 }
11302
11303 .flex-item-fit {
11304 flex-grow: 1;
11305 flex-shrink: 1;
11306 flex-basis: auto;
11307 }
11308
11309 .flex-item-no-shrink {
11310 flex-grow: 0;
11311 flex-shrink: 0;
11312 flex-basis: auto;
11313 }
11314
11315 .flex-item-fill {
11316 flex-grow: 0;
11317 flex-shrink: 1; /* shrink when pressured */
11318 flex-basis: 100%; /* try and take 100% */
11319 }
11320
11321 .flex-item-fixed-1-12 {
11322 flex-grow: 0;
11323 flex-shrink: 0;
11324 flex-basis: 8.3%;
11325 }
11326
11327 .flex-item-fixed-2-12 {
11328 flex-grow: 0;
11329 flex-shrink: 0;
11330 flex-basis: 16.6%;
11331 }
11332
11333 .flex-item-fixed-4-12 {
11334 flex-grow: 0;
11335 flex-shrink: 0;
11336 flex-basis: 33.3333%;
11337 }
11338
11339 .flex-item-fixed-6-12, .flex-item-50-percent {
11340 flex-grow: 0;
11341 flex-shrink: 0;
11342 flex-basis: 50%;
11343 }
11344
11345 .flex-item-fixed-8-12 {
11346 flex-grow: 0;
11347 flex-shrink: 0;
11348 flex-basis: 66.6666%;
11349 }
11350
11351 .flex-item-fixed-9-12 {
11352 flex-grow: 0;
11353 flex-shrink: 0;
11354 flex-basis: 75%;
11355 }
11356
11357
11358 .flex-item-fixed-12-12 {
11359 flex-grow: 0;
11360 flex-shrink: 0;
11361 flex-basis: 100%;
11362 }
11363
11364 .flex-item-10-percent {
11365 flex-grow: 0;
11366 flex-shrink: 0;
11367 flex-basis: 10%;
11368 }
11369
11370 .flex-item-15-percent {
11371 flex-grow: 0;
11372 flex-shrink: 0;
11373 flex-basis: 15%;
11374 }
11375
11376 .flex-item-20-percent {
11377 flex-grow: 0;
11378 flex-shrink: 0;
11379 flex-basis: 20%;
11380 }
11381
11382 .flex-item-30-percent {
11383 flex-grow: 0;
11384 flex-shrink: 0;
11385 flex-basis: 30%;
11386 }
11387
11388 .flex-item-40-percent {
11389 flex-grow: 0;
11390 flex-shrink: 0;
11391 flex-basis: 40%;
11392 }
11393
11394 .flex-item-50-percent {
11395 flex-grow: 0;
11396 flex-shrink: 0;
11397 flex-basis: 50%;
11398 }
11399
11400 .flex-item-60-percent {
11401 flex-grow: 0;
11402 flex-shrink: 0;
11403 flex-basis: 60%;
11404 }
11405
11406 .flex-item-70-percent {
11407 flex-grow: 0;
11408 flex-shrink: 0;
11409 flex-basis: 70%;
11410 }
11411
11412 .flex-item-80-percent {
11413 flex-grow: 0;
11414 flex-shrink: 0;
11415 flex-basis: 80%;
11416 }
11417
11418 .well {
11419 min-height: 20px;
11420 padding: 19px;
11421 margin-bottom: 20px;
11422 background-color: #f5f5f5;
11423 border: 1px solid #e3e3e3;
11424 border-radius: 4px;
11425 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
11426 }
11427
11428 .break-wrap {
11429 word-wrap: break-word;
11430 }
11431 </style>
11432
11433 <nav-bar>
11434 <top-nav-menu last="{{ true }}"></top-nav-menu>
11435 <nav-refresh callback="{{ refresh }}"></nav-refresh>
11436 </nav-bar>
11437
11438 <div class="content">
11439 <h1>Random Access File</h1>
11440
11441 <br>
11442
11443 <div class="memberList">
11444 <div class="memberItem">
11445 <div class="memberName">Path</div>
11446 <div class="memberValue">{{ file['name'] }}</div>
11447 </div>
11448 <div class="memberItem">
11449 <div class="memberName">Pending Operation</div>
11450 <div class="memberValue">{{ file['asyncDispatched'] }}</div>
11451 </div>
11452 <div class="memberItem">
11453 <div class="memberName">File Descriptor</div>
11454 <div class="memberValue">{{ file['fd'] }}</div>
11455 </div>
11456 </div>
11457 </div>
11458 <br>
11459 <hr>
11460 </template>
11461 </polymer-element>
11462
11463 <polymer-element name="io-process-list-view" extends="observatory-element">
11464 <template>
11465 <style>
11466 /* Global styles */
11467 * {
11468 margin: 0;
11469 padding: 0;
11470 font: 400 14px 'Montserrat', sans-serif;
11471 color: #333;
11472 box-sizing: border-box;
11473 }
11474
11475 .content {
11476 padding-left: 10%;
11477 font: 400 14px 'Montserrat', sans-serif;
11478 }
11479
11480 .content-centered {
11481 padding-left: 10%;
11482 padding-right: 10%;
11483 font: 400 14px 'Montserrat', sans-serif;
11484 }
11485
11486 .content-centered-big {
11487 padding-left: 5%;
11488 padding-right: 5%;
11489 font: 400 14px 'Montserrat', sans-serif;
11490 }
11491
11492 h1 {
11493 font: 400 18px 'Montserrat', sans-serif;
11494 }
11495
11496 .memberList {
11497 display: table;
11498 }
11499
11500 .memberItem {
11501 display: table-row;
11502 }
11503
11504 .memberName, .memberValue {
11505 display: table-cell;
11506 vertical-align: top;
11507 padding: 3px 0 3px 1em;
11508 font: 400 14px 'Montserrat', sans-serif;
11509 }
11510
11511 .monospace {
11512 font-family: consolas, courier, monospace;
11513 font-size: 1em;
11514 line-height: 1.2em;
11515 white-space: nowrap;
11516 }
11517
11518 a {
11519 color: #0489c3;
11520 text-decoration: none;
11521 }
11522
11523 a:hover {
11524 text-decoration: underline;
11525 }
11526
11527 em {
11528 color: inherit;
11529 font-style: italic;
11530 }
11531
11532 b {
11533 color: inherit;
11534 font-weight: bold;
11535 }
11536
11537 hr {
11538 margin-top: 20px;
11539 margin-bottom: 20px;
11540 border: 0;
11541 border-top: 1px solid #eee;
11542 height: 0;
11543 box-sizing: content-box;
11544 }
11545
11546 .list-group {
11547 padding-left: 0;
11548 margin-bottom: 20px;
11549 }
11550
11551 .list-group-item {
11552 position: relative;
11553 display: block;
11554 padding: 10px 15px;
11555 margin-bottom: -1px;
11556 background-color: #fff;
11557 }
11558
11559 .list-group-item:first-child {
11560 /* rounded top corners */
11561 border-top-right-radius:4px;
11562 border-top-left-radius:4px;
11563 }
11564
11565 .list-group-item:last-child {
11566 margin-bottom: 0;
11567 /* rounded bottom corners */
11568 border-bottom-right-radius: 4px;
11569 border-bottom-left-radius:4px;
11570 }
11571
11572 /* Flex row container */
11573 .flex-row {
11574 display: flex;
11575 flex-direction: row;
11576 }
11577
11578 /* Flex column container */
11579 .flex-column {
11580 display: flex;
11581 flex-direction: column;
11582 }
11583
11584 .flex-item-fit {
11585 flex-grow: 1;
11586 flex-shrink: 1;
11587 flex-basis: auto;
11588 }
11589
11590 .flex-item-no-shrink {
11591 flex-grow: 0;
11592 flex-shrink: 0;
11593 flex-basis: auto;
11594 }
11595
11596 .flex-item-fill {
11597 flex-grow: 0;
11598 flex-shrink: 1; /* shrink when pressured */
11599 flex-basis: 100%; /* try and take 100% */
11600 }
11601
11602 .flex-item-fixed-1-12 {
11603 flex-grow: 0;
11604 flex-shrink: 0;
11605 flex-basis: 8.3%;
11606 }
11607
11608 .flex-item-fixed-2-12 {
11609 flex-grow: 0;
11610 flex-shrink: 0;
11611 flex-basis: 16.6%;
11612 }
11613
11614 .flex-item-fixed-4-12 {
11615 flex-grow: 0;
11616 flex-shrink: 0;
11617 flex-basis: 33.3333%;
11618 }
11619
11620 .flex-item-fixed-6-12, .flex-item-50-percent {
11621 flex-grow: 0;
11622 flex-shrink: 0;
11623 flex-basis: 50%;
11624 }
11625
11626 .flex-item-fixed-8-12 {
11627 flex-grow: 0;
11628 flex-shrink: 0;
11629 flex-basis: 66.6666%;
11630 }
11631
11632 .flex-item-fixed-9-12 {
11633 flex-grow: 0;
11634 flex-shrink: 0;
11635 flex-basis: 75%;
11636 }
11637
11638
11639 .flex-item-fixed-12-12 {
11640 flex-grow: 0;
11641 flex-shrink: 0;
11642 flex-basis: 100%;
11643 }
11644
11645 .flex-item-10-percent {
11646 flex-grow: 0;
11647 flex-shrink: 0;
11648 flex-basis: 10%;
11649 }
11650
11651 .flex-item-15-percent {
11652 flex-grow: 0;
11653 flex-shrink: 0;
11654 flex-basis: 15%;
11655 }
11656
11657 .flex-item-20-percent {
11658 flex-grow: 0;
11659 flex-shrink: 0;
11660 flex-basis: 20%;
11661 }
11662
11663 .flex-item-30-percent {
11664 flex-grow: 0;
11665 flex-shrink: 0;
11666 flex-basis: 30%;
11667 }
11668
11669 .flex-item-40-percent {
11670 flex-grow: 0;
11671 flex-shrink: 0;
11672 flex-basis: 40%;
11673 }
11674
11675 .flex-item-50-percent {
11676 flex-grow: 0;
11677 flex-shrink: 0;
11678 flex-basis: 50%;
11679 }
11680
11681 .flex-item-60-percent {
11682 flex-grow: 0;
11683 flex-shrink: 0;
11684 flex-basis: 60%;
11685 }
11686
11687 .flex-item-70-percent {
11688 flex-grow: 0;
11689 flex-shrink: 0;
11690 flex-basis: 70%;
11691 }
11692
11693 .flex-item-80-percent {
11694 flex-grow: 0;
11695 flex-shrink: 0;
11696 flex-basis: 80%;
11697 }
11698
11699 .well {
11700 min-height: 20px;
11701 padding: 19px;
11702 margin-bottom: 20px;
11703 background-color: #f5f5f5;
11704 border: 1px solid #e3e3e3;
11705 border-radius: 4px;
11706 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
11707 }
11708
11709 .break-wrap {
11710 word-wrap: break-word;
11711 }
11712 </style>
11713
11714 <nav-bar>
11715 <top-nav-menu last="{{ true }}"></top-nav-menu>
11716 <nav-refresh callback="{{ refresh }}"></nav-refresh>
11717 </nav-bar>
11718
11719 <div class="content">
11720 <h1>Processes</h1>
11721
11722 <br>
11723
11724 <ul class="list-group">
11725 <template repeat="{{ process in list['members'] }}">
11726 <li class="list-group-item">
11727 <io-process-ref ref="{{ process }}"></io-process-ref>
11728 </li>
11729 </template>
11730 </ul>
11731 </div>
11732 <br>
11733 <hr>
11734 </template>
11735 </polymer-element>
11736
11737 <polymer-element name="io-process-ref" extends="service-ref">
11738 <template>
11739 <style>
11740 /* Global styles */
11741 * {
11742 margin: 0;
11743 padding: 0;
11744 font: 400 14px 'Montserrat', sans-serif;
11745 color: #333;
11746 box-sizing: border-box;
11747 }
11748
11749 .content {
11750 padding-left: 10%;
11751 font: 400 14px 'Montserrat', sans-serif;
11752 }
11753
11754 .content-centered {
11755 padding-left: 10%;
11756 padding-right: 10%;
11757 font: 400 14px 'Montserrat', sans-serif;
11758 }
11759
11760 .content-centered-big {
11761 padding-left: 5%;
11762 padding-right: 5%;
11763 font: 400 14px 'Montserrat', sans-serif;
11764 }
11765
11766 h1 {
11767 font: 400 18px 'Montserrat', sans-serif;
11768 }
11769
11770 .memberList {
11771 display: table;
11772 }
11773
11774 .memberItem {
11775 display: table-row;
11776 }
11777
11778 .memberName, .memberValue {
11779 display: table-cell;
11780 vertical-align: top;
11781 padding: 3px 0 3px 1em;
11782 font: 400 14px 'Montserrat', sans-serif;
11783 }
11784
11785 .monospace {
11786 font-family: consolas, courier, monospace;
11787 font-size: 1em;
11788 line-height: 1.2em;
11789 white-space: nowrap;
11790 }
11791
11792 a {
11793 color: #0489c3;
11794 text-decoration: none;
11795 }
11796
11797 a:hover {
11798 text-decoration: underline;
11799 }
11800
11801 em {
11802 color: inherit;
11803 font-style: italic;
11804 }
11805
11806 b {
11807 color: inherit;
11808 font-weight: bold;
11809 }
11810
11811 hr {
11812 margin-top: 20px;
11813 margin-bottom: 20px;
11814 border: 0;
11815 border-top: 1px solid #eee;
11816 height: 0;
11817 box-sizing: content-box;
11818 }
11819
11820 .list-group {
11821 padding-left: 0;
11822 margin-bottom: 20px;
11823 }
11824
11825 .list-group-item {
11826 position: relative;
11827 display: block;
11828 padding: 10px 15px;
11829 margin-bottom: -1px;
11830 background-color: #fff;
11831 }
11832
11833 .list-group-item:first-child {
11834 /* rounded top corners */
11835 border-top-right-radius:4px;
11836 border-top-left-radius:4px;
11837 }
11838
11839 .list-group-item:last-child {
11840 margin-bottom: 0;
11841 /* rounded bottom corners */
11842 border-bottom-right-radius: 4px;
11843 border-bottom-left-radius:4px;
11844 }
11845
11846 /* Flex row container */
11847 .flex-row {
11848 display: flex;
11849 flex-direction: row;
11850 }
11851
11852 /* Flex column container */
11853 .flex-column {
11854 display: flex;
11855 flex-direction: column;
11856 }
11857
11858 .flex-item-fit {
11859 flex-grow: 1;
11860 flex-shrink: 1;
11861 flex-basis: auto;
11862 }
11863
11864 .flex-item-no-shrink {
11865 flex-grow: 0;
11866 flex-shrink: 0;
11867 flex-basis: auto;
11868 }
11869
11870 .flex-item-fill {
11871 flex-grow: 0;
11872 flex-shrink: 1; /* shrink when pressured */
11873 flex-basis: 100%; /* try and take 100% */
11874 }
11875
11876 .flex-item-fixed-1-12 {
11877 flex-grow: 0;
11878 flex-shrink: 0;
11879 flex-basis: 8.3%;
11880 }
11881
11882 .flex-item-fixed-2-12 {
11883 flex-grow: 0;
11884 flex-shrink: 0;
11885 flex-basis: 16.6%;
11886 }
11887
11888 .flex-item-fixed-4-12 {
11889 flex-grow: 0;
11890 flex-shrink: 0;
11891 flex-basis: 33.3333%;
11892 }
11893
11894 .flex-item-fixed-6-12, .flex-item-50-percent {
11895 flex-grow: 0;
11896 flex-shrink: 0;
11897 flex-basis: 50%;
11898 }
11899
11900 .flex-item-fixed-8-12 {
11901 flex-grow: 0;
11902 flex-shrink: 0;
11903 flex-basis: 66.6666%;
11904 }
11905
11906 .flex-item-fixed-9-12 {
11907 flex-grow: 0;
11908 flex-shrink: 0;
11909 flex-basis: 75%;
11910 }
11911
11912
11913 .flex-item-fixed-12-12 {
11914 flex-grow: 0;
11915 flex-shrink: 0;
11916 flex-basis: 100%;
11917 }
11918
11919 .flex-item-10-percent {
11920 flex-grow: 0;
11921 flex-shrink: 0;
11922 flex-basis: 10%;
11923 }
11924
11925 .flex-item-15-percent {
11926 flex-grow: 0;
11927 flex-shrink: 0;
11928 flex-basis: 15%;
11929 }
11930
11931 .flex-item-20-percent {
11932 flex-grow: 0;
11933 flex-shrink: 0;
11934 flex-basis: 20%;
11935 }
11936
11937 .flex-item-30-percent {
11938 flex-grow: 0;
11939 flex-shrink: 0;
11940 flex-basis: 30%;
11941 }
11942
11943 .flex-item-40-percent {
11944 flex-grow: 0;
11945 flex-shrink: 0;
11946 flex-basis: 40%;
11947 }
11948
11949 .flex-item-50-percent {
11950 flex-grow: 0;
11951 flex-shrink: 0;
11952 flex-basis: 50%;
11953 }
11954
11955 .flex-item-60-percent {
11956 flex-grow: 0;
11957 flex-shrink: 0;
11958 flex-basis: 60%;
11959 }
11960
11961 .flex-item-70-percent {
11962 flex-grow: 0;
11963 flex-shrink: 0;
11964 flex-basis: 70%;
11965 }
11966
11967 .flex-item-80-percent {
11968 flex-grow: 0;
11969 flex-shrink: 0;
11970 flex-basis: 80%;
11971 }
11972
11973 .well {
11974 min-height: 20px;
11975 padding: 19px;
11976 margin-bottom: 20px;
11977 background-color: #f5f5f5;
11978 border: 1px solid #e3e3e3;
11979 border-radius: 4px;
11980 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
11981 }
11982
11983 .break-wrap {
11984 word-wrap: break-word;
11985 }
11986 </style>
11987 <template if="{{ small }}">
11988 <a on-click="{{ goto }}" href="{{ url }}">{{ name }}</a>
11989 </template>
11990 <template if="{{ !small }}">
11991 <a on-click="{{ goto }}" href="{{ url }}">({{ ref['pid'] }}) {{ name }} {{ ref['arguments'] }}</a>
11992 </template>
11993 </template>
11994 </polymer-element>
11995
11996 <polymer-element name="io-process-view" extends="observatory-element">
11997 <template>
11998 <style>
11999 /* Global styles */
12000 * {
12001 margin: 0;
12002 padding: 0;
12003 font: 400 14px 'Montserrat', sans-serif;
12004 color: #333;
12005 box-sizing: border-box;
12006 }
12007
12008 .content {
12009 padding-left: 10%;
12010 font: 400 14px 'Montserrat', sans-serif;
12011 }
12012
12013 .content-centered {
12014 padding-left: 10%;
12015 padding-right: 10%;
12016 font: 400 14px 'Montserrat', sans-serif;
12017 }
12018
12019 .content-centered-big {
12020 padding-left: 5%;
12021 padding-right: 5%;
12022 font: 400 14px 'Montserrat', sans-serif;
12023 }
12024
12025 h1 {
12026 font: 400 18px 'Montserrat', sans-serif;
12027 }
12028
12029 .memberList {
12030 display: table;
12031 }
12032
12033 .memberItem {
12034 display: table-row;
12035 }
12036
12037 .memberName, .memberValue {
12038 display: table-cell;
12039 vertical-align: top;
12040 padding: 3px 0 3px 1em;
12041 font: 400 14px 'Montserrat', sans-serif;
12042 }
12043
12044 .monospace {
12045 font-family: consolas, courier, monospace;
12046 font-size: 1em;
12047 line-height: 1.2em;
12048 white-space: nowrap;
12049 }
12050
12051 a {
12052 color: #0489c3;
12053 text-decoration: none;
12054 }
12055
12056 a:hover {
12057 text-decoration: underline;
12058 }
12059
12060 em {
12061 color: inherit;
12062 font-style: italic;
12063 }
12064
12065 b {
12066 color: inherit;
12067 font-weight: bold;
12068 }
12069
12070 hr {
12071 margin-top: 20px;
12072 margin-bottom: 20px;
12073 border: 0;
12074 border-top: 1px solid #eee;
12075 height: 0;
12076 box-sizing: content-box;
12077 }
12078
12079 .list-group {
12080 padding-left: 0;
12081 margin-bottom: 20px;
12082 }
12083
12084 .list-group-item {
12085 position: relative;
12086 display: block;
12087 padding: 10px 15px;
12088 margin-bottom: -1px;
12089 background-color: #fff;
12090 }
12091
12092 .list-group-item:first-child {
12093 /* rounded top corners */
12094 border-top-right-radius:4px;
12095 border-top-left-radius:4px;
12096 }
12097
12098 .list-group-item:last-child {
12099 margin-bottom: 0;
12100 /* rounded bottom corners */
12101 border-bottom-right-radius: 4px;
12102 border-bottom-left-radius:4px;
12103 }
12104
12105 /* Flex row container */
12106 .flex-row {
12107 display: flex;
12108 flex-direction: row;
12109 }
12110
12111 /* Flex column container */
12112 .flex-column {
12113 display: flex;
12114 flex-direction: column;
12115 }
12116
12117 .flex-item-fit {
12118 flex-grow: 1;
12119 flex-shrink: 1;
12120 flex-basis: auto;
12121 }
12122
12123 .flex-item-no-shrink {
12124 flex-grow: 0;
12125 flex-shrink: 0;
12126 flex-basis: auto;
12127 }
12128
12129 .flex-item-fill {
12130 flex-grow: 0;
12131 flex-shrink: 1; /* shrink when pressured */
12132 flex-basis: 100%; /* try and take 100% */
12133 }
12134
12135 .flex-item-fixed-1-12 {
12136 flex-grow: 0;
12137 flex-shrink: 0;
12138 flex-basis: 8.3%;
12139 }
12140
12141 .flex-item-fixed-2-12 {
12142 flex-grow: 0;
12143 flex-shrink: 0;
12144 flex-basis: 16.6%;
12145 }
12146
12147 .flex-item-fixed-4-12 {
12148 flex-grow: 0;
12149 flex-shrink: 0;
12150 flex-basis: 33.3333%;
12151 }
12152
12153 .flex-item-fixed-6-12, .flex-item-50-percent {
12154 flex-grow: 0;
12155 flex-shrink: 0;
12156 flex-basis: 50%;
12157 }
12158
12159 .flex-item-fixed-8-12 {
12160 flex-grow: 0;
12161 flex-shrink: 0;
12162 flex-basis: 66.6666%;
12163 }
12164
12165 .flex-item-fixed-9-12 {
12166 flex-grow: 0;
12167 flex-shrink: 0;
12168 flex-basis: 75%;
12169 }
12170
12171
12172 .flex-item-fixed-12-12 {
12173 flex-grow: 0;
12174 flex-shrink: 0;
12175 flex-basis: 100%;
12176 }
12177
12178 .flex-item-10-percent {
12179 flex-grow: 0;
12180 flex-shrink: 0;
12181 flex-basis: 10%;
12182 }
12183
12184 .flex-item-15-percent {
12185 flex-grow: 0;
12186 flex-shrink: 0;
12187 flex-basis: 15%;
12188 }
12189
12190 .flex-item-20-percent {
12191 flex-grow: 0;
12192 flex-shrink: 0;
12193 flex-basis: 20%;
12194 }
12195
12196 .flex-item-30-percent {
12197 flex-grow: 0;
12198 flex-shrink: 0;
12199 flex-basis: 30%;
12200 }
12201
12202 .flex-item-40-percent {
12203 flex-grow: 0;
12204 flex-shrink: 0;
12205 flex-basis: 40%;
12206 }
12207
12208 .flex-item-50-percent {
12209 flex-grow: 0;
12210 flex-shrink: 0;
12211 flex-basis: 50%;
12212 }
12213
12214 .flex-item-60-percent {
12215 flex-grow: 0;
12216 flex-shrink: 0;
12217 flex-basis: 60%;
12218 }
12219
12220 .flex-item-70-percent {
12221 flex-grow: 0;
12222 flex-shrink: 0;
12223 flex-basis: 70%;
12224 }
12225
12226 .flex-item-80-percent {
12227 flex-grow: 0;
12228 flex-shrink: 0;
12229 flex-basis: 80%;
12230 }
12231
12232 .well {
12233 min-height: 20px;
12234 padding: 19px;
12235 margin-bottom: 20px;
12236 background-color: #f5f5f5;
12237 border: 1px solid #e3e3e3;
12238 border-radius: 4px;
12239 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
12240 }
12241
12242 .break-wrap {
12243 word-wrap: break-word;
12244 }
12245 </style>
12246
12247 <nav-bar>
12248 <top-nav-menu last="{{ true }}"></top-nav-menu>
12249 <nav-refresh callback="{{ refresh }}"></nav-refresh>
12250 </nav-bar>
12251
12252 <div class="content">
12253 <h1>Process</h1>
12254
12255 <br>
12256
12257 <div class="memberList">
12258 <div class="memberItem">
12259 <div class="memberName">Path</div>
12260 <div class="memberValue">{{ process['name'] }}</div>
12261 </div>
12262 <div class="memberItem">
12263 <div class="memberName">Pid</div>
12264 <div class="memberValue">{{ process['pid'] }}</div>
12265 </div>
12266 <div class="memberItem">
12267 <div class="memberName">Arguments</div>
12268 <div class="memberValue">{{ process['arguments'] }}</div>
12269 </div>
12270 <div class="memberItem">
12271 <div class="memberName">Started</div>
12272 <div class="memberValue">{{ process['started'] }}</div>
12273 </div>
12274 <div class="memberItem">
12275 <div class="memberName">Working Directory</div>
12276 <div class="memberValue">{{ process['workingDirectory'] }}</div>
12277 </div>
12278 <template if="{{ process['stdin'] != null }}">
12279 <div class="memberItem">
12280 <div class="memberName">stdin</div>
12281 <div class="memberValue">
12282 <io-socket-ref ref="{{ process['stdin'] }}"></io-socket-ref>
12283 </div>
12284 </div>
12285 </template>
12286 <template if="{{ process['stdout'] != null }}">
12287 <div class="memberItem">
12288 <div class="memberName">stdout</div>
12289 <div class="memberValue">
12290 <io-socket-ref ref="{{ process['stdout'] }}"></io-socket-ref>
12291 </div>
12292 </div>
12293 </template>
12294 <template if="{{ process['stderr'] != null }}">
12295 <div class="memberItem">
12296 <div class="memberName">stderr</div>
12297 <div class="memberValue">
12298 <io-socket-ref ref="{{ process['stderr'] }}"></io-socket-ref>
12299 </div>
12300 </div>
12301 </template>
12302 </div>
12303
12304 <br>
12305
12306 <h2>Environment</h2>
12307 <div class="well">
12308 <div class="monospace break-wrap">
12309 <template repeat="{{ variable in process['environment'] }}">
12310 {{ variable }}
12311 <br>
12312 </template>
12313 </div>
12314 </div>
12315 </div>
12316 <br>
12317 <hr>
12318 </template>
12319 </polymer-element>
12320
12321
12322
12323
12324 <polymer-element name="isolate-ref" extends="service-ref">
12325 <template><style>
12326 /* Global styles */
12327 * {
12328 margin: 0;
12329 padding: 0;
12330 font: 400 14px 'Montserrat', sans-serif;
12331 color: #333;
12332 box-sizing: border-box;
12333 }
12334
12335 .content {
12336 padding-left: 10%;
12337 font: 400 14px 'Montserrat', sans-serif;
12338 }
12339
12340 .content-centered {
12341 padding-left: 10%;
12342 padding-right: 10%;
12343 font: 400 14px 'Montserrat', sans-serif;
12344 }
12345
12346 .content-centered-big {
12347 padding-left: 5%;
12348 padding-right: 5%;
12349 font: 400 14px 'Montserrat', sans-serif;
12350 }
12351
12352 h1 {
12353 font: 400 18px 'Montserrat', sans-serif;
12354 }
12355
12356 .memberList {
12357 display: table;
12358 }
12359
12360 .memberItem {
12361 display: table-row;
12362 }
12363
12364 .memberName, .memberValue {
12365 display: table-cell;
12366 vertical-align: top;
12367 padding: 3px 0 3px 1em;
12368 font: 400 14px 'Montserrat', sans-serif;
12369 }
12370
12371 .monospace {
12372 font-family: consolas, courier, monospace;
12373 font-size: 1em;
12374 line-height: 1.2em;
12375 white-space: nowrap;
12376 }
12377
12378 a {
12379 color: #0489c3;
12380 text-decoration: none;
12381 }
12382
12383 a:hover {
12384 text-decoration: underline;
12385 }
12386
12387 em {
12388 color: inherit;
12389 font-style: italic;
12390 }
12391
12392 b {
12393 color: inherit;
12394 font-weight: bold;
12395 }
12396
12397 hr {
12398 margin-top: 20px;
12399 margin-bottom: 20px;
12400 border: 0;
12401 border-top: 1px solid #eee;
12402 height: 0;
12403 box-sizing: content-box;
12404 }
12405
12406 .list-group {
12407 padding-left: 0;
12408 margin-bottom: 20px;
12409 }
12410
12411 .list-group-item {
12412 position: relative;
12413 display: block;
12414 padding: 10px 15px;
12415 margin-bottom: -1px;
12416 background-color: #fff;
12417 }
12418
12419 .list-group-item:first-child {
12420 /* rounded top corners */
12421 border-top-right-radius:4px;
12422 border-top-left-radius:4px;
12423 }
12424
12425 .list-group-item:last-child {
12426 margin-bottom: 0;
12427 /* rounded bottom corners */
12428 border-bottom-right-radius: 4px;
12429 border-bottom-left-radius:4px;
12430 }
12431
12432 /* Flex row container */
12433 .flex-row {
12434 display: flex;
12435 flex-direction: row;
12436 }
12437
12438 /* Flex column container */
12439 .flex-column {
12440 display: flex;
12441 flex-direction: column;
12442 }
12443
12444 .flex-item-fit {
12445 flex-grow: 1;
12446 flex-shrink: 1;
12447 flex-basis: auto;
12448 }
12449
12450 .flex-item-no-shrink {
12451 flex-grow: 0;
12452 flex-shrink: 0;
12453 flex-basis: auto;
12454 }
12455
12456 .flex-item-fill {
12457 flex-grow: 0;
12458 flex-shrink: 1; /* shrink when pressured */
12459 flex-basis: 100%; /* try and take 100% */
12460 }
12461
12462 .flex-item-fixed-1-12 {
12463 flex-grow: 0;
12464 flex-shrink: 0;
12465 flex-basis: 8.3%;
12466 }
12467
12468 .flex-item-fixed-2-12 {
12469 flex-grow: 0;
12470 flex-shrink: 0;
12471 flex-basis: 16.6%;
12472 }
12473
12474 .flex-item-fixed-4-12 {
12475 flex-grow: 0;
12476 flex-shrink: 0;
12477 flex-basis: 33.3333%;
12478 }
12479
12480 .flex-item-fixed-6-12, .flex-item-50-percent {
12481 flex-grow: 0;
12482 flex-shrink: 0;
12483 flex-basis: 50%;
12484 }
12485
12486 .flex-item-fixed-8-12 {
12487 flex-grow: 0;
12488 flex-shrink: 0;
12489 flex-basis: 66.6666%;
12490 }
12491
12492 .flex-item-fixed-9-12 {
12493 flex-grow: 0;
12494 flex-shrink: 0;
12495 flex-basis: 75%;
12496 }
12497
12498
12499 .flex-item-fixed-12-12 {
12500 flex-grow: 0;
12501 flex-shrink: 0;
12502 flex-basis: 100%;
12503 }
12504
12505 .flex-item-10-percent {
12506 flex-grow: 0;
12507 flex-shrink: 0;
12508 flex-basis: 10%;
12509 }
12510
12511 .flex-item-15-percent {
12512 flex-grow: 0;
12513 flex-shrink: 0;
12514 flex-basis: 15%;
12515 }
12516
12517 .flex-item-20-percent {
12518 flex-grow: 0;
12519 flex-shrink: 0;
12520 flex-basis: 20%;
12521 }
12522
12523 .flex-item-30-percent {
12524 flex-grow: 0;
12525 flex-shrink: 0;
12526 flex-basis: 30%;
12527 }
12528
12529 .flex-item-40-percent {
12530 flex-grow: 0;
12531 flex-shrink: 0;
12532 flex-basis: 40%;
12533 }
12534
12535 .flex-item-50-percent {
12536 flex-grow: 0;
12537 flex-shrink: 0;
12538 flex-basis: 50%;
12539 }
12540
12541 .flex-item-60-percent {
12542 flex-grow: 0;
12543 flex-shrink: 0;
12544 flex-basis: 60%;
12545 }
12546
12547 .flex-item-70-percent {
12548 flex-grow: 0;
12549 flex-shrink: 0;
12550 flex-basis: 70%;
12551 }
12552
12553 .flex-item-80-percent {
12554 flex-grow: 0;
12555 flex-shrink: 0;
12556 flex-basis: 80%;
12557 }
12558
12559 .well {
12560 min-height: 20px;
12561 padding: 19px;
12562 margin-bottom: 20px;
12563 background-color: #f5f5f5;
12564 border: 1px solid #e3e3e3;
12565 border-radius: 4px;
12566 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
12567 }
12568
12569 .break-wrap {
12570 word-wrap: break-word;
12571 }
12572 </style>
12573 <a on-click="{{ goto }}" href="{{ url }}">{{ ref.name }}</a>
12574 </template>
12575 </polymer-element>
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585 <polymer-element name="isolate-summary" extends="observatory-element">
12586 <template>
12587 <style>
12588 /* Global styles */
12589 * {
12590 margin: 0;
12591 padding: 0;
12592 font: 400 14px 'Montserrat', sans-serif;
12593 color: #333;
12594 box-sizing: border-box;
12595 }
12596
12597 .content {
12598 padding-left: 10%;
12599 font: 400 14px 'Montserrat', sans-serif;
12600 }
12601
12602 .content-centered {
12603 padding-left: 10%;
12604 padding-right: 10%;
12605 font: 400 14px 'Montserrat', sans-serif;
12606 }
12607
12608 .content-centered-big {
12609 padding-left: 5%;
12610 padding-right: 5%;
12611 font: 400 14px 'Montserrat', sans-serif;
12612 }
12613
12614 h1 {
12615 font: 400 18px 'Montserrat', sans-serif;
12616 }
12617
12618 .memberList {
12619 display: table;
12620 }
12621
12622 .memberItem {
12623 display: table-row;
12624 }
12625
12626 .memberName, .memberValue {
12627 display: table-cell;
12628 vertical-align: top;
12629 padding: 3px 0 3px 1em;
12630 font: 400 14px 'Montserrat', sans-serif;
12631 }
12632
12633 .monospace {
12634 font-family: consolas, courier, monospace;
12635 font-size: 1em;
12636 line-height: 1.2em;
12637 white-space: nowrap;
12638 }
12639
12640 a {
12641 color: #0489c3;
12642 text-decoration: none;
12643 }
12644
12645 a:hover {
12646 text-decoration: underline;
12647 }
12648
12649 em {
12650 color: inherit;
12651 font-style: italic;
12652 }
12653
12654 b {
12655 color: inherit;
12656 font-weight: bold;
12657 }
12658
12659 hr {
12660 margin-top: 20px;
12661 margin-bottom: 20px;
12662 border: 0;
12663 border-top: 1px solid #eee;
12664 height: 0;
12665 box-sizing: content-box;
12666 }
12667
12668 .list-group {
12669 padding-left: 0;
12670 margin-bottom: 20px;
12671 }
12672
12673 .list-group-item {
12674 position: relative;
12675 display: block;
12676 padding: 10px 15px;
12677 margin-bottom: -1px;
12678 background-color: #fff;
12679 }
12680
12681 .list-group-item:first-child {
12682 /* rounded top corners */
12683 border-top-right-radius:4px;
12684 border-top-left-radius:4px;
12685 }
12686
12687 .list-group-item:last-child {
12688 margin-bottom: 0;
12689 /* rounded bottom corners */
12690 border-bottom-right-radius: 4px;
12691 border-bottom-left-radius:4px;
12692 }
12693
12694 /* Flex row container */
12695 .flex-row {
12696 display: flex;
12697 flex-direction: row;
12698 }
12699
12700 /* Flex column container */
12701 .flex-column {
12702 display: flex;
12703 flex-direction: column;
12704 }
12705
12706 .flex-item-fit {
12707 flex-grow: 1;
12708 flex-shrink: 1;
12709 flex-basis: auto;
12710 }
12711
12712 .flex-item-no-shrink {
12713 flex-grow: 0;
12714 flex-shrink: 0;
12715 flex-basis: auto;
12716 }
12717
12718 .flex-item-fill {
12719 flex-grow: 0;
12720 flex-shrink: 1; /* shrink when pressured */
12721 flex-basis: 100%; /* try and take 100% */
12722 }
12723
12724 .flex-item-fixed-1-12 {
12725 flex-grow: 0;
12726 flex-shrink: 0;
12727 flex-basis: 8.3%;
12728 }
12729
12730 .flex-item-fixed-2-12 {
12731 flex-grow: 0;
12732 flex-shrink: 0;
12733 flex-basis: 16.6%;
12734 }
12735
12736 .flex-item-fixed-4-12 {
12737 flex-grow: 0;
12738 flex-shrink: 0;
12739 flex-basis: 33.3333%;
12740 }
12741
12742 .flex-item-fixed-6-12, .flex-item-50-percent {
12743 flex-grow: 0;
12744 flex-shrink: 0;
12745 flex-basis: 50%;
12746 }
12747
12748 .flex-item-fixed-8-12 {
12749 flex-grow: 0;
12750 flex-shrink: 0;
12751 flex-basis: 66.6666%;
12752 }
12753
12754 .flex-item-fixed-9-12 {
12755 flex-grow: 0;
12756 flex-shrink: 0;
12757 flex-basis: 75%;
12758 }
12759
12760
12761 .flex-item-fixed-12-12 {
12762 flex-grow: 0;
12763 flex-shrink: 0;
12764 flex-basis: 100%;
12765 }
12766
12767 .flex-item-10-percent {
12768 flex-grow: 0;
12769 flex-shrink: 0;
12770 flex-basis: 10%;
12771 }
12772
12773 .flex-item-15-percent {
12774 flex-grow: 0;
12775 flex-shrink: 0;
12776 flex-basis: 15%;
12777 }
12778
12779 .flex-item-20-percent {
12780 flex-grow: 0;
12781 flex-shrink: 0;
12782 flex-basis: 20%;
12783 }
12784
12785 .flex-item-30-percent {
12786 flex-grow: 0;
12787 flex-shrink: 0;
12788 flex-basis: 30%;
12789 }
12790
12791 .flex-item-40-percent {
12792 flex-grow: 0;
12793 flex-shrink: 0;
12794 flex-basis: 40%;
12795 }
12796
12797 .flex-item-50-percent {
12798 flex-grow: 0;
12799 flex-shrink: 0;
12800 flex-basis: 50%;
12801 }
12802
12803 .flex-item-60-percent {
12804 flex-grow: 0;
12805 flex-shrink: 0;
12806 flex-basis: 60%;
12807 }
12808
12809 .flex-item-70-percent {
12810 flex-grow: 0;
12811 flex-shrink: 0;
12812 flex-basis: 70%;
12813 }
12814
12815 .flex-item-80-percent {
12816 flex-grow: 0;
12817 flex-shrink: 0;
12818 flex-basis: 80%;
12819 }
12820
12821 .well {
12822 min-height: 20px;
12823 padding: 19px;
12824 margin-bottom: 20px;
12825 background-color: #f5f5f5;
12826 border: 1px solid #e3e3e3;
12827 border-radius: 4px;
12828 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
12829 }
12830
12831 .break-wrap {
12832 word-wrap: break-word;
12833 }
12834 </style>
12835 <div class="flex-row">
12836 <div class="flex-item-10-percent">
12837 <img src="packages/observatory/src/elements/img/isolate_icon.png">
12838 </div>
12839 <div class="flex-item-10-percent">
12840 <isolate-ref ref="{{ isolate }}"></isolate-ref>
12841 </div>
12842 <div class="flex-item-30-percent">
12843 <isolate-run-state isolate="{{ isolate }}"></isolate-run-state>
12844 </div>
12845 <div class="flex-item-40-percent">
12846 <isolate-location isolate="{{ isolate }}"></isolate-location>
12847 </div>
12848 <div class="flex-item-10-percent">
12849 </div>
12850 </div>
12851
12852 <div class="flex-row">
12853 <div class="flex-item-20-percent"></div>
12854 <div class="flex-item-60-percent">
12855 <hr>
12856 </div>
12857 <div class="flex-item-20-percent"></div>
12858 </div>
12859
12860 <isolate-shared-summary isolate="{{ isolate }}"></isolate-shared-summary>
12861
12862 </template>
12863 </polymer-element>
12864
12865 <polymer-element name="isolate-run-state" extends="observatory-element">
12866 <template>
12867 <template if="{{ isolate.pauseEvent != null }}">
12868 <strong>paused</strong>
12869 <action-link callback="{{ resume }}" label="resume"></action-link>
12870
12871 <action-link callback="{{ stepInto }}" label="step"></action-link>
12872 <action-link callback="{{ stepOver }}" label="step&nbsp;over"></action-lin k>
12873 <action-link callback="{{ stepOut }}" label="step&nbsp;out"></action-link>
12874 </template>
12875
12876 <template if="{{ isolate.running }}">
12877 <strong>running</strong>
12878 <action-link callback="{{ pause }}" label="pause"></action-link>
12879 </template>
12880
12881 <template if="{{ isolate.idle }}">
12882 <strong>idle</strong>
12883 <action-link callback="{{ pause }}" label="pause"></action-link>
12884 </template>
12885
12886 <template if="{{ isolate.loading }}">
12887 <strong>loading...</strong>
12888 </template>
12889 </template>
12890 </polymer-element>
12891
12892 <polymer-element name="isolate-location" extends="observatory-element">
12893 <template>
12894 <template if="{{ isolate.pauseEvent != null }}">
12895 <template if="{{ isolate.pauseEvent.eventType == 'IsolateCreated' }}">
12896 at isolate start
12897 </template>
12898
12899 <template if="{{ isolate.pauseEvent.eventType == 'IsolateShutdown' }}">
12900 at isolate exit
12901 </template>
12902
12903 <template if="{{ isolate.pauseEvent.eventType == 'IsolateInterrupted' ||
12904 isolate.pauseEvent.eventType == 'BreakpointReached' ||
12905 isolate.pauseEvent.eventType == 'ExceptionThrown' }}">
12906 <template if="{{ isolate.pauseEvent.breakpoint != null }}">
12907 by breakpoint
12908 </template>
12909 <template if="{{ isolate.pauseEvent.eventType == 'ExceptionThrown' }}">
12910 by exception
12911 </template>
12912 at
12913 <function-ref ref="{{ isolate.topFrame['function'] }}">
12914 </function-ref>
12915 (<script-ref ref="{{ isolate.topFrame['script'] }}" pos="{{ isolate.topF rame['tokenPos'] }}"></script-ref>)
12916 </template>
12917 </template>
12918
12919 <template if="{{ isolate.running }}">
12920 at
12921 <function-ref ref="{{ isolate.topFrame['function'] }}">
12922 </function-ref>
12923 (<script-ref ref="{{ isolate.topFrame['script'] }}" pos="{{ isolate.topFra me['tokenPos'] }}"></script-ref>)
12924 </template>
12925
12926 </template>
12927 </polymer-element>
12928
12929 <polymer-element name="isolate-shared-summary" extends="observatory-element">
12930 <template>
12931 <style>
12932 .errorBox {
12933 background-color: #f5f5f5;
12934 border: 1px solid #ccc;
12935 padding: 10px;
12936 font-family: consolas, courier, monospace;
12937 font-size: 1em;
12938 line-height: 1.2em;
12939 white-space: pre;
12940 }
12941 </style>
12942 <style>
12943 /* Global styles */
12944 * {
12945 margin: 0;
12946 padding: 0;
12947 font: 400 14px 'Montserrat', sans-serif;
12948 color: #333;
12949 box-sizing: border-box;
12950 }
12951
12952 .content {
12953 padding-left: 10%;
12954 font: 400 14px 'Montserrat', sans-serif;
12955 }
12956
12957 .content-centered {
12958 padding-left: 10%;
12959 padding-right: 10%;
12960 font: 400 14px 'Montserrat', sans-serif;
12961 }
12962
12963 .content-centered-big {
12964 padding-left: 5%;
12965 padding-right: 5%;
12966 font: 400 14px 'Montserrat', sans-serif;
12967 }
12968
12969 h1 {
12970 font: 400 18px 'Montserrat', sans-serif;
12971 }
12972
12973 .memberList {
12974 display: table;
12975 }
12976
12977 .memberItem {
12978 display: table-row;
12979 }
12980
12981 .memberName, .memberValue {
12982 display: table-cell;
12983 vertical-align: top;
12984 padding: 3px 0 3px 1em;
12985 font: 400 14px 'Montserrat', sans-serif;
12986 }
12987
12988 .monospace {
12989 font-family: consolas, courier, monospace;
12990 font-size: 1em;
12991 line-height: 1.2em;
12992 white-space: nowrap;
12993 }
12994
12995 a {
12996 color: #0489c3;
12997 text-decoration: none;
12998 }
12999
13000 a:hover {
13001 text-decoration: underline;
13002 }
13003
13004 em {
13005 color: inherit;
13006 font-style: italic;
13007 }
13008
13009 b {
13010 color: inherit;
13011 font-weight: bold;
13012 }
13013
13014 hr {
13015 margin-top: 20px;
13016 margin-bottom: 20px;
13017 border: 0;
13018 border-top: 1px solid #eee;
13019 height: 0;
13020 box-sizing: content-box;
13021 }
13022
13023 .list-group {
13024 padding-left: 0;
13025 margin-bottom: 20px;
13026 }
13027
13028 .list-group-item {
13029 position: relative;
13030 display: block;
13031 padding: 10px 15px;
13032 margin-bottom: -1px;
13033 background-color: #fff;
13034 }
13035
13036 .list-group-item:first-child {
13037 /* rounded top corners */
13038 border-top-right-radius:4px;
13039 border-top-left-radius:4px;
13040 }
13041
13042 .list-group-item:last-child {
13043 margin-bottom: 0;
13044 /* rounded bottom corners */
13045 border-bottom-right-radius: 4px;
13046 border-bottom-left-radius:4px;
13047 }
13048
13049 /* Flex row container */
13050 .flex-row {
13051 display: flex;
13052 flex-direction: row;
13053 }
13054
13055 /* Flex column container */
13056 .flex-column {
13057 display: flex;
13058 flex-direction: column;
13059 }
13060
13061 .flex-item-fit {
13062 flex-grow: 1;
13063 flex-shrink: 1;
13064 flex-basis: auto;
13065 }
13066
13067 .flex-item-no-shrink {
13068 flex-grow: 0;
13069 flex-shrink: 0;
13070 flex-basis: auto;
13071 }
13072
13073 .flex-item-fill {
13074 flex-grow: 0;
13075 flex-shrink: 1; /* shrink when pressured */
13076 flex-basis: 100%; /* try and take 100% */
13077 }
13078
13079 .flex-item-fixed-1-12 {
13080 flex-grow: 0;
13081 flex-shrink: 0;
13082 flex-basis: 8.3%;
13083 }
13084
13085 .flex-item-fixed-2-12 {
13086 flex-grow: 0;
13087 flex-shrink: 0;
13088 flex-basis: 16.6%;
13089 }
13090
13091 .flex-item-fixed-4-12 {
13092 flex-grow: 0;
13093 flex-shrink: 0;
13094 flex-basis: 33.3333%;
13095 }
13096
13097 .flex-item-fixed-6-12, .flex-item-50-percent {
13098 flex-grow: 0;
13099 flex-shrink: 0;
13100 flex-basis: 50%;
13101 }
13102
13103 .flex-item-fixed-8-12 {
13104 flex-grow: 0;
13105 flex-shrink: 0;
13106 flex-basis: 66.6666%;
13107 }
13108
13109 .flex-item-fixed-9-12 {
13110 flex-grow: 0;
13111 flex-shrink: 0;
13112 flex-basis: 75%;
13113 }
13114
13115
13116 .flex-item-fixed-12-12 {
13117 flex-grow: 0;
13118 flex-shrink: 0;
13119 flex-basis: 100%;
13120 }
13121
13122 .flex-item-10-percent {
13123 flex-grow: 0;
13124 flex-shrink: 0;
13125 flex-basis: 10%;
13126 }
13127
13128 .flex-item-15-percent {
13129 flex-grow: 0;
13130 flex-shrink: 0;
13131 flex-basis: 15%;
13132 }
13133
13134 .flex-item-20-percent {
13135 flex-grow: 0;
13136 flex-shrink: 0;
13137 flex-basis: 20%;
13138 }
13139
13140 .flex-item-30-percent {
13141 flex-grow: 0;
13142 flex-shrink: 0;
13143 flex-basis: 30%;
13144 }
13145
13146 .flex-item-40-percent {
13147 flex-grow: 0;
13148 flex-shrink: 0;
13149 flex-basis: 40%;
13150 }
13151
13152 .flex-item-50-percent {
13153 flex-grow: 0;
13154 flex-shrink: 0;
13155 flex-basis: 50%;
13156 }
13157
13158 .flex-item-60-percent {
13159 flex-grow: 0;
13160 flex-shrink: 0;
13161 flex-basis: 60%;
13162 }
13163
13164 .flex-item-70-percent {
13165 flex-grow: 0;
13166 flex-shrink: 0;
13167 flex-basis: 70%;
13168 }
13169
13170 .flex-item-80-percent {
13171 flex-grow: 0;
13172 flex-shrink: 0;
13173 flex-basis: 80%;
13174 }
13175
13176 .well {
13177 min-height: 20px;
13178 padding: 19px;
13179 margin-bottom: 20px;
13180 background-color: #f5f5f5;
13181 border: 1px solid #e3e3e3;
13182 border-radius: 4px;
13183 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
13184 }
13185
13186 .break-wrap {
13187 word-wrap: break-word;
13188 }
13189 </style>
13190 <template if="{{ isolate.error != null }}">
13191 <div class="content-centered">
13192 <pre class="errorBox">{{ isolate.error.message }}</pre>
13193 <br>
13194 </div>
13195 </template>
13196 <div class="flex-row">
13197 <div class="flex-item-10-percent">
13198 </div>
13199 <div class="flex-item-40-percent">
13200 <isolate-counter-chart counters="{{ isolate.counters }}"></isolate-count er-chart>
13201 </div>
13202 <div class="flex-item-40-percent">
13203 <div class="memberList">
13204 <div class="memberItem">
13205 <div class="memberName">new heap</div>
13206 <div class="memberValue">
13207 {{ isolate.newSpace.used | formatSize }}
13208 of
13209 {{ isolate.newSpace.capacity | formatSize }}
13210 </div>
13211 </div>
13212 <div class="memberItem">
13213 <div class="memberName">old heap</div>
13214 <div class="memberValue">
13215 {{ isolate.oldSpace.used | formatSize }}
13216 of
13217 {{ isolate.oldSpace.capacity | formatSize }}
13218 </div>
13219 </div>
13220 </div>
13221 <br>
13222 <div class="memberItem">
13223 <div class="memberValue">
13224 See <a on-click="{{ goto }}" href="{{ gotoLink('/class-tree' + isola te.link) }}">class hierarchy</a>
13225 </div>
13226 </div>
13227 <div class="memberItem">
13228 <div class="memberValue">
13229 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLink( 'stacktrace')) }}">stack trace</a>
13230 </div>
13231 </div>
13232 <div class="memberItem">
13233 <div class="memberValue">
13234 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLink( 'profile')) }}">cpu profile</a>
13235 </div>
13236 </div>
13237 <div class="memberItem">
13238 <div class="memberValue">
13239 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLink( 'allocationprofile')) }}">allocation profile</a>
13240 </div>
13241 </div>
13242 <div class="memberItem">
13243 <div class="memberValue">
13244 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLink( 'heapmap')) }}">heap map</a>
13245 </div>
13246 </div>
13247 <!-- Temporarily disabled until UI for dart:io is acceptable.
13248 <template if="{{ isolate.ioEnabled }}">
13249 <div class="memberItem">
13250 <div class="memberValue">
13251 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLin k('io')) }}">dart:io</a>
13252 </div>
13253 </div>
13254 </template>
13255 -->
13256 </div>
13257 <div class="flex-item-10-percent">
13258 </div>
13259 </div>
13260 </template>
13261 </polymer-element>
13262
13263 <polymer-element name="isolate-counter-chart" extends="observatory-element">
13264 <template>
13265 <div id="counterPieChart" style="height: 200px"></div>
13266 </template>
13267 </polymer-element>
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282 <polymer-element name="isolate-view" extends="observatory-element">
13283 <template>
13284 <style>
13285 /* Global styles */
13286 * {
13287 margin: 0;
13288 padding: 0;
13289 font: 400 14px 'Montserrat', sans-serif;
13290 color: #333;
13291 box-sizing: border-box;
13292 }
13293
13294 .content {
13295 padding-left: 10%;
13296 font: 400 14px 'Montserrat', sans-serif;
13297 }
13298
13299 .content-centered {
13300 padding-left: 10%;
13301 padding-right: 10%;
13302 font: 400 14px 'Montserrat', sans-serif;
13303 }
13304
13305 .content-centered-big {
13306 padding-left: 5%;
13307 padding-right: 5%;
13308 font: 400 14px 'Montserrat', sans-serif;
13309 }
13310
13311 h1 {
13312 font: 400 18px 'Montserrat', sans-serif;
13313 }
13314
13315 .memberList {
13316 display: table;
13317 }
13318
13319 .memberItem {
13320 display: table-row;
13321 }
13322
13323 .memberName, .memberValue {
13324 display: table-cell;
13325 vertical-align: top;
13326 padding: 3px 0 3px 1em;
13327 font: 400 14px 'Montserrat', sans-serif;
13328 }
13329
13330 .monospace {
13331 font-family: consolas, courier, monospace;
13332 font-size: 1em;
13333 line-height: 1.2em;
13334 white-space: nowrap;
13335 }
13336
13337 a {
13338 color: #0489c3;
13339 text-decoration: none;
13340 }
13341
13342 a:hover {
13343 text-decoration: underline;
13344 }
13345
13346 em {
13347 color: inherit;
13348 font-style: italic;
13349 }
13350
13351 b {
13352 color: inherit;
13353 font-weight: bold;
13354 }
13355
13356 hr {
13357 margin-top: 20px;
13358 margin-bottom: 20px;
13359 border: 0;
13360 border-top: 1px solid #eee;
13361 height: 0;
13362 box-sizing: content-box;
13363 }
13364
13365 .list-group {
13366 padding-left: 0;
13367 margin-bottom: 20px;
13368 }
13369
13370 .list-group-item {
13371 position: relative;
13372 display: block;
13373 padding: 10px 15px;
13374 margin-bottom: -1px;
13375 background-color: #fff;
13376 }
13377
13378 .list-group-item:first-child {
13379 /* rounded top corners */
13380 border-top-right-radius:4px;
13381 border-top-left-radius:4px;
13382 }
13383
13384 .list-group-item:last-child {
13385 margin-bottom: 0;
13386 /* rounded bottom corners */
13387 border-bottom-right-radius: 4px;
13388 border-bottom-left-radius:4px;
13389 }
13390
13391 /* Flex row container */
13392 .flex-row {
13393 display: flex;
13394 flex-direction: row;
13395 }
13396
13397 /* Flex column container */
13398 .flex-column {
13399 display: flex;
13400 flex-direction: column;
13401 }
13402
13403 .flex-item-fit {
13404 flex-grow: 1;
13405 flex-shrink: 1;
13406 flex-basis: auto;
13407 }
13408
13409 .flex-item-no-shrink {
13410 flex-grow: 0;
13411 flex-shrink: 0;
13412 flex-basis: auto;
13413 }
13414
13415 .flex-item-fill {
13416 flex-grow: 0;
13417 flex-shrink: 1; /* shrink when pressured */
13418 flex-basis: 100%; /* try and take 100% */
13419 }
13420
13421 .flex-item-fixed-1-12 {
13422 flex-grow: 0;
13423 flex-shrink: 0;
13424 flex-basis: 8.3%;
13425 }
13426
13427 .flex-item-fixed-2-12 {
13428 flex-grow: 0;
13429 flex-shrink: 0;
13430 flex-basis: 16.6%;
13431 }
13432
13433 .flex-item-fixed-4-12 {
13434 flex-grow: 0;
13435 flex-shrink: 0;
13436 flex-basis: 33.3333%;
13437 }
13438
13439 .flex-item-fixed-6-12, .flex-item-50-percent {
13440 flex-grow: 0;
13441 flex-shrink: 0;
13442 flex-basis: 50%;
13443 }
13444
13445 .flex-item-fixed-8-12 {
13446 flex-grow: 0;
13447 flex-shrink: 0;
13448 flex-basis: 66.6666%;
13449 }
13450
13451 .flex-item-fixed-9-12 {
13452 flex-grow: 0;
13453 flex-shrink: 0;
13454 flex-basis: 75%;
13455 }
13456
13457
13458 .flex-item-fixed-12-12 {
13459 flex-grow: 0;
13460 flex-shrink: 0;
13461 flex-basis: 100%;
13462 }
13463
13464 .flex-item-10-percent {
13465 flex-grow: 0;
13466 flex-shrink: 0;
13467 flex-basis: 10%;
13468 }
13469
13470 .flex-item-15-percent {
13471 flex-grow: 0;
13472 flex-shrink: 0;
13473 flex-basis: 15%;
13474 }
13475
13476 .flex-item-20-percent {
13477 flex-grow: 0;
13478 flex-shrink: 0;
13479 flex-basis: 20%;
13480 }
13481
13482 .flex-item-30-percent {
13483 flex-grow: 0;
13484 flex-shrink: 0;
13485 flex-basis: 30%;
13486 }
13487
13488 .flex-item-40-percent {
13489 flex-grow: 0;
13490 flex-shrink: 0;
13491 flex-basis: 40%;
13492 }
13493
13494 .flex-item-50-percent {
13495 flex-grow: 0;
13496 flex-shrink: 0;
13497 flex-basis: 50%;
13498 }
13499
13500 .flex-item-60-percent {
13501 flex-grow: 0;
13502 flex-shrink: 0;
13503 flex-basis: 60%;
13504 }
13505
13506 .flex-item-70-percent {
13507 flex-grow: 0;
13508 flex-shrink: 0;
13509 flex-basis: 70%;
13510 }
13511
13512 .flex-item-80-percent {
13513 flex-grow: 0;
13514 flex-shrink: 0;
13515 flex-basis: 80%;
13516 }
13517
13518 .well {
13519 min-height: 20px;
13520 padding: 19px;
13521 margin-bottom: 20px;
13522 background-color: #f5f5f5;
13523 border: 1px solid #e3e3e3;
13524 border-radius: 4px;
13525 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
13526 }
13527
13528 .break-wrap {
13529 word-wrap: break-word;
13530 }
13531 </style>
13532 <style>
13533 .sourceInset {
13534 padding-left: 15%;
13535 padding-right: 15%;
13536 }
13537 .miniProfileChart {
13538 width: 80%;
13539 }
13540 </style>
13541
13542 <nav-bar>
13543 <top-nav-menu></top-nav-menu>
13544 <isolate-nav-menu isolate="{{ isolate }}" last="{{ true }}">
13545 </isolate-nav-menu>
13546 <nav-refresh callback="{{ refreshCoverage }}" label="Refresh Coverage"></n av-refresh>
13547 <nav-refresh callback="{{ refresh }}"></nav-refresh>
13548 <nav-control></nav-control>
13549 </nav-bar>
13550
13551 <div class="content">
13552 <h1>isolate '{{ isolate.name }}'</h1>
13553 </div>
13554
13555 <br>
13556 <div class="flex-row">
13557 <div class="flex-item-10-percent">
13558 </div>
13559 <div class="flex-item-30-percent">
13560 <isolate-run-state isolate="{{ isolate }}"></isolate-run-state>
13561 </div>
13562 <div class="flex-item-50-percent">
13563 <isolate-location isolate="{{ isolate }}"></isolate-location>
13564 </div>
13565 <div class="flex-item-10-percent">
13566 </div>
13567 </div>
13568 <br>
13569
13570 <template if="{{ isolate.topFrame != null }}">
13571 <br>
13572 <script-inset script="{{ isolate.topFrame['script'] }}" currentpos="{{ iso late.topFrame['tokenPos'] }}" height="200px">
13573 </script-inset>
13574 </template>
13575
13576 <div class="flex-row">
13577 <div class="flex-item-20-percent"></div>
13578 <div class="flex-item-60-percent"><hr></div>
13579 <div class="flex-item-20-percent"></div>
13580 </div>
13581
13582 <br>
13583
13584 <isolate-shared-summary isolate="{{ isolate }}"></isolate-shared-summary>
13585
13586 <div class="flex-row">
13587 <div class="flex-item-20-percent"></div>
13588 <div class="flex-item-60-percent"><hr></div>
13589 <div class="flex-item-20-percent"></div>
13590 </div>
13591
13592 <div class="content-centered">
13593 <div class="flex-row">
13594 <div class="flex-item-50-percent">
13595 <div class="memberList">
13596 <div class="memberItem">
13597 <div class="memberName">root library</div>
13598 <div class="memberValue">
13599 <library-ref ref="{{ isolate.rootLib }}"></library-ref>
13600 </div>
13601 </div>
13602 <div class="memberItem">
13603 <template if="{{ isolate.entry != null }}">
13604 <div class="memberName">entry</div>
13605 <div class="memberValue">
13606 <function-ref ref="{{ isolate.entry }}"></function-ref>
13607 </div>
13608 </template>
13609 </div>
13610 <div class="memberItem">
13611 <div class="memberName">isolate id</div>
13612 <div class="memberValue">{{ isolate.mainPort }}</div>
13613 </div>
13614 </div>
13615 </div>
13616 <div class="flex-item-50-percent">
13617 <div class="memberItem">
13618 <div class="memberValue">
13619 See <a on-click="{{ goto }}" href="{{ gotoLink(isolate.relativeLin k('debug/breakpoints')) }}">breakpoints</a>
13620 </div>
13621 </div>
13622 </div>
13623 </div>
13624 </div>
13625
13626 <hr>
13627
13628 <div class="content">
13629 libraries ({{ isolate.libraries.length }})
13630 <curly-block expand="{{ isolate.libraries.length <= 8 }}">
13631 <div class="memberList">
13632 <template repeat="{{ lib in isolate.libraries }}">
13633 <div class="memberItem">
13634 <div class="memberName">
13635 <library-ref ref="{{ lib }}"></library-ref>
13636 </div>
13637 </div>
13638 </template>
13639 </div>
13640 </curly-block>
13641 </div>
13642
13643 <hr>
13644
13645 <div class="content">
13646 <div id="tagProfileChart" class="miniProfileChart" style="height: 600px">< /div>
13647 </div>
13648
13649 <hr>
13650
13651 <div class="content">
13652 <eval-box callback="{{ eval }}"></eval-box>
13653 </div>
13654 <br><br><br><br>
13655 <br><br><br><br>
13656 </template>
13657 </polymer-element>
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671 <polymer-element name="instance-view" extends="observatory-element">
13672 <template>
13673 <style>
13674 /* Global styles */
13675 * {
13676 margin: 0;
13677 padding: 0;
13678 font: 400 14px 'Montserrat', sans-serif;
13679 color: #333;
13680 box-sizing: border-box;
13681 }
13682
13683 .content {
13684 padding-left: 10%;
13685 font: 400 14px 'Montserrat', sans-serif;
13686 }
13687
13688 .content-centered {
13689 padding-left: 10%;
13690 padding-right: 10%;
13691 font: 400 14px 'Montserrat', sans-serif;
13692 }
13693
13694 .content-centered-big {
13695 padding-left: 5%;
13696 padding-right: 5%;
13697 font: 400 14px 'Montserrat', sans-serif;
13698 }
13699
13700 h1 {
13701 font: 400 18px 'Montserrat', sans-serif;
13702 }
13703
13704 .memberList {
13705 display: table;
13706 }
13707
13708 .memberItem {
13709 display: table-row;
13710 }
13711
13712 .memberName, .memberValue {
13713 display: table-cell;
13714 vertical-align: top;
13715 padding: 3px 0 3px 1em;
13716 font: 400 14px 'Montserrat', sans-serif;
13717 }
13718
13719 .monospace {
13720 font-family: consolas, courier, monospace;
13721 font-size: 1em;
13722 line-height: 1.2em;
13723 white-space: nowrap;
13724 }
13725
13726 a {
13727 color: #0489c3;
13728 text-decoration: none;
13729 }
13730
13731 a:hover {
13732 text-decoration: underline;
13733 }
13734
13735 em {
13736 color: inherit;
13737 font-style: italic;
13738 }
13739
13740 b {
13741 color: inherit;
13742 font-weight: bold;
13743 }
13744
13745 hr {
13746 margin-top: 20px;
13747 margin-bottom: 20px;
13748 border: 0;
13749 border-top: 1px solid #eee;
13750 height: 0;
13751 box-sizing: content-box;
13752 }
13753
13754 .list-group {
13755 padding-left: 0;
13756 margin-bottom: 20px;
13757 }
13758
13759 .list-group-item {
13760 position: relative;
13761 display: block;
13762 padding: 10px 15px;
13763 margin-bottom: -1px;
13764 background-color: #fff;
13765 }
13766
13767 .list-group-item:first-child {
13768 /* rounded top corners */
13769 border-top-right-radius:4px;
13770 border-top-left-radius:4px;
13771 }
13772
13773 .list-group-item:last-child {
13774 margin-bottom: 0;
13775 /* rounded bottom corners */
13776 border-bottom-right-radius: 4px;
13777 border-bottom-left-radius:4px;
13778 }
13779
13780 /* Flex row container */
13781 .flex-row {
13782 display: flex;
13783 flex-direction: row;
13784 }
13785
13786 /* Flex column container */
13787 .flex-column {
13788 display: flex;
13789 flex-direction: column;
13790 }
13791
13792 .flex-item-fit {
13793 flex-grow: 1;
13794 flex-shrink: 1;
13795 flex-basis: auto;
13796 }
13797
13798 .flex-item-no-shrink {
13799 flex-grow: 0;
13800 flex-shrink: 0;
13801 flex-basis: auto;
13802 }
13803
13804 .flex-item-fill {
13805 flex-grow: 0;
13806 flex-shrink: 1; /* shrink when pressured */
13807 flex-basis: 100%; /* try and take 100% */
13808 }
13809
13810 .flex-item-fixed-1-12 {
13811 flex-grow: 0;
13812 flex-shrink: 0;
13813 flex-basis: 8.3%;
13814 }
13815
13816 .flex-item-fixed-2-12 {
13817 flex-grow: 0;
13818 flex-shrink: 0;
13819 flex-basis: 16.6%;
13820 }
13821
13822 .flex-item-fixed-4-12 {
13823 flex-grow: 0;
13824 flex-shrink: 0;
13825 flex-basis: 33.3333%;
13826 }
13827
13828 .flex-item-fixed-6-12, .flex-item-50-percent {
13829 flex-grow: 0;
13830 flex-shrink: 0;
13831 flex-basis: 50%;
13832 }
13833
13834 .flex-item-fixed-8-12 {
13835 flex-grow: 0;
13836 flex-shrink: 0;
13837 flex-basis: 66.6666%;
13838 }
13839
13840 .flex-item-fixed-9-12 {
13841 flex-grow: 0;
13842 flex-shrink: 0;
13843 flex-basis: 75%;
13844 }
13845
13846
13847 .flex-item-fixed-12-12 {
13848 flex-grow: 0;
13849 flex-shrink: 0;
13850 flex-basis: 100%;
13851 }
13852
13853 .flex-item-10-percent {
13854 flex-grow: 0;
13855 flex-shrink: 0;
13856 flex-basis: 10%;
13857 }
13858
13859 .flex-item-15-percent {
13860 flex-grow: 0;
13861 flex-shrink: 0;
13862 flex-basis: 15%;
13863 }
13864
13865 .flex-item-20-percent {
13866 flex-grow: 0;
13867 flex-shrink: 0;
13868 flex-basis: 20%;
13869 }
13870
13871 .flex-item-30-percent {
13872 flex-grow: 0;
13873 flex-shrink: 0;
13874 flex-basis: 30%;
13875 }
13876
13877 .flex-item-40-percent {
13878 flex-grow: 0;
13879 flex-shrink: 0;
13880 flex-basis: 40%;
13881 }
13882
13883 .flex-item-50-percent {
13884 flex-grow: 0;
13885 flex-shrink: 0;
13886 flex-basis: 50%;
13887 }
13888
13889 .flex-item-60-percent {
13890 flex-grow: 0;
13891 flex-shrink: 0;
13892 flex-basis: 60%;
13893 }
13894
13895 .flex-item-70-percent {
13896 flex-grow: 0;
13897 flex-shrink: 0;
13898 flex-basis: 70%;
13899 }
13900
13901 .flex-item-80-percent {
13902 flex-grow: 0;
13903 flex-shrink: 0;
13904 flex-basis: 80%;
13905 }
13906
13907 .well {
13908 min-height: 20px;
13909 padding: 19px;
13910 margin-bottom: 20px;
13911 background-color: #f5f5f5;
13912 border: 1px solid #e3e3e3;
13913 border-radius: 4px;
13914 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
13915 }
13916
13917 .break-wrap {
13918 word-wrap: break-word;
13919 }
13920 </style>
13921 <nav-bar>
13922 <top-nav-menu></top-nav-menu>
13923 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu>
13924 <!-- TODO(turnidge): Add library nav menu here. -->
13925 <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu>
13926 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu>
13927 <nav-refresh callback="{{ refresh }}"></nav-refresh>
13928 <nav-control></nav-control>
13929 </nav-bar>
13930
13931 <template if="{{ instance['error'] != null }}">
13932 <error-view error_obj="{{ instance['error'] }}"></error-view>
13933 </template>
13934
13935 <template if="{{ instance['error'] == null }}">
13936 <div class="content">
13937 <!-- TODO(turnidge): Handle null instances. -->
13938 <template if="{{ isType(instance.serviceType) }}">
13939 <h1>type {{ instance['user_name'] }}</h1>
13940 </template>
13941 <template if="{{ !isType(instance.serviceType) }}">
13942 <h1>instance of {{ instance['class']['user_name'] }}</h1>
13943 </template>
13944 <div class="memberList">
13945 <div class="memberItem">
13946 <div class="memberName">class</div>
13947 <div class="memberValue">
13948 <class-ref ref="{{ instance['class'] }}">
13949 </class-ref>
13950 </div>
13951 </div>
13952 <template if="{{ instance['valueAsString'] != null }}">
13953 <div class="memberItem">
13954 <div class="memberName">value</div>
13955 <div class="memberValue">{{ instance['valueAsString'] }}</div>
13956 </div>
13957 </template>
13958 <div class="memberItem">
13959 <div class="memberName">size</div>
13960 <div class="memberValue">{{ instance['size'] | formatSize }}</div>
13961 </div>
13962 <div class="memberItem">
13963 <div class="memberName">retained size</div>
13964 <div class="memberValue">
13965 <template if="{{ retainedBytes == null }}">
13966 <eval-link callback="{{ retainedSize }}" label="[calculate]">
13967 </eval-link>
13968 </template>
13969 <template if="{{ retainedBytes != null }}">
13970 {{ retainedBytes | formatSize }}
13971 </template>
13972 </div>
13973 </div>
13974 <div class="memberItem">
13975 <div class="memberName">retaining path</div>
13976 <div class="memberValue">
13977 <template if="{{ path == null }}">
13978 <eval-link callback="{{ retainingPath }}" label="[find]" expr="1 0">
13979 </eval-link>
13980 </template>
13981 <template if="{{ path != null }}">
13982 <template repeat="{{ element in path['elements'] }}">
13983 <div class="memberItem">
13984 <div class="memberName">[{{ element['index']}}]</div>
13985 <div class="memberValue">
13986 <instance-ref ref="{{ element['value'] }}"></instance-ref>
13987 <template if="{{ element['parentField'] != null }}">
13988 in <field-ref ref="{{ element['parentField'] }}"></field-r ef>
13989 </template>
13990 <template if="{{ element['parentListIndex'] != null }}">
13991 at list index {{ element['parentListIndex'] }} of
13992 </template>
13993 </div>
13994 </div>
13995 </template>
13996 <template if="{{ path['length'] > path['elements'].length }}">
13997 showing {{ path['elements'].length }} of {{ path['length'] }}
13998 <eval-link callback="{{ retainingPath }}" label="[find more]" expr="{{ path['elements'].length * 2 }}">
13999 </eval-link>
14000 </template>
14001 </template>
14002 </div>
14003 </div>
14004 <template if="{{ instance['type_class'] != null }}">
14005 <div class="memberItem">
14006 <div class="memberName">type class</div>
14007 <div class="memberValue">
14008 <class-ref ref="{{ instance['type_class'] }}">
14009 </class-ref>
14010 </div>
14011 </div>
14012 </template>
14013 <template if="{{ instance['closureFunc'] != null }}">
14014 <div class="memberItem">
14015 <div class="memberName">closure function</div>
14016 <div class="memberValue">
14017 <function-ref ref="{{ instance['closureFunc'] }}">
14018 </function-ref>
14019 </div>
14020 </div>
14021 </template>
14022
14023 <div class="memberItem">&nbsp;</div>
14024
14025 <div class="memberItem">
14026 <div class="memberName">toString()</div>
14027 <div class="memberValue">
14028 <eval-link callback="{{ eval }}" expr="toString()"></eval-link>
14029 </div>
14030 </div>
14031 </div>
14032 </div>
14033
14034 <hr>
14035
14036 <div class="content">
14037 <template if="{{ instance['fields'].isNotEmpty }}">
14038 fields ({{ instance['fields'].length }})
14039 <curly-block expand="{{ instance['fields'].length <= 8 }}">
14040 <div class="memberList">
14041 <template repeat="{{ field in instance['fields'] }}">
14042 <div class="memberItem">
14043 <div class="memberName">
14044 <field-ref ref="{{ field['decl'] }}"></field-ref>
14045 </div>
14046 <div class="memberValue">
14047 <instance-ref ref="{{ field['value'] }}"></instance-ref>
14048 </div>
14049 </div>
14050 </template>
14051 </div>
14052 </curly-block><br><br>
14053 </template>
14054
14055 <template if="{{ instance['nativeFields'].isNotEmpty }}">
14056 native fields ({{ instance['nativeFields'].length }})
14057 <curly-block expand="{{ instance['nativeFields'].length <= 8 }}">
14058 <div class="memberList">
14059 <template repeat="{{ field in instance['nativeFields'] }}">
14060 <div class="memberItem">
14061 <div class="memberName">[{{ field['index']}}]</div>
14062 <div class="memberValue">[{{ field['value']}}]</div>
14063 </div>
14064 </template>
14065 </div>
14066 </curly-block><br><br>
14067 </template>
14068
14069 <template if="{{ instance['elements'].isNotEmpty }}">
14070 elements ({{ instance['elements'].length }})
14071 <curly-block expand="{{ instance['elements'].length <= 8 }}">
14072 <div class="memberList">
14073 <template repeat="{{ element in instance['elements'] }}">
14074 <div class="memberItem">
14075 <div class="memberName">[{{ element['index']}}]</div>
14076 <div class="memberValue">
14077 <instance-ref ref="{{ element['value'] }}">
14078 </instance-ref>
14079 </div>
14080 </div>
14081 </template>
14082 </div>
14083 </curly-block><br><br>
14084 </template>
14085 </div>
14086
14087 <hr>
14088
14089 <div class="content">
14090 <eval-box callback="{{ eval }}"></eval-box>
14091 </div>
14092 <br><br><br><br>
14093 <br><br><br><br>
14094
14095 </template>
14096 </template>
14097 </polymer-element>
14098
14099
14100
14101
14102 <polymer-element name="json-view" extends="observatory-element">
14103 <template>
14104 <nav-bar>
14105 <top-nav-menu last="{{ true }}"></top-nav-menu>
14106 </nav-bar>
14107 <pre>{{ mapAsString }}</pre>
14108 </template>
14109 </polymer-element>
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124 <polymer-element name="library-view" extends="observatory-element">
14125 <template>
14126 <style>
14127 /* Global styles */
14128 * {
14129 margin: 0;
14130 padding: 0;
14131 font: 400 14px 'Montserrat', sans-serif;
14132 color: #333;
14133 box-sizing: border-box;
14134 }
14135
14136 .content {
14137 padding-left: 10%;
14138 font: 400 14px 'Montserrat', sans-serif;
14139 }
14140
14141 .content-centered {
14142 padding-left: 10%;
14143 padding-right: 10%;
14144 font: 400 14px 'Montserrat', sans-serif;
14145 }
14146
14147 .content-centered-big {
14148 padding-left: 5%;
14149 padding-right: 5%;
14150 font: 400 14px 'Montserrat', sans-serif;
14151 }
14152
14153 h1 {
14154 font: 400 18px 'Montserrat', sans-serif;
14155 }
14156
14157 .memberList {
14158 display: table;
14159 }
14160
14161 .memberItem {
14162 display: table-row;
14163 }
14164
14165 .memberName, .memberValue {
14166 display: table-cell;
14167 vertical-align: top;
14168 padding: 3px 0 3px 1em;
14169 font: 400 14px 'Montserrat', sans-serif;
14170 }
14171
14172 .monospace {
14173 font-family: consolas, courier, monospace;
14174 font-size: 1em;
14175 line-height: 1.2em;
14176 white-space: nowrap;
14177 }
14178
14179 a {
14180 color: #0489c3;
14181 text-decoration: none;
14182 }
14183
14184 a:hover {
14185 text-decoration: underline;
14186 }
14187
14188 em {
14189 color: inherit;
14190 font-style: italic;
14191 }
14192
14193 b {
14194 color: inherit;
14195 font-weight: bold;
14196 }
14197
14198 hr {
14199 margin-top: 20px;
14200 margin-bottom: 20px;
14201 border: 0;
14202 border-top: 1px solid #eee;
14203 height: 0;
14204 box-sizing: content-box;
14205 }
14206
14207 .list-group {
14208 padding-left: 0;
14209 margin-bottom: 20px;
14210 }
14211
14212 .list-group-item {
14213 position: relative;
14214 display: block;
14215 padding: 10px 15px;
14216 margin-bottom: -1px;
14217 background-color: #fff;
14218 }
14219
14220 .list-group-item:first-child {
14221 /* rounded top corners */
14222 border-top-right-radius:4px;
14223 border-top-left-radius:4px;
14224 }
14225
14226 .list-group-item:last-child {
14227 margin-bottom: 0;
14228 /* rounded bottom corners */
14229 border-bottom-right-radius: 4px;
14230 border-bottom-left-radius:4px;
14231 }
14232
14233 /* Flex row container */
14234 .flex-row {
14235 display: flex;
14236 flex-direction: row;
14237 }
14238
14239 /* Flex column container */
14240 .flex-column {
14241 display: flex;
14242 flex-direction: column;
14243 }
14244
14245 .flex-item-fit {
14246 flex-grow: 1;
14247 flex-shrink: 1;
14248 flex-basis: auto;
14249 }
14250
14251 .flex-item-no-shrink {
14252 flex-grow: 0;
14253 flex-shrink: 0;
14254 flex-basis: auto;
14255 }
14256
14257 .flex-item-fill {
14258 flex-grow: 0;
14259 flex-shrink: 1; /* shrink when pressured */
14260 flex-basis: 100%; /* try and take 100% */
14261 }
14262
14263 .flex-item-fixed-1-12 {
14264 flex-grow: 0;
14265 flex-shrink: 0;
14266 flex-basis: 8.3%;
14267 }
14268
14269 .flex-item-fixed-2-12 {
14270 flex-grow: 0;
14271 flex-shrink: 0;
14272 flex-basis: 16.6%;
14273 }
14274
14275 .flex-item-fixed-4-12 {
14276 flex-grow: 0;
14277 flex-shrink: 0;
14278 flex-basis: 33.3333%;
14279 }
14280
14281 .flex-item-fixed-6-12, .flex-item-50-percent {
14282 flex-grow: 0;
14283 flex-shrink: 0;
14284 flex-basis: 50%;
14285 }
14286
14287 .flex-item-fixed-8-12 {
14288 flex-grow: 0;
14289 flex-shrink: 0;
14290 flex-basis: 66.6666%;
14291 }
14292
14293 .flex-item-fixed-9-12 {
14294 flex-grow: 0;
14295 flex-shrink: 0;
14296 flex-basis: 75%;
14297 }
14298
14299
14300 .flex-item-fixed-12-12 {
14301 flex-grow: 0;
14302 flex-shrink: 0;
14303 flex-basis: 100%;
14304 }
14305
14306 .flex-item-10-percent {
14307 flex-grow: 0;
14308 flex-shrink: 0;
14309 flex-basis: 10%;
14310 }
14311
14312 .flex-item-15-percent {
14313 flex-grow: 0;
14314 flex-shrink: 0;
14315 flex-basis: 15%;
14316 }
14317
14318 .flex-item-20-percent {
14319 flex-grow: 0;
14320 flex-shrink: 0;
14321 flex-basis: 20%;
14322 }
14323
14324 .flex-item-30-percent {
14325 flex-grow: 0;
14326 flex-shrink: 0;
14327 flex-basis: 30%;
14328 }
14329
14330 .flex-item-40-percent {
14331 flex-grow: 0;
14332 flex-shrink: 0;
14333 flex-basis: 40%;
14334 }
14335
14336 .flex-item-50-percent {
14337 flex-grow: 0;
14338 flex-shrink: 0;
14339 flex-basis: 50%;
14340 }
14341
14342 .flex-item-60-percent {
14343 flex-grow: 0;
14344 flex-shrink: 0;
14345 flex-basis: 60%;
14346 }
14347
14348 .flex-item-70-percent {
14349 flex-grow: 0;
14350 flex-shrink: 0;
14351 flex-basis: 70%;
14352 }
14353
14354 .flex-item-80-percent {
14355 flex-grow: 0;
14356 flex-shrink: 0;
14357 flex-basis: 80%;
14358 }
14359
14360 .well {
14361 min-height: 20px;
14362 padding: 19px;
14363 margin-bottom: 20px;
14364 background-color: #f5f5f5;
14365 border: 1px solid #e3e3e3;
14366 border-radius: 4px;
14367 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
14368 }
14369
14370 .break-wrap {
14371 word-wrap: break-word;
14372 }
14373 </style>
14374
14375 <nav-bar>
14376 <top-nav-menu></top-nav-menu>
14377 <isolate-nav-menu isolate="{{ library.isolate }}"></isolate-nav-menu>
14378 <library-nav-menu library="{{ library }}" last="{{ true }}"></library-nav- menu>
14379 <nav-refresh callback="{{ refreshCoverage }}" label="Refresh Coverage"></n av-refresh>
14380 <nav-refresh callback="{{ refresh }}"></nav-refresh>
14381 <nav-control></nav-control>
14382 </nav-bar>
14383
14384 <div class="content">
14385 <h1>
14386 <!-- TODO(turnidge): Handle unnamed libraries -->
14387 library {{ library.name }}
14388 </h1>
14389 <div class="memberList">
14390 <div class="memberItem">
14391 <div class="memberName">url</div>
14392 <div class="memberValue">{{ library.url }}</div>
14393 </div>
14394 <template if="{{ library.name != library.vmName }}">
14395 <div class="memberItem">
14396 <div class="memberName">vm name</div>
14397 <div class="memberValue">{{ library.vmName }}</div>
14398 </div>
14399 </template>
14400 </div>
14401 </div>
14402
14403 <hr>
14404
14405 <div class="content">
14406 <template if="{{ library.imports.isNotEmpty }}">
14407 imports ({{ library.imports.length }})
14408 <curly-block expand="{{ library.imports.length <= 8 }}">
14409 <div class="memberList">
14410 <template repeat="{{ imp in library.imports }}">
14411 <div class="memberItem">
14412 <div class="memberValue">
14413 <library-ref ref="{{ imp }}"></library-ref>
14414 </div>
14415 </div>
14416 </template>
14417 </div>
14418 </curly-block><br>
14419 <br>
14420 </template>
14421
14422 <template if="{{ library.scripts.isNotEmpty }}">
14423 scripts ({{ library.scripts.length }})
14424 <curly-block expand="{{ library.scripts.length <= 8 }}">
14425 <div class="memberList">
14426 <template repeat="{{ script in library.scripts }}">
14427 <div class="memberItem">
14428 <div class="memberValue">
14429 <script-ref ref="{{ script }}"></script-ref>
14430 </div>
14431 </div>
14432 </template>
14433 </div>
14434 </curly-block><br>
14435 <br>
14436 </template>
14437
14438 <template if="{{ library.classes.isNotEmpty }}">
14439 classes ({{ library.classes.length }})
14440 <curly-block expand="{{ library.classes.length <= 8 }}">
14441 <div class="memberList">
14442 <template repeat="{{ cls in library.classes }}">
14443 <div class="memberItem">
14444 <div class="memberValue">
14445 <class-ref ref="{{ cls }}"></class-ref>
14446 </div>
14447 </div>
14448 </template>
14449 </div>
14450 </curly-block><br>
14451 <br>
14452 </template>
14453
14454 <template if="{{ library.variables.isNotEmpty }}">
14455 variables ({{ library.variables.length }})
14456 <curly-block expand="{{ library.variables.length <= 8 }}">
14457 <div class="memberList">
14458 <template repeat="{{ field in library.variables }}">
14459 <div class="memberItem">
14460 <div class="memberName">
14461 <field-ref ref="{{ field }}"></field-ref>
14462 </div>
14463 <div class="memberValue">
14464 <template if="{{ field['value'] != null }}">
14465 <instance-ref ref="{{ field['value'] }}"></instance-ref>
14466 </template>
14467 </div>
14468 </div>
14469 </template>
14470 </div>
14471 </curly-block><br>
14472 <br>
14473 </template>
14474
14475 <template if="{{ library.functions.isNotEmpty }}">
14476 functions ({{ library.functions.length }})
14477 <curly-block expand="{{ library.functions.length <= 8 }}">
14478 <div class="memberList">
14479 <template repeat="{{ function in library.functions }}">
14480 <div class="memberItem">
14481 <div class="memberValue">
14482 <function-ref ref="{{ function }}"></function-ref>
14483 </div>
14484 </div>
14485 </template>
14486 </div>
14487 </curly-block><br>
14488 <br>
14489 </template>
14490 </div>
14491
14492 <hr>
14493
14494 <div class="content">
14495 <eval-box callback="{{ eval }}"></eval-box>
14496 </div>
14497 <br><br><br><br>
14498 <br><br><br><br>
14499 </template>
14500 </polymer-element>
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527 <polymer-element name="heap-profile" extends="observatory-element">
14528 <template>
14529 <style>
14530 /* Global styles */
14531 * {
14532 margin: 0;
14533 padding: 0;
14534 font: 400 14px 'Montserrat', sans-serif;
14535 color: #333;
14536 box-sizing: border-box;
14537 }
14538
14539 .content {
14540 padding-left: 10%;
14541 font: 400 14px 'Montserrat', sans-serif;
14542 }
14543
14544 .content-centered {
14545 padding-left: 10%;
14546 padding-right: 10%;
14547 font: 400 14px 'Montserrat', sans-serif;
14548 }
14549
14550 .content-centered-big {
14551 padding-left: 5%;
14552 padding-right: 5%;
14553 font: 400 14px 'Montserrat', sans-serif;
14554 }
14555
14556 h1 {
14557 font: 400 18px 'Montserrat', sans-serif;
14558 }
14559
14560 .memberList {
14561 display: table;
14562 }
14563
14564 .memberItem {
14565 display: table-row;
14566 }
14567
14568 .memberName, .memberValue {
14569 display: table-cell;
14570 vertical-align: top;
14571 padding: 3px 0 3px 1em;
14572 font: 400 14px 'Montserrat', sans-serif;
14573 }
14574
14575 .monospace {
14576 font-family: consolas, courier, monospace;
14577 font-size: 1em;
14578 line-height: 1.2em;
14579 white-space: nowrap;
14580 }
14581
14582 a {
14583 color: #0489c3;
14584 text-decoration: none;
14585 }
14586
14587 a:hover {
14588 text-decoration: underline;
14589 }
14590
14591 em {
14592 color: inherit;
14593 font-style: italic;
14594 }
14595
14596 b {
14597 color: inherit;
14598 font-weight: bold;
14599 }
14600
14601 hr {
14602 margin-top: 20px;
14603 margin-bottom: 20px;
14604 border: 0;
14605 border-top: 1px solid #eee;
14606 height: 0;
14607 box-sizing: content-box;
14608 }
14609
14610 .list-group {
14611 padding-left: 0;
14612 margin-bottom: 20px;
14613 }
14614
14615 .list-group-item {
14616 position: relative;
14617 display: block;
14618 padding: 10px 15px;
14619 margin-bottom: -1px;
14620 background-color: #fff;
14621 }
14622
14623 .list-group-item:first-child {
14624 /* rounded top corners */
14625 border-top-right-radius:4px;
14626 border-top-left-radius:4px;
14627 }
14628
14629 .list-group-item:last-child {
14630 margin-bottom: 0;
14631 /* rounded bottom corners */
14632 border-bottom-right-radius: 4px;
14633 border-bottom-left-radius:4px;
14634 }
14635
14636 /* Flex row container */
14637 .flex-row {
14638 display: flex;
14639 flex-direction: row;
14640 }
14641
14642 /* Flex column container */
14643 .flex-column {
14644 display: flex;
14645 flex-direction: column;
14646 }
14647
14648 .flex-item-fit {
14649 flex-grow: 1;
14650 flex-shrink: 1;
14651 flex-basis: auto;
14652 }
14653
14654 .flex-item-no-shrink {
14655 flex-grow: 0;
14656 flex-shrink: 0;
14657 flex-basis: auto;
14658 }
14659
14660 .flex-item-fill {
14661 flex-grow: 0;
14662 flex-shrink: 1; /* shrink when pressured */
14663 flex-basis: 100%; /* try and take 100% */
14664 }
14665
14666 .flex-item-fixed-1-12 {
14667 flex-grow: 0;
14668 flex-shrink: 0;
14669 flex-basis: 8.3%;
14670 }
14671
14672 .flex-item-fixed-2-12 {
14673 flex-grow: 0;
14674 flex-shrink: 0;
14675 flex-basis: 16.6%;
14676 }
14677
14678 .flex-item-fixed-4-12 {
14679 flex-grow: 0;
14680 flex-shrink: 0;
14681 flex-basis: 33.3333%;
14682 }
14683
14684 .flex-item-fixed-6-12, .flex-item-50-percent {
14685 flex-grow: 0;
14686 flex-shrink: 0;
14687 flex-basis: 50%;
14688 }
14689
14690 .flex-item-fixed-8-12 {
14691 flex-grow: 0;
14692 flex-shrink: 0;
14693 flex-basis: 66.6666%;
14694 }
14695
14696 .flex-item-fixed-9-12 {
14697 flex-grow: 0;
14698 flex-shrink: 0;
14699 flex-basis: 75%;
14700 }
14701
14702
14703 .flex-item-fixed-12-12 {
14704 flex-grow: 0;
14705 flex-shrink: 0;
14706 flex-basis: 100%;
14707 }
14708
14709 .flex-item-10-percent {
14710 flex-grow: 0;
14711 flex-shrink: 0;
14712 flex-basis: 10%;
14713 }
14714
14715 .flex-item-15-percent {
14716 flex-grow: 0;
14717 flex-shrink: 0;
14718 flex-basis: 15%;
14719 }
14720
14721 .flex-item-20-percent {
14722 flex-grow: 0;
14723 flex-shrink: 0;
14724 flex-basis: 20%;
14725 }
14726
14727 .flex-item-30-percent {
14728 flex-grow: 0;
14729 flex-shrink: 0;
14730 flex-basis: 30%;
14731 }
14732
14733 .flex-item-40-percent {
14734 flex-grow: 0;
14735 flex-shrink: 0;
14736 flex-basis: 40%;
14737 }
14738
14739 .flex-item-50-percent {
14740 flex-grow: 0;
14741 flex-shrink: 0;
14742 flex-basis: 50%;
14743 }
14744
14745 .flex-item-60-percent {
14746 flex-grow: 0;
14747 flex-shrink: 0;
14748 flex-basis: 60%;
14749 }
14750
14751 .flex-item-70-percent {
14752 flex-grow: 0;
14753 flex-shrink: 0;
14754 flex-basis: 70%;
14755 }
14756
14757 .flex-item-80-percent {
14758 flex-grow: 0;
14759 flex-shrink: 0;
14760 flex-basis: 80%;
14761 }
14762
14763 .well {
14764 min-height: 20px;
14765 padding: 19px;
14766 margin-bottom: 20px;
14767 background-color: #f5f5f5;
14768 border: 1px solid #e3e3e3;
14769 border-radius: 4px;
14770 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
14771 }
14772
14773 .break-wrap {
14774 word-wrap: break-word;
14775 }
14776 </style>
14777 <style>
14778 .table {
14779 border-collapse: collapse!important;
14780 margin-bottom: 20px
14781 table-layout: fixed;
14782 }
14783 .table td:nth-of-type(1) {
14784 width: 30%;
14785 }
14786 .th, .td {
14787 padding: 8px;
14788 vertical-align: top;
14789 }
14790 .table thead > tr > th {
14791 vertical-align: bottom;
14792 text-align: left;
14793 border-bottom:2px solid #ddd;
14794 }
14795 .spacer {
14796 width: 16px;
14797 }
14798 .left-border-spacer {
14799 width: 16px;
14800 border-left: 1px solid;
14801 }
14802 .clickable {
14803 color: #0489c3;
14804 text-decoration: none;
14805 cursor: pointer;
14806 }
14807 .clickable:hover {
14808 text-decoration: underline;
14809 cursor: pointer;
14810 }
14811 #classtable tr:hover > td {
14812 background-color: #F4C7C3;
14813 }
14814 </style>
14815 <nav-bar>
14816 <top-nav-menu></top-nav-menu>
14817 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu>
14818 <nav-menu link="{{ profile.isolate.relativeLink('allocationprofile') }}" anc hor="allocation profile" last="{{ true }}"></nav-menu>
14819 <nav-refresh callback="{{ resetAccumulator }}" label="Reset Accumulator"></n av-refresh>
14820 <nav-refresh callback="{{ refreshGC }}" label="GC"></nav-refresh>
14821 <nav-refresh callback="{{ refresh }}"></nav-refresh>
14822 <nav-control></nav-control>
14823 </nav-bar>
14824 <div class="content">
14825 <h1>Allocation Profile</h1>
14826 <br>
14827 <div class="memberList">
14828 <div class="memberItem">
14829 <div class="memberName">last forced GC at</div>
14830 <div class="memberValue">{{ lastServiceGC }}</div>
14831 </div>
14832 <div class="memberItem">
14833 <div class="memberName">last accumulator reset at</div>
14834 <div class="memberValue">{{ lastAccumulatorReset }}</div>
14835 </div>
14836 </div>
14837 </div>
14838 <hr>
14839 <div class="content-centered-big">
14840 <div class="flex-row">
14841 <div id="newSpace" class="flex-item-50-percent">
14842 <h2>New Generation</h2>
14843 <br>
14844 <div class="memberList">
14845 <div class="memberItem">
14846 <div class="memberName">used</div>
14847 <div class="memberValue">
14848 {{ isolate.newSpace.used | formatSize }}
14849 of
14850 {{ isolate.newSpace.capacity | formatSize }}
14851 </div>
14852 </div>
14853 <div class="memberItem">
14854 <div class="memberName">external</div>
14855 <div class="memberValue">
14856 {{ isolate.newSpace.external | formatSize }}
14857 </div>
14858 </div>
14859 <div class="memberItem">
14860 <div class="memberName">collections</div>
14861 <div class="memberValue">{{ formattedCollections(true) }}</div>
14862 </div>
14863 <div class="memberItem">
14864 <div class="memberName">average collection time</div>
14865 <div class="memberValue">{{ formattedAverage(true) }}</div>
14866 </div>
14867 <div class="memberItem">
14868 <div class="memberName">cumulative collection time</div>
14869 <div class="memberValue">{{ formattedTotalCollectionTime(true) }}</d iv>
14870 </div>
14871 <div class="memberItem">
14872 <div class="memberName">average time between collections</div>
14873 <div class="memberValue">{{ isolate.newSpace.averageCollectionPeriod InMillis.toStringAsFixed(2) }} ms</div>
14874 </div>
14875 </div>
14876 <div id="newPieChart" style="height: 300px"></div>
14877 </div>
14878 <div id="oldSpace" class="flex-item-50-percent">
14879 <h2>Old Generation</h2>
14880 <br>
14881 <div class="memberList">
14882 <div class="memberItem">
14883 <div class="memberName">used</div>
14884 <div class="memberValue">
14885 {{ isolate.oldSpace.used | formatSize }}
14886 of
14887 {{ isolate.oldSpace.capacity | formatSize }}
14888 </div>
14889 </div>
14890 <div class="memberItem">
14891 <div class="memberName">external</div>
14892 <div class="memberValue">
14893 {{ isolate.oldSpace.external | formatSize }}
14894 </div>
14895 </div>
14896 <div class="memberItem">
14897 <div class="memberName">collections</div>
14898 <div class="memberValue">{{ formattedCollections(false) }}</div>
14899 </div>
14900 <div class="memberItem">
14901 <div class="memberName">average collection time</div>
14902 <div class="memberValue">{{ formattedAverage(false) }}</div>
14903 </div>
14904 <div class="memberItem">
14905 <div class="memberName">cumulative collection time</div>
14906 <div class="memberValue">{{ formattedTotalCollectionTime(false) }}</ div>
14907 </div>
14908 <div class="memberItem">
14909 <div class="memberName">average time between collections</div>
14910 <div class="memberValue">{{ isolate.oldSpace.averageCollectionPeriod InMillis.toStringAsFixed(2) }} ms</div>
14911 </div>
14912 </div>
14913 <div id="oldPieChart" style="height: 300px"></div>
14914 </div>
14915 </div>
14916 </div>
14917 <br>
14918 <hr>
14919 <div class="content-centered-big">
14920 <table id="classtable" class="flex-item-100-percent table">
14921 <thead id="classTableHead">
14922 <tr>
14923 <th on-click="{{changeSort}}" class="clickable" title="Class">{{ class Table.getColumnLabel(0) }}</th>
14924 <th class="spacer"></th>
14925 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated Size">{{ classTable.getColumnLabel(2) }}</th>
14926 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated Instances">{{ classTable.getColumnLabel(3) }}</th>
14927 <th on-click="{{changeSort}}" class="clickable" title="New Current Siz e">{{ classTable.getColumnLabel(4) }}</th>
14928 <th on-click="{{changeSort}}" class="clickable" title="New Current Ins tances">{{ classTable.getColumnLabel(5) }}</th>
14929 <th class="spacer"></th>
14930 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated Size">{{ classTable.getColumnLabel(7) }}</th>
14931 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated Instances">{{ classTable.getColumnLabel(8) }}</th>
14932 <th on-click="{{changeSort}}" class="clickable" title="Old Current Siz e">{{ classTable.getColumnLabel(9) }}</th>
14933 <th on-click="{{changeSort}}" class="clickable" title="Old Current Ins tances">{{ classTable.getColumnLabel(10) }}</th>
14934 </tr>
14935 </thead>
14936 <tbody id="classTableBody">
14937 </tbody>
14938 </table>
14939 <br><br><br>
14940 <br><br><br>
14941 </div>
14942 </template>
14943 </polymer-element>
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954 <polymer-element name="sliding-checkbox">
14955 <template>
14956 <style>
14957 .switch {
14958 position: relative;
14959 width: 121px;
14960 -webkit-user-select: none;
14961 -moz-user-select: none;
14962 -ms-user-select: none;
14963 }
14964 .hide {
14965 display: none;
14966 }
14967 .label {
14968 display: block;
14969 overflow: hidden;
14970 cursor: pointer;
14971 border: 2px solid #999999;
14972 border-radius: 15px;
14973 }
14974 .content {
14975 width: 200%;
14976 margin-left: -100%;
14977 -moz-transition: margin 0.3s ease-in 0s;
14978 -webkit-transition: margin 0.3s ease-in 0s;
14979 -o-transition: margin 0.3s ease-in 0s;
14980 transition: margin 0.3s ease-in 0s;
14981 }
14982 .content:before, .content:after {
14983 float: left;
14984 width: 50%;
14985 height: 30px;
14986 padding: 0;
14987 line-height: 30px;
14988 color: white;
14989 font: 400 14px 'Montserrat', sans-serif;
14990 -moz-box-sizing: border-box;
14991 -webkit-box-sizing: border-box;
14992 box-sizing: border-box;
14993 }
14994 .content:before {
14995 content: {{ checkedText }};
14996 padding-left: 10px;
14997 background-color: #0489C3;
14998 }
14999 .content:after {
15000 content: {{ uncheckedText }};
15001 padding-right: 10px;
15002 background-color: #EEEEEE;
15003 color: #999999;
15004 text-align: right;
15005 }
15006 .dot {
15007 width: 14px;
15008 margin: 8px;
15009 background: #FFFFFF;
15010 border: 2px solid #999999;
15011 border-radius: 15px;
15012 position: absolute;
15013 top: 0;
15014 bottom: 0;
15015 right: 87px;
15016 -moz-transition: all 0.3s ease-in 0s;
15017 -webkit-transition: all 0.3s ease-in 0s;
15018 -o-transition: all 0.3s ease-in 0s;
15019 transition: all 0.3s ease-in 0s;
15020 }
15021 :checked + .label .content {
15022 margin-left: 0;
15023 }
15024 :checked + .label .dot {
15025 right: 0px;
15026 }
15027 </style>
15028 <div class="switch">
15029 <input type="checkbox" class="hide" id="slide-switch" on-change="{{ change }}">
15030 <label class="label" for="slide-switch">
15031 <div class="content"></div>
15032 <div class="dot"></div>
15033 </label>
15034 </div>
15035 </template>
15036 </polymer-element>
15037
15038 <polymer-element name="isolate-profile" extends="observatory-element">
15039 <template>
15040 <style>
15041 /* Global styles */
15042 * {
15043 margin: 0;
15044 padding: 0;
15045 font: 400 14px 'Montserrat', sans-serif;
15046 color: #333;
15047 box-sizing: border-box;
15048 }
15049
15050 .content {
15051 padding-left: 10%;
15052 font: 400 14px 'Montserrat', sans-serif;
15053 }
15054
15055 .content-centered {
15056 padding-left: 10%;
15057 padding-right: 10%;
15058 font: 400 14px 'Montserrat', sans-serif;
15059 }
15060
15061 .content-centered-big {
15062 padding-left: 5%;
15063 padding-right: 5%;
15064 font: 400 14px 'Montserrat', sans-serif;
15065 }
15066
15067 h1 {
15068 font: 400 18px 'Montserrat', sans-serif;
15069 }
15070
15071 .memberList {
15072 display: table;
15073 }
15074
15075 .memberItem {
15076 display: table-row;
15077 }
15078
15079 .memberName, .memberValue {
15080 display: table-cell;
15081 vertical-align: top;
15082 padding: 3px 0 3px 1em;
15083 font: 400 14px 'Montserrat', sans-serif;
15084 }
15085
15086 .monospace {
15087 font-family: consolas, courier, monospace;
15088 font-size: 1em;
15089 line-height: 1.2em;
15090 white-space: nowrap;
15091 }
15092
15093 a {
15094 color: #0489c3;
15095 text-decoration: none;
15096 }
15097
15098 a:hover {
15099 text-decoration: underline;
15100 }
15101
15102 em {
15103 color: inherit;
15104 font-style: italic;
15105 }
15106
15107 b {
15108 color: inherit;
15109 font-weight: bold;
15110 }
15111
15112 hr {
15113 margin-top: 20px;
15114 margin-bottom: 20px;
15115 border: 0;
15116 border-top: 1px solid #eee;
15117 height: 0;
15118 box-sizing: content-box;
15119 }
15120
15121 .list-group {
15122 padding-left: 0;
15123 margin-bottom: 20px;
15124 }
15125
15126 .list-group-item {
15127 position: relative;
15128 display: block;
15129 padding: 10px 15px;
15130 margin-bottom: -1px;
15131 background-color: #fff;
15132 }
15133
15134 .list-group-item:first-child {
15135 /* rounded top corners */
15136 border-top-right-radius:4px;
15137 border-top-left-radius:4px;
15138 }
15139
15140 .list-group-item:last-child {
15141 margin-bottom: 0;
15142 /* rounded bottom corners */
15143 border-bottom-right-radius: 4px;
15144 border-bottom-left-radius:4px;
15145 }
15146
15147 /* Flex row container */
15148 .flex-row {
15149 display: flex;
15150 flex-direction: row;
15151 }
15152
15153 /* Flex column container */
15154 .flex-column {
15155 display: flex;
15156 flex-direction: column;
15157 }
15158
15159 .flex-item-fit {
15160 flex-grow: 1;
15161 flex-shrink: 1;
15162 flex-basis: auto;
15163 }
15164
15165 .flex-item-no-shrink {
15166 flex-grow: 0;
15167 flex-shrink: 0;
15168 flex-basis: auto;
15169 }
15170
15171 .flex-item-fill {
15172 flex-grow: 0;
15173 flex-shrink: 1; /* shrink when pressured */
15174 flex-basis: 100%; /* try and take 100% */
15175 }
15176
15177 .flex-item-fixed-1-12 {
15178 flex-grow: 0;
15179 flex-shrink: 0;
15180 flex-basis: 8.3%;
15181 }
15182
15183 .flex-item-fixed-2-12 {
15184 flex-grow: 0;
15185 flex-shrink: 0;
15186 flex-basis: 16.6%;
15187 }
15188
15189 .flex-item-fixed-4-12 {
15190 flex-grow: 0;
15191 flex-shrink: 0;
15192 flex-basis: 33.3333%;
15193 }
15194
15195 .flex-item-fixed-6-12, .flex-item-50-percent {
15196 flex-grow: 0;
15197 flex-shrink: 0;
15198 flex-basis: 50%;
15199 }
15200
15201 .flex-item-fixed-8-12 {
15202 flex-grow: 0;
15203 flex-shrink: 0;
15204 flex-basis: 66.6666%;
15205 }
15206
15207 .flex-item-fixed-9-12 {
15208 flex-grow: 0;
15209 flex-shrink: 0;
15210 flex-basis: 75%;
15211 }
15212
15213
15214 .flex-item-fixed-12-12 {
15215 flex-grow: 0;
15216 flex-shrink: 0;
15217 flex-basis: 100%;
15218 }
15219
15220 .flex-item-10-percent {
15221 flex-grow: 0;
15222 flex-shrink: 0;
15223 flex-basis: 10%;
15224 }
15225
15226 .flex-item-15-percent {
15227 flex-grow: 0;
15228 flex-shrink: 0;
15229 flex-basis: 15%;
15230 }
15231
15232 .flex-item-20-percent {
15233 flex-grow: 0;
15234 flex-shrink: 0;
15235 flex-basis: 20%;
15236 }
15237
15238 .flex-item-30-percent {
15239 flex-grow: 0;
15240 flex-shrink: 0;
15241 flex-basis: 30%;
15242 }
15243
15244 .flex-item-40-percent {
15245 flex-grow: 0;
15246 flex-shrink: 0;
15247 flex-basis: 40%;
15248 }
15249
15250 .flex-item-50-percent {
15251 flex-grow: 0;
15252 flex-shrink: 0;
15253 flex-basis: 50%;
15254 }
15255
15256 .flex-item-60-percent {
15257 flex-grow: 0;
15258 flex-shrink: 0;
15259 flex-basis: 60%;
15260 }
15261
15262 .flex-item-70-percent {
15263 flex-grow: 0;
15264 flex-shrink: 0;
15265 flex-basis: 70%;
15266 }
15267
15268 .flex-item-80-percent {
15269 flex-grow: 0;
15270 flex-shrink: 0;
15271 flex-basis: 80%;
15272 }
15273
15274 .well {
15275 min-height: 20px;
15276 padding: 19px;
15277 margin-bottom: 20px;
15278 background-color: #f5f5f5;
15279 border: 1px solid #e3e3e3;
15280 border-radius: 4px;
15281 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
15282 }
15283
15284 .break-wrap {
15285 word-wrap: break-word;
15286 }
15287 </style>
15288 <nav-bar>
15289 <top-nav-menu></top-nav-menu>
15290 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu>
15291 <nav-menu link="{{ profile.isolate.relativeLink('profile') }}" anchor="cpu profile" last="{{ true }}"></nav-menu>
15292 <nav-refresh callback="{{ refresh }}"></nav-refresh>
15293 <nav-control></nav-control>
15294 </nav-bar>
15295 <style>
15296 .table {
15297 border-collapse: collapse!important;
15298 width: 100%;
15299 margin-bottom: 20px
15300 }
15301 .table thead > tr > th,
15302 .table tbody > tr > th,
15303 .table tfoot > tr > th,
15304 .table thead > tr > td,
15305 .table tbody > tr > td,
15306 .table tfoot > tr > td {
15307 padding: 8px;
15308 vertical-align: top;
15309 }
15310 .table thead > tr > th {
15311 vertical-align: bottom;
15312 text-align: left;
15313 border-bottom:2px solid #ddd;
15314 }
15315
15316 tr:hover > td {
15317 background-color: #FFF3E3;
15318 }
15319 .rowColor0 {
15320 background-color: #FFE9CC;
15321 }
15322 .rowColor1 {
15323 background-color: #FFDEB2;
15324 }
15325 .rowColor2 {
15326 background-color: #FFD399;
15327 }
15328 .rowColor3 {
15329 background-color: #FFC87F;
15330 }
15331 .rowColor4 {
15332 background-color: #FFBD66;
15333 }
15334 .rowColor5 {
15335 background-color: #FFB24C;
15336 }
15337 .rowColor6 {
15338 background-color: #FFA733;
15339 }
15340 .rowColor7 {
15341 background-color: #FF9C19;
15342 }
15343 .rowColor8 {
15344 background-color: #FF9100;
15345 }
15346
15347 .tooltip {
15348 display: block;
15349 position: absolute;
15350 visibility: hidden;
15351 opacity: 0;
15352 transition: visibility 0s linear 0.5s;
15353 transition: opacity .4s ease-in-out;
15354 }
15355
15356 tr:hover .tooltip {
15357 display: block;
15358 position: absolute;
15359 top: 100%;
15360 right: 100%;
15361 visibility: visible;
15362 z-index: 999;
15363 width: 400px;
15364 color: #ffffff;
15365 background-color: #0489c3;
15366 border-top-right-radius: 8px;
15367 border-top-left-radius: 8px;
15368 border-bottom-right-radius: 8px;
15369 border-bottom-left-radius: 8px;
15370 transition: visibility 0s linear 0.5s;
15371 transition: opacity .4s ease-in-out;
15372 opacity: 1;
15373 }
15374
15375 .white {
15376 color: #ffffff;
15377 }
15378
15379 </style>
15380 <div class="content">
15381 <h1>Sampled CPU profile</h1>
15382 <div class="memberList">
15383 <div class="memberItem">
15384 <div class="memberName">Timestamp</div>
15385 <div class="memberValue">{{ refreshTime }}</div>
15386 </div>
15387 <div class="memberItem">
15388 <div class="memberName">Time span</div>
15389 <div class="memberValue">{{ timeSpan }}</div>
15390 </div>
15391 <div class="memberItem">
15392 <div class="memberName">Sample count</div>
15393 <div class="memberValue">{{ sampleCount }}</div>
15394 </div>
15395 <div class="memberItem">
15396 <div class="memberName">Sample rate</div>
15397 <div class="memberValue">{{ sampleRate }} Hz</div>
15398 </div>
15399 <div class="memberItem">
15400 <div class="memberName">Sample depth</div>
15401 <div class="memberValue">{{ sampleDepth }} stack frames</div>
15402 </div>
15403 <div class="memberItem">
15404 <div class="memberName">Display cutoff</div>
15405 <div class="memberValue">{{ displayCutoff }}</div>
15406 </div>
15407 <div class="memberItem">
15408 <div class="memberName">Tags</div>
15409 <div class="memberValue">
15410 <select value="{{tagSelector}}">
15411 <option value="uv">User &gt; VM</option>
15412 <option value="u">User</option>
15413 <option value="vu">VM &gt; User</option>
15414 <option value="v">VM</option>
15415 <option value="hide">None</option>
15416 </select>
15417 </div>
15418 </div>
15419 </div>
15420 <hr>
15421 <table id="tableTree" class="table">
15422 <thead>
15423 <tr>
15424 <th>Method</th>
15425 <th>Self</th>
15426 </tr>
15427 </thead>
15428 <tbody>
15429 <tr template="" repeat="{{row in tree.rows }}" style="{{}}">
15430 <td on-click="{{toggleExpanded}}" class="{{ coloring(row) }}" style= "{{ padding(row) }}">
15431 <span id="expand" style="{{ row.expanderStyle }}">{{ row.expander }}</span>
15432 <div style="position: relative;display: inline">
15433 {{row.columns[0]}}
15434 </div>
15435 <code-ref ref="{{ row.code }}"></code-ref>
15436 </td>
15437 <td class="{{ coloring(row) }}" style="position: relative">
15438 {{row.columns[1]}}
15439 <div class="tooltip">
15440 <div class="memberList">
15441 <div class="memberItem">
15442 <div class="memberName white">Kind</div>
15443 <div class="memberValue white">{{ row.tipKind }}</div>
15444 </div>
15445 <div class="memberItem">
15446 <div class="memberName white">Percent of Parent</div>
15447 <div class="memberValue white">{{ row.tipParent }}</div>
15448 </div>
15449 <div class="memberItem">
15450 <div class="memberName white">Sample Count</div>
15451 <div class="memberValue white">{{ row.tipTicks }} ({{ row.tip Exclusive }})</div>
15452 </div>
15453 <div class="memberItem">
15454 <div class="memberName white">Approximate Execution Time</div >
15455 <div class="memberValue white">{{ row.tipTime }}</div>
15456 </div>
15457 </div>
15458 </div>
15459 </td>
15460 </tr>
15461 </tbody>
15462 </table>
15463 </div>
15464 </template>
15465 </polymer-element>
15466
15467
15468
15469
15470
15471
15472
15473 <polymer-element name="script-view" extends="observatory-element">
15474 <template>
15475 <style>
15476 /* Global styles */
15477 * {
15478 margin: 0;
15479 padding: 0;
15480 font: 400 14px 'Montserrat', sans-serif;
15481 color: #333;
15482 box-sizing: border-box;
15483 }
15484
15485 .content {
15486 padding-left: 10%;
15487 font: 400 14px 'Montserrat', sans-serif;
15488 }
15489
15490 .content-centered {
15491 padding-left: 10%;
15492 padding-right: 10%;
15493 font: 400 14px 'Montserrat', sans-serif;
15494 }
15495
15496 .content-centered-big {
15497 padding-left: 5%;
15498 padding-right: 5%;
15499 font: 400 14px 'Montserrat', sans-serif;
15500 }
15501
15502 h1 {
15503 font: 400 18px 'Montserrat', sans-serif;
15504 }
15505
15506 .memberList {
15507 display: table;
15508 }
15509
15510 .memberItem {
15511 display: table-row;
15512 }
15513
15514 .memberName, .memberValue {
15515 display: table-cell;
15516 vertical-align: top;
15517 padding: 3px 0 3px 1em;
15518 font: 400 14px 'Montserrat', sans-serif;
15519 }
15520
15521 .monospace {
15522 font-family: consolas, courier, monospace;
15523 font-size: 1em;
15524 line-height: 1.2em;
15525 white-space: nowrap;
15526 }
15527
15528 a {
15529 color: #0489c3;
15530 text-decoration: none;
15531 }
15532
15533 a:hover {
15534 text-decoration: underline;
15535 }
15536
15537 em {
15538 color: inherit;
15539 font-style: italic;
15540 }
15541
15542 b {
15543 color: inherit;
15544 font-weight: bold;
15545 }
15546
15547 hr {
15548 margin-top: 20px;
15549 margin-bottom: 20px;
15550 border: 0;
15551 border-top: 1px solid #eee;
15552 height: 0;
15553 box-sizing: content-box;
15554 }
15555
15556 .list-group {
15557 padding-left: 0;
15558 margin-bottom: 20px;
15559 }
15560
15561 .list-group-item {
15562 position: relative;
15563 display: block;
15564 padding: 10px 15px;
15565 margin-bottom: -1px;
15566 background-color: #fff;
15567 }
15568
15569 .list-group-item:first-child {
15570 /* rounded top corners */
15571 border-top-right-radius:4px;
15572 border-top-left-radius:4px;
15573 }
15574
15575 .list-group-item:last-child {
15576 margin-bottom: 0;
15577 /* rounded bottom corners */
15578 border-bottom-right-radius: 4px;
15579 border-bottom-left-radius:4px;
15580 }
15581
15582 /* Flex row container */
15583 .flex-row {
15584 display: flex;
15585 flex-direction: row;
15586 }
15587
15588 /* Flex column container */
15589 .flex-column {
15590 display: flex;
15591 flex-direction: column;
15592 }
15593
15594 .flex-item-fit {
15595 flex-grow: 1;
15596 flex-shrink: 1;
15597 flex-basis: auto;
15598 }
15599
15600 .flex-item-no-shrink {
15601 flex-grow: 0;
15602 flex-shrink: 0;
15603 flex-basis: auto;
15604 }
15605
15606 .flex-item-fill {
15607 flex-grow: 0;
15608 flex-shrink: 1; /* shrink when pressured */
15609 flex-basis: 100%; /* try and take 100% */
15610 }
15611
15612 .flex-item-fixed-1-12 {
15613 flex-grow: 0;
15614 flex-shrink: 0;
15615 flex-basis: 8.3%;
15616 }
15617
15618 .flex-item-fixed-2-12 {
15619 flex-grow: 0;
15620 flex-shrink: 0;
15621 flex-basis: 16.6%;
15622 }
15623
15624 .flex-item-fixed-4-12 {
15625 flex-grow: 0;
15626 flex-shrink: 0;
15627 flex-basis: 33.3333%;
15628 }
15629
15630 .flex-item-fixed-6-12, .flex-item-50-percent {
15631 flex-grow: 0;
15632 flex-shrink: 0;
15633 flex-basis: 50%;
15634 }
15635
15636 .flex-item-fixed-8-12 {
15637 flex-grow: 0;
15638 flex-shrink: 0;
15639 flex-basis: 66.6666%;
15640 }
15641
15642 .flex-item-fixed-9-12 {
15643 flex-grow: 0;
15644 flex-shrink: 0;
15645 flex-basis: 75%;
15646 }
15647
15648
15649 .flex-item-fixed-12-12 {
15650 flex-grow: 0;
15651 flex-shrink: 0;
15652 flex-basis: 100%;
15653 }
15654
15655 .flex-item-10-percent {
15656 flex-grow: 0;
15657 flex-shrink: 0;
15658 flex-basis: 10%;
15659 }
15660
15661 .flex-item-15-percent {
15662 flex-grow: 0;
15663 flex-shrink: 0;
15664 flex-basis: 15%;
15665 }
15666
15667 .flex-item-20-percent {
15668 flex-grow: 0;
15669 flex-shrink: 0;
15670 flex-basis: 20%;
15671 }
15672
15673 .flex-item-30-percent {
15674 flex-grow: 0;
15675 flex-shrink: 0;
15676 flex-basis: 30%;
15677 }
15678
15679 .flex-item-40-percent {
15680 flex-grow: 0;
15681 flex-shrink: 0;
15682 flex-basis: 40%;
15683 }
15684
15685 .flex-item-50-percent {
15686 flex-grow: 0;
15687 flex-shrink: 0;
15688 flex-basis: 50%;
15689 }
15690
15691 .flex-item-60-percent {
15692 flex-grow: 0;
15693 flex-shrink: 0;
15694 flex-basis: 60%;
15695 }
15696
15697 .flex-item-70-percent {
15698 flex-grow: 0;
15699 flex-shrink: 0;
15700 flex-basis: 70%;
15701 }
15702
15703 .flex-item-80-percent {
15704 flex-grow: 0;
15705 flex-shrink: 0;
15706 flex-basis: 80%;
15707 }
15708
15709 .well {
15710 min-height: 20px;
15711 padding: 19px;
15712 margin-bottom: 20px;
15713 background-color: #f5f5f5;
15714 border: 1px solid #e3e3e3;
15715 border-radius: 4px;
15716 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
15717 }
15718
15719 .break-wrap {
15720 word-wrap: break-word;
15721 }
15722 </style>
15723 <nav-bar>
15724 <top-nav-menu></top-nav-menu>
15725 <isolate-nav-menu isolate="{{ script.isolate }}">
15726 </isolate-nav-menu>
15727 <nav-menu link="{{ script.owningLibrary.link }}" anchor="{{ script.owningLib rary.name }}"></nav-menu>
15728 <nav-menu link="{{ script.link }}" anchor="{{ script.name }}" last="{{ true }}"></nav-menu>
15729 <nav-refresh callback="{{ refreshCoverage }}" label="Refresh Coverage"></nav -refresh>
15730 <nav-refresh callback="{{ refresh }}"></nav-refresh>
15731 <nav-control></nav-control>
15732 </nav-bar>
15733
15734 <template if="{{ args['pos'] == null }}">
15735 <script-inset id="scriptInset" script="{{ script }}">
15736 <h1>script {{ script.name }}</h1>
15737 </script-inset>
15738 </template>
15739
15740 <template if="{{ args['pos'] != null }}">
15741 <script-inset id="scriptInset" script="{{ script }}" currentpos="{{ args['po s'] | parseInt }}">
15742 <h1>script {{ script.name }}</h1>
15743 </script-inset>
15744 </template>
15745
15746 </template>
15747 </polymer-element>
15748
15749
15750
15751
15752
15753
15754
15755 <polymer-element name="stack-trace" extends="observatory-element">
15756 <template>
15757 <style>
15758 /* Global styles */
15759 * {
15760 margin: 0;
15761 padding: 0;
15762 font: 400 14px 'Montserrat', sans-serif;
15763 color: #333;
15764 box-sizing: border-box;
15765 }
15766
15767 .content {
15768 padding-left: 10%;
15769 font: 400 14px 'Montserrat', sans-serif;
15770 }
15771
15772 .content-centered {
15773 padding-left: 10%;
15774 padding-right: 10%;
15775 font: 400 14px 'Montserrat', sans-serif;
15776 }
15777
15778 .content-centered-big {
15779 padding-left: 5%;
15780 padding-right: 5%;
15781 font: 400 14px 'Montserrat', sans-serif;
15782 }
15783
15784 h1 {
15785 font: 400 18px 'Montserrat', sans-serif;
15786 }
15787
15788 .memberList {
15789 display: table;
15790 }
15791
15792 .memberItem {
15793 display: table-row;
15794 }
15795
15796 .memberName, .memberValue {
15797 display: table-cell;
15798 vertical-align: top;
15799 padding: 3px 0 3px 1em;
15800 font: 400 14px 'Montserrat', sans-serif;
15801 }
15802
15803 .monospace {
15804 font-family: consolas, courier, monospace;
15805 font-size: 1em;
15806 line-height: 1.2em;
15807 white-space: nowrap;
15808 }
15809
15810 a {
15811 color: #0489c3;
15812 text-decoration: none;
15813 }
15814
15815 a:hover {
15816 text-decoration: underline;
15817 }
15818
15819 em {
15820 color: inherit;
15821 font-style: italic;
15822 }
15823
15824 b {
15825 color: inherit;
15826 font-weight: bold;
15827 }
15828
15829 hr {
15830 margin-top: 20px;
15831 margin-bottom: 20px;
15832 border: 0;
15833 border-top: 1px solid #eee;
15834 height: 0;
15835 box-sizing: content-box;
15836 }
15837
15838 .list-group {
15839 padding-left: 0;
15840 margin-bottom: 20px;
15841 }
15842
15843 .list-group-item {
15844 position: relative;
15845 display: block;
15846 padding: 10px 15px;
15847 margin-bottom: -1px;
15848 background-color: #fff;
15849 }
15850
15851 .list-group-item:first-child {
15852 /* rounded top corners */
15853 border-top-right-radius:4px;
15854 border-top-left-radius:4px;
15855 }
15856
15857 .list-group-item:last-child {
15858 margin-bottom: 0;
15859 /* rounded bottom corners */
15860 border-bottom-right-radius: 4px;
15861 border-bottom-left-radius:4px;
15862 }
15863
15864 /* Flex row container */
15865 .flex-row {
15866 display: flex;
15867 flex-direction: row;
15868 }
15869
15870 /* Flex column container */
15871 .flex-column {
15872 display: flex;
15873 flex-direction: column;
15874 }
15875
15876 .flex-item-fit {
15877 flex-grow: 1;
15878 flex-shrink: 1;
15879 flex-basis: auto;
15880 }
15881
15882 .flex-item-no-shrink {
15883 flex-grow: 0;
15884 flex-shrink: 0;
15885 flex-basis: auto;
15886 }
15887
15888 .flex-item-fill {
15889 flex-grow: 0;
15890 flex-shrink: 1; /* shrink when pressured */
15891 flex-basis: 100%; /* try and take 100% */
15892 }
15893
15894 .flex-item-fixed-1-12 {
15895 flex-grow: 0;
15896 flex-shrink: 0;
15897 flex-basis: 8.3%;
15898 }
15899
15900 .flex-item-fixed-2-12 {
15901 flex-grow: 0;
15902 flex-shrink: 0;
15903 flex-basis: 16.6%;
15904 }
15905
15906 .flex-item-fixed-4-12 {
15907 flex-grow: 0;
15908 flex-shrink: 0;
15909 flex-basis: 33.3333%;
15910 }
15911
15912 .flex-item-fixed-6-12, .flex-item-50-percent {
15913 flex-grow: 0;
15914 flex-shrink: 0;
15915 flex-basis: 50%;
15916 }
15917
15918 .flex-item-fixed-8-12 {
15919 flex-grow: 0;
15920 flex-shrink: 0;
15921 flex-basis: 66.6666%;
15922 }
15923
15924 .flex-item-fixed-9-12 {
15925 flex-grow: 0;
15926 flex-shrink: 0;
15927 flex-basis: 75%;
15928 }
15929
15930
15931 .flex-item-fixed-12-12 {
15932 flex-grow: 0;
15933 flex-shrink: 0;
15934 flex-basis: 100%;
15935 }
15936
15937 .flex-item-10-percent {
15938 flex-grow: 0;
15939 flex-shrink: 0;
15940 flex-basis: 10%;
15941 }
15942
15943 .flex-item-15-percent {
15944 flex-grow: 0;
15945 flex-shrink: 0;
15946 flex-basis: 15%;
15947 }
15948
15949 .flex-item-20-percent {
15950 flex-grow: 0;
15951 flex-shrink: 0;
15952 flex-basis: 20%;
15953 }
15954
15955 .flex-item-30-percent {
15956 flex-grow: 0;
15957 flex-shrink: 0;
15958 flex-basis: 30%;
15959 }
15960
15961 .flex-item-40-percent {
15962 flex-grow: 0;
15963 flex-shrink: 0;
15964 flex-basis: 40%;
15965 }
15966
15967 .flex-item-50-percent {
15968 flex-grow: 0;
15969 flex-shrink: 0;
15970 flex-basis: 50%;
15971 }
15972
15973 .flex-item-60-percent {
15974 flex-grow: 0;
15975 flex-shrink: 0;
15976 flex-basis: 60%;
15977 }
15978
15979 .flex-item-70-percent {
15980 flex-grow: 0;
15981 flex-shrink: 0;
15982 flex-basis: 70%;
15983 }
15984
15985 .flex-item-80-percent {
15986 flex-grow: 0;
15987 flex-shrink: 0;
15988 flex-basis: 80%;
15989 }
15990
15991 .well {
15992 min-height: 20px;
15993 padding: 19px;
15994 margin-bottom: 20px;
15995 background-color: #f5f5f5;
15996 border: 1px solid #e3e3e3;
15997 border-radius: 4px;
15998 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
15999 }
16000
16001 .break-wrap {
16002 word-wrap: break-word;
16003 }
16004 </style>
16005 <nav-bar>
16006 <top-nav-menu></top-nav-menu>
16007 <isolate-nav-menu isolate="{{ trace.isolate }}"></isolate-nav-menu>
16008 <nav-menu link="{{ trace.isolate.relativeLink('stacktrace') }}" anchor="st ack trace" last="{{ true }}"></nav-menu>
16009 <nav-refresh callback="{{ refresh }}"></nav-refresh>
16010 <nav-control></nav-control>
16011 </nav-bar>
16012 <template if="{{ trace['members'].isEmpty }}">
16013 <div class="content">
16014 <em>No stack</em>
16015 </div>
16016 </template>
16017 <template if="{{ trace['members'].isNotEmpty }}">
16018 <ul class="list-group">
16019 <template repeat="{{ frame in trace['members'] }}">
16020 <li class="list-group-item">
16021 <stack-frame frame="{{ frame }}"></stack-frame>
16022 </li>
16023 </template>
16024 </ul>
16025 </template>
16026 </template>
16027 </polymer-element>
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040 <polymer-element name="vm-view" extends="observatory-element">
16041 <template>
16042 <style>
16043 /* Global styles */
16044 * {
16045 margin: 0;
16046 padding: 0;
16047 font: 400 14px 'Montserrat', sans-serif;
16048 color: #333;
16049 box-sizing: border-box;
16050 }
16051
16052 .content {
16053 padding-left: 10%;
16054 font: 400 14px 'Montserrat', sans-serif;
16055 }
16056
16057 .content-centered {
16058 padding-left: 10%;
16059 padding-right: 10%;
16060 font: 400 14px 'Montserrat', sans-serif;
16061 }
16062
16063 .content-centered-big {
16064 padding-left: 5%;
16065 padding-right: 5%;
16066 font: 400 14px 'Montserrat', sans-serif;
16067 }
16068
16069 h1 {
16070 font: 400 18px 'Montserrat', sans-serif;
16071 }
16072
16073 .memberList {
16074 display: table;
16075 }
16076
16077 .memberItem {
16078 display: table-row;
16079 }
16080
16081 .memberName, .memberValue {
16082 display: table-cell;
16083 vertical-align: top;
16084 padding: 3px 0 3px 1em;
16085 font: 400 14px 'Montserrat', sans-serif;
16086 }
16087
16088 .monospace {
16089 font-family: consolas, courier, monospace;
16090 font-size: 1em;
16091 line-height: 1.2em;
16092 white-space: nowrap;
16093 }
16094
16095 a {
16096 color: #0489c3;
16097 text-decoration: none;
16098 }
16099
16100 a:hover {
16101 text-decoration: underline;
16102 }
16103
16104 em {
16105 color: inherit;
16106 font-style: italic;
16107 }
16108
16109 b {
16110 color: inherit;
16111 font-weight: bold;
16112 }
16113
16114 hr {
16115 margin-top: 20px;
16116 margin-bottom: 20px;
16117 border: 0;
16118 border-top: 1px solid #eee;
16119 height: 0;
16120 box-sizing: content-box;
16121 }
16122
16123 .list-group {
16124 padding-left: 0;
16125 margin-bottom: 20px;
16126 }
16127
16128 .list-group-item {
16129 position: relative;
16130 display: block;
16131 padding: 10px 15px;
16132 margin-bottom: -1px;
16133 background-color: #fff;
16134 }
16135
16136 .list-group-item:first-child {
16137 /* rounded top corners */
16138 border-top-right-radius:4px;
16139 border-top-left-radius:4px;
16140 }
16141
16142 .list-group-item:last-child {
16143 margin-bottom: 0;
16144 /* rounded bottom corners */
16145 border-bottom-right-radius: 4px;
16146 border-bottom-left-radius:4px;
16147 }
16148
16149 /* Flex row container */
16150 .flex-row {
16151 display: flex;
16152 flex-direction: row;
16153 }
16154
16155 /* Flex column container */
16156 .flex-column {
16157 display: flex;
16158 flex-direction: column;
16159 }
16160
16161 .flex-item-fit {
16162 flex-grow: 1;
16163 flex-shrink: 1;
16164 flex-basis: auto;
16165 }
16166
16167 .flex-item-no-shrink {
16168 flex-grow: 0;
16169 flex-shrink: 0;
16170 flex-basis: auto;
16171 }
16172
16173 .flex-item-fill {
16174 flex-grow: 0;
16175 flex-shrink: 1; /* shrink when pressured */
16176 flex-basis: 100%; /* try and take 100% */
16177 }
16178
16179 .flex-item-fixed-1-12 {
16180 flex-grow: 0;
16181 flex-shrink: 0;
16182 flex-basis: 8.3%;
16183 }
16184
16185 .flex-item-fixed-2-12 {
16186 flex-grow: 0;
16187 flex-shrink: 0;
16188 flex-basis: 16.6%;
16189 }
16190
16191 .flex-item-fixed-4-12 {
16192 flex-grow: 0;
16193 flex-shrink: 0;
16194 flex-basis: 33.3333%;
16195 }
16196
16197 .flex-item-fixed-6-12, .flex-item-50-percent {
16198 flex-grow: 0;
16199 flex-shrink: 0;
16200 flex-basis: 50%;
16201 }
16202
16203 .flex-item-fixed-8-12 {
16204 flex-grow: 0;
16205 flex-shrink: 0;
16206 flex-basis: 66.6666%;
16207 }
16208
16209 .flex-item-fixed-9-12 {
16210 flex-grow: 0;
16211 flex-shrink: 0;
16212 flex-basis: 75%;
16213 }
16214
16215
16216 .flex-item-fixed-12-12 {
16217 flex-grow: 0;
16218 flex-shrink: 0;
16219 flex-basis: 100%;
16220 }
16221
16222 .flex-item-10-percent {
16223 flex-grow: 0;
16224 flex-shrink: 0;
16225 flex-basis: 10%;
16226 }
16227
16228 .flex-item-15-percent {
16229 flex-grow: 0;
16230 flex-shrink: 0;
16231 flex-basis: 15%;
16232 }
16233
16234 .flex-item-20-percent {
16235 flex-grow: 0;
16236 flex-shrink: 0;
16237 flex-basis: 20%;
16238 }
16239
16240 .flex-item-30-percent {
16241 flex-grow: 0;
16242 flex-shrink: 0;
16243 flex-basis: 30%;
16244 }
16245
16246 .flex-item-40-percent {
16247 flex-grow: 0;
16248 flex-shrink: 0;
16249 flex-basis: 40%;
16250 }
16251
16252 .flex-item-50-percent {
16253 flex-grow: 0;
16254 flex-shrink: 0;
16255 flex-basis: 50%;
16256 }
16257
16258 .flex-item-60-percent {
16259 flex-grow: 0;
16260 flex-shrink: 0;
16261 flex-basis: 60%;
16262 }
16263
16264 .flex-item-70-percent {
16265 flex-grow: 0;
16266 flex-shrink: 0;
16267 flex-basis: 70%;
16268 }
16269
16270 .flex-item-80-percent {
16271 flex-grow: 0;
16272 flex-shrink: 0;
16273 flex-basis: 80%;
16274 }
16275
16276 .well {
16277 min-height: 20px;
16278 padding: 19px;
16279 margin-bottom: 20px;
16280 background-color: #f5f5f5;
16281 border: 1px solid #e3e3e3;
16282 border-radius: 4px;
16283 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
16284 }
16285
16286 .break-wrap {
16287 word-wrap: break-word;
16288 }
16289 </style>
16290
16291 <nav-bar>
16292 <top-nav-menu last="{{ true }}"></top-nav-menu>
16293 <nav-refresh callback="{{ refresh }}"></nav-refresh>
16294 <nav-control></nav-control>
16295 </nav-bar>
16296
16297 <div class="content">
16298 <h1>VM</h1>
16299 <div class="memberList">
16300 <div class="memberItem">
16301 <div class="memberName">version</div>
16302 <div class="memberValue">{{ vm.version }}</div>
16303 </div>
16304 <div class="memberItem">
16305 <div class="memberName">uptime</div>
16306 <div class="memberValue">{{ vm.uptime | formatTime }}</div>
16307 </div>
16308 <div class="memberItem">
16309 <div class="memberName">type checks enabled</div>
16310 <div class="memberValue">{{ vm.typeChecksEnabled }}</div>
16311 </div>
16312 <div class="memberItem">
16313 <div class="memberName">asserts enabled</div>
16314 <div class="memberValue">{{ vm.assertsEnabled }}</div>
16315 </div>
16316 <div class="memberItem">
16317 <div class="memberName">pid</div>
16318 <div class="memberValue">{{ vm.pid }}</div>
16319 </div>
16320 <div class="memberItem">
16321 <div class="memberName">refreshed at</div>
16322 <div class="memberValue">{{ vm.lastUpdate }}</div>
16323 </div>
16324 <br>
16325 <div class="memberItem">
16326 <div class="memberValue">
16327 See <a on-click="{{ goto }}" href="{{ gotoLink('/flags') }}">flags</ a>
16328 </div>
16329 </div>
16330 </div>
16331 </div>
16332
16333 <br>
16334 <hr>
16335
16336 <ul class="list-group">
16337 <template repeat="{{ isolate in vm.isolates }}">
16338 <li class="list-group-item">
16339 <isolate-summary isolate="{{ isolate }}"></isolate-summary>
16340 </li>
16341 <hr>
16342 </template>
16343 </ul>
16344 </template>
16345 </polymer-element>
16346
16347 <polymer-element name="service-view" extends="observatory-element">
16348 <!-- This element explicitly manages the child elements to avoid setting
16349 an observable property on the old element to an invalid type. -->
16350 </polymer-element>
16351
16352 <polymer-element name="observatory-application" extends="observatory-element">
16353 <!-- This element explicitly manages its child elements -->
16354 </polymer-element>
16355
16356
16357
16358
16359
16360 <polymer-element name="service-exception-view" extends="observatory-element">
16361 <template>
16362 <style>
16363 /* Global styles */
16364 * {
16365 margin: 0;
16366 padding: 0;
16367 font: 400 14px 'Montserrat', sans-serif;
16368 color: #333;
16369 box-sizing: border-box;
16370 }
16371
16372 .content {
16373 padding-left: 10%;
16374 font: 400 14px 'Montserrat', sans-serif;
16375 }
16376
16377 .content-centered {
16378 padding-left: 10%;
16379 padding-right: 10%;
16380 font: 400 14px 'Montserrat', sans-serif;
16381 }
16382
16383 .content-centered-big {
16384 padding-left: 5%;
16385 padding-right: 5%;
16386 font: 400 14px 'Montserrat', sans-serif;
16387 }
16388
16389 h1 {
16390 font: 400 18px 'Montserrat', sans-serif;
16391 }
16392
16393 .memberList {
16394 display: table;
16395 }
16396
16397 .memberItem {
16398 display: table-row;
16399 }
16400
16401 .memberName, .memberValue {
16402 display: table-cell;
16403 vertical-align: top;
16404 padding: 3px 0 3px 1em;
16405 font: 400 14px 'Montserrat', sans-serif;
16406 }
16407
16408 .monospace {
16409 font-family: consolas, courier, monospace;
16410 font-size: 1em;
16411 line-height: 1.2em;
16412 white-space: nowrap;
16413 }
16414
16415 a {
16416 color: #0489c3;
16417 text-decoration: none;
16418 }
16419
16420 a:hover {
16421 text-decoration: underline;
16422 }
16423
16424 em {
16425 color: inherit;
16426 font-style: italic;
16427 }
16428
16429 b {
16430 color: inherit;
16431 font-weight: bold;
16432 }
16433
16434 hr {
16435 margin-top: 20px;
16436 margin-bottom: 20px;
16437 border: 0;
16438 border-top: 1px solid #eee;
16439 height: 0;
16440 box-sizing: content-box;
16441 }
16442
16443 .list-group {
16444 padding-left: 0;
16445 margin-bottom: 20px;
16446 }
16447
16448 .list-group-item {
16449 position: relative;
16450 display: block;
16451 padding: 10px 15px;
16452 margin-bottom: -1px;
16453 background-color: #fff;
16454 }
16455
16456 .list-group-item:first-child {
16457 /* rounded top corners */
16458 border-top-right-radius:4px;
16459 border-top-left-radius:4px;
16460 }
16461
16462 .list-group-item:last-child {
16463 margin-bottom: 0;
16464 /* rounded bottom corners */
16465 border-bottom-right-radius: 4px;
16466 border-bottom-left-radius:4px;
16467 }
16468
16469 /* Flex row container */
16470 .flex-row {
16471 display: flex;
16472 flex-direction: row;
16473 }
16474
16475 /* Flex column container */
16476 .flex-column {
16477 display: flex;
16478 flex-direction: column;
16479 }
16480
16481 .flex-item-fit {
16482 flex-grow: 1;
16483 flex-shrink: 1;
16484 flex-basis: auto;
16485 }
16486
16487 .flex-item-no-shrink {
16488 flex-grow: 0;
16489 flex-shrink: 0;
16490 flex-basis: auto;
16491 }
16492
16493 .flex-item-fill {
16494 flex-grow: 0;
16495 flex-shrink: 1; /* shrink when pressured */
16496 flex-basis: 100%; /* try and take 100% */
16497 }
16498
16499 .flex-item-fixed-1-12 {
16500 flex-grow: 0;
16501 flex-shrink: 0;
16502 flex-basis: 8.3%;
16503 }
16504
16505 .flex-item-fixed-2-12 {
16506 flex-grow: 0;
16507 flex-shrink: 0;
16508 flex-basis: 16.6%;
16509 }
16510
16511 .flex-item-fixed-4-12 {
16512 flex-grow: 0;
16513 flex-shrink: 0;
16514 flex-basis: 33.3333%;
16515 }
16516
16517 .flex-item-fixed-6-12, .flex-item-50-percent {
16518 flex-grow: 0;
16519 flex-shrink: 0;
16520 flex-basis: 50%;
16521 }
16522
16523 .flex-item-fixed-8-12 {
16524 flex-grow: 0;
16525 flex-shrink: 0;
16526 flex-basis: 66.6666%;
16527 }
16528
16529 .flex-item-fixed-9-12 {
16530 flex-grow: 0;
16531 flex-shrink: 0;
16532 flex-basis: 75%;
16533 }
16534
16535
16536 .flex-item-fixed-12-12 {
16537 flex-grow: 0;
16538 flex-shrink: 0;
16539 flex-basis: 100%;
16540 }
16541
16542 .flex-item-10-percent {
16543 flex-grow: 0;
16544 flex-shrink: 0;
16545 flex-basis: 10%;
16546 }
16547
16548 .flex-item-15-percent {
16549 flex-grow: 0;
16550 flex-shrink: 0;
16551 flex-basis: 15%;
16552 }
16553
16554 .flex-item-20-percent {
16555 flex-grow: 0;
16556 flex-shrink: 0;
16557 flex-basis: 20%;
16558 }
16559
16560 .flex-item-30-percent {
16561 flex-grow: 0;
16562 flex-shrink: 0;
16563 flex-basis: 30%;
16564 }
16565
16566 .flex-item-40-percent {
16567 flex-grow: 0;
16568 flex-shrink: 0;
16569 flex-basis: 40%;
16570 }
16571
16572 .flex-item-50-percent {
16573 flex-grow: 0;
16574 flex-shrink: 0;
16575 flex-basis: 50%;
16576 }
16577
16578 .flex-item-60-percent {
16579 flex-grow: 0;
16580 flex-shrink: 0;
16581 flex-basis: 60%;
16582 }
16583
16584 .flex-item-70-percent {
16585 flex-grow: 0;
16586 flex-shrink: 0;
16587 flex-basis: 70%;
16588 }
16589
16590 .flex-item-80-percent {
16591 flex-grow: 0;
16592 flex-shrink: 0;
16593 flex-basis: 80%;
16594 }
16595
16596 .well {
16597 min-height: 20px;
16598 padding: 19px;
16599 margin-bottom: 20px;
16600 background-color: #f5f5f5;
16601 border: 1px solid #e3e3e3;
16602 border-radius: 4px;
16603 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
16604 }
16605
16606 .break-wrap {
16607 word-wrap: break-word;
16608 }
16609 </style>
16610 <nav-bar>
16611 <top-nav-menu last="{{ true }}"></top-nav-menu>
16612 <nav-control></nav-control>
16613 </nav-bar>
16614 <div class="content-centered">
16615 <h1>{{ exception.kind }}</h1>
16616 <br>
16617 <div class="well">{{ exception.message }}</div>
16618 <template if="{{ exception.response != '' }}">
16619 <div class="well">{{ exception.response }}</div>
16620 </template>
16621 </div>
16622 </template>
16623 </polymer-element>
16624
16625
16626
16627
16628
16629
16630 <polymer-element name="service-error-view" extends="observatory-element">
16631 <template>
16632 <style>
16633 /* Global styles */
16634 * {
16635 margin: 0;
16636 padding: 0;
16637 font: 400 14px 'Montserrat', sans-serif;
16638 color: #333;
16639 box-sizing: border-box;
16640 }
16641
16642 .content {
16643 padding-left: 10%;
16644 font: 400 14px 'Montserrat', sans-serif;
16645 }
16646
16647 .content-centered {
16648 padding-left: 10%;
16649 padding-right: 10%;
16650 font: 400 14px 'Montserrat', sans-serif;
16651 }
16652
16653 .content-centered-big {
16654 padding-left: 5%;
16655 padding-right: 5%;
16656 font: 400 14px 'Montserrat', sans-serif;
16657 }
16658
16659 h1 {
16660 font: 400 18px 'Montserrat', sans-serif;
16661 }
16662
16663 .memberList {
16664 display: table;
16665 }
16666
16667 .memberItem {
16668 display: table-row;
16669 }
16670
16671 .memberName, .memberValue {
16672 display: table-cell;
16673 vertical-align: top;
16674 padding: 3px 0 3px 1em;
16675 font: 400 14px 'Montserrat', sans-serif;
16676 }
16677
16678 .monospace {
16679 font-family: consolas, courier, monospace;
16680 font-size: 1em;
16681 line-height: 1.2em;
16682 white-space: nowrap;
16683 }
16684
16685 a {
16686 color: #0489c3;
16687 text-decoration: none;
16688 }
16689
16690 a:hover {
16691 text-decoration: underline;
16692 }
16693
16694 em {
16695 color: inherit;
16696 font-style: italic;
16697 }
16698
16699 b {
16700 color: inherit;
16701 font-weight: bold;
16702 }
16703
16704 hr {
16705 margin-top: 20px;
16706 margin-bottom: 20px;
16707 border: 0;
16708 border-top: 1px solid #eee;
16709 height: 0;
16710 box-sizing: content-box;
16711 }
16712
16713 .list-group {
16714 padding-left: 0;
16715 margin-bottom: 20px;
16716 }
16717
16718 .list-group-item {
16719 position: relative;
16720 display: block;
16721 padding: 10px 15px;
16722 margin-bottom: -1px;
16723 background-color: #fff;
16724 }
16725
16726 .list-group-item:first-child {
16727 /* rounded top corners */
16728 border-top-right-radius:4px;
16729 border-top-left-radius:4px;
16730 }
16731
16732 .list-group-item:last-child {
16733 margin-bottom: 0;
16734 /* rounded bottom corners */
16735 border-bottom-right-radius: 4px;
16736 border-bottom-left-radius:4px;
16737 }
16738
16739 /* Flex row container */
16740 .flex-row {
16741 display: flex;
16742 flex-direction: row;
16743 }
16744
16745 /* Flex column container */
16746 .flex-column {
16747 display: flex;
16748 flex-direction: column;
16749 }
16750
16751 .flex-item-fit {
16752 flex-grow: 1;
16753 flex-shrink: 1;
16754 flex-basis: auto;
16755 }
16756
16757 .flex-item-no-shrink {
16758 flex-grow: 0;
16759 flex-shrink: 0;
16760 flex-basis: auto;
16761 }
16762
16763 .flex-item-fill {
16764 flex-grow: 0;
16765 flex-shrink: 1; /* shrink when pressured */
16766 flex-basis: 100%; /* try and take 100% */
16767 }
16768
16769 .flex-item-fixed-1-12 {
16770 flex-grow: 0;
16771 flex-shrink: 0;
16772 flex-basis: 8.3%;
16773 }
16774
16775 .flex-item-fixed-2-12 {
16776 flex-grow: 0;
16777 flex-shrink: 0;
16778 flex-basis: 16.6%;
16779 }
16780
16781 .flex-item-fixed-4-12 {
16782 flex-grow: 0;
16783 flex-shrink: 0;
16784 flex-basis: 33.3333%;
16785 }
16786
16787 .flex-item-fixed-6-12, .flex-item-50-percent {
16788 flex-grow: 0;
16789 flex-shrink: 0;
16790 flex-basis: 50%;
16791 }
16792
16793 .flex-item-fixed-8-12 {
16794 flex-grow: 0;
16795 flex-shrink: 0;
16796 flex-basis: 66.6666%;
16797 }
16798
16799 .flex-item-fixed-9-12 {
16800 flex-grow: 0;
16801 flex-shrink: 0;
16802 flex-basis: 75%;
16803 }
16804
16805
16806 .flex-item-fixed-12-12 {
16807 flex-grow: 0;
16808 flex-shrink: 0;
16809 flex-basis: 100%;
16810 }
16811
16812 .flex-item-10-percent {
16813 flex-grow: 0;
16814 flex-shrink: 0;
16815 flex-basis: 10%;
16816 }
16817
16818 .flex-item-15-percent {
16819 flex-grow: 0;
16820 flex-shrink: 0;
16821 flex-basis: 15%;
16822 }
16823
16824 .flex-item-20-percent {
16825 flex-grow: 0;
16826 flex-shrink: 0;
16827 flex-basis: 20%;
16828 }
16829
16830 .flex-item-30-percent {
16831 flex-grow: 0;
16832 flex-shrink: 0;
16833 flex-basis: 30%;
16834 }
16835
16836 .flex-item-40-percent {
16837 flex-grow: 0;
16838 flex-shrink: 0;
16839 flex-basis: 40%;
16840 }
16841
16842 .flex-item-50-percent {
16843 flex-grow: 0;
16844 flex-shrink: 0;
16845 flex-basis: 50%;
16846 }
16847
16848 .flex-item-60-percent {
16849 flex-grow: 0;
16850 flex-shrink: 0;
16851 flex-basis: 60%;
16852 }
16853
16854 .flex-item-70-percent {
16855 flex-grow: 0;
16856 flex-shrink: 0;
16857 flex-basis: 70%;
16858 }
16859
16860 .flex-item-80-percent {
16861 flex-grow: 0;
16862 flex-shrink: 0;
16863 flex-basis: 80%;
16864 }
16865
16866 .well {
16867 min-height: 20px;
16868 padding: 19px;
16869 margin-bottom: 20px;
16870 background-color: #f5f5f5;
16871 border: 1px solid #e3e3e3;
16872 border-radius: 4px;
16873 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
16874 }
16875
16876 .break-wrap {
16877 word-wrap: break-word;
16878 }
16879 </style>
16880 <nav-bar>
16881 <top-nav-menu last="{{ true }}"></top-nav-menu>
16882 <nav-control></nav-control>
16883 </nav-bar>
16884 <div class="content-centered">
16885 <h1>{{ error.kind }}</h1>
16886 <br>
16887 <div class="well">{{ error.message }}</div>
16888 </div>
16889 </template>
16890 </polymer-element>
16891
16892
16893
16894
16895
16896 <polymer-element name="vm-connect-target" extends="observatory-element">
16897 <template>
16898 <style>
16899 .delete-button {
16900 padding: 4px;
16901 background: transparent;
16902 border: none !important;
16903 }
16904 .delete-button:hover {
16905 background: #ff0000;
16906 }
16907 </style>
16908 <style>
16909 /* Global styles */
16910 * {
16911 margin: 0;
16912 padding: 0;
16913 font: 400 14px 'Montserrat', sans-serif;
16914 color: #333;
16915 box-sizing: border-box;
16916 }
16917
16918 .content {
16919 padding-left: 10%;
16920 font: 400 14px 'Montserrat', sans-serif;
16921 }
16922
16923 .content-centered {
16924 padding-left: 10%;
16925 padding-right: 10%;
16926 font: 400 14px 'Montserrat', sans-serif;
16927 }
16928
16929 .content-centered-big {
16930 padding-left: 5%;
16931 padding-right: 5%;
16932 font: 400 14px 'Montserrat', sans-serif;
16933 }
16934
16935 h1 {
16936 font: 400 18px 'Montserrat', sans-serif;
16937 }
16938
16939 .memberList {
16940 display: table;
16941 }
16942
16943 .memberItem {
16944 display: table-row;
16945 }
16946
16947 .memberName, .memberValue {
16948 display: table-cell;
16949 vertical-align: top;
16950 padding: 3px 0 3px 1em;
16951 font: 400 14px 'Montserrat', sans-serif;
16952 }
16953
16954 .monospace {
16955 font-family: consolas, courier, monospace;
16956 font-size: 1em;
16957 line-height: 1.2em;
16958 white-space: nowrap;
16959 }
16960
16961 a {
16962 color: #0489c3;
16963 text-decoration: none;
16964 }
16965
16966 a:hover {
16967 text-decoration: underline;
16968 }
16969
16970 em {
16971 color: inherit;
16972 font-style: italic;
16973 }
16974
16975 b {
16976 color: inherit;
16977 font-weight: bold;
16978 }
16979
16980 hr {
16981 margin-top: 20px;
16982 margin-bottom: 20px;
16983 border: 0;
16984 border-top: 1px solid #eee;
16985 height: 0;
16986 box-sizing: content-box;
16987 }
16988
16989 .list-group {
16990 padding-left: 0;
16991 margin-bottom: 20px;
16992 }
16993
16994 .list-group-item {
16995 position: relative;
16996 display: block;
16997 padding: 10px 15px;
16998 margin-bottom: -1px;
16999 background-color: #fff;
17000 }
17001
17002 .list-group-item:first-child {
17003 /* rounded top corners */
17004 border-top-right-radius:4px;
17005 border-top-left-radius:4px;
17006 }
17007
17008 .list-group-item:last-child {
17009 margin-bottom: 0;
17010 /* rounded bottom corners */
17011 border-bottom-right-radius: 4px;
17012 border-bottom-left-radius:4px;
17013 }
17014
17015 /* Flex row container */
17016 .flex-row {
17017 display: flex;
17018 flex-direction: row;
17019 }
17020
17021 /* Flex column container */
17022 .flex-column {
17023 display: flex;
17024 flex-direction: column;
17025 }
17026
17027 .flex-item-fit {
17028 flex-grow: 1;
17029 flex-shrink: 1;
17030 flex-basis: auto;
17031 }
17032
17033 .flex-item-no-shrink {
17034 flex-grow: 0;
17035 flex-shrink: 0;
17036 flex-basis: auto;
17037 }
17038
17039 .flex-item-fill {
17040 flex-grow: 0;
17041 flex-shrink: 1; /* shrink when pressured */
17042 flex-basis: 100%; /* try and take 100% */
17043 }
17044
17045 .flex-item-fixed-1-12 {
17046 flex-grow: 0;
17047 flex-shrink: 0;
17048 flex-basis: 8.3%;
17049 }
17050
17051 .flex-item-fixed-2-12 {
17052 flex-grow: 0;
17053 flex-shrink: 0;
17054 flex-basis: 16.6%;
17055 }
17056
17057 .flex-item-fixed-4-12 {
17058 flex-grow: 0;
17059 flex-shrink: 0;
17060 flex-basis: 33.3333%;
17061 }
17062
17063 .flex-item-fixed-6-12, .flex-item-50-percent {
17064 flex-grow: 0;
17065 flex-shrink: 0;
17066 flex-basis: 50%;
17067 }
17068
17069 .flex-item-fixed-8-12 {
17070 flex-grow: 0;
17071 flex-shrink: 0;
17072 flex-basis: 66.6666%;
17073 }
17074
17075 .flex-item-fixed-9-12 {
17076 flex-grow: 0;
17077 flex-shrink: 0;
17078 flex-basis: 75%;
17079 }
17080
17081
17082 .flex-item-fixed-12-12 {
17083 flex-grow: 0;
17084 flex-shrink: 0;
17085 flex-basis: 100%;
17086 }
17087
17088 .flex-item-10-percent {
17089 flex-grow: 0;
17090 flex-shrink: 0;
17091 flex-basis: 10%;
17092 }
17093
17094 .flex-item-15-percent {
17095 flex-grow: 0;
17096 flex-shrink: 0;
17097 flex-basis: 15%;
17098 }
17099
17100 .flex-item-20-percent {
17101 flex-grow: 0;
17102 flex-shrink: 0;
17103 flex-basis: 20%;
17104 }
17105
17106 .flex-item-30-percent {
17107 flex-grow: 0;
17108 flex-shrink: 0;
17109 flex-basis: 30%;
17110 }
17111
17112 .flex-item-40-percent {
17113 flex-grow: 0;
17114 flex-shrink: 0;
17115 flex-basis: 40%;
17116 }
17117
17118 .flex-item-50-percent {
17119 flex-grow: 0;
17120 flex-shrink: 0;
17121 flex-basis: 50%;
17122 }
17123
17124 .flex-item-60-percent {
17125 flex-grow: 0;
17126 flex-shrink: 0;
17127 flex-basis: 60%;
17128 }
17129
17130 .flex-item-70-percent {
17131 flex-grow: 0;
17132 flex-shrink: 0;
17133 flex-basis: 70%;
17134 }
17135
17136 .flex-item-80-percent {
17137 flex-grow: 0;
17138 flex-shrink: 0;
17139 flex-basis: 80%;
17140 }
17141
17142 .well {
17143 min-height: 20px;
17144 padding: 19px;
17145 margin-bottom: 20px;
17146 background-color: #f5f5f5;
17147 border: 1px solid #e3e3e3;
17148 border-radius: 4px;
17149 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
17150 }
17151
17152 .break-wrap {
17153 word-wrap: break-word;
17154 }
17155 </style>
17156 <span>
17157 <template if="{{ isCurrentTarget }}">
17158 <a on-click="{{ connectToVm }}" href="{{ gotoLink('/vm') }}">{{ target.n ame }} (Connected)</a>
17159 </template>
17160 <template if="{{ !isCurrentTarget }}">
17161 <a on-click="{{ connectToVm }}" href="{{ gotoLink('/vm') }}">{{ target.n ame }}</a>
17162 </template>
17163 <template if="{{ !isChromeTarget }}">
17164 <button class="delete-button" on-click="{{ deleteVm }}">✖ Remove</button >
17165 </template>
17166 </span>
17167 </template>
17168 </polymer-element>
17169
17170 <polymer-element name="vm-connect" extends="observatory-element">
17171 <template>
17172 <style>
17173 /* Global styles */
17174 * {
17175 margin: 0;
17176 padding: 0;
17177 font: 400 14px 'Montserrat', sans-serif;
17178 color: #333;
17179 box-sizing: border-box;
17180 }
17181
17182 .content {
17183 padding-left: 10%;
17184 font: 400 14px 'Montserrat', sans-serif;
17185 }
17186
17187 .content-centered {
17188 padding-left: 10%;
17189 padding-right: 10%;
17190 font: 400 14px 'Montserrat', sans-serif;
17191 }
17192
17193 .content-centered-big {
17194 padding-left: 5%;
17195 padding-right: 5%;
17196 font: 400 14px 'Montserrat', sans-serif;
17197 }
17198
17199 h1 {
17200 font: 400 18px 'Montserrat', sans-serif;
17201 }
17202
17203 .memberList {
17204 display: table;
17205 }
17206
17207 .memberItem {
17208 display: table-row;
17209 }
17210
17211 .memberName, .memberValue {
17212 display: table-cell;
17213 vertical-align: top;
17214 padding: 3px 0 3px 1em;
17215 font: 400 14px 'Montserrat', sans-serif;
17216 }
17217
17218 .monospace {
17219 font-family: consolas, courier, monospace;
17220 font-size: 1em;
17221 line-height: 1.2em;
17222 white-space: nowrap;
17223 }
17224
17225 a {
17226 color: #0489c3;
17227 text-decoration: none;
17228 }
17229
17230 a:hover {
17231 text-decoration: underline;
17232 }
17233
17234 em {
17235 color: inherit;
17236 font-style: italic;
17237 }
17238
17239 b {
17240 color: inherit;
17241 font-weight: bold;
17242 }
17243
17244 hr {
17245 margin-top: 20px;
17246 margin-bottom: 20px;
17247 border: 0;
17248 border-top: 1px solid #eee;
17249 height: 0;
17250 box-sizing: content-box;
17251 }
17252
17253 .list-group {
17254 padding-left: 0;
17255 margin-bottom: 20px;
17256 }
17257
17258 .list-group-item {
17259 position: relative;
17260 display: block;
17261 padding: 10px 15px;
17262 margin-bottom: -1px;
17263 background-color: #fff;
17264 }
17265
17266 .list-group-item:first-child {
17267 /* rounded top corners */
17268 border-top-right-radius:4px;
17269 border-top-left-radius:4px;
17270 }
17271
17272 .list-group-item:last-child {
17273 margin-bottom: 0;
17274 /* rounded bottom corners */
17275 border-bottom-right-radius: 4px;
17276 border-bottom-left-radius:4px;
17277 }
17278
17279 /* Flex row container */
17280 .flex-row {
17281 display: flex;
17282 flex-direction: row;
17283 }
17284
17285 /* Flex column container */
17286 .flex-column {
17287 display: flex;
17288 flex-direction: column;
17289 }
17290
17291 .flex-item-fit {
17292 flex-grow: 1;
17293 flex-shrink: 1;
17294 flex-basis: auto;
17295 }
17296
17297 .flex-item-no-shrink {
17298 flex-grow: 0;
17299 flex-shrink: 0;
17300 flex-basis: auto;
17301 }
17302
17303 .flex-item-fill {
17304 flex-grow: 0;
17305 flex-shrink: 1; /* shrink when pressured */
17306 flex-basis: 100%; /* try and take 100% */
17307 }
17308
17309 .flex-item-fixed-1-12 {
17310 flex-grow: 0;
17311 flex-shrink: 0;
17312 flex-basis: 8.3%;
17313 }
17314
17315 .flex-item-fixed-2-12 {
17316 flex-grow: 0;
17317 flex-shrink: 0;
17318 flex-basis: 16.6%;
17319 }
17320
17321 .flex-item-fixed-4-12 {
17322 flex-grow: 0;
17323 flex-shrink: 0;
17324 flex-basis: 33.3333%;
17325 }
17326
17327 .flex-item-fixed-6-12, .flex-item-50-percent {
17328 flex-grow: 0;
17329 flex-shrink: 0;
17330 flex-basis: 50%;
17331 }
17332
17333 .flex-item-fixed-8-12 {
17334 flex-grow: 0;
17335 flex-shrink: 0;
17336 flex-basis: 66.6666%;
17337 }
17338
17339 .flex-item-fixed-9-12 {
17340 flex-grow: 0;
17341 flex-shrink: 0;
17342 flex-basis: 75%;
17343 }
17344
17345
17346 .flex-item-fixed-12-12 {
17347 flex-grow: 0;
17348 flex-shrink: 0;
17349 flex-basis: 100%;
17350 }
17351
17352 .flex-item-10-percent {
17353 flex-grow: 0;
17354 flex-shrink: 0;
17355 flex-basis: 10%;
17356 }
17357
17358 .flex-item-15-percent {
17359 flex-grow: 0;
17360 flex-shrink: 0;
17361 flex-basis: 15%;
17362 }
17363
17364 .flex-item-20-percent {
17365 flex-grow: 0;
17366 flex-shrink: 0;
17367 flex-basis: 20%;
17368 }
17369
17370 .flex-item-30-percent {
17371 flex-grow: 0;
17372 flex-shrink: 0;
17373 flex-basis: 30%;
17374 }
17375
17376 .flex-item-40-percent {
17377 flex-grow: 0;
17378 flex-shrink: 0;
17379 flex-basis: 40%;
17380 }
17381
17382 .flex-item-50-percent {
17383 flex-grow: 0;
17384 flex-shrink: 0;
17385 flex-basis: 50%;
17386 }
17387
17388 .flex-item-60-percent {
17389 flex-grow: 0;
17390 flex-shrink: 0;
17391 flex-basis: 60%;
17392 }
17393
17394 .flex-item-70-percent {
17395 flex-grow: 0;
17396 flex-shrink: 0;
17397 flex-basis: 70%;
17398 }
17399
17400 .flex-item-80-percent {
17401 flex-grow: 0;
17402 flex-shrink: 0;
17403 flex-basis: 80%;
17404 }
17405
17406 .well {
17407 min-height: 20px;
17408 padding: 19px;
17409 margin-bottom: 20px;
17410 background-color: #f5f5f5;
17411 border: 1px solid #e3e3e3;
17412 border-radius: 4px;
17413 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
17414 }
17415
17416 .break-wrap {
17417 word-wrap: break-word;
17418 }
17419 </style>
17420 <style>
17421 .textbox {
17422 width: 20em;
17423 font: 400 16px 'Montserrat', sans-serif;
17424 }
17425 </style>
17426
17427 <nav-bar>
17428 <top-nav-menu last="{{ true }}"></top-nav-menu>
17429 <nav-control></nav-control>
17430 </nav-bar>
17431
17432 <div class="content-centered">
17433 <h1>Connect to a Dart VM</h1>
17434 <br>
17435 <hr>
17436 <div class="flex-row">
17437 <div class="flex-item-40-percent">
17438 <h2><img style="height: 48px" src="packages/observatory/src/elements/i mg/dart_icon.png">Standalone</h2>
17439 <br>
17440 <ul>
17441 <template repeat="{{ target in app.targets.history }}">
17442 <template if="{{ target.standalone }}">
17443 <li><vm-connect-target target="{{ target }}"></vm-connect-target ></li>
17444 </template>
17445 </template>
17446 </ul>
17447 <hr>
17448 <form autocomplete="on">
17449 <input class="textbox" placeholder="localhost:8181" type="text" valu e="{{ standaloneVmAddress }}">
17450 <input class="button" type="submit" value="Connect" on-click="{{ con nectStandalone }}">
17451 </form>
17452 <br>
17453 <pre class="well">Run Standalone with: '--observe'</pre>
17454 <hr>
17455 </div>
17456
17457 <div class="flex-item-20-percent"></div>
17458 <div class="flex-item-40-percent">
17459 <h2><img style="height: 48px" src="packages/observatory/src/elements/i mg/chromium_icon.png">Chromium</h2>
17460 <br>
17461 <ul>
17462 <template repeat="{{ target in chromeTargets }}">
17463 <li><vm-connect-target target="{{ target }}"></vm-connect-target>< /li>
17464 </template>
17465 </ul>
17466 <hr>
17467 <form autocomplete="on">
17468 <input class="textbox" placeholder="localhost:9222" type="text" valu e="{{ chromiumAddress }}">
17469 <input class="button" type="submit" value="Get Tabs" on-click="{{ ge tTabs }}">
17470 </form>
17471 <br>
17472 <pre class="well">Run Chromium with:
17473 '--remote-debugging-port=9222'</pre>
17474 <hr>
17475 </div>
17476 </div>
17477 </div>
17478 </template>
17479 </polymer-element>
17480
17481
17482
17483
17484
17485 <polymer-element name="vm-ref" extends="service-ref">
17486 <template><style>
17487 /* Global styles */
17488 * {
17489 margin: 0;
17490 padding: 0;
17491 font: 400 14px 'Montserrat', sans-serif;
17492 color: #333;
17493 box-sizing: border-box;
17494 }
17495
17496 .content {
17497 padding-left: 10%;
17498 font: 400 14px 'Montserrat', sans-serif;
17499 }
17500
17501 .content-centered {
17502 padding-left: 10%;
17503 padding-right: 10%;
17504 font: 400 14px 'Montserrat', sans-serif;
17505 }
17506
17507 .content-centered-big {
17508 padding-left: 5%;
17509 padding-right: 5%;
17510 font: 400 14px 'Montserrat', sans-serif;
17511 }
17512
17513 h1 {
17514 font: 400 18px 'Montserrat', sans-serif;
17515 }
17516
17517 .memberList {
17518 display: table;
17519 }
17520
17521 .memberItem {
17522 display: table-row;
17523 }
17524
17525 .memberName, .memberValue {
17526 display: table-cell;
17527 vertical-align: top;
17528 padding: 3px 0 3px 1em;
17529 font: 400 14px 'Montserrat', sans-serif;
17530 }
17531
17532 .monospace {
17533 font-family: consolas, courier, monospace;
17534 font-size: 1em;
17535 line-height: 1.2em;
17536 white-space: nowrap;
17537 }
17538
17539 a {
17540 color: #0489c3;
17541 text-decoration: none;
17542 }
17543
17544 a:hover {
17545 text-decoration: underline;
17546 }
17547
17548 em {
17549 color: inherit;
17550 font-style: italic;
17551 }
17552
17553 b {
17554 color: inherit;
17555 font-weight: bold;
17556 }
17557
17558 hr {
17559 margin-top: 20px;
17560 margin-bottom: 20px;
17561 border: 0;
17562 border-top: 1px solid #eee;
17563 height: 0;
17564 box-sizing: content-box;
17565 }
17566
17567 .list-group {
17568 padding-left: 0;
17569 margin-bottom: 20px;
17570 }
17571
17572 .list-group-item {
17573 position: relative;
17574 display: block;
17575 padding: 10px 15px;
17576 margin-bottom: -1px;
17577 background-color: #fff;
17578 }
17579
17580 .list-group-item:first-child {
17581 /* rounded top corners */
17582 border-top-right-radius:4px;
17583 border-top-left-radius:4px;
17584 }
17585
17586 .list-group-item:last-child {
17587 margin-bottom: 0;
17588 /* rounded bottom corners */
17589 border-bottom-right-radius: 4px;
17590 border-bottom-left-radius:4px;
17591 }
17592
17593 /* Flex row container */
17594 .flex-row {
17595 display: flex;
17596 flex-direction: row;
17597 }
17598
17599 /* Flex column container */
17600 .flex-column {
17601 display: flex;
17602 flex-direction: column;
17603 }
17604
17605 .flex-item-fit {
17606 flex-grow: 1;
17607 flex-shrink: 1;
17608 flex-basis: auto;
17609 }
17610
17611 .flex-item-no-shrink {
17612 flex-grow: 0;
17613 flex-shrink: 0;
17614 flex-basis: auto;
17615 }
17616
17617 .flex-item-fill {
17618 flex-grow: 0;
17619 flex-shrink: 1; /* shrink when pressured */
17620 flex-basis: 100%; /* try and take 100% */
17621 }
17622
17623 .flex-item-fixed-1-12 {
17624 flex-grow: 0;
17625 flex-shrink: 0;
17626 flex-basis: 8.3%;
17627 }
17628
17629 .flex-item-fixed-2-12 {
17630 flex-grow: 0;
17631 flex-shrink: 0;
17632 flex-basis: 16.6%;
17633 }
17634
17635 .flex-item-fixed-4-12 {
17636 flex-grow: 0;
17637 flex-shrink: 0;
17638 flex-basis: 33.3333%;
17639 }
17640
17641 .flex-item-fixed-6-12, .flex-item-50-percent {
17642 flex-grow: 0;
17643 flex-shrink: 0;
17644 flex-basis: 50%;
17645 }
17646
17647 .flex-item-fixed-8-12 {
17648 flex-grow: 0;
17649 flex-shrink: 0;
17650 flex-basis: 66.6666%;
17651 }
17652
17653 .flex-item-fixed-9-12 {
17654 flex-grow: 0;
17655 flex-shrink: 0;
17656 flex-basis: 75%;
17657 }
17658
17659
17660 .flex-item-fixed-12-12 {
17661 flex-grow: 0;
17662 flex-shrink: 0;
17663 flex-basis: 100%;
17664 }
17665
17666 .flex-item-10-percent {
17667 flex-grow: 0;
17668 flex-shrink: 0;
17669 flex-basis: 10%;
17670 }
17671
17672 .flex-item-15-percent {
17673 flex-grow: 0;
17674 flex-shrink: 0;
17675 flex-basis: 15%;
17676 }
17677
17678 .flex-item-20-percent {
17679 flex-grow: 0;
17680 flex-shrink: 0;
17681 flex-basis: 20%;
17682 }
17683
17684 .flex-item-30-percent {
17685 flex-grow: 0;
17686 flex-shrink: 0;
17687 flex-basis: 30%;
17688 }
17689
17690 .flex-item-40-percent {
17691 flex-grow: 0;
17692 flex-shrink: 0;
17693 flex-basis: 40%;
17694 }
17695
17696 .flex-item-50-percent {
17697 flex-grow: 0;
17698 flex-shrink: 0;
17699 flex-basis: 50%;
17700 }
17701
17702 .flex-item-60-percent {
17703 flex-grow: 0;
17704 flex-shrink: 0;
17705 flex-basis: 60%;
17706 }
17707
17708 .flex-item-70-percent {
17709 flex-grow: 0;
17710 flex-shrink: 0;
17711 flex-basis: 70%;
17712 }
17713
17714 .flex-item-80-percent {
17715 flex-grow: 0;
17716 flex-shrink: 0;
17717 flex-basis: 80%;
17718 }
17719
17720 .well {
17721 min-height: 20px;
17722 padding: 19px;
17723 margin-bottom: 20px;
17724 background-color: #f5f5f5;
17725 border: 1px solid #e3e3e3;
17726 border-radius: 4px;
17727 box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
17728 }
17729
17730 .break-wrap {
17731 word-wrap: break-word;
17732 }
17733 </style>
17734 <a on-click="{{ goto }}" href="{{ url }}">{{ ref.name }}</a>
17735 </template>
17736 </polymer-element>
17737
17738
17739
17740 <observatory-application devtools="true"></observatory-application>
17741
17742 <script src="index_devtools.html_bootstrap.dart.js" async=""></script></body></h tml>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698