add.ctp 13.4 KB


<div class="suivis form">


		<?php
		echo '<h3 id="t_informations_metrologie" style="cursor: pointer;">';
		echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_metrologie"></i>';
		echo '<span style="text-decoration: underline;">Informations Métrologique</span>';
		echo '</h3>';
		echo '<div id="informations_metro" style="margin-bottom: 20px;">';
		echo '<table>';
		echo '<tr><th style="width: 250px;"></th><th></th></tr>';

		echo '<tr><td><strong>' . __ ( 'Unite' ) . ' </strong></td><td>'.  h($unite) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Plage de mesure (debut)' ) . ' </strong></td><td>' . h ( $suivi->plage_debut ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Plage de mesure (fin)' ) . ' </strong></td><td>' . h ( $suivi->plage_fin ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Resolution' ) . ' </strong></td><td>' . h ( $suivi->resolution ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Tolerance' ) . ' </strong></td><td>' . h ( $suivi->tolerance ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Sensibilité' ) . ' </strong></td><td>' . h ( $suivi->sensibilite ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Justesse' ) . ' </strong></td><td>' . h ( $suivi->justesse ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Fidelite' ) . ' </strong></td><td>' . h ( $suivi->fidelite ) . '</td></tr>';
		echo '<tr><td><strong>' . __ ( 'Valeur de référence' ) . ' </strong></td><td>' . h ( $suivi->valeurRef) . '</td></tr>';
		
		if( $suivi->typemesure == "1"){
		echo '<tr><td><strong>' . __ ( 'Type de mesure' ) . ' </strong></td><td>' . h ("Direct") . '</td></tr>';
		}else{
		echo '<tr><td><strong>' . __ ( 'Type de mesure' ) . ' </strong></td><td>' . h ("Indirect") . '</td></tr>';
		}
		echo '<tr><td><strong>' . __ ( 'EMT standart' ) . ' </strong></td><td>' . h ( $suivi->emtstandart) . '</td></tr>';
		
		echo '</table>';
		echo '</div>';
	
	
		?>




    <?= $this->Form->create($fichemetrologique) ?>
    <fieldset>
        <h2><i class="icon-plus"></i> Ajouter une fiche métrologique</h2>
		<?php
		echo $this->Form->hidden ('suivi_id', [
				'default' => $this->request->getAttribute('params')['pass'][0]
        ]);
		 echo $this->Form->hidden('datefiche', [
			'type' => 'text',
			'label' => 'Date intervention',
			'placeholder' => 'Cliquez pour selectionner une date',
			'class' => 'datepicker',
			'default' => date('d-m-Y')
        ]);
		echo $this->Form->input ('resolution', [
        		'label' => 'resolution',
        		'options' => ['Numérique','A cadran'],
				'default' => 0,
				'onfocusout' => 'calcul()'
        ]);
        echo $this->Form->input ('emtpersonnel', [
				'type'=> 'number',
				'step' => 'any',
        		'label' => 'emt personnel',
				'onfocusout' => 'calcul()'
        ]);
		echo $this->Form->input ('conditionEnv', [
				'type'=> 'number',
				'step' => 'any',
        		'label' => 'condition environnement (°C)',
				'onfocusout' => 'calcul()',
        ]);
		echo $this->Form->input ('etatmateriel', [
        		'label' => 'Etat du matériel',
				'options' => ['Neuf','RAS','Dégradé'],
				'defaults'=>['RAS']
        ]);
	
		echo $this->Form->input ('mesurande', [
				'type'=> 'number',
				'step' => 'any',
        		'label' => 'Mesurande en '.$unite.'',
				'default' =>0,
				'onfocusout' => 'calcul()'
        ]);
		$max=10;
		echo $this->Form->input ('nbMesure', [
				'type'=> 'number',
				'step' => 'any',
        		'label' => 'Nombre de mesure',
				'default' => $max,
				'empty'=> $max
        ]);
		echo '<input type=\'hidden\' id=\'unite\' value='.$unite.'>';
		echo '<div id="mesure">'; 
		echo '</div>';
		echo '<div id="pasnombre"></div>';
		echo '<div id="moyenne">';
		echo '</div>';
		echo '<div id="ecarttype">';
		echo '</div>';
		echo '<div id="graphique">';
		echo '</div>';
		echo '<div id="resultat">';
		echo '</div>';
		echo '<div id="commentaire" >';
		echo '</div>';
		
		
       ?>
    </fieldset>
    <?php
	echo '<div id="enregist" style="display:none">';
	echo $this->Form->submit(__('Enregistrer')) ;
	echo '</div>';
	?>
    <?= $this->Form->end() ?>
</div>

<div class="actions">
	<?php 
		echo $this->element('menu');
		echo $this->element('menu_form', [ 'pluralHumanName' => 'Suivis' ]);
	?>
</div>

	<script type="text/javascript">
		
	$(document).ready(function () {
		mesure();
			});

		
		$(document).ready(function () {
		$("#nbmesure").bind("focusout", function (event) {
				mesure();
				});
			});
		
			
			
		function mesure(){
			var nbmes = $("#nbmesure").val();
			var mesurande= $("#mesurande").val();
			
			if(nbmes >=10 && nbmes<=200){
			$("#mesure").show();
			document.getElementById("mesure").innerHTML ="<table><tr><td> Le mesurage xi </td><td>L\'erreur de mesure</td></tr></table>";
			for(var i=0;i<nbmes;i++){
			document.getElementById("mesure").innerHTML +="<table><tr><td><input type=\"control\" name=\"mesures["+i+"][valeur]\" onfocusout=\"calcul()\" class=\"valmesure\" required></td><td><input type=\"control\" name=\"mesures["+i+"][erreur]\" class=\"valerreur\" readonly required></td></tr></table>";
			}
			
			}else{
			$("#nbmesure").val('10');
			}
				
		}
		
		
		function calcul(){
			var nbmes = $("#nbmesure").val();
			var mesures = $(".valmesure");
			document.getElementById("pasnombre").innerHTML ="";
			nombre=true;
			for(var i=0;i<mesures.length;i++){
			if(isNaN(mesures[i].value) || mesures[i].value.length == 0){
			nombre=false;
			}
			}
			if(nbmes >=10 && nbmes<=200 && nombre){
				var somme=0;
				
				var mesurande = $("#mesurande").val();
				var mesuresecty = new Array();
				var sommeerreur=0;
				var mesureserreur = $(".valerreur");
				for(var i=0; i<mesures.length; i++){
				somme = somme + parseFloat(mesures[i].value);
				var erreur = parseFloat(mesurande) - parseFloat(mesures[i].value);
				mesureserreur[i].value = erreur.toPrecision(6);
				sommeerreur= sommeerreur+ erreur;
				}
				var moyenne=somme/parseFloat(nbmes);
				var sommeecty =0.0;
				for(var i=0; i<mesures.length; i++){
				
				mesuresecty[i] = Math.pow(parseFloat(mesures[i].value) - parseFloat(moyenne), 2);
				sommeecty += mesuresecty[i];
				}
				
				var ecarttype = new Number((sommeecty/Math.pow(nbmes-1,0.5)).toPrecision(6));
				var ecarttypescientifique =ecarttype.toExponential(5);
				var unite =$("#unite").val();
				var symbole = "<?php echo $symbole ?>";
				
				var ua= new Number((ecarttype/Math.sqrt(nbmes)).toPrecision(6));
				var uascientifique = ua.toExponential(5);
				
				var resolution= $("#resolution").val();
				
				if(resolution == 0){
				var ub = new Number((<?php echo $resol ?>/ (2*Math.sqrt(3))).toPrecision(6));
				}else{
				var ub = new Number((<?php echo $resol ?>/ (2*Math.sqrt(6))).toPrecision(6));
				}
				var ubscientifique = ub.toExponential(5)
				
				var uf = new Number ((ecarttype/nbmes).toPrecision(6));
				var ufscientifique = uf.toExponential(5);
				var justesse = (moyenne-mesurande).toPrecision(6);
				var uc = new Number ((Math.sqrt((Math.pow(ua,2))+(Math.pow(ub,2))+(Math.pow(uf,2))+(Math.pow(justesse,2)))).toPrecision(6));
				var ucscientifique = uc.toExponential(5);
				var u = new Number(((Math.sqrt((Math.pow(ua,2))+(Math.pow(ub,2))+(Math.pow(uf,2))+(Math.pow(justesse,2))))*2).toPrecision(6));
				var Uscientifique= u.toExponential(5);
				var incertitude = new Number((uc/moyenne).toPrecision(6));
				var incertitudescientifique = incertitude.toExponential(5);
				var correction = new Number((sommeerreur/nbmes).toPrecision(6));
				var correctionscientifique = correction.toExponential(5);
				var conformeEMTstandart =" NON CONFORME ";
				var conformeEMTperso=" NON CONFORME ";	
				var emt = <?php echo $suivi->emtstandart ?>;
				var emtperso = $("#emtpersonnel");
				var valeurRef= <?php echo $suivi->valeurRef ?>;
				if(moyenne+uc <= emt+valeurRef && moyenne-uc >= valeurRef-emt && moyenne-uc <= valeurRef+emt  && moyenne+uc >= valeurRef - emt && moyenne <= emt && moyenne >= (-emt)){
				conformeEMTstandart =" totalement CONFORME ";
				}else if((moyenne+uc > valeurRef+emt && moyenne-uc > valeurRef+emt && moyenne < (-emt)) || (moyenne-uc < valeurRef-emt  && moyenne+uc < valeurRef-emt && moyenne > emt )){
				conformeEMTstandart =" totalement NON CONFORME ";
				}else if(( moyenne <= emt && moyenne-uc <= emt && moyenne+uc >= emt)|| (moyenne > (-emt) && moyenne+uc > (-emt) && moyenne-uc < (-emt))){
				conformeEMTstandart =" CONFORME avec risque de non-conformité ";
				}else if(( moyenne > emt && moyenne-uc <= emt && moyenne+uc >= emt) || (moyenne <(-emt) && moyenne+uc > (-emt) && moyenne-uc < (-emt))){
				conformeEMTstandart =" NON CONFORME avec risque de conformité ";
				}
				if(moyenne+uc <= emtperso+valeurRef && moyenne-uc >= valeurRef-emtperso && moyenne-uc <= valeurRef+emtperso  && moyenne+uc >= valeurRef - emtperso && moyenne <= emtperso && moyenne >= (-emtperso)){
				conformeEMTperso =" totalement CONFORME ";
				}else if((moyenne+uc > valeurRef+emtperso && moyenne-uc > valeurRef+emtperso && moyenne < (-emtperso)) || (moyenne-uc < valeurRef-emtperso  && moyenne+uc < valeurRef-emtperso && moyenne > emtperso )){
				conformeEMTperso =" totalement NON CONFORME ";
				}else if(( moyenne <= emtperso && moyenne-uc <= emtperso && moyenne+uc >= emtperso)|| (moyenne > (-emtperso) && moyenne+uc > (-emtperso) && moyenne-uc < (-emtperso))){
				conformeEMTperso =" CONFORME avec risque de non-conformité ";
				}else if(( moyenne > emtperso && moyenne-uc <= emtperso && moyenne+uc >= emtperso) || (moyenne <(-emtperso) && moyenne+uc > (-emtperso) && moyenne-uc < (-emtperso))){
				conformeEMTperso =" NON CONFORME avec risque de conformité ";
				}									
				document.getElementById("moyenne").innerHTML ="<div class=\"input number\"><label for=\"moyenne\">Moyenne</label><input type=\"text\" name=\"moyenne\" id=\"moyenne\" value=\""+moyenne+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("ecarttype").innerHTML = "<div class=\"input number\"><label for=\"ecarttype\">L'ecart-type expérimental </label><input type=\"text\" name=\"ecarttype\" id=\"ecarttype\" value=\""+ecarttypescientifique+"\" readonly> "+symbole+"</div>";
				
				
				document.getElementById("resultat").innerHTML = "<div class=\"input number\"><label for=\"ua\">ua  </label><input type=\"text\" name=\"ua\" id=\"ua\" value=\""+uascientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"ub\">ub  </label><input type=\"text\" name=\"ub\" id=\"ub\" value=\""+ubscientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"uf\">uf  </label><input type=\"text\" name=\"uf\" id=\"uf\" value=\""+ufscientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"uc\">uc  </label><input type=\"text\" name=\"uc\" id=\"uc\" value=\""+ucscientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"u\">U  </label><input type=\"text\" name=\"u\" id=\"u\" value=\""+Uscientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"incertitude\">L'incertitude-type relative  </label><input type=\"text\" name=\"incertitude\" id=\"incertitude\" value=\""+incertitudescientifique+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"justesse\">justesse </label><input type=\"text\" name=\"justesse\" id=\"justesse\" value=\""+justesse+"\" readonly> "+symbole+"</div>";
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"correction\">correction </label><input type=\"text\" name=\"correction\" id=\"correction\" value=\""+correctionscientifique+"\" readonly> "+symbole+"</div>";
				
				
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"conformeEMTstandart\">Le materiel verifié est </label><input type=\"text\" name=\"conformeEMTstandart\" id=\"conformeemtstandart\" value=\""+conformeEMTstandart+"\" readonly> à l'EMT standart</div>";
				document.getElementById("resultat").innerHTML += "<div class=\"input number\"><label for=\"conformeEMTperso\">Le materiel verifié est </label><input type=\"text\" name=\"conformeEMTperso\" id=\"conformeemtperso\" value=\""+conformeEMTperso+"\" readonly> à l'EMT personnel</div>";
				
				
				
				document.getElementById("resultat").innerHTML += "<div class=\"input text\"><label for=\"resultatfinal\">résultat de mesure </label><input type=\"text\" name=\"resultatfinal\" id=\"resultatfinal\" value=\"X=("+moyenne+" ± " + u +")\" readonly> "+symbole+"</div>";
				document.getElementById("resultat").innerHTML += "<p>où le 1er terme est la meilleure estimation de "+symbole+" et le 2ème terme son incertitude élargie pour un intervalle de confiance de 95%. </p>";
				
				document.getElementById("commentaire").innerHTML = "<div class=\"input textarea\"><label for=\"observation\">Observation</label><textarea name=\"observation\" maxlength=\"200\" id=\"observation\" rows=\"5\"></textarea></div>";
				
				$("#enregist").show();
			}else{
			
			if(!nombre){
				for(var i=0;i<mesures.length;i++){
					if(isNaN(mesures[i].value)){
						document.getElementById("pasnombre").innerHTML +="<p> La mesure "+(i+1)+" n'est pas un nombre</p>";
					}
				}
			}
			$("#enregist").hide();
		}
	}
		</script>