1
0
mirror of https://github.com/cotes2020/jekyll-theme-chirpy.git synced 2025-12-18 05:41:31 +00:00

Import the framework.

This commit is contained in:
Cotes Chung
2019-09-30 20:38:41 +08:00
parent 5d0e72d5da
commit b845c829f6
103 changed files with 4640 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
/*
Reference: https://bootsnipp.com/snippets/featured/link-to-top-page
*/
$(window).scroll(function() {
if ($(this).scrollTop() > 50
&& $('#sidebar-trigger').css('display') == 'none') {
$('#back-to-top').fadeIn();
} else {
$('#back-to-top').fadeOut();
}
});
$(function() {
$('#back-to-top').click(function() {
$('body,html').animate({scrollTop: 0}, 800);
return false;
});
});

View File

@@ -0,0 +1,88 @@
/*
* This script make #search-result-wrap switch to hidden or shown automatically.
* © 2018-2019 Cotes Chung
* MIT License
*/
$(function() {
var offset = 0;
var btnCancel = $('#search-wrap + a');
var btnSbTrigger = $('#sidebar-trigger');
var btnSearchTrigger = $('#search-trigger');
var btnCloseSearch = $('#search-wrap + a');
var topbarTitle = $('#topbar-title');
var searchWrap = $('#search-wrap');
/*--- Actions in small screens ---*/
btnSearchTrigger.click(function() {
offset = $(window).scrollTop();
$('body').addClass('no-scroll');
// $('body').css('top', -offset + 'px');
// $('html,body').addClass('input-focus');
btnSbTrigger.addClass('hidden');
topbarTitle.addClass('hidden');
btnSearchTrigger.addClass('hidden');
searchWrap.addClass('shown flex-grow-1');
btnCancel.addClass('shown');
$('#main').addClass('hidden');
$('#search-result-wrap').addClass('shown');
$('#search-input').focus();
});
btnCancel.click(function() {
btnCancel.removeClass('shown');
$('#search-input').val('');
$('#search-results').empty();
searchWrap.removeClass('shown flex-grow-1');
btnSbTrigger.removeClass('hidden');
topbarTitle.removeClass('hidden');
btnSearchTrigger.removeClass('hidden');
$('#main').removeClass('hidden');
$('#search-result-wrap').removeClass('shown');
$('body').removeClass('no-scroll');
// $('html,body').removeClass('input-focus');
$('html,body').scrollTop(offset);
});
/*--- Actions in large screens. ---*/
var isShown = false;
$('#search-input').on('input', function(){
if (isShown == false) {
offset = $(window).scrollTop();
$('body,html').scrollTop(0);
$('#search-result-wrap').addClass('shown');
$('#main').addClass('hidden');
isShown = true;
}
});
$('#search-input').on('keyup', function(e){
var input = $('#search-input').val();
if (e.keyCode == 8 && input == '' && btnCloseSearch.css('display') == 'none') {
$('#main').removeClass('hidden');
$('#search-result-wrap').removeClass('shown');
$('body,html').scrollTop(offset);
isShown = false;
}
});
});

View File

@@ -0,0 +1,54 @@
/**
* Expand or close the sidebar in mobile screens.
* © 2018-2019 Cotes Chung
* MIT License
*/
$(function(){
var isExpanded = false;
$("#sidebar-trigger").click(function() {
if (isExpanded == false) {
$("#sidebar").addClass("sidebar-expand");
openModal();
isExpanded = true;
}
});
$("#mask").click(function() {
$("#sidebar").removeClass("sidebar-expand");
closeModal();
isExpanded = false;
});
/**
* ModalHelper helpers resolve the modal scrolling issue on mobile devices
* https://github.com/twbs/bootstrap/issues/15852
* requires document.scrollingElement polyfill https://github.com/yangg/scrolling-element
*/
var ModalHelper = (function(bodyCls) {
var scrollTop;
return {
afterOpen: function() {
scrollTop = document.scrollingElement.scrollTop;
document.body.classList.add(bodyCls);
document.body.style.top = -scrollTop + 'px';
},
beforeClose: function() {
document.body.classList.remove(bodyCls);
// scrollTop lost after set position:fixed, restore it back.
document.scrollingElement.scrollTop = scrollTop;
document.body.style.top = '';
}
};
})('no-scroll');
function openModal() {
ModalHelper.afterOpen();
}
function closeModal() {
ModalHelper.beforeClose();
}
});

View File

@@ -0,0 +1,8 @@
/**
* Initial Bootstrap Tooltip.
* © 2019 Cotes Chung
* MIT License
*/
$(function () {
$('[data-toggle="tooltip"]').tooltip({placement: "auto"});
})

View File

@@ -0,0 +1,64 @@
/*
* Hide Header on scroll down
* © 2018-2019 Cotes Chung
* MIT License
*/
$(function() {
var didScroll;
var lastScrollTop = 0;
var delta = 5;
var topbarHeight = $('#topbar').outerHeight();
$(window).scroll(function(event) {
if ($("#topbar-title").is(":hidden")) { // Not in small screens
didScroll = true;
}
});
setInterval(function() {
if (didScroll) {
hasScrolled();
didScroll = false;
}
}, 250);
function hasScrolled() {
var st = $(this).scrollTop();
// Make sure they scroll more than delta
if (Math.abs(lastScrollTop - st) <= delta)
return;
if (st > lastScrollTop && st > topbarHeight) {
// Scroll Down
$('#topbar').removeClass('topbar-down').addClass('topbar-up');
if ( $('#toc-wrap').length > 0) {
$('#toc-wrap').removeClass('topbar-down');
}
if ( $('.panel-group').length > 0) {
$('.panel-group').removeClass('topbar-down');
}
if ($('#search-input').is(':focus')) {
$('#search-input').blur(); // remove focus
}
} else {
// Scroll Up
if (st + $(window).height() < $(document).height()) {
$('#topbar').removeClass('topbar-up').addClass('topbar-down');
if ( $('#toc-wrap').length > 0) {
$('#toc-wrap').addClass('topbar-down');
}
if ( $('.panel-group').length > 0) {
$('.panel-group').addClass('topbar-down');
}
}
}
lastScrollTop = st;
}
});

View File

@@ -0,0 +1,44 @@
/*
* Topbar title auto change while scrolling in mobile screens.
* © 2018-2019 Cotes Chung
* MIT License
*/
$(function(){
var DEFAULT = $("#topbar-title").text().trim();
var title = ($("div.post>h1").length > 0) ?
$("div.post>h1").text().trim() : $("h1").text().trim();
if ($("#page-category").length || $("#page-tag").length) {
/* The title in Category or Tag page will be '<title> <count_of_posts>' */
if (/\s/.test(title)) {
title = title.replace(/[0-9]/g, '').trim();
}
}
// Replace topbar title while scroll screens.
$(window).scroll(function () {
if ($("#post-list").length // in Home page
|| $("div.post>h1").is(":hidden") // is tab pages
|| $("#topbar-title").is(":hidden") // not mobile screens
|| $("#sidebar.sidebar-expand").length) { // when the sidebar trigger is clicked
return false;
}
if ($(this).scrollTop() >= 95) {
if ($("#topbar-title").text() != title) {
$("#topbar-title").text(title);
}
} else {
if ($("#topbar-title").text() != DEFAULT) {
$("#topbar-title").text(DEFAULT);
}
}
})
// Click title remove hover effect.
$('#topbar-title').click(function() {
$('body,html').animate({scrollTop: 0}, 800);
});
});

View File

@@ -0,0 +1,31 @@
/*
* Tab 'Categories' expand/close effect.
* © 2018-2019 Cotes Chung
* MIT License
*/
$(function() {
var child_prefix = "l_";
var parent_prefix = "h_";
// close up Top
$(".collapse").on("hide.bs.collapse", function() { // Bootstrap collapse events.
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
if (parent_id) {
$("#" + parent_id + " .far.fa-folder-open").attr("class", "far fa-folder fa-fw");
$("#" + parent_id + " i.fas.fa-angle-up").addClass("flip");
$("#" + parent_id).removeClass("hide-border-bottom");
}
});
// expand Top Category
$(".collapse").on("show.bs.collapse", function() {
var parent_id = parent_prefix + $(this).attr('id').substring(child_prefix.length);
if (parent_id) {
$("#" + parent_id + " .far.fa-folder").attr("class", "far fa-folder-open fa-fw");
$("#" + parent_id + " i.fas.fa-angle-up").removeClass("flip");
$("#" + parent_id).addClass("hide-border-bottom");
}
});
});

111
assets/js/_src/pageviews.js Normal file
View File

@@ -0,0 +1,111 @@
/**
* Count pageviews form GA or local cache file.
*
* Dependences:
* - jQuery
* - countUp.js(https://github.com/inorganik/countUp.js)
*
* © 2018-2019 Cotes Chung
* MIT License
*/
function countUp(min, max, dest) {
if (min < max) {
var numAnim = new CountUp(dest, min, max);
if (!numAnim.error) {
numAnim.start();
} else {
console.error(numAnim.error);
}
}
}
function countPV(path, rows) {
/* path permalink looks like: '/posts/post-title/' */
var fileName = path.replace(/\/posts\//g, '').replace(/\//g, '.html'); /* e.g. post-title.html */
var count = 0;
var _v2_url = path.replace(/posts\//g, ''); /* the v2.0+ blog permalink: "/post-title/" */
for (var i = 0; i < rows.length; ++i) {
var gaPath = rows[i][0];
if (gaPath == path ||
gaPath == _v2_url ||
gaPath.concat('/') == _v2_url ||
gaPath.slice(gaPath.lastIndexOf('/') + 1) === fileName) { // old permalink record
count += parseInt(rows[i][1]);
}
}
return count;
}
function displayPageviews(rows, hasInit) {
if (rows === undefined) {
return;
}
if ($("#post-list").length > 0) { // the Home page
$(".post-preview").each(function() {
var path = $(this).children("h1").children("a").attr("href");
var count = countPV(path, rows);
count = (count == 0 ? 1 : count);
if (!hasInit) {
$(this).find('.pageviews').text(count);
} else {
var initCount = parseInt($(this).find('.pageviews').text());
if (count > initCount) {
countUp(initCount, count, $(this).find('.pageviews').attr('id'));
}
}
});
} else if ($(".post").length > 0) { // the post
var path = window.location.pathname;
var count = countPV(path, rows);
count = (count == 0 ? 1 : count);
if (!hasInit) {
$('#pv').text(count);
} else {
var initCount = parseInt($('#pv').text());
if (count > initCount) {
countUp(initCount, count, 'pv');
}
}
}
}
$(function() {
// load pageview if this page has .pageviews
if ($('.pageviews').length > 0) {
var hasInit = false;
// Get data from daily cache.
$.getJSON('/assets/data/pageviews.json', function(data) {
displayPageviews(data.rows, hasInit);
hasInit = true;
});
$.getJSON('/assets/data/proxy.json', function(data) {
$.ajax({
url: data.proxyUrl,
dataType: 'jsonp',
timeout: 2000,
success: function(data) {
displayPageviews(data.rows, hasInit);
},
error: function(xhr, status, err) {
console.log("Failed to load pageviews from proxy server.");
xhr.abort();
return;
}
});
});
} // endif
});

77
assets/js/_src/timeago.js Normal file
View File

@@ -0,0 +1,77 @@
/*
* Caculate the Timeago
*
* © 2019 Cotes Chung
* MIT Licensed
*/
$(function() {
function timeago(date, isLastmod) {
var now = new Date();
var past = new Date(date);
var seconds = Math.floor((now - past) / 1000);
var year = Math.floor(seconds / 31536000);
if (year >= 1) {
return year + " year" + (year > 1 ? "s" : "") + " ago";
}
var month = Math.floor(seconds / 2592000);
if (month >= 1) {
return month + " month" + (month > 1 ? "s" : "") + " ago";
}
var week = Math.floor(seconds / 604800);
if (week >= 1) {
return week + " week" + (week > 1 ? "s" : "") + " ago";
}
var day = Math.floor(seconds / 86400);
if (day >= 1) {
return day + " day" + (day > 1 ? "s" : "") + " ago";
}
var hour = Math.floor(seconds / 3600);
if (hour >= 1) {
return hour + " hour" + (hour > 1 ? "s" : "") + " ago";
}
var minute = Math.floor(seconds / 60);
if (minute >= 1) {
return minute + " minute" + (minute > 1 ? "s" : "") + " ago";
}
return (isLastmod? "just" : "Just") + " now";
}
function updateTimeago() {
$(".timeago").each(function() {
if ($(this).children("i").length > 0) {
var isLastmod = $(this).hasClass('lastmod');
var node = $(this).children("i");
var date = node.text(); /* ISO Dates: 'YYYY-MM-DDTHH:MM:SSZ' */
$(this).text(timeago(date, isLastmod));
$(this).append(node);
}
});
if (vote == 0 && intervalId != undefined) {
clearInterval(intervalId); /* stop interval */
}
return vote;
}
var vote = $(".timeago").length;
if (vote == 0) {
return;
}
if (updateTimeago() > 0) { /* run immediately */
vote = $(".timeago").length; /* resume */
var intervalId = setInterval(updateTimeago, 60000); /* loop every minutes */
}
});

View File

@@ -0,0 +1 @@
$(window).scroll(function(){if($(this).scrollTop()>50&&$("#sidebar-trigger").css("display")=="none"){$("#back-to-top").fadeIn()}else{$("#back-to-top").fadeOut()}});$(function(){$("#back-to-top").click(function(){$("body,html").animate({scrollTop:0},800);return false})});

View File

@@ -0,0 +1 @@
$(function(){var g=0;var e=$("#search-wrap + a");var c=$("#sidebar-trigger");var h=$("#search-trigger");var d=$("#search-wrap + a");var a=$("#topbar-title");var b=$("#search-wrap");h.click(function(){g=$(window).scrollTop();$("body").addClass("no-scroll");c.addClass("hidden");a.addClass("hidden");h.addClass("hidden");b.addClass("shown flex-grow-1");e.addClass("shown");$("#main").addClass("hidden");$("#search-result-wrap").addClass("shown");$("#search-input").focus()});e.click(function(){e.removeClass("shown");$("#search-input").val("");$("#search-results").empty();b.removeClass("shown flex-grow-1");c.removeClass("hidden");a.removeClass("hidden");h.removeClass("hidden");$("#main").removeClass("hidden");$("#search-result-wrap").removeClass("shown");$("body").removeClass("no-scroll");$("html,body").scrollTop(g)});var f=false;$("#search-input").on("input",function(){if(f==false){g=$(window).scrollTop();$("body,html").scrollTop(0);$("#search-result-wrap").addClass("shown");$("#main").addClass("hidden");f=true}});$("#search-input").on("keyup",function(j){var i=$("#search-input").val();if(j.keyCode==8&&i==""&&d.css("display")=="none"){$("#main").removeClass("hidden");$("#search-result-wrap").removeClass("shown");$("body,html").scrollTop(g);f=false}})});

View File

@@ -0,0 +1 @@
$(function(){var d=false;$("#sidebar-trigger").click(function(){if(d==false){$("#sidebar").addClass("sidebar-expand");b();d=true}});$("#mask").click(function(){$("#sidebar").removeClass("sidebar-expand");c();d=false});var a=(function(e){var f;return{afterOpen:function(){f=document.scrollingElement.scrollTop;document.body.classList.add(e);document.body.style.top=-f+"px"},beforeClose:function(){document.body.classList.remove(e);document.scrollingElement.scrollTop=f;document.body.style.top=""}}})("no-scroll");function b(){a.afterOpen()}function c(){a.beforeClose()}});

View File

@@ -0,0 +1 @@
$(function(){$('[data-toggle="tooltip"]').tooltip({placement:"auto"})});

View File

@@ -0,0 +1 @@
$(function(){var d;var c=0;var e=5;var b=$("#topbar").outerHeight();$(window).scroll(function(f){if($("#topbar-title").is(":hidden")){d=true}});setInterval(function(){if(d){a();d=false}},250);function a(){var f=$(this).scrollTop();if(Math.abs(c-f)<=e){return}if(f>c&&f>b){$("#topbar").removeClass("topbar-down").addClass("topbar-up");if($("#toc-wrap").length>0){$("#toc-wrap").removeClass("topbar-down")}if($(".panel-group").length>0){$(".panel-group").removeClass("topbar-down")}if($("#search-input").is(":focus")){$("#search-input").blur()}}else{if(f+$(window).height()<$(document).height()){$("#topbar").removeClass("topbar-up").addClass("topbar-down");if($("#toc-wrap").length>0){$("#toc-wrap").addClass("topbar-down")}if($(".panel-group").length>0){$(".panel-group").addClass("topbar-down")}}}c=f}});

View File

@@ -0,0 +1 @@
$(function(){var a=$("#topbar-title").text().trim();var b=($("div.post>h1").length>0)?$("div.post>h1").text().trim():$("h1").text().trim();if($("#page-category").length||$("#page-tag").length){if(/\s/.test(b)){b=b.replace(/[0-9]/g,"").trim()}}$(window).scroll(function(){if($("#post-list").length||$("div.post>h1").is(":hidden")||$("#topbar-title").is(":hidden")||$("#sidebar.sidebar-expand").length){return false}if($(this).scrollTop()>=95){if($("#topbar-title").text()!=b){$("#topbar-title").text(b)}}else{if($("#topbar-title").text()!=a){$("#topbar-title").text(a)}}});$("#topbar-title").click(function(){$("body,html").animate({scrollTop:0},800)})});

View File

@@ -0,0 +1 @@
$(function(){var b="l_";var a="h_";$(".collapse").on("hide.bs.collapse",function(){var c=a+$(this).attr("id").substring(b.length);if(c){$("#"+c+" .far.fa-folder-open").attr("class","far fa-folder fa-fw");$("#"+c+" i.fas.fa-angle-up").addClass("flip");$("#"+c).removeClass("hide-border-bottom")}});$(".collapse").on("show.bs.collapse",function(){var c=a+$(this).attr("id").substring(b.length);if(c){$("#"+c+" .far.fa-folder").attr("class","far fa-folder-open fa-fw");$("#"+c+" i.fas.fa-angle-up").removeClass("flip");$("#"+c).addClass("hide-border-bottom")}})});

12
assets/js/dist/commons.js vendored Normal file
View File

@@ -0,0 +1,12 @@
---
# Aggregation of common JS.
# © 2018-2019 Cotes Chung
# MIT License
---
{% include_relative _commons/back-to-top.min.js %}
{% include_relative _commons/search-display.min.js %}
{% include_relative _commons/sidebar.min.js %}
{% include_relative _commons/topbar-switch.min.js %}
{% include_relative _commons/topbar-title.min.js %}
{% include_relative _commons/tooltip.min.js %}

1
assets/js/dist/countUp.min.js vendored Normal file
View File

@@ -0,0 +1 @@
var CountUp=function(h,b,i,e,g,n){var m=this;m.version=function(){return"1.9.3"};m.options={useEasing:true,useGrouping:true,separator:",",decimal:".",easingFn:c,formattingFn:d,prefix:"",suffix:"",numerals:[]};if(n&&typeof n==="object"){for(var k in m.options){if(n.hasOwnProperty(k)&&n[k]!==null){m.options[k]=n[k]}}}if(m.options.separator===""){m.options.useGrouping=false}else{m.options.separator=""+m.options.separator}var a=0;var l=["webkit","moz","ms","o"];for(var j=0;j<l.length&&!window.requestAnimationFrame;++j){window.requestAnimationFrame=window[l[j]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[l[j]+"CancelAnimationFrame"]||window[l[j]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(s,p){var o=new Date().getTime();var q=Math.max(0,16-(o-a));var r=window.setTimeout(function(){s(o+q)},q);a=o+q;return r}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(o){clearTimeout(o)}}function d(t){var v=(t<0),p,s,r,q,u,o;t=Math.abs(t).toFixed(m.decimals);t+="";p=t.split(".");s=p[0];r=p.length>1?m.options.decimal+p[1]:"";if(m.options.useGrouping){q="";for(u=0,o=s.length;u<o;++u){if(u!==0&&((u%3)===0)){q=m.options.separator+q}q=s[o-u-1]+q}s=q}if(m.options.numerals.length){s=s.replace(/[0-9]/g,function(x){return m.options.numerals[+x]});r=r.replace(/[0-9]/g,function(x){return m.options.numerals[+x]})}return(v?"-":"")+m.options.prefix+s+r+m.options.suffix}function c(p,o,r,q){return r*(-Math.pow(2,-10*p/q)+1)*1024/1023+o}function f(o){return(typeof o==="number"&&!isNaN(o))}m.initialize=function(){if(m.initialized){return true}m.error="";m.d=(typeof h==="string")?document.getElementById(h):h;if(!m.d){m.error="[CountUp] target is null or undefined";return false}m.startVal=Number(b);m.endVal=Number(i);if(f(m.startVal)&&f(m.endVal)){m.decimals=Math.max(0,e||0);m.dec=Math.pow(10,m.decimals);m.duration=Number(g)*1000||2000;m.countDown=(m.startVal>m.endVal);m.frameVal=m.startVal;m.initialized=true;return true}else{m.error="[CountUp] startVal ("+b+") or endVal ("+i+") is not a number";return false}};m.printValue=function(p){var o=m.options.formattingFn(p);if(m.d.tagName==="INPUT"){this.d.value=o}else{if(m.d.tagName==="text"||m.d.tagName==="tspan"){this.d.textContent=o}else{this.d.innerHTML=o}}};m.count=function(p){if(!m.startTime){m.startTime=p}m.timestamp=p;var o=p-m.startTime;m.remaining=m.duration-o;if(m.options.useEasing){if(m.countDown){m.frameVal=m.startVal-m.options.easingFn(o,0,m.startVal-m.endVal,m.duration)}else{m.frameVal=m.options.easingFn(o,m.startVal,m.endVal-m.startVal,m.duration)}}else{if(m.countDown){m.frameVal=m.startVal-((m.startVal-m.endVal)*(o/m.duration))}else{m.frameVal=m.startVal+(m.endVal-m.startVal)*(o/m.duration)}}if(m.countDown){m.frameVal=(m.frameVal<m.endVal)?m.endVal:m.frameVal}else{m.frameVal=(m.frameVal>m.endVal)?m.endVal:m.frameVal}m.frameVal=Math.round(m.frameVal*m.dec)/m.dec;m.printValue(m.frameVal);if(o<m.duration){m.rAF=requestAnimationFrame(m.count)}else{if(m.callback){m.callback()}}};m.start=function(o){if(!m.initialize()){return}m.callback=o;m.rAF=requestAnimationFrame(m.count)};m.pauseResume=function(){if(!m.paused){m.paused=true;cancelAnimationFrame(m.rAF)}else{m.paused=false;delete m.startTime;m.duration=m.remaining;m.startVal=m.frameVal;requestAnimationFrame(m.count)}};m.reset=function(){m.paused=false;delete m.startTime;m.initialized=false;if(m.initialize()){cancelAnimationFrame(m.rAF);m.printValue(m.startVal)}};m.update=function(o){if(!m.initialize()){return}o=Number(o);if(!f(o)){m.error="[CountUp] update() - new endVal is not a number: "+o;return}m.error="";if(o===m.frameVal){return}cancelAnimationFrame(m.rAF);m.paused=false;delete m.startTime;m.startVal=m.frameVal;m.endVal=o;m.countDown=(m.startVal>m.endVal);m.rAF=requestAnimationFrame(m.count)};if(m.initialize()){m.printValue(m.startVal)}};

1
assets/js/dist/pageviews.min.js vendored Normal file
View File

@@ -0,0 +1 @@
function countUp(c,a,b){if(c<a){var d=new CountUp(b,c,a);if(!d.error){d.start()}else{console.error(d.error)}}}function countPV(f,e){var g=f.replace(/\/posts\//g,"").replace(/\//g,".html");var d=0;var c=f.replace(/posts\//g,"");for(var b=0;b<e.length;++b){var a=e[b][0];if(a==f||a==c||a.concat("/")==c||a.slice(a.lastIndexOf("/")+1)===g){d+=parseInt(e[b][1])}}return d}function displayPageviews(d,b){if(d===undefined){return}if($("#post-list").length>0){$(".post-preview").each(function(){var h=$(this).children("h1").children("a").attr("href");var g=countPV(h,d);g=(g==0?1:g);if(!b){$(this).find(".pageviews").text(g)}else{var f=parseInt($(this).find(".pageviews").text());if(g>f){countUp(f,g,$(this).find(".pageviews").attr("id"))}}})}else{if($(".post").length>0){var e=window.location.pathname;var c=countPV(e,d);c=(c==0?1:c);if(!b){$("#pv").text(c)}else{var a=parseInt($("#pv").text());if(c>a){countUp(a,c,"pv")}}}}}$(function(){if($(".pageviews").length>0){var a=false;$.getJSON("/assets/data/pageviews.json",function(b){displayPageviews(b.rows,a);a=true});$.getJSON("/assets/data/proxy.json",function(b){$.ajax({url:b.proxyUrl,dataType:"jsonp",timeout:2000,success:function(c){displayPageviews(c.rows,a)},error:function(e,c,d){console.log("Failed to load pageviews from proxy server.");e.abort();return}})})}});

1
assets/js/dist/timeago.min.js vendored Normal file
View File

@@ -0,0 +1 @@
$(function(){function d(h,g){var f=new Date();var o=new Date(h);var n=Math.floor((f-o)/1000);var l=Math.floor(n/31536000);if(l>=1){return l+" year"+(l>1?"s":"")+" ago"}var k=Math.floor(n/2592000);if(k>=1){return k+" month"+(k>1?"s":"")+" ago"}var e=Math.floor(n/604800);if(e>=1){return e+" week"+(e>1?"s":"")+" ago"}var m=Math.floor(n/86400);if(m>=1){return m+" day"+(m>1?"s":"")+" ago"}var j=Math.floor(n/3600);if(j>=1){return j+" hour"+(j>1?"s":"")+" ago"}var i=Math.floor(n/60);if(i>=1){return i+" minute"+(i>1?"s":"")+" ago"}return(g?"just":"Just")+" now"}function c(){$(".timeago").each(function(){if($(this).children("i").length>0){var g=$(this).hasClass("lastmod");var f=$(this).children("i");var e=f.text();$(this).text(d(e,g));$(this).append(f)}});if(a==0&&b!=undefined){clearInterval(b)}return a}var a=$(".timeago").length;if(a==0){return}if(c()>0){a=$(".timeago").length;var b=setInterval(c,60000)}});