mirror of
https://github.com/groupe1cir1n/groupe1CIR1Njs.git
synced 2026-03-18 21:40:30 +01:00
Cleanup the code, fix a lot of little things
This commit is contained in:
@@ -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 l’ISEN <br>Yncréa Ouest. L’équipe mène une activité de R&D pour la conception de plateformes <br>technologiques d’observations et d’analyses à 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 l’ISEN <br>Yncréa Ouest. L’équipe mène une activité de R&D pour la conception de plateformes <br>technologiques d’observations et d’analyses à 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>
|
||||||
|
|||||||
@@ -59,13 +59,13 @@
|
|||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<span class="close">×</span>
|
<span class="close">×</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">×</span>
|
<span class="close">×</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 d’anomalies et la sécurité de l’environnement. Deux enjeux majeurs sont traités : (1) l’application des algorithmes d’intelligence 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 d’acquisition et de communications standards permettant l’accè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 d’anomalies et la sécurité de l’environnement. Deux enjeux majeurs sont traités : (1) l’application des algorithmes d’intelligence 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 d’acquisition et de communications standards permettant l’accè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>
|
||||||
|
|||||||
@@ -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)">
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 s’efface 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)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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';
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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"){
|
||||||
|
|||||||
@@ -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.
Reference in New Issue
Block a user