Nekrocuck
This commit is contained in:
125
static/js/time.js
Normal file
125
static/js/time.js
Normal file
@@ -0,0 +1,125 @@
|
||||
const MINUTE = 60000,
|
||||
HOUR = 3600000,
|
||||
DAY = 86400000,
|
||||
WEEK = 604800000,
|
||||
MONTH = 2592000000,
|
||||
YEAR = 31536000000;
|
||||
|
||||
$(function () {
|
||||
$(window).on("setup_post_events", function (event) {
|
||||
setup_events($(`#${event.id}`).find("time"));
|
||||
});
|
||||
|
||||
setup_events($("time"));
|
||||
|
||||
setInterval(() => {
|
||||
setup_events($("time"));
|
||||
}, 60000);
|
||||
|
||||
function setup_events(elements) {
|
||||
elements.each(function () {
|
||||
let title = $(this).attr("title");
|
||||
|
||||
if (!title) {
|
||||
$(this).attr("title", $(this).text());
|
||||
}
|
||||
|
||||
let rel = reltime($(this).attr("datetime"));
|
||||
|
||||
$(this).text(rel);
|
||||
});
|
||||
}
|
||||
|
||||
function reltime(date) {
|
||||
let delta = Date.now() - Date.parse(date);
|
||||
let fut = false;
|
||||
|
||||
if (delta < 0) {
|
||||
delta = Math.abs(delta);
|
||||
fut = true;
|
||||
}
|
||||
|
||||
let minutes = Math.floor(delta / MINUTE);
|
||||
let hours = Math.floor(delta / HOUR);
|
||||
let days = Math.floor(delta / DAY);
|
||||
let weeks = Math.floor(delta / WEEK);
|
||||
let months = Math.floor(delta / MONTH);
|
||||
let years = Math.floor(delta / YEAR);
|
||||
|
||||
let rt = "Teď";
|
||||
|
||||
if (minutes > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${minutes} ${plural("minutu|minuty|minut", minutes)}`;
|
||||
} else {
|
||||
rt = `před ${minutes} ${plural(
|
||||
"minutou|minutami|minutami",
|
||||
minutes
|
||||
)}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (hours > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${hours} ${plural("hodinu|hodiny|hodin", hours)}`;
|
||||
} else {
|
||||
rt = `před ${hours} ${plural(
|
||||
"hodinou|hodinami|hodinami",
|
||||
hours
|
||||
)}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (days > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${days} ${plural("den|dny|dnů", days)}`;
|
||||
} else {
|
||||
rt = `před ${days} ${plural("dnem|dny|dny", days)}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (weeks > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${weeks} ${plural("týden|týdny", weeks)}`;
|
||||
} else {
|
||||
rt = `před ${weeks} ${plural("týdnem|týdny", weeks)}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (months > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${months} ${plural("měsíc|měsíce|měsíců", months)}`;
|
||||
} else {
|
||||
rt = `před ${months} ${plural(
|
||||
"měsícem|měsíci|měsíci",
|
||||
months
|
||||
)}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (years > 0) {
|
||||
if (fut) {
|
||||
rt = `za ${years} ${plural("rok|roky|let", years)}`;
|
||||
} else {
|
||||
rt = `před ${years} ${plural("rokem|lety|lety", years)}`;
|
||||
}
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
function plural(plurals, count) {
|
||||
let plurals_arr = plurals.split("|");
|
||||
let one = plurals_arr[0];
|
||||
let few = plurals_arr[1];
|
||||
let other = plurals_arr[2];
|
||||
|
||||
if (count === 1) {
|
||||
return one;
|
||||
} else if (count < 5 && count !== 0) {
|
||||
return few;
|
||||
} else {
|
||||
return other;
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user