Cleanup the code, fix a lot of little things

This commit is contained in:
2023-05-31 01:01:27 +02:00
parent bb842bd147
commit 3cd5f948b9
12 changed files with 87 additions and 77 deletions

View File

@@ -47,7 +47,7 @@
<div class="main"> <div class="main">
<div class="secondary"> <div class="secondary">
<img id="img_analyse" src="src/img/Accueil/Analyse.jpg" alt="image montrant des personnes et des diagrammes"> <img id="img_analyse" src="src/img/Accueil/Analyse.jpg" alt="image montrant des personnes et des diagrammes">
<p id="who_we_are"><div id="LabHidden" class="slide-effect">Léquipe « Vision et Analyse de Données » est une équipe du laboratoire L@bISEN de lISEN <br>Yncréa Ouest. Léquipe mène une activité de R&D pour la conception de plateformes <br>technologiques dobservations et danalyses à partir de réseaux de capteurs intelligents.</div></p> <p id="who_we_are"></p><div id="LabHidden">Léquipe « Vision et Analyse de Données » est une équipe du laboratoire L@bISEN de lISEN <br>Yncréa Ouest. Léquipe mène une activité de R&D pour la conception de plateformes <br>technologiques dobservations et danalyses à partir de réseaux de capteurs intelligents.</div>
<a href="recherche.html"class="btn">Voir nos axes de recherches</a> <a href="recherche.html"class="btn">Voir nos axes de recherches</a>
<li class="actu"> <li class="actu">
<p>Fil d'actualité</p> <p>Fil d'actualité</p>

View File

@@ -59,13 +59,13 @@
<div class="modal-content"> <div class="modal-content">
<span class="close">&times;</span> <span class="close">&times;</span>
<div class="content_techno"> <div class="content_techno">
<div class="img_techno">
<img src="/src/img/plateforme_techno/laptop_meeting.jpg" alt="laptop meeting">
</div>
<div class="text_techno"> <div class="text_techno">
<h2>Chambre connectée (Living Lab)</h2> <h2>Chambre connectée (Living Lab)</h2>
<p id="LivingLabTextModal"></p> <p id="LivingLabTextModal"></p>
</div> </div>
<div class="img_techno">
<img src="/src/img/plateforme_techno/laptop_meeting.jpg" alt="laptop meeting">
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -83,13 +83,13 @@
<div class="modal-content"> <div class="modal-content">
<span class="close">&times;</span> <span class="close">&times;</span>
<div class="content_techno"> <div class="content_techno">
<div class="img_techno">
<img src="/src/img/plateforme_techno/server_and_wires.jpg" alt="server and wires">
</div>
<div class="text_techno"> <div class="text_techno">
<h2 id="EnvironnementHybridesConnectésTitle">Environnement hybrides connectés</h2> <h2 id="EnvironnementHybridesConnectésTitle">Environnement hybrides connectés</h2>
<p id="EnvironnementHybridesConnectésTextModal">Cette plateforme est en cours de développement et vise à offrir des services à la personne dans des environnements indoor (bureau connecté, école connectée, usine connectée, ...). Parmi les services, nous envisageons létude du comportement des personnes, ladétection danomalies et la sécurité de lenvironnement. Deux enjeux majeurs sont traités : (1) lapplication des algorithmes dintelligence artificielle qui prend tout son sens pour la prédiction dévènements à risque ; (2) la mise en place de moyens numériques interopérables comme une architecture réseau dédiée et des technologies dacquisition et de communications standards permettant laccès aux données et la centralisation/distribution de la prise de décision.Pour cette plateforme nous disposons de moyens de calcul intensif comme le serveur GPU pour faire du FoG computing qui présente une alternative intéressante par rapport au cloud pour des raisons de sécurité de données et de coût.</p> <p id="EnvironnementHybridesConnectésTextModal">Cette plateforme est en cours de développement et vise à offrir des services à la personne dans des environnements indoor (bureau connecté, école connectée, usine connectée, ...). Parmi les services, nous envisageons létude du comportement des personnes, ladétection danomalies et la sécurité de lenvironnement. Deux enjeux majeurs sont traités : (1) lapplication des algorithmes dintelligence artificielle qui prend tout son sens pour la prédiction dévènements à risque ; (2) la mise en place de moyens numériques interopérables comme une architecture réseau dédiée et des technologies dacquisition et de communications standards permettant laccès aux données et la centralisation/distribution de la prise de décision.Pour cette plateforme nous disposons de moyens de calcul intensif comme le serveur GPU pour faire du FoG computing qui présente une alternative intéressante par rapport au cloud pour des raisons de sécurité de données et de coût.</p>
</div> </div>
<div class="img_techno">
<img src="/src/img/plateforme_techno/server_and_wires.jpg" alt="server and wires">
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -47,9 +47,13 @@
<div id="allButton"> <div id="allButton">
<fieldset> <fieldset>
<legend>Choisir ce que vous souhaitez voir</legend> <legend>Choisir ce que vous souhaitez voir</legend>
<div>
<input id="all" type="radio" onclick="reset()" name="drone" checked>
<label>Toutes</label>
</div>
<div> <div>
<input id="revue" type="radio" onclick="revue()" name="drone" checked> <input id="revue" type="radio" onclick="revue()" name="drone">
<label>Revue</label> <label>Revue</label>
</div> </div>
@@ -58,10 +62,7 @@
<label>Communication</label> <label>Communication</label>
</div> </div>
<div>
<input id="all" type="radio" onclick="reset()" name="drone">
<label>Toutes</label>
</div>
</fieldset> </fieldset>
<input type="text" id="entry_title" placeholder="Title" onkeypress="searchTitle(event)"> <input type="text" id="entry_title" placeholder="Title" onkeypress="searchTitle(event)">
<input type="text" id="entry_author" placeholder="Nom d'auteur" onkeypress="searchAuthor(event)"> <input type="text" id="entry_author" placeholder="Nom d'auteur" onkeypress="searchAuthor(event)">

View File

@@ -7,11 +7,15 @@ nav {
color: #fff; color: #fff;
padding: 20px; padding: 20px;
margin-bottom: 10px; margin-bottom: 10px;
z-index: 999;
position: relative;
} }
.burger-menu { .burger-menu {
display: block; display: block;
cursor: pointer; cursor: pointer;
align-items: center;
margin-right: 10px;
} }
.menu { .menu {

View File

@@ -21,22 +21,19 @@ img{
list-style-type: none; list-style-type: none;
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
border-radius: 20px;
} }
#img_analyse{ #img_analyse{
width: 500px; width: 500px;
height: 330px; height: 330px;
} }
#img_analyse:hover{
width: 1000px;
height: 660px;
}
#who_we_are{ #who_we_are{
width: 100%; width: 100%;
height: 100%; height: 100%;
color: red; color: black;
text-align: center; text-align: center;
z-index: 0;
} }
.word { .word {
@@ -68,10 +65,12 @@ img{
#img_competence{ #img_competence{
width: 800px; width: 800px;
height: 450px; height: 450px;
transition: width 0.5s, height 0.5s;
} }
#img_hover{ #img_competence:hover{
width: auto; width: 1000px;
height: 550px;
} }
#LabHidden{ #LabHidden{

View File

@@ -1,25 +1,25 @@
function validateForm() { function validateForm() {
//Récupérer les valeurs des champs //Récupérer les valeurs des champs
var prenomNom = document.getElementById("usrnInp").value; let prenomNom = document.getElementById("usrnInp").value;
var email = document.getElementById("emailInp").value; let email = document.getElementById("emailInp").value;
var message = document.getElementById("textarea1Inp").value; let message = document.getElementById("textarea1Inp").value;
//Définir les expressions régulières //Définir les expressions régulières
var prenomNomRegex = /^[a-zA-Z]+\s[a-zA-Z]+$/; let prenomNomRegex = /^[a-zA-Z]+\s[a-zA-Z]+$/;
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; let emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
//Tester les valeurs des champs avec les expressions régulières //Tester les valeurs des champs avec les expressions régulières
var isPrenomNomValid = prenomNomRegex.test(prenomNom); let isPrenomNomValid = prenomNomRegex.test(prenomNom);
var isEmailValid = emailRegex.test(email); let isEmailValid = emailRegex.test(email);
var isMessageValid = message.length >= 20 && message.length <= 1000; let isMessageValid = message.length >= 20 && message.length <= 1000;
//console.log(isPrenomNomValid, isEmailValid, isMessageValid); //console.log(isPrenomNomValid, isEmailValid, isMessageValid);
//console.log(prenomNom, email, message); //console.log(prenomNom, email, message);
//Récupérer les éléments d'erreur //Récupérer les éléments d'erreur
var submitBtn = document.getElementById("submitBtn"); let submitBtn = document.getElementById("submitBtn");
var prenomNomError = document.getElementById("usrnError"); let prenomNomError = document.getElementById("usrnError");
var emailError = document.getElementById("emailError"); let emailError = document.getElementById("emailError");
var messageError = document.getElementById("textarea1Error"); let messageError = document.getElementById("textarea1Error");
//Afficher les messages d'erreur //Afficher les messages d'erreur

View File

@@ -23,6 +23,7 @@ function displayWord() {
wordElement.classList.add('show'); wordElement.classList.add('show');
}, 1000); }, 1000);
}); });
slideAndDisapear();
} }
/* /*
@@ -39,41 +40,30 @@ displayWord();
slide(element, 100, 500, 200); slide(element, 100, 500, 200);
*/ */
function slide({ timing, draw, duration }) { function slideAndDisapear(){
const start = performance.now(); //Quand tout le texte est apparu, il fait une translation vers la droite puis vers la gauche avant de revenir à sa position initiale, puis tout sefface et le cycle recommence.
const element = document.getElementById('who_we_are'); // Récupérer l'élément à animer
requestAnimationFrame(function animate(time) { setTimeout(() => { // Mettre l'élément a gauche
// timeFraction passe de 0 à 1 element.style.transform = 'translateX(-5%)';
let timeFraction = (time - start) / duration; }, 5000);
if (timeFraction > 1) timeFraction = 1; setTimeout(() => { // Remettre l'élément à sa position initiale
element.style.transform = 'translateX(0)';
// Calculer l'état courant de l'animation }, 5500);
const progress = timing(timeFraction); setTimeout(() => { // Mettre l'élément a droite
element.style.transform = 'translateX(5%)';
draw(progress); // Dessinez-le }, 6000);
setTimeout(() => { // Remettre l'élément à sa position initiale
if (timeFraction < 1) { element.style.transform = 'translateX(0)';
requestAnimationFrame(animate); }, 6500);
} setTimeout(() => {
}); element.innerHTML = '';
} }, 7000);
setTimeout(() => {
function draw(progress) { displayWord();
const train = document.getElementById('lahidden'); }, 7250);
train.style.left = progress + 'px';
} }
// Appel de la fonction displayWord // Appel de la fonction displayWord
displayWord(); displayWord();
setTimeout(() => { // Appel de la fonction slide
slide({
timing: function(timeFraction) {
return timeFraction; // Utilisation du timing linéaire par défaut
},
draw: draw,
duration: 2000 // Durée de l'animation en millisecondes
});
}, 1000); // Temps d'attente pour que l'animation des mots soit terminée (ajustez si nécessaire)

View File

@@ -65,6 +65,21 @@ document.addEventListener('DOMContentLoaded', function() {
addMember(); addMember();
}); });
document.body.appendChild(addMemberButton); document.body.appendChild(addMemberButton);
let MembersJS = document.querySelectorAll('.NewMembresJS')
MembersJS.forEach(function(element) {
//Ajout du bouton supprimer
const deleteButton = document.createElement('button');
deleteButton.innerText = 'Supprimer';
deleteButton.id = 'deleteButton';
deleteButton.addEventListener('click', function() {
//Supprime le membre auquel le bouton appartient
const confirmation = confirm('Voulez vous vraiment supprimer ce membre ?');
if (confirmation === true) {
element.remove();
}
});
element.appendChild(deleteButton);
});
} else { } else {
alert('Mot de passe du profil administrateur incorrect !'); alert('Mot de passe du profil administrateur incorrect !');
console.error('Mot de passe du profil administrateur incorrect !'); console.error('Mot de passe du profil administrateur incorrect !');
@@ -83,8 +98,8 @@ document.addEventListener('DOMContentLoaded', function() {
'use strict'; 'use strict';
var isDrawing, lastPoint; let isDrawing, lastPoint;
var container = document.getElementById('js-container'), let container = document.getElementById('js-container'),
canvas = document.getElementById('js-canvas'), canvas = document.getElementById('js-canvas'),
canvasWidth = canvas.width, canvasWidth = canvas.width,
canvasHeight = canvas.height, canvasHeight = canvas.height,
@@ -121,14 +136,14 @@ document.addEventListener('DOMContentLoaded', function() {
function getFilledInPixels(stride) { function getFilledInPixels(stride) {
if (!stride || stride < 1) { stride = 1; } if (!stride || stride < 1) { stride = 1; }
var pixels = ctx.getImageData(0, 0, canvasWidth, canvasHeight), let pixels = ctx.getImageData(0, 0, canvasWidth, canvasHeight),
pdata = pixels.data, pdata = pixels.data,
l = pdata.length, l = pdata.length,
total = (l / stride), total = (l / stride),
count = 0; count = 0;
// Iterate over all pixels // Iterate over all pixels
for(var i = count = 0; i < l; i += stride) { for(let i = count = 0; i < l; i += stride) {
if (parseInt(pdata[i]) === 0) { if (parseInt(pdata[i]) === 0) {
count++; count++;
} }
@@ -138,7 +153,7 @@ document.addEventListener('DOMContentLoaded', function() {
} }
function getMouse(e, canvas) { function getMouse(e, canvas) {
var offsetX = 0, offsetY = 0, mx, my; let offsetX = 0, offsetY = 0, mx, my;
if (canvas.offsetParent !== undefined) { if (canvas.offsetParent !== undefined) {
do { do {
@@ -171,12 +186,12 @@ document.addEventListener('DOMContentLoaded', function() {
e.preventDefault(); e.preventDefault();
var currentPoint = getMouse(e, canvas), let currentPoint = getMouse(e, canvas),
dist = distanceBetween(lastPoint, currentPoint), dist = distanceBetween(lastPoint, currentPoint),
angle = angleBetween(lastPoint, currentPoint), angle = angleBetween(lastPoint, currentPoint),
x, y; x, y;
for (var i = 0; i < dist; i++) { for (let i = 0; i < dist; i++) {
x = lastPoint.x + (Math.sin(angle) * i) - 25; x = lastPoint.x + (Math.sin(angle) * i) - 25;
y = lastPoint.y + (Math.cos(angle) * i) - 25; y = lastPoint.y + (Math.cos(angle) * i) - 25;
ctx.globalCompositeOperation = 'destination-out'; ctx.globalCompositeOperation = 'destination-out';

View File

@@ -11,7 +11,7 @@ burger.onclick = function() {
function updateTime() { function updateTime() {
//Afficher l'heure actuelle //Afficher l'heure actuelle
setInterval(function() {var now = new Date(); setInterval(function() {let now = new Date();
let hours = now.getHours(); let hours = now.getHours();
let minutes = now.getMinutes(); let minutes = now.getMinutes();
let seconds = now.getSeconds(); let seconds = now.getSeconds();
@@ -100,6 +100,7 @@ phoneNumbers.forEach(function(phoneNumber) {
if (input === copiedText){ // Si l'utilisateur a entré le numéro de téléphone correctement if (input === copiedText){ // Si l'utilisateur a entré le numéro de téléphone correctement
console.log("Vous appelez ce numéro : " + copiedText); console.log("Vous appelez ce numéro : " + copiedText);
let audio = new Audio('/src/sound/sonnerie.mp3'); let audio = new Audio('/src/sound/sonnerie.mp3');
audio.volume = 1;
audio.play(); audio.play();
// On arrête la sonnerie au bout de 5 secondes // On arrête la sonnerie au bout de 5 secondes
setTimeout(function() { setTimeout(function() {

View File

@@ -2,7 +2,7 @@ function returnToTopButton(){
//Attend 2 secondes avant de creer le bouton pour attendre la fin du loader //Attend 2 secondes avant de creer le bouton pour attendre la fin du loader
setTimeout(function (){ setTimeout(function (){
//Creation du bouton //Creation du bouton
var TopButton = document.createElement("button"); let TopButton = document.createElement("button");
TopButton.setAttribute("id", "returnToTopButton"); TopButton.setAttribute("id", "returnToTopButton");
TopButton.setAttribute("onclick", "returnToTop()"); TopButton.setAttribute("onclick", "returnToTop()");
TopButton.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>'; TopButton.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>';
@@ -34,7 +34,7 @@ function changeImage(image){
function changeImageUnderMouse(){ function changeImageUnderMouse(){
document.addEventListener('click', function(event){ document.addEventListener('click', function(event){
var elementClicked = event.target; let elementClicked = event.target;
//console.log(elementClicked); //console.log(elementClicked);
//Verifie si l'element cliqué est une image //Verifie si l'element cliqué est une image
if(elementClicked.tagName == "IMG"){ if(elementClicked.tagName == "IMG"){

View File

@@ -29,9 +29,9 @@ document.addEventListener('DOMContentLoaded', function() {
}); });
function truncateText(elementId, maxLength) { function truncateText(elementId, maxLength) {
var element = document.getElementById(elementId); let element = document.getElementById(elementId);
if (element) { if (element) {
var text = element.textContent.trim(); let text = element.textContent.trim();
if (text.length > maxLength) { if (text.length > maxLength) {
return text.substring(0, maxLength) + "..."; return text.substring(0, maxLength) + "...";
} else { } else {

Binary file not shown.