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

Side by Side Diff: runtime/observatory/lib/src/elements/ports.dart

Issue 2267863002: Converted Observatory ports-page element (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library ports; 5 import 'dart:html';
6 import 'dart:async';
7 import 'package:observatory/models.dart' as M;
8 import 'package:observatory/src/elements/helpers/any_ref.dart';
9 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
10 import 'package:observatory/src/elements/helpers/tag.dart';
11 import 'package:observatory/src/elements/helpers/uris.dart';
12 import 'package:observatory/src/elements/instance_ref.dart';
13 import 'package:observatory/src/elements/nav/bar.dart';
14 import 'package:observatory/src/elements/nav/isolate_menu.dart';
15 import 'package:observatory/src/elements/nav/menu.dart';
16 import 'package:observatory/src/elements/nav/notify.dart';
17 import 'package:observatory/src/elements/nav/refresh.dart';
18 import 'package:observatory/src/elements/nav/top_menu.dart';
19 import 'package:observatory/src/elements/nav/vm_menu.dart';
20 import 'package:observatory/src/elements/view_footer.dart';
6 21
7 import 'dart:async'; 22 class PortsElement extends HtmlElement implements Renderable {
8 import 'observatory_element.dart'; 23 static const tag = const Tag<PortsElement>('ports-page',
9 import 'package:observatory/service.dart'; 24 dependencies: const [
Cutch 2016/08/22 16:45:04 indentation
cbernaschina 2016/08/22 16:46:54 Done.
10 import 'package:polymer/polymer.dart'; 25 NavBarElement.tag,
26 NavTopMenuElement.tag,
27 NavVMMenuElement.tag,
28 NavIsolateMenuElement.tag,
29 NavMenuElement.tag,
30 NavRefreshElement.tag,
31 NavNotifyElement.tag,
32 InstanceRefElement.tag,
33 ViewFooterElement.tag
34 ]);
11 35
12 @CustomTag('ports-page') 36 RenderingScheduler<PortsElement> _r;
13 class PortsPageElement extends ObservatoryElement {
14 PortsPageElement.created() : super.created();
15 37
16 @observable Isolate isolate; 38 Stream<RenderedEvent<PortsElement>> get onRendered => _r.onRendered;
17 @observable var /*ObservableList | ServiceObject*/ ports;
18 39
19 void isolateChanged(oldValue) { 40 M.VM _vm;
20 if (isolate != null) { 41 M.IsolateRef _isolate;
21 isolate.getPorts().then(_refreshView); 42 M.EventRepository _events;
22 } 43 M.NotificationRepository _notifications;
44 M.PortsRepository _ports;
45 M.InstanceRepository _instances;
46 M.Ports _isolatePorts;
47
48
49 M.IsolateRef get isolate => _isolate;
50 M.NotificationRepository get notifications => _notifications;
51 M.PortsRepository get ports => _ports;
52 M.VMRef get vm => _vm;
53
54 factory PortsElement(M.VM vm, M.IsolateRef isolate,
55 M.EventRepository events,
56 M.NotificationRepository notifications,
57 M.PortsRepository ports,
58 M.InstanceRepository instances,
59 {RenderingQueue queue}) {
60 assert(vm != null);
61 assert(isolate != null);
62 assert(events != null);
63 assert(notifications != null);
64 assert(ports != null);
65 assert(instances != null);
66 PortsElement e = document.createElement(tag.name);
67 e._r = new RenderingScheduler(e, queue: queue);
68 e._vm = vm;
69 e._isolate = isolate;
70 e._events = events;
71 e._notifications = notifications;
72 e._ports = ports;
73 e._instances = instances;
74 return e;
23 } 75 }
24 76
25 Future refresh() { 77 PortsElement.created() : super.created();
26 return isolate.getPorts().then(_refreshView); 78
79 @override
80 void attached() {
81 super.attached();
82 _r.enable();
83 _refresh();
27 } 84 }
28 85
29 _refreshView(/*ObservableList | ServiceObject*/ object) { 86 @override
30 ports = object['ports']; 87 void detached() {
88 super.detached();
89 children = [];
90 _r.disable(notify: true);
91 }
92
93 void render() {
94 children = [
95 new NavBarElement(queue: _r.queue)
96 ..children = [
97 new NavTopMenuElement(queue: _r.queue),
98 new NavVMMenuElement(_vm, _events, queue: _r.queue),
99 new NavIsolateMenuElement(_isolate, _events, queue: _r.queue),
100 new NavMenuElement('ports', link: Uris.ports(_isolate), last: true,
101 queue: _r.queue),
102 new NavRefreshElement(queue: _r.queue)
103 ..onRefresh.listen((_) => _refresh()),
104 new NavNotifyElement(_notifications, queue: _r.queue)
105 ],
106 new DivElement()
107 ..classes = ['content-centered']
108 ..children = [
109 new HeadingElement.h1()..text = 'Ports',
110 new BRElement(), new HRElement(),
111 new DivElement()
112 ..children = _createList(),
113 new HRElement()
114 ],
115 new ViewFooterElement(queue: _r.queue)
116 ];
117 }
118
119 List<Element> _createList() {
120 if (_isolatePorts == null) {
121 return const [];
122 }
123 int i = 0;
124 return _isolatePorts.elements.map((port) =>
125 new DivElement()..classes = ['memberItem']
126 ..children = [
127 new DivElement()..classes = ['memberName']
128 ..children = [
129 new SpanElement()..classes = ['port-number']
130 ..text = '[ ${++i} ] ',
131 new SpanElement()..text = '${port.name}'
132 ],
133 new DivElement()..classes = ['memberValue']
134 ..children = [
135 anyRef(_isolate, port.handler, _instances, queue: _r.queue)
136 ]
137 ]
138 ).toList();
139 }
140
141 Future _refresh() async {
142 _isolatePorts = null;
143 _r.dirty();
144 _isolatePorts = await _ports.get(_isolate);
145 _r.dirty();
31 } 146 }
32 } 147 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/object_common_wrapper.dart ('k') | runtime/observatory/lib/src/elements/ports.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698