126 řádky
3.2 KiB
JavaScript
126 řádky
3.2 KiB
JavaScript
|
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;
|
||
|
}
|
||
|
}
|
||
|
});
|