| OLD | NEW |
| (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 import 'package:charted/charted.dart'; |
| 8 import "package:charted/charts/charts.dart"; |
| 9 import 'package:observatory/src/elements/helpers/rendering_scheduler.dart'; |
| 10 import 'package:observatory/src/elements/helpers/tag.dart'; |
| 11 |
| 12 class IsolateCounterChartElement extends HtmlElement implements Renderable { |
| 13 static const tag = |
| 14 const Tag<IsolateCounterChartElement>('isolate-counter-chart'); |
| 15 |
| 16 RenderingScheduler<IsolateCounterChartElement> _r; |
| 17 |
| 18 Stream<RenderedEvent<IsolateCounterChartElement>> get onRendered => |
| 19 _r.onRendered; |
| 20 |
| 21 Map _counters; |
| 22 StreamSubscription _subscription; |
| 23 |
| 24 factory IsolateCounterChartElement(Map counters, {RenderingQueue queue}) { |
| 25 assert(counters != null); |
| 26 IsolateCounterChartElement e = document.createElement(tag.name); |
| 27 e._r = new RenderingScheduler(e, queue: queue); |
| 28 e._counters = counters; |
| 29 return e; |
| 30 } |
| 31 |
| 32 IsolateCounterChartElement.created() : super.created(); |
| 33 |
| 34 @override |
| 35 void attached() { |
| 36 super.attached(); |
| 37 _r.enable(); |
| 38 _subscription = window.onResize.listen((_) => _r.dirty()); |
| 39 } |
| 40 |
| 41 @override |
| 42 void detached() { |
| 43 super.detached(); |
| 44 children = []; |
| 45 _r.disable(notify: true); |
| 46 _subscription.cancel(); |
| 47 } |
| 48 |
| 49 void render() { |
| 50 var areaHost; |
| 51 var legendHost; |
| 52 children = [ |
| 53 areaHost = new DivElement()..classes = ['host'], |
| 54 legendHost = new DivElement()..classes = ['legend'] |
| 55 ]; |
| 56 final series = new ChartSeries("Work", [1], new PieChartRenderer( |
| 57 sortDataByValue: false |
| 58 )); |
| 59 var rect = areaHost.getBoundingClientRect(); |
| 60 var minSize = new Rect.size(rect.width, rect.height); |
| 61 final config = new ChartConfig([series], [0]) |
| 62 ..minimumSize = minSize |
| 63 ..legend = new ChartLegend(legendHost, showValues: true); |
| 64 final data = new ChartData([ |
| 65 new ChartColumnSpec(label: 'Type', type: ChartColumnSpec.TYPE_STRING), |
| 66 new ChartColumnSpec(label: 'Percent', formatter: (v) => v.toString()) |
| 67 ], _counters.keys |
| 68 .map((key) => [key, double.parse(_counters[key].split('%')[0])]) |
| 69 .toList()); |
| 70 |
| 71 new LayoutArea(areaHost, data, config, state: new ChartState(), |
| 72 autoUpdate: true) |
| 73 ..addChartBehavior(new Hovercard()) |
| 74 ..addChartBehavior(new AxisLabelTooltip()) |
| 75 ..draw(); |
| 76 } |
| 77 } |
| OLD | NEW |