diff --git a/Consultations.php b/Consultations.php index e3c0c66..8076b93 100755 --- a/Consultations.php +++ b/Consultations.php @@ -63,7 +63,7 @@ if(!Authentification::checkUser(0)){ Selection du médecin pour la consultation.Médecin traitant du patient. -
Date: +
Date:  
Heure: diff --git a/Dashboard.php b/Dashboard.php index 72cae8d..ffbd46f 100755 --- a/Dashboard.php +++ b/Dashboard.php @@ -16,8 +16,10 @@ if(!Authentification::checkUser(0)){ + + @@ -47,5 +49,6 @@ if(!Authentification::checkUser(0)){ + diff --git a/js/consultations.js b/js/consultations.js index c914f5f..626402e 100755 --- a/js/consultations.js +++ b/js/consultations.js @@ -1,152 +1,39 @@ -// /* [1] On récupère les 2 de création de RDV +===============================================================*/ +var newRDVPatient = document.getElementById('newRDVPatient'); +var newRDVMedecin = document.getElementById('newRDVMedecin'); -// /* [2] Si on a récupéré les 2 , on créé l'évènement de selection dynamique +===============================================================*/ +if( newRDVPatient != null && newRDVMedecin != null ){ -// /* [1] On selectionne dynamiquement le médecin traitant associé -// =======================================================================*/ -// newRDVPatient.addEventListener('change', function(e){ -// var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); + /* [1] On selectionne dynamiquement le médecin traitant associé + =======================================================================*/ + newRDVPatient.addEventListener('change', function(e){ + var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); -// // on selectionne le medecin associé -// newRDVMedecin.value = child.dataset.medecin; -// addClass(newRDVMedecin, 'associated'); -// }, false); + // on selectionne le medecin associé + newRDVMedecin.value = child.dataset.medecin; + addClass(newRDVMedecin, 'associated'); + }, false); -// // [1] On met en valeur le médecin traitant associé (class=associated) -// // ======================================================================= -// newRDVMedecin.addEventListener('change', function(e){ -// var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); -// if( newRDVMedecin.value == child.dataset.medecin ) // si c'est le medecin traitant, on met en valeur l'association -// addClass(newRDVMedecin, 'associated'); -// else -// remClass(newRDVMedecin, 'associated'); + // [1] On met en valeur le médecin traitant associé (class=associated) + // ======================================================================= + newRDVMedecin.addEventListener('change', function(e){ + var child = document.querySelector("#newRDVPatient > option[value='"+newRDVPatient.value+"'][data-medecin]"); + if( newRDVMedecin.value == child.dataset.medecin ) // si c'est le medecin traitant, on met en valeur l'association + addClass(newRDVMedecin, 'associated'); + else + remClass(newRDVMedecin, 'associated'); -// }, false); -// } + }, false); +} -// /* GESTION DU NUMÉRO DE SÉCU */ -// var inSecu = document.getElementById('inSecu'); // input du numéro de sécu -// var ftSecu = 'x xx xx xx xxx xxx xx'; // format du numéro de sécu - -// inSecu.addEventListener('keyup', function(e){ - -// // pour chaque caractère -// for( var i = 0 ; i < inSecu.value.length ; i++ ){ - -// // [1] si le caractère n'est pas un nombre, on le supprime -// if( isNaN(inSecu.value[i]) ) -// inSecu.value = inSecu.value.slice(0, i).concat( inSecu.value.slice(i+1) ); - -// // [2] si c'est pas un espace mais qu'il en faut un, on met en forme -// if( inSecu.value[i] != ' ' && ftSecu[i] == ' ' ) -// inSecu.value = inSecu.value.slice(0, i).concat(' ').concat( inSecu.value.slice(i) ); - -// // [4] Le numéro saisi est trop long, on le coupe + enlève les espaces alentours -// inSecu.value = inSecu.value.slice(0, ftSecu.length).trim(); -// } - -// // si input complet -// if( inSecu.value.length == ftSecu.length ) -// addClass(inSecu, 'validated'); -// else -// remClass(inSecu, 'validated'); - -// }, false); - - - - -// /* GESTION DE LA DATE */ -// var inDate = document.getElementById('inDate'); // input de la date -// var ftDate = 'dd/dd/dddd'; // format de la date - -// inDate.addEventListener('keyup', function(e){ - -// // pour chaque caractère -// for( var i = 0 ; i < inDate.value.length ; i++ ){ - -// // [1] si le caractère n'est pas un nombre, on le supprime -// if( isNaN(inDate.value[i]) ) -// inDate.value = inDate.value.slice(0, i).concat( inDate.value.slice(i+1) ); - -// // [2] si c'est pas un espace mais qu'il en faut un, on met en forme -// if( inDate.value[i] != '/' && ftDate[i] == '/' ) -// inDate.value = inDate.value.slice(0, i).concat('/').concat( inDate.value.slice(i) ); - -// // [3] Le numéro saisi est trop long, on le coupe + enlève les espaces alentours -// inDate.value = inDate.value.slice(0, ftDate.length).trim(); -// } - -// // [4] vérification de cohérence -// var pJour = inDate.value.slice(0,2); -// var pMois = inDate.value.slice(3,5); -// var pAnnee = inDate.value.slice(6,11); - -// // test de la validité -// var pDate = new Date(pJour+'/'+pMois+'/'+pAnnee); -// // if( pDate.toString() != 'Invalid Date' ){ -// // var pDateObj = { -// // jour: (''+(pDate.getDate()-1)).length != 2 ? '0'+(pDate.getDate()-1) : ''+(pDate.getDate()-1), -// // mois: (''+(pDate.getMonth()+1)).length != 2 ? '0'+(pDate.getMonth()+1) : ''+(pDate.getMonth()+1), -// // annee: (''+(pDate.getFullYear())).length != 4 ? '0'+(pDate.getFullYear()) : ''+(pDate.getFullYear()), -// // } -// // inDate.value = pDateObj.jour +'/'+ pDateObj.mois +'/'+ pDateObj.annee; -// // } - -// }, false); - - - -// /* GESTION DE L'HEURE */ -// var inHeure = document.getElementById('inHeure'); // input de la date -// var ftHeure = 'dd:dd'; // format de la date - -// inHeure.addEventListener('keyup', function(e){ - -// // pour chaque caractère -// for( var i = 0 ; i < inHeure.value.length ; i++ ){ - -// // [1] si le caractère n'est pas un nombre, on le supprime -// if( isNaN(inHeure.value[i]) ) -// inHeure.value = inHeure.value.slice(0, i).concat( inHeure.value.slice(i+1) ); - -// // [2] si c'est pas un espace mais qu'il en faut un, on met en forme -// if( inHeure.value[i] != ':' && ftHeure[i] == ':' ) -// inHeure.value = inHeure.value.slice(0, i).concat(':').concat( inHeure.value.slice(i) ); - -// // [3] Le numéro saisi est trop long, on le coupe + enlève les espaces alentours -// inHeure.value = inHeure.value.slice(0, ftHeure.length).trim(); -// } - -// // [4] vérification de cohérence -// var pHeures = inHeure.value.slice(0,2); -// var pMinuts = inHeure.value.slice(3,5); - -// // on borne les valeurs -// if( pHeures.length == 2 ) pHeures = (pHeures>=24) ? '23' : pHeures; -// if( pMinuts.length == 2 ) pMinuts = (pMinuts>=60) ? '59' : pMinuts; - -// // on met au bon format dans tous les cas -// if( pHeures.length == 2 && pMinuts.length == 2 ){ -// addClass(inHeure, 'validated'); -// inHeure.value = pHeures+':'+pMinuts; -// }else -// remClass(inHeure, 'validated'); - -// }, false); - - - /* VERIFICATION DES CHAMPS */ var inCk = new inputChecker(); var inDate = document.getElementById('inDate'); @@ -155,21 +42,18 @@ var inCk = new inputChecker(); // format de date simplifié -var dateFormat = new formatChecker( null, - 'Ji/Mi/2iii', - { 'J': '[0-3]', 'M': '[0-1]' } +var dateFormat = new formatChecker(null, + 'Ji/Mi/2iii', { 'J': '[0-3]', 'M': '[0-1]' } ); // format de temps simplifié -var timeFormat = new formatChecker( null, - 'Hi:Mi', - { 'H': '[0-2]', 'M': '[0-6]' } +var timeFormat = new formatChecker(null, + 'Hi:Mi', { 'H': '[0-2]', 'M': '[0-6]' } ); // format numéro SECU simplifié -var secuFormat = new formatChecker( null, - 'S ii ii ii iii iii ii', - { 'S': '[0-1]' } +var secuFormat = new formatChecker(null, + 'S ii ii ii iii iii ii', { 'S': '[0-1]' } ); @@ -184,7 +68,6 @@ inCk.append( inSecu, secuFormat, '1 23 45 67 890 123 45' ); inDate.addEventListener('keyup', function(e){ if( inCk.check(inDate) ) addClass(inDate, 'validated'); // on active la classe si correct else{ // si incorrect - remClass(inDate, 'validated'); // on désactive la classe inCk.correct(inDate, false); // on corrige partiellement if( inCk.check(inDate) ) addClass(inDate, 'validated'); // mise à jour de la classe après correction @@ -195,7 +78,6 @@ inDate.addEventListener('keyup', function(e){ inHeure.addEventListener('keyup', function(e){ if( inCk.check(inHeure) ) addClass(inHeure, 'validated'); // on active la classe else{ // si incorrect - remClass(inHeure, 'validated'); // on désactive la classe inCk.correct(inHeure, false); // on corrige partiellement if( inCk.check(inHeure) ) addClass(inHeure, 'validated'); // mise à jour de la classe après correction @@ -205,7 +87,6 @@ inHeure.addEventListener('keyup', function(e){ inSecu.addEventListener('keyup', function(e){ if( inCk.check(inSecu) ) addClass(inSecu, 'validated'); // on active la classe else{ // si incorrect - remClass(inSecu, 'validated'); // on désactive la classe inCk.correct(inSecu, false); // on corrige partiellement if( inCk.check(inSecu) ) addClass(inSecu, 'validated'); // mise à jour de la classe après correction diff --git a/js/input-checker.js b/js/input-checker.js index 9e0293d..f025c3e 100755 --- a/js/input-checker.js +++ b/js/input-checker.js @@ -246,6 +246,8 @@ inputChecker.prototype = { if( !this.check(pInputElement) ){ // si la chaîne n'est pas correcte + var lastChar = null; + /* [2] Cas 1 : vérification de la chaîne complète ====================================================*/ for( var i = 0 ; i < RegExpByChar.length ; i++ ){ // on parcours le pattern @@ -254,21 +256,26 @@ inputChecker.prototype = { if( !pToEnd && i >= this.input[index].value.length ) break; + lastChar = tmpValue[i]; + // RegExp sur le caractère en question var tmpRegExp = new RegExp( '^'+RegExpByChar[i]+'$' ); /* (1) Valeur inexistante (string.length < schéma.length) -----------------------------------------------------------*/ - if( tmpValue.length == 0 || tmpValue[i] == null ){ + if( tmpValue.length == 0 || tmpValue[i] == null ) tmpValue = tmpValue.slice(0, i).concat( this.defval[index][i] ).concat( tmpValue.slice(i) ); - i++; // on incrémente car on décale la valeur - /* (2) Valeur ne correspond pas au schéma du caractère -----------------------------------------------------------*/ - }else if( tmpValue[i].match(tmpRegExp) == null ) - tmpValue = tmpValue.slice(0, i).concat( this.defval[index][i] ).concat( tmpValue.slice(i) ); - // Remarque. Ici on ne décale pas (i++) car le décalage fait correspondre au schéma + else if( tmpValue[i].match(tmpRegExp) == null ){ + // si le caractère suivant match, on décale d'une position + if( tmpValue[i].match(new RegExp( '^'+RegExpByChar[i+1]+'$' )) != null ) + tmpValue = tmpValue.slice(0, i).concat( this.defval[index][i] ).concat( tmpValue.slice(i) ); + // sinon on remplace + else + tmpValue = tmpValue.slice(0, i).concat( this.defval[index][i] ).concat( tmpValue.slice(i+1) ); + } }