|
|
|
/*************************************************
|
|
|
|
** jQuery Mercutio version 0.1
|
|
|
|
** Copyright David DeSandro, licensed MIT
|
|
|
|
** http://desandro.com/resources/jquery-mercutio
|
|
|
|
**************************************************/
|
|
|
|
(function($){
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* smartresize: debounced resize event for jQuery
|
|
|
|
* http://github.com/lrbabe/jquery-smartresize
|
|
|
|
*
|
|
|
|
* Copyright (c) 2009 Louis-Remi Babe
|
|
|
|
* Licensed under the GPL license.
|
|
|
|
* http://docs.jquery.com/License
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
var $event = $.event,
|
|
|
|
resizeTimeout;
|
|
|
|
|
|
|
|
$event.special.smartresize = {
|
|
|
|
setup: function() {
|
|
|
|
$(this).bind( "resize", $event.special.smartresize.handler );
|
|
|
|
},
|
|
|
|
teardown: function() {
|
|
|
|
$(this).unbind( "resize", $event.special.smartresize.handler );
|
|
|
|
},
|
|
|
|
handler: function( event, execAsap ) {
|
|
|
|
// Save the context
|
|
|
|
var context = this,
|
|
|
|
args = arguments;
|
|
|
|
|
|
|
|
// set correct event type
|
|
|
|
event.type = "smartresize";
|
|
|
|
|
|
|
|
if ( resizeTimeout ) { clearTimeout( resizeTimeout ); }
|
|
|
|
resizeTimeout = setTimeout(function() {
|
|
|
|
jQuery.event.handle.apply( context, args );
|
|
|
|
}, execAsap === "execAsap"? 0 : 100 );
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
$.fn.smartresize = function( fn ) {
|
|
|
|
return fn ? this.bind( "smartresize", fn ) : this.trigger( "smartresize", ["execAsap"] );
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
$cards.all
|
|
|
|
$cards.filtered
|
|
|
|
$cards.sorted
|
|
|
|
*/
|
|
|
|
|
|
|
|
var mercutioMethods = {
|
|
|
|
|
|
|
|
// gets all current children ( filtered if necessary ) in the pool
|
|
|
|
getCards : function() {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
filter : function() {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
// used on all the filtered cards, $cards.filtered
|
|
|
|
sort : function() {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
// used on collection of cards (should be filtered, and sorted before )
|
|
|
|
// accepts cards-to-be-laid-out and colYs to start with
|
|
|
|
layout : function( $cardsToBeLaidOut, colYs ) {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
resize : function() {
|
|
|
|
// get updated colCount
|
|
|
|
// if current colCount !== previous colCount
|
|
|
|
// do layout
|
|
|
|
},
|
|
|
|
|
|
|
|
append : function() {
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
init : function( options ) {
|
|
|
|
|
|
|
|
return this.each(function() {
|
|
|
|
|
|
|
|
var $this = $(this),
|
|
|
|
data = $this.data('mercutio'),
|
|
|
|
props = data || {};
|
|
|
|
|
|
|
|
// checks if masonry has been called before on this object
|
|
|
|
props.initiated = !!data;
|
|
|
|
|
|
|
|
var previousOptions = props.initiated ? data.opts : {};
|
|
|
|
|
|
|
|
props.opts = $.extend(
|
|
|
|
{},
|
|
|
|
$.fn.mercutio.defaults,
|
|
|
|
previousOptions,
|
|
|
|
options
|
|
|
|
);
|
|
|
|
|
|
|
|
$this.data( 'mercutio', props );
|
|
|
|
|
|
|
|
// need to get cards
|
|
|
|
$this.mercutio( 'getCards' );
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
// mercutio code begin
|
|
|
|
$.fn.mercutio = function( firstArg ) {
|
|
|
|
|
|
|
|
// Method calling logic
|
|
|
|
var method = mercutioMethods[ firstArg ];
|
|
|
|
if ( method ) {
|
|
|
|
// remove firstArg, which is a string of the function name, from arguments
|
|
|
|
var args = Array.prototype.slice.call( arguments, 1 );
|
|
|
|
return method.apply( this, args );
|
|
|
|
|
|
|
|
} else if ( !firstArg || typeof firstArg === 'object' ) {
|
|
|
|
return mercutioMethods.init.apply( this, arguments );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Default plugin options
|
|
|
|
$.fn.mercutio.defaults = {
|
|
|
|
singleMode: false,
|
|
|
|
columnWidth: undefined,
|
|
|
|
itemSelector: undefined,
|
|
|
|
appendedContent: undefined,
|
|
|
|
saveOptions: true,
|
|
|
|
resizeable: true,
|
|
|
|
animate: false,
|
|
|
|
animationOptions: {}
|
|
|
|
};
|
|
|
|
|
|
|
|
})(jQuery);
|