15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 34a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel.Database} database 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDatabaseView = function(database) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("indexedDBViews.css"); 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("indexed-db-database-view"); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersListElement = this.element.createChild("ol", "outline-disclosure"); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline = new TreeOutline(this._headersListElement); 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.expandTreeElementsWhenArrowing = true; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._securityOriginTreeElement = new TreeElement("", null, false); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._securityOriginTreeElement.selectable = false; 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._securityOriginTreeElement); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nameTreeElement = new TreeElement("", null, false); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nameTreeElement.selectable = false; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._nameTreeElement); 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._intVersionTreeElement = new TreeElement("", null, false); 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._intVersionTreeElement.selectable = false; 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._intVersionTreeElement); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._stringVersionTreeElement = new TreeElement("", null, false); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._stringVersionTreeElement.selectable = false; 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._stringVersionTreeElement); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(database); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDatabaseView.prototype = { 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _formatHeader: function(name, value) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fragment = document.createDocumentFragment(); 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.createChild("div", "attribute-name").textContent = name + ":"; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.createChild("div", "attribute-value source-code").textContent = value; 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fragment; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshDatabase: function() 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._securityOriginTreeElement.title = this._formatHeader(WebInspector.UIString("Security origin"), this._database.databaseId.securityOrigin); 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nameTreeElement.title = this._formatHeader(WebInspector.UIString("Name"), this._database.databaseId.name); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._stringVersionTreeElement.title = this._formatHeader(WebInspector.UIString("String Version"), this._database.version); 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._intVersionTreeElement.title = this._formatHeader(WebInspector.UIString("Integer Version"), this._database.intVersion); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 89a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel.Database} database 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) update: function(database) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._database = database; 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshDatabase(); 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 97d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 103d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 104a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel} model 105a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel.DatabaseId} databaseId 106a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel.ObjectStore} objectStore 107a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.IndexedDBModel.Index} index 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDataView = function(model, databaseId, objectStore, index) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("indexedDBViews.css"); 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._model = model; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._databaseId = databaseId; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isIndex = !!index; 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 118a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("indexed-db-data-view"); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var editorToolbar = this._createEditorToolbar(); 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.appendChild(editorToolbar); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGridContainer = this.element.createChild("div", "fill"); 124a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._dataGridContainer.classList.add("data-grid-container"); 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString("Refresh"), "refresh-storage-status-bar-item"); 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshButton.addEventListener("click", this._refreshButtonClicked, this); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._clearButton = new WebInspector.StatusBarButton(WebInspector.UIString("Clear object store"), "clear-storage-status-bar-item"); 130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._clearButton.addEventListener("click", this._clearButtonClicked, this); 131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageSize = 50; 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._skipCount = 0; 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(objectStore, index); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._entries = []; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDataView.prototype = { 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 141a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.DataGrid} 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createDataGrid: function() 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keyPath = this._isIndex ? this._index.keyPath : this._objectStore.keyPath; 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var columns = []; 148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) columns.push({id: "number", title: WebInspector.UIString("#"), width: "50px"}); 149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) columns.push({id: "key", titleDOMFragment: this._keyColumnHeaderFragment(WebInspector.UIString("Key"), keyPath)}); 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._isIndex) 151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) columns.push({id: "primaryKey", titleDOMFragment: this._keyColumnHeaderFragment(WebInspector.UIString("Primary key"), this._objectStore.keyPath)}); 152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) columns.push({id: "value", title: WebInspector.UIString("Value")}); 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var dataGrid = new WebInspector.DataGrid(columns); 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return dataGrid; 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} prefix 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {*} keyPath 161a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!DocumentFragment} 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _keyColumnHeaderFragment: function(prefix, keyPath) 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keyColumnHeaderFragment = document.createDocumentFragment(); 1667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild(prefix); 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (keyPath === null) 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return keyColumnHeaderFragment; 169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild(" (" + WebInspector.UIString("Key path: ")); 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (keyPath instanceof Array) { 1727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild("["); 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < keyPath.length; ++i) { 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (i != 0) 1757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild(", "); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) keyColumnHeaderFragment.appendChild(this._keyPathStringFragment(keyPath[i])); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild("]"); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keyPathString = /** @type {string} */ (keyPath); 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) keyColumnHeaderFragment.appendChild(this._keyPathStringFragment(keyPathString)); 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci keyColumnHeaderFragment.createTextChild(")"); 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return keyColumnHeaderFragment; 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} keyPathString 189a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!DocumentFragment} 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _keyPathStringFragment: function(keyPathString) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keyPathStringFragment = document.createDocumentFragment(); 194197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch keyPathStringFragment.createTextChild("\""); 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keyPathSpan = keyPathStringFragment.createChild("span", "source-code console-formatted-string"); 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) keyPathSpan.textContent = keyPathString; 197197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch keyPathStringFragment.createTextChild("\""); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return keyPathStringFragment; 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 202a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createEditorToolbar: function() 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var editorToolbar = document.createElement("div"); 207a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) editorToolbar.classList.add("status-bar"); 208a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) editorToolbar.classList.add("data-view-toolbar"); 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton = editorToolbar.createChild("button", "back-button"); 211a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._pageBackButton.classList.add("status-bar-item"); 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton.title = WebInspector.UIString("Show previous page."); 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton.disabled = true; 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton.appendChild(document.createElement("img")); 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton.addEventListener("click", this._pageBackButtonClicked.bind(this), false); 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) editorToolbar.appendChild(this._pageBackButton); 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton = editorToolbar.createChild("button", "forward-button"); 219a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._pageForwardButton.classList.add("status-bar-item"); 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton.title = WebInspector.UIString("Show next page."); 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton.disabled = true; 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton.appendChild(document.createElement("img")); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton.addEventListener("click", this._pageForwardButtonClicked.bind(this), false); 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) editorToolbar.appendChild(this._pageForwardButton); 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._keyInputElement = editorToolbar.createChild("input", "key-input"); 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._keyInputElement.placeholder = WebInspector.UIString("Start from key"); 2285d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._keyInputElement.addEventListener("paste", this._keyInputChanged.bind(this), false); 2295d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._keyInputElement.addEventListener("cut", this._keyInputChanged.bind(this), false); 2305d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._keyInputElement.addEventListener("keypress", this._keyInputChanged.bind(this), false); 2315d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this._keyInputElement.addEventListener("keydown", this._keyInputChanged.bind(this), false); 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return editorToolbar; 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _pageBackButtonClicked: function() 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._skipCount = Math.max(0, this._skipCount - this._pageSize); 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateData(false); 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _pageForwardButtonClicked: function() 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._skipCount = this._skipCount + this._pageSize; 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateData(false); 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _keyInputChanged: function() 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.setTimeout(this._updateData.bind(this, false), 0); 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 254a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.IndexedDBModel.ObjectStore} objectStore 255a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.IndexedDBModel.Index} index 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) update: function(objectStore, index) 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._objectStore = objectStore; 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._index = index; 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._dataGrid) 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGrid.detach(); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGrid = this._createDataGrid(); 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGrid.show(this._dataGridContainer); 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._skipCount = 0; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateData(true); 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} keyString 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _parseKey: function(keyString) 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result; 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = JSON.parse(keyString); 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch (e) { 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = keyString; 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} force 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _updateData: function(force) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var key = this._parseKey(this._keyInputElement.value); 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pageSize = this._pageSize; 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var skipCount = this._skipCount; 293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshButton.setEnabled(false); 294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._clearButton.setEnabled(!this._isIndex); 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!force && this._lastKey === key && this._lastPageSize === pageSize && this._lastSkipCount === skipCount) 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._lastKey !== key || this._lastPageSize !== pageSize) { 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) skipCount = 0; 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._skipCount = 0; 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._lastKey = key; 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._lastPageSize = pageSize; 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._lastSkipCount = skipCount; 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 308a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!WebInspector.IndexedDBModel.Entry>} entries 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} hasMore 31009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.IDBDataView} 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(entries, hasMore) 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 314926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshButton.setEnabled(true); 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.clear(); 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._entries = entries; 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < entries.length; ++i) { 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var data = {}; 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data["number"] = i + skipCount; 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data["key"] = entries[i].key; 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data["primaryKey"] = entries[i].primaryKey; 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data["value"] = entries[i].value; 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var primaryKey = JSON.stringify(this._isIndex ? entries[i].primaryKey : entries[i].key); 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = new WebInspector.IDBDataGridNode(data); 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGrid.rootNode().appendChild(node); 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageBackButton.disabled = skipCount === 0; 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pageForwardButton.disabled = !hasMore; 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 333c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var idbKeyRange = key ? window.IDBKeyRange.lowerBound(key) : null; 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._isIndex) 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._model.loadIndexData(this._databaseId, this._objectStore.name, this._index.name, idbKeyRange, skipCount, pageSize, callback.bind(this)); 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._model.loadObjectStoreData(this._databaseId, this._objectStore.name, idbKeyRange, skipCount, pageSize, callback.bind(this)); 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshButtonClicked: function(event) 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateData(true); 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _clearButtonClicked: function(event) 346926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 34709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 34809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.IDBDataView} 34909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function cleared() { 351926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._clearButton.setEnabled(true); 352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._updateData(true); 353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 354926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._clearButton.setEnabled(false); 355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._model.clearObjectStore(this._databaseId, this._objectStore.name, cleared.bind(this)); 356926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get statusBarItems() 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 360926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return [this._refreshButton.element, this._clearButton.element]; 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clear: function() 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._dataGrid.rootNode().removeChildren(); 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._entries = []; 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 369d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.DataGridNode} 375e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @param {!Object.<string, *>} data 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDataGridNode = function(data) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.DataGridNode.call(this, data, false); 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selectable = false; 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.IDBDataGridNode.prototype = { 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 385a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createCell: function(columnIdentifier) 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cell = WebInspector.DataGridNode.prototype.createCell.call(this, columnIdentifier); 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value = this.data[columnIdentifier]; 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (columnIdentifier) { 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "value": 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "key": 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "primaryKey": 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cell.removeChildren(); 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formatValue(cell, value); 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) default: 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return cell; 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _formatValue: function(cell, value) 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = value.subtype || value.type; 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var contents = cell.createChild("div", "source-code console-formatted-" + type); 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (type) { 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "object": 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "array": 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var section = new WebInspector.ObjectPropertiesSection(value, value.description) 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) section.editable = false; 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) section.skipProto = true; 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents.appendChild(section.element); 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "string": 419a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) contents.classList.add("primitive-value"); 420197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch contents.createTextChildren("\"", value.description, "\""); 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) default: 423a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) contents.classList.add("primitive-value"); 424197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch contents.createTextChild(value.description); 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.DataGridNode.prototype 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 430