15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008 Apple 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 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.View} 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DatabaseQueryView = function(database) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View.call(this); 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.database = database; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("storage-view"); 37a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("query"); 38a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("monospace"); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.addEventListener("selectstart", this._selectStart.bind(this), false); 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement = document.createElement("div"); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement.className = "database-query-prompt"; 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement.appendChild(document.createElement("br")); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement.addEventListener("keydown", this._promptKeyDown.bind(this), true); 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.appendChild(this._promptElement); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt = new WebInspector.TextPromptWithHistory(this.completions.bind(this), " "); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.attach(this._promptElement); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.addEventListener("click", this._messagesClicked.bind(this), true); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DatabaseQueryView.Events = { 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SchemaUpdated: "SchemaUpdated" 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DatabaseQueryView.prototype = { 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _messagesClicked: function() 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.prompt.isCaretInsidePrompt() && window.getSelection().isCollapsed) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.moveCaretToEndOfPrompt(); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 65a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} proxyElement 66a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Range} wordRange 67fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch * @param {boolean} force 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(!Array.<string>, number=)} completionsReadyCallback 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 70fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch completions: function(proxyElement, wordRange, force, completionsReadyCallback) 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var prefix = wordRange.toString().toLowerCase(); 73f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) if (!prefix) 74f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) return; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var results = []; 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function accumulateMatches(textArray) 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < textArray.length; ++i) { 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var text = textArray[i].toLowerCase(); 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (text.length < prefix.length) 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!text.startsWith(prefix)) 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push(textArray[i]); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function tableNamesCallback(tableNames) 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) accumulateMatches(tableNames.map(function(name) { return name + " " })); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) accumulateMatches(["SELECT ", "FROM ", "WHERE ", "LIMIT ", "DELETE FROM ", "CREATE ", "DROP ", "TABLE ", "INDEX ", "UPDATE ", "INSERT INTO ", "VALUES ("]); 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) completionsReadyCallback(results); 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.database.getTableNames(tableNamesCallback); 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _selectStart: function(event) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._selectionTimeout) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearTimeout(this._selectionTimeout); 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.clearAutoComplete(); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 106e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) /** 107e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @this {WebInspector.DatabaseQueryView} 108e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) */ 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function moveBackIfOutside() 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._selectionTimeout; 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.prompt.isCaretInsidePrompt() && window.getSelection().isCollapsed) 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.moveCaretToEndOfPrompt(); 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.autoCompleteSoon(); 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._selectionTimeout = setTimeout(moveBackIfOutside.bind(this), 100); 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _promptKeyDown: function(event) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isEnterKey(event)) { 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._enterKeyPressed(event); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _enterKeyPressed: function(event) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.clearAutoComplete(true); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var query = this.prompt.text; 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!query.length) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.pushHistoryItem(query); 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prompt.text = ""; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.database.executeSql(query, this._queryFinished.bind(this, query), this._queryError.bind(this, query)); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _queryFinished: function(query, columnNames, values) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var dataGrid = WebInspector.DataGrid.createSortableDataGrid(columnNames, values); 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var trimmedQuery = query.trim(); 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (dataGrid) { 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) dataGrid.renderInline(); 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._appendViewQueryResult(trimmedQuery, dataGrid); 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataGrid.autoSizeColumns(5); 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (trimmedQuery.match(/^create /i) || trimmedQuery.match(/^drop table /i)) 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DatabaseQueryView.Events.SchemaUpdated, this.database); 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _queryError: function(query, errorMessage) 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._appendErrorQueryResult(query, errorMessage); 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 166a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.View} view 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _appendViewQueryResult: function(query, view) 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resultElement = this._appendQueryResult(query); 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) view.show(resultElement); 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement.scrollIntoView(false); 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} query 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} errorText 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _appendErrorQueryResult: function(query, errorText) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resultElement = this._appendQueryResult(query); 183a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) resultElement.classList.add("error") 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resultElement.textContent = errorText; 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._promptElement.scrollIntoView(false); 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _appendQueryResult: function(query) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var element = document.createElement("div"); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) element.className = "database-user-query"; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.insertBefore(element, this.prompt.proxyElement); 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var commandTextElement = document.createElement("span"); 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) commandTextElement.className = "database-query-text"; 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) commandTextElement.textContent = query; 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) element.appendChild(commandTextElement); 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resultElement = document.createElement("div"); 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resultElement.className = "database-query-result"; 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) element.appendChild(resultElement); 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return resultElement; 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.View.prototype 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 208