mirror of
https://github.com/WebStackPage/WebStackPage.github.io.git
synced 2026-02-08 04:45:33 +08:00
171 lines
3.7 KiB
JavaScript
171 lines
3.7 KiB
JavaScript
/**
|
|
* Xenon Widgets
|
|
*
|
|
* Theme by: www.laborator.co
|
|
**/
|
|
|
|
;(function($, window, undefined){
|
|
|
|
"use strict";
|
|
|
|
$(document).ready(function()
|
|
{
|
|
if($('.page-loading-overlay').length)
|
|
{
|
|
$(window).on('load', function()
|
|
{
|
|
setTimeout(setupWidgets, 200);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
setupWidgets();
|
|
}
|
|
});
|
|
|
|
|
|
var setupWidgets = function()
|
|
{
|
|
// Count Anything
|
|
$("[data-from][data-to]").each(function(i, el)
|
|
{
|
|
var $el = $(el),
|
|
sm = scrollMonitor.create(el);
|
|
|
|
sm.fullyEnterViewport(function()
|
|
{
|
|
var opts = {
|
|
useEasing: attrDefault($el, 'easing', true),
|
|
useGrouping: attrDefault($el, 'grouping', true),
|
|
separator: attrDefault($el, 'separator', ','),
|
|
decimal: attrDefault($el, 'decimal', '.'),
|
|
prefix: attrDefault($el, 'prefix', ''),
|
|
suffix: attrDefault($el, 'suffix', ''),
|
|
},
|
|
$count = attrDefault($el, 'count', 'this') == 'this' ? $el : $el.find($el.data('count')),
|
|
from = attrDefault($el, 'from', 0),
|
|
to = attrDefault($el, 'to', 100),
|
|
duration = attrDefault($el, 'duration', 2.5),
|
|
delay = attrDefault($el, 'delay', 0),
|
|
decimals = new String(to).match(/\.([0-9]+)/) ? new String(to).match(/\.([0-9]+)$/)[1].length : 0,
|
|
counter = new countUp($count.get(0), from, to, decimals, duration, opts);
|
|
|
|
setTimeout(function(){ counter.start(); }, delay * 1000);
|
|
|
|
sm.destroy();
|
|
});
|
|
});
|
|
|
|
|
|
// Fill Anything
|
|
$("[data-fill-from][data-fill-to]").each(function(i, el)
|
|
{
|
|
var $el = $(el),
|
|
sm = scrollMonitor.create(el);
|
|
|
|
sm.fullyEnterViewport(function()
|
|
{
|
|
var fill = {
|
|
current: null,
|
|
from: attrDefault($el, 'fill-from', 0),
|
|
to: attrDefault($el, 'fill-to', 100),
|
|
property: attrDefault($el, 'fill-property', 'width'),
|
|
unit: attrDefault($el, 'fill-unit', '%'),
|
|
},
|
|
opts = {
|
|
current: fill.to, onUpdate: function(){
|
|
$el.css(fill.property, fill.current + fill.unit);
|
|
},
|
|
delay: attrDefault($el, 'delay', 0),
|
|
},
|
|
easing = attrDefault($el, 'fill-easing', true),
|
|
duration = attrDefault($el, 'fill-duration', 2.5);
|
|
|
|
if(easing)
|
|
{
|
|
opts.ease = Sine.easeOut;
|
|
}
|
|
|
|
// Set starting point
|
|
fill.current = fill.from;
|
|
|
|
TweenMax.to(fill, duration, opts);
|
|
|
|
sm.destroy();
|
|
});
|
|
});
|
|
|
|
|
|
// Todo List
|
|
$(".xe-todo-list").on('change', 'input[type="checkbox"]', function(ev)
|
|
{
|
|
var $cb = $(this),
|
|
$li = $cb.closest('li');
|
|
|
|
$li.removeClass('done');
|
|
|
|
if($cb.is(':checked'))
|
|
{
|
|
$li.addClass('done');
|
|
}
|
|
});
|
|
|
|
|
|
$(".xe-status-update").each(function(i, el)
|
|
{
|
|
var $el = $(el),
|
|
$nav = $el.find('.xe-nav a'),
|
|
$status_list = $el.find('.xe-body li'),
|
|
index = $status_list.filter('.active').index(),
|
|
auto_switch = attrDefault($el, 'auto-switch', 0),
|
|
as_interval = 0;
|
|
|
|
if(auto_switch > 0)
|
|
{
|
|
as_interval = setInterval(function()
|
|
{
|
|
goTo(1);
|
|
|
|
}, auto_switch * 1000);
|
|
|
|
$el.hover(function()
|
|
{
|
|
window.clearInterval(as_interval);
|
|
},
|
|
function()
|
|
{
|
|
as_interval = setInterval(function()
|
|
{
|
|
goTo(1);
|
|
|
|
}, auto_switch * 1000);;
|
|
});
|
|
}
|
|
|
|
function goTo(plus_one)
|
|
{
|
|
index = (index + plus_one) % $status_list.length;
|
|
|
|
if(index < 0)
|
|
index = $status_list.length - 1;
|
|
|
|
var $to_hide = $status_list.filter('.active'),
|
|
$to_show = $status_list.eq(index);
|
|
|
|
$to_hide.removeClass('active');
|
|
$to_show.addClass('active').fadeTo(0,0).fadeTo(320,1);
|
|
}
|
|
|
|
$nav.on('click', function(ev)
|
|
{
|
|
ev.preventDefault();
|
|
|
|
var plus_one = $(this).hasClass('xe-prev') ? -1 : 1;
|
|
|
|
goTo(plus_one);
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
})(jQuery, window); |