OLD | NEW |
1 <link rel="import" href="../../../../packages/polymer/polymer.html"> | 1 <link rel="import" href="../../../../packages/polymer/polymer.html"> |
2 <link rel="import" href="class_ref.html"> | 2 <link rel="import" href="class_ref.html"> |
3 <link rel="import" href="error_view.html"> | 3 <link rel="import" href="error_view.html"> |
4 <link rel="import" href="eval_box.html"> | 4 <link rel="import" href="eval_box.html"> |
5 <link rel="import" href="eval_link.html"> | 5 <link rel="import" href="eval_link.html"> |
6 <link rel="import" href="field_ref.html"> | 6 <link rel="import" href="field_ref.html"> |
7 <link rel="import" href="function_ref.html"> | 7 <link rel="import" href="function_ref.html"> |
8 <link rel="import" href="inbound_reference.html"> | 8 <link rel="import" href="inbound_reference.html"> |
9 <link rel="import" href="instance_ref.html"> | 9 <link rel="import" href="instance_ref.html"> |
10 <link rel="import" href="observatory_element.html"> | 10 <link rel="import" href="observatory_element.html"> |
11 <link rel="import" href="nav_bar.html"> | 11 <link rel="import" href="nav_bar.html"> |
12 | 12 |
13 <polymer-element name="instance-view" extends="observatory-element"> | 13 <polymer-element name="instance-view" extends="observatory-element"> |
14 <template> | 14 <template> |
15 <link rel="stylesheet" href="css/shared.css"> | 15 <link rel="stylesheet" href="css/shared.css"> |
16 <nav-bar> | 16 <nav-bar> |
17 <top-nav-menu></top-nav-menu> | 17 <top-nav-menu></top-nav-menu> |
18 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu> | 18 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu> |
19 <!-- TODO(turnidge): Add library nav menu here. --> | 19 <!-- TODO(turnidge): Add library nav menu here. --> |
20 <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu> | 20 <class-nav-menu cls="{{ instance.clazz }}"></class-nav-menu> |
21 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu> | 21 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu> |
22 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 22 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
23 <nav-control></nav-control> | 23 <nav-control></nav-control> |
24 </nav-bar> | 24 </nav-bar> |
25 | 25 |
26 <template if="{{ instance['error'] != null }}"> | 26 <template if="{{ instance.isError }}"> |
27 <error-view error_obj="{{ instance['error'] }}"></error-view> | 27 <error-view error_obj="{{ instance['error'] }}"></error-view> |
28 </template> | 28 </template> |
29 | 29 |
30 <template if="{{ instance['error'] == null }}"> | 30 <template if="{{ !instance.isError }}"> |
31 <div class="content"> | 31 <div class="content"> |
32 <!-- TODO(turnidge): Handle null instances. --> | 32 <template if="{{ instance.isType }}"> |
33 <template if="{{ isType(instance) }}"> | |
34 <h1>type {{ instance.name }}</h1> | 33 <h1>type {{ instance.name }}</h1> |
35 </template> | 34 </template> |
36 <template if="{{ !isType(instance) }}"> | 35 <template if="{{ !instance.isType }}"> |
37 <h1>instance of {{ instance['class'].name }}</h1> | 36 <h1>instance of {{ instance.clazz.name }}</h1> |
38 </template> | 37 </template> |
39 <div class="memberList"> | 38 <div class="memberList"> |
40 <div class="memberItem"> | 39 <div class="memberItem"> |
41 <div class="memberName">class</div> | 40 <div class="memberName">class</div> |
42 <div class="memberValue"> | 41 <div class="memberValue"> |
43 <class-ref ref="{{ instance['class'] }}"> | 42 <class-ref ref="{{ instance.clazz }}"> |
44 </class-ref> | 43 </class-ref> |
45 </div> | 44 </div> |
46 </div> | 45 </div> |
47 <template if="{{ instance['valueAsString'] != null }}"> | 46 <template if="{{ instance.valueAsString != null }}"> |
48 <div class="memberItem"> | 47 <div class="memberItem"> |
49 <div class="memberName">value</div> | 48 <div class="memberName">value</div> |
50 <div class="memberValue">{{ instance['valueAsString'] }}</div> | 49 <div class="memberValue">{{ instance.valueAsString }}</div> |
51 </div> | 50 </div> |
52 </template> | 51 </template> |
53 <div class="memberItem"> | 52 <div class="memberItem" title="Space for this object in memory"> |
54 <div class="memberName">size</div> | 53 <div class="memberName">size</div> |
55 <div class="memberValue">{{ instance['size'] | formatSize }}</div> | 54 <div class="memberValue">{{ instance.size | formatSize }}</div> |
56 </div> | 55 </div> |
57 <div class="memberItem"> | 56 <div class="memberItem" title="Space that would be reclaimed if refere
nces to this object were replaced with null"> |
58 <div class="memberName">retained size</div> | 57 <div class="memberName">retained size</div> |
59 <div class="memberValue"> | 58 <div class="memberValue"> |
60 <template if="{{ retainedBytes == null }}"> | 59 <template if="{{ retainedBytes == null }}"> |
61 <eval-link callback="{{ retainedSize }}" | 60 <eval-link callback="{{ retainedSize }}" |
62 label="[calculate]"> | 61 label="[calculate]"> |
63 </eval-link> | 62 </eval-link> |
64 </template> | 63 </template> |
65 <template if="{{ retainedBytes != null }}"> | 64 <template if="{{ retainedBytes != null }}"> |
66 {{ retainedBytes | formatSize }} | 65 {{ retainedBytes | formatSize }} |
67 </template> | 66 </template> |
(...skipping 27 matching lines...) Expand all Loading... |
95 showing {{ path['elements'].length }} of {{ path['length'] }} | 94 showing {{ path['elements'].length }} of {{ path['length'] }} |
96 <eval-link | 95 <eval-link |
97 callback="{{ retainingPath }}" | 96 callback="{{ retainingPath }}" |
98 label="[find more]" | 97 label="[find more]" |
99 expr="{{ path['elements'].length * 2 }}"> | 98 expr="{{ path['elements'].length * 2 }}"> |
100 </eval-link> | 99 </eval-link> |
101 </template> | 100 </template> |
102 </template> | 101 </template> |
103 </div> | 102 </div> |
104 </div> | 103 </div> |
105 <div class="memberItem"> | 104 <div class="memberItem" title="Objects which directly reference this o
bject"> |
106 <div class="memberName">inbound references</div> | 105 <div class="memberName">inbound references</div> |
107 <div class="memberValue"> | 106 <div class="memberValue"> |
108 <template if="{{ inboundReferences == null }}"> | 107 <template if="{{ inboundReferences == null }}"> |
109 <eval-link callback="{{ fetchInboundReferences }}" | 108 <eval-link callback="{{ fetchInboundReferences }}" |
110 label="[find]" | 109 label="[find]" |
111 expr="100"> | 110 expr="100"> |
112 </eval-link> | 111 </eval-link> |
113 </template> | 112 </template> |
114 <template if="{{ inboundReferences != null }}"> | 113 <template if="{{ inboundReferences != null }}"> |
115 <template repeat="{{ reference in inboundReferences['references'
] }}"> | 114 <template repeat="{{ reference in inboundReferences['references'
] }}"> |
116 <inbound-reference ref="{{ reference }}"></inbound-reference> | 115 <inbound-reference ref="{{ reference }}"></inbound-reference> |
117 </template> | 116 </template> |
118 </template> | 117 </template> |
119 </div> | 118 </div> |
120 </div> | 119 </div> |
121 <template if="{{ instance['type_class'] != null }}"> | 120 <template if="{{ instance.typeClass != null }}"> |
122 <div class="memberItem"> | 121 <div class="memberItem"> |
123 <div class="memberName">type class</div> | 122 <div class="memberName">type class</div> |
124 <div class="memberValue"> | 123 <div class="memberValue"> |
125 <class-ref ref="{{ instance['type_class'] }}"> | 124 <class-ref ref="{{ instance.typeClass }}"> |
126 </class-ref> | 125 </class-ref> |
127 </div> | 126 </div> |
128 </div> | 127 </div> |
129 </template> | 128 </template> |
130 <template if="{{ instance['closureFunc'] != null }}"> | 129 <template if="{{ instance.isClosure }}"> |
131 <div class="memberItem"> | 130 <div class="memberItem"> |
132 <div class="memberName">closure function</div> | 131 <div class="memberName">closure function</div> |
133 <div class="memberValue"> | 132 <div class="memberValue"> |
134 <function-ref ref="{{ instance['closureFunc'] }}"> | 133 <function-ref ref="{{ instance.closureFunc }}"> |
135 </function-ref> | 134 </function-ref> |
136 </div> | 135 </div> |
137 </div> | 136 </div> |
138 </template> | 137 </template> |
139 | 138 |
140 <div class="memberItem"> </div> | 139 <div class="memberItem"> </div> |
141 | 140 |
142 <div class="memberItem"> | 141 <div class="memberItem"> |
143 <div class="memberName">toString()</div> | 142 <div class="memberName">toString()</div> |
144 <div class="memberValue"> | 143 <div class="memberValue"> |
145 <eval-link callback="{{ eval }}" expr="toString()"></eval-link> | 144 <eval-link callback="{{ eval }}" expr="toString()"></eval-link> |
146 </div> | 145 </div> |
147 </div> | 146 </div> |
148 </div> | 147 </div> |
149 </div> | 148 </div> |
150 | 149 |
151 <hr> | 150 <hr> |
152 | 151 |
153 <div class="content"> | 152 <div class="content"> |
154 <template if="{{ instance['fields'].isNotEmpty }}"> | 153 <template if="{{ instance.fields.isNotEmpty }}"> |
155 fields ({{ instance['fields'].length }}) | 154 fields ({{ instance.fields.length }}) |
156 <curly-block expand="{{ instance['fields'].length <= 8 }}"> | 155 <curly-block expand="{{ instance.fields.length <= 8 }}"> |
157 <div class="memberList"> | 156 <div class="memberList"> |
158 <template repeat="{{ field in instance['fields'] }}"> | 157 <template repeat="{{ field in instance.fields }}"> |
159 <div class="memberItem"> | 158 <div class="memberItem"> |
160 <div class="memberName"> | 159 <div class="memberName"> |
161 <field-ref ref="{{ field['decl'] }}"></field-ref> | 160 <field-ref ref="{{ field['decl'] }}"></field-ref> |
162 </div> | 161 </div> |
163 <div class="memberValue"> | 162 <div class="memberValue"> |
164 <instance-ref ref="{{ field['value'] }}"></instance-ref> | 163 <any-service-ref ref="{{ field['value'] }}"></any-service-re
f> |
165 </div> | 164 </div> |
166 </div> | 165 </div> |
167 </template> | 166 </template> |
168 </div> | 167 </div> |
169 </curly-block><br><br> | 168 </curly-block><br><br> |
170 </template> | 169 </template> |
171 | 170 |
172 <template if="{{ instance['nativeFields'].isNotEmpty }}"> | 171 <template if="{{ instance.nativeFields.isNotEmpty }}"> |
173 native fields ({{ instance['nativeFields'].length }}) | 172 native fields ({{ instance.nativeFields.length }}) |
174 <curly-block expand="{{ instance['nativeFields'].length <= 8 }}"> | 173 <curly-block expand="{{ instance.nativeFields.length <= 8 }}"> |
175 <div class="memberList"> | 174 <div class="memberList"> |
176 <template repeat="{{ field in instance['nativeFields'] }}"> | 175 <template repeat="{{ field in instance.nativeFields }}"> |
177 <div class="memberItem"> | 176 <div class="memberItem"> |
178 <div class="memberName">[{{ field['index']}}]</div> | 177 <div class="memberName">[{{ field['index']}}]</div> |
179 <div class="memberValue">[{{ field['value']}}]</div> | 178 <div class="memberValue">[{{ field['value']}}]</div> |
180 </div> | 179 </div> |
181 </template> | 180 </template> |
182 </div> | 181 </div> |
183 </curly-block><br><br> | 182 </curly-block><br><br> |
184 </template> | 183 </template> |
185 | 184 |
186 <template if="{{ instance['elements'].isNotEmpty }}"> | 185 <template if="{{ instance.elements.isNotEmpty }}"> |
187 elements ({{ instance['elements'].length }}) | 186 elements ({{ instance.elements.length }}) |
188 <curly-block expand="{{ instance['elements'].length <= 8 }}"> | 187 <curly-block expand="{{ instance.elements.length <= 8 }}"> |
189 <div class="memberList"> | 188 <div class="memberList"> |
190 <template repeat="{{ element in instance['elements'] }}"> | 189 <template repeat="{{ element in instance.elements }}"> |
191 <div class="memberItem"> | 190 <div class="memberItem"> |
192 <div class="memberName">[{{ element['index']}}]</div> | 191 <div class="memberName">[{{ element['index']}}]</div> |
193 <div class="memberValue"> | 192 <div class="memberValue"> |
194 <instance-ref ref="{{ element['value'] }}"> | 193 <any-service-ref ref="{{ element['value'] }}"> |
195 </instance-ref> | 194 </instance-ref> |
196 </div> | 195 </div> |
197 </div> | 196 </div> |
198 </template> | 197 </template> |
199 </div> | 198 </div> |
200 </curly-block><br><br> | 199 </curly-block><br><br> |
201 </template> | 200 </template> |
202 </div> | 201 </div> |
203 | 202 |
204 <hr> | 203 <hr> |
205 | 204 |
206 <div class="content"> | 205 <div class="content"> |
207 <eval-box callback="{{ eval }}"></eval-box> | 206 <eval-box callback="{{ eval }}"></eval-box> |
208 </div> | 207 </div> |
209 <br><br><br><br> | 208 <br><br><br><br> |
210 <br><br><br><br> | 209 <br><br><br><br> |
211 | 210 |
212 </template> | 211 </template> |
213 </template> | 212 </template> |
214 </polymer-element> | 213 </polymer-element> |
215 | 214 |
216 <script type="application/dart" src="instance_view.dart"></script> | 215 <script type="application/dart" src="instance_view.dart"></script> |
OLD | NEW |