initial commit
This commit is contained in:
commit
d1d384bce8
5
getTime.php
Normal file
5
getTime.php
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
header('Content-Type: text/plain');
|
||||||
|
|
||||||
|
echo round(microtime(true) * 1000);
|
47
index.php
Normal file
47
index.php
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
if (!isset($_SERVER['STATIC_ROOT'])) {
|
||||||
|
$_SERVER['STATIC_ROOT'] = '/static/';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="hu">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="description" content="A pontos idő megjelenítése." />
|
||||||
|
<meta name="author" content="© Pőcze Bence. 2015" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>Pontos idő</title>
|
||||||
|
<?php if (preg_match('/^(http(s)?:)?\/\//', $_SERVER['STATIC_ROOT']) === 1): ?>
|
||||||
|
<link href="<?= $_SERVER['STATIC_ROOT'] ?>" rel="preconnect">
|
||||||
|
<?php endif; ?>
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect">
|
||||||
|
<?php if (!empty($_SERVER['GOOGLE_ANALITICS_ID'])): ?>
|
||||||
|
<link href="https://www.googletagmanager.com" rel="preconnect">
|
||||||
|
<link href="https://www.google-analytics.com" rel="preconnect">
|
||||||
|
<?php endif; ?>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Cousine:wght@400;700&family=Oxygen:wght@400;700&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="<?= $_SERVER['STATIC_ROOT'] ?>time.css" />
|
||||||
|
<link rel="icon" href="<?= $_SERVER['STATIC_ROOT'] ?>time.png" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h1>Pontos idő</h1>
|
||||||
|
<p class="date"><span id="year">...</span>. <span id="month">...</span> <span id="date">...</span>., <span id="day">...</span></p>
|
||||||
|
<p class="time"><span id="time">..:..:..</span></p>
|
||||||
|
<p id="correct">Az eszköz órájának eltérése: <span class="correct"><span id="correct_seconds">...</span> másodperc</span></p>
|
||||||
|
</main>
|
||||||
|
<script async src="<?= $_SERVER['STATIC_ROOT'] ?>time.js"></script>
|
||||||
|
<?php if (!empty($_SERVER['GOOGLE_ANALITICS_ID'])): ?>
|
||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=<?= $_SERVER['GOOGLE_ANALITICS_ID'] ?>"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() {
|
||||||
|
dataLayer.push(arguments);
|
||||||
|
}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', '<?= $_SERVER['GOOGLE_ANALITICS_ID'] ?>');
|
||||||
|
</script>
|
||||||
|
<?php endif; ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
2
robots.txt
Normal file
2
robots.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
71
static/time.css
Normal file
71
static/time.css
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #eee;
|
||||||
|
font-family: 'Oxygen', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
display: block;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 15px;
|
||||||
|
width: 600px;
|
||||||
|
margin: 50px auto;
|
||||||
|
padding: 25px 25px 25px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link, a:visited {
|
||||||
|
color: #38488f;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-top: 12px;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 125%;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.date {
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.time {
|
||||||
|
font-family: 'Cousine', monospace;;
|
||||||
|
font-size: 50px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.correct {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
background-color: #ccc;
|
||||||
|
height: 3px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
body {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
border-radius: 0;
|
||||||
|
width: auto;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 10px 10px 10px;
|
||||||
|
}
|
||||||
|
}
|
75
static/time.js
Normal file
75
static/time.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
(function () {
|
||||||
|
var _MONTHS_ = ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'];
|
||||||
|
var _DAYS_ = ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'];
|
||||||
|
|
||||||
|
var syncTimeout;
|
||||||
|
var clockTimeout;
|
||||||
|
var correct = 0;
|
||||||
|
|
||||||
|
function getSyncedDateTime() {
|
||||||
|
return new Date(new Date().getTime() - correct);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fillZero(param) {
|
||||||
|
return param < 10 ? '0' + String(param) : String(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sync() {
|
||||||
|
clearTimeout(syncTimeout);
|
||||||
|
|
||||||
|
var started;
|
||||||
|
var latency;
|
||||||
|
|
||||||
|
var syncRequest = new XMLHttpRequest();
|
||||||
|
|
||||||
|
syncRequest.onreadystatechange = function () {
|
||||||
|
switch (syncRequest.readyState) {
|
||||||
|
case XMLHttpRequest.OPENED:
|
||||||
|
started = new Date().getTime();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case XMLHttpRequest.HEADERS_RECEIVED:
|
||||||
|
latency = (new Date().getTime() - started) / 2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case XMLHttpRequest.DONE:
|
||||||
|
correct = new Date().getTime() - (parseInt(syncRequest.responseText) + latency);
|
||||||
|
|
||||||
|
syncTimeout = setTimeout(sync, 10000);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
syncRequest.open('GET', 'getTime.php', true);
|
||||||
|
syncRequest.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
function clock() {
|
||||||
|
var dateTime = getSyncedDateTime();
|
||||||
|
|
||||||
|
document.getElementById('year').innerHTML = dateTime.getFullYear();
|
||||||
|
document.getElementById('month').innerHTML = _MONTHS_[dateTime.getMonth()];
|
||||||
|
document.getElementById('date').innerHTML = dateTime.getDate();
|
||||||
|
document.getElementById('day').innerHTML = _DAYS_[dateTime.getDay()];
|
||||||
|
document.getElementById('time').innerHTML = fillZero(dateTime.getHours()) + ':' + fillZero(dateTime.getMinutes()) + ':' + fillZero(dateTime.getSeconds());
|
||||||
|
|
||||||
|
if (Math.abs(correct) < 100) {
|
||||||
|
document.getElementById('correct').style.display = 'none';
|
||||||
|
} else {
|
||||||
|
document.getElementById('correct').style.display = 'block';
|
||||||
|
document.getElementById('correct_seconds').innerHTML = (correct > 0 ? '+' : '') + (correct / 1000).toFixed(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
clockTimeout = setTimeout(clock, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementsByTagName('main')[0].ondblclick = function () {
|
||||||
|
sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
clock();
|
||||||
|
sync();
|
||||||
|
})();
|
BIN
static/time.png
Normal file
BIN
static/time.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 383 B |
Loading…
Reference in New Issue
Block a user