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

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui/ReportView.js

Issue 1952933002: DevTools: extract the report view to reuse in app manifest and service worker pane. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests fixed Created 4 years, 7 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: third_party/WebKit/Source/devtools/front_end/ui/ReportView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/ReportView.js b/third_party/WebKit/Source/devtools/front_end/ui/ReportView.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbb7979f8c7ae26510e33ae5b5dc32535a84cc6b
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/ui/ReportView.js
@@ -0,0 +1,176 @@
+// Copyright (c) 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @constructor
+ * @extends {WebInspector.VBox}
+ * @param {string} title
+ */
+WebInspector.ReportView = function(title)
+{
+ WebInspector.VBox.call(this, true);
+ this.registerRequiredCSS("ui/reportView.css");
+
+ var contentBox = this.contentElement.createChild("div", "report-content-box");
+ this._headerElement = contentBox.createChild("div", "report-header vbox");
+ this._headerElement.createChild("div", "report-title").textContent = title;
+
+ this._sectionList = contentBox.createChild("div", "vbox");
+}
+
+WebInspector.ReportView.prototype = {
+ /**
+ * @param {?string} url
+ */
+ setURL: function(url)
+ {
+ if (this._url === url)
+ return;
+ if (!this._urlElement)
+ this._urlElement = this._headerElement.createChild("div", "report-url link");
+
+ this._url = url;
+ this._urlElement.removeChildren();
+ if (url)
+ this._urlElement.appendChild(WebInspector.linkifyURLAsNode(url));
+ },
+
+ /**
+ * @return {!WebInspector.Toolbar}
+ */
+ createToolbar: function()
+ {
+ var toolbar = new WebInspector.Toolbar("");
+ this._headerElement.appendChild(toolbar.element);
+ return toolbar;
+ },
+
+ /**
+ * @param {string} title
+ * @return {!WebInspector.ReportView.Section}
+ */
+ appendSection: function(title)
+ {
+ var section = new WebInspector.ReportView.Section(title);
+ section.show(this._sectionList);
+ return section;
+ },
+
+ removeAllSection: function()
+ {
+ this._sectionList.removeChildren();
+ },
+
+ __proto__: WebInspector.VBox.prototype
+}
+
+/**
+ * @constructor
+ * @extends {WebInspector.VBox}
+ * @param {string} title
+ */
+WebInspector.ReportView.Section = function(title)
+{
+ WebInspector.VBox.call(this);
+ this.element.classList.add("report-section");
+ this._headerElement = this.element.createChild("div", "report-section-header");
+ this._titleElement = this._headerElement.createChild("div", "report-section-title");
+ this._titleElement.textContent = title;
+ this._fieldList = this.element.createChild("div", "vbox");
+ /** @type {!Map.<string, !Element>} */
+ this._fieldMap = new Map();
+}
+
+WebInspector.ReportView.Section.prototype = {
+ /**
+ * @param {string} title
+ */
+ setTitle: function(title)
+ {
+ if (this._titleElement.textContent !== title)
+ this._titleElement.textContent = title;
+ },
+
+ /**
+ * @return {!WebInspector.Toolbar}
+ */
+ createToolbar: function()
+ {
+ var toolbar = new WebInspector.Toolbar("");
+ this._headerElement.appendChild(toolbar.element);
+ return toolbar;
+ },
+
+ /**
+ * @param {string} title
+ * @param {string=} textValue
+ * @return {!Element}
+ */
+ appendField: function(title, textValue)
+ {
+ var row = this._fieldMap.get(title);
+ if (!row) {
+ row = this._fieldList.createChild("div", "report-field");
+ row.createChild("div", "report-field-name").textContent = title;
+ this._fieldMap.set(title, row);
+ row.createChild("div", "report-field-value");
+ }
+ if (textValue)
+ row.lastElementChild.textContent = textValue;
+ return /** @type {!Element} */ (row.lastElementChild);
+ },
+
+ remove: function()
+ {
+ this.element.remove();
+ },
+
+ /**
+ * @param {string} title
+ */
+ removeField: function(title)
+ {
+ var row = this._fieldMap.get(title);
+ if (row)
+ row.remove();
+ this._fieldMap.delete(title);
+ },
+
+ /**
+ * @param {string} title
+ * @param {boolean} visible
+ */
+ setFieldVisible: function(title, visible)
+ {
+ var row = this._fieldMap.get(title);
+ if (row)
+ row.classList.toggle("hidden", !visible);
+ },
+
+ /**
+ * @param {string} title
+ * @return {?Element}
+ */
+ fieldValue: function(title)
+ {
+ var row = this._fieldMap.get(title);
+ return row ? row.lastElementChild : null;
+ },
+
+ /**
+ * @return {!Element}
+ */
+ appendRow: function()
+ {
+ return this._fieldList.createChild("div", "report-row");
+ },
+
+ clearContent: function()
+ {
+ this._fieldList.removeChildren();
+ this._fieldMap.clear();
+ },
+
+ __proto__: WebInspector.VBox.prototype
+}

Powered by Google App Engine
This is Rietveld 408576698