Bug 1122480 - Part 7 - Add an environment data section. r=rvitillo

This commit is contained in:
Georg Fritzsche 2015-05-11 19:40:23 +02:00
parent e8dec6963d
commit 3c93e0c10a
4 changed files with 92 additions and 1 deletions

View File

@ -102,6 +102,29 @@ function filterObject(obj, filterOut) {
return ret;
}
/**
* This turns a JSON object into a "flat" stringified form, separated into top-level sections.
*
* For an object like:
* {
* a: {b: "1"},
* c: {d: "2", e: {f: "3"}}
* }
* it returns a Map of the form:
* Map([
* ["a", Map(["b","1"])],
* ["c", Map([["d", "2"], ["e.f", "3"]])]
* ])
*/
function sectionalizeObject(obj) {
let map = new Map();
for (let k of Object.keys(obj)) {
map.set(k, explodeObject(obj[k]));
}
return map;
}
let observer = {
enableTelemetry: bundle.GetStringFromName("enableTelemetry"),
@ -186,6 +209,52 @@ let GeneralData = {
},
};
let EnvironmentData = {
/**
* Renders the environment data
*/
render: function(ping) {
setHasData("environment-data-section", true);
let dataDiv = document.getElementById("environment-data");
let data = sectionalizeObject(ping.environment);
for (let [section, sectionData] of data) {
let table = document.createElement("table");
let caption = document.createElement("caption");
caption.appendChild(document.createTextNode(section + "\n"));
table.appendChild(caption);
let headings = document.createElement("tr");
this.appendColumn(headings, "th", bundle.GetStringFromName("environmentDataHeadingName") + "\t");
this.appendColumn(headings, "th", bundle.GetStringFromName("environmentDataHeadingValue") + "\t");
table.appendChild(headings);
for (let [path, value] of sectionData) {
let row = document.createElement("tr");
this.appendColumn(row, "td", path + "\t");
this.appendColumn(row, "td", value + "\t");
table.appendChild(row);
}
dataDiv.appendChild(table);
}
},
/**
* Helper function for appending a column to the data table.
*
* @param aRowElement Parent row element
* @param aColType Column's tag name
* @param aColText Column contents
*/
appendColumn: function(aRowElement, aColType, aColText) {
let colElement = document.createElement(aColType);
let colTextElement = document.createTextNode(aColText);
colElement.appendChild(colTextElement);
aRowElement.appendChild(colElement);
},
};
let TelLog = {
/**
* Renders the telemetry log
@ -628,8 +697,10 @@ let Histogram = {
divStats.appendChild(document.createTextNode(stats));
outerDiv.appendChild(divStats);
if (isRTL())
if (isRTL()) {
hgram.buckets.reverse();
hgram.values.reverse();
}
let textData = this.renderValues(outerDiv, hgram, options);
@ -1142,6 +1213,9 @@ function displayPingData() {
// Show general data.
GeneralData.render(ping);
// Show environment data.
EnvironmentData.render(ping);
// Show telemetry log.
TelLog.render(ping);

View File

@ -44,6 +44,15 @@
</div>
</section>
<section id="environment-data-section" class="data-section">
<input type="checkbox" class="statebox"/>
<h1 class="section-name">&aboutTelemetry.environmentDataSection;</h1>
<span class="toggle-caption">&aboutTelemetry.toggle;</span>
<span class="empty-caption">&aboutTelemetry.emptySection;</span>
<div id="environment-data" class="data">
</div>
</section>
<section id="telemetry-log-section" class="data-section">
<input type="checkbox" class="statebox"/>
<h1 class="section-name">&aboutTelemetry.telemetryLogSection;</h1>

View File

@ -16,6 +16,10 @@
General Data
">
<!ENTITY aboutTelemetry.environmentDataSection "
Environment Data
">
<!ENTITY aboutTelemetry.telemetryLogSection "
Telemetry Log
">

View File

@ -13,6 +13,10 @@ generalDataHeadingName = Name
generalDataHeadingValue = Value
environmentDataHeadingName = Name
environmentDataHeadingValue = Value
telemetryLogTitle = Telemetry Log
telemetryLogHeadingId = Id