/* ========================================================= * vc_grid_style_all.js v1.0 * ========================================================= * Copyright 2014 Wpbakery * * Basic Grid Style show all * ========================================================= */ var vcGridStyleAll; (function ( $ ) { /** * "Show all items" grid style. * ============================== * * @param grid * @constructor */ vcGridStyleAll = function ( grid ) { this.grid = grid; this.settings = grid.settings; this.filterValue = null; this.$el = false; this.$content = false; this.isLoading = false; this.$loader = $( '
' ); this.init(); }; /** * Initialize */ vcGridStyleAll.prototype.init = function () { _.bindAll( this , 'addItems' , 'showItems' ); }; /** * Build required content and data. */ vcGridStyleAll.prototype.render = function () { this.$el = this.grid.$el; this.$content = this.$el; this.setIsLoading(); this.grid.ajax( {}, this.addItems ); }; vcGridStyleAll.prototype.setIsLoading = function () { this.$content.append( this.$loader ); this.isLoading = true; }; vcGridStyleAll.prototype.unsetIsLoading = function () { this.isLoading = false; this.$loader && this.$loader.remove(); }; /** * Filter function called by grid object ot filter content. * * @param filter - string parameter with filter settings. */ vcGridStyleAll.prototype.filter = function ( filter ) { filter = _.isUndefined( filter ) || filter === '*' ? '' : filter; if ( this.filterValue == filter ) { return false; // already filtred } this.$content .find( '.vc_visible-item' ) .removeClass( 'vc_visible-item ' + vcGridSettings.addItemsAnimation + ' animated' ); this.filterValue = filter; _.defer( this.showItems ); // just only for animation }; vcGridStyleAll.prototype.showItems = function () { var $els = this.$content.find( '.vc_grid-item' + this.filterValue ); this.setIsLoading(); $els.addClass( 'vc_visible-item ' + ( vcGridSettings.addItemsAnimation != 'none' ? vcGridSettings.addItemsAnimation + ' animated' : '') ); this.unsetIsLoading(); jQuery(window).trigger( 'grid:items:added', this.$el ); }; /** * Add new grid elements to content block. Called by ajax in render method. * @param html */ vcGridStyleAll.prototype.addItems = function ( html ) { this.unsetIsLoading(); $( html ).appendTo( this.$el ); this.$content = this.$el.find( '[data-vc-grid-content="true"]' ); this.grid.initFilter(); this.filter(); window.vc_prettyPhoto(); return false; }; })( window.jQuery );