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

Unified Diff: runtime/observatory/lib/src/elements/heap_profile.dart

Issue 1310153002: Switch from Google charts to Charted (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/lib/src/elements/heap_profile.dart
diff --git a/runtime/observatory/lib/src/elements/heap_profile.dart b/runtime/observatory/lib/src/elements/heap_profile.dart
index 25b5d5411c616edd039997f4eec52a029e9cf7a2..cf33577502a10514e93b0e24b4ea9b70f6ed1b34 100644
--- a/runtime/observatory/lib/src/elements/heap_profile.dart
+++ b/runtime/observatory/lib/src/elements/heap_profile.dart
@@ -7,6 +7,7 @@ library heap_profile_element;
import 'dart:async';
import 'dart:html';
import 'observatory_element.dart';
+import 'package:charted/charted.dart';
import 'package:observatory/app.dart';
import 'package:observatory/service.dart';
import 'package:observatory/elements.dart';
@@ -32,12 +33,11 @@ class HeapProfileElement extends ObservatoryElement {
@observable String lastAccumulatorReset = '---';
// Pie chart of new space usage.
- var _newPieDataTable;
var _newPieChart;
-
+ final _newPieChartRows = [];
// Pie chart of old space usage.
- var _oldPieDataTable;
var _oldPieChart;
+ final _oldPieChartRows = [];
@observable ClassSortedTable classTable;
var _classTableBody;
@@ -48,15 +48,18 @@ class HeapProfileElement extends ObservatoryElement {
@published Isolate isolate;
@observable ServiceMap profile;
- HeapProfileElement.created() : super.created() {
- // Create pie chart models.
- _newPieDataTable = new DataTable();
- _newPieDataTable.addColumn('string', 'Type');
- _newPieDataTable.addColumn('number', 'Size');
- _oldPieDataTable = new DataTable();
- _oldPieDataTable.addColumn('string', 'Type');
- _oldPieDataTable.addColumn('number', 'Size');
+ final _pieChartColumns = [
+ new ChartColumnSpec(label: 'Type', type: ChartColumnSpec.TYPE_STRING),
+ new ChartColumnSpec(label: 'Size', formatter: (v) => v.toString())
+ ];
+ HeapProfileElement.created() : super.created() {
+ _newPieChartRows.add(['Used', 0]);
+ _newPieChartRows.add(['Free', 0]);
+ _newPieChartRows.add(['External', 0]);
+ _oldPieChartRows.add(['Used', 0]);
+ _oldPieChartRows.add(['Free', 0]);
+ _oldPieChartRows.add(['External', 0]);
turnidge 2015/09/16 17:00:28 Couldl have a helper: initBlahPieChartRows(_newPi
Cutch 2015/09/28 20:58:17 Done.
// Create class table model.
var columns = [
new SortedTableColumn('Class'),
@@ -84,14 +87,31 @@ class HeapProfileElement extends ObservatoryElement {
classTable.sortColumnIndex = 2;
}
+ LayoutArea _makePieChart(String id, List rows) {
+ var wrapper = shadowRoot.querySelector(id);
+ var areaHost = wrapper.querySelector('.chart-host');
+ assert(areaHost != null);
+ var legendHost = wrapper.querySelector('.chart-legend-host');
+ assert(legendHost != null);
+ var series = new ChartSeries(id, [1], new PieChartRenderer());
turnidge 2015/09/16 17:00:28 Just curious, what is a ChartSeries?
Cutch 2015/09/28 20:58:17 It is "one or more columns of ChartData rendered t
+ var config = new ChartConfig([series], [0]);
+ config.minimumSize = new Rect(300, 300);
+ config.legend = new ChartLegend(legendHost, showValues: true);
+ var data = new ChartData(_pieChartColumns, rows);
+ var area = new LayoutArea(areaHost,
+ data,
+ config,
+ state: new ChartState(),
+ autoUpdate: false);
+ area.addChartBehavior(new AxisLabelTooltip());
+ return area;
+ }
+
@override
void attached() {
super.attached();
- // Grab the pie chart divs.
- _newPieChart = new Chart('PieChart',
- shadowRoot.querySelector('#newPieChart'));
- _oldPieChart = new Chart('PieChart',
- shadowRoot.querySelector('#oldPieChart'));
+ _newPieChart = _makePieChart('#new-pie-chart', _newPieChartRows);
+ _oldPieChart = _makePieChart('#old-pie-chart', _oldPieChartRows);
_classTableBody = shadowRoot.querySelector('#classTableBody');
_subscriptionFuture =
app.vm.listenEventStream(VM.kGCStream, _onEvent);
@@ -134,16 +154,12 @@ class HeapProfileElement extends ObservatoryElement {
void _updatePieCharts() {
assert(profile != null);
- _newPieDataTable.clearRows();
- _newPieDataTable.addRow(['Used', isolate.newSpace.used]);
- _newPieDataTable.addRow(['Free',
- isolate.newSpace.capacity - isolate.newSpace.used]);
- _newPieDataTable.addRow(['External', isolate.newSpace.external]);
- _oldPieDataTable.clearRows();
- _oldPieDataTable.addRow(['Used', isolate.oldSpace.used]);
- _oldPieDataTable.addRow(['Free',
- isolate.oldSpace.capacity - isolate.oldSpace.used]);
- _oldPieDataTable.addRow(['External', isolate.oldSpace.external]);
+ _newPieChartRows[0][1] = isolate.newSpace.used;
+ _newPieChartRows[1][1] = isolate.newSpace.capacity - isolate.newSpace.used;
+ _newPieChartRows[2][1] = isolate.newSpace.external;
+ _oldPieChartRows[0][1] = isolate.oldSpace.used;
+ _oldPieChartRows[1][1] = isolate.oldSpace.capacity - isolate.oldSpace.used;
+ _oldPieChartRows[2][1] = isolate.oldSpace.external;
turnidge 2015/09/16 17:00:28 Consider naming the indices: 0 -> kUsedIdx, 1 -> k
Cutch 2015/09/28 20:58:17 Done.
}
void _updateClasses() {
@@ -268,8 +284,8 @@ class HeapProfileElement extends ObservatoryElement {
}
void _drawCharts() {
- _newPieChart.draw(_newPieDataTable);
- _oldPieChart.draw(_oldPieDataTable);
+ _newPieChart.draw();
+ _oldPieChart.draw();
}
@observable void changeSort(Event e, var detail, Element target) {
« no previous file with comments | « runtime/observatory/lib/src/elements/debugger.dart ('k') | runtime/observatory/lib/src/elements/heap_profile.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698