| Index: runtime/bin/vmservice/client/deployed/web/packages/observatory/src/elements/field_view.html
|
| diff --git a/runtime/bin/vmservice/client/deployed/web/packages/observatory/src/elements/field_view.html b/runtime/bin/vmservice/client/deployed/web/packages/observatory/src/elements/field_view.html
|
| index 8857d5e0a633521393196888a5438e315668f23a..d190acf54439ddf41f6b47ee022ea0177797c8e4 100644
|
| --- a/runtime/bin/vmservice/client/deployed/web/packages/observatory/src/elements/field_view.html
|
| +++ b/runtime/bin/vmservice/client/deployed/web/packages/observatory/src/elements/field_view.html
|
| @@ -1,10 +1,35 @@
|
| <head>
|
| <link rel="import" href="class_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="script_ref.html">
|
| <link rel="import" href="observatory_element.html">
|
| </head>
|
| <polymer-element name="field-view" extends="observatory-element">
|
| <template>
|
| + <style>
|
| + .content {
|
| + padding-left: 10%;
|
| + font: 400 14px 'Montserrat', sans-serif;
|
| + }
|
| + h1 {
|
| + font: 400 18px 'Montserrat', sans-serif;
|
| + }
|
| + .memberList {
|
| + display: table;
|
| + }
|
| + .memberItem {
|
| + display: table-row;
|
| + }
|
| + .memberName, .memberValue {
|
| + display: table-cell;
|
| + vertical-align: top;
|
| + padding: 3px 0 3px 1em;
|
| + font: 400 14px 'Montserrat', sans-serif;
|
| + }
|
| + </style>
|
| +
|
| <nav-bar>
|
| <top-nav-menu></top-nav-menu>
|
| <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
|
| @@ -19,40 +44,72 @@
|
| <nav-refresh callback="{{ refresh }}"></nav-refresh>
|
| </nav-bar>
|
|
|
| - <div class="row">
|
| - <div class="col-md-8 col-md-offset-2">
|
| - <div class="panel panel-warning">
|
| - <div class="panel-heading">
|
| - <template if="{{ field['static'] }}">static</template>
|
| - <template if="{{ field['final'] }}">final</template>
|
| - <template if="{{ field['const'] }}">const</template>
|
| - {{ field['user_name'] }} ({{ field['name'] }})
|
| - <class-ref ref="{{ field['owner'] }}"></class-ref>
|
| + <div class="content">
|
| + <h1>
|
| + <template if="{{ field['static'] }}">static</template>
|
| + <template if="{{ field['final'] }}">final</template>
|
| + <template if="{{ field['const'] }}">const</template>
|
| + <template if="{{ (field['declared_type']['name'] == 'dynamic' &&
|
| + !field['final'] && !field['const']) }}">
|
| + var
|
| + </template>
|
| + <template if="{{ (field['declared_type']['user_name'] != 'dynamic') }}">
|
| + {{ field['declared_type']['user_name'] }}
|
| + </template>
|
| + {{ field['user_name'] }}
|
| + </h1>
|
| + <div class="memberList">
|
| + <div class="memberItem">
|
| + <div class="memberName">owner</div>
|
| + <div class="memberValue">
|
| + <template if="{{ field['owner'].serviceType == 'Class' }}">
|
| + <class-ref ref="{{ field['owner'] }}"></class-ref>
|
| + </template>
|
| + <template if="{{ field['owner'].serviceType != 'Class' }}">
|
| + <library-ref ref="{{ field['owner'] }}"></library-ref>
|
| + </template>
|
| + </div>
|
| </div>
|
| - <div class="panel-body">
|
| - <template if="{{ field['guard_class'] == 'dynamic'}}">
|
| - <div class="alert alert-danger">
|
| - Field has been assigned multiple types. If a field is only ever
|
| - assigned a single type, performance may improve.
|
| + <div class="memberItem">
|
| + <div class="memberName">script</div>
|
| + <div class="memberValue">
|
| + <script-ref ref="{{ field['script'] }}"></script-ref>
|
| + </div>
|
| + </div>
|
| + <template if="{{ !field['static'] }}">
|
| + <div class="memberItem"
|
| + title="The types observed for this field at runtime. Fields that are observed to have a single type at runtime or to never be null may allow for additional optimization.">
|
| + <div class="memberName">observed types</div>
|
| + <div class="memberValue">
|
| + <template if="{{ field['guard_class'] == 'dynamic' }}">
|
| + various
|
| + </template>
|
| + <template if="{{ field['guard_class'] == 'unknown' }}">
|
| + none
|
| + </template>
|
| + <template if="{{ field['guard_class'] != 'unknown' &&
|
| + field['guard_class'] != 'dynamic' }}">
|
| + <class-ref ref="{{ field['guard_class'] }}"></class-ref>
|
| + <template if="{{ field['guard_nullable'] }}">
|
| + — null observed
|
| + </template>
|
| + <template if="{{ !field['guard_nullable'] }}">
|
| + — null not observed
|
| + </template>
|
| + </template>
|
| + </div>
|
| </div>
|
| </template>
|
| - <template if="{{ (field['guard_class'] != 'dynamic') && (field['guard_class'] != 'unknown') }}">
|
| - <div class="alert alert-success">Field has monomorphic type</div>
|
| - <template if="{{ (field['guard_class'] != 'dynamic') &&
|
| - field['guard_nullable'] }}">
|
| - <div class="alert alert-info">
|
| - Field has been assigned null. If a field is never assigned null,
|
| - performance may improve.
|
| + <template if="{{ field['value'] != null }}">
|
| + <div class="memberItem">
|
| + <div class="memberName">static value</div>
|
| + <div class="memberValue">
|
| + <instance-ref ref="{{ field['value'] }}"></instance-ref>
|
| </div>
|
| - </template>
|
| - <blockquote>
|
| - <class-ref ref="{{ field['guard_class'] }}"></class-ref>
|
| - </blockquote>
|
| + </div>
|
| </template>
|
| - </div>
|
| </div>
|
| </div>
|
| - </div>
|
| </template>
|
| <script type="application/dart" src="field_view.dart"></script>
|
| </polymer-element>
|
|
|