Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js b/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| index 6e367413f2f10360c0bf58264fec750e0a453962..14b5341d24a28834cdf51f61a3b1ec8277c1d664 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| @@ -27,23 +27,24 @@ |
| /** |
| * @unrestricted |
| */ |
| -Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| +Resources.DOMStorageItemsView = class extends Resources.ItemsView { |
| constructor(domStorage) { |
| - super(Common.UIString('DOM Storage')); |
| + super(Common.UIString('DOM Storage'), 'domStoragePanel'); |
| this.domStorage = domStorage; |
|
dgozman
2017/01/26 22:21:09
While you are here, mind renaming to _domStorage?
eostroukhov
2017/01/26 23:35:46
Done.
|
| this.element.classList.add('storage-view', 'table'); |
| - this._deleteButton = new UI.ToolbarButton(Common.UIString('Delete'), 'largeicon-delete'); |
| - this._deleteButton.setEnabled(false); |
| - this._deleteButton.addEventListener(UI.ToolbarButton.Events.Click, this._deleteButtonClicked, this); |
| - |
| - this._clearButton = new UI.ToolbarButton(Common.UIString('Clear All'), 'largeicon-clear'); |
| - this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => this.domStorage.clear(), this); |
| + var columns = /** @type {!Array<!DataGrid.DataGrid.ColumnDescriptor>} */ ([ |
| + {id: 'key', title: Common.UIString('Key'), sortable: false, editable: true, weight: 50}, |
| + {id: 'value', title: Common.UIString('Value'), sortable: false, editable: true, weight: 50} |
| + ]); |
| + var dataGrid = new DataGrid.DataGrid(columns, this._editingCallback.bind(this), this._deleteCallback.bind(this)); |
|
dgozman
2017/01/26 22:21:09
this._dataGrid
eostroukhov
2017/01/26 23:35:45
Done.
|
| + dataGrid.setName('DOMStorageItemsView'); |
| - this._refreshButton = new UI.ToolbarButton(Common.UIString('Refresh'), 'largeicon-refresh'); |
| - this._refreshButton.addEventListener(UI.ToolbarButton.Events.Click, this._refreshButtonClicked, this); |
| + this._dataGrid = dataGrid; |
| + this.showFilterBar(); |
|
dgozman
2017/01/26 22:21:09
Why show filter by default?
eostroukhov
2017/01/26 23:35:46
I will rename to "showFilterUI" - what it does is
|
| + this._dataGrid.asWidget().show(this.element); |
| this.domStorage.addEventListener( |
| Resources.DOMStorage.Events.DOMStorageItemsCleared, this._domStorageItemsCleared, this); |
| @@ -56,24 +57,16 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| /** |
| * @override |
| - * @return {!Array.<!UI.ToolbarItem>} |
| - */ |
| - syncToolbarItems() { |
| - return [this._refreshButton, this._clearButton, this._deleteButton]; |
| - } |
| - |
| - /** |
| - * @override |
| */ |
| wasShown() { |
| - this._update(); |
| + this.onRefresh(); |
| } |
| /** |
| * @override |
| */ |
| willHide() { |
| - this._deleteButton.setEnabled(false); |
| + this._setDeleteEnabled(false); |
| } |
| /** |
| @@ -85,7 +78,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| this._dataGrid.rootNode().removeChildren(); |
| this._dataGrid.addCreationNode(false); |
| - this._deleteButton.setEnabled(false); |
| + this._setDeleteEnabled(false); |
| } |
| /** |
| @@ -103,7 +96,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| var childNode = children[i]; |
| if (childNode.data.key === storageData.key) { |
| rootNode.removeChild(childNode); |
| - this._deleteButton.setEnabled(children.length > 1); |
| + this._setDeleteEnabled(children.length > 1); |
| return; |
| } |
| } |
| @@ -120,7 +113,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| var rootNode = this._dataGrid.rootNode(); |
| var children = rootNode.children; |
| - this._deleteButton.setEnabled(true); |
| + this._setDeleteEnabled(true); |
| for (var i = 0; i < children.length; ++i) { |
| if (children[i].data.key === storageData.key) |
| @@ -157,59 +150,53 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| childNode.select(); |
| childNode.reveal(); |
| } |
| - this._deleteButton.setEnabled(true); |
| + this._setDeleteEnabled(true); |
| } |
| } |
| } |
| - _update() { |
| - this.detachChildWidgets(); |
| - this.domStorage.getItems(this._showDOMStorageItems.bind(this)); |
| - } |
| - |
| + /** |
| + * @param {?Object} error |
| + * @param {!Array<!Array<string>>} items |
| + */ |
| _showDOMStorageItems(error, items) { |
| if (error) |
| return; |
| - |
| - this._dataGrid = this._dataGridForDOMStorageItems(items); |
| - this._dataGrid.asWidget().show(this.element); |
| - this._deleteButton.setEnabled(this._dataGrid.rootNode().children.length > 1); |
| - } |
| - |
| - _dataGridForDOMStorageItems(items) { |
| - var columns = /** @type {!Array<!DataGrid.DataGrid.ColumnDescriptor>} */ ([ |
| - {id: 'key', title: Common.UIString('Key'), sortable: false, editable: true, weight: 50}, |
| - {id: 'value', title: Common.UIString('Value'), sortable: false, editable: true, weight: 50} |
| - ]); |
| - |
| - var nodes = []; |
| - |
| - var keys = []; |
| - var length = items.length; |
| - for (var i = 0; i < items.length; i++) { |
| - var key = items[i][0]; |
| - var value = items[i][1]; |
| - var node = new DataGrid.DataGridNode({key: key, value: value}, false); |
| + var rootNode = this._dataGrid.rootNode(); |
| + var selectedKey = null; |
| + for (var node of rootNode.children) { |
| + if (!node.selected) |
| + continue; |
| + selectedKey = node.data.key; |
| + break; |
| + } |
| + rootNode.removeChildren(); |
| + var selectedNode = null; |
| + for (var item of this.filter(items, item => `${item[0]} ${item[1]}`)) { |
|
dgozman
2017/01/26 22:21:09
Mind extracting |filteredItems| variable?
eostroukhov
2017/01/26 23:35:46
Done.
|
| + var key = item[0]; |
| + var value = item[1]; |
| + var node = new DataGrid.DataGridNode({key, value}, false); |
|
dgozman
2017/01/26 22:21:09
Don't use new language features without discussion
eostroukhov
2017/01/26 23:35:45
Assumed it was ok to use ES6 - I removed this feat
|
| node.selectable = true; |
| - nodes.push(node); |
| - keys.push(key); |
| + rootNode.appendChild(node); |
| + if (!selectedNode || key === selectedKey) { |
|
dgozman
2017/01/26 22:21:09
if (key === selectedKey)
selectedNode = node;
eostroukhov
2017/01/26 23:35:46
Done. Note that I kept "!selectedNode" to select t
|
| + if (selectedNode) |
| + selectedNode.selected = false; |
| + selectedNode = node; |
| + node.selected = true; |
| + } |
| } |
| + this._dataGrid.addCreationNode(false); |
| + this._setDeleteEnabled(!!selectedNode); |
| + } |
| - var dataGrid = new DataGrid.DataGrid(columns, this._editingCallback.bind(this), this._deleteCallback.bind(this)); |
| - dataGrid.setName('DOMStorageItemsView'); |
| - length = nodes.length; |
| - for (var i = 0; i < length; ++i) |
| - dataGrid.rootNode().appendChild(nodes[i]); |
| - dataGrid.addCreationNode(false); |
| - if (length > 0) |
| - nodes[0].selected = true; |
| - return dataGrid; |
| + _setDeleteEnabled(enabled) { |
| + this.deleteButton.setEnabled(enabled); |
|
dgozman
2017/01/26 22:21:09
Inline this.
eostroukhov
2017/01/26 23:35:45
Done.
|
| } |
| /** |
| - * @param {!Common.Event} event |
| + * @override |
| */ |
| - _deleteButtonClicked(event) { |
| + onDelete() { |
| if (!this._dataGrid || !this._dataGrid.selectedNode) |
| return; |
| @@ -217,10 +204,17 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| } |
| /** |
| - * @param {!Common.Event} event |
| + * @override |
| + */ |
| + onRefresh() { |
| + this.domStorage.getItems((error, items) => this._showDOMStorageItems(error, items)); |
| + } |
| + |
| + /** |
| + * @override |
| */ |
| - _refreshButtonClicked(event) { |
| - this._update(); |
| + onClearAll() { |
| + this.domStorage.clear(); |
| } |
| _editingCallback(editingNode, columnIdentifier, oldText, newText) { |