112 lines
2.3 KiB
JavaScript
112 lines
2.3 KiB
JavaScript
|
/**
|
||
|
* AutoRefresh Plugin
|
||
|
* @version 2.3.4
|
||
|
* @author Artus Kolanowski
|
||
|
* @author David Deutsch
|
||
|
* @license The MIT License (MIT)
|
||
|
*/
|
||
|
;(function($, window, document, undefined) {
|
||
|
|
||
|
/**
|
||
|
* Creates the auto refresh plugin.
|
||
|
* @class The Auto Refresh Plugin
|
||
|
* @param {Owl} carousel - The Owl Carousel
|
||
|
*/
|
||
|
var AutoRefresh = function(carousel) {
|
||
|
/**
|
||
|
* Reference to the core.
|
||
|
* @protected
|
||
|
* @type {Owl}
|
||
|
*/
|
||
|
this._core = carousel;
|
||
|
|
||
|
/**
|
||
|
* Refresh interval.
|
||
|
* @protected
|
||
|
* @type {number}
|
||
|
*/
|
||
|
this._interval = null;
|
||
|
|
||
|
/**
|
||
|
* Whether the element is currently visible or not.
|
||
|
* @protected
|
||
|
* @type {Boolean}
|
||
|
*/
|
||
|
this._visible = null;
|
||
|
|
||
|
/**
|
||
|
* All event handlers.
|
||
|
* @protected
|
||
|
* @type {Object}
|
||
|
*/
|
||
|
this._handlers = {
|
||
|
'initialized.owl.carousel': $.proxy(function(e) {
|
||
|
if (e.namespace && this._core.settings.autoRefresh) {
|
||
|
this.watch();
|
||
|
}
|
||
|
}, this)
|
||
|
};
|
||
|
|
||
|
// set default options
|
||
|
this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);
|
||
|
|
||
|
// register event handlers
|
||
|
this._core.$element.on(this._handlers);
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Default options.
|
||
|
* @public
|
||
|
*/
|
||
|
AutoRefresh.Defaults = {
|
||
|
autoRefresh: true,
|
||
|
autoRefreshInterval: 500
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Watches the element.
|
||
|
*/
|
||
|
AutoRefresh.prototype.watch = function() {
|
||
|
if (this._interval) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this._visible = this._core.isVisible();
|
||
|
this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Refreshes the element.
|
||
|
*/
|
||
|
AutoRefresh.prototype.refresh = function() {
|
||
|
if (this._core.isVisible() === this._visible) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this._visible = !this._visible;
|
||
|
|
||
|
this._core.$element.toggleClass('owl-hidden', !this._visible);
|
||
|
|
||
|
this._visible && (this._core.invalidate('width') && this._core.refresh());
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Destroys the plugin.
|
||
|
*/
|
||
|
AutoRefresh.prototype.destroy = function() {
|
||
|
var handler, property;
|
||
|
|
||
|
window.clearInterval(this._interval);
|
||
|
|
||
|
for (handler in this._handlers) {
|
||
|
this._core.$element.off(handler, this._handlers[handler]);
|
||
|
}
|
||
|
for (property in Object.getOwnPropertyNames(this)) {
|
||
|
typeof this[property] != 'function' && (this[property] = null);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;
|
||
|
|
||
|
})(window.Zepto || window.jQuery, window, document);
|