[ADF-2240] fix e2e and test in demo shell (#3035)

* fix e2e and test in demo shell

* test single run demo shell conf

* fix script e2e

* fix test lint problems

* remove async from nested test

* fix pdf test

* modify url load pdf strategy test

* SimpleChange import

* pdf viewer test fix

* remove force closing

* refactor pdf viewer
-remove promise approach
-add event rendered
-add destroy worker

* increment timeout

* use proxy files

* remove require

* fix viewer component test

* remove last require

* prefer use of done for txt viewer test
This commit is contained in:
Eugenio Romano
2018-03-09 12:16:05 +00:00
committed by GitHub
parent 606009cac2
commit ae489f6737
21 changed files with 566 additions and 503 deletions

View File

@@ -15,7 +15,17 @@
* limitations under the License.
*/
import { Component, TemplateRef, HostListener, Input, OnChanges, OnDestroy, ViewEncapsulation } from '@angular/core';
import {
Component,
TemplateRef,
HostListener,
Output,
Input,
OnChanges,
OnDestroy,
ViewEncapsulation,
EventEmitter
} from '@angular/core';
import { LogService } from '../../services/log.service';
import { RenderingQueueServices } from '../services/rendering-queue.services';
@@ -52,6 +62,13 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
@Input()
thumbnailsTemplate: TemplateRef<any> = null;
@Output()
rendered = new EventEmitter<any>();
@Output()
error = new EventEmitter<any>();
loadingTask: any;
currentPdfDocument: any;
page: number;
displayPage: number;
@@ -80,37 +97,39 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
// needed to preserve "this" context
this.onPageChange = this.onPageChange.bind(this);
this.onPagesLoaded = this.onPagesLoaded.bind(this);
this.onPagerendered = this.onPagerendered.bind(this);
}
ngOnChanges(changes) {
let blobFile = changes['blobFile'];
if (blobFile && blobFile.currentValue) {
let reader = new FileReader();
reader.onload = () => {
this.executePdf(reader.result);
};
reader.readAsArrayBuffer(blobFile.currentValue);
}
let urlFile = changes['urlFile'];
if (urlFile && urlFile.currentValue) {
this.executePdf(urlFile.currentValue);
}
if (!this.urlFile && !this.blobFile) {
throw new Error('Attribute urlFile or blobFile is required');
}
if (this.urlFile) {
return new Promise((resolve, reject) => {
this.executePdf(this.urlFile, resolve, reject);
});
} else {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.onload = () => {
this.executePdf(reader.result, resolve, reject);
};
reader.readAsArrayBuffer(this.blobFile);
});
}
}
executePdf(src, resolve, reject) {
let loadingTask = this.getPDFJS().getDocument(src);
executePdf(src) {
this.loadingTask = this.getPDFJS().getDocument(src);
loadingTask.onProgress = (progressData) => {
this.loadingTask.onProgress = (progressData) => {
let level = progressData.loaded / progressData.total;
this.loadingPercent = Math.round(level * 100);
};
loadingTask.then((pdfDocument) => {
this.loadingTask.then((pdfDocument) => {
this.currentPdfDocument = pdfDocument;
this.totalPages = pdfDocument.numPages;
this.page = 1;
@@ -119,13 +138,12 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
this.currentPdfDocument.getPage(1).then(() => {
this.scalePage('auto');
resolve();
}, (error) => {
reject(error);
this.error.emit();
});
}, (error) => {
reject(error);
this.error.emit();
});
}
@@ -145,6 +163,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
this.documentContainer = document.getElementById('viewer-pdf-viewer');
this.documentContainer.addEventListener('pagechange', this.onPageChange, true);
this.documentContainer.addEventListener('pagesloaded', this.onPagesLoaded, true);
this.documentContainer.addEventListener('textlayerrendered', this.onPagerendered, true);
this.pdfViewer = new PDFJS.PDFViewer({
container: this.documentContainer,
@@ -163,6 +182,11 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
if (this.documentContainer) {
this.documentContainer.removeEventListener('pagechange', this.onPageChange, true);
this.documentContainer.removeEventListener('pagesloaded', this.onPagesLoaded, true);
this.documentContainer.removeEventListener('textlayerrendered', this.onPagerendered, true);
}
if (this.loadingTask) {
this.loadingTask.destroy();
}
}
@@ -373,6 +397,13 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
this.displayPage = event.pageNumber;
}
/**
* Page Rendered Event
*/
onPagerendered() {
this.rendered.emit();
}
/**
* Pages Loaded Event
*