Initial ethoFS Integration
This commit is contained in:
245
assets/dashboard/plugins/waitme/waitMe.js
Normal file
245
assets/dashboard/plugins/waitme/waitMe.js
Normal file
@@ -0,0 +1,245 @@
|
||||
/*
|
||||
waitMe - 1.15 [15.02.16]
|
||||
Author: vadimsva
|
||||
Github: https://github.com/vadimsva/waitMe
|
||||
*/
|
||||
(function($) {
|
||||
$.fn.waitMe = function(method) {
|
||||
return this.each(function() {
|
||||
|
||||
var elem = $(this),
|
||||
elemClass = 'waitMe',
|
||||
waitMe_text,
|
||||
effectObj,
|
||||
effectElemCount,
|
||||
createSubElem = false,
|
||||
specificAttr = 'background-color',
|
||||
addStyle = '',
|
||||
effectElemHTML = '',
|
||||
waitMeObj,
|
||||
_options,
|
||||
currentID;
|
||||
|
||||
var methods = {
|
||||
init : function() {
|
||||
var _defaults = {
|
||||
effect: 'bounce',
|
||||
text: '',
|
||||
bg: 'rgba(255,255,255,0.7)',
|
||||
color: '#000',
|
||||
maxSize: '',
|
||||
source: '',
|
||||
onClose: function() {}
|
||||
};
|
||||
_options = $.extend(_defaults, method);
|
||||
|
||||
currentID = new Date().getMilliseconds();
|
||||
waitMeObj = $('<div class="' + elemClass + '" data-waitme_id="' + currentID + '"></div>');
|
||||
|
||||
switch (_options.effect) {
|
||||
case 'none':
|
||||
effectElemCount = 0;
|
||||
break;
|
||||
case 'bounce':
|
||||
effectElemCount = 3;
|
||||
break;
|
||||
case 'rotateplane':
|
||||
effectElemCount = 1;
|
||||
break;
|
||||
case 'stretch':
|
||||
effectElemCount = 5;
|
||||
break;
|
||||
case 'orbit':
|
||||
effectElemCount = 2;
|
||||
break;
|
||||
case 'roundBounce':
|
||||
effectElemCount = 12;
|
||||
break;
|
||||
case 'win8':
|
||||
effectElemCount = 5;
|
||||
createSubElem = true;
|
||||
break;
|
||||
case 'win8_linear':
|
||||
effectElemCount = 5;
|
||||
createSubElem = true;
|
||||
break;
|
||||
case 'ios':
|
||||
effectElemCount = 12;
|
||||
break;
|
||||
case 'facebook':
|
||||
effectElemCount = 3;
|
||||
break;
|
||||
case 'rotation':
|
||||
effectElemCount = 1;
|
||||
specificAttr = 'border-color';
|
||||
break;
|
||||
case 'timer':
|
||||
effectElemCount = 2;
|
||||
if ($.isArray(_options.color)) {
|
||||
var color = _options.color[0];
|
||||
} else {
|
||||
var color = _options.color;
|
||||
}
|
||||
addStyle = 'border-color:' + color;
|
||||
break;
|
||||
case 'pulse':
|
||||
effectElemCount = 1;
|
||||
specificAttr = 'border-color';
|
||||
break;
|
||||
case 'progressBar':
|
||||
effectElemCount = 1;
|
||||
break;
|
||||
case 'bouncePulse':
|
||||
effectElemCount = 3;
|
||||
break;
|
||||
case 'img':
|
||||
effectElemCount = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (addStyle !== '') {
|
||||
addStyle += ';';
|
||||
}
|
||||
|
||||
if (effectElemCount > 0) {
|
||||
if(_options.effect === 'img') {
|
||||
effectElemHTML = '<img src="' + _options.source + '">';
|
||||
} else {
|
||||
for (var i = 1; i <= effectElemCount; ++i) {
|
||||
if ($.isArray(_options.color)) {
|
||||
var color = _options.color[i];
|
||||
if (color == undefined) {
|
||||
color = '#000';
|
||||
}
|
||||
} else {
|
||||
var color = _options.color;
|
||||
}
|
||||
if (createSubElem) {
|
||||
effectElemHTML += '<div class="' + elemClass + '_progress_elem' + i + '"><div style="' + specificAttr +':' + color + '"></div></div>';
|
||||
} else {
|
||||
effectElemHTML += '<div class="' + elemClass + '_progress_elem' + i + '" style="' + specificAttr + ':' + color + '"></div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
effectObj = $('<div class="' + elemClass + '_progress ' + _options.effect + '" style="' + addStyle + '">' + effectElemHTML + '</div>');
|
||||
}
|
||||
|
||||
if (_options.text && _options.maxSize === '') {
|
||||
if ($.isArray(_options.color)) {
|
||||
var color = _options.color[0];
|
||||
} else {
|
||||
var color = _options.color;
|
||||
}
|
||||
waitMe_text = $('<div class="' + elemClass + '_text" style="color:' + color + '">' + _options.text + '</div>');
|
||||
}
|
||||
var elemObj = elem.find('> .' + elemClass);
|
||||
|
||||
if (elemObj) {
|
||||
elemObj.remove();
|
||||
}
|
||||
var waitMeDivObj = $('<div class="' + elemClass + '_content"></div>');
|
||||
waitMeDivObj.append(effectObj, waitMe_text);
|
||||
waitMeObj.append(waitMeDivObj);
|
||||
if (elem[0].tagName == 'HTML') {
|
||||
elem = $('body');
|
||||
}
|
||||
elem.addClass(elemClass + '_container').attr('data-waitme_id', currentID).append(waitMeObj);
|
||||
elemObj = elem.find('> .' + elemClass);
|
||||
var elemContentObj = elem.find('.' + elemClass + '_content');
|
||||
elemObj.css({background: _options.bg});
|
||||
elemContentObj.css({marginTop: - elemContentObj.outerHeight() / 2 + 'px'});
|
||||
|
||||
if (_options.maxSize !== '') {
|
||||
var elemH = effectObj.outerHeight();
|
||||
var elemW = effectObj.outerWidth();
|
||||
var elemMax = elemH;
|
||||
if (_options.effect === 'img') {
|
||||
effectObj.css({height: _options.maxSize + 'px'});
|
||||
effectObj.find('>img').css({maxHeight: '100%'});
|
||||
elemContentObj.css({marginTop: - elemContentObj.outerHeight() / 2 + 'px'});
|
||||
} else {
|
||||
if (_options.maxSize < elemMax) {
|
||||
waitMeDivObj.css({transform: 'scale(' + _options.maxSize / elemMax + ')'});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setElTop(getTop) {
|
||||
elemContentObj.css({top: 'auto', transform: 'translateY(' + getTop + 'px) translateZ(0)'});
|
||||
}
|
||||
if (elem.outerHeight() > $(window).height()) {
|
||||
var sTop = $(window).scrollTop(),
|
||||
elH = elemContentObj.outerHeight(),
|
||||
elTop = elem.offset().top,
|
||||
cH = elem.outerHeight(),
|
||||
getTop = sTop - elTop + $(window).height()/2;
|
||||
if (getTop < 0) {
|
||||
getTop = Math.abs(getTop);
|
||||
}
|
||||
if (getTop - elH >= 0 && getTop + elH <= cH) {
|
||||
if (elTop - sTop > $(window).height()/2) {
|
||||
getTop = elH;
|
||||
}
|
||||
setElTop(getTop);
|
||||
} else {
|
||||
if (sTop > elTop + cH - elH) {
|
||||
getTop = sTop - elTop - elH;
|
||||
} else {
|
||||
getTop = sTop - elTop + elH;
|
||||
}
|
||||
setElTop(getTop);
|
||||
}
|
||||
$(document).scroll(function() {
|
||||
var sTop = $(window).scrollTop(),
|
||||
getTop = sTop - elTop + $(window).height()/2;
|
||||
if (getTop - elH >= 0 && getTop + elH <= cH) {
|
||||
setElTop(getTop);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
elemObj.on('destroyed', function() {
|
||||
if (_options.onClose && $.isFunction(_options.onClose)) {
|
||||
_options.onClose();
|
||||
}
|
||||
elemObj.trigger('close');
|
||||
});
|
||||
|
||||
$.event.special.destroyed = {
|
||||
remove: function(o) {
|
||||
if (o.handler) {
|
||||
o.handler();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return elemObj;
|
||||
},
|
||||
hide : function() {
|
||||
waitMeClose();
|
||||
}
|
||||
};
|
||||
|
||||
function waitMeClose() {
|
||||
var currentID = elem.attr('data-waitme_id');
|
||||
elem.removeClass(elemClass + '_container').removeAttr('data-waitme_id');
|
||||
elem.find('.' + elemClass + '[data-waitme_id="' + currentID + '"]').remove();
|
||||
}
|
||||
|
||||
if (methods[method]) {
|
||||
return methods[method].apply( this, Array.prototype.slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || ! method) {
|
||||
return methods.init.apply(this, arguments);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
$(window).on('load', function(){
|
||||
$('body.waitMe_body').addClass('hideMe');
|
||||
setTimeout(function(){
|
||||
$('body.waitMe_body').find('.waitMe_container:not([data-waitme_id])').remove();
|
||||
$('body.waitMe_body').removeClass('waitMe_body hideMe');
|
||||
},200);
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user