Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1131)

Unified Diff: runtime/observatory/lib/src/elements/cpu_profile.html

Issue 1013563002: CPU profile displayed in three tables with a tree (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/lib/src/elements/cpu_profile.html
diff --git a/runtime/observatory/lib/src/elements/cpu_profile.html b/runtime/observatory/lib/src/elements/cpu_profile.html
index 4893f99ef0d17b854800aac7bb222f918905439c..11d37b068bae87f335efd1db1a540b82f06a2461 100644
--- a/runtime/observatory/lib/src/elements/cpu_profile.html
+++ b/runtime/observatory/lib/src/elements/cpu_profile.html
@@ -5,6 +5,271 @@
<link rel="import" href="observatory_element.html">
<link rel="import" href="sliding_checkbox.html">
+<polymer-element name="cpu-profile-table" extends="observatory-element">
+ <template>
+ <link rel="stylesheet" href="css/shared.css">
+ <nav-bar>
+ <top-nav-menu></top-nav-menu>
+ <isolate-nav-menu isolate="{{ isolate }}"></isolate-nav-menu>
+ <nav-menu link="{{ makeLink('/profiler-table', isolate) }}" anchor="cpu profile (table)" last="{{ true }}"></nav-menu>
+ <nav-refresh callback="{{ refresh }}"></nav-refresh>
+ <nav-refresh callback="{{ clear }}" label="Clear"></nav-refresh>
+ </nav-bar>
+ <style>
+ /* general */
+ .well {
+ background-color: #ECECEC;
+ padding: 0.2em;
+ }
+ .center {
+ align-items: center;
+ justify-content: center;
+ }
+
+ /* status messages */
+ .statusMessage {
+ font-size: 150%;
+ font-weight: bold;
+ }
+ .statusBox {
+ height: 100%;
+ padding: 1em;
+ }
+
+ /* tables */
+ .table {
+ border-collapse: collapse!important;
+ table-layout: fixed;
+ height: 100%;
+ }
+ .th, .td {
+ padding: 8px;
+ vertical-align: top;
+ }
+ .table thead > tr > th {
+ vertical-align: bottom;
+ text-align: left;
+ border-bottom:2px solid #ddd;
+ }
+ .spacer {
+ width: 16px;
+ }
+ .left-border-spacer {
+ width: 16px;
+ border-left: 1px solid;
+ }
+ .clickable {
+ color: #0489c3;
+ text-decoration: none;
+ cursor: pointer;
+ min-width: 8em;
+ }
+ .clickable:hover {
+ text-decoration: underline;
+ cursor: pointer;
+ }
+ tr:hover:not(.focused) > td {
+ background-color: #FAFAFA;
+ }
+ .focused {
+ background-color: #F4C7C3;
+ }
+ .scroll {
+ overflow: scroll;
+ }
+ .outlined {
+ -webkit-box-shadow: 0px 0px 2px 1px rgba(0,0,0,0.75);
+ -moz-box-shadow: 0px 0px 2px 1px rgba(0,0,0,0.75);
+ box-shadow: 0px 0px 2px 1px rgba(0,0,0,0.75);
+ margin: 4px;
+ }
+ .centered {
+ margin-left: auto;
+ margin-right: auto;
+ justify-content: center;
+ }
+ .full-height {
+ height: 100%;
+ }
+ .mostly-full-height {
+ height: 80%;
+ }
+ .full-width {
+ width: 100%;
+ }
+ .focused-function-label {
+ flex: 0 1 auto;
+ margin-left: auto;
+ margin-right: auto;
+ justify-content: center;
+ }
+ .call-table {
+ flex: 1 1 auto;
+ }
+
+ .tree {
+ border-spacing: 0px;
+ width: 100%;
+ margin-bottom: 20px
+ vertical-align: middle;
+ }
+
+ .tree tbody tr {
+ animation: fadeIn 0.5s;
+ -moz-animation: fadeIn 0.5s;
+ -webkit-animation: fadeIn 0.5s;
+ }
+
+ .tree tbody tr:hover {
+ background-color: #FAFAFA;
+ }
+
+ .tree tr td:first-child,
+ .tree tr th:first-child {
+ width: 100%;
+ }
+
+ .tree thead > tr > th {
+ padding: 8px;
+ vertical-align: bottom;
+ text-align: left;
+ border-bottom: 1px solid #ddd;
+ }
+
+ </style>
+ <div class="content-centered-big">
+ <template if="{{ state == 'Requested' }}">
+ <div class="statusBox shadow center">
+ <div class="statusMessage">Fetching profile from VM...</div>
+ </div>
+ </template>
+ <template if="{{ state == 'Loading' }}">
+ <div class="statusBox shadow center">
+ <div class="statusMessage">Loading profile...</div>
+ </div>
+ </template>
+ <template if="{{ state == 'Exception' }}">
+ <div class="statusBox shadow center">
+ <div class="statusMessage">
+ <h1>Exception:</h1>
+ <br>
+ <pre>{{ exception.toString() }}</pre>
+ <br>
+ <h1>Stack trace:</h1>
+ <br>
+ <pre>{{ stackTrace.toString() }}</pre>
+ </div>
+ </div>
+ </template>
+ <template if="{{ state == 'Loaded' }}">
+ <div class="memberList">
+ <div class="memberItem">
+ <div class="memberName">Refreshed at </div>
+ <div class="memberValue">{{ refreshTime }} (fetched in {{ fetchTime }}) (loaded in {{ loadTime }})</div>
+ </div>
+ <div class="memberItem">
+ <div class="memberName">Profile contains</div>
+ <div class="memberValue">{{ sampleCount }} samples (spanning {{ timeSpan }})</div>
+ </div>
+ <div class="memberItem">
+ <div class="memberName">Sampling</div>
+ <div class="memberValue">{{ stackDepth }} stack frames @ {{ sampleRate }} Hz</div>
+ </div>
+ <div class="memberItem">
+ <div class="memberName">Call Tree Direction</div>
+ <div class="memberValue">
+ <select value="{{directionSelector}}">
+ <option value="Down">Top down</option>
+ <option value="Up">Bottom up</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ </template>
+ </div>
+ <hr>
+ <div id="main" class="flex-row centered">
+ <div class="flex-item-45-percent full-height outlined scroll">
+ <table id="main-table" class="flex-item-100-percent table">
+ <thead>
+ <tr>
+ <th on-click="{{changeSortProfile}}" class="clickable" title="Executing (%)">{{ profileTable.getColumnLabel(0) }}</th>
+ <th on-click="{{changeSortProfile}}" class="clickable" title="In stack (%)">{{ profileTable.getColumnLabel(1) }}</th>
+ <th on-click="{{changeSortProfile}}" class="clickable" title="Method">{{ profileTable.getColumnLabel(2) }}</th>
+ </tr>
+ </thead>
+ <tbody id="profile-table">
+ </tbody>
+ </table>
+ </div>
+ <div class="flex-item-45-percent full-height outlined">
+ <div class="flex-column full-height">
+ <div class="focused-function-label">
+ <template if="{{ focusedFunction != null }}">
+ <span>Focused on: </span>
+ <function-ref ref="{{ focusedFunction }}"></function-ref>
+ </template>
+ <template if="{{ focusedFunction == null }}">
+ <span>No focused function</span>
+ </template>
+ </div>
+ <hr>
+ <div class="call-table scroll">
+ <table class="full-width table">
+ <thead>
+ <tr>
+ <th on-click="{{changeSortCallers}}" class="clickable" title="Callers (%)">{{ profileCallersTable.getColumnLabel(0) }}</th>
+ <th on-click="{{changeSortCallers}}" class="clickable" title="Method">{{ profileCallersTable.getColumnLabel(1) }}</th>
+ </tr>
+ </thead>
+ <tbody id="callers-table">
+ </tbody>
+ </table>
+ </div>
+ <hr>
+ <div class="call-table scroll">
+ <table class="full-width table">
+ <thead>
+ <tr>
+ <th on-click="{{changeSortCallees}}" class="clickable" title="Callees (%)">{{ profileCalleesTable.getColumnLabel(0) }}</th>
+ <th on-click="{{changeSortCallees}}" class="clickable" title="Method">{{ profileCalleesTable.getColumnLabel(1) }}</th>
+ </tr>
+ </thead>
+ <tbody id="callees-table">
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ <br>
+ <br>
+ <div class="focused-function-label">
+ <template if="{{ focusedFunction != null }}">
+ <span>Filtered tree: </span>
+ <function-ref ref="{{ focusedFunction }}"></function-ref>
+ </template>
+ <template if="{{ focusedFunction == null }}">
+ <span>No focused function</span>
+ </template>
+ </div>
+ <div class="flex-row centered">
+ <div class="flex-item-90-percent outlined" style="margin: 16px; margin-left: 8px; margin-right: 8px">
+ <table class="full-width tree">
+ <thead id="treeHeader">
+ <tr>
+ <th>Method</th>
+ <th>Executing</th>
+ </tr>
+ </thead>
+ <tbody id="treeBody">
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </template>
+</polymer-element>
+
<polymer-element name="cpu-profile" extends="observatory-element">
<template>
<link rel="stylesheet" href="css/shared.css">
@@ -14,7 +279,6 @@
<nav-menu link="{{ makeLink('/profiler', isolate) }}" anchor="cpu profile" last="{{ true }}"></nav-menu>
<nav-refresh callback="{{ refresh }}"></nav-refresh>
<nav-refresh callback="{{ clear }}" label="Clear"></nav-refresh>
- <nav-control></nav-control>
</nav-bar>
<style>
.tableWell {
@@ -192,7 +456,7 @@
<thead id="treeHeader">
<tr>
<th>Method</th>
- <th>Self</th>
+ <th>Executing</th>
</tr>
</thead>
<tbody id="treeBody">
« no previous file with comments | « runtime/observatory/lib/src/elements/cpu_profile.dart ('k') | runtime/observatory/lib/src/elements/css/shared.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698