54 abstract protected function calculer();
62 if(self::DBG) spip_log($this->saisies,
'hydraulic',_LOG_DEBUG);
63 if(self::DBG) spip_log($this->champs_fvc,
'hydraulic',_LOG_DEBUG);
64 include_spip(
'hyd_inc/log.class');
65 $this->oLog =
new cLog();
74 foreach($this->saisies as $fs) {
75 foreach($fs[1] as $cle=>$val) {
90 foreach($this->saisies as $fs) {
91 foreach($fs[1] as $cle=>$val) {
111 $choix_champs = array();
112 foreach($tChCalc as $valeur){
113 $choix_champs[$valeur] = _request(
'choix_champs_'.$valeur);
116 foreach($choix_champs as $cle=>$valeur){
118 if($valeur !=
'fix'){
119 foreach($tChOblig as $cle1=>$valeur1){
120 if($cle == $valeur1){
122 $tChOblig = array_values($tChOblig);
127 if($valeur ==
'var'){
128 $tChOblig[] =
'val_min_'.$cle;
129 $tChOblig[] =
'val_max_'.$cle;
130 $tChOblig[] =
'pas_var_'.$cle;
151 foreach($this->saisies as $fs) {
152 foreach($fs[1] as $cle=>$val) {
153 $request = _request($cle);
154 if(self::DBG_CHARGER) spip_log(
"cle=$cle request=$request",
'hydraulic',_LOG_DEBUG);
157 $valeurs[$cle] = $request;
160 $valeurs[$cle] = $val[1];
168 foreach($this->champs_fvc as $cle){
169 $valeurs[
'choix_champs_'.$cle] =
'fix';
170 $valeurs[
'val_min_'.$cle] = $valeurs[$cle]/2;
171 $valeurs[
'val_max_'.$cle] = $valeurs[$cle]*2;
172 $valeurs[
'pas_var_'.$cle] = 1.5*$valeurs[$cle]/
$this->nbPas;
173 if(_request(
'choix_champs_'.$cle)==
'cal') {
177 $valeurs[
'choix_champs_'.$sVarCal] =
'cal';
205 if(self::DBG) spip_log($tChCalc,
'hydraulic',_LOG_DEBUG);
206 $choix_radio = array();
209 $data[
'iPrec']=(int)-log10(_request(
'rPrec'));
212 foreach($tChOblig as $champ) {
213 if(self::DBG) spip_log( $champ.
'=>'._request($champ),
'hydraulic',_LOG_DEBUG);
214 if (_request($champ)!==
false){
215 $data[$champ] = _request($champ);
217 $data[$champ] = 999.;
219 $data[$champ] = str_replace(
',',
'.',
$data[$champ]);
222 $data[
'sLang'] = $spip_lang;
225 foreach($tChCalc as $cle){
226 $choix_radio[$cle] = _request(
'choix_champs_'.$cle);
228 if(self::DBG) spip_log($choix_radio,
'hydraulic',_LOG_DEBUG);
235 foreach($choix_radio as $sVar=>$valeur){
237 if($valeur ==
'cal'){
238 $data[
'ValCal'] = $sVar;
241 else if($valeur ==
'var'){
243 $data[
'min'] = _request(
'val_min_'.$sVar);
244 $data[
'max'] = _request(
'val_max_'.$sVar);
245 $data[
'pas'] = _request(
'pas_var_'.$sVar);
247 $data[
'ValVar'] = $sVar;
255 if(self::DBG) spip_log(
$data,
'hydraulic',_LOG_DEBUG);
268 $sValCal = (isset($this->data[
'ValCal']))?$this->data[
'ValCal']:
false;
270 foreach($this->saisies as $fs) {
271 foreach($fs[1] as $cle=>$val) {
272 if($cle != $sValCal) {
273 if(isset($this->data[$cle])) {
274 $tData[$cle] = $this->data[$cle];
276 $tCtrl[$cle] = $val[2];
282 foreach($tCtrl as $Cle=>$Ctrl) {
283 if(isset($tData[$Cle])) {
284 $tData[$Cle] = trim(str_replace(
',',
'.',$tData[$Cle]));
286 if(strpos($Ctrl,
'o')!==
false & (!isset($tData[$Cle]) | $tData[$Cle]==
"")) {
288 $erreurs[$Cle] = _T(
'hydraulic:erreur_obligatoire');
289 } elseif(strpos($Ctrl,
's')===
false & !preg_match(
'#^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$#', $tData[$Cle]) & $tData[$Cle]!=
"") {
291 $erreurs[$Cle] = _T(
'hydraulic:erreur_non_numerique');
294 $tData[$Cle] = floatval($tData[$Cle]);
295 if(strpos($Ctrl,
'p')!==
false & strpos($Ctrl,
'n')!==
false & $tData[$Cle] < 0) {
297 $erreurs[$Cle] = _T(
'hydraulic:erreur_val_positive_nulle');
298 } elseif(strpos($Ctrl,
'p')!==
false & strpos($Ctrl,
'n')===
false & $tData[$Cle] <= 0) {
300 $erreurs[$Cle] = _T(
'hydraulic:erreur_val_positive');
306 if (count($erreurs)) {
307 $erreurs[
'message_erreur'] = _T(
'hydraulic:saisie_erreur');
309 if(self::DBG) spip_log($erreurs,
'hydraulic',_LOG_DEBUG);
318 spip_log(
'toto',
'hydraulic',_LOG_DEBUG);
319 include_spip(
'hyd_inc/cache');
320 if(self::DBG) spip_log(
'toto',
'hydraulic',_LOG_DEBUG);
322 $CacheFileName = md5(serialize($this->data));
323 if(!$this->bNoCache && is_file(HYD_CACHE_DIRECTORY.$CacheFileName)) {
330 if(self::DBG) spip_log($this->result,
'hydraulic',_LOG_DEBUG);
342 foreach($this->saisies as $fs) {
343 foreach($fs[1] as $cle=>$val) {
345 $lib[$cle] = _T(
'hydraulic:'.$val[0]);
360 $tAbs = &$this->result[
'abs'];
361 $tRes = &$this->result[
'res'];
362 if(isset($this->result[
'flag'])) {
363 $tFlag = &$this->result[
'flag'];
369 $echo = $this->oLog->Result();
371 if(!isset(
$data[
'ValVar'])) {
376 foreach(
$data as $k=>$v) {
377 if(in_array($k,$this->champs_fvc) && !in_array($k,array(
$data[
'ValCal'],
$data[
'ValVar']))) {
382 if(!
$data[
'ValVar']) {
383 $tCnt[]=array(
'<b>'.$tLib[
$data[
'ValCal']].
'</b>',
'<b>'.
format_nombre($tRes[0], $data[
'iPrec']).
'</b>');
385 if(self::DBG) spip_log($tFlag,
'hydraulic.'._LOG_DEBUG);
386 $tCnt[]= array(_T(
'hydraulic:type_ecoulement'),_T(
'hydraulic:flag_'.$tFlag[0]));
389 $tableau_fixe = $this->
get_result_table($tCnt,array(_T(
'hydraulic:param_fixes'),_T(
'hydraulic:valeurs')));
392 if(
$data[
'ValVar']) {
394 foreach($tAbs as $k=>$Abs){
397 $tEnt = array($tLib[
$data[
'ValVar']],$tLib[$data[
'ValCal']]);
401 if(is_infinite($tRes[0])){
405 $tRes = array_values($tRes);
409 $tAbs = array_values($tAbs);
414 $echo .= $this->
getGraph($tLib[$data[
'ValVar']], $tLib[$data[
'ValCal']], $tAbs, $tRes);
416 $echo .=
'<div class="hyd_table">'.$tableau_fixe.
'</div>';
417 if(isset($tableau_variable)) {
418 $echo .=
'<div class="hyd_table">'.$tableau_variable.
'</div>';
431 protected function getGraph($sLibVar, $LibCal, $tAbs, $tRes) {
432 include_spip(
'hyd_inc/graph.class');
433 $oGraph =
new cGraph(
'',$sLibVar,
'');
440 'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
443 return $oGraph->GetGraph(
'graphique',400,600).
"\n";
454 $echo=
'<table class="spip">';
458 <tr class="row_first">';
459 foreach($tEntetes as $s){
460 $echo.=
'<th scope="col" rowspan="2">'.$s.
'</th>';
467 foreach($tContent as $Ligne){
469 $echo.=
'<tr class="align_right ';
470 $echo.=($i%2==0)?
'row_even':
'row_odd';
472 foreach($Ligne as $Cellule){
473 $echo.=
'<td>'.$Cellule.
'</td>';
Classe pour l'affichage des graphiques.
format_nombre($nombre, $dec)