mirror of
https://github.com/Derpy-Leggies/OnlyLegs.git
synced 2025-01-10 00:25:19 +00:00
Michał
3008a55899
Renamed upload route to file as its more approprete Fixed random CSS issues that occur on older browsers or Safari
92 lines
3.2 KiB
JavaScript
92 lines
3.2 KiB
JavaScript
// fade in images
|
|
function imgFade(obj, time = 250) {
|
|
$(obj).animate({ opacity: 1 }, time);
|
|
}
|
|
// https://stackoverflow.com/questions/3942878/how-to-decide-font-color-in-white-or-black-depending-on-background-color
|
|
function colourContrast(bgColor, lightColor, darkColor, threshold = 0.179) {
|
|
// if color is in hex format then convert to rgb else parese rgb
|
|
if (bgColor.charAt(0) === '#') {
|
|
var color = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;
|
|
var r = parseInt(color.substring(0, 2), 16); // hexToR
|
|
var g = parseInt(color.substring(2, 4), 16); // hexToG
|
|
var b = parseInt(color.substring(4, 6), 16); // hexToB
|
|
} else {
|
|
var color = bgColor.replace('rgb(', '').replace(')', '').split(',');
|
|
var r = color[0];
|
|
var g = color[1];
|
|
var b = color[2];
|
|
}
|
|
|
|
var uicolors = [r / 255, g / 255, b / 255];
|
|
var c = uicolors.map((col) => {
|
|
if (col <= 0.03928) {
|
|
return col / 12.92;
|
|
}
|
|
return Math.pow((col + 0.055) / 1.055, 2.4);
|
|
});
|
|
var L = (0.2126 * c[0]) + (0.7152 * c[1]) + (0.0722 * c[2]);
|
|
return (L > threshold) ? darkColor : lightColor;
|
|
}
|
|
// Lazy load images when they are in view
|
|
function loadOnView() {
|
|
let lazyLoad = document.querySelectorAll('#lazy-load');
|
|
|
|
for (let i = 0; i < lazyLoad.length; i++) {
|
|
let image = lazyLoad[i];
|
|
if (image.getBoundingClientRect().top < window.innerHeight && image.getBoundingClientRect().bottom > 0) {
|
|
if (!image.src) {
|
|
image.src = `/api/file/${image.getAttribute('data-src')}?w=400&h=400`
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
window.onload = function () {
|
|
loadOnView();
|
|
|
|
const darkColor = '#151515';
|
|
const lightColor = '#E8E3E3';
|
|
let contrastCheck = document.querySelectorAll('#contrast-check');
|
|
for (let i = 0; i < contrastCheck.length; i++) {
|
|
console.log(contrastCheck[i].getAttribute('data-color'));
|
|
bgColor = contrastCheck[i].getAttribute('data-color');
|
|
contrastCheck[i].style.color = colourContrast(bgColor, lightColor, darkColor);
|
|
}
|
|
|
|
let times = document.querySelectorAll('.time');
|
|
for (let i = 0; i < times.length; i++) {
|
|
// Remove milliseconds
|
|
const raw = times[i].innerHTML.split('.')[0];
|
|
|
|
// Parse YYYY-MM-DD HH:MM:SS to Date object
|
|
const time = raw.split(' ')[1]
|
|
const date = raw.split(' ')[0].split('-');
|
|
|
|
// Format to YYYY/MM/DD HH:MM:SS
|
|
let formatted = date[0] + '/' + date[1] + '/' + date[2] + ' ' + time + ' UTC';
|
|
|
|
// Convert to UTC Date object
|
|
let dateTime = new Date(formatted);
|
|
|
|
// Convert to local time
|
|
times[i].innerHTML = dateTime.toLocaleDateString() + ' ' + dateTime.toLocaleTimeString();
|
|
}
|
|
};
|
|
window.onscroll = function () {
|
|
loadOnView();
|
|
|
|
// Jump to top button
|
|
let topOfPage = document.querySelector('.top-of-page');
|
|
if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 20) {
|
|
topOfPage.classList.add('show');
|
|
} else {
|
|
topOfPage.classList.remove('show');
|
|
}
|
|
topOfPage.onclick = function () {
|
|
document.body.scrollTop = 0;
|
|
document.documentElement.scrollTop = 0;
|
|
}
|
|
};
|
|
window.onresize = function () {
|
|
loadOnView();
|
|
}; |