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

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

Issue 215213003: Rework the <field-view> page. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js" ></script> 1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js" ></script>
2 <script src="packages/custom_element/custom-elements.debug.js"></script> 2 <script src="packages/custom_element/custom-elements.debug.js"></script>
3 3
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss"> 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss">
6 6
7 <title>Dart VM Observatory</title> 7 <title>Dart VM Observatory</title>
8 <script type="text/javascript" src="https://www.google.com/jsapi"></script> 8 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
9 <script src="packages/browser/interop.js"></script> 9 <script src="packages/browser/interop.js"></script>
10 10
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 isBool(ref.serviceType) || 306 isBool(ref.serviceType) ||
307 isInt(ref.serviceType)) || 307 isInt(ref.serviceType)) ||
308 isDouble(ref.serviceType)) }}"> 308 isDouble(ref.serviceType)) }}">
309 <a href="{{ url }}">{{ ref['preview'] }}</a> 309 <a href="{{ url }}">{{ ref['preview'] }}</a>
310 </template> 310 </template>
311 311
312 <template if="{{ (isType(ref.serviceType)) }}"> 312 <template if="{{ (isType(ref.serviceType)) }}">
313 <a href="{{ url }}">{{ ref['user_name'] }}</a> 313 <a href="{{ url }}">{{ ref['user_name'] }}</a>
314 </template> 314 </template>
315 315
316 <template if="{{ isClosure(ref.serviceType) }}"> 316 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
317 ref['closureFunc'] != null}}">
317 <a href="{{ url }}"> 318 <a href="{{ url }}">
318 <!-- TODO(turnidge): Switch this to fully-qualified function --> 319 <!-- TODO(turnidge): Switch this to fully-qualified function -->
319 {{ ref['closureFunc']['user_name'] }} 320 {{ ref['closureFunc']['user_name'] }}
320 </a> 321 </a>
321 </template> 322 </template>
322 323
323 <template if="{{ isInstance(ref.serviceType) }}"> 324 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
325 ref['closureFunc'] == null}}">
324 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> 326 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a>
325 <curly-block callback="{{ expander() }}"> 327 <curly-block callback="{{ expander() }}">
326 <div class="memberList"> 328 <div class="memberList">
327 <template repeat="{{ field in ref['fields'] }}"> 329 <template repeat="{{ field in ref['fields'] }}">
328 <div class="memberItem"> 330 <div class="memberItem">
329 <div class="memberName"> 331 <div class="memberName">
330 {{ field['decl']['user_name'] }} 332 {{ field['decl']['user_name'] }}
331 </div> 333 </div>
332 <div class="memberValue"> 334 <div class="memberValue">
333 <instance-ref ref="{{ field['value'] }}"></instance-ref> 335 <instance-ref ref="{{ field['value'] }}"></instance-ref>
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 </template> 433 </template>
432 </td> 434 </td>
433 </tr> 435 </tr>
434 </tbody></table> 436 </tbody></table>
435 </template> 437 </template>
436 </template> 438 </template>
437 </polymer-element> 439 </polymer-element>
438 440
439 441
440 <polymer-element name="field-ref" extends="service-ref"> 442 <polymer-element name="field-ref" extends="service-ref">
441 <template> 443 <template>
442 <div> 444 <div>
443 <template if="{{ ref['final'] }}"> final </template> 445 <template if="{{ ref['static'] }}">static</template>
444 <template if="{{ ref['const'] }}"> const </template> 446 <template if="{{ ref['final'] }}">final</template>
445 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}"> 447 <template if="{{ ref['const'] }}">const</template>
446 var 448 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp;
449 !ref['final'] &amp;&amp; !ref['const']) }}">
450 var
451 </template>
452 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
453 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref>
454 </template>
455 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
456 </div>
447 </template> 457 </template>
448 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> 458
449 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> 459 </polymer-element>
450 </template>
451 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
452 </div>
453 </template> </polymer-element>
454 <polymer-element name="function-ref" extends="service-ref"> 460 <polymer-element name="function-ref" extends="service-ref">
455 <template><!-- These comments are here to allow newlines. 461 <template><!-- These comments are here to allow newlines.
456 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}" ><!-- 462 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}" ><!--
457 --><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><!-- 463 --><class-ref ref="{{ ref['owner'] }}"></class-ref>.</template><!--
458 --><template if="{{ qualified &amp;&amp; hasParent }}"><!-- 464 --><template if="{{ qualified &amp;&amp; hasParent }}"><!--
459 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> 465 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}">
460 </function-ref>.<!-- 466 </function-ref>.<!--
461 --></template><a href="{{ url }}">{{ name }}</a><!-- 467 --></template><a href="{{ url }}">{{ name }}</a><!--
462 --></template> 468 --></template>
463 469
464 </polymer-element> 470 </polymer-element>
465 <polymer-element name="library-ref" extends="service-ref"> 471 <polymer-element name="library-ref" extends="service-ref">
466 <template> 472 <template>
467 <a href="{{ url }}">{{ name }}</a> 473 <a href="{{ url }}">{{ name }}</a>
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 <p>{{ error.message }}</p> 751 <p>{{ error.message }}</p>
746 </div> 752 </div>
747 </div> 753 </div>
748 </div> 754 </div>
749 </div> 755 </div>
750 </template> 756 </template>
751 757
752 </polymer-element> 758 </polymer-element>
753 <polymer-element name="field-view" extends="observatory-element"> 759 <polymer-element name="field-view" extends="observatory-element">
754 <template> 760 <template>
761 <style>
762 .content {
763 padding-left: 10%;
764 font: 400 14px 'Montserrat', sans-serif;
765 }
766 h1 {
767 font: 400 18px 'Montserrat', sans-serif;
768 }
769 .memberList {
770 display: table;
771 }
772 .memberItem {
773 display: table-row;
774 }
775 .memberName, .memberValue {
776 display: table-cell;
777 vertical-align: top;
778 padding: 3px 0 3px 1em;
779 font: 400 14px 'Montserrat', sans-serif;
780 }
781 </style>
782
755 <nav-bar> 783 <nav-bar>
756 <top-nav-menu></top-nav-menu> 784 <top-nav-menu></top-nav-menu>
757 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> 785 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
758 <template if="{{ field['owner'].serviceType == 'Class' }}"> 786 <template if="{{ field['owner'].serviceType == 'Class' }}">
759 <!-- TODO(turnidge): Add library nav menu here. --> 787 <!-- TODO(turnidge): Add library nav menu here. -->
760 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> 788 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu>
761 </template> 789 </template>
762 <template if="{{ field['owner'].serviceType == 'Library' }}"> 790 <template if="{{ field['owner'].serviceType == 'Library' }}">
763 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> 791 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu>
764 </template> 792 </template>
765 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n av-menu> 793 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n av-menu>
766 <nav-refresh callback="{{ refresh }}"></nav-refresh> 794 <nav-refresh callback="{{ refresh }}"></nav-refresh>
767 </nav-bar> 795 </nav-bar>
768 796
769 <div class="row"> 797 <div class="content">
770 <div class="col-md-8 col-md-offset-2"> 798 <h1>
771 <div class="panel panel-warning"> 799 <template if="{{ field['static'] }}">static</template>
772 <div class="panel-heading"> 800 <template if="{{ field['final'] }}">final</template>
773 <template if="{{ field['static'] }}">static</template> 801 <template if="{{ field['const'] }}">const</template>
774 <template if="{{ field['final'] }}">final</template> 802 <template if="{{ (field['declared_type']['name'] == 'dynamic' &amp;&amp;
775 <template if="{{ field['const'] }}">const</template> 803 !field['final'] &amp;&amp; !field['const']) }}">
776 {{ field['user_name'] }} ({{ field['name'] }}) 804 var
777 <class-ref ref="{{ field['owner'] }}"></class-ref> 805 </template>
806 <template if="{{ (field['declared_type']['user_name'] != 'dynamic') }}">
807 {{ field['declared_type']['user_name'] }}
808 </template>
809 {{ field['user_name'] }}
810 </h1>
811 <div class="memberList">
812 <div class="memberItem">
813 <div class="memberName">owner</div>
814 <div class="memberValue">
815 <template if="{{ field['owner'].serviceType == 'Class' }}">
816 <class-ref ref="{{ field['owner'] }}"></class-ref>
817 </template>
818 <template if="{{ field['owner'].serviceType != 'Class' }}">
819 <library-ref ref="{{ field['owner'] }}"></library-ref>
820 </template>
821 </div>
778 </div> 822 </div>
779 <div class="panel-body"> 823 <div class="memberItem">
780 <template if="{{ field['guard_class'] == 'dynamic'}}"> 824 <div class="memberName">script</div>
781 <div class="alert alert-danger"> 825 <div class="memberValue">
782 Field has been assigned multiple types. If a field is only ever 826 <script-ref ref="{{ field['script'] }}"></script-ref>
783 assigned a single type, performance may improve. 827 </div>
828 </div>
829 <template if="{{ !field['static'] }}">
830 <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.">
831 <div class="memberName">observed types</div>
832 <div class="memberValue">
833 <template if="{{ field['guard_class'] == 'dynamic' }}">
834 various
835 </template>
836 <template if="{{ field['guard_class'] == 'unknown' }}">
837 none
838 </template>
839 <template if="{{ field['guard_class'] != 'unknown' &amp;&amp;
840 field['guard_class'] != 'dynamic' }}">
841 <class-ref ref="{{ field['guard_class'] }}"></class-ref>
842 <template if="{{ field['guard_nullable'] }}">
843 — null observed
844 </template>
845 <template if="{{ !field['guard_nullable'] }}">
846 — null not observed
847 </template>
848 </template>
849 </div>
784 </div> 850 </div>
785 </template> 851 </template>
786 <template if="{{ (field['guard_class'] != 'dynamic') &amp;&amp; (field[' guard_class'] != 'unknown') }}"> 852 <template if="{{ field['value'] != null }}">
787 <div class="alert alert-success">Field has monomorphic type</div> 853 <div class="memberItem">
788 <template if="{{ (field['guard_class'] != 'dynamic') &amp;&amp; 854 <div class="memberName">static value</div>
789 field['guard_nullable'] }}"> 855 <div class="memberValue">
790 <div class="alert alert-info"> 856 <instance-ref ref="{{ field['value'] }}"></instance-ref>
791 Field has been assigned null. If a field is never assigned null,
792 performance may improve.
793 </div> 857 </div>
794 </template> 858 </div>
795 <blockquote>
796 <class-ref ref="{{ field['guard_class'] }}"></class-ref>
797 </blockquote>
798 </template> 859 </template>
799 </div>
800 </div> 860 </div>
801 </div> 861 </div>
802 </div>
803 </template> 862 </template>
804 863
805 </polymer-element> 864 </polymer-element>
806 <polymer-element name="function-view" extends="observatory-element"> 865 <polymer-element name="function-view" extends="observatory-element">
807 <template> 866 <template>
808 <style> 867 <style>
809 .content { 868 .content {
810 padding-left: 10%; 869 padding-left: 10%;
811 font: 400 14px 'Montserrat', sans-serif; 870 font: 400 14px 'Montserrat', sans-serif;
812 } 871 }
(...skipping 10 matching lines...) Expand all
823 display: table-cell; 882 display: table-cell;
824 vertical-align: top; 883 vertical-align: top;
825 padding: 3px 0 3px 1em; 884 padding: 3px 0 3px 1em;
826 font: 400 14px 'Montserrat', sans-serif; 885 font: 400 14px 'Montserrat', sans-serif;
827 } 886 }
828 </style> 887 </style>
829 888
830 <nav-bar> 889 <nav-bar>
831 <top-nav-menu></top-nav-menu> 890 <top-nav-menu></top-nav-menu>
832 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> 891 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu>
833 <template if="{{ function['owner']['type'] == '@Class' }}"> 892 <template if="{{ function['owner'].serviceType == 'Class' }}">
834 <!-- TODO(turnidge): Add library nav menu here. --> 893 <!-- TODO(turnidge): Add library nav menu here. -->
835 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> 894 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu>
836 </template> 895 </template>
837 <template if="{{ function['owner']['type'] == '@Library' }}"> 896 <template if="{{ function['owner'].serviceType == 'Library' }}">
838 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> 897 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu>
839 </template> 898 </template>
840 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me nu> 899 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me nu>
841 <nav-refresh callback="{{ refresh }}"></nav-refresh> 900 <nav-refresh callback="{{ refresh }}"></nav-refresh>
842 </nav-bar> 901 </nav-bar>
843 902
844 <div class="content"> 903 <div class="content">
845 <h1>function {{ qualifiedName }}</h1> 904 <h1>function {{ qualifiedName }}</h1>
846 905
847 <div class="memberList"> 906 <div class="memberList">
848 <div class="memberItem"> 907 <div class="memberItem">
849 <div class="memberName">kind</div> 908 <div class="memberName">kind</div>
850 <div class="memberValue"> 909 <div class="memberValue">
851 <template if="{{ function['is_static'] }}">static</template> 910 <template if="{{ function['is_static'] }}">static</template>
852 <template if="{{ function['is_const'] }}">const</template> 911 <template if="{{ function['is_const'] }}">const</template>
853 {{ kind }} 912 {{ kind }}
854 </div> 913 </div>
855 </div> 914 </div>
856 <template if="{{ function['parent'] != null }}"> 915 <template if="{{ function['parent'] != null }}">
857 <div class="memberItem"> 916 <div class="memberItem">
858 <div class="memberName">parent function</div> 917 <div class="memberName">parent function</div>
859 <div class="memberValue"> 918 <div class="memberValue">
860 <function-ref ref="{{ function['parent'] }}"></function-ref> 919 <function-ref ref="{{ function['parent'] }}"></function-ref>
861 </div> 920 </div>
862 </div> 921 </div>
863 </template> 922 </template>
864 <template if="{{ function['parent'] == null &amp;&amp;
865 function['class'] != null }}">
866 <div class="memberItem">
867 <div class="memberName">parent class</div>
868 <div class="memberValue">
869 <class-ref ref="{{ function['class'] }}"></class-ref>
870 </div>
871 </div>
872 </template>
873 <div class="memberItem"> 923 <div class="memberItem">
924 <div class="memberName">owner</div>
925 <div class="memberValue">
926 <template if="{{ function['owner'].serviceType == 'Class' }}">
927 <class-ref ref="{{ function['owner'] }}"></class-ref>
928 </template>
929 <template if="{{ function['owner'].serviceType != 'Class' }}">
930 <library-ref ref="{{ function['owner'] }}"></library-ref>
931 </template>
932 </div>
933 </div>
934 <div class="memberItem">
874 <div class="memberName">script</div> 935 <div class="memberName">script</div>
875 <div class="memberValue"> 936 <div class="memberValue">
876 <script-ref ref="{{ function['script'] }}"> 937 <script-ref ref="{{ function['script'] }}"></script-ref>
877 </script-ref>
878 </div> 938 </div>
879 </div> 939 </div>
880 940
881 <div class="memberItem">&nbsp;</div> 941 <div class="memberItem">&nbsp;</div>
882 942
883 <template if="{{ function['code'] != null }}"> 943 <template if="{{ function['code'] != null }}">
884 <div class="memberItem"> 944 <div class="memberItem">
885 <div class="memberName">optimized code</div> 945 <div class="memberName">optimized code</div>
886 <div class="memberValue"> 946 <div class="memberValue">
887 <code-ref ref="{{ function['code'] }}"></code-ref> 947 <code-ref ref="{{ function['code'] }}"></code-ref>
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 </div> 1363 </div>
1304 <template if="{{ instance['type_class'] != null }}"> 1364 <template if="{{ instance['type_class'] != null }}">
1305 <div class="memberItem"> 1365 <div class="memberItem">
1306 <div class="memberName">type class</div> 1366 <div class="memberName">type class</div>
1307 <div class="memberValue"> 1367 <div class="memberValue">
1308 <class-ref ref="{{ instance['type_class'] }}"> 1368 <class-ref ref="{{ instance['type_class'] }}">
1309 </class-ref> 1369 </class-ref>
1310 </div> 1370 </div>
1311 </div> 1371 </div>
1312 </template> 1372 </template>
1373 <template if="{{ instance['closureFunc'] != null }}">
1374 <div class="memberItem">
1375 <div class="memberName">closure function</div>
1376 <div class="memberValue">
1377 <function-ref ref="{{ instance['closureFunc'] }}">
1378 </function-ref>
1379 </div>
1380 </div>
1381 </template>
1313 </div> 1382 </div>
1314 </div> 1383 </div>
1315 1384
1316 <hr> 1385 <hr>
1317 1386
1318 <div class="content"> 1387 <div class="content">
1319 <template if="{{ instance['fields'].isNotEmpty }}"> 1388 <template if="{{ instance['fields'].isNotEmpty }}">
1320 fields ({{ instance['fields'].length }}) 1389 fields ({{ instance['fields'].length }})
1321 <curly-block> 1390 <curly-block>
1322 <div class="memberList"> 1391 <div class="memberList">
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
2014 <template> 2083 <template>
2015 <a href="{{ url }}">{{ ref.name }}</a> 2084 <a href="{{ url }}">{{ ref.name }}</a>
2016 </template> 2085 </template>
2017 2086
2018 </polymer-element> 2087 </polymer-element>
2019 2088
2020 2089
2021 <observatory-application></observatory-application> 2090 <observatory-application></observatory-application>
2022 2091
2023 </body></html> 2092 </body></html>
OLDNEW
« no previous file with comments | « runtime/bin/resources_sources.gypi ('k') | runtime/bin/vmservice/client/deployed/web/index.html_bootstrap.dart.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698