From 8ed33ba1d62990765689af8620bba28230a2af72 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 26 Mar 2019 14:57:55 +0100 Subject: [PATCH] wip #2649 @3 --- js/libs/fluidbook/fluidbook.js | 43 +++++++++++-------- js/libs/fluidbook/fluidbook.loader.js | 7 ++- .../fluidbook/fluidbook.pagetransitions.js | 7 ++- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/js/libs/fluidbook/fluidbook.js b/js/libs/fluidbook/fluidbook.js index 1a8e0d97..4541d032 100644 --- a/js/libs/fluidbook/fluidbook.js +++ b/js/libs/fluidbook/fluidbook.js @@ -21,16 +21,16 @@ Fluidbook.prototype = { init: function (datas) { this.flags = {}; - this.networkPause = false; - this.networkPauseTimeout = null; + this.networkPauseDate = null; this.networkPauseQueue = []; + this.initNetworkPause(); this.canNavigate = false; this.initSettings(datas); this.singleMode = (this.datas.mobileNavigationType === 'portrait'); this.junk = datas.cacheDate; - this.input=new FluidbookInput(this); + this.input = new FluidbookInput(this); if (this.datas.landingPage != undefined && this.datas.landingPage != '') { this.landingpage = new FluidbookLandingPage(this); } @@ -1071,30 +1071,39 @@ Fluidbook.prototype = { } , - pauseNetwork: function (during) { - clearTimeout(this.networkPauseTimeout); + initNetworkPause: function () { var $this = this; + setInterval(function () { + + if ($this.networkPauseDate != null && $this.networkPauseDate < Date.now()) { + $this.networkPauseDate = null; + $this.flushNetworkQueue(); + } + }, 1000); + }, + + pauseNetwork: function (during) { if (during === -1) { - this.networkPause = false; + this.networkPauseDate = null; this.flushNetworkQueue(); return; } - this.networkPause = true; - this.networkPauseTimeout = setTimeout(function () { - $this.networkPause = false; - $this.flushNetworkQueue(); - }, during + 500) - } - , + + var date = Date.now() + during + 500; + if (this.networkPauseDate == null) { + this.networkPauseDate = date; + } else { + this.networkPauseDate = Math.max(this.networkPauseDate, date); + } + }, executeWhenNetwork: function (f) { - if (this.networkPause) { + if (this.networkPauseDate != null) { this.networkPauseQueue.push(f); return; } f(); - } - , + }, unlockCurrentPage: function () { this.contentlock.unlockCurrentPage(); @@ -1102,7 +1111,7 @@ Fluidbook.prototype = { , flushNetworkQueue: function () { - if (this.networkPauseQueue.length === 0 || this.networkPause) { + if (this.networkPauseQueue.length === 0 || this.networkPauseDate != null) { return; } diff --git a/js/libs/fluidbook/fluidbook.loader.js b/js/libs/fluidbook/fluidbook.loader.js index 2e9d7a34..43c75107 100644 --- a/js/libs/fluidbook/fluidbook.loader.js +++ b/js/libs/fluidbook/fluidbook.loader.js @@ -40,6 +40,11 @@ FluidbookLoader.prototype = { }, preloadPagesBeforeTransition: function (pages, callback) { + if (this.arePreloadedPages(pages)) { + callback(); + return; + } + var $this = this; var $pages = pages.slice(0); if ($pages.length == 0) { @@ -207,7 +212,7 @@ FluidbookLoader.prototype = { }); } else { this.loadLeftPage(leftPage, $(doublePage), function () { - }) + }); this.loadRightPage(rightPage, $(doublePage), function () { }); callback(); diff --git a/js/libs/fluidbook/fluidbook.pagetransitions.js b/js/libs/fluidbook/fluidbook.pagetransitions.js index 668592cc..3c58556f 100644 --- a/js/libs/fluidbook/fluidbook.pagetransitions.js +++ b/js/libs/fluidbook/fluidbook.pagetransitions.js @@ -112,7 +112,7 @@ FluidbookPageTransition.prototype = { } }, pageTransition3D: function (pageNr) { - console.log(this.transitionning); + var $this = this; if ($("#pages").hasClass('_3dtransition')) { return; @@ -171,7 +171,6 @@ FluidbookPageTransition.prototype = { $("#pages").prepend('
'); var doublePage = $("#nextDoublePage"); - this.fluidbook.loader.preloadPagesBeforeTransition(turning.end, function () { $this.flip3d.clean(); $this.flip3d.prepareTurn(turning, function () { @@ -181,7 +180,7 @@ FluidbookPageTransition.prototype = { $this.fluidbook.loader.setContentsInDoublePage(currentDoublePage, turning.flat, true, function () { $this.flip3d.playTurn(turning.dir, function () { $this.fluidbook.loader.setContentsInDoublePage(doublePage, turning.end, true, function () { - if ($this.transitionning == false) { + if ($this.transitionning === false) { return; } // Remove former part @@ -388,7 +387,7 @@ FluidbookPageTransition.prototype = { }, 1000 * (animationDuration + 2)) try { - this.search.clearHighlights(); + this.fluidbook.search.clearHighlights(); } catch (err) { } -- 2.39.5