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

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

Issue 2170723002: Converted Observatory vm-nav-menu element (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 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
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 import 'dart:html';
6 import 'dart:async';
7
8 import 'package:observatory/app.dart';
9 import 'package:observatory/mocks.dart';
10 import 'package:observatory/models.dart' as M;
11 import 'package:observatory/service.dart';
12 import 'package:observatory/service_common.dart';
13 import 'package:observatory/src/elements/helpers/tag.dart';
14 import 'package:observatory/src/elements/shims/binding.dart';
15 import 'package:observatory/src/elements/nav/vm_menu.dart';
16
17 class NavVMMenuElementWrapper extends HtmlElement {
18 static final binder = new Binder<NavVMMenuElementWrapper>(
19 const [const Binding('last'), const Binding('vm')]);
20
21 static const tag = const Tag<NavVMMenuElementWrapper>('vm-nav-menu');
22
23 StreamSubscription _subscription;
24 StreamController<M.VMUpdateEvent> _updatesController =
25 new StreamController<M.VMUpdateEvent>.broadcast();
26
27 bool _last = false;
28 VM _vm;
29 bool get last => _last;
30 VM get vm => _vm;
31 set last(bool value) {
32 _last = value; render();
33 }
34 set vm(VM value) {
35 _vm = value; _detached(); _attached();
36 }
37
38 NavVMMenuElementWrapper.created() : super.created() {
39 binder.registerCallback(this);
40 _last = !_isNullOrFalse(getAttribute('last'));
Cutch 2016/07/21 02:30:33 I think this needs a better name. _last = attribu
cbernaschina 2016/07/21 17:28:16 What about: _last = _getBoolAttribute('last'); ?
cbernaschina 2016/07/21 18:32:17 Done.
41 createShadowRoot();
42 render();
43 }
44
45 @override
46 void attached() {
47 super.attached();
48 _attached();
49 }
50
51 @override
52 void detached() {
53 super.detached();
54 _detached();
55 }
56
57 void _attached() {
58 if (_vm != null) {
59 _subscription = _vm.changes.listen((_) {
60 _updatesController.add(new VMUpdateEventMock(vm: _vm));
61 });
62 }
63 render();
64 }
65
66 void _detached() {
67 if (_subscription != null) {
68 _subscription.cancel();
69 _subscription = null;
70 }
71 }
72
73 void render() {
74 shadowRoot.children = [];
75 if (_vm == null || _last == null) return;
76
77 shadowRoot.children = [
78 new NavVMMenuElement(vm, _updatesController.stream, last: last,
79 target: (vm as CommonWebSocketVM)?.target,
80 queue: ObservatoryApplication.app.queue)
81 ..children = [new ContentElement()]
82 ];
83 }
84
85 static bool _isNullOrFalse(String value) {
86 return value == null || value == 'false';
87 }
88 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/nav/vm_menu.dart ('k') | runtime/observatory/lib/src/elements/nav_bar.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698