From 877d326626c7a0b9b535ee9bd85eb71a509ecee0 Mon Sep 17 00:00:00 2001 From: Chris Gunther Date: Tue, 11 Apr 2023 19:51:52 -0400 Subject: [PATCH] Properly fix wrong offset calculation PR #286 attempted to fix a doubled margin between rows, however in my use case, while it solved that, it increased the images per row, thereby reducing the height of each image. Especially with a number of very wide, but short, images, this led each row to be significantly shorter then before #286. I believe the source of that problem is that after #286, we'd buffer the next entry, add it's aspect ratio in the `buildingRow`, then determine if the `buildingRow` (while accounting for the aspect ratio a second time) was below the `rowHeight` to flush the row, thereby treating `rowHeight` like a maximum height. It seems the intention prior to #286 was to tentatively add the next entry's aspect ratio, without buffering it in `buildingRow` yet, to determine if that's push us below the `rowHeight`, and if so, flush the row before that next entry, thereby treating the `rowHeight` like a minimum height. In other words, before #286, we'd flush the row BEFORE adding the entry that would push us below the configured `rowHeight`, but after #286, we'd flush the row AFTER adding the entry that pushed us below the `rowHeight`. The root source of the doubled margin was flushing a row with no buffered entries (hence increasing the offset without actually rendering a row). Given an empty buffered entries (start of a new row), if the entry being analyzed had an aspect ratio that'd make it's height less than the configured `rowHeight`, we'd flush the row BEFORE buffering the entry, thereby flushing an empty row. Now, we only attempt to flush the row if we have at least one buffered entry. This should still fix #223 and #275 without introducing the side-effects described above. --- dist/css/justifiedGallery.css | 2 +- dist/css/justifiedGallery.min.css | 2 +- dist/js/jquery.justifiedGallery.js | 22 +++++++++++----------- dist/js/jquery.justifiedGallery.min.js | 4 ++-- dist/justifiedGallery.min.zip | Bin 6949 -> 7181 bytes dist/justifiedGallery.zip | Bin 14421 -> 14871 bytes src/js/justifiedGallery.js | 20 ++++++++++---------- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/dist/css/justifiedGallery.css b/dist/css/justifiedGallery.css index 1b9932dd..4730309c 100644 --- a/dist/css/justifiedGallery.css +++ b/dist/css/justifiedGallery.css @@ -1,7 +1,7 @@ /*! * justifiedGallery - v3.8.1 * http://miromannino.github.io/Justified-Gallery/ - * Copyright (c) 2020 Miro Mannino + * Copyright (c) 2023 Miro Mannino * Licensed under the MIT license. */ .justified-gallery { diff --git a/dist/css/justifiedGallery.min.css b/dist/css/justifiedGallery.min.css index 1b9932dd..4730309c 100644 --- a/dist/css/justifiedGallery.min.css +++ b/dist/css/justifiedGallery.min.css @@ -1,7 +1,7 @@ /*! * justifiedGallery - v3.8.1 * http://miromannino.github.io/Justified-Gallery/ - * Copyright (c) 2020 Miro Mannino + * Copyright (c) 2023 Miro Mannino * Licensed under the MIT license. */ .justified-gallery { diff --git a/dist/js/jquery.justifiedGallery.js b/dist/js/jquery.justifiedGallery.js index 846f611d..92f097ec 100644 --- a/dist/js/jquery.justifiedGallery.js +++ b/dist/js/jquery.justifiedGallery.js @@ -1,7 +1,7 @@ /*! * justifiedGallery - v3.8.1 * http://miromannino.github.io/Justified-Gallery/ - * Copyright (c) 2020 Miro Mannino + * Copyright (c) 2023 Miro Mannino * Licensed under the MIT license. */ (function (factory) { @@ -223,7 +223,7 @@ }); var loadNewImage = function () { - // if (imageSrc !== newImageSrc) { + // if (imageSrc !== newImageSrc) { $image.attr('src', imageSrc); // } }; @@ -236,7 +236,7 @@ } else { this.showImg($entry, loadNewImage); //load the new image after the fadeIn } - + } } else { @@ -795,12 +795,7 @@ (this.buildingRow.entriesBuff.length - 1) * this.settings.margins); var imgAspectRatio = $entry.data('jg.width') / $entry.data('jg.height'); - this.buildingRow.entriesBuff.push($entry); - this.buildingRow.aspectRatio += imgAspectRatio; - this.buildingRow.width += imgAspectRatio * this.settings.rowHeight; - this.lastAnalyzedIndex = i; - - if (availableWidth / (this.buildingRow.aspectRatio + imgAspectRatio) < this.settings.rowHeight) { + if (this.buildingRow.entriesBuff.length > 0 && availableWidth / (this.buildingRow.aspectRatio + imgAspectRatio) < this.settings.rowHeight) { this.flushRow(false, this.settings.maxRowsCount > 0 && this.rows === this.settings.maxRowsCount); if (++this.yield.flushed >= this.yield.every) { @@ -808,6 +803,11 @@ return; } } + + this.buildingRow.entriesBuff.push($entry); + this.buildingRow.aspectRatio += imgAspectRatio; + this.buildingRow.width += imgAspectRatio * this.settings.rowHeight; + this.lastAnalyzedIndex = i; } else if ($entry.data('jg.loaded') !== 'error') { return; } @@ -829,7 +829,7 @@ this.stopImgAnalyzerStarter(); this.setGalleryFinalHeight(this.galleryHeightToSet); - + //On complete callback this.settings.triggerEvent.call(this, isForResize ? 'jg.resize' : 'jg.complete'); }; @@ -911,7 +911,7 @@ // Image src var imageSrc = that.extractImgSrcFromImage($image); - /* If we have the height and the width, we don't wait that the image is loaded, + /* If we have the height and the width, we don't wait that the image is loaded, but we start directly with the justification */ if (that.settings.waitThumbnailsLoad === false || !imageSrc) { var width = parseFloat($image.attr('width')); diff --git a/dist/js/jquery.justifiedGallery.min.js b/dist/js/jquery.justifiedGallery.min.js index 2d761f5b..0dfd2819 100644 --- a/dist/js/jquery.justifiedGallery.min.js +++ b/dist/js/jquery.justifiedGallery.min.js @@ -1,8 +1,8 @@ /*! * justifiedGallery - v3.8.1 * http://miromannino.github.io/Justified-Gallery/ - * Copyright (c) 2020 Miro Mannino + * Copyright (c) 2023 Miro Mannino * Licensed under the MIT license. */ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,i){return void 0===i&&(i="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(i),i}:e(jQuery)}(function(l){var r=function(t,i){this.settings=i,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.yield={every:2,flushed:0},this.border=0<=i.border?i.border:i.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:l('
'),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-s/2),o.css("margin-top",-n/2);var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('
'+s+"
"),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0this.settings.justifyThreshold)),e=0;ethis.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase=this.yield.every))return void this.startImgAnalyzer(t)}else if("error"!==e.data("jg.loaded"))return}0 img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); \ No newline at end of file +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,i){return void 0===i&&(i="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(i),i}:e(jQuery)}(function(l){var r=function(t,i){this.settings=i,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this.yield={every:2,flushed:0},this.border=0<=i.border?i.border:i.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:l('
'),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-s/2),o.css("margin-top",-n/2);var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('
'+s+"
"),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0this.settings.justifyThreshold)),e=0;ethis.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase=this.yield.every))return void this.startImgAnalyzer(t);this.buildingRow.entriesBuff.push(e),this.buildingRow.aspectRatio+=n,this.buildingRow.width+=n*this.settings.rowHeight,this.lastAnalyzedIndex=i}else if("error"!==e.data("jg.loaded"))return}0 img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); \ No newline at end of file diff --git a/dist/justifiedGallery.min.zip b/dist/justifiedGallery.min.zip index 4a3ac5413f9c08fe916a380686f250a87a9cd475..44c2f3811174db44323884da2ae5cb2a49f146fd 100644 GIT binary patch delta 7060 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 delta 6831 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 diff --git a/dist/justifiedGallery.zip b/dist/justifiedGallery.zip index fb961877511655385b59f511cd91732d8b99f73b..eeab38d634d0ae210b1a37cb4061e07f89b28e5a 100644 GIT binary patch literal 14871 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�I$|WE5DCYdei8o%iZ$qVh8?g20f{#K z4-^9ip$Gkcz{~#=BKseB`F{ryP)Xqbs{ao$_8*4%|DN!FPX8Zl_J7C!CMf&|r~Ut< XXG*f*5dZ51`7fjXd)>MJ_xry92~B)j literal 14421 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 diff --git a/src/js/justifiedGallery.js b/src/js/justifiedGallery.js index 75d5fe0a..98496f0a 100755 --- a/src/js/justifiedGallery.js +++ b/src/js/justifiedGallery.js @@ -197,7 +197,7 @@ JustifiedGallery.prototype.displayEntry = function ($entry, x, y, imgWidth, imgH }); var loadNewImage = function () { - // if (imageSrc !== newImageSrc) { + // if (imageSrc !== newImageSrc) { $image.attr('src', imageSrc); // } }; @@ -210,7 +210,7 @@ JustifiedGallery.prototype.displayEntry = function ($entry, x, y, imgWidth, imgH } else { this.showImg($entry, loadNewImage); //load the new image after the fadeIn } - + } } else { @@ -769,12 +769,7 @@ JustifiedGallery.prototype.analyzeImages = function (isForResize) { (this.buildingRow.entriesBuff.length - 1) * this.settings.margins); var imgAspectRatio = $entry.data('jg.width') / $entry.data('jg.height'); - this.buildingRow.entriesBuff.push($entry); - this.buildingRow.aspectRatio += imgAspectRatio; - this.buildingRow.width += imgAspectRatio * this.settings.rowHeight; - this.lastAnalyzedIndex = i; - - if (availableWidth / (this.buildingRow.aspectRatio + imgAspectRatio) < this.settings.rowHeight) { + if (this.buildingRow.entriesBuff.length > 0 && availableWidth / (this.buildingRow.aspectRatio + imgAspectRatio) < this.settings.rowHeight) { this.flushRow(false, this.settings.maxRowsCount > 0 && this.rows === this.settings.maxRowsCount); if (++this.yield.flushed >= this.yield.every) { @@ -782,6 +777,11 @@ JustifiedGallery.prototype.analyzeImages = function (isForResize) { return; } } + + this.buildingRow.entriesBuff.push($entry); + this.buildingRow.aspectRatio += imgAspectRatio; + this.buildingRow.width += imgAspectRatio * this.settings.rowHeight; + this.lastAnalyzedIndex = i; } else if ($entry.data('jg.loaded') !== 'error') { return; } @@ -803,7 +803,7 @@ JustifiedGallery.prototype.analyzeImages = function (isForResize) { this.stopImgAnalyzerStarter(); this.setGalleryFinalHeight(this.galleryHeightToSet); - + //On complete callback this.settings.triggerEvent.call(this, isForResize ? 'jg.resize' : 'jg.complete'); }; @@ -885,7 +885,7 @@ JustifiedGallery.prototype.init = function () { // Image src var imageSrc = that.extractImgSrcFromImage($image); - /* If we have the height and the width, we don't wait that the image is loaded, + /* If we have the height and the width, we don't wait that the image is loaded, but we start directly with the justification */ if (that.settings.waitThumbnailsLoad === false || !imageSrc) { var width = parseFloat($image.attr('width'));