From c989e4dd1d19a7b7ed6c6034db0ec15419bfefe3 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 19 Dec 2017 17:18:41 +0100 Subject: [PATCH] done #1839 @1.5 --- js/libs/fluidbook/fluidbook.js | 13 +++++++---- js/libs/fluidbook/fluidbook.loader.js | 33 ++++++++++++++++----------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/js/libs/fluidbook/fluidbook.js b/js/libs/fluidbook/fluidbook.js index 48fae329..84cacfbb 100644 --- a/js/libs/fluidbook/fluidbook.js +++ b/js/libs/fluidbook/fluidbook.js @@ -126,7 +126,6 @@ Fluidbook.prototype = { } catch (err) { } - this.loader.canPreload(); var $this = this; setTimeout(function () { $this._hideSplash(); @@ -390,7 +389,9 @@ Fluidbook.prototype = { $("#pages").prepend('
'); var doublePage = $("#nextDoublePage"); var currentDoublePage = $("#currentDoublePage"); - this.displayLoader(); + if (!this.loader.arePreloadedPages(turning.end)) { + this.displayLoader(); + } this.loader.preloadPagesBeforeTransition(turning.end, function () { $("#pages").addClass('_3dtransition'); $this.loader.setContentsInDoublePage(currentDoublePage, turning.flat, true, function () { @@ -614,7 +615,9 @@ Fluidbook.prototype = { var turning = this.getTurningPages(pageNr); $("#pages").append('
'); var doublePage = $("#nextDoublePage"); - this.displayLoader(); + if (!this.loader.arePreloadedPages(turning.end)) { + this.displayLoader(); + } this.loader.preloadPagesBeforeTransition(turning.end, function () { $this.loader.setContentsInDoublePage(doublePage, turning.end, true, function () { $this.beforeTransition(pageNr, 2, turning); @@ -640,7 +643,9 @@ Fluidbook.prototype = { this.hidePage('right'); } - this.displayLoader(); + if (!this.loader.arePreloadedPages(turning.end)) { + this.displayLoader(); + } this.loader.preloadPagesBeforeTransition(turning.end, function () { $this.loader.setContentsInDoublePage(doublePage, turning.end, true, function () { $this.beforeTransition(pageNr, 2, turning); diff --git a/js/libs/fluidbook/fluidbook.loader.js b/js/libs/fluidbook/fluidbook.loader.js index 4c0039a1..2af8144d 100644 --- a/js/libs/fluidbook/fluidbook.loader.js +++ b/js/libs/fluidbook/fluidbook.loader.js @@ -4,7 +4,6 @@ function FluidbookLoader(fluidbook) { this.backgrounds = []; this.links = []; this.toPreload = []; - this.numPreload = 6; this.imagesErrors = []; } @@ -18,15 +17,6 @@ FluidbookLoader.prototype = { return 'raster'; }, - canPreload: function () { - this.numPreload = 6; - if (this.fluidbook.support.imagesVersion) { - this.numPreload += 6; - } - if (this.fluidbook.datas.phonegap) { - this.numPreload = 6; - } - }, preloadPagesBeforeTransition: function (pages, callback) { var $this = this; var $pages = pages.slice(0); @@ -52,6 +42,17 @@ FluidbookLoader.prototype = { }); }, + + arePreloadedPages: function (pages) { + for (var i in pages) { + var page = pages[i]; + if (this.backgrounds[page] == undefined) { + return false; + } + } + return true; + }, + preloadPages: function () { if (this.toPreload.length == 0) { return; @@ -80,9 +81,15 @@ FluidbookLoader.prototype = { this.cleanPreloaded(); return; } - var min = Math.max(1, page - 1); - var max = Math.min(min + this.numPreload, this.fluidbook.datas.pages); - min = Math.max(1, max - (this.numPreload)); + + var numPreloadAfter = 5; + var numPreloadBefore = 2; + if (this.fluidbook.resize.orientation == 'portrait') { + numPreloadAfter = 3; + numPreloadBefore = 1; + } + var max = Math.min(page + numPreloadAfter, this.fluidbook.datas.pages); + var min = Math.max(1, page - numPreloadBefore); this.toPreload = []; for (var i = min; i <= max; i++) { this.toPreload.push(i); -- 2.39.5