var notifBar = document.getElementById('NOTIFBAR'); notifBar.children[1].children[2].addEventListener('click', function(e){ e.preventDefault(); remClass(notifBar, 'active'); }, false); var inPrenom = document.getElementById('crPrenom'); var inNom = document.getElementById('crNom'); var inAdr = document.getElementById('crAdr'); var inAdr2 = document.getElementById('crAdr2'); var inCP = document.getElementById('crCP'); var inVille = document.getElementById('crVille'); var inDN = document.getElementById('crDN'); var inLN = document.getElementById('crLN'); var inSecu = document.getElementById('crSecu'); var inMedecin = document.getElementById('crMedecin'); var inCivil = document.querySelectorAll('.crCiv'); var sbCreer = document.getElementById('sbCreer'); // SUBMIT var inCk = new inputChecker(); // format de la date var dateFormat = new formatChecker(null, 'Ji/Mi/Aiii', { 'J': '[0-3]', 'M': '[0-1]', 'A': '[1-2]' } ); // format du numéro de sécu var secuFormat = new formatChecker(null, 'S ii Mi ii iii iii ii', { 'S': '[0-1]', 'M': '[0-1]' } ); inCk.append( inCP, new formatChecker( null, 'iiiii'), '09000'); // on ajoute le CODE_POSTAL au vérificateur de champs inCk.append( inDN, dateFormat, '01/01/2015'); // on ajoute la DATE_NAISSANCE au vérificateur de champs inCk.append( inSecu, secuFormat, '1 99 19 99 999 999 99'); // on ajoute le NUM_SECU au vérificateur de champs ////////////////////////////// // PRENOM & NOM (VARCHAR 45)// ////////////////////////////// inPrenom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false); inNom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false); ////////////////////////////////////// // ADRESSE & ADRESSE2 (VARCHAR 255) // ////////////////////////////////////// inAdr.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false); inAdr2.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false); //////////////////////////// // VILLE & LIEU_NAISSANCE // //////////////////////////// inVille.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false); inLN.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false); ///////////////// // CODE POSTAL // ///////////////// inCP.addEventListener('keyup', function(e){ if( inCk.check(inCP) ) addClass(inCP, 'validated'); // on active la classe si correct else{ // si incorrect remClass(inCP, 'validated'); // on désactive la classe inCk.correct(inCP, false); // on corrige partiellement if( inCk.check(inCP) ) addClass(inCP, 'validated'); // mise à jour de la classe après correction } }, false); /////////////////////// // DATE DE NAISSANCE // /////////////////////// inDN.addEventListener('keyup', function(e){ if( inCk.check(inDN) ) addClass(inDN, 'validated'); // on active la classe si correct else{ // si incorrect remClass(inDN, 'validated'); // on désactive la classe inCk.correct(inDN, false); // on corrige partiellement if( inCk.check(inDN) ) addClass(inDN, 'validated'); // mise à jour de la classe après correction } }, false); //////////////////// // NUMERO DE SECU // //////////////////// function checkSecuControlKey(pNumSecu){ var NIR = pNumSecu.slice(0,-2).replace(/ /g, ''); var key = pNumSecu.slice(-2); return 97-(NIR%97) == key; } inSecu.addEventListener('keyup', function(e){ if( inCk.check(inSecu) ){ if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte addClass(inSecu, 'validated'); // on dis que le champ est valide remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide }else{ remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide addClass(inSecu, 'invalid'); // on dis qu'il est invalide } }else{ // si incorrect remClass(inSecu, 'validated'); // on désactive la classe remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide inCk.correct(inSecu, false); // on corrige partiellement if( inCk.check(inSecu) ){ if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte addClass(inSecu, 'validated'); // on dis que le champ est valide remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide }else{ remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide addClass(inSecu, 'invalid'); // on dis qu'il est invalide } } } }, false); sbCreer.addEventListener('click', function(e){ e.preventDefault(); // on annule le submit() var formElements = sbCreer.parentNode.children; var checker = true; // pour chaque du formulaire (fils direct uniquement) for( var i = 0 ; i < formElements.length ; i++ ){ if( formElements[i] instanceof HTMLInputElement && formElements[i].type == 'text' ){ // si le champ est requis (required) if( formElements[i].required ) checker = checker && formElements[i].className.indexOf('validated') > -1; // TRUE => validé (niveau interface) // si le champ n'est pas requis et pas vide, on le vide else if( formElements[i].value != '' && formElements[i].className.indexOf('validated') < 0 ) // si incorrect et pas vide formElements[i].value = ''; // on vide }} var inputCheckerValid = inCk.checkAll(); if( inputCheckerValid && checker ){ // si tout es ok uniquement, on submit() var request = { prenom: inPrenom.value, nom: inNom.value, civilite: (inCivil[0].checked) ? inCivil[0].value : inCivil[1].value, adresse: inAdr.value, adresse2: (inAdr2.value.length>0) ? inAdr2.value : null, code_postal: inCP.value, ville: inVille.value, date_naissance: inDN.value, lieu_naissance: inLN.value, num_secu: inSecu.value, medecin_traitant: (inMedecin.value!='.') ? inMedecin.value : null }; API.send('Patient:add', request, function(e){ notif(e.status, e.title, e.message); if( e.status == 'success' ) // on vide le formulaire si on a 'success' sbCreer.parentNode.reset(); }, false); }else{ // sinon on affiche l'erreur notif('error', 'Oups!', 'Certains champs sont requis ou incorrects.'); } }, false); /* RECHERCHE DE MEDECINS */ var srPrenom = document.getElementById('srPrenom'); var srNom = document.getElementById('srNom'); var sbCherche = document.getElementById('sbCherche'); ////////////////////////////// // PRENOM & NOM (VARCHAR 45)// ////////////////////////////// srPrenom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 1, 45, true); }, false); srNom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 1, 45, true); }, false); ////////////// // SUBMIT() // ////////////// sbCherche.addEventListener('click', function(e){ e.preventDefault(); // on annule le submit() var correctNom = srNom.className.indexOf('validated') > -1 && srNom.value.length > 0; var correctPrenom = srPrenom.className.indexOf('validated') > -1 && srPrenom.value.length > 0; if( correctPrenom || correctNom ){ // si tout es ok uniquement, on submit() var request = { prenom: (correctPrenom) ? srPrenom.value : null, nom: (correctNom) ? srNom.value : null }; API.send('Patient:search', request, function(e){ if( e.status != 'success' ) notif(e.status, e.title, e.message); if( e.hasOwnProperty('patients') ) displayFoundPatients(e.patients); else displayFoundPatients([]); if( e.status == 'success' ) // on vide le formulaire si on a 'success' sbCreer.parentNode.reset(); }, false); }else // sinon on affiche l'erreur notif('error', 'Oups!', 'Certains champs sont requis ou incorrects.'); }, false); //////////////////////////////////////////// // AFFICHAGE DES MEDECINS DE LA RECHERCHE // //////////////////////////////////////////// function displayFoundPatients(foundPatients){ var container = document.getElementById('searchResultPatient'); var content = ''; for( var i = 0 ; i < foundPatients.length ; i++ ){ content += '