kernel_panic_web/kernelpanic.lol/layoutWithJs.html
2024-08-14 15:24:36 -06:00

233 lines
7.8 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<style>
::-webkit-scrollbar {
display: none;
}
body, html {
height: 100%;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
margin-left: 10%;
margin-right: 10%;
width: 80vw;
scrollbar-width: none; /* For Firefox */
-ms-overflow-style: none;
{% block bgstuff %}
background-color: white;
{% endblock %}
}
#topbar {
width: 100%;
text-align: center;
border-bottom: 1px solid black;
position: sticky;
top:0;
animation: slideDown 3s backwards;
}
@keyframes slideDown {
0% {
left:0vw;
}
100% {
left:50vw;
}
}
.button {
display: inline-block;
padding: 10px;
border-right: 1px solid black;
transition: background-color 0.5s;
font-size: large;
}
a {
font-size: large;
color: black;
}
.button:hover {
background-color: #888;
}
.content {
padding-left: 10%;
padding-right: 10%;
text-align: justify;
overflow:scroll;
width:80vw;
font-size:large;
}
h1 {
text-align: left;
}
#footer {
color:inherit;
width: 100vw;
font-size: small;
-webkit-filter: invert(100%);
filter: invert(100%);
width: 100%;
text-align: center;
padding-left: 10px;
padding-right: 10px;
position: absolute;
display: block;
bottom: -75px;
background-color: inherit;
border-top: 1px solid #e7e7e7;
}
#footer a {
font-size: small;
-webkit-filter: invert(100%);
filter: invert(100%);
}
.content img {
max-width: 800px;
display: inline;
}
.content {
text-align: justify;
width: 80%;
}
</style>
</head>
<body>
<!-- Llegaste al código, a ver cáele al telegram -> [arroba]kprftw -->
<div id="topbar">
{% block topbar %}
<a href="/"><div class="button">a casa</div></a>
<a href="/spacestats"><div id="spaceStatusButton" class="button">a casa</div></a>
<a href="/guatecon-01"><div class="button color-changer" id="colorButton">GuateCON 0.1</div></a>
<a href="/about"><div class="button">qué es esto</div></a>
<a href="/somos"><div class="button">quiénes somos</div></a>
<a href="/blog"><div class="button">blog</div></a>
<a href="https://box.kernelpanic.lol"><div class="button">proyectos</div></a>
<a href="/censo-hacker-latinoamericane-2023"><div class="button">participa en el censo</div></a>
<!--<a href="https://pat.kernelpanic.lol/calendar/#/2/calendar/view/CH1zbFeFKLPO5SPle5JNxjKqdSaidbYPYBKFC4PDSus/embed/"><div class="button">calendario</div></a> -->
<!-- Add more buttons as needed -->
{% endblock %}
</div>
<div class="content">
<h1>{{ this.title }}</h1>
{% block body %}{% endblock %}
</div>
<script>
document.body.addEventListener('click', function () {
var randomColor = 'rgb(' +
Math.floor(Math.random() * 256) + ',' +
Math.floor(Math.random() * 256) + ',' +
Math.floor(Math.random() * 256) + ')';
document.body.style.backgroundColor = randomColor;
document.getElementById('topbar').style.backgroundColor = randomColor;
var rgb = randomColor.match(/\d+/g).map(Number);
// Calculate the brightness of the color
var brightness = Math.round((parseInt(rgb[0]) * 299 + parseInt(rgb[1]) * 587 + parseInt(rgb[2]) * 114) / 1000);
// Choose black or white for the font color based on the brightness
var randomFontColor = brightness > 150 ? 'black' : 'white';
document.body.style.color = randomFontColor;
});
var buttons = document.querySelectorAll('.button');
buttons.forEach(function(button) {
button.addEventListener('mouseover', function() {
var randomColor = 'rgb(' +
Math.floor(Math.random() * 256) + ',' +
Math.floor(Math.random() * 256) + ',' +
Math.floor(Math.random() * 256) + ')';
// Convert the RGB color to an array of numbers
var rgb = randomColor.match(/\d+/g).map(Number);
// Calculate the brightness of the color
var brightness = Math.round((parseInt(rgb[0]) * 299 + parseInt(rgb[1]) * 587 + parseInt(rgb[2]) * 114) / 1000);
// Choose black or white for the font color based on the brightness
var randomFontColor = brightness > 150 ? 'black' : 'white';
this.style.backgroundColor = randomColor;
this.style.color = randomFontColor;
});
});
</script>
<script>
const button = document.getElementById('colorButton');
let t = 0;
function generateColor(t, phase) {
return Math.floor((Math.sin(t + phase) + 1) * 128);
}
function updateGradient() {
const r1 = generateColor(t, 0);
const g1 = generateColor(t, 2);
const b1 = generateColor(t, 4);
const color1 = `rgb(${r1}, ${g1}, ${b1})`;
const r2 = generateColor(t, 6);
const g2 = generateColor(t, 8);
const b2 = generateColor(t, 10);
const color2 = `rgb(${r2}, ${g2}, ${b2})`;
button.style.background = `linear-gradient(to right, ${color1}, ${color2})`;
t += 0.01;
}
setInterval(updateGradient, 1000 / 600); // 60 frames per second for a smooth transition
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const endpoint = "https://kernelpanic.lol/spacestats"; // Replace with your actual endpoint
const button = document.getElementById('spaceStatusButton');
fetch(endpoint)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
updateButtonStatus(button, data.state.open);
})
.catch(error => {
console.error('There has been a problem with your fetch operation:', error);
button.textContent = 'Error fetching status';
});
});
function updateButtonStatus(button, status) {
if (status === 'true') {
button.textContent = 'Estamos aquí';
button.style.backgroundColor = 'green';
} else if (status === 'false') {
button.textContent = 'No estamos';
button.style.backgroundColor = 'red';
} else {
button.textContent = 'Algo raro sucede';
button.style.backgroundColor = 'grey';
}
}
</script>
<div id="footer">
{% block footer %}
<p>Por la gracia de San iGNUcio desde el Cuarto de Máquinas @ 2023.</p>
<p>Contáctanos en <a href="https://twitter.com/botkernel">el twatter</a> para lo que se ocupe.</p>
{% endblock %}
</div>
</body>
</html>