Formulaires + dynJS + "voilà"

This commit is contained in:
xdrm-brackets 2015-12-10 10:56:35 +01:00
parent 3b0d8c577e
commit 879af6eb4f
56 changed files with 375 additions and 43 deletions

View File

@ -49,7 +49,7 @@ if(!Authentification::checkUser(0)){
/* SAISIR UN RENDEZ-VOUS */
/*************************************/ ?>
<article data-title="Saisir un rendez-vous">
<form method='POST' action='handler.php'>
<form method='POST' action='managers/'>
<div>
<select id='newRDVPatient' name='id_patient'>
<option value='*'>Patient:</option>
@ -68,9 +68,12 @@ if(!Authentification::checkUser(0)){
</select><span class='associated'>Médecin traitant du patient.</span>
</div><br>
<input type='text' id='inDate' name='date' placeholder='dd/mm/yyyy'><span class='info'>Date de la consultation</span><br>
<input type='text' id='inDate' name='date' placeholder='jj/mm/aaaa'><span class='info'>Date de la consultation</span><br>
<input type='text' id='inHeure' name='heure' placeholder='HH:MM'><span class='info'>Heure de la consultation</span><br>
<input type='text' id='inDuree' name='duree' placeholder='minutes'><span class='info'>Durée de la consultation</span><br>
<br>
<input type='hidden' name='command' value='consultation:add'>
<input type='submit' value='Enregistrer la consultation'>
</form>

0
Docs/Model.mwb Normal file → Executable file
View File

0
Docs/Model.mwb.bak Normal file → Executable file
View File

0
Docs/RDVExemple.json Normal file → Executable file
View File

0
Docs/generateRDV Normal file → Executable file
View File

36
Medecins.php Normal file → Executable file
View File

@ -47,42 +47,28 @@ if(!Authentification::checkUser(0)){
<div id='BREADCRUMB'><a href='Dashboard.php'>Accueil</a> <a href='Medecins.php'>Gestion des médecins</a></a> </div>
<?php/********************************/
/* CONSULTER LES MÉDECINS */
/* AJOUTER UN MÉDECIN */
/*************************************/ ?>
<article data-title="Créer un médecin">
<form><br>Création d'un nouveau médecin au centre<br><br>
<input type='text' id='crPrenom' placeholder='Prenom'><br>
<input type='text' id='crNom' placeholder='Nom'><br>
<input type='text' id='crCivilite' placeholder='Civilité'><br>
<article data-title="Ajouter un médecin">
<form method='POST' action='managers/'>
<br><h4>Ajout d'un nouveau médecin</h4>
<input type='text' id='crPrenom' name='prenom' placeholder='Prénom' value=''><br>
<input type='text' id='crNom' name='nom' placeholder='NOM' value=''><br>
<input type='radio' name='civilite' value='M' id='civ1' checked><label for='civ1'>Homme</label><br>
<input type='radio' name='civilite' value='F' id='civ2'><label for='civ2'>Femme</label><br>
<br>
<input type='hidden' name='command' value='medecin:add'>
<input type='submit' value='Créer le médecin'>
</form>
</article>
<?php/********************************/
/* CONSULTER LES RENDEZ-VOUS */
/*************************************/ ?>
<article data-title="Numéro de sécurité sociale">
<div>
<input type='checkbox' id='tousRDV'><label for='tousRDV'>Tous</label><br>
<input type='checkbox' id='pastRDV'><label for='pastRDV'>Passés</label><br>
<input type='checkbox' id='fturRDV'><label for='fturRDV'>À venir</label><br>
<input type='submit' value='Rechercher'>
<input type='text' id='inSecu' placeholder='1 99 99 99 999 999 95'><span class='invalid'>Clé de contrôle invalide.</span>
</div>
</article>
</section>
</div>
<script type='text/javascript' src='js/consultations.js'></script>
<script type='text/javascript' src='js/medecins.js'></script>
</body>
</html>

99
Patients.php Executable file
View File

@ -0,0 +1,99 @@
<?php session_start();
require('autoloader.php');
if(!Authentification::checkUser(0)){
header("Location: http://".$_SERVER['HTTP_HOST']."/index.php");
die();
};?>
<!DOCTYPE html>
<html>
<head>
<title>Gestion des patients</title>
<meta charset='utf-8'/>
<meta name='description' value='Site de test'/>
<meta name='author' value='{xdrm} & SeekDaSky'/>
<link rel='stylesheet' href='css/animations.css'/>
<link rel='stylesheet' href='css/global.css'/>
<link rel='stylesheet' href='css/purple.theme.css'/>
<link rel='stylesheet' href='css/responsive.css'/>
<script type='text/javascript' src='js/adjust.js'></script>
<script type='text/javascript' src='js/input-checker.js'></script>
</head>
<body>
<!-- WRAPPER DE LA PAGE -->
<div id='WRAPPER'>
<!-- MENU DE LA PAGE -->
<nav id='MENU'>
<a href='Dashboard.php' id='ICON'></a>
<div>
<a href='Dashboard.php' id='dashboard'>Tableau de bord</a>
<a href='Consultations.php' id='consultations'>Consultations</a>
<a href='Medecins.php' id='medecin'>Gestion des médecins</a>
<a href='Patients.php' id='patient' class='active'>Gestion des patients</a>
</div>
</nav>
<!-- CONTAINER DE LA PAGE -->
<section id='CONTAINER'>
<!-- FIL D'ARIANE -->
<div id='BREADCRUMB'><a href='Dashboard.php'>Accueil</a> <a href='Medecins.php'>Gestion des médecins</a></a> </div>
<?php/********************************/
/* AJOUTER UN PATIENT */
/*************************************/ ?>
<article data-title="Ajouter un patient">
<form method='POST' action='managers/'>
<!--
+ Civilite ('M' ou 'F')
+ prenom
+ nom
+ adresse
+ adresse2
+ code_postal
+ ville
+ date_naissance
+ lieu_naissance
+ num_secu
+ medecin_traitant
-->
<br><h4>Ajout d'un nouveau patient</h4>
<input type='text' id='crPrenom' name='prenom' placeholder='Prénom' value=''><br>
<input type='text' id='crNom' name='nom' placeholder='NOM' value=''><br>
<input type='radio' name='civilite' value='M' id='civ1' checked><label for='civ1'>Homme</label><br>
<input type='radio' name='civilite' value='F' id='civ2'><label for='civ2'>Femme</label><br>
<input type='text' id='crAdr' name='adresse' placeholder='Adresse' value=''><br>
<input type='text' id='crAdr2' name='adresse2' placeholder='Complément adresse' value=''><br>
<input type='text' id='crCP' name='code_postal' placeholder='09000' value=''><span class='info'>Code postal</span><br>
<input type='text' id='crVille' name='ville' placeholder='Ville' value=''><br>
<input type='text' id='crDN' name='date_naissance' placeholder='jj/mm/aaaa' value=''><span class='info'>Date de naissance</span><br>
<input type='text' id='crLN' name='lieu_naissance' placeholder='Ville de naissance' value=''><br>
<input type='text' id='crSecu' name='num_secu' placeholder='1 99 19 99 999 999 99' value=''><span class='info'>Numéro de sécurité sociale</span><br>
<span>Choix du médecin traitant (optionnel)</span><br>
<select id='crMedecin' name='id_medecin'><?php
foreach(MedecinRepo::getAll() as $MEDECIN)
echo "<option value='".$MEDECIN['Id']."'>".$MEDECIN['Nom']." ".$MEDECIN['Prenom']."</option>";
?></select>
<br>
<input type='hidden' name='command' value='patient:add'>
<input type='submit' value='Créer le patient'>
</form>
</article>
</section>
</div>
<script type='text/javascript' src='js/patients.js'></script>
</body>
</html>

0
coverage/Authentification.php.html Normal file → Executable file
View File

0
coverage/MedecinRepo.php.html Normal file → Executable file
View File

0
coverage/MedecinRepoTest.php.html Normal file → Executable file
View File

0
coverage/PatientRepo.php.html Normal file → Executable file
View File

0
coverage/PatientRepoTest.php.html Normal file → Executable file
View File

0
coverage/RDVRepo.php.html Normal file → Executable file
View File

0
coverage/Response.php.html Normal file → Executable file
View File

0
coverage/StaticRepo.php.html Normal file → Executable file
View File

0
coverage/StatsRepo.php.html Normal file → Executable file
View File

0
coverage/css/bootstrap.min.css vendored Normal file → Executable file
View File

0
coverage/css/nv.d3.min.css vendored Normal file → Executable file
View File

0
coverage/css/style.css Normal file → Executable file
View File

0
coverage/dashboard.html Normal file → Executable file
View File

0
coverage/fonts/glyphicons-halflings-regular.eot Normal file → Executable file
View File

0
coverage/fonts/glyphicons-halflings-regular.svg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

0
coverage/fonts/glyphicons-halflings-regular.ttf Normal file → Executable file
View File

0
coverage/fonts/glyphicons-halflings-regular.woff Normal file → Executable file
View File

0
coverage/fonts/glyphicons-halflings-regular.woff2 Normal file → Executable file
View File

0
coverage/index.html Normal file → Executable file
View File

0
coverage/js/bootstrap.min.js vendored Normal file → Executable file
View File

0
coverage/js/d3.min.js vendored Normal file → Executable file
View File

0
coverage/js/holder.min.js vendored Normal file → Executable file
View File

0
coverage/js/html5shiv.min.js vendored Normal file → Executable file
View File

0
coverage/js/jquery.min.js vendored Normal file → Executable file
View File

0
coverage/js/nv.d3.min.js vendored Normal file → Executable file
View File

0
coverage/js/respond.min.js vendored Normal file → Executable file
View File

0
coverage/repos/MedecinRepo.php.html Normal file → Executable file
View File

0
coverage/repos/PatientRepo.php.html Normal file → Executable file
View File

0
coverage/repos/RDVRepo.php.html Normal file → Executable file
View File

0
coverage/repos/StatsRepo.php.html Normal file → Executable file
View File

0
coverage/repos/dashboard.html Normal file → Executable file
View File

0
coverage/repos/index.html Normal file → Executable file
View File

12
css/blue-green.theme.css Normal file → Executable file
View File

@ -1,21 +1,21 @@
body.theme-bluegreen #CONTAINER > article[data-title]{
#CONTAINER > article[data-title]{
border-color: #24b993;
}
body.theme-bluegreen #CONTAINER > article[data-title]:before{
#CONTAINER > article[data-title]:before{
border-color: #24b993;
background-color: #24b993;
}
body.theme-bluegreen #CONTAINER > article select.associated{
#CONTAINER > article select.associated{
border-color: #24b993;
}
body.theme-bluegreen input[type=checkbox] + label:before{
input[type=radio] + label:before{
border-color: #24b993;
}
body.theme-bluegreen input[type=checkbox] + label:before{
background-image: url(../src/svg/checkbox@bluegreen.theme.svg);
input[type=radio] + label:before{
background-image: url(../src/svg/radio@bluegreen.theme.svg);
}

View File

@ -374,6 +374,7 @@ body{
position: relative;
margin: 1em;
padding: .7em;
padding-right: 3em;
/* border */
border: 1px solid #e5e5e5;
@ -391,6 +392,10 @@ body{
-o-transition: border .2s, background-size .2s;
}
/* input[type=text] padding-right */
#CONTAINER > article input[type=text]{
}
/* @focus */
#CONTAINER > article input:focus{
border-color: #999;
@ -513,11 +518,11 @@ input[type=radio] + label:before{
height: 1.2em;
/* border */
border-radius: 3px;
border-radius: 50% / 50%;
border: 1px solid #f18624;
/* background */
background: url(../src/svg/checkbox.svg) center center no-repeat;
background: url(../src/svg/radio.svg) center center no-repeat;
background-size: 0% auto;
/* animation */

21
css/purple.theme.css Executable file
View File

@ -0,0 +1,21 @@
#CONTAINER > article[data-title]{
border-color: #8924b9;
}
#CONTAINER > article[data-title]:before{
border-color: #8924b9;
background-color: #8924b9;
}
#CONTAINER > article select.associated{
border-color: #8924b9;
}
input[type=radio] + label:before{
border-color: #8924b9;
}
input[type=radio] + label:before{
background-image: url(../src/svg/radio@purple.theme.svg);
}

View File

@ -59,9 +59,9 @@ var secuFormat = new formatChecker(null,
var now = new Date();
inCk.append( inDate, dateFormat, now.toLocaleFormat('%d/%m/%Y') );
inCk.append( inHeure, timeFormat, now.toLocaleFormat('%H:%M') );
inCk.append( inSecu, secuFormat, inSecu.placeholder );
inCk.append( inDate, dateFormat, '01/01/2015' );
inCk.append( inHeure, timeFormat, '23:59' );
inCk.append( inSecu, secuFormat, inSecu.placeholder );
inDate.addEventListener('keyup', function(e){

40
js/medecins.js Executable file
View File

@ -0,0 +1,40 @@
var crPrenom = document.getElementById('crPrenom');
var crNom = document.getElementById('crNom');
/* VERIFICATION DES SAISIES */
////////////
// PRENOM //
////////////
crPrenom.addEventListener('keyup', function(e){
if( /^([a-z]{3,45})$/i.test(crPrenom.value) ){ // si champ correct
addClass(crPrenom, 'validated');
remClass(crPrenom, 'invalid');
}else{
remClass(crPrenom, 'validated');
if( crPrenom.value.length <= 4 || crPrenom.value.length > 45 )
addClass(crPrenom, 'invalid');
else
remClass(crPrenom, 'invalid');
}
}, false);
/////////
// NOM //
/////////
crNom.addEventListener('keyup', function(e){
if( /^([a-z]{3,45})$/i.test(crNom.value) ){ // si champ correct
addClass(crNom, 'validated');
remClass(crNom, 'invalid');
}else{
remClass(crNom, 'validated');
if( crNom.value.length <= 4 || crNom.value.length > 45 )
addClass(crNom, 'invalid');
else
remClass(crNom, 'invalid');
}
}, false);

128
js/patients.js Normal file
View File

@ -0,0 +1,128 @@
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 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
/* Met à jour l'état visuel d'un <input> si sa valeur correspond aux initères
*
* @pInputElement<HTMLInputElement> l'élément <input> en question
* @pMinLength<int> la taille minimum autorisée
* @pMaxLength<int> la taille maximum autorisée
* @optAlpha<String> [OPT] TRUE si uniquement alphanumérique
*/
function checkVARCHAR(pInputElement, pMinLength, pMaxLength, optAlpha){
var optAlpha = (arguments.length > 3) ? optAlpha : false;
optAlpha = (typeof optAlpha == 'boolean') ? optAlpha : false;
var varcharRegExp;
if( optAlpha ) varcharRegExp = new RegExp('^([a-z]{'+pMinLength+','+pMaxLength+'})$', 'i'); // only alpha characters
else varcharRegExp = new RegExp('^([\\w -]{'+ pMinLength+','+pMaxLength+'})$', 'i'); // any word character
if( pInputElement.value.match(varcharRegExp) != null ){ // si champ correct
addClass(pInputElement, 'validated');
remClass(pInputElement, 'invalid');
}else{
remClass(pInputElement, 'validated');
addClass(pInputElement, 'invalid');
}
}
//////////////////////////////
// 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);

0
managers/Response.class.php Normal file → Executable file
View File

0
src/svg/medecin.svg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

50
src/svg/radio.svg Executable file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 24 24"
height="17.991999"
id="Layer_1"
version="1.1"
viewBox="0 0 23.996751 17.991999"
width="23.99675"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="radio.svg"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview5"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="9.8333333"
inkscape:cx="12"
inkscape:cy="8.9817492"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><path
clip-rule="evenodd"
d="m 21.652,0.22125 c -0.293,-0.295 -0.77,-0.295 -1.061,0 l -11.1810002,11.129 c -0.293,0.297 -0.771,0.297 -1.062,0 L 3.449,6.36125 c -0.145,-0.148 -0.335,-0.221 -0.526,-0.222 -0.193,-10e-4 -0.389,0.072 -0.536,0.222 l -2.165,1.946 C 0.078,8.45525 0,8.64025 0,8.83325 c 0,0.194 0.078,0.397 0.223,0.544 l 4.94,5.184 c 0.292,0.296 0.771,0.776 1.0619998,1.07 l 2.124,2.141 c 0.292,0.293 0.769,0.293 1.062,0 L 23.777,3.43225 c 0.293,-0.294 0.293,-0.777 0,-1.071 l -2.125,-2.14 z"
id="path3"
style="fill:#f18624;fill-opacity:1;fill-rule:evenodd"
inkscape:connector-curvature="0" /></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -15,10 +15,10 @@
width="23.99675"
xml:space="preserve"
inkscape:version="0.48.4 r9939"
sodipodi:docname="1449698026_checkmark-24.svg"><metadata
sodipodi:docname="radio@purple.theme.svg"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
@ -37,14 +37,14 @@
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="9.8333333"
inkscape:cx="12"
inkscape:cx="-7.7288136"
inkscape:cy="8.98175"
inkscape:window-x="0"
inkscape:window-x="10"
inkscape:window-y="24"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><path
clip-rule="evenodd"
d="m 21.652,0.22125 c -0.293,-0.295 -0.77,-0.295 -1.061,0 L 9.41,11.35025 c -0.293,0.297 -0.771,0.297 -1.062,0 l -4.899,-4.989 c -0.145,-0.148 -0.335,-0.221 -0.526,-0.222 -0.193,-10e-4 -0.389,0.072 -0.536,0.222 l -2.165,1.946 C 0.078,8.45525 0,8.64025 0,8.83325 c 0,0.194 0.078,0.397 0.223,0.544 l 4.94,5.184 c 0.292,0.296 0.771,0.776 1.062,1.07 l 2.124,2.141 c 0.292,0.293 0.769,0.293 1.062,0 l 14.366,-14.34 c 0.293,-0.294 0.293,-0.777 0,-1.071 l -2.125,-2.14 z"
id="path3"
style="fill:#f18624;fill-opacity:1;fill-rule:evenodd"
style="fill:#8924b9;fill-opacity:1;fill-rule:evenodd"
inkscape:connector-curvature="0" /></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
test.php Normal file → Executable file
View File

0
test/MedecinRepoTest.php Normal file → Executable file
View File

0
test/PatientRepoTest.php Normal file → Executable file
View File

0
test/RDVRepoTest.php Normal file → Executable file
View File

0
test/StaticRepoTest.php Normal file → Executable file
View File

0
test/StatsRepoTest.php Normal file → Executable file
View File