From 6e69d78822670375dde924dd58232a4ad0eea132 Mon Sep 17 00:00:00 2001 From: David DeSandro Date: Tue, 8 Feb 2011 07:34:01 -0500 Subject: [PATCH] src : add updateItemsSortData method --- jquery.isotope.js | 35 ++++++++++++++----------- jquery.isotope.min.js | 60 +++++++++++++++++++++---------------------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/jquery.isotope.js b/jquery.isotope.js index 7005bdd..2e8c3f0 100644 --- a/jquery.isotope.js +++ b/jquery.isotope.js @@ -488,21 +488,7 @@ window.Modernizr = window.Modernizr || (function(window,doc,undefined){ $atoms.css( atomStyle ).addClass( this.options.itemClass ); - var instance = this; - $atoms.each(function(){ - var $this = $(this), - sortData = {}, - getSortData = instance.options.getSortData, - key; - // get value for sort data based on fn( $elem ) passed in - for ( key in getSortData ) { - sortData[ key ] = getSortData[ key ]( $this, instance ); - } - // apply sort data to $element - $this.data( 'isotope-sort-data', sortData ); - // increment element count - instance.elemCount ++; - }); + this.updateItemsSortData( $atoms, true ); }, @@ -540,6 +526,25 @@ window.Modernizr = window.Modernizr || (function(window,doc,undefined){ // ====================== Sorting ====================== + updateItemsSortData : function( $atoms, isIncrementingElemCount ) { + var instance = this, + getSortData = this.options.getSortData, + key, $this, sortData; + $atoms.each(function(){ + $this = $(this); + sortData = {}; + // get value for sort data based on fn( $elem ) passed in + for ( key in getSortData ) { + sortData[ key ] = getSortData[ key ]( $this, instance ); + } + // apply sort data to $element + $this.data( 'isotope-sort-data', sortData ); + if ( isIncrementingElemCount ) { + instance.elemCount ++; + } + }); + }, + // used on all the filtered atoms _sort : function() { diff --git a/jquery.isotope.min.js b/jquery.isotope.min.js index eff58a9..ef86620 100644 --- a/jquery.isotope.min.js +++ b/jquery.isotope.min.js @@ -8,33 +8,33 @@ * * Copyright 2011 David DeSandro / Metafizzy */ -var getStyleProperty=function(){var e=["Moz","Webkit","Khtml","O","Ms"],k={};return function(j,l){l=l||document.documentElement;var a=l.style,b,c,d,f;if(arguments.length===1&&typeof k[j]==="string")return k[j];if(typeof a[j]==="string")return k[j]=j;c=j.charAt(0).toUpperCase()+j.slice(1);d=0;for(f=e.length;dh?1:gb.width){b.fitRows.x=0;b.fitRows.y=b.fitRows.height}b._pushPosition(c,b.fitRows.x+b.posLeft,b.fitRows.y+b.posTop);b.fitRows.height=Math.max(b.fitRows.y+f,b.fitRows.height);b.fitRows.x+= -d})},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0};return this},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResize:function(){return this.reLayout()},_cellsByRowReset:function(){this.cellsByRow={};this._getSegments("cellsByRow");this.cellsByRow.rowHeight=this.options.cellsByRow.rowHeight||this.$allAtoms.outerHeight(true);return this},_cellsByRowLayout:function(a){var b=this,c=this.cellsByRow.cols;this.cellsByRow.atomsLen=a.length;a.each(function(d){var f= -e(this),g=(d%c+0.5)*b.cellsByRow.columnWidth-f.outerWidth(true)/2+b.posLeft;d=(~~(d/c)+0.5)*b.cellsByRow.rowHeight-f.outerHeight(true)/2+b.posTop;b._pushPosition(f,g,d)});return this},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.cellsByRow.atomsLen/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.posTop}},_cellsByRowResize:function(){var a=this.cellsByRow.cols;this._getSegments("cellsByRow");this.cellsByRow.cols!==a&&this.reLayout();return this},_straightDownReset:function(){this.straightDown= -{y:0};return this},_straightDownLayout:function(a){var b=this;a.each(function(){var c=e(this);b._pushPosition(c,b.posLeft,b.straightDown.y+b.posTop);b.straightDown.y+=c.outerHeight(true)});return this},_straightDownGetContainerSize:function(){return{height:this.straightDown.y+this.posTop}},_straightDownResize:function(){this.reLayout();return this},_masonryHorizontalPlaceBrick:function(a,b,c){b=Math.min.apply(Math,c);for(var d=b+a.outerWidth(true),f=c.length,g=f,h=this.masonryHorizontal.rows+1-f;f--;)if(c[f]=== -b)g=f;this._pushPosition(a,b,this.masonryHorizontal.rowHeight*g+this.posTop);for(f=0;fb.height){b.fitColumns.x=b.fitColumns.width;b.fitColumns.y=0}b._pushPosition(c,b.fitColumns.x+b.posLeft,b.fitColumns.y+b.posTop);b.fitColumns.width=Math.max(b.fitColumns.x+d,b.fitColumns.width); -b.fitColumns.y+=f})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResize:function(){return this.reLayout()},_cellsByColumnReset:function(){this.cellsByColumn={};this._getSegments("cellsByColumn",true);this.cellsByColumn.columnWidth=this.options.cellsByColumn.columnWidth||this.$allAtoms.outerHeight(true);return this},_cellsByColumnLayout:function(a){var b=this,c=this.cellsByColumn.rows;this.cellsByColumn.atomsLen=a.length;a.each(function(d){var f=e(this),g= -(~~(d/c)+0.5)*b.cellsByColumn.columnWidth-f.outerWidth(true)/2+b.posLeft;d=(d%c+0.5)*b.cellsByColumn.rowHeight-f.outerHeight(true)/2+b.posTop;b._pushPosition(f,g,d)});return this},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.cellsByColumn.atomsLen/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth+this.posLeft}},_cellsByColumnResize:function(){var a=this.cellsByColumn.rows;this._getSegments("cellsByColumn",true);this.cellsByColumn.rows!==a&&this.reLayout();return this}}; -e.fn.imagesLoaded=function(a){var b=this.find("img"),c=b.length,d=this;b.bind("load",function(){--c<=0&&a.call(d)}).each(function(){if(this.complete||this.complete===k){var f=this.src;this.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";this.src=f}});return this};e.widget=e.widget||{};e.widget.bridge=e.widget.bridge||function(a,b){e.fn[a]=function(c){var d=typeof c==="string",f=Array.prototype.slice.call(arguments,1),g=this;c=!d&&f.length?e.extend.apply(null,[true,c].concat(f)): -c;if(d&&c.charAt(0)==="_")return g;d?this.each(function(){var h=e.data(this,a);if(!h)return e.error("cannot call methods on "+a+" prior to initialization; attempted to call method '"+c+"'");if(!e.isFunction(h[c]))return e.error("no such method '"+c+"' for "+a+" widget instance");var i=h[c].apply(h,f);if(i!==h&&i!==k){g=i;return false}}):this.each(function(){var h=e.data(this,a);h?h.option(c||{})._init():e.data(this,a,new b(c,this))});return g}};e.widget.bridge("isotope",e.Isotope)})(jQuery); +var getStyleProperty=function(){var f=["Moz","Webkit","Khtml","O","Ms"],k={};return function(j,l){l=l||document.documentElement;var a=l.style,b,c,d,e;if(arguments.length===1&&typeof k[j]==="string")return k[j];if(typeof a[j]==="string")return k[j]=j;c=j.charAt(0).toUpperCase()+j.slice(1);d=0;for(e=f.length;dh?1:gb.width){b.fitRows.x=0;b.fitRows.y=b.fitRows.height}b._pushPosition(c,b.fitRows.x+b.posLeft,b.fitRows.y+b.posTop);b.fitRows.height=Math.max(b.fitRows.y+e,b.fitRows.height);b.fitRows.x+= +d})},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0};return this},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResize:function(){return this.reLayout()},_cellsByRowReset:function(){this.cellsByRow={};this._getSegments("cellsByRow");this.cellsByRow.rowHeight=this.options.cellsByRow.rowHeight||this.$allAtoms.outerHeight(true);return this},_cellsByRowLayout:function(a){var b=this,c=this.cellsByRow.cols;this.cellsByRow.atomsLen=a.length;a.each(function(d){var e= +f(this),g=(d%c+0.5)*b.cellsByRow.columnWidth-e.outerWidth(true)/2+b.posLeft;d=(~~(d/c)+0.5)*b.cellsByRow.rowHeight-e.outerHeight(true)/2+b.posTop;b._pushPosition(e,g,d)});return this},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.cellsByRow.atomsLen/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.posTop}},_cellsByRowResize:function(){var a=this.cellsByRow.cols;this._getSegments("cellsByRow");this.cellsByRow.cols!==a&&this.reLayout();return this},_straightDownReset:function(){this.straightDown= +{y:0};return this},_straightDownLayout:function(a){var b=this;a.each(function(){var c=f(this);b._pushPosition(c,b.posLeft,b.straightDown.y+b.posTop);b.straightDown.y+=c.outerHeight(true)});return this},_straightDownGetContainerSize:function(){return{height:this.straightDown.y+this.posTop}},_straightDownResize:function(){this.reLayout();return this},_masonryHorizontalPlaceBrick:function(a,b,c){b=Math.min.apply(Math,c);for(var d=b+a.outerWidth(true),e=c.length,g=e,h=this.masonryHorizontal.rows+1-e;e--;)if(c[e]=== +b)g=e;this._pushPosition(a,b,this.masonryHorizontal.rowHeight*g+this.posTop);for(e=0;eb.height){b.fitColumns.x=b.fitColumns.width;b.fitColumns.y=0}b._pushPosition(c,b.fitColumns.x+b.posLeft,b.fitColumns.y+b.posTop);b.fitColumns.width=Math.max(b.fitColumns.x+d,b.fitColumns.width); +b.fitColumns.y+=e})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResize:function(){return this.reLayout()},_cellsByColumnReset:function(){this.cellsByColumn={};this._getSegments("cellsByColumn",true);this.cellsByColumn.columnWidth=this.options.cellsByColumn.columnWidth||this.$allAtoms.outerHeight(true);return this},_cellsByColumnLayout:function(a){var b=this,c=this.cellsByColumn.rows;this.cellsByColumn.atomsLen=a.length;a.each(function(d){var e=f(this),g= +(~~(d/c)+0.5)*b.cellsByColumn.columnWidth-e.outerWidth(true)/2+b.posLeft;d=(d%c+0.5)*b.cellsByColumn.rowHeight-e.outerHeight(true)/2+b.posTop;b._pushPosition(e,g,d)});return this},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.cellsByColumn.atomsLen/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth+this.posLeft}},_cellsByColumnResize:function(){var a=this.cellsByColumn.rows;this._getSegments("cellsByColumn",true);this.cellsByColumn.rows!==a&&this.reLayout();return this}}; +f.fn.imagesLoaded=function(a){var b=this.find("img"),c=b.length,d=this;b.bind("load",function(){--c<=0&&a.call(d)}).each(function(){if(this.complete||this.complete===k){var e=this.src;this.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";this.src=e}});return this};f.widget=f.widget||{};f.widget.bridge=f.widget.bridge||function(a,b){f.fn[a]=function(c){var d=typeof c==="string",e=Array.prototype.slice.call(arguments,1),g=this;c=!d&&e.length?f.extend.apply(null,[true,c].concat(e)): +c;if(d&&c.charAt(0)==="_")return g;d?this.each(function(){var h=f.data(this,a);if(!h)return f.error("cannot call methods on "+a+" prior to initialization; attempted to call method '"+c+"'");if(!f.isFunction(h[c]))return f.error("no such method '"+c+"' for "+a+" widget instance");var i=h[c].apply(h,e);if(i!==h&&i!==k){g=i;return false}}):this.each(function(){var h=f.data(this,a);h?h.option(c||{})._init():f.data(this,a,new b(c,this))});return g}};f.widget.bridge("isotope",f.Isotope)})(jQuery);