]> _ Git - fluidbook-html5.git/commitdiff
WIP #3051 @4.5
authorStephen Cameron <stephen@cubedesigners.com>
Mon, 2 Dec 2019 19:45:57 +0000 (20:45 +0100)
committerStephen Cameron <stephen@cubedesigners.com>
Mon, 2 Dec 2019 19:45:57 +0000 (20:45 +0100)
js/libs/fluidbook/fluidbook.search.js
js/libs/fluidbook/fluidbook.zoom.js
style/interface.less

index 36b72ad1bb97db48abdf84295e739263e021d322..66032517ad053af6b331ebd5ca8ecb17a87fa259 100644 (file)
@@ -101,10 +101,12 @@ FluidbookSearch.prototype = {
         this.updateResultsNav(resultPage);
         this.hideableElements.addClass('hidden');
         this.resultsNav.removeClass('hidden');
+        $('body').addClass('searchResultsNavActive');
     },
     closeResultsNav: function() {
         this.hideableElements.removeClass('hidden');
         this.resultsNav.addClass('hidden');
+        $('body').removeClass('searchResultsNavActive');
     },
     nextResultsPage: function() {
         var currentIndex = this.resultPages.indexOf(fluidbook.currentPage);
@@ -214,34 +216,36 @@ FluidbookSearch.prototype = {
         if (algo === 'expression') {
             return this._findExpression(q, callback);
         }
-        var words = this.normalizeQuery(q, true);
+        var searchTerms = this.normalizeQuery(q, true);
         var res = {};
         var terms = [];
         var total = 0;
-        var doublesPages = [];
+        var doublePages = [];
         this.resultPages = [];
 
-        var q, v, k, kk, word, wordata, page, occurences, p;
+        var matchedWord, indexWord, searchTerm, term, page;
         var maxPage = this.fluidbook.contentlock.getMaxPage();
 
-        for (kk in words) {
-            q = words[kk];
-            terms.push(q);
-            for (k in INDEX) {
-                if (k.length < this.fluidbook.datas.ignoreWordLimit) {
+        for (searchTerm in searchTerms) {
+            term = searchTerms[searchTerm];
+            terms.push(term);
+            for (indexWord in INDEX) {
+                if (indexWord.length < this.fluidbook.datas.ignoreWordLimit) {
                     continue;
                 }
 
-                if (algo === 'begins' && k.indexOf(q) !== 0) {
+                if (algo === 'begins' && indexWord.indexOf(term) !== 0) {
                     continue;
-                } else if (algo === 'contains' && k.indexOf(q) === -1) {
+                } else if (algo === 'contains' && indexWord.indexOf(term) === -1) {
                     continue;
-                } else if (algo === 'exact' && k !== q) {
+                } else if (algo === 'exact' && indexWord !== term) {
                     continue;
                 }
-                v = INDEX[k];
-                for (page in v.p) {
-                    var occurences = v.p[page];
+
+                matchedWord = INDEX[indexWord];
+
+                for (page in matchedWord.p) {
+                    var occurrences = matchedWord.p[page];
                     page = parseInt(page);
                     if (page > maxPage) {
                         continue;
@@ -251,31 +255,31 @@ FluidbookSearch.prototype = {
                         page--;
                     }
 
-                    if (doublesPages[page] == null || doublesPages[page] == undefined) {
-                        doublesPages[page] = [];
+                    if (doublePages[page] == null || doublePages[page] == undefined) {
+                        doublePages[page] = [];
                     }
-                    if (doublesPages[page][kk] == null || doublesPages[page][kk] == undefined) {
-                        doublesPages[page][kk] = 0;
+                    if (doublePages[page][searchTerm] == null || doublePages[page][searchTerm] == undefined) {
+                        doublePages[page][searchTerm] = 0;
                     }
-                    doublesPages[page][kk] += occurences;
-                    total += occurences;
+                    doublePages[page][searchTerm] += occurrences;
+                    total += occurrences;
                 }
             }
         }
 
-        var nbwords = words.length;
+        var nbwords = searchTerms.length;
 
         total = 0;
-        for (var dpNumber in doublesPages) {
-            var doublePageOccurences = doublesPages[dpNumber];
+        for (var dpNumber in doublePages) {
+            var doublePageOccurences = doublePages[dpNumber];
             if (Object.keys(doublePageOccurences).length === nbwords || this.fluidbook.datas.searchPageSelectionAlgorithm === 'OR') {
-                var occ = 0;
+                var totalOccurrences = 0;
                 for (var ww in doublePageOccurences) {
-                    occ += doublePageOccurences[ww];
+                    totalOccurrences += doublePageOccurences[ww];
                 }
-                res[dpNumber] = occ;
+                res[dpNumber] = totalOccurrences;
                 this.resultPages.push(parseInt(dpNumber));
-                total += occ;
+                total += totalOccurrences;
             }
         }
 
index a3c566a8bb6a1b5a842c1e34b0de098e83f8019c..b37855b971245bb4d8e63d6f5d95484e3a43d96b 100644 (file)
@@ -198,27 +198,32 @@ FluidbookZoom.prototype = {
             animation.origin = ['50%', '50%'];
         }
 
-        var hiddenElements = $("header,footer,#interface,#links a.bookmark");
+        // When the search results nav is active, don't reveal interface elements when zooming out...
+        if (!$('body').hasClass('searchResultsNavActive')) {
 
-        if (this.zoom != 1) {
-            if (this.fluidbook.help !== undefined) {
-                this.fluidbook.help.hide(); // Hide the help view if it's showing
-            }
-            $("#shadow").addClass('hidden');
-            if (!$('header').hasClass('hidden')) {
-                $(hiddenElements).addClass('hidden');
-                this.hideInterfaceTimeout = setTimeout(function () {
-                    $(hiddenElements).hide();
-                }, 500);
+            var hiddenElements = $("header,footer,#interface,#links a.bookmark");
+
+            if (this.zoom !== 1) {
+                if (this.fluidbook.help !== undefined) {
+                    this.fluidbook.help.hide(); // Hide the help view if it's showing
+                }
+                $("#shadow").addClass('hidden');
+                if (!$('header').hasClass('hidden')) {
+                    $(hiddenElements).addClass('hidden');
+                    this.hideInterfaceTimeout = setTimeout(function () {
+                        $(hiddenElements).hide();
+                    }, 500);
+                }
+            } else {
+                clearTimeout(this.hideInterfaceTimeout);
+                $(hiddenElements).show().removeClass('hidden');
+                this.shadowTimeout = setTimeout(function () {
+                    $("#shadow").removeClass('hidden');
+                }, 250);
             }
-        } else {
-            clearTimeout(this.hideInterfaceTimeout);
-            $(hiddenElements).show().removeClass('hidden');
-            this.shadowTimeout = setTimeout(function () {
-                $("#shadow").removeClass('hidden');
-            }, 250);
 
         }
+
         $("#z").transform(animation, {preserve: true});
         $this.triggerEvent(((this.zoom === 1) ? 'out' : 'in') + '.start');
 
@@ -234,4 +239,4 @@ FluidbookZoom.prototype = {
 
         return true;
     }
-}
\ No newline at end of file
+}
index 6106456f3b2c98e17c5fcb75f5d2b97c7d7c52f7..e90342e96795034ec711340a6687846a16cfcc3d 100644 (file)
   box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
   font-size: 16px; // Controls size of text and padding
 
+  @media (max-width: 599px) {
+    max-width: none;
+    left: 0;
+    transform: none;
+  }
+
   > * {
     display: flex;
     align-items: center;
     -webkit-appearance: none;
     -moz-appearance: none;
     appearance: none;
+    background: none;
     border: none;
     display: flex;
     align-items: center;
     }
   }
 
-  .searchResultsPrev:after {
-    transform: rotate(-45deg);
+  .searchResultsPrev {
+    padding: 0.75em 0.25em 0.75em 0.75em; // Padding to make a more even focus outline
+
+    &:after {
+      transform: rotate(-45deg);
+    }
   }
 
-  .searchResultsNext:after {
-    transform: rotate(135deg);
+  .searchResultsNext {
+    padding: 0.75em 0.75em 0.75em 0.25em; // Padding to make a more even focus outline
+
+    &:after {
+      transform: rotate(135deg);
+    }
   }
 
   .searchResultsNavCounter {