⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasespanel.js

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2007, 2008 Apple Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1.  Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * 2.  Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of *     its contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */WebInspector.DatabasesPanel = function(database){    WebInspector.Panel.call(this);    this.sidebarElement = document.createElement("div");    this.sidebarElement.id = "databases-sidebar";    this.sidebarElement.className = "sidebar";    this.element.appendChild(this.sidebarElement);    this.sidebarResizeElement = document.createElement("div");    this.sidebarResizeElement.className = "sidebar-resizer-vertical";    this.sidebarResizeElement.addEventListener("mousedown", this._startSidebarDragging.bind(this), false);    this.element.appendChild(this.sidebarResizeElement);    this.sidebarTreeElement = document.createElement("ol");    this.sidebarTreeElement.className = "sidebar-tree";    this.sidebarElement.appendChild(this.sidebarTreeElement);    this.sidebarTree = new TreeOutline(this.sidebarTreeElement);    this.databasesListTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("DATABASES"), {}, true);    this.sidebarTree.appendChild(this.databasesListTreeElement);    this.databasesListTreeElement.expand();    this.localStorageListTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("LOCAL STORAGE"), {}, true);    this.sidebarTree.appendChild(this.localStorageListTreeElement);    this.localStorageListTreeElement.expand();    this.sessionStorageListTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("SESSION STORAGE"), {}, true);    this.sidebarTree.appendChild(this.sessionStorageListTreeElement);    this.sessionStorageListTreeElement.expand();    this.storageViews = document.createElement("div");    this.storageViews.id = "storage-views";    this.element.appendChild(this.storageViews);    this.storageViewStatusBarItemsContainer = document.createElement("div");    this.storageViewStatusBarItemsContainer.id = "storage-view-status-bar-items";    this.reset();}WebInspector.DatabasesPanel.prototype = {    toolbarItemClass: "databases",    get toolbarItemLabel()    {        return WebInspector.UIString("Databases");    },    get statusBarItems()    {        return [this.storageViewStatusBarItemsContainer];    },    show: function()    {        WebInspector.Panel.prototype.show.call(this);        this._updateSidebarWidth();    },    reset: function()    {        if (this._databases) {            var databasesLength = this._databases.length;            for (var i = 0; i < databasesLength; ++i) {                var database = this._databases[i];                delete database._tableViews;                delete database._queryView;            }        }        this._databases = [];        if (this._domStorage) {            var domStorageLength = this._domStorage.length;            for (var i = 0; i < domStorageLength; ++i) {                var domStorage = this._domStorage[i];                delete domStorage._domStorageView;            }        }        this._domStorage = [];        this.databasesListTreeElement.removeChildren();        this.localStorageListTreeElement.removeChildren();        this.sessionStorageListTreeElement.removeChildren();        this.storageViews.removeChildren();                this.storageViewStatusBarItemsContainer.removeChildren();    },    handleKeyEvent: function(event)    {        this.sidebarTree.handleKeyEvent(event);    },    addDatabase: function(database)    {        this._databases.push(database);        var databaseTreeElement = new WebInspector.DatabaseSidebarTreeElement(database);        database._databasesTreeElement = databaseTreeElement;        this.databasesListTreeElement.appendChild(databaseTreeElement);    },    addDOMStorage: function(domStorage)    {        this._domStorage.push(domStorage);        var domStorageTreeElement = new WebInspector.DOMStorageSidebarTreeElement(domStorage);        domStorage._domStorageTreeElement = domStorageTreeElement;        if (domStorage.isLocalStorage)            this.localStorageListTreeElement.appendChild(domStorageTreeElement);        else            this.sessionStorageListTreeElement.appendChild(domStorageTreeElement);    },    showDatabase: function(database, tableName)    {        if (!database)            return;        if (this.visibleView)            this.visibleView.hide();        var view;        if (tableName) {            if (!("_tableViews" in database))                database._tableViews = {};            view = database._tableViews[tableName];            if (!view) {                view = new WebInspector.DatabaseTableView(database, tableName);                database._tableViews[tableName] = view;            }        } else {            view = database._queryView;            if (!view) {                view = new WebInspector.DatabaseQueryView(database);                database._queryView = view;            }        }        view.show(this.storageViews);        this.visibleView = view;        this.storageViewStatusBarItemsContainer.removeChildren();        var statusBarItems = view.statusBarItems;        for (var i = 0; i < statusBarItems.length; ++i)            this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]);    },    showDOMStorage: function(domStorage)    {        if (!domStorage)            return;        if (this.visibleView)            this.visibleView.hide();        var view;        view = domStorage._domStorageView;        if (!view) {            view = new WebInspector.DOMStorageItemsView(domStorage);            domStorage._domStorageView = view;        }        view.show(this.storageViews);        this.visibleView = view;        this.storageViewStatusBarItemsContainer.removeChildren();        var statusBarItems = view.statusBarItems;        for (var i = 0; i < statusBarItems.length; ++i)            this.storageViewStatusBarItemsContainer.appendChild(statusBarItems[i]);    },    closeVisibleView: function()    {        if (this.visibleView)            this.visibleView.hide();        delete this.visibleView;    },    updateDatabaseTables: function(database)    {        if (!database || !database._databasesTreeElement)            return;        database._databasesTreeElement.shouldRefreshChildren = true;        if (!("_tableViews" in database))            return;        var tableNamesHash = {};        var tableNames = database.tableNames;        var tableNamesLength = tableNames.length;        for (var i = 0; i < tableNamesLength; ++i)            tableNamesHash[tableNames[i]] = true;        for (var tableName in database._tableViews) {            if (!(tableName in tableNamesHash)) {                if (this.visibleView === database._tableViews[tableName])                    this.closeVisibleView();                delete database._tableViews[tableName];            }        }    },    dataGridForResult: function(result)    {        if (!result.rows.length)            return null;        var columns = {};        var rows = result.rows;        for (var columnIdentifier in rows.item(0)) {            var column = {};            column.width = columnIdentifier.length;            column.title = columnIdentifier;            columns[columnIdentifier] = column;        }        var nodes = [];        var length = rows.length;        for (var i = 0; i < length; ++i) {            var data = {};            var row = rows.item(i);            for (var columnIdentifier in row) {                // FIXME: (Bug 19439) We should specially format SQL NULL here                // (which is represented by JavaScript null here, and turned

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -