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

Unified Diff: Source/devtools/front_end/ui/DataGrid.js

Issue 411263003: DevTools: Extract SortableDataGrid. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 5 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/ui/DataGrid.js
diff --git a/Source/devtools/front_end/ui/DataGrid.js b/Source/devtools/front_end/ui/DataGrid.js
index 4329c573643bb0d62cd8e8bdb5227e87a5c489e4..cc73f45c27c1c03ccddd69207aa62104f6fda470 100644
--- a/Source/devtools/front_end/ui/DataGrid.js
+++ b/Source/devtools/front_end/ui/DataGrid.js
@@ -176,121 +176,6 @@ WebInspector.DataGrid.Align = {
Right: "right"
}
-/** @typedef {function(!WebInspector.DataGridNode, !WebInspector.DataGridNode):number} */
-WebInspector.DataGrid.NodeComparator;
-
-/**
- * @param {!WebInspector.DataGridNode} a
- * @param {!WebInspector.DataGridNode} b
- * @return {number}
- */
-WebInspector.DataGrid.TrivialComparator = function(a, b)
-{
- return 0;
-}
-
-/**
- * @param {string} columnIdentifier
- * @param {!WebInspector.DataGridNode} a
- * @param {!WebInspector.DataGridNode} b
- * @return {number}
- */
-WebInspector.DataGrid.NumericComparator = function(columnIdentifier, a, b)
-{
- var aValue = a.data[columnIdentifier];
- var bValue = b.data[columnIdentifier];
- var aNumber = Number(aValue instanceof Node ? aValue.textContent : aValue);
- var bNumber = Number(bValue instanceof Node ? bValue.textContent : bValue);
- return aNumber < bNumber ? -1 : (aNumber > bNumber ? 1 : 0);
-}
-
-/**
- * @param {string} columnIdentifier
- * @param {!WebInspector.DataGridNode} a
- * @param {!WebInspector.DataGridNode} b
- * @return {number}
- */
-WebInspector.DataGrid.StringComparator = function(columnIdentifier, a, b)
-{
- var aValue = a.data[columnIdentifier];
- var bValue = b.data[columnIdentifier];
- var aString = aValue instanceof Node ? aValue.textContent : String(aValue);
- var bString = bValue instanceof Node ? bValue.textContent : String(bValue);
- return aString < bString ? -1 : (aString > bString ? 1 : 0);
-}
-
-/**
- * @param {!WebInspector.DataGrid.NodeComparator} comparator
- * @param {boolean} reverseMode
- * @param {!WebInspector.DataGridNode} a
- * @param {!WebInspector.DataGridNode} b
- * @return {number}
- */
-WebInspector.DataGrid.Comparator = function(comparator, reverseMode, a, b)
-{
- if (a._data.summaryRow)
- return 1;
- if (b._data.summaryRow)
- return -1;
-
- return reverseMode ? comparator(b, a) : comparator(a, b);
-}
-
-/**
- * @param {!Array.<string>} columnNames
- * @param {!Array.<string>} values
- * @return {?WebInspector.DataGrid}
- */
-WebInspector.DataGrid.createSortableDataGrid = function(columnNames, values)
-{
- var numColumns = columnNames.length;
- if (!numColumns)
- return null;
-
- var columns = [];
- for (var i = 0; i < columnNames.length; ++i)
- columns.push({title: columnNames[i], width: columnNames[i].length, sortable: true});
-
- var nodes = [];
- for (var i = 0; i < values.length / numColumns; ++i) {
- var data = {};
- for (var j = 0; j < columnNames.length; ++j)
- data[j] = values[numColumns * i + j];
-
- var node = new WebInspector.DataGridNode(data, false);
- node.selectable = false;
- nodes.push(node);
- }
-
- var dataGrid = new WebInspector.DataGrid(columns);
- var length = nodes.length;
- for (var i = 0; i < length; ++i)
- dataGrid.rootNode().appendChild(nodes[i]);
-
- dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChanged, sortDataGrid);
-
- function sortDataGrid()
- {
- var nodes = dataGrid._rootNode.children;
- var sortColumnIdentifier = dataGrid.sortColumnIdentifier();
- if (!sortColumnIdentifier)
- return;
-
- var columnIsNumeric = true;
- for (var i = 0; i < nodes.length; i++) {
- var value = nodes[i].data[sortColumnIdentifier];
- if (isNaN(value instanceof Node ? value.textContent : value)) {
- columnIsNumeric = false;
- break;
- }
- }
-
- var comparator = columnIsNumeric ? WebInspector.DataGrid.NumericComparator : WebInspector.DataGrid.StringComparator;
- dataGrid.sortNodes(comparator.bind(null, sortColumnIdentifier), !dataGrid.isSortOrderAscending());
- }
- return dataGrid;
-}
-
WebInspector.DataGrid.prototype = {
_refreshHeader: function()
{
@@ -360,16 +245,6 @@ WebInspector.DataGrid.prototype = {
return this._rootNode;
},
- /**
- * @param {!WebInspector.DataGridNode} node
- */
- insertChild: function(node)
- {
- // Currently only non-hierarchical tables are supported.
- var parentNode = this._rootNode;
- parentNode.insertChild(node, parentNode.children.upperBound(node, this._sortingFunction));
- },
-
_ondblclick: function(event)
{
if (this._editing || this._editingNode)
@@ -867,50 +742,6 @@ WebInspector.DataGrid.prototype = {
this.rootNode().appendChild(this.creationNode);
},
- /**
- * @param {!WebInspector.DataGrid.NodeComparator} comparator
- * @param {boolean} reverseMode
- */
- sortNodes: function(comparator, reverseMode)
- {
- var sortingFunction = WebInspector.DataGrid.Comparator.bind(null, comparator, reverseMode);
- this._sortingFunction = sortingFunction;
-
- 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;
-
- this._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;
- this._rootNode.children.push(node);
- tbody.appendChild(row);
- previousSiblingNode = node;
- }
- if (previousSiblingNode)
- previousSiblingNode.nextSibling = null;
-
- tbody.appendChild(this._bottomFillerRow);
- tbodyParent.appendChild(tbody);
- },
-
_keyDown: function(event)
{
if (!this.selectedNode || event.shiftKey || event.metaKey || event.ctrlKey || this._editing)
« no previous file with comments | « Source/devtools/front_end/resources/DirectoryContentView.js ('k') | Source/devtools/front_end/ui/SortableDataGrid.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698