<head>
  <link rel="import" href="curly_block.html">
  <link rel="import" href="eval_box.html">
  <link rel="import" href="function_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_inset.html">
  <link rel="import" href="script_ref.html">
</head>
<polymer-element name="isolate-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;
      }
      .sourceInset {
        padding-left: 15%;
        padding-right: 15%;
      }
      .miniProfileChart {
        width: 80%;
      }
    </style>

    <nav-bar>
      <top-nav-menu></top-nav-menu>
      <isolate-nav-menu isolate="{{ isolate }}" last="{{ true }}">
      </isolate-nav-menu>
      <nav-refresh callback="{{ refresh }}"></nav-refresh>
    </nav-bar>

    <div class="content">
      <h1>isolate '{{ isolate.name }}'</h1>
      <div class="memberList">
        <div class="memberItem">
          <div class="memberName">status</div>
          <div class="memberValue">
            <template if="{{ isolate.pausedOnStart }}">
              <strong style="color:darkred;">paused</strong> @ isolate start
              <span style="padding-left:20px;">
                [<a on-click="{{ resume }}">resume</a>]
              </span>
            </template>

            <template if="{{ isolate.pausedOnExit }}">
              <strong style="color:darkred;">paused</strong> @ isolate exit
              <span style="padding-left:20px;">
                [<a on-click="{{ resume }}">resume</a>]
              </span>
            </template>

            <template if="{{ isolate.running }}">
              <strong>running</strong>
              @
              <function-ref ref="{{ isolate.topFrame['function'] }}">
              </function-ref>
              (<script-ref ref="{{ isolate.topFrame['script'] }}"
                           pos="{{ isolate.topFrame['tokenPos'] }}">
              </script-ref>)
            </template>

            <template if="{{ isolate.idle }}">
              <strong>idle</strong>
            </template>
          </div>
        </div>
      </div>
    </div>

    <template if="{{ isolate.error != null }}">
      <div class="content">
        <h1>Error</h1>
        <div class="memberList">
          <div class="memberItem">
            <div class="memberName">message</div>
            <div class="memberValue">
              <pre>{{ isolate.error.message }}</pre>
            </div>
          </div>
          <div class="memberItem">
            <template if="{{ isolate.error.exception != null }}">
              <div class="memberName">exception</div>
              <div class="memberValue">
                <instance-ref ref="{{ isolate.error.exception }}"></instance-ref>
              </div>
            </template>
          </div>
          <div class="memberItem">
            <template if="{{ isolate.error.stacktrace != null }}">
            <div class="memberName">stacktrace</div>
            <div class="memberValue">
              <instance-ref ref="{{ isolate.error.stacktrace }}"></instance-ref>
            </div>
            </template>
          </div>
        </div>
      </div>
      <hr>
    </template>

    <br>

    <template if="{{ isolate.topFrame != null }}">
      <script-inset script="{{ isolate.topFrame['script'] }}"
                    pos="{{ isolate.topFrame['tokenPos'] }}">
      </script-inset>
    </template>

    <br>

    <div class="content">
      <div class="memberList">
        <div class="memberItem">
          <div class="memberName">root library</div>
          <div class="memberValue">
            <function-ref ref="{{ isolate.rootLib }}"></function-ref>
          </div>
        </div>
        <div class="memberItem">
          <template if="{{ isolate.entry != null }}">
            <div class="memberName">entry</div>
            <div class="memberValue">
              <function-ref ref="{{ isolate.entry }}"></function-ref>
            </div>
          </template>
        </div>
        <div class="memberItem">
          <div class="memberName">id</div>
          <div class="memberValue">{{ isolate.mainPort }}</div>
        </div>
        <br>
        <div class="memberItem">
          <div class="memberValue">
            See <a href="{{ isolate.relativeHashLink('stacktrace') }}">stack trace</a>
          </div>
        </div>
        <div class="memberItem">
          <div class="memberValue">
            See <a href="{{ isolate.relativeHashLink('profile') }}">cpu profile</a>
          </div>
        </div>
        <div class="memberItem">
          <div class="memberValue">
            See <a href="{{ isolate.relativeHashLink('debug/breakpoints') }}">breakpoints</a>

          </div>
        </div>
      </div>
    </div>

    <hr>

    <div class="content">
      <div class="memberList">
        <div class="memberItem">
          <div class="memberName">new heap</div>
          <div class="memberValue">
            {{ isolate.newHeapUsed | formatSize }}
            of
            {{ isolate.newHeapCapacity | formatSize }}
          </div>
        </div>
        <div class="memberItem">
          <div class="memberName">old heap</div>
          <div class="memberValue">
            {{ isolate.oldHeapUsed | formatSize }}
            of
            {{ isolate.oldHeapCapacity | formatSize }}
          </div>
        </div>
      </div>

      <br>

      <div class="memberList">
        <div class="memberItem">
          <div class="memberValue">
            See <a href="{{ isolate.relativeHashLink('allocationprofile') }}">allocation profile</a>
          </div>
        </div>
        <div class="memberItem">
          <div class="memberValue">
            See <a href="{{ isolate.relativeHashLink('heapmap') }}">heap map</a>
          </div>
        </div>
      </div>
    </div>

    <hr>

    <div class="content">
      <div class="memberValue">Isolate execution</div>
      <template repeat="{{ key in isolate.counters.keys }}">
        <div class="memberValue">{{ key }} ({{ isolate.counters[key] }})</div>
      </template>
    </div>

    <div class="content">
      <div id="tagProfileChart" class="miniProfileChart" style="height: 600px"></div>
    </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="isolate_view.dart"></script>
</polymer-element>
