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

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

Issue 183763036: TimelineFlameChart: selectRecord implementation (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebaselined 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
« no previous file with comments | « Source/devtools/front_end/CPUProfileView.js ('k') | Source/devtools/front_end/TimelineFlameChart.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/FlameChart.js
diff --git a/Source/devtools/front_end/FlameChart.js b/Source/devtools/front_end/FlameChart.js
index 2209bb89fa08c6f0a3078df375fcc37a671adb3d..c1cfd9e146f21a059759c40ec84ddee3582f30e7 100644
--- a/Source/devtools/front_end/FlameChart.js
+++ b/Source/devtools/front_end/FlameChart.js
@@ -31,14 +31,14 @@
/**
* @interface
*/
-WebInspector.TimeRangeController = function() { }
+WebInspector.FlameChartDelegate = function() { }
-WebInspector.TimeRangeController.prototype = {
+WebInspector.FlameChartDelegate.prototype = {
/**
* @param {number} startTime
* @param {number} endTime
*/
- requestWindowTimes: function(startTime, endTime) { }
+ requestWindowTimes: function(startTime, endTime) { },
}
/**
@@ -160,12 +160,6 @@ WebInspector.FlameChartDataProvider.prototype = {
/**
* @param {number} entryIndex
- * @return {?Object}
- */
- entryData: function(entryIndex) { },
-
- /**
- * @param {number} entryIndex
* @return {?string}
*/
entryTitle: function(entryIndex) { },
@@ -196,7 +190,12 @@ WebInspector.FlameChartDataProvider.prototype = {
/**
* @return {number}
*/
- textPadding: function() { }
+ textPadding: function() { },
+
+ /**
+ * @return {!{startTimeOffset: number, endTimeOffset: number}}
+ */
+ highlightTimeRange: function(entryIndex) { }
}
/**
@@ -423,7 +422,7 @@ WebInspector.FlameChart.ColorGenerator.prototype = {
/**
* @constructor
* @extends {WebInspector.View}
- * @implements {WebInspector.TimeRangeController}
+ * @implements {WebInspector.FlameChartDelegate}
* @param {!WebInspector.FlameChartDataProvider} dataProvider
*/
WebInspector.FlameChart.OverviewPane = function(dataProvider)
@@ -575,15 +574,15 @@ WebInspector.FlameChart.OverviewPane.drawOverviewCanvas = function(dataProvider,
* @constructor
* @extends {WebInspector.View}
* @param {!WebInspector.FlameChartDataProvider} dataProvider
- * @param {!WebInspector.TimeRangeController} timeRangeController
+ * @param {!WebInspector.FlameChartDelegate} flameChartDelegate
* @param {boolean} isTopDown
* @param {boolean} timeBasedWindow
*/
-WebInspector.FlameChart.MainPane = function(dataProvider, timeRangeController, isTopDown, timeBasedWindow)
+WebInspector.FlameChart.MainPane = function(dataProvider, flameChartDelegate, isTopDown, timeBasedWindow)
{
WebInspector.View.call(this);
this.element.classList.add("flame-chart-main-pane");
- this._timeRangeController = timeRangeController;
+ this._flameChartDelegate = flameChartDelegate;
this._isTopDown = isTopDown;
this._timeBasedWindow = timeBasedWindow;
@@ -599,6 +598,7 @@ WebInspector.FlameChart.MainPane = function(dataProvider, timeRangeController, i
this._entryInfo = this.element.createChild("div", "profile-entry-info");
this._highlightElement = this.element.createChild("div", "flame-chart-highlight-element");
+ this._selectedElement = this.element.createChild("div", "flame-chart-selected-element");
this._dataProvider = dataProvider;
@@ -612,6 +612,7 @@ WebInspector.FlameChart.MainPane = function(dataProvider, timeRangeController, i
this._minWidth = 1;
this._paddingLeft = 15;
this._highlightedEntryIndex = -1;
+ this._selectedEntryIndex = -1;
}
WebInspector.FlameChart.MainPane.prototype = {
@@ -682,7 +683,7 @@ WebInspector.FlameChart.MainPane.prototype = {
);
var windowLeft = this._dragStartWindowLeft + timeShift;
var windowRight = this._dragStartWindowRight + timeShift;
- this._timeRangeController.requestWindowTimes(windowLeft, windowRight);
+ this._flameChartDelegate.requestWindowTimes(windowLeft, windowRight);
this._wasDragged = true;
},
@@ -698,7 +699,6 @@ WebInspector.FlameChart.MainPane.prototype = {
{
if (this._isDragging)
return;
-
var entryIndex = this._coordinatesToEntryIndex(event.offsetX, event.offsetY);
if (this._highlightedEntryIndex === entryIndex)
@@ -711,7 +711,7 @@ WebInspector.FlameChart.MainPane.prototype = {
this._highlightedEntryIndex = entryIndex;
- this._updateHighlightElement();
+ this._updateElementPosition(this._highlightElement, this._highlightedEntryIndex);
this._entryInfo.removeChildren();
if (this._highlightedEntryIndex === -1)
@@ -733,9 +733,7 @@ WebInspector.FlameChart.MainPane.prototype = {
return;
if (this._highlightedEntryIndex === -1)
return;
- var data = this._dataProvider.entryData(this._highlightedEntryIndex);
- if (data)
- this.dispatchEventToListeners(WebInspector.FlameChart.Events.EntrySelected, data);
+ this.dispatchEventToListeners(WebInspector.FlameChart.Events.EntrySelected, this._highlightedEntryIndex);
},
/**
@@ -760,7 +758,7 @@ WebInspector.FlameChart.MainPane.prototype = {
}
windowLeft = Number.constrain(windowLeft, this._zeroTime, this._totalTime + this._zeroTime);
windowRight = Number.constrain(windowRight, this._zeroTime, this._totalTime + this._zeroTime);
- this._timeRangeController.requestWindowTimes(windowLeft, windowRight);
+ this._flameChartDelegate.requestWindowTimes(windowLeft, windowRight);
},
/**
@@ -781,16 +779,16 @@ WebInspector.FlameChart.MainPane.prototype = {
var timelineData = this._timelineData();
if (!timelineData)
return -1;
- var cursorTime = this._cursorTime(x);
- var cursorLevel = this._isTopDown ? Math.floor(y / this._barHeight - 1) : Math.floor((this._canvas.height / window.devicePixelRatio - y) / this._barHeight);
+ var cursorTimeOffset = this._cursorTime(x) - this._zeroTime;
+ var cursorLevel = this._isTopDown ? Math.floor((y - WebInspector.FlameChart.DividersBarHeight) / this._barHeight) : Math.floor((this._canvas.height / window.devicePixelRatio - y) / this._barHeight);
var entryOffsets = timelineData.entryOffsets;
var entryTotalTimes = timelineData.entryTotalTimes;
var entryLevels = timelineData.entryLevels;
var length = entryOffsets.length;
for (var i = 0; i < length; ++i) {
- if (cursorTime < entryOffsets[i])
+ if (cursorTimeOffset < entryOffsets[i])
return -1;
- if (cursorTime < (entryOffsets[i] + entryTotalTimes[i])
+ if (cursorTimeOffset < (entryOffsets[i] + entryTotalTimes[i])
&& cursorLevel === entryLevels[i])
return i;
}
@@ -919,6 +917,7 @@ WebInspector.FlameChart.MainPane.prototype = {
}
context.fill();
}
+
context.textBaseline = "alphabetic";
context.fillStyle = "#333";
this._dotsWidth = context.measureText("\u2026").width;
@@ -949,28 +948,34 @@ WebInspector.FlameChart.MainPane.prototype = {
}
context.fillText(title, xText + textPadding, textBaseHeight - entryLevels[entryIndex] * this._barHeightDelta);
}
- this._updateHighlightElement();
+ this._updateElementPosition(this._highlightElement, this._highlightedEntryIndex);
+ this._updateElementPosition(this._selectedElement, this._selectedEntryIndex);
+ },
+
+ setSelectedEntry: function(entryIndex)
+ {
+ this._selectedEntryIndex = entryIndex;
+ this._updateElementPosition(this._selectedElement, this._selectedEntryIndex);
},
- _updateHighlightElement: function()
+ _updateElementPosition: function(element, entryIndex)
{
- if (this._highlightElement.parentElement)
- this._highlightElement.remove();
- var entryIndex = this._highlightedEntryIndex;
+ if (element.parentElement)
+ element.remove();
if (entryIndex === -1)
return;
var timelineData = this._timelineData();
- var entryOffset = timelineData.entryOffsets[entryIndex];
- var barX = this._offsetToPosition(entryOffset);
- var barRight = this._offsetToPosition(entryOffset + timelineData.entryTotalTimes[entryIndex]);
+ var timeRange = this._dataProvider.highlightTimeRange(entryIndex);
+ var barX = this._offsetToPosition(timeRange.startTimeOffset);
+ var barRight = this._offsetToPosition(timeRange.endTimeOffset);
var barWidth = Math.max(barRight - barX, this._minWidth);
-
- var style = this._highlightElement.style;
+ var barY = this._levelToHeight(timelineData.entryLevels[entryIndex]);
+ var style = element.style;
style.left = barX + "px";
+ style.top = barY + "px";
style.width = barWidth + "px";
- style.top = this._levelToHeight(timelineData.entryLevels[entryIndex]) + "px";
style.height = this._barHeight + "px";
- this.element.appendChild(this._highlightElement);
+ this.element.appendChild(element);
},
_offsetToPosition: function(offset)
@@ -1095,5 +1100,12 @@ WebInspector.FlameChart.MainPane.prototype = {
this._timelineGrid.updateDividers(this._calculator, offsets, true);
},
+ reset: function()
+ {
+ this._highlightedEntryIndex = -1;
+ this._selectedEntryIndex = -1;
+ this.update();
+ },
+
__proto__: WebInspector.View.prototype
}
« no previous file with comments | « Source/devtools/front_end/CPUProfileView.js ('k') | Source/devtools/front_end/TimelineFlameChart.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698