feat(client): 💄 revamp ui and add css

This commit is contained in:
Julien Oculi 2024-06-25 14:55:30 +02:00
parent dce08d2b40
commit 479234ef1d

View file

@ -6,88 +6,103 @@
<title>Contrôle du robot</title> <title>Contrôle du robot</title>
</head> </head>
<body> <body>
<h1>Contrôle du robot sans fils</h1> <main>
<p> <h1>Contrôle du robot sans fils</h1>
Cette page permet de contrôler le robot depuis un PC portable <p>
connecté au WiFi du robot. Elle est destinée aux personnes n'ayant Cette page permet de contrôler le robot depuis un PC portable
pas de smartphone. connecté au WiFi du robot. Elle est destinée aux personnes
</p> n'ayant pas de smartphone.
<h2>Paramètres de contrôle</h2> </p>
<p> <section class="infos">
Ici vous pourrez paramétrer les contrôles du robot, rentrer son <div>
adresse IP ainsi que lui indiquer la distance à parcourir ou l'angle <h2>Paramètres de contrôle</h2>
de rotation désiré. <p>
</p> Ici vous pourrez paramétrer les contrôles du robot,
<form class="settings" id="settings"> rentrer son adresse IP ainsi que lui indiquer la
<label> distance à parcourir ou l'angle de rotation désiré.
<span>Adresse IP du robot</span> </p>
<input </div>
type="text" <div>
name="ip-address" <h2>Contrôle</h2>
title="Adresse IP du robot (ex: 192.168.0.1)" <p>
pattern="\d+\.\d+\.\d+\.\d+(:\d+)?" Amusez vous ! Pour contrôler le robot, utilisez les
placeholder="192.168.0.0" flèches directionnelles pour le diriger et la barre
required espace pour le stopper.
/> </p>
</label> </div>
<button>Se connecter</button> </section>
</form> <section class="inputs">
<div class="input-controls"> <form class="settings" id="settings">
<label> <label>
<span>Rotation en degrés</span> <span>Adresse IP du robot</span>
<input <input
id="rotate-input" type="text"
type="number" name="ip-address"
title="Rotation en degrés (-360° à 360°)" title="Adresse IP du robot (ex: 192.168.0.1)"
min="-360" pattern="\d+\.\d+\.\d+\.\d+(:\d+)?"
max="360" placeholder="192.168.0.0"
step="1" required
placeholder="90" />
/> </label>
</label> <button>Se connecter</button>
<label> </form>
<span>Distance en cm</span> <div class="input-controls">
<input <label>
id="move-input" <span>Rotation en degrés</span>
type="number" <input
title="Distance en cm (-2^31 à 2^31)" id="rotate-input"
min="-2147483647" type="number"
step="1" title="Rotation en degrés (-360° à 360°)"
max="2147483647" min="-360"
placeholder="10" max="360"
/> step="1"
</label> placeholder="90"
</div> />
<div class="touch-controls" id="touch-controls"> </label>
<span class="placeholder"></span> <label>
<button title="Avancer" data-command="forward" data-value="2"> <span>Distance en cm</span>
⬆️ <input
</button> id="move-input"
<span class="placeholder"></span> type="number"
<button title="Tourner à gauche" data-command="left" data-value="5"> title="Distance en cm (-2^31 à 2^31)"
⬅️ min="-2147483647"
</button> step="1"
<button title="Arrêter" data-command="stop" data-value="0"> max="2147483647"
⏸️ placeholder="10"
</button> />
<button </label>
title="Tourner à droite" </div>
data-command="right" </section>
data-value="5" <section class="touch-controls" id="touch-controls">
> <span class="placeholder"></span>
➡️ <button title="Avancer" data-command="forward" data-value="2">
</button> ⬆️
<span class="placeholder"></span> </button>
<button title="Reculer" data-command="backward" data-value="2"> <span class="placeholder"></span>
⬇️ <button
</button> title="Tourner à gauche"
<span class="placeholder"></span> data-command="left"
</div> data-value="5"
<h2>Contrôle</h2> >
<p> ⬅️
Amusez vous ! Pour contrôler le robot, utilisez les flèches </button>
directionnelles pour le diriger et la barre espace pour le stopper. <button title="Arrêter" data-command="stop" data-value="0">
</p> ⏸️
</button>
<button
title="Tourner à droite"
data-command="right"
data-value="5"
>
➡️
</button>
<span class="placeholder"></span>
<button title="Reculer" data-command="backward" data-value="2">
⬇️
</button>
<span class="placeholder"></span>
</section>
</main>
</body> </body>
<script type="module"> <script type="module">
// Input handlers // Input handlers
@ -279,9 +294,119 @@
} }
</script> </script>
<style> <style>
:root {
--translucent-high: rgba(255, 255, 255, 0.8);
--translucent-low: rgba(255, 255, 255, 0.4);
--padding: 0.5rem;
--padding-half: calc(var(--padding) / 2);
--border-size: 0.2rem;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
background-color: rgb(247, 234, 219);
height: 100dvh;
margin: 0;
padding: 0;
font-family: system-ui, -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
'Helvetica Neue', sans-serif;
}
h1,
h2 {
margin: 0;
}
h1 {
text-align: center;
}
main {
padding: var(--padding);
height: 100%;
text-wrap: pretty;
}
.touch-controls { .touch-controls {
display: grid; display: grid;
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
gap: var(--padding);
padding: var(--padding);
button {
height: 5.5rem;
font-size: 3rem;
border-radius: var(--padding);
}
}
button {
border: solid var(--border-size) var(--translucent-high);
background: var(--translucent-high);
border-radius: var(--padding-half);
transition: all 0.2s ease;
height: 100%;
font-size: 110%;
&:active {
border-color: var(--translucent-low);
background-color: var(--translucent-low);
}
}
.input-controls,
.settings {
padding: var(--padding);
display: flex;
gap: var(--padding);
border: solid var(--border-size) var(--translucent-high);
border-radius: var(--padding-half);
align-items: center;
justify-content: space-around;
}
.inputs {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(700px, 1fr));
gap: var(--padding);
width: 100%;
}
.infos {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(800px, 1fr));
flex-wrap: wrap;
gap: var(--padding);
justify-content: space-between;
}
label {
display: grid;
gap: var(--padding);
}
input {
border: solid var(--border-size) var(--translucent-high);
background: var(--translucent-low);
border-radius: var(--padding-half);
transition: all 0.2s ease;
height: 100%;
padding: var(--padding-half);
font-family: 'Courier New', Courier, monospace;
outline: none;
&:focus {
background-color: var(--translucent-high);
}
} }
</style> </style>
</html> </html>