all files / pdfviewer/organize-pdf/organize-core/ organize-preview.js

9.3% Statements 12/129
0% Branches 0/81
9.09% Functions 1/11
9.38% Lines 12/128
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 2101×   1× 1×                         1× 1×                                                                                                                                                 1× 1×                                   1× 1×                                             1× 1×                                                                                                                                                 1×    
define(["require", "exports", "@syncfusion/ej2-base", "../../base/pdfviewer-utlis", "../../index", "./organize-initialization", "./slider-zoomaction", "./organize-undoredo"], function (require, exports, ej2_base_1, pdfviewer_utlis_1, index_1, organize_initialization_1, slider_zoomaction_1, organize_undoredo_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    function createRequestForPreview() {
        var proxy = this;
        var isIE = !!document.documentMode;
        if (!isIE) {
            return new Promise(function (renderPreviewImage, reject) {
                proxy.requestPreviewCreation(proxy);
            });
        }
        else {
            this.requestPreviewCreation(proxy);
            return null;
        }
    }
    exports.createRequestForPreview = createRequestForPreview;
    function requestPreviewCreation(proxy) {
        var startIndex = this.lastRequestedPageIndex;
        var endIndex = (startIndex + this.previewLimit) >= this.pdfViewer.pageCount ?
            this.pdfViewer.pageCount : (startIndex + this.previewLimit);
        var digitalSignaturePresent = false;
        for (var i = startIndex; i < endIndex; i++) {
            if (proxy.pdfViewerBase.digitalSignaturePresent(i)) {
                digitalSignaturePresent = true;
            }
        }
        var digitalSignatureList = '';
        if (digitalSignaturePresent) {
            digitalSignatureList = proxy.pdfViewerBase.digitalSignaturePages.toString();
        }
        var jsonObject = { startPage: startIndex.toString(), endPage: endIndex.toString(), sizeX: '99.7', sizeY: '141', hashId: proxy.pdfViewerBase.hashId, action: 'RenderThumbnailImages', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId, digitalSignaturePresent: digitalSignaturePresent, digitalSignaturePageList: digitalSignatureList };
        if (this.pdfViewerBase.jsonDocumentId) {
            jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;
        }
        if (!this.pdfViewerBase.clientSideRendering) {
            var imageSize = this.previouslyRequestedImageZoom;
            jsonObject.imageSize = imageSize;
            jsonObject.initialLoad = this.isInitialLoading;
            this.previewRequestHandler = new index_1.AjaxHandler(this.pdfViewer);
            this.previewRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderThumbnail;
            this.previewRequestHandler.responseType = 'json';
            if (endIndex > 0 && !ej2_base_1.isNullOrUndefined(proxy.pdfViewerBase.hashId) && !this.isAllImagesReceived) {
                this.previewRequestHandler.send(jsonObject);
            }
            this.previewRequestHandler.onSuccess = function (result) {
                var data = result.data;
                var redirect = proxy.pdfViewerBase.checkRedirection(data);
                if (!redirect) {
                    proxy.updatePreviewCollection(data);
                }
            };
            this.previewRequestHandler.onFailure = function (result) {
                proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);
            };
            this.previewRequestHandler.onError = function (result) {
                proxy.pdfViewerBase.openNotificationPopup();
                proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);
            };
        }
        else {
            var start = 0;
            var limit = this.pdfViewer.pageCount;
            var jsonObject_1 = {
                documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId,
                elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId
            };
            var isTextNeed = proxy.pdfViewer.textSearch ? true : false;
            var initialLoad = this.isInitialLoading;
            var imageSize = proxy.getImageZoomValue(true);
            for (var pageIndex = start; pageIndex < limit; pageIndex++) {
                if (!ej2_base_1.isNullOrUndefined(this.dataDetails[pageIndex] &&
                    this.dataDetails[pageIndex].imageSize === imageSize)) {
                    continue;
                }
                this.pdfViewerBase.pdfViewerRunner.addTask({
                    startIndex: start,
                    endIndex: limit,
                    pageIndex: pageIndex,
                    message: 'renderPreviewTileImage',
                    isTextNeed: isTextNeed,
                    jsonObject: jsonObject_1,
                    isRenderText: isTextNeed,
                    requestType: isTextNeed ? 'pdfTextSearchRequest' : '',
                    imageSize: imageSize,
                    initialLoad: initialLoad
                }, pdfviewer_utlis_1.TaskPriorityLevel.Medium);
            }
        }
    }
    exports.requestPreviewCreation = requestPreviewCreation;
    function updatePreviewCollection(data) {
        if (data) {
            var proxy = this;
            if (typeof data !== 'object') {
                try {
                    data = JSON.parse(data);
                }
                catch (error) {
                    proxy.pdfViewerBase.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderThumbnail);
                    data = null;
                }
            }
            if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {
                proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderThumbnail, data);
                this.getData(data, proxy.pdfViewerBase.clientSideRendering);
            }
        }
    }
    exports.updatePreviewCollection = updatePreviewCollection;
    function previewOnMessage(event) {
        if (event.data.message === 'renderPreviewTileImage') {
            var canvas = document.createElement('canvas');
            var _a = event.data, value = _a.value, width = _a.width, height = _a.height, pageIndex = _a.pageIndex, startIndex = _a.startIndex, endIndex = _a.endIndex, imageSize = _a.imageSize;
            canvas.width = width;
            canvas.height = height;
            var canvasContext = canvas.getContext('2d');
            var imageData = canvasContext.createImageData(width, height);
            imageData.data.set(value);
            canvasContext.putImageData(imageData, 0, 0);
            var imageUrl = canvas.toDataURL();
            this.pdfViewerBase.releaseCanvas(canvas);
            var data = ({
                thumbnailImage: imageUrl,
                startPage: startIndex,
                endPage: endIndex,
                uniqueId: this.pdfViewerBase.documentId,
                pageIndex: pageIndex,
                imageSize: imageSize
            });
            this.updatePreviewCollection(data);
        }
    }
    exports.previewOnMessage = previewOnMessage;
    function getData(data, isClientRender) {
        if (!this.dataDetails) {
            this.dataDetails = [];
        }
        if (data.imageSize !== this.previouslyRequestedImageZoom) {
            return;
        }
        if (this.dataDetails.length === this.pdfViewer.pageCount) {
            return;
        }
        if (isClientRender) {
            this.dataDetails.push({ pageId: data.pageIndex, image: data.thumbnailImage, imageSize: data.imageSize });
        }
        else {
            var startPage = data.startPage;
            var endPage = data.endPage;
            for (var i = startPage; i < endPage; i++) {
                var thumbnailImage = data.thumbnailImage[parseInt(i.toString(), 10)];
                var pageId = i;
                this.dataDetails.push({ pageId: pageId, image: thumbnailImage, imageSize: data.imageSize });
            }
        }
        this.dataDetails.sort(function (a, b) { return a.pageId - b.pageId; });
        if (this.dataDetails.length === this.pdfViewer.pageCount) {
            if (!ej2_base_1.isNullOrUndefined(this.pdfViewerBase.navigationPane)) {
                this.pdfViewerBase.navigationPane.enableOrganizeButton(true);
            }
            if (!ej2_base_1.isNullOrUndefined(this.pdfViewer.toolbar)) {
                this.pdfViewer.toolbar.enableToolbarItem(['OrganizePagesTool'], true);
            }
            if (this.isInitialLoading && this.pdfViewer.isPageOrganizerOpen) {
                if (!ej2_base_1.Browser.isDevice || this.pdfViewer.enableDesktopMode) {
                    this.createOrganizeWindow();
                }
                else {
                    this.createOrganizeWindowForMobile();
                }
            }
            if (this.isPageZoomChanged) {
                if (this.isOrganizeWindowOpen || organize_initialization_1.isOrganizeDialogRendered.call(this)) {
                    organize_undoredo_1.restorePagesBeforeZoom.call(this);
                    slider_zoomaction_1.setThumbnailImage.call(this);
                    organize_undoredo_1.restorePagesAfterZoom.call(this);
                }
                if (this.isOrganizeWindowOpen) {
                    this.showOrganizeLoadingIndicator(false);
                }
                this.isPageZoomChanged = false;
                this.currentImageZoom = this.getImageZoomValue();
                if (this.previousImageZoom !== this.currentImageZoom) {
                    this.pdfViewer.firePageOrganizerZoomChanged(this.previousImageZoom, this.currentImageZoom);
                }
            }
            this.isAllImagesReceived = true;
            this.isInitialLoading = false;
            this.lastRequestedPageIndex = 0;
        }
        else {
            if (!this.pdfViewerBase.clientSideRendering) {
                if (!this.isInitialLoading || (ej2_base_1.Browser.isDevice && !this.pdfViewer.enableDesktopMode) ||
                    (this.isInitialLoading && (!this.pdfViewer.enableThumbnail || ej2_base_1.isNullOrUndefined(this.pdfViewer.thumbnailViewModule)))) {
                    this.lastRequestedPageIndex = parseInt(data.endPage, 10);
                    var isIE = !!document.documentMode;
                    if (!isIE) {
                        Promise.all([this.createRequestForPreview()]);
                    }
                    else {
                        this.createRequestForPreview();
                    }
                }
            }
        }
    }
    exports.getData = getData;
});