| OLD | NEW | 
|    1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file |    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 |    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 import 'dart:html'; |    5 import 'dart:html'; | 
|    6 import 'dart:async'; |    6 import 'dart:async'; | 
|    7 import 'package:observatory/models.dart' as M; |    7 import 'package:observatory/models.dart' as M; | 
|    8 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |    8 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; | 
|    9 import 'package:observatory/src/elements/helpers/tag.dart'; |    9 import 'package:observatory/src/elements/helpers/tag.dart'; | 
|   10  |   10  | 
|   11 class MetricDetailsElement extends HtmlElement implements Renderable { |   11 class MetricDetailsElement extends HtmlElement implements Renderable { | 
|   12   static const tag = const Tag<MetricDetailsElement>('metric-details'); |   12   static const tag = const Tag<MetricDetailsElement>('metric-details'); | 
|   13  |   13  | 
|   14   RenderingScheduler<MetricDetailsElement> _r; |   14   RenderingScheduler<MetricDetailsElement> _r; | 
|   15  |   15  | 
|   16   Stream<RenderedEvent<MetricDetailsElement>> get onRendered => _r.onRendered; |   16   Stream<RenderedEvent<MetricDetailsElement>> get onRendered => _r.onRendered; | 
|   17  |   17  | 
|   18   M.IsolateRef _isolate; |   18   M.IsolateRef _isolate; | 
|   19   M.Metric _metric; |   19   M.Metric _metric; | 
|   20   M.MetricRepository _metrics; |   20   M.MetricRepository _metrics; | 
|   21  |   21  | 
|   22   M.IsolateRef get isolate => _isolate; |   22   M.IsolateRef get isolate => _isolate; | 
|   23   M.Metric get metric => _metric; |   23   M.Metric get metric => _metric; | 
|   24  |   24  | 
|   25   factory MetricDetailsElement(M.IsolateRef isolate, M.Metric metric, |   25   factory MetricDetailsElement( | 
|   26                                M.MetricRepository metrics, |   26       M.IsolateRef isolate, M.Metric metric, M.MetricRepository metrics, | 
|   27                                {RenderingQueue queue}) { |   27       {RenderingQueue queue}) { | 
|   28     assert(isolate != null); |   28     assert(isolate != null); | 
|   29     assert(metric != null); |   29     assert(metric != null); | 
|   30     assert(metrics != null); |   30     assert(metrics != null); | 
|   31     MetricDetailsElement e = document.createElement(tag.name); |   31     MetricDetailsElement e = document.createElement(tag.name); | 
|   32     e._r = new RenderingScheduler(e, queue: queue); |   32     e._r = new RenderingScheduler(e, queue: queue); | 
|   33     e._isolate = isolate; |   33     e._isolate = isolate; | 
|   34     e._metric = metric; |   34     e._metric = metric; | 
|   35     e._metrics = metrics; |   35     e._metrics = metrics; | 
|   36     return e; |   36     return e; | 
|   37   } |   37   } | 
|   38  |   38  | 
|   39   MetricDetailsElement.created() : super.created(); |   39   MetricDetailsElement.created() : super.created(); | 
|   40  |   40  | 
|   41   @override |   41   @override | 
|   42   void attached() { |   42   void attached() { | 
|   43     super.attached(); |   43     super.attached(); | 
|   44     _r.enable(); |   44     _r.enable(); | 
|   45   } |   45   } | 
|   46  |   46  | 
|   47   @override |   47   @override | 
|   48   void detached() { |   48   void detached() { | 
|   49     super.detached(); |   49     super.detached(); | 
|   50     _r.disable(notify: true); |   50     _r.disable(notify: true); | 
|   51     children = []; |   51     children = []; | 
|   52   } |   52   } | 
|   53  |   53  | 
|   54   void render() { |   54   void render() { | 
|   55     children = [ |   55     children = [ | 
|   56       new DivElement()..classes = ['memberList'] |   56       new DivElement() | 
 |   57         ..classes = ['memberList'] | 
|   57         ..children = [ |   58         ..children = [ | 
|   58           new DivElement()..classes = ['memberItem'] |   59           new DivElement() | 
 |   60             ..classes = ['memberItem'] | 
|   59             ..children = [ |   61             ..children = [ | 
|   60               new DivElement()..classes = ['memberName'] |   62               new DivElement() | 
 |   63                 ..classes = ['memberName'] | 
|   61                 ..text = 'name', |   64                 ..text = 'name', | 
|   62               new DivElement()..classes = ['memberValue'] |   65               new DivElement() | 
 |   66                 ..classes = ['memberValue'] | 
|   63                 ..text = _metric.name, |   67                 ..text = _metric.name, | 
|   64             ], |   68             ], | 
|   65           new DivElement()..classes = ['memberItem'] |   69           new DivElement() | 
 |   70             ..classes = ['memberItem'] | 
|   66             ..children = [ |   71             ..children = [ | 
|   67               new DivElement()..classes = ['memberName'] |   72               new DivElement() | 
 |   73                 ..classes = ['memberName'] | 
|   68                 ..text = 'description', |   74                 ..text = 'description', | 
|   69               new DivElement()..classes = ['memberValue'] |   75               new DivElement() | 
 |   76                 ..classes = ['memberValue'] | 
|   70                 ..text = _metric.description, |   77                 ..text = _metric.description, | 
|   71             ], |   78             ], | 
|   72           new DivElement()..classes = ['memberItem'] |   79           new DivElement() | 
 |   80             ..classes = ['memberItem'] | 
|   73             ..children = [ |   81             ..children = [ | 
|   74               new DivElement()..classes = ['memberName'] |   82               new DivElement() | 
 |   83                 ..classes = ['memberName'] | 
|   75                 ..text = 'refresh rate', |   84                 ..text = 'refresh rate', | 
|   76               new DivElement()..classes = ['memberValue'] |   85               new DivElement() | 
 |   86                 ..classes = ['memberValue'] | 
|   77                 ..children = _createRefreshRateSelect(), |   87                 ..children = _createRefreshRateSelect(), | 
|   78             ], |   88             ], | 
|   79           new DivElement()..classes = ['memberItem'] |   89           new DivElement() | 
 |   90             ..classes = ['memberItem'] | 
|   80             ..children = [ |   91             ..children = [ | 
|   81               new DivElement()..classes = ['memberName'] |   92               new DivElement() | 
 |   93                 ..classes = ['memberName'] | 
|   82                 ..text = 'buffer size', |   94                 ..text = 'buffer size', | 
|   83               new DivElement()..classes = ['memberValue'] |   95               new DivElement() | 
 |   96                 ..classes = ['memberValue'] | 
|   84                 ..children = _createBufferSizeSelect(), |   97                 ..children = _createBufferSizeSelect(), | 
|   85             ] |   98             ] | 
|   86         ] |   99         ] | 
|   87     ]; |  100     ]; | 
|   88   } |  101   } | 
|   89  |  102  | 
|   90   List<Element> _createRefreshRateSelect() { |  103   List<Element> _createRefreshRateSelect() { | 
|   91     final current = _metrics.getSamplingRate(_isolate, _metric); |  104     final current = _metrics.getSamplingRate(_isolate, _metric); | 
|   92     var s; |  105     var s; | 
|   93     return [ |  106     return [ | 
|   94       s = new SelectElement() |  107       s = new SelectElement() | 
|   95         ..value = _rateToString(current) |  108         ..value = _rateToString(current) | 
|   96         ..children = M.MetricSamplingRate.values.map((rate) { |  109         ..children = M.MetricSamplingRate.values.map((rate) { | 
|   97             return new OptionElement(value: _rateToString(current), |  110           return new OptionElement( | 
|   98                 selected: current == rate) |  111               value: _rateToString(current), | 
|   99               ..text = _rateToString(rate); |  112               selected: current == rate)..text = _rateToString(rate); | 
|  100           }).toList(growable: false) |  113         }).toList(growable: false) | 
|  101         ..onChange.listen((_) { |  114         ..onChange.listen((_) { | 
|  102             _metrics.setSamplingRate(_isolate, _metric, |  115           _metrics.setSamplingRate( | 
|  103                 M.MetricSamplingRate.values[s.selectedIndex]); |  116               _isolate, _metric, M.MetricSamplingRate.values[s.selectedIndex]); | 
|  104             _r.dirty(); |  117           _r.dirty(); | 
|  105           }) |  118         }) | 
|  106     ]; |  119     ]; | 
|  107   } |  120   } | 
|  108  |  121  | 
|  109   List<Element> _createBufferSizeSelect() { |  122   List<Element> _createBufferSizeSelect() { | 
|  110     final current = _metrics.getBufferSize(_isolate, _metric); |  123     final current = _metrics.getBufferSize(_isolate, _metric); | 
|  111     var s; |  124     var s; | 
|  112     return [ |  125     return [ | 
|  113       s = new SelectElement() |  126       s = new SelectElement() | 
|  114         ..value = _sizeToString(current) |  127         ..value = _sizeToString(current) | 
|  115         ..children = M.MetricBufferSize.values.map((rate) { |  128         ..children = M.MetricBufferSize.values.map((rate) { | 
|  116             return new OptionElement(value: _sizeToString(current), |  129           return new OptionElement( | 
|  117                 selected: current == rate) |  130               value: _sizeToString(current), | 
|  118               ..text = _sizeToString(rate); |  131               selected: current == rate)..text = _sizeToString(rate); | 
|  119           }).toList(growable: false) |  132         }).toList(growable: false) | 
|  120         ..onChange.listen((_) { |  133         ..onChange.listen((_) { | 
|  121             _metrics.setBufferSize(_isolate, _metric, |  134           _metrics.setBufferSize( | 
|  122                 M.MetricBufferSize.values[s.selectedIndex]); |  135               _isolate, _metric, M.MetricBufferSize.values[s.selectedIndex]); | 
|  123             _r.dirty(); |  136           _r.dirty(); | 
|  124           }) |  137         }) | 
|  125     ]; |  138     ]; | 
|  126   } |  139   } | 
|  127  |  140  | 
|  128   static String _rateToString(M.MetricSamplingRate rate) { |  141   static String _rateToString(M.MetricSamplingRate rate) { | 
|  129     switch (rate) { |  142     switch (rate) { | 
|  130       case M.MetricSamplingRate.off: return 'Never'; |  143       case M.MetricSamplingRate.off: | 
|  131       case M.MetricSamplingRate.e100ms: return 'Ten times per second'; |  144         return 'Never'; | 
|  132       case M.MetricSamplingRate.e1s: return 'Once a second'; |  145       case M.MetricSamplingRate.e100ms: | 
|  133       case M.MetricSamplingRate.e2s: return 'Every two seconds'; |  146         return 'Ten times per second'; | 
|  134       case M.MetricSamplingRate.e4s: return 'Every four seconds'; |  147       case M.MetricSamplingRate.e1s: | 
|  135       case M.MetricSamplingRate.e8s: return 'Every eight seconds'; |  148         return 'Once a second'; | 
 |  149       case M.MetricSamplingRate.e2s: | 
 |  150         return 'Every two seconds'; | 
 |  151       case M.MetricSamplingRate.e4s: | 
 |  152         return 'Every four seconds'; | 
 |  153       case M.MetricSamplingRate.e8s: | 
 |  154         return 'Every eight seconds'; | 
|  136     } |  155     } | 
|  137     throw new Exception('Unknown MetricSamplingRate ($rate)'); |  156     throw new Exception('Unknown MetricSamplingRate ($rate)'); | 
|  138   } |  157   } | 
|  139  |  158  | 
|  140   static String _sizeToString(M.MetricBufferSize size) { |  159   static String _sizeToString(M.MetricBufferSize size) { | 
|  141     switch (size) { |  160     switch (size) { | 
|  142       case M.MetricBufferSize.n10samples: return '10'; |  161       case M.MetricBufferSize.n10samples: | 
|  143       case M.MetricBufferSize.n100samples: return '100'; |  162         return '10'; | 
|  144       case M.MetricBufferSize.n1000samples: return '1000'; |  163       case M.MetricBufferSize.n100samples: | 
 |  164         return '100'; | 
 |  165       case M.MetricBufferSize.n1000samples: | 
 |  166         return '1000'; | 
|  145     } |  167     } | 
|  146     throw new Exception('Unknown MetricSamplingRate ($size)'); |  168     throw new Exception('Unknown MetricSamplingRate ($size)'); | 
|  147   } |  169   } | 
|  148 } |  170 } | 
| OLD | NEW |