jefklakscodex/themes/jefklak-creative-portfolio/assets/js/codex.js

125 lines
4.4 KiB
JavaScript
Raw Normal View History

2022-04-09 15:01:33 +02:00
document.addEventListener("DOMContentLoaded",function() {
function sort(grid, by, reverse) {
// by year, name, hours (see portfoliolite-block)
let articles = [...document.querySelectorAll('.gamegrid article')]
const toI = (el, prop) => {
const propEl = el.querySelector(`.${prop}`)
return propEl ? parseInt(propEl.innerHTML) : 0
}
var sorts = {
2022-04-09 15:01:33 +02:00
"year": (a, b) => toI(a, 'year') > toI(b, 'year'),
"name": (a, b) => a.innerHTML.localeCompare(b.innerHTML),
"hours": (a, b) =>toI(a, 'hours') > toI(b, 'hours'),
"date": (a, b) => a.querySelector('.date').dateTime.localeCompare(b.querySelector('.date').dateTime),
"rating": (a, b) => toI(a, 'rating') < toI(b, 'rating')
}
articles.sort(sorts[by])
if(reverse) articles.reverse()
grid.innerHTML = ""
grid.append(...articles)
}
function toggleSort() {
2022-04-09 15:01:33 +02:00
const grid = document.querySelector('.gamegrid')
const sortbtns = [...document.querySelectorAll('.sortbtn')]
sortbtns.forEach(sortbtn => {
sortbtn.addEventListener('click', function() {
sortbtns.forEach(btn => btn.className = 'sortbtn')
sortbtn.classList.add('sorted')
2022-04-09 15:01:33 +02:00
const rev = sortbtn.dataset.sorted === 'asc' ? 'desc' : 'asc'
sortbtn.dataset.sorted = rev
sort(grid, sortbtn.dataset.sort, rev === 'desc')
sortbtn.classList.add(`sorted-${rev}`)
})
})
}
toggleSort();
const box = new SimpleLightbox('.lbox', { /* options */ });
function enableSidebarMenuForMobile() {
2022-04-09 15:01:33 +02:00
document.querySelector('[data-toggle="offcanvas"]').addEventListener('click', function () {
document.querySelector('.row-offcanvas').classList.toggle('active')
});
}
enableSidebarMenuForMobile();
function scrollThenFixSidebar() {
2022-04-09 15:01:33 +02:00
const mainHeight = document.querySelector('main div').clientHeight
const sidebarHeight = document.querySelector('.sidebar-content').clientHeight
const maxHeight = sidebarHeight - window.innerHeight
if(mainHeight < sidebarHeight) return
2022-04-09 15:01:33 +02:00
document.addEventListener('scroll', function(e) {
const s = document.scrollingElement.scrollTop || document.querySelector('html').scrollTop || document.querySelector('body').scrollTop;
const content = document.querySelector('.sidebar-content')
if(s > maxHeight) {
2022-04-09 15:01:33 +02:00
content.classList.add('sidebar-fixed')
content.classList.remove('sidebar-scrolling')
} else {
2022-04-09 15:01:33 +02:00
content.classList.add('sidebar-scrolling')
content.classList.remove('sidebar-fixed')
}
})
}
scrollThenFixSidebar();
var addTargetBlankToExternalLinks = function() {
var host = (new URL(window.location.href)).hostname;
2022-04-09 15:01:33 +02:00
[...document.querySelectorAll('article a')].forEach(function(a) {
var url = a.getAttribute('href')
if(url && url.startsWith('http') && url.indexOf(host) === -1) {
2022-04-09 15:01:33 +02:00
a.setAttribute('target', '_blank')
a.setAttribute('rel', 'noopener')
a.classList.add('external')
}
})
};
addTargetBlankToExternalLinks();
2018-05-17 20:30:00 +02:00
2018-05-15 20:55:14 +02:00
var addRandomImageToSideBarMenus = function() {
var rand = Math.floor(Math.random() * 10) + 1;
2022-04-09 15:01:33 +02:00
[...document.querySelectorAll('.sidebar-menu li')].forEach(function(el) {
el.addEventListener('mouseenter', function() {
el.style.background = `#f1f4dd url(/img/random/${rand}.gif) no-repeat right`
})
el.addEventListener('mouseleave', function() {
el.style.background = 'none'
})
el.addEventListener('click', function() {
location.href = el.querySelector('a').href
})
})
2018-05-15 20:55:14 +02:00
};
2020-12-30 15:52:37 +01:00
var obfuscateMail = function() {
var meel = document.querySelector('.meel');
2021-03-25 17:49:44 +01:00
var enc = "<o ofwo-zopsz='aowz orrfsgg' vfst='aowzhc:xst@xstyzoygqcrsl.qca'>xst@xstyzoygqcrsl.qca</o> <o ofwo-zopsz='sbqfmdhwcb DUD ysm' vfst='vhhdg://ysmg.cdsbdud.cfu/jyg/j1/pm-twbusfdfwbh/24O319TO8708OP6961997205S66Q99941091O46R' hwhzs='Sbqfmdh aowzg kwhv am UDU ysm'><gju qzogg='wqcb wqcb-hslh' kwrhv='24' vswuvh='24'><igs lzwby:vfst='#zcqy'></igs></gju></o>"
2020-12-30 15:52:37 +01:00
if(meel) {
meel.addEventListener('click', function() {
2021-03-18 10:49:57 +01:00
meel.setAttribute('class', '')
2020-12-30 15:52:37 +01:00
meel.innerHTML = enc.replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+12)?c:c-26);});
})
}
}
function makeTootClickable() {
2021-03-19 21:34:19 +01:00
[...document.querySelectorAll('.toot')].forEach(toot => {
toot.addEventListener('click', function() {
const permalink = this.querySelector('.permalink')?.href
if(permalink) {
window.location.href = permalink
}
})
})
}
2021-03-19 21:34:19 +01:00
2018-05-15 20:55:14 +02:00
addRandomImageToSideBarMenus();
2020-12-30 15:52:37 +01:00
obfuscateMail();
makeTootClickable();
2018-05-15 20:55:14 +02:00
});