mirror of
				https://gitlab.com/octtspacc/sitoctt
				synced 2025-06-05 22:09:20 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			195 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var BDRunInterval;
 | |
| 
 | |
| function ReadCookie(Key) {
 | |
| 	var Value;
 | |
| 	document.cookie.split('; ').forEach(function(Cookie){
 | |
| 		if (Cookie.startsWith(`${Key}=`)) {
 | |
| 			Value = Cookie.split('=')[1];
 | |
| 		};
 | |
| 	});
 | |
| 	return Value;
 | |
| };
 | |
| 
 | |
| function BDDuration() {
 | |
| 	return OcttTime.Duration;
 | |
| };
 | |
| function BDCurrent() {
 | |
| 	return OcttTime.YearsAgeNow() % 1;
 | |
| };
 | |
| 
 | |
| function BDMargin(Duration, Current) {
 | |
| 	if (Current < Duration) {
 | |
| 		return 'After';
 | |
| 	} else
 | |
| 	if ((1 - Current) < Duration) {
 | |
| 		return 'Before';
 | |
| 	};
 | |
| };
 | |
| 
 | |
| function BDRun() {
 | |
| 	if (BDInit(BDDuration(), BDCurrent())) {
 | |
| 		BDRunInterval = setInterval(function(){
 | |
| 			BDDraw(BDDuration(), BDCurrent());
 | |
| 		}, 200);
 | |
| 	};
 | |
| };
 | |
| 
 | |
| function BDInit(Duration, Current) {
 | |
| 	var TimeMargin = BDMargin(Duration, Current);
 | |
| 	if (
 | |
| 		(TimeMargin === 'After' && !ReadCookie('BDAfter'))
 | |
| 		||
 | |
| 		(TimeMargin === 'Before' && !ReadCookie('BDBefore'))
 | |
| 	) {
 | |
| 		var BDCover = document.createElement('div');
 | |
| 		var BDView = document.createElement('div');
 | |
| 		BDCover.id = 'BDCover';
 | |
| 		BDView.id = 'BDView';
 | |
| 		BDCover.style = `
 | |
| 			position: fixed;
 | |
| 			z-index: 999997;
 | |
| 			top: 0;
 | |
| 			left: 0;
 | |
| 			width: 100vw;
 | |
| 			height: 100vh;
 | |
| 			background-color: black !important;
 | |
| 		`;
 | |
| 		BDView.innerHTML = `
 | |
| 			<style>
 | |
| 				#BDView {
 | |
| 					position: fixed;
 | |
| 					z-index: 999998;
 | |
| 					top: 0;
 | |
| 					left: 0;
 | |
| 					width: 100vw;
 | |
| 					height: 100vh;
 | |
| 					color: white !important;
 | |
| 					padding: 1em;
 | |
| 				}
 | |
| 				#BDView > * {
 | |
| 					position: fixed;
 | |
| 				}
 | |
| 				#BDView > p {
 | |
| 					top: 30%;
 | |
| 					background-color: #222222 !important;
 | |
| 					max-width: calc(100% - 2em);
 | |
| 				}
 | |
| 				#BDView > p, #BDView > h2 {
 | |
| 					z-index: 999999;
 | |
| 					animation: BDFadeIn 10s;
 | |
| 				}
 | |
| 				@keyframes BDFadeIn {
 | |
| 					0% { opacity: 0; }
 | |
| 					100% { opacity: 1; }
 | |
| 				}
 | |
| 			</style>
 | |
| 			<a
 | |
| 				href="javascript:void(0);"
 | |
| 				onclick="BDClose();"
 | |
| 				style="
 | |
| 					color: #eeddff !important;
 | |
| 					background-color: black !important;
 | |
| 					font-size: larger;
 | |
| 					font-weight: bold;
 | |
| 					top: 0.5em;
 | |
| 					right: 0.5em;
 | |
| 					padding: 0.5em;
 | |
| 					animation: BDFadeIn 7s;
 | |
| 				"
 | |
| 			>
 | |
| 				❌️ Chiudi
 | |
| 			</a>
 | |
| 			<div id="BDProg"></div>
 | |
| 		`;
 | |
| 		document.body.appendChild(BDCover);
 | |
| 		document.body.appendChild(BDView);
 | |
| 		return true;
 | |
| 	} else {
 | |
| 		return false;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| function BDDraw(Duration, Current) {
 | |
| 	var TimeMargin = BDMargin(Duration, Current);
 | |
| 	if (TimeMargin === 'After') {
 | |
| 		var Dir = 'right';
 | |
| 		var Prog = 1 - (Current / Duration);
 | |
| 		// Try to remove yesterday elements
 | |
| 		BDView.querySelectorAll('.BDBefore').forEach(function(El){
 | |
| 			El.remove();
 | |
| 		});
 | |
| 		// Try to add today elements
 | |
| 		if (!BDView.querySelector('.BDAfter')) { 
 | |
| 			BDView.innerHTML += `
 | |
| 				<h2 class="BDAfter" style="color: #eeddff !important;">
 | |
| 					È compleannoctt!!!
 | |
| 				</h2>
 | |
| 				<p class="BDAfter">
 | |
| 					A causa di compleannoctt,
 | |
| 					il sitoctt è temporaneamente in manutenzione,
 | |
| 					fino al completamento della barra di progresso.
 | |
| 					<br/>
 | |
| 					Questa non è assolutamente una scusa per introdurre
 | |
| 					un easter egg stagionale nel sito, ovviamente.
 | |
| 				</p>
 | |
| 				<iframe
 | |
| 					id="BDIframe"
 | |
| 					class="BDAfter"
 | |
| 					src="https://hub.octt.eu.org"
 | |
| 				></iframe>
 | |
| 			`;
 | |
| 		};
 | |
| 		BDIframe.style = `
 | |
| 			bottom: 1em;
 | |
| 			left: 10%;
 | |
| 			right: 10%;
 | |
| 			width: 80%;
 | |
| 			height: 50%;
 | |
| 			max-height: 50%;
 | |
| 			opacity: ${Prog};
 | |
| 		`;
 | |
| 	} else
 | |
| 	if (TimeMargin === 'Before') {
 | |
| 		var Dir = 'left';
 | |
| 		var Prog = 1 - ((1 - Current) / Duration);
 | |
| 		if (!BDView.querySelector('.BDBefore')) {
 | |
| 			BDView.innerHTML += `
 | |
| 				<p class="BDBefore">
 | |
| 					Il sitoctt è temporaneamente in manutenzione,
 | |
| 					fino al completamento della barra di progresso.
 | |
| 					<br/>
 | |
| 					Ci dispiace per il disagio.
 | |
| 				</p>
 | |
| 			`;
 | |
| 		};
 | |
| 	} else {
 | |
| 		BDClose();
 | |
| 		return;
 | |
| 	};
 | |
| 	BDCover.style.opacity = (0.32 + Prog);
 | |
| 	BDProg.style = `
 | |
| 		position: fixed;
 | |
| 		top: 20%;
 | |
| 		height: 64px;
 | |
| 		background-color: white;
 | |
| 		${Dir}: 0;
 | |
| 		width: ${Prog*100}%;
 | |
| 	`;
 | |
| };
 | |
| 
 | |
| function BDClose() {
 | |
| 	clearInterval(BDRunInterval);
 | |
| 	var TimeMargin = BDMargin(BDDuration(), BDCurrent());
 | |
| 	var CookieAge = 31536000 * BDDuration() * 2;
 | |
| 	if (TimeMargin === 'After') {
 | |
| 		document.cookie = `BDAfter=1; max-age=${CookieAge}`;
 | |
| 	} else
 | |
| 	if (TimeMargin === 'Before') {
 | |
| 		document.cookie = `BDBefore=1; max-age=${CookieAge}`;
 | |
| 	};
 | |
| 	BDCover.remove();
 | |
| 	BDView.remove();
 | |
| };
 | |
| 
 | |
| BDRun();
 |