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

Unified Diff: Source/devtools/front_end/TimelineFlameChart.js

Issue 183763036: TimelineFlameChart: selectRecord implementation (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: done Created 6 years, 10 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: Source/devtools/front_end/TimelineFlameChart.js
diff --git a/Source/devtools/front_end/TimelineFlameChart.js b/Source/devtools/front_end/TimelineFlameChart.js
index 2287221c39bdd2d3433c5018877aefc9b61f50af..0f2c30a91b3c7b3b3b73380c53b6e80d474161f9 100644
--- a/Source/devtools/front_end/TimelineFlameChart.js
+++ b/Source/devtools/front_end/TimelineFlameChart.js
@@ -176,6 +176,9 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
/** @type {!Array.<string>} */
this._entryColors = [];
+
+ /** @type {!Array.<!WebInspector.TimelineModel.Record>} */
+ this._entryRecords = [];
},
/**
@@ -235,6 +238,7 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
this._timelineData.entryLevels[index] = level;
this._timelineData.entryTotalTimes[index] = endTime - startTime;
this._entryColors[index] = color;
+ this._entryRecords[index] = record;
},
/**
@@ -261,7 +265,7 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
*/
entryData: function(entryIndex)
{
- return null;
+ return this._entryRecords[entryIndex];
pfeldman 2014/03/05 12:13:02 You should express selection in terms of entryInde
},
/**
@@ -271,6 +275,19 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
entryColor: function(entryIndex)
{
return this._entryColors[entryIndex];
+ },
+
+ /**
+ * @param {number} entryIndex
+ * @return {!{startTimeOffset: number, endTimeOffset: number}}
+ */
+ highlightTimeRange: function(entryIndex)
pfeldman 2014/03/05 12:13:02 What is the semantics of this method?
loislo 2014/03/05 12:57:55 As I've told you we generates a few entries per si
+ {
+ var record = this._entryRecords[entryIndex];
+ return {
+ startTimeOffset: record.startTime - this._zeroTime,
+ endTimeOffset: (record.endTime || record.startTime) - this._zeroTime
+ };
}
}
@@ -278,7 +295,7 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
* @constructor
* @extends {WebInspector.View}
* @implements {WebInspector.TimelineModeView}
- * @implements {WebInspector.TimeRangeController}
+ * @implements {WebInspector.FlameChartDelegate}
* @param {!WebInspector.TimelineModeViewDelegate} delegate
* @param {!WebInspector.TimelineModel} model
* @param {!WebInspector.TimelineFrameModel} frameModel
@@ -287,12 +304,15 @@ WebInspector.TimelineFlameChartDataProvider.prototype = {
WebInspector.TimelineFlameChart = function(delegate, model, frameModel, mainThread)
{
WebInspector.View.call(this);
+ this.element.classList.add("timeline-flamechart");
+ this.registerRequiredCSS("flameChart.css");
this._delegate = delegate;
this._model = model;
this._dataProvider = new WebInspector.TimelineFlameChartDataProvider(model, frameModel, mainThread);
this._mainView = new WebInspector.FlameChart.MainPane(this._dataProvider, this, true, true);
this._mainView.show(this.element);
this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted, this._onRecordingStarted, this);
+ this._mainView.addEventListener(WebInspector.FlameChart.Events.EntrySelected, this._onEntrySelected, this);
}
WebInspector.TimelineFlameChart.prototype = {
@@ -384,6 +404,45 @@ WebInspector.TimelineFlameChart.prototype = {
*/
setSelectedRecord: function(record)
{
+ var entryRecords = this._dataProvider._entryRecords;
+ for (var entryIndex = 0; entryIndex < entryRecords.length; ++entryIndex) {
+ if (entryRecords[entryIndex] === record) {
+ this._mainView.setSelectedEntry(entryIndex);
+ return;
+ }
+ }
+ this._mainView.setSelectedEntry(-1);
+ if (this._selectedElement) {
+ this._selectedElement.remove();
+ delete this._selectedElement;
+ }
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _onEntrySelected: function(event)
+ {
+ var record = /** @type {!WebInspector.TimelineModel.Record} */(event.data);
+ this._delegate.selectRecord(record);
+ },
+
+ /**
+ * @param {number} entryIndex
+ * @param {number} x
+ * @param {number} y
+ * @param {number} width
+ * @param {number} height
+ */
+ drawSelectedElement: function(entryIndex, x, y, width, height)
+ {
+ if (!this._selectedElement)
+ this._selectedElement = this.element.createChild("div", "timeline-flamechart-selected-element");
pfeldman 2014/03/05 12:13:02 This element must belong to the FlameChard and be
loislo 2014/03/05 12:57:55 Done.
+ var style = this._selectedElement.style;
+ style.left = x + "px";
+ style.top = y + "px";
+ style.width = width + "px";
+ style.height = height + "px";
},
__proto__: WebInspector.View.prototype

Powered by Google App Engine
This is Rietveld 408576698