Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
| index 37ad46720da2e01636d05e7f6101db8426a629b3..50b9ed179716a0971edabc8e853e4cfacada3840 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
| @@ -43,8 +43,8 @@ WebInspector.ConsoleViewMessage = function(consoleMessage, linkifier, nestingLev |
| this._closeGroupDecorationCount = 0; |
| this._nestingLevel = nestingLevel; |
| - /** @type {!Array.<!WebInspector.DataGrid>} */ |
| - this._dataGrids = []; |
| + /** @type {?WebInspector.DataGrid} */ |
| + this._dataGrid = null; |
| /** @type {!Object.<string, function(!WebInspector.RemoteObject, !Element, boolean=)>} */ |
| this._customFormatters = { |
| @@ -89,8 +89,8 @@ WebInspector.ConsoleViewMessage.prototype = { |
| */ |
| wasShown: function() |
| { |
| - for (var i = 0; this._dataGrids && i < this._dataGrids.length; ++i) |
| - this._dataGrids[i].updateWidths(); |
| + if (this._dataGrid) |
| + this._dataGrid.updateWidths(); |
| this._isVisible = true; |
| }, |
| @@ -98,8 +98,8 @@ WebInspector.ConsoleViewMessage.prototype = { |
| { |
| if (!this._isVisible) |
| return; |
| - for (var i = 0; this._dataGrids && i < this._dataGrids.length; ++i) |
| - this._dataGrids[i].onResize(); |
| + if (this._dataGrid) |
| + this._dataGrid.onResize(); |
| }, |
| /** |
| @@ -141,6 +141,72 @@ WebInspector.ConsoleViewMessage.prototype = { |
| * @param {!WebInspector.ConsoleMessage} consoleMessage |
| * @return {!Element} |
| */ |
| + _formatMessageAsTable: function(consoleMessage) |
|
lushnikov
2016/09/30 21:30:47
_buildTableMessage:
luoe
2016/09/30 23:33:02
Done.
|
| + { |
| + var formattedResult = createElement("span"); |
| + var table = consoleMessage.parameters && consoleMessage.parameters.length ? consoleMessage.parameters[0] : null; |
| + if (table) |
| + table = this._parameterToRemoteObject(table, this._target()); |
| + if (!table || !table.preview) |
| + return this._buildMessageAnchor(formattedResult, consoleMessage); |
| + |
| + var columnNames = []; |
| + var preview = table.preview; |
| + var rows = []; |
| + for (var i = 0; i < preview.properties.length; ++i) { |
| + var rowProperty = preview.properties[i]; |
| + var rowPreview = rowProperty.valuePreview; |
| + if (!rowPreview) |
| + continue; |
| + |
| + var rowValue = {}; |
| + const maxColumnsToRender = 20; |
| + for (var j = 0; j < rowPreview.properties.length; ++j) { |
| + var cellProperty = rowPreview.properties[j]; |
| + var columnRendered = columnNames.indexOf(cellProperty.name) !== -1; |
| + if (!columnRendered) { |
| + if (columnNames.length === maxColumnsToRender) |
| + continue; |
| + columnRendered = true; |
| + columnNames.push(cellProperty.name); |
| + } |
| + |
| + if (columnRendered) { |
| + var cellElement = this._renderPropertyPreviewOrAccessor(table, [rowProperty, cellProperty]); |
| + cellElement.classList.add("console-message-nowrap-below"); |
| + rowValue[cellProperty.name] = cellElement; |
| + } |
| + } |
| + rows.push([rowProperty.name, rowValue]); |
| + } |
| + |
| + var flatValues = []; |
| + for (var i = 0; i < rows.length; ++i) { |
| + var rowName = rows[i][0]; |
| + var rowValue = rows[i][1]; |
| + flatValues.push(rowName); |
| + for (var j = 0; j < columnNames.length; ++j) |
| + flatValues.push(rowValue[columnNames[j]]); |
| + } |
| + columnNames.unshift(WebInspector.UIString("(index)")); |
| + |
| + if (flatValues.length) { |
| + this._dataGrid = WebInspector.SortableDataGrid.create(columnNames, flatValues); |
| + |
| + var tableElement = formattedResult.createChild("div", "console-message-formatted-table"); |
| + var dataGridContainer = tableElement.createChild("span"); |
| + tableElement.appendChild(this._formatParameter(table, true, false)); |
| + this._dataGrid.renderInline(); |
| + dataGridContainer.appendChild(this._dataGrid.element); |
| + return this._buildMessageAnchor(formattedResult, consoleMessage); |
| + } |
| + return this._buildMessageAnchor(formattedResult, consoleMessage); |
| + }, |
| + |
| + /** |
| + * @param {!WebInspector.ConsoleMessage} consoleMessage |
| + * @return {!Element} |
| + */ |
| _buildMessage: function(consoleMessage) |
| { |
| var messageElement; |
| @@ -385,11 +451,6 @@ WebInspector.ConsoleViewMessage.prototype = { |
| formattedResult.createTextChild(" "); |
| } |
| - if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table) { |
| - formattedResult.appendChild(this._formatParameterAsTable(parameters)); |
| - return formattedResult; |
| - } |
| - |
| // Single parameter, or unused substitutions from above. |
| for (var i = 0; i < parameters.length; ++i) { |
| // Inline strings when formatting. |
| @@ -573,69 +634,6 @@ WebInspector.ConsoleViewMessage.prototype = { |
| }, |
| /** |
| - * @param {!Array.<!WebInspector.RemoteObject>} parameters |
| - * @return {!Element} |
| - */ |
| - _formatParameterAsTable: function(parameters) |
| - { |
| - var element = createElementWithClass("div", "console-message-formatted-table"); |
| - var table = parameters[0]; |
| - if (!table || !table.preview) |
| - return element; |
| - |
| - var columnNames = []; |
| - var preview = table.preview; |
| - var rows = []; |
| - for (var i = 0; i < preview.properties.length; ++i) { |
| - var rowProperty = preview.properties[i]; |
| - var rowPreview = rowProperty.valuePreview; |
| - if (!rowPreview) |
| - continue; |
| - |
| - var rowValue = {}; |
| - const maxColumnsToRender = 20; |
| - for (var j = 0; j < rowPreview.properties.length; ++j) { |
| - var cellProperty = rowPreview.properties[j]; |
| - var columnRendered = columnNames.indexOf(cellProperty.name) !== -1; |
| - if (!columnRendered) { |
| - if (columnNames.length === maxColumnsToRender) |
| - continue; |
| - columnRendered = true; |
| - columnNames.push(cellProperty.name); |
| - } |
| - |
| - if (columnRendered) { |
| - var cellElement = this._renderPropertyPreviewOrAccessor(table, [rowProperty, cellProperty]); |
| - cellElement.classList.add("console-message-nowrap-below"); |
| - rowValue[cellProperty.name] = cellElement; |
| - } |
| - } |
| - rows.push([rowProperty.name, rowValue]); |
| - } |
| - |
| - var flatValues = []; |
| - for (var i = 0; i < rows.length; ++i) { |
| - var rowName = rows[i][0]; |
| - var rowValue = rows[i][1]; |
| - flatValues.push(rowName); |
| - for (var j = 0; j < columnNames.length; ++j) |
| - flatValues.push(rowValue[columnNames[j]]); |
| - } |
| - |
| - var dataGridContainer = element.createChild("span"); |
| - element.appendChild(this._formatParameter(table, true, false)); |
| - if (!flatValues.length) |
| - return element; |
| - |
| - columnNames.unshift(WebInspector.UIString("(index)")); |
| - var dataGrid = WebInspector.SortableDataGrid.create(columnNames, flatValues); |
| - dataGrid.renderInline(); |
| - dataGridContainer.appendChild(dataGrid.element); |
| - this._dataGrids.push(dataGrid); |
| - return element; |
| - }, |
| - |
| - /** |
| * @param {!WebInspector.RemoteObject} output |
| * @param {!Element} elem |
| */ |
| @@ -974,7 +972,11 @@ WebInspector.ConsoleViewMessage.prototype = { |
| if (this._message.type === WebInspector.ConsoleMessage.MessageType.StartGroup || this._message.type === WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed) |
| contentElement.classList.add("console-group-title"); |
| - var formattedMessage = this._buildMessage(this._message); |
| + var formattedMessage; |
| + if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table) |
| + formattedMessage = this._formatMessageAsTable(this._message); |
| + else |
| + formattedMessage = this._buildMessage(this._message); |
| contentElement.appendChild(formattedMessage); |
| this.updateTimestamp(WebInspector.moduleSetting("consoleTimestampsEnabled").get()); |