Browse Source

Prevent the Document Properties from being empty when the dialog is opened before the file has started loading

Jonas Jenwald 11 years ago
parent
commit
025f340228
  1. 31
      web/document_properties.js
  2. 2
      web/viewer.js

31
web/document_properties.js

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* globals PDFView, mozL10n, getPDFFileNameFromURL */
/* globals PDFView, Promise, mozL10n, getPDFFileNameFromURL */
'use strict';
@ -60,6 +60,10 @@ var DocumentProperties = { @@ -60,6 +60,10 @@ var DocumentProperties = {
options.closeButton.addEventListener('click', this.hide.bind(this));
}
this.dataAvailablePromise = new Promise(function (resolve) {
this.resolveDataAvailable = resolve;
}.bind(this));
// Bind the event listener for the Esc key (to close the dialog).
window.addEventListener('keydown',
function (e) {
@ -77,14 +81,15 @@ var DocumentProperties = { @@ -77,14 +81,15 @@ var DocumentProperties = {
// Get the file size.
PDFView.pdfDocument.getDownloadInfo().then(function(data) {
self.setFileSize(data.length);
});
this.setFileSize(data.length);
this.updateUI(this.fileSizeField, this.fileSize);
}.bind(this));
// Get the other document properties.
PDFView.pdfDocument.getMetadata().then(function(data) {
var fields = [
{ field: self.fileNameField, content: self.fileName },
{ field: self.fileSizeField, content: self.fileSize },
// The fileSize field is updated once getDownloadInfo is resolved.
{ field: self.titleField, content: data.info.Title },
{ field: self.authorField, content: data.info.Author },
{ field: self.subjectField, content: data.info.Subject },
@ -102,12 +107,15 @@ var DocumentProperties = { @@ -102,12 +107,15 @@ var DocumentProperties = {
// Show the properties in the dialog.
for (var item in fields) {
var element = fields[item];
if (element.field && element.content !== undefined &&
element.content !== '') {
element.field.textContent = element.content;
}
this.updateUI(element.field, element.content);
}
});
}.bind(this));
},
updateUI: function documentPropertiesUpdateUI(field, content) {
if (field && content !== undefined && content !== '') {
field.textContent = content;
}
},
setFileSize: function documentPropertiesSetFileSize(fileSize) {
@ -132,7 +140,10 @@ var DocumentProperties = { @@ -132,7 +140,10 @@ var DocumentProperties = {
this.visible = true;
this.overlayContainer.classList.remove('hidden');
this.overlayContainer.lastElementChild.classList.remove('hidden');
this.getProperties();
this.dataAvailablePromise.then(function () {
this.getProperties();
}.bind(this));
},
hide: function documentPropertiesClose() {

2
web/viewer.js

@ -887,6 +887,8 @@ var PDFView = { @@ -887,6 +887,8 @@ var PDFView = {
this.pdfDocument = pdfDocument;
DocumentProperties.resolveDataAvailable();
pdfDocument.getDownloadInfo().then(function() {
PDFView.loadingBar.hide();
var outerContainer = document.getElementById('outerContainer');

Loading…
Cancel
Save