Problem-2038-site/script.js

124 lines
6.5 KiB
JavaScript
Raw Normal View History

2020-06-27 19:16:43 +00:00
const maxtimestamp = 2147483647;
var readable_timer_mode = 0;
var msec_display = true;
2022-01-31 19:41:53 +00:00
var fullscreen = false;
var other_counters = [
2022-01-31 19:41:53 +00:00
["UNIX unsinged 32-bit timestamp", "UNIX 32 бита без знака", 0, 4294967295],
["FAT filesystems timestamps", "Штампы времени файловой системы FAT", 351907200, 4354819200],
["ext4 filesystems timestamps", "Штампы времени файловой системы ext4", -2147470217, 17176838400],
["NTFS filesystems timestamps", "Штампы времени файловой системы NTFS", -11644473600, 1833029913600],
// ["Year 32,768 bug", "Проблема 32 768 года", -62167219200, 971890963200],
// ["Year 65,536 bug", "Проблема 65 536 года", -62167219200, 2005949145600],
2022-01-31 19:41:53 +00:00
["UNIX singed 64-bit timestamp", "UNIX 64 бита со знаком", 0, 9223372036854775807],
["UNIX unsinged 64-bit timestamp", "UNIX 64 бита без знака", 0, 18446744073709551615],
];
var language_user = window.navigator ? (window.navigator.language ||
window.navigator.systemLanguage ||
window.navigator.userLanguage) : "ru";
language_user = language_user.substr(0, 2).toLowerCase();
language_site = (language_user == "ru" || language_user == "by" || language_user == "ua") ? "ru" : "en";
2020-06-27 19:16:43 +00:00
function ReadableTimerSwitcher(){
readable_timer_mode++
2020-07-03 12:53:13 +00:00
if(readable_timer_mode > 2){readable_timer_mode = 0}
}
2020-07-03 16:11:24 +00:00
addEventListener("fullscreenchange", (event) => {
2022-01-31 19:41:53 +00:00
if(!fullscreen){
$("#style").attr("href", "fullscreen-style.css");
$("#description_en").css("display", "none");
$("#description_ru").css("display", "none");
fullscreen = true;
2020-07-03 12:53:13 +00:00
}else{
2022-01-31 19:41:53 +00:00
$("#style").attr("href", "style.css");
languageSwitcher(language_site)
fullscreen = false;
2020-07-03 12:53:13 +00:00
}
2020-07-03 16:11:24 +00:00
})
2022-01-31 19:41:53 +00:00
function languageSwitcher(lang_code){
switch (lang_code) {
case "ru":
$("#title_en").css("display", "none");
$("#title_ru").css("display", "block");
$("#description_en").css("display", "none");
$("#description_ru").css("display", "block");
$("#me_tg_en").css("display", "none");
$("#me_tg_ru").css("display", "");
language_site = "ru";
break;
case "en":
$("#title_ru").css("display", "none");
$("#title_en").css("display", "block");
$("#description_ru").css("display", "none");
$("#description_en").css("display", "block");
$("#me_tg_ru").css("display", "none");
$("#me_tg_en").css("display", "");
language_site = "en";
break;
}
}
languageSwitcher(language_site);
function msecDisplaySwitcher(){
if(msec_display){
msec_display = false
$("#time-left-msec").css("display", "none");
}else{
msec_display = true
$("#time-left-msec").css("display", "unset");
}
}
2020-06-26 11:52:22 +00:00
function Cycle() {
var timestamp = Date.now() / 1000,
left = maxtimestamp - timestamp,
lmsec = Math.floor(left * 1000) % 1000,
2020-06-27 19:16:43 +00:00
t = Math.floor(left);
$("#time-left").html(t.toLocaleString('ru'));
$("#time-left-msec").html("." + ("00" + lmsec).slice(-3))
2020-06-26 11:52:22 +00:00
$("#prog").val(timestamp);
2022-01-31 19:41:53 +00:00
$("#timestamp_ru").html(Math.trunc(timestamp).toLocaleString('ru'));
$("#timestamp_en").html(Math.trunc(timestamp).toLocaleString('ru'));
2020-07-03 12:53:13 +00:00
if (left < 60 && readable_timer_mode != 2) { $("#time-left-readable").css("display", "none") }
2020-06-26 11:52:22 +00:00
if (left <= 0) {
clearInterval(c);
$("#time-left").html("0");
$("#time-left-msec").html("000")
2020-06-26 11:52:22 +00:00
$("#title").html("С͓̪̩̳͕͍̄ͮͤ̚̚м̦͎͉̝̋̄е̥͕̫̫̱̱͓̞̾р̞̤̰͖̤̟̫͓̏̍͒ͣ͐͂̚ͅт̗̥̲̩̣̯̹̅ͅь̙͍̟̟̮̩̦̹ͩͤ");
}
2020-06-27 19:16:43 +00:00
switch (readable_timer_mode){
case 0:
var tsec = Math.floor(left % 60),
tmin = Math.floor(left / 60) % 60,
thour = Math.floor(left / 60 / 60) % 24,
tday = Math.floor(left / 60 / 60 / 24);
$("#time-left-readable").html("(" + tday + ":" + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")");
break;
case 1:
var tsec = Math.floor(left % 60),
tmin = Math.floor(left / 60) % 60,
thour = Math.floor(left / 60 / 60) % 24,
tday = Math.floor(left / 60 / 60 / 24) % 365,
tyear = Math.floor(left / 60 / 60 / 24 / 365);
2022-01-31 19:41:53 +00:00
switch (language_site) {
case "ru":
$("#time-left-readable").html("(" + tyear + " л. " + tday + " дн. " + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")");
break;
case "en":
$("#time-left-readable").html("(" + tyear + " y. " + tday + " d. " + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")");
break;
}
2020-06-27 19:16:43 +00:00
break;
2020-07-03 12:53:13 +00:00
case 2:
var precentage = (timestamp/maxtimestamp)*100;
$("#time-left-readable").html(Math.trunc(timestamp).toLocaleString('ru')+" / "+maxtimestamp.toLocaleString('ru')+" ("+precentage.toFixed(8)+"%)");
break;
2020-06-27 19:16:43 +00:00
}
2022-01-31 19:41:53 +00:00
let other_counters_html = (language_site == "ru") ? "<h3>Другие, более далёкие проблемы времени в вычислительной технике</h3>" : "<h3>Other, more distant time problems in computing</h3>";
other_counters.forEach(element => {
l = element[3] - timestamp;
other_counters_html = other_counters_html + '<div id="other_counter"><h4>'+ element[(language_site == "ru") ? 1 : 0] + '</h4><span style="font-size: 2rem; font-family: \'7Digital\'">' + Math.trunc(l).toLocaleString('ru') +
'</span><div class="othr_progress" style="float: right">' + new Date(element[3]*1000).toUTCString() + " · " +(((timestamp-element[2])/(element[3]-element[2]))*100).toFixed(8).toString() +
'% · ' + Math.floor(l / 60 / 60 / 24 / 365).toLocaleString('ru') + ((language_site == "ru") ? " л. " : " y. ") + (Math.floor(l / 60 / 60 / 24) % 365).toString() + ((language_site == "ru") ? " дн. " : " d. ") +
("0" + (Math.floor(l / 60 / 60) % 24)).slice(-2) + ':' + ("0" + (Math.floor(l / 60) % 60)).slice(-2) + ':' + ("0" + (Math.floor(l) % 60)).slice(-2) + '</div>' + '</div>';
});
$("#other_countdowns").html(other_counters_html)
2020-06-26 11:52:22 +00:00
}
2022-01-31 19:41:53 +00:00
var c = setInterval(Cycle, 1000 / 15);