1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 15:18:08 +02:00

Update stats to use the new pdfBug panel.

This commit is contained in:
Brendan Dahl 2012-02-21 09:52:09 -08:00
parent de18d1623b
commit e07505ff8d
5 changed files with 112 additions and 63 deletions

View file

@ -312,6 +312,58 @@ var Stepper = (function StepperClosure() {
return Stepper;
})();
var Stats = (function Stats() {
var stats = [];
function clear(node) {
while (node.hasChildNodes())
node.removeChild(node.lastChild);
}
function getStatIndex(pageNumber) {
for (var i = 0, ii = stats.length; i < ii; ++i)
if (stats[i].pageNumber === pageNumber)
return i;
return false;
}
return {
// Poperties/functions needed by PDFBug.
id: 'Stats',
name: 'Stats',
panel: null,
manager: null,
init: function init() {
this.panel.setAttribute('style', 'padding: 5px;');
PDFJS.enableStats = true;
},
enabled: false,
active: false,
// Stats specific functions.
add: function(pageNumber, stat) {
if (!stat)
return;
var statsIndex = getStatIndex(pageNumber);
if (statsIndex !== false) {
var b = stats[statsIndex];
this.panel.removeChild(b.div);
stats.splice(statsIndex, 1);
}
var wrapper = document.createElement('div');
wrapper.className = 'stats';
var title = document.createElement('div');
title.className = 'title';
title.textContent = 'Page: ' + pageNumber;
var statsDiv = document.createElement('div');
statsDiv.textContent = stat.toString();
wrapper.appendChild(title);
wrapper.appendChild(statsDiv);
stats.push({ pageNumber: pageNumber, div: wrapper });
stats.sort(function(a, b) { return a.pageNumber - b.pageNumber});
clear(this.panel);
for (var i = 0, ii = stats.length; i < ii; ++i)
this.panel.appendChild(stats[i].div);
}
};
})();
// Manages all the debugging tools.
var PDFBug = (function PDFBugClosure() {
var panelWidth = 300;
@ -321,8 +373,29 @@ var PDFBug = (function PDFBugClosure() {
return {
tools: [
FontInspector,
StepperManager
StepperManager,
Stats
],
enable: function(ids) {
var all = false, tools = this.tools;
if (ids.length === 1 && ids[0] === 'all')
all = true;
for (var i = 0; i < tools.length; ++i) {
var tool = tools[i];
if (all || ids.indexOf(tool.id) !== -1)
tool.enabled = true;
}
if (!all) {
// Sort the tools by the order they are enabled.
tools.sort(function(a, b) {
var indexA = ids.indexOf(a.id);
indexA = indexA < 0 ? tools.length : indexA;
var indexB = ids.indexOf(b.id);
indexB = indexB < 0 ? tools.length : indexB;
return indexA - indexB;
});
}
},
init: function init() {
/*
* Basic Layout:

View file

@ -65,22 +65,6 @@ body {
line-height: 16px;
}
span#info {
display: none;
position: fixed;
top: 32px;
right: 0px;
font-size: 10px;
white-space: pre;
font-family: courier;
}
@-moz-document regexp("http:.*debug=1.*") {
span#info {
display: inline-block;
}
}
/* === Sidebar === */
#sidebar {
position: fixed;
@ -448,3 +432,11 @@ canvas {
background: yellow;
opacity: 0.3;
}
#PDFBug .stats {
font-size: 10px;
white-space: pre;
font-family: courier;
}
#PDFBug .stats .title {
font-weight: bold;
}

View file

@ -458,7 +458,7 @@ var PDFView = {
for (var i = 1; i <= pagesCount; i++) {
var page = pdf.getPage(i);
var pageView = new PageView(container, page, i, page.width, page.height,
page.bench, this.navigateTo.bind(this));
page.stats, this.navigateTo.bind(this));
var thumbnailView = new ThumbnailView(sidebar, page, i,
page.width / page.height);
bindOnAfterDraw(pageView, thumbnailView);
@ -635,7 +635,7 @@ var PDFView = {
};
var PageView = function pageView(container, content, id, pageWidth, pageHeight,
bench, navigateTo) {
stats, navigateTo) {
this.id = id;
this.content = content;
@ -880,7 +880,7 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight,
if (error)
PDFView.error('An error occurred while rendering the page.', error);
self.stats = content.bench;
self.stats = content.stats;
self.updateStats();
if (self.onAfterDraw)
self.onAfterDraw();
@ -894,12 +894,10 @@ var PageView = function pageView(container, content, id, pageWidth, pageHeight,
};
this.updateStats = function pageViewUpdateStats() {
if (!PDFJS.enableBench || !this.stats || PDFView.page != this.id)
return;
var stats = this.stats;
var statsText = 'Page ' + this.id + '\n';
statsText += stats.toString();
document.getElementById('info').textContent = statsText;
if (PDFJS.pdfBug && Stats.enabled) {
var stats = this.stats;
Stats.add(this.id, stats);
}
};
};
@ -1134,25 +1132,11 @@ window.addEventListener('load', function webViewerLoad(evt) {
if ('pdfBug' in hashParams) {
PDFJS.pdfBug = true;
var pdfBug = hashParams['pdfBug'];
var all = false, enabled = [];
if (pdfBug === 'all')
all = true;
else
enabled = pdfBug.split(',');
var debugTools = PDFBug.tools;
for (var i = 0; i < debugTools.length; ++i) {
var tool = debugTools[i];
if (all || enabled.indexOf(tool.id) !== -1)
tool.enabled = true;
}
var enabled = pdfBug.split(',');
PDFBug.enable(enabled);
PDFBug.init();
}
if ('enableBench' in params)
PDFJS.enableBench = (params['enableBench'] === 'true');
if (PDFJS.enableBench)
document.getElementById('info').style.display = 'block';
var sidebarScrollView = document.getElementById('sidebarScrollView');
sidebarScrollView.addEventListener('scroll', updateThumbViewArea, true);
}, true);