diff --git a/web/images/document-print.svg b/web/images/document-print.svg new file mode 100644 index 000000000..0b8837ba1 --- /dev/null +++ b/web/images/document-print.svg @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Print Document + + + Jakub Steiner + + + + http://jimmac.musichall.cz + + + document + lpr + print + local + laser + bubblejet + inkjet + print + output + cups + lpd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/images/go-down.svg b/web/images/go-down.svg index 18dadc498..95b82afd1 100644 --- a/web/images/go-down.svg +++ b/web/images/go-down.svg @@ -2,16 +2,16 @@ + http://jimmac.musichall.cz + rdf:resource="http://creativecommons.org/licenses/publicdomain/" /> Go Down @@ -146,19 +153,13 @@ + rdf:about="http://creativecommons.org/licenses/publicdomain/"> + rdf:resource="http://creativecommons.org/ns#Reproduction" /> - - + rdf:resource="http://creativecommons.org/ns#Distribution" /> - + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> diff --git a/web/images/go-up.svg b/web/images/go-up.svg index 0e3d01d17..54263df3e 100644 --- a/web/images/go-up.svg +++ b/web/images/go-up.svg @@ -2,16 +2,16 @@ + http://jimmac.musichall.cz + rdf:resource="http://creativecommons.org/licenses/publicdomain/" /> Go Up @@ -146,19 +153,13 @@ + rdf:about="http://creativecommons.org/licenses/publicdomain/"> + rdf:resource="http://creativecommons.org/ns#Reproduction" /> - - + rdf:resource="http://creativecommons.org/ns#Distribution" /> - + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> diff --git a/web/viewer.html b/web/viewer.html index 285dadb01..e740c2bc0 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -44,6 +44,13 @@
+ + +
+
diff --git a/web/viewer.js b/web/viewer.js index 328388396..eae5b383e 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -5,7 +5,6 @@ var kDefaultURL = 'compressed.tracemonkey-pldi-09.pdf'; var kDefaultScale = 150; - var kCacheSize = 20; var Cache = function(size) { @@ -24,41 +23,40 @@ var PDFView = { thumbnails: [], set scale(val) { - var options = document.getElementById('scaleSelect').options; - for (var i = 0; i < options.length; i++) { - var option = options[i]; - option.selected = (option.value == val); - } - var pages = this.pages; var cssUnits = 96.0 / 72.0; for (var i = 0; i < pages.length; i++) pages[i].update(val / 100 * cssUnits); // Jump the scroll position to the correct page. - this.page = this.page; + document.location.hash = this.page; + + var event = document.createEvent("UIEvents"); + event.initUIEvent("scalechange", false, false, window, val); + window.dispatchEvent(event); }, set page(val) { var pages = this.pages; - var input = document.getElementById("pageNumber"); - if (val <= 0 || val > pages.length) { - input.value = this.page; - return; + if (val <= 0 || val == this.page || val > pages.length) { + // TODO If the hash if set to a dumb value, like #123456, the input field + // of the UI will be set to it even if no page is changed because its out + // of bound. + val = this.page || 1; + } else { + // Draw the page before jumping to it in order to avoid seeing the + // possible gap between pages if the page has never been draw before. + pages[val - 1].draw(); + document.location.hash = val; } - document.location.hash = val; - document.getElementById("previous").disabled = (val == 1); - document.getElementById("next").disabled = (val == pages.length); - if (input.value == val) - return; - - input.value = val; - pages[val - 1].draw(); + var event = document.createEvent("UIEvents"); + event.initUIEvent("pagechange", false, false, window, val); + window.dispatchEvent(event); }, get page() { - return parseInt(document.location.hash.substring(1)) || 1; + return parseInt(document.location.hash.substring(1)); }, open: function(url, scale) { @@ -253,7 +251,7 @@ window.addEventListener('pdfloaded', function(evt) { PDFView.load(evt.detail); }, true); -window.addEventListener('scroll', function(evt) { +window.addEventListener('scroll', function onscroll(evt) { var visiblePages = PDFView.getVisiblePages(); for (var i = 0; i < visiblePages.length; i++) { var page = visiblePages[i]; @@ -316,3 +314,19 @@ window.addEventListener("transitionend", function(evt) { }, 500); }, true); + +window.addEventListener("scalechange", function(evt) { + var options = document.getElementById('scaleSelect').options; + for (var i = 0; i < options.length; i++) { + var option = options[i]; + option.selected = (option.value == evt.detail); + } +}, true); + +window.addEventListener("pagechange", function(evt) { + var page = evt.detail; + document.location.hash = page; + document.getElementById("pageNumber").value = page; + document.getElementById("previous").disabled = (page == 1); + document.getElementById("next").disabled = (page == PDFView.pages.length); +}, true);