| OLD | NEW |
| (Empty) |
| 1 <link rel="import" href="../../../../packages/polymer/polymer.html"> | |
| 2 <link rel="import" href="class_ref.html"> | |
| 3 <link rel="import" href="error_view.html"> | |
| 4 <link rel="import" href="eval_box.html"> | |
| 5 <link rel="import" href="eval_link.html"> | |
| 6 <link rel="import" href="field_ref.html"> | |
| 7 <link rel="import" href="function_ref.html"> | |
| 8 <link rel="import" href="instance_ref.html"> | |
| 9 <link rel="import" href="observatory_element.html"> | |
| 10 <link rel="import" href="nav_bar.html"> | |
| 11 | |
| 12 <polymer-element name="instance-view" extends="observatory-element"> | |
| 13 <template> | |
| 14 <link rel="stylesheet" href="css/shared.css"> | |
| 15 <nav-bar> | |
| 16 <top-nav-menu></top-nav-menu> | |
| 17 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu> | |
| 18 <!-- TODO(turnidge): Add library nav menu here. --> | |
| 19 <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu> | |
| 20 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu> | |
| 21 <nav-refresh callback="{{ refresh }}"></nav-refresh> | |
| 22 <nav-control></nav-control> | |
| 23 </nav-bar> | |
| 24 | |
| 25 <template if="{{ instance['error'] != null }}"> | |
| 26 <error-view error_obj="{{ instance['error'] }}"></error-view> | |
| 27 </template> | |
| 28 | |
| 29 <template if="{{ instance['error'] == null }}"> | |
| 30 <div class="content"> | |
| 31 <!-- TODO(turnidge): Handle null instances. --> | |
| 32 <template if="{{ isType(instance.serviceType) }}"> | |
| 33 <h1>type {{ instance['user_name'] }}</h1> | |
| 34 </template> | |
| 35 <template if="{{ !isType(instance.serviceType) }}"> | |
| 36 <h1>instance of {{ instance['class']['user_name'] }}</h1> | |
| 37 </template> | |
| 38 <div class="memberList"> | |
| 39 <div class="memberItem"> | |
| 40 <div class="memberName">class</div> | |
| 41 <div class="memberValue"> | |
| 42 <class-ref ref="{{ instance['class'] }}"> | |
| 43 </class-ref> | |
| 44 </div> | |
| 45 </div> | |
| 46 <template if="{{ instance['valueAsString'] != null }}"> | |
| 47 <div class="memberItem"> | |
| 48 <div class="memberName">value</div> | |
| 49 <div class="memberValue">{{ instance['valueAsString'] }}</div> | |
| 50 </div> | |
| 51 </template> | |
| 52 <div class="memberItem"> | |
| 53 <div class="memberName">size</div> | |
| 54 <div class="memberValue">{{ instance['size'] | formatSize }}</div> | |
| 55 </div> | |
| 56 <div class="memberItem"> | |
| 57 <div class="memberName">retained size</div> | |
| 58 <div class="memberValue"> | |
| 59 <template if="{{ retainedBytes == null }}"> | |
| 60 <eval-link callback="{{ retainedSize }}" | |
| 61 label="[calculate]"> | |
| 62 </eval-link> | |
| 63 </template> | |
| 64 <template if="{{ retainedBytes != null }}"> | |
| 65 {{ retainedBytes | formatSize }} | |
| 66 </template> | |
| 67 </div> | |
| 68 </div> | |
| 69 <div class="memberItem"> | |
| 70 <div class="memberName">retaining path</div> | |
| 71 <div class="memberValue"> | |
| 72 <template if="{{ path == null }}"> | |
| 73 <eval-link callback="{{ retainingPath }}" | |
| 74 label="[find]" | |
| 75 expr="10"> | |
| 76 </eval-link> | |
| 77 </template> | |
| 78 <template if="{{ path != null }}"> | |
| 79 <template repeat="{{ element in path['elements'] }}"> | |
| 80 <div class="memberItem"> | |
| 81 <div class="memberName">[{{ element['index']}}]</div> | |
| 82 <div class="memberValue"> | |
| 83 <instance-ref ref="{{ element['value'] }}"></instance-ref> | |
| 84 <template if="{{ element['parentField'] != null }}"> | |
| 85 in <field-ref ref="{{ element['parentField'] }}"></field-r
ef> | |
| 86 </template> | |
| 87 <template if="{{ element['parentListIndex'] != null }}"> | |
| 88 at list index {{ element['parentListIndex'] }} of | |
| 89 </template> | |
| 90 </div> | |
| 91 </div> | |
| 92 </template> | |
| 93 <template if="{{ path['length'] > path['elements'].length }}"> | |
| 94 showing {{ path['elements'].length }} of {{ path['length'] }} | |
| 95 <eval-link | |
| 96 callback="{{ retainingPath }}" | |
| 97 label="[find more]" | |
| 98 expr="{{ path['elements'].length * 2 }}"> | |
| 99 </eval-link> | |
| 100 </template> | |
| 101 </template> | |
| 102 </div> | |
| 103 </div> | |
| 104 <template if="{{ instance['type_class'] != null }}"> | |
| 105 <div class="memberItem"> | |
| 106 <div class="memberName">type class</div> | |
| 107 <div class="memberValue"> | |
| 108 <class-ref ref="{{ instance['type_class'] }}"> | |
| 109 </class-ref> | |
| 110 </div> | |
| 111 </div> | |
| 112 </template> | |
| 113 <template if="{{ instance['closureFunc'] != null }}"> | |
| 114 <div class="memberItem"> | |
| 115 <div class="memberName">closure function</div> | |
| 116 <div class="memberValue"> | |
| 117 <function-ref ref="{{ instance['closureFunc'] }}"> | |
| 118 </function-ref> | |
| 119 </div> | |
| 120 </div> | |
| 121 </template> | |
| 122 | |
| 123 <div class="memberItem"> </div> | |
| 124 | |
| 125 <div class="memberItem"> | |
| 126 <div class="memberName">toString()</div> | |
| 127 <div class="memberValue"> | |
| 128 <eval-link callback="{{ eval }}" expr="toString()"></eval-link> | |
| 129 </div> | |
| 130 </div> | |
| 131 </div> | |
| 132 </div> | |
| 133 | |
| 134 <hr> | |
| 135 | |
| 136 <div class="content"> | |
| 137 <template if="{{ instance['fields'].isNotEmpty }}"> | |
| 138 fields ({{ instance['fields'].length }}) | |
| 139 <curly-block expand="{{ instance['fields'].length <= 8 }}"> | |
| 140 <div class="memberList"> | |
| 141 <template repeat="{{ field in instance['fields'] }}"> | |
| 142 <div class="memberItem"> | |
| 143 <div class="memberName"> | |
| 144 <field-ref ref="{{ field['decl'] }}"></field-ref> | |
| 145 </div> | |
| 146 <div class="memberValue"> | |
| 147 <instance-ref ref="{{ field['value'] }}"></instance-ref> | |
| 148 </div> | |
| 149 </div> | |
| 150 </template> | |
| 151 </div> | |
| 152 </curly-block><br><br> | |
| 153 </template> | |
| 154 | |
| 155 <template if="{{ instance['nativeFields'].isNotEmpty }}"> | |
| 156 native fields ({{ instance['nativeFields'].length }}) | |
| 157 <curly-block expand="{{ instance['nativeFields'].length <= 8 }}"> | |
| 158 <div class="memberList"> | |
| 159 <template repeat="{{ field in instance['nativeFields'] }}"> | |
| 160 <div class="memberItem"> | |
| 161 <div class="memberName">[{{ field['index']}}]</div> | |
| 162 <div class="memberValue">[{{ field['value']}}]</div> | |
| 163 </div> | |
| 164 </template> | |
| 165 </div> | |
| 166 </curly-block><br><br> | |
| 167 </template> | |
| 168 | |
| 169 <template if="{{ instance['elements'].isNotEmpty }}"> | |
| 170 elements ({{ instance['elements'].length }}) | |
| 171 <curly-block expand="{{ instance['elements'].length <= 8 }}"> | |
| 172 <div class="memberList"> | |
| 173 <template repeat="{{ element in instance['elements'] }}"> | |
| 174 <div class="memberItem"> | |
| 175 <div class="memberName">[{{ element['index']}}]</div> | |
| 176 <div class="memberValue"> | |
| 177 <instance-ref ref="{{ element['value'] }}"> | |
| 178 </instance-ref> | |
| 179 </div> | |
| 180 </div> | |
| 181 </template> | |
| 182 </div> | |
| 183 </curly-block><br><br> | |
| 184 </template> | |
| 185 </div> | |
| 186 | |
| 187 <hr> | |
| 188 | |
| 189 <div class="content"> | |
| 190 <eval-box callback="{{ eval }}"></eval-box> | |
| 191 </div> | |
| 192 <br><br><br><br> | |
| 193 <br><br><br><br> | |
| 194 | |
| 195 </template> | |
| 196 </template> | |
| 197 </polymer-element> | |
| 198 | |
| 199 <script type="application/dart" src="instance_view.dart"></script> | |
| OLD | NEW |