| Index: runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
|
| diff --git a/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart b/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
|
| index 56baabf4989eac6d049c8870dedf070d4d5424f1..7054ba18b5c549cf77f36e62bcfe44e7b43cc93d 100644
|
| --- a/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
|
| +++ b/runtime/bin/vmservice/client/lib/src/elements/isolate_summary.dart
|
| @@ -4,12 +4,104 @@
|
|
|
| library isolate_summary_element;
|
|
|
| +import 'dart:async';
|
| +import 'dart:html';
|
| +import 'observatory_element.dart';
|
| +import 'package:observatory/app.dart';
|
| import 'package:observatory/service.dart';
|
| +import 'package:logging/logging.dart';
|
| import 'package:polymer/polymer.dart';
|
| -import 'observatory_element.dart';
|
|
|
| @CustomTag('isolate-summary')
|
| class IsolateSummaryElement extends ObservatoryElement {
|
| IsolateSummaryElement.created() : super.created();
|
| +
|
| + @published Isolate isolate;
|
| +}
|
| +
|
| +@CustomTag('isolate-run-state')
|
| +class IsolateRunStateElement extends ObservatoryElement {
|
| + IsolateRunStateElement.created() : super.created();
|
| +
|
| + @published Isolate isolate;
|
| +
|
| + Future pause(_) {
|
| + return isolate.get("debug/pause").then((result) {
|
| + // TODO(turnidge): Instead of asserting here, handle errors
|
| + // properly.
|
| + assert(result.serviceType == 'Success');
|
| + return isolate.reload();
|
| + });
|
| + }
|
| +
|
| + Future resume(_) {
|
| + return isolate.get("debug/resume").then((result) {
|
| + // TODO(turnidge): Instead of asserting here, handle errors
|
| + // properly.
|
| + assert(result.serviceType == 'Success');
|
| + return isolate.reload();
|
| + });
|
| + }
|
| +}
|
| +
|
| +@CustomTag('isolate-location')
|
| +class IsolateLocationElement extends ObservatoryElement {
|
| + IsolateLocationElement.created() : super.created();
|
| +
|
| + @published Isolate isolate;
|
| +}
|
| +
|
| +@CustomTag('isolate-shared-summary')
|
| +class IsolateSharedSummaryElement extends ObservatoryElement {
|
| + IsolateSharedSummaryElement.created() : super.created();
|
| +
|
| @published Isolate isolate;
|
| }
|
| +
|
| +class CounterChart {
|
| + var _table = new DataTable();
|
| + var _chart;
|
| +
|
| + void update(Map counters) {
|
| + if (_table.columns == 0) {
|
| + // Initialize.
|
| + _table.addColumn('string', 'Name');
|
| + _table.addColumn('number', 'Value');
|
| + }
|
| + _table.clearRows();
|
| + for (var key in counters.keys) {
|
| + var value = double.parse(counters[key].split('%')[0]);
|
| + _table.addRow([key, value]);
|
| + }
|
| + }
|
| +
|
| + void draw(var element) {
|
| + if (_chart == null) {
|
| + assert(element != null);
|
| + _chart = new Chart('PieChart', element);
|
| + }
|
| + _chart.draw(_table);
|
| + }
|
| +}
|
| +
|
| +@CustomTag('isolate-counter-chart')
|
| +class IsolateCounterChartElement extends ObservatoryElement {
|
| + IsolateCounterChartElement.created() : super.created();
|
| +
|
| + @published ObservableMap counters;
|
| + CounterChart chart = new CounterChart();
|
| +
|
| + void countersChanged(oldValue) {
|
| + if (counters == null) {
|
| + return;
|
| + }
|
| + chart.update(counters);
|
| + var element = shadowRoot.querySelector('#counterPieChart');
|
| + if (element != null) {
|
| + chart.draw(element);
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +
|
|
|