<head>
  <link rel="import" href="class_ref.html">
  <link rel="import" href="error_view.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="observatory_element.html">
  <link rel="import" href="nav_bar.html">
</head>
<polymer-element name="instance-view" extends="observatory-element">
  <template>
    <link rel="stylesheet" href="css/shared.css">
    <nav-bar>
      <top-nav-menu></top-nav-menu>
      <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu>
      <!-- TODO(turnidge): Add library nav menu here. -->
      <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu>
      <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu>
      <nav-refresh callback="{{ refresh }}"></nav-refresh>
    </nav-bar>

    <template if="{{ instance['error'] != null }}">
      <error-view error_obj="{{ instance['error'] }}"></error-view>
    </template>

    <template if="{{ instance['error'] == null }}">
      <div class="content">
        <!-- TODO(turnidge): Handle null instances. -->
        <template if="{{ isType(instance.serviceType) }}">
          <h1>type {{ instance['user_name'] }}</h1>
        </template>
        <template if="{{ !isType(instance.serviceType) }}">
          <h1>instance of {{ instance['class']['user_name'] }}</h1>
        </template>
        <div class="memberList">
          <div class="memberItem">
            <div class="memberName">class</div>
            <div class="memberValue">
              <class-ref ref="{{ instance['class'] }}">
              </class-ref>
            </div>
          </div>
          <template if="{{ instance['valueAsString'] != null }}">
            <div class="memberItem">
              <div class="memberName">value</div>
              <div class="memberValue">{{ instance['valueAsString'] }}</div>
            </div>
          </template>
          <div class="memberItem">
            <div class="memberName">size</div>
            <div class="memberValue">{{ instance['size'] | formatSize }}</div>
          </div>
          <div class="memberItem">
            <div class="memberName">retained size</div>
            <div class="memberValue">
              <eval-link callback="{{ retainedSize }}"
                         label="[calculate]">
              </eval-link>
            </div>
          </div>
          <div class="memberItem">
            <div class="memberName">retaining path</div>
            <div class="memberValue">
              <template if="{{ path == null }}">
                <eval-link callback="{{ retainingPath }}"
                           label="[find]"
                           expr="10">
                </eval-link>
              </template>
              <template if="{{ path != null }}">
                <template repeat="{{ element in path['elements'] }}">
                <div class="memberItem">
                  <div class="memberName">[{{ element['index']}}]</div>
                  <div class="memberValue">
                    <instance-ref ref="{{ element['value'] }}"></instance-ref>
                  </div>
                  </div>
                </template>
                <template if="{{ path['length'] > path['elements'].length }}">
                  showing {{ path['elements'].length }} of {{ path['length'] }}
                  <eval-link
                    callback="{{ retainingPath }}"
                    label="[find more]"
                    expr="{{ path['elements'].length * 2 }}">
                  </eval-link>
                </template>
              </template>
            </div>
          </div>
          <template if="{{ instance['type_class'] != null }}">
            <div class="memberItem">
              <div class="memberName">type class</div>
              <div class="memberValue">
                <class-ref ref="{{ instance['type_class'] }}">
                </class-ref>
              </div>
            </div>
          </template>
          <template if="{{ instance['closureFunc'] != null }}">
            <div class="memberItem">
              <div class="memberName">closure function</div>
              <div class="memberValue">
                <function-ref ref="{{ instance['closureFunc'] }}">
                </function-ref>
              </div>
            </div>
          </template>

          <div class="memberItem">&nbsp;</div>

          <div class="memberItem">
            <div class="memberName">toString()</div>
            <div class="memberValue">
              <eval-link callback="{{ eval }}" expr="toString()"></eval-link>
            </div>
          </div>
        </div>
      </div>

      <hr>

      <div class="content">
        <template if="{{ instance['fields'].isNotEmpty }}">
          fields ({{ instance['fields'].length }})
          <curly-block expand="{{ instance['fields'].length <= 8 }}">
            <div class="memberList">
              <template repeat="{{ field in instance['fields'] }}">
                <div class="memberItem">
                  <div class="memberName">
                    <field-ref ref="{{ field['decl'] }}"></field-ref>
                  </div>
                  <div class="memberValue">
                    <instance-ref ref="{{ field['value'] }}"></instance-ref>
                  </div>
                </div>
              </template>
            </div>
          </curly-block><br><br>
        </template>

        <template if="{{ instance['nativeFields'].isNotEmpty }}">
          native fields ({{ instance['nativeFields'].length }})
          <curly-block expand="{{ instance['nativeFields'].length <= 8 }}">
            <div class="memberList">
              <template repeat="{{ field in instance['nativeFields'] }}">
                <div class="memberItem">
                  <div class="memberName">[{{ field['index']}}]</div>
                  <div class="memberValue">[{{ field['value']}}]</div>
                </div>
              </template>
            </div>
          </curly-block><br><br>
        </template>

        <template if="{{ instance['elements'].isNotEmpty }}">
          elements ({{ instance['elements'].length }})
          <curly-block expand="{{ instance['elements'].length <= 8 }}">
            <div class="memberList">
              <template repeat="{{ element in instance['elements'] }}">
                <div class="memberItem">
                  <div class="memberName">[{{ element['index']}}]</div>
                  <div class="memberValue">
                    <instance-ref ref="{{ element['value'] }}">
                    </instance-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>
  </template>
  <script type="application/dart" src="instance_view.dart"></script>
</polymer-element>
