Ignore:
Timestamp:
Mar 12, 2012, 8:54:59 AM (8 years ago)
Author:
m.dulondel@…
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/hydraulic/branches/v0.3/formulaires/lechapt_calmon.php

    r59103 r59231  
    3838 *
    3939 */
    40 
     40 
     41function mes_champs_coeff_materiau() {
     42        $mes_champs_coeff = array('L','M','N','Q','D','J','Lg');
     43        return $mes_champs_coeff;
     44}
     45
     46function mes_champs_sans_coeff_materiau(){
     47        $mes_champs_sans_coeff = array(
     48                        'Q' => _T('hydraulic:param_Q'),
     49                        'D' => _T('hydraulic:param_D'),
     50                        'J' => _T('hydraulic:param_J'),
     51                        'Lg' => _T('hydraulic:param_Lg')
     52                );
     53       
     54        return $mes_champs_sans_coeff;
     55}
     56
     57function id_decoupe($champs){
     58        $decoup = explode('_', $champs, 3);
     59        return $decoup[count($decoup)-1];
     60}
     61
     62/* Tableau des données pour chaque type de tuyau. Ces valeurs sont associées
     63 * aux numéros des options du select (voir page lechapt_calmon.php)
     64 */
    4165function mes_saisies_materiau() {
    42 
    43        
    4466        $type_materiaux = array(
    4567       
     
    5072                                ),
    5173                               
    52                                
    5374                                '2'          => array(
    5475                                                                           'L' =>1.601,
     
    5778                                ),
    5879                               
    59                                
    6080                                '3'          => array(
    6181                                                                           'L' =>1.40,
     
    6484                                ),
    6585                               
    66                                
    6786                                '4'          => array(
    6887                                                                           'L' =>1.16,
     
    7190                                ),
    7291                               
    73                                
    7492                                '5'          => array(
    7593                                                                           'L' =>1.1,
     
    7896                                ),
    7997                               
    80                                
    8198                                '6'          => array(
    8299                                                                           'L' =>1.049,
     
    85102                                ),
    86103                               
    87                                
    88104                                '7'          => array(
    89105                                                                           'L' =>1.01,
     
    92108                                ),
    93109                               
    94                                
    95110                                '8'          => array(
    96111                                                                           'L' =>0.916,
     
    99114                                ),
    100115                               
    101                                
    102116                                '9'          => array(
    103117                                                                           'L' =>0.971,
     
    105119                                                                           'N' =>4.81                   
    106120                                ),
    107                
    108121        );
    109122               
     
    113126
    114127function champs_obligatoires_lcalmon(){
    115         $tChOblig = array('L', 'M', 'N', 'Q', 'D', 'J');
    116         $choix_champs = array(
    117                 'Q' => _request('choix_champs_Q'),
    118                 'D' => _request('choix_champs_D'),
    119                 'J' => _request('choix_champs_J')
    120         );
     128        /*
     129         * Ce tableau contient la liste de tous les champs du formulaire.
     130         * La suite de cette fonction se chargera de supprimer les valeurs non obligatoires.
     131         */
     132         
     133        $tChOblig = mes_champs_coeff_materiau();
     134        $tChUtil = mes_champs_sans_coeff_materiau();
     135       
     136        $choix_champs = array();
     137        foreach($tChUtil as $cle=>$valeur){
     138                $choix_champs[$cle] = _request('choix_champs_'.$cle);
     139        }
    121140
    122141        foreach($choix_champs as $cle=>$valeur){
     142                // Si le choix du select est de calculer une valeur...
    123143                if(substr($valeur, 0,3) != 'val'){
    124144                        foreach($tChOblig as $cle1=>$valeur1){
    125145                                if($cle == $valeur1){
     146                                        // ... alors on peut supprimer de notre tableau le champs calculé (il n'est pas obligatoire car grisé)
    126147                                        unset($tChOblig[$cle1]);
     148                                        // Permet de tasser le tableau
    127149                                        $tChOblig = array_values($tChOblig);
    128150                                }
    129151                        }
    130152                }
    131                
     153                // Si le choix du select est de faire varier une valeur alors on ajoute les 3 champs nécessaires
    132154                if(substr($valeur, 0, 3) == 'var'){
    133155                        $tChOblig[] = 'val_min_'.$cle;
     
    136158                }       
    137159        }
     160        $tChOblig[] = 'prec_lc';
     161       
    138162        return $tChOblig;
    139163}
    140164
    141165function formulaires_lechapt_calmon_charger_dist() {
    142     // On charge les saisies et les champs qui nécessitent un accès par les fonctions
    143         $tSaisie_materiau = mes_saisies_materiau();
    144166        $valeurs = array(
    145                 'mes_saisies_materiaux' => $tSaisie_materiau,
     167                'mes_saisies_materiaux' => mes_saisies_materiau(),
     168                'tableau_caract' => mes_champs_sans_coeff_materiau(),
    146169                'typeMateriau' => 1,
    147                 'choix_champs_Q' => 'calcul_val_Q',
    148                 'choix_champs_D' => 'val_fixe_D',
    149                 'choix_champs_J' => 'val_fixe_J',
     170                'prec_lc' => 0.001,
    150171                'L' => 1.863,
    151172                'M' => 2,
    152173                'N' => 5.33,
    153                 'Q' => 1,
    154                 'val_min_Q' => 1,
    155                 'val_max_Q' => 2,
    156                 'pas_var_Q' => 3,
    157                 'val_min_D' => 1,
    158                 'val_max_D' => 2,
    159                 'pas_var_D' => 3,       
    160                 'val_min_J' => 1,
    161                 'val_max_J' => 2,
    162                 'pas_var_J' => 3,
    163                 'D' => 2,
    164                 'J' => 3       
     174                'Q' => 3,
     175                'D' => 1.2,
     176                'J' => 0.634482025,
     177                'Lg'=> 100
    165178        );
    166179 
     180        $mes_champs = mes_champs_sans_coeff_materiau();
     181        foreach($mes_champs as $cle=>$valeur){
     182                if($cle == 'Q'){
     183                        $valeurs['choix_champs_'.$cle] = 'calcul_val_'.$cle;
     184                }
     185                else{
     186                        $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
     187                }
     188               
     189                $valeurs['val_min_'.$cle] = 1;
     190                $valeurs['val_max_'.$cle] = 2;
     191                $valeurs['pas_var_'.$cle] = 0.1;
     192        }
     193       
    167194    return $valeurs;
    168195}
     
    172199    $datas = array();
    173200    $tChOblig= champs_obligatoires_lcalmon();
    174     // verifier que les champs obligatoires sont bien là :
     201    // rifier que les champs obligatoires sont bien là :
    175202    foreach($tChOblig as $obligatoire) {
    176203        if (!_request($obligatoire)) {
    177             $erreurs[$obligatoire] = _T('hydraulic:champ_obligatoire');}
     204                        $erreurs[$obligatoire] = _T('hydraulic:champ_obligatoire');
     205        }
    178206        else {
    179207            $datas[$obligatoire] = _request($obligatoire);
     
    181209    }
    182210
     211        // Gestion des valeurs négatives
    183212    foreach($datas as $champ=>$data) {
    184213        if ($data < 0) $erreurs[$champ] = _T('hydraulic:valeur_positive');
    185214    }
    186 
     215   
    187216    if (count($erreurs)) {
    188217        $erreurs['message_erreur'] = _T('hydraulic:saisie_erreur');
    189218    }
     219
    190220    return $erreurs;
    191221}
    192222
    193223function formulaires_lechapt_calmon_traiter_dist(){
    194        
    195         $datas = champs_obligatoires_lcalmon();
    196         $datas[] = _request('choix_champs_Q');
    197         $datas[] = _request('choix_champs_D');
    198         $datas[] = _request('choix_champs_J');
    199         $CalVal = '';
    200        
    201         foreach($datas as $i){
    202                 if(substr($i, 0, 3) == 'cal'){
    203                         $CalVal = substr($i, -1);
    204                 }
    205         }
    206        
    207         switch($CalVal){
     224
     225        include_spip('hyd_inc/cache');
     226    include_spip('hyd_inc/log.class');
     227    include_spip('hyd_inc/graph.class');
     228       
     229         /***************************************************************************
     230    *                        Calcul de Lechapt et calmon
     231    ****************************************************************************/
     232    $echo = '';
     233        $ValCal = '';
     234        $result = array();
     235        $choix_radio = array();
     236        $tabLibelle = array();
     237        $champs_materiau_coeff = mes_champs_coeff_materiau();
     238        $champs_materiau_sans_coeff = mes_champs_sans_coeff_materiau();
     239    $iPrec=(int)-log10(_request('prec_lc'));
     240
     241
     242        foreach($champs_materiau_coeff as $champs){
     243                ${$champs} = _request($champs);
     244        }
     245       
     246        foreach($champs_materiau_sans_coeff as $cle=>$valeur){
     247                $choix_radio[$cle] = _request('choix_champs_'.$cle);
     248                $tabLibelle[$cle] = _T('hydraulic:param_'.$cle);
     249        }
     250
     251        $min = 0;
     252        $max = 0;
     253        $pas = 1;
     254        $i = 0;
     255       
     256               
     257        foreach($choix_radio as $ind){
     258                if(substr($ind, 0, 3) == 'cal'){
     259                        $ValCal = id_decoupe($ind);
     260                }
     261               
     262                else if(substr($ind, 0, 3) == 'var'){
     263                        $min = _request('val_min_'.id_decoupe($ind));
     264                        $max = _request('val_max_'.id_decoupe($ind));
     265                        $pas = _request('pas_var_'.id_decoupe($ind));
     266                        ${id_decoupe($ind)} = &$i;
     267                }
     268        }
     269       
     270        switch($ValCal){
    208271                case 'Q':
     272                        if($L != 0 && $Lg != 0 && $M != 0){
     273                                for($i = $min; $i <= $max; $i+= $pas){
     274                                        $result[] = pow(((($J*pow($D, $N))/$L)*(1000/$Lg)), 1/$M);
     275                                }
     276                        }
     277                        else{
     278                                $result[] = 0;
     279                        }
    209280                       
    210281                break;
    211282               
    212         }
    213        
    214         print_r($datas);
     283                case 'D':
     284                        if($J != 0 && $N != 0){
     285                                for($i = $min; $i <= $max; $i+= $pas){
     286                                        $result[] = pow(((($L*pow($Q, $M))/$J)*($Lg/1000)), 1/$N);
     287                                }
     288                        }
     289                        else{
     290                                $result[] = 0;
     291                        }
     292                       
     293                break;
     294               
     295                case 'J':
     296                        if($D != 0){
     297                                for($i = $min; $i <= $max; $i+= $pas){
     298                                        $result[] = (($L*pow($Q, $M))/pow($D, $N))*($Lg/1000) ;
     299                                }
     300                        }
     301                        else{
     302                                $result[] = 0;
     303                        }
     304                       
     305                break;
     306               
     307                case 'Lg':
     308                        if($L*pow($Q,$M) != 0){
     309                                for($i = $min; $i <= $max; $i+= $pas){
     310                                        $result[] = (($J*pow($D, $N))/($L*pow($Q,$M)))*1000 ;
     311                                }
     312                        }
     313                        else{
     314                                $result[] = 0;
     315                        }
     316                       
     317                break;
     318        }
     319
     320        /***************************************************************************
     321    *                   Affichage du tableau de données
     322    ****************************************************************************/
     323        $cptValVar = 1;
     324        $i = 0;
     325        $tabClass = array();
     326       
     327        foreach($tabLibelle as $cle=>$valeur){
     328                if(substr(_request('choix_champs_'.$cle), 0, 3) == 'var'){
     329                        $cptValVar++;
     330                }
     331        }
     332       
     333        foreach($tabLibelle as $cle=>$valeur){
     334                if(substr(_request('choix_champs_'.$cle), 0, 3) == 'cal'){
     335                        $tabClass['cal'] = $tabLibelle[$cle];
     336                }
     337                else if(substr(_request('choix_champs_'.$cle), 0, 3) == 'var'){
     338                        $tabClass['var'] = $tabLibelle[$cle];
     339                }
     340                else if(substr(_request('choix_champs_'.$cle), 0, 3) == 'var' || $cptValVar == 1){
     341                        $tabClass['var'] = $tabLibelle[$cle];
     342                        $cptValVar--;
     343                }
     344                else if(substr(_request('choix_champs_'.$cle), 0, 3) == 'val'){
     345                        $tabClass['val'.$i] = $tabLibelle[$cle];
     346                        $i++;
     347                }
     348        }
     349       
     350        $echo.='<table class="spip">
     351                        <thead>
     352                                <tr class="row_first">';
     353                               
     354                                foreach($tabClass as $cle=>$valeur){
     355                                        if(substr($cle, 0, 3) == 'val'){
     356                                                $echo.= '<th scope="col" rowspan="2">'.$tabClass[$cle].'</th>';
     357                                        }
     358                                }
     359
     360        $echo.= '               <th scope="col" rowspan="2">'.$tabClass['var'].'</th>
     361                                        <th scope="col" rowspan="2">'.$tabClass['cal'].'</th>
     362                                </tr>   
     363                        </thead>
     364                        <tbody>';
     365       
     366        $i=0;
     367        $tabAbs = array();
     368       
     369        if($cptValVar != 0){
     370                $ValeurVarie = $min;
     371        }
     372        else{
     373                $ValeurVarie = _request(substr($tabClass['var'],0,1));
     374        }
     375       
     376        foreach($result as $valCal){
     377                $i++;
     378                $echo.= '<tr class="';
     379                $echo.=($i%2==0)?'row_even':'row_odd';
     380                $echo.='">';
     381               
     382                                foreach($tabClass as $cle=>$valeur){
     383                                        if(substr($cle, 0, 3) == 'val'){
     384                                                $echo.= '<td>';
     385                                                $decoup = explode(':', $tabClass[$cle], 2);
     386                                                $echo.= _request($decoup[0]).'</td>';
     387                                        }
     388                                }       
     389                               
     390                $echo.= '<td>'.$ValeurVarie.'</td><td>'.format_nombre($valCal, $iPrec).'</td>';         
     391                $echo.= '</tr>';               
     392                $tabAbs[] = $ValeurVarie;
     393                $ValeurVarie+= $pas;
     394        }       
     395       
     396    $echo.=     '</tbody>
     397        </table>';
     398
     399
     400
     401    /***************************************************************************
     402    *                        Affichage du graphique
     403    ****************************************************************************/
     404 
     405        // Si notre tableau de résultats contient plus d'une ligne alors on l'affiche.
     406        if(count($result) > 1){
     407                $oGraph = new cGraph();
     408                // Ligne de Lechapt et calmon
     409                if(isset($result)) {
     410                        $oGraph->AddSerie(
     411                                'ligne_lechapt_calmon',
     412                                $tabAbs,
     413                                $result,
     414                                '#00a3cd',
     415                                'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
     416                }
     417                // Récupération du graphique
     418                $echo .= $oGraph->GetGraph('ligne_lechapt_calmon',400,600);
     419        }
     420        $res['message_ok'] = $echo;
     421    return $res;
    215422}
    216423?>
Note: See TracChangeset for help on using the changeset viewer.