Index: Source/devtools/front_end/ui/SortableDataGrid.js |
diff --git a/Source/devtools/front_end/ui/SortableDataGrid.js b/Source/devtools/front_end/ui/SortableDataGrid.js |
index f2178bbb4ecd7e193f8f0ebaae846dc4f50d8457..17b3a78a50de75697dc4527a4a14e3b2820f16bb 100644 |
--- a/Source/devtools/front_end/ui/SortableDataGrid.js |
+++ b/Source/devtools/front_end/ui/SortableDataGrid.js |
@@ -4,7 +4,7 @@ |
/** |
* @constructor |
- * @extends {WebInspector.DataGrid} |
+ * @extends {WebInspector.ViewportDataGrid} |
* @param {!Array.<!WebInspector.DataGrid.ColumnDescriptor>} columnsArray |
* @param {function(!WebInspector.DataGridNode, string, string, string)=} editCallback |
* @param {function(!WebInspector.DataGridNode)=} deleteCallback |
@@ -13,7 +13,7 @@ |
*/ |
WebInspector.SortableDataGrid = function(columnsArray, editCallback, deleteCallback, refreshCallback, contextMenuCallback) |
{ |
- WebInspector.DataGrid.call(this, columnsArray, editCallback, deleteCallback, refreshCallback, contextMenuCallback); |
+ WebInspector.ViewportDataGrid.call(this, columnsArray, editCallback, deleteCallback, refreshCallback, contextMenuCallback); |
/** @type {!WebInspector.SortableDataGrid.NodeComparator} */ |
this._sortingFunction = WebInspector.SortableDataGrid.TrivialComparator; |
this.setRootNode(new WebInspector.SortableDataGridNode()); |
@@ -146,63 +146,27 @@ WebInspector.SortableDataGrid.prototype = { |
*/ |
sortNodes: function(comparator, reverseMode) |
{ |
- var sortingFunction = WebInspector.SortableDataGrid.Comparator.bind(null, comparator, reverseMode); |
- this._sortingFunction = sortingFunction; |
- |
- /** |
- * @param {!Element} a |
- * @param {!Element} b |
- * @return {number} |
- */ |
- function comparatorWrapper(a, b) |
- { |
- return sortingFunction(a._dataGridNode, b._dataGridNode); |
- } |
- |
- var tbody = this.dataTableBody; |
- var tbodyParent = tbody.parentElement; |
- tbodyParent.removeChild(tbody); |
- |
- var childNodes = tbody.childNodes; |
- var sortedRows = Array.prototype.slice.call(childNodes, 1, childNodes.length - 1); |
- sortedRows.sort(comparatorWrapper); |
- var sortedRowsLength = sortedRows.length; |
- |
- var rootNode = this.rootNode(); |
- rootNode.children = []; |
- tbody.removeChildren(); |
- tbody.appendChild(this._topFillerRow); |
- var previousSiblingNode = null; |
- for (var i = 0; i < sortedRowsLength; ++i) { |
- var row = sortedRows[i]; |
- var node = row._dataGridNode; |
- node.previousSibling = previousSiblingNode; |
- if (previousSiblingNode) |
- previousSiblingNode.nextSibling = node; |
- rootNode.children.push(node); |
- tbody.appendChild(row); |
- previousSiblingNode = node; |
- } |
- if (previousSiblingNode) |
- previousSiblingNode.nextSibling = null; |
- |
- tbody.appendChild(this._bottomFillerRow); |
- tbodyParent.appendChild(tbody); |
+ this._sortingFunction = WebInspector.SortableDataGrid.Comparator.bind(null, comparator, reverseMode); |
+ var children = this._rootNode.children; |
+ children.sort(this._sortingFunction); |
+ for (var i = 0; i < children.length; ++i) |
+ children[i].recalculateSiblings(i); |
+ this.scheduleUpdate(); |
}, |
- __proto__: WebInspector.DataGrid.prototype |
+ __proto__: WebInspector.ViewportDataGrid.prototype |
} |
/** |
* @constructor |
- * @extends {WebInspector.DataGridNode} |
+ * @extends {WebInspector.ViewportDataGridNode} |
* @param {?Object.<string, *>=} data |
*/ |
WebInspector.SortableDataGridNode = function(data) |
{ |
- WebInspector.DataGridNode.call(this, data, false); |
+ WebInspector.ViewportDataGridNode.call(this, data); |
} |
WebInspector.SortableDataGridNode.prototype = { |
- __proto__: WebInspector.DataGridNode.prototype |
+ __proto__: WebInspector.ViewportDataGridNode.prototype |
} |