Index: runtime/observatory/lib/src/elements/nav_bar.html |
diff --git a/runtime/observatory/lib/src/elements/nav_bar.html b/runtime/observatory/lib/src/elements/nav_bar.html |
index e9c782e29a15eacaf71caf836b83da66e484ccdb..5d1c904098c89a44807284c5b962bc80c93bc400 100644 |
--- a/runtime/observatory/lib/src/elements/nav_bar.html |
+++ b/runtime/observatory/lib/src/elements/nav_bar.html |
@@ -33,9 +33,8 @@ |
</style> |
<nav> |
<ul> |
- <template if="{{ showNotify }}"> |
- <nav-notify events="{{ app.notifications }}"></nav-notify> |
- </template> |
+ <nav-notify notifications="{{ app.notifications }}" |
+ notifyOnPause="{{ notifyOnPause }}"></nav-notify> |
<content></content> |
</ul> |
</nav> |
@@ -171,7 +170,7 @@ |
<polymer-element name="top-nav-menu"> |
<template> |
<nav-menu link="/vm" anchor="Observatory" last="{{ last }}"> |
- <nav-menu-item link="/vm-connect" anchor="Connect to a different VM"></nav-menu-item> |
+ <nav-menu-item link="/vm-connect" anchor="Connect to a VM"></nav-menu-item> |
<content></content> |
</nav-menu> |
</template> |
@@ -246,16 +245,28 @@ |
<div class="menu"> |
<div class="list"> |
- <template repeat="{{ event in events }}"> |
- <nav-notify-item events="{{ events }}" event="{{ event }}"> |
- </nav-notify-item> |
+ <template repeat="{{ notification in notifications }}"> |
+ <template if="{{ notification.event != null }}"> |
+ <nav-notify-event notifications="{{ notifications }}" |
+ notification="{{ notification }}" |
+ event="{{ notification.event }}" |
+ notifyOnPause="{{ notifyOnPause }}"> |
+ </nav-notify-event> |
+ </template> |
+ <template if="{{ notification.exception != null }}"> |
+ <nav-notify-exception notifications="{{ notifications }}" |
+ notification="{{ notification }}" |
+ exception="{{ notification.exception }}" |
+ stacktrace="{{ notification.stacktrace }}"> |
+ </nav-notify-exception> |
+ </template> |
</template> |
</div> |
</div> |
</template> |
</polymer-element> |
-<polymer-element name="nav-notify-item" extends="observatory-element"> |
+<polymer-element name="nav-notify-event" extends="observatory-element"> |
<template> |
<style> |
.item { |
@@ -264,7 +275,7 @@ |
margin-top: 10px; |
margin-right: 10px; |
padding-right: 25px; |
- width: 225px; |
+ width: 250px; |
color: #ddd; |
background: rgba(0,0,0,.6); |
border: solid 2px white; |
@@ -304,41 +315,130 @@ |
background: rgba(255,255,255,0.5); |
} |
</style> |
- <template if="{{ event.eventType == 'IsolateInterrupted' || |
- event.eventType == 'BreakpointReached' || |
- event.eventType == 'ExceptionThrown' }}"> |
- <div class="item"> |
- Isolate |
- <a class="link" on-click="{{ goto }}" |
- _href="{{ gotoLink('/inspect', event.isolate) }}">{{ event.isolate.name }}</a> |
- is paused |
- <template if="{{ event.breakpoint != null }}"> |
- at breakpoint {{ event.breakpoint.number }} |
- </template> |
- <template if="{{ event.eventType == 'ExceptionThrown' }}"> |
- at exception |
- </template> |
+ <template if="{{ event != null }}"> |
+ <template if="{{ notifyOnPause && event.isPauseEvent }}"> |
+ <div class="item"> |
+ Isolate |
+ <a class="link" on-click="{{ goto }}" |
+ _href="{{ gotoLink('/inspect', event.isolate) }}">{{ event.isolate.name }}</a> |
+ is paused |
+ <template if="{{ event.eventType == 'PauseStart' }}"> |
+ at isolate start |
+ </template> |
+ <template if="{{ event.eventType == 'PauseExit' }}"> |
+ at isolate exit |
+ </template> |
+ <template if="{{ event.breakpoint != null }}"> |
+ at breakpoint {{ event.breakpoint.number }} |
+ </template> |
+ <template if="{{ event.eventType == 'PauseException' }}"> |
+ due to exception |
+ </template> |
- <br><br> |
- [<a class="link" on-click="{{ goto }}" |
- _href="{{ gotoLink('/debugger', event.isolate) }}">debug</a>] |
+ <br><br> |
+ [<a class="link" on-click="{{ goto }}" |
+ _href="{{ gotoLink('/debugger', event.isolate) }}">debug</a>] |
- <a class="boxclose" on-click="{{ closeItem }}">×</a> |
- </div> |
+ <a class="boxclose" on-click="{{ closeItem }}">×</a> |
+ </div> |
+ </template> |
+ <template if="{{ event.eventType == 'ConnectionClosed' }}"> |
+ <div class="item"> |
+ Disconnected from VM: {{ event.reason }} |
+ <br><br> |
+ [<a class="link" on-click="{{ goto }}" |
+ _href="{{ gotoLink('/vm-connect') }}">Connect to a VM</a>] |
+ <a class="boxclose" on-click="{{ closeItem }}">×</a> |
+ </div> |
+ </template> |
+ <template if="{{ event.eventType == 'Inspect' }}"> |
+ <div class="item"> |
+ Inspect <any-service-ref ref="{{ event.inspectee }}"></any-service-ref> |
+ <br><br> |
+ <a class="boxclose" on-click="{{ closeItem }}">×</a> |
+ </div> |
+ </template> |
</template> |
- <template if="{{ event.eventType == 'VMDisconnected' }}"> |
+ </template> |
+</polymer-element> |
+ |
+ |
+<polymer-element name="nav-notify-exception" extends="observatory-element"> |
+ <template> |
+ <style> |
+ .item { |
+ position: relative; |
+ padding: 16px; |
+ margin-top: 10px; |
+ margin-right: 10px; |
+ padding-right: 25px; |
+ width: 250px; |
+ color: #ddd; |
+ background: rgba(0,0,0,.6); |
+ border: solid 2px white; |
+ box-shadow: 0 0 5px black; |
+ border-radius: 5px; |
+ animation: fadein 1s; |
+ } |
+ |
+ @keyframes fadein { |
+ from { opacity: 0; } |
+ to { opacity: 1; } |
+ } |
+ |
+ a.link { |
+ color: white; |
+ text-decoration: none; |
+ } |
+ a.link:hover { |
+ text-decoration: underline; |
+ } |
+ .indent { |
+ margin-left:20px; |
+ } |
+ |
+ a.boxclose { |
+ position: absolute; |
+ display: block; |
+ top: 4px; |
+ right: 4px; |
+ height: 18px; |
+ width: 18px; |
+ line-height: 16px; |
+ border-radius: 9px; |
+ color: white; |
+ font-size: 18px; |
+ cursor: pointer; |
+ text-align: center; |
+ } |
+ a.boxclose:hover { |
+ background: rgba(255,255,255,0.5); |
+ } |
+ </style> |
+ <template if="{{ isUnexpectedError }}"> |
+ <!-- TODO(turnidge): Add a file-a-bug link to this notification --> |
<div class="item"> |
- Disconnected from VM |
- <br><br> |
+ Unexpected exception:<br><br> |
+ <div class="indent">{{ exception.toString() }}</div><br> |
+ <template if="{{ stacktrace != null }}"> |
+ Stacktrace:<br><br> |
+ <div class="indent">{{ stacktrace.toString() }}</div> |
+ <br> |
+ </template> |
+ [<a class="link" on-click="{{ goto }}" |
+ _href="{{ gotoLink('vm-connect') }}">Connect to a different VM</a>] |
<a class="boxclose" on-click="{{ closeItem }}">×</a> |
- </div> |
+ </div> |
</template> |
- <template if="{{ event.eventType == 'Inspect' }}"> |
+ <template if="{{ isNetworkError }}"> |
<div class="item"> |
- Inspect <any-service-ref ref="{{ event.inspectee }}"></any-service-ref> |
+ The request cannot be completed because the VM is currently |
+ disconnected. |
<br><br> |
+ [<a class="link" on-click="{{ goto }}" |
+ _href="{{ gotoLink('vm-connect') }}">Connect to a different VM</a>] |
<a class="boxclose" on-click="{{ closeItem }}">×</a> |
- </div> |
+ </div> |
</template> |
</template> |
</polymer-element> |