// ==UserScript== // @name OGame Board : correctif temps écoulé // @namespace http://tampermonkey.net/ // @version 1.4 // @author Xanatos // @description Corrige les erreurs du forum du type "{if $days > 1}{$day}{else}Hier{/if}, {$time}" // @match https://board.fr.ogame.gameforge.com/* // @grant none // @run-at document-end // @downloadURL none // ==/UserScript== function elapsedTime() { let items = document.querySelectorAll('time.datetime'), now = new Date(), nowTimestamp = Math.floor(now.valueOf() / 1000), yesterdayStep = (now.getSeconds() + now.getMinutes() * 60 + now.getHours() * 3600) + 86400; for (let i = 0; i < items.length; i++) { let item = items[i], itemTimestamp = parseInt(item.getAttribute('data-timestamp'), 10), diff = nowTimestamp - itemTimestamp, text = undefined; if (diff < 60) { // 1 minute text = `Il y a ${diff} seconde${(diff > 1) ? 's' : ''}`; } else if (diff < 3600) { // 1 heure let minutes = Math.floor(diff / 60); text = `Il y a ${minutes} minute${(minutes > 1) ? 's' : ''}`; } else if (diff < 86400) { // 1 jour let hours = Math.floor(diff / 3600); text = `Il y a ${hours} heure${(hours > 1) ? 's' : ''}`; } else if (diff < yesterdayStep) { // hier let time = item.getAttribute('data-time'); text = `Hier, ${time}`; } else { text = item.getAttribute('title'); } item.innerHTML = text; } } function haveError() { let items = document.querySelectorAll('time.datetime'), regex = /{if/, state = false; for (let i = 0; i < items.length; i++) { let item = items[i]; if (regex.test(item.innerHTML) || item == undefined) { state = true; } } return state; } window.onload = function() { var interval = setInterval(function () { if (haveError()) { elapsedTime(); clearInterval(interval); } }, 500); }; // fix : le rechargement AJAX de données réaffiche les erreurs let xhrPreviewLength = 0; setInterval(function () { let newXhrPreviewLength = document.querySelectorAll('.wbbPostPreview, .userProfilePreview').length; if (newXhrPreviewLength != xhrPreviewLength) { xhrPreviewLength = newXhrPreviewLength; elapsedTime(); } }, 1000);