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

Unified Diff: runtime/observatory/lib/src/elements/error_view.dart

Issue 2286503002: Converted Observatory error-view element (Closed)
Patch Set: Created 4 years, 4 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/error_view.dart
diff --git a/runtime/observatory/lib/src/elements/error_view.dart b/runtime/observatory/lib/src/elements/error_view.dart
index 53582cc84ba0388534a9d7420288b42e54be665d..aeb3aa848038081b50b206770a5eb7d138d0f03b 100644
--- a/runtime/observatory/lib/src/elements/error_view.dart
+++ b/runtime/observatory/lib/src/elements/error_view.dart
@@ -4,14 +4,93 @@
library error_view_element;
-import 'observatory_element.dart';
-import 'package:polymer/polymer.dart';
-import 'package:observatory/service.dart';
+import 'dart:html';
+import 'dart:async';
+import 'package:observatory/models.dart' as M;
+import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
+import 'package:observatory/src/elements/helpers/tag.dart';
+import 'package:observatory/src/elements/nav/bar.dart';
+import 'package:observatory/src/elements/nav/notify.dart';
+import 'package:observatory/src/elements/nav/top_menu.dart';
+import 'package:observatory/src/elements/view_footer.dart';
-/// Displays an Error ServiceObject.
-@CustomTag('error-view')
-class ErrorViewElement extends ObservatoryElement {
- @published DartError error;
+class ErrorViewElement extends HtmlElement implements Renderable{
+ static const tag = const Tag<ErrorViewElement>('error-view',
+ dependencies: const [NavBarElement.tag,
+ NavTopMenuElement.tag,
+ NavNotifyElement.tag,
+ ViewFooterElement.tag]);
+
+ RenderingScheduler _r;
+
+ Stream<RenderedEvent<ErrorViewElement>> get onRendered =>
+ _r.onRendered;
+
+ M.Error _error;
+ M.NotificationRepository _notifications;
+
+ M.Error get error => _error;
+
+ factory ErrorViewElement(M.NotificationRepository notifications,
+ M.Error error,
+ {RenderingQueue queue}) {
+ assert(error != null);
+ assert(notifications != null);
+ ErrorViewElement e = document.createElement(tag.name);
+ e._r = new RenderingScheduler(e, queue: queue);
+ e._error = error;
+ e._notifications = notifications;
+ return e;
+ }
ErrorViewElement.created() : super.created();
-}
+
+ @override
+ void attached() {
+ super.attached();
+ _r.enable();
+ }
+
+ @override
+ void detached() {
+ super.detached();
+ children = [];
+ _r.disable(notify: true);
+ }
+
+ void render() {
+ children = [
+ new NavBarElement(queue: _r.queue)
+ ..children = [
+ new NavTopMenuElement(last: true, queue: _r.queue),
+ new NavNotifyElement(_notifications, queue: _r.queue)
+ ],
+ new DivElement()
+ ..classes = ['content-centered']
+ ..children = [
+ new HeadingElement.h1()
+ ..text = 'Error: ${_kindToString(_error.kind)}',
+ new BRElement(),
+ new DivElement()..classes = ['well']
+ ..children = [
+ new PreElement()..text = error.message
+ ]
+ ],
+ new ViewFooterElement(queue: _r.queue)
+ ];
+ }
+
+ static String _kindToString(M.ErrorKind kind) {
+ switch(kind) {
+ case M.ErrorKind.unhandledException:
+ return 'Unhandled Exception';
+ case M.ErrorKind.languageError:
+ return 'Language Error';
+ case M.ErrorKind.internalError:
+ return 'Internal Error';
+ case M.ErrorKind.terminationError:
+ return 'Termination Error';
+ }
+ throw new Exception('Unkown M.ErrorKind ($kind)');
rmacnak 2016/08/26 17:05:26 unknown
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698