| <head> |
| <link rel="import" href="curly_block.html"> |
| <link rel="import" href="eval_box.html"> |
| <link rel="import" href="eval_link.html"> |
| <link rel="import" href="field_ref.html"> |
| <link rel="import" href="function_ref.html"> |
| <link rel="import" href="instance_ref.html"> |
| <link rel="import" href="library_ref.html"> |
| <link rel="import" href="nav_bar.html"> |
| <link rel="import" href="observatory_element.html"> |
| <link rel="import" href="script_ref.html"> |
| </head> |
| <polymer-element name="class-view" extends="observatory-element"> |
| <template> |
| <link rel="stylesheet" href="css/shared.css"> |
| <nav-bar> |
| <top-nav-menu></top-nav-menu> |
| <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu> |
| <library-nav-menu library="{{ cls.library }}"></library-nav-menu> |
| <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu> |
| <nav-refresh callback="{{ refresh }}"></nav-refresh> |
| <nav-control></nav-control> |
| </nav-bar> |
| |
| <div class="content"> |
| <h1> |
| <template if="{{ cls.isAbstract }}"> |
| abstract |
| </template> |
| <template if="{{ cls.isPatch }}"> |
| patch |
| </template> |
| class {{ cls.name }} |
| </h1> |
| <div class="memberList"> |
| <div class="memberItem"> |
| <div class="memberName">library</div> |
| <div class="memberValue"> |
| <library-ref ref="{{ cls.library }}"></library-ref> |
| </div> |
| </div> |
| <div class="memberItem"> |
| <div class="memberName">script</div> |
| <div class="memberValue"> |
| <script-ref ref="{{ cls.script }}" pos="{{ cls.tokenPos }}"> |
| </script-ref> |
| </div> |
| </div> |
| |
| <div class="memberItem"> </div> |
| |
| <template if="{{ cls.superClass != null }}"> |
| <div class="memberItem"> |
| <div class="memberName">extends</div> |
| <div class="memberValue"> |
| <class-ref ref="{{ cls.superClass }}"></class-ref> |
| </div> |
| </div> |
| </template> |
| <template if="{{ cls.subClasses.length > 0 }}"> |
| <div class="memberItem"> |
| <div class="memberName">extended by</div> |
| <div class="memberValue"> |
| <template repeat="{{ subclass in cls.subClasses }}"> |
| <class-ref ref="{{ subclass }}"></class-ref> |
| </template> |
| </div> |
| </div> |
| </template> |
| |
| <div class="memberItem"> </div> |
| |
| <template if="{{ cls.interfaces.length > 0 }}"> |
| <div class="memberItem"> |
| <div class="memberName">implements</div> |
| <div class="memberValue"> |
| <template repeat="{{ interface in cls.interfaces }}"> |
| <class-ref ref="{{ interface }}"></class-ref> |
| </template> |
| </div> |
| </div> |
| </template> |
| <template if="{{ cls.name != cls.vmName }}"> |
| <div class="memberItem"> |
| <div class="memberName">vm name</div> |
| <div class="memberValue">{{ cls.vmName }}</div> |
| </div> |
| </template> |
| <div class="memberItem"> |
| <div class="memberName">retained size<br>(all instances)</div> |
| <div class="memberValue"> |
| <eval-link callback="{{ retainedSize }}"></eval-link> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <template if="{{ cls.error != null }}"> |
| <!-- TODO(turnidge): Don't use instance-ref for error display here --> |
| <instance-ref ref="{{ cls.error }}"></instance-ref> |
| </template> |
| |
| <hr> |
| |
| <div class="content"> |
| <template if="{{ cls.fields.isNotEmpty }}"> |
| fields ({{ cls['fields'].length }}) |
| <curly-block expand="{{ cls.fields.length <= 8 }}"> |
| <div class="memberList"> |
| <template repeat="{{ field in cls.fields }}"> |
| <div class="memberItem"> |
| <div class="memberName"> |
| <field-ref ref="{{ field }}"></field-ref> |
| </div> |
| <div class="memberValue"> |
| <template if="{{ field['value'] != null }}"> |
| <instance-ref ref="{{ field['value'] }}"></instance-ref> |
| </template> |
| </div> |
| </div> |
| </template> |
| </div> |
| </curly-block><br><br> |
| </template> |
| |
| <template if="{{ cls.functions.isNotEmpty }}"> |
| functions ({{ cls.functions.length }}) |
| <curly-block expand="{{ cls.functions.length <= 8 }}"> |
| <div class="memberList"> |
| <template repeat="{{ function in cls.functions }}"> |
| <div class="memberItem"> |
| <div class="memberValue"> |
| <function-ref ref="{{ function }}" qualified="{{ false }}"> |
| </function-ref> |
| </div> |
| </div> |
| </template> |
| </div> |
| </curly-block><br><br> |
| </template> |
| </div> |
| |
| <hr> |
| |
| <div class="content"> |
| <eval-box callback="{{ eval }}"></eval-box> |
| </div> |
| <br><br><br><br> |
| <br><br><br><br> |
| </template> |
| <script type="application/dart" src="class_view.dart"></script> |
| </polymer-element> |