Changeset 95765 in spip-zone


Ignore:
Timestamp:
Mar 4, 2016, 4:18:52 PM (5 years ago)
Author:
dorch@…
Message:

Corrections de bugs :

  • le dessin des sections ne fonctionnait plus avec la version de jQuery uilisée dans SPIP 3.1
  • Factorisation du code des formulaires (notamment des javascripts) avec reprise complète des formulaires Lechapt et Calmon et calculs hydrauliques sur une section paramétrée
Location:
_plugins_/hydraulic/trunk
Files:
10 added
2 deleted
21 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/hydraulic/trunk/formulaires/calcul_normale_critique.html

    r60821 r95765  
    11[<div class='hyd_formulaire_erreur '><span>(#ENV*{message_erreur})</span></div>]
    22<script language="javascript" type="text/javascript" src="#CHEMIN{js/hyd_fonctions.js}"></script>
    3 <script language="javascript" type="text/javascript" src="#CHEMIN{js/jquery.svg.js}"></script>
    4 <script language="javascript" type="text/javascript" src="#CHEMIN{js/jquery.drawinglibrary.js}"></script>
    5                
     3
    64<script>
    7 function elementsParClasse(classe, tagName){
    8         var divs = document.getElementsByTagName(tagName);
    9     var resultats = new Array();
    10     for(var i=0; i<divs.length; i++){
    11                 if(divs[i].className == classe){
    12                         resultats.push(divs[i]);
     5function gestion_radios_extra(nom,valeur){
     6    // Gestion de l'affichage du choix du calcul à effectuer (affichage seulement si une valeur varie)
     7    var ttr = ['tr_val_a_cal_fs','tr_val_a_cal'];
     8    var bDisplay = 'none';
     9    for(var cle in glob) {
     10        if(glob[cle]=='var') {
     11            bDisplay = 'table-row';
     12            break;
    1313        }
    1414    }
    15     return resultats;   
    16 }
    17 
    18 var globSelectSection = 'FT';
    19 
    20 function setVarGlob(){
    21         globSelectSection = getSelectValue('choix_section');
    22 }
    23 
    24 function resetAffichageChamps(nom){
    25         setVarGlob();
    26         if(nom){
    27                 var cacher = elementsParClasse('champs_var_'+nom, 'tr');
    28                 for(var i in cacher){
    29                         cacher[i].style.display='none';
    30                 }
    31         }
    32         else{
    33                 var tab = new Array();
    34                 <BOUCLE_remplissageTab1(POUR){tableau #ENV{mes_saisies}}>
    35                         #SET{field1, #CLE}
    36                         <BOUCLE_remplissageTab2(POUR){tableau (#VALEUR|table_valeur{1})}>
    37                                 <BOUCLE_afficheSiSection(CONDITION){si #GET{field1}|substr{0,1}|== {'F'}}>
    38                                         tab.push('#GET{field1}_[(#CLE)]');
    39                                 </BOUCLE_afficheSiSection>
    40                         </BOUCLE_remplissageTab2>
    41                 </BOUCLE_remplissageTab1>
    42                
    43                 for(var i in tab){
    44                         if(document.getElementById('varier_val_'+tab[i]).checked){
    45                                 document.getElementById('val_a_cal_field_nc').style.display='none';
    46                                 document.getElementById('val_a_cal_nc').style.display='none';
    47                         }
    48                        
    49                         document.getElementById('val_fixe_'+tab[i]).checked=true;
    50                         document.getElementById('caract_'+tab[i]).disabled=false;
    51                         var cacher = elementsParClasse('champs_var_'+tab[i], 'tr');
    52                         for(var i in cacher){
    53                                 cacher[i].style.display='none';
    54                         }
    55                 }
    56 
    57         }
    58 }
    59 
    60 //Permet d'afficher ou cacher les champs correspondant à une section.
    61 function afficher_cacher() {
    62         resetAffichageChamps();
    63         var section = getSelectValue('choix_section');
    64     var f = document.getElementById("form_normale_critique");
    65     if(f) {
    66                 var champs = f.getElementsByTagName("tr");
    67                 for(var i=0, n=champs.length; i<n; i++) {   
    68                         if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,2) == section)){
    69                                 document.getElementById((champs[i].getAttribute("id"))).style.display='table-row';
    70                         }
    71                         else if((champs[i].getAttribute("id") != null) &&((champs[i].getAttribute("id")).substr(0,1) == 'F')) {
    72                                 document.getElementById((champs[i].getAttribute("id"))).style.display='none';
    73                         }               
    74                 }
    75     }   
    76 }
    77 
    78 function gestion_radios(nom, valeur){
    79         setVarGlob();   
    80         var tabPartiel = new Array();
    81         <BOUCLE_remplissageTabPartiel1(POUR){tableau #ENV{mes_saisies}}>
    82                 #SET{field2, #CLE}
    83                 #SET{test, #VALEUR|table_valeur{1}}
    84 
    85                 <BOUCLE_conditionSection(CONDITION){si #CLE|substr{0,1}|== {'F'}}>
    86                         if(globSelectSection == '#CLE'){
    87                                
    88                                 <BOUCLE_remplissageTabPartiel2(POUR){tableau #GET{test}}>
    89                                         tabPartiel.push('#GET{field2}_[(#CLE)]');
    90                                 </BOUCLE_remplissageTabPartiel2>
    91                         }               
    92                 </BOUCLE_conditionSection>
    93                         <BOUCLE_remplissageTabPartiel3(POUR){tableau (#VALEUR|table_valeur{1})}>
    94                                 tabPartiel.push('#GET{field2}_[(#CLE)]');
    95                         </BOUCLE_remplissageTabPartiel3>
    96                 <//B_conditionSection>
    97         </BOUCLE_remplissageTabPartiel1>
    98        
    99         for(var i in tabPartiel){
    100                 if(tabPartiel[i] == nom){
    101                         delete(tabPartiel[i]);
    102                 }
    103         }
    104                
    105         if(valeur.substr(0,3) == 'var'){
    106                 for(var cle in tabPartiel){
    107                         if(document.getElementById('varier_val_'+tabPartiel[cle]).checked){
    108                                 document.getElementById('val_fixe_'+tabPartiel[cle]).checked=true;
    109                                 document.getElementById('caract_'+tabPartiel[cle]).disabled=false;     
    110                                 document.getElementById('caract_'+nom).disabled=true;   
    111                                 resetAffichageChamps(tabPartiel[cle]); 
    112                         }       
    113                 }
    114                 document.getElementById('val_a_cal_field_nc').style.display='table-row';
    115                 document.getElementById('val_a_cal_nc').style.display='table-row';
    116                 document.getElementById('caract_'+nom).disabled=true;   
    117                 var afficher = elementsParClasse('champs_var_'+nom, 'tr');
    118                 for(var i in afficher){
    119                         afficher[i].style.display='table-row';
    120                 }       
    121         }
    122 
    123         if(valeur.substr(0,3) == 'val'){
    124                 var CptValVar = 0;
    125                 for(var cle in tabPartiel){
    126                         if(document.getElementById('varier_val_'+tabPartiel[cle]).checked){
    127                                 CptValVar++;
    128                         }
    129                 }
    130                 if(CptValVar == 0){
    131                         document.getElementById('val_a_cal_field_nc').style.display='none';
    132                         document.getElementById('val_a_cal_nc').style.display='none';
    133                 }
    134        
    135                 document.getElementById('caract_'+nom).disabled=false; 
    136                 resetAffichageChamps(nom);
    137         }
    138 
     15    for(var i in ttr) {
     16        document.getElementById(ttr[i]).style.display=bDisplay;
     17    }
    13918}
    14019</script>
     20
    14121<form method="post" action="#ENV{action}" id="form_normale_critique">
    142    #ACTION_FORMULAIRE{#ENV{action}}
    143    <table class="hyd_formulaire">
    144       <tbody>
    145                         <tr id="type_section_field_nc">
    146                                 <td colspan="4"><div class="hyd_formulaire_chapitre"><:hydraulic:type_section:></div></td>
    147                         </tr>
     22    #ACTION_FORMULAIRE{#ENV{action}}
     23    <table class="hyd_formulaire">
     24        <tbody>
    14825
    149                         <tr id="type_section_nc">
    150                                 <td align="right" width="30%">
    151                                         <:hydraulic:choix_section:> :
    152                                 </td>
    153                                
    154                                 <td colspan="3" width="70%">
    155                                         <select name="ncTypeSection" id="choix_section" onChange="afficher_cacher();">
    156                                         <BOUCLE_selectOptions(POUR){tableau #ENV{mes_saisies}}>
    157                                                 #SET{test, #VALEUR|table_valeur{0}|decoupeIdSection}
    158                                                 <BOUCLE_choixSection(CONDITION){si #CLE|substr{0,1}|== {'F'}}>
    159                                                         <option value="#CLE" [(#ENV{ncTypeSection}|=={#CLE}|?{'selected',''})]>#GET{test}</option>
    160                                                 </BOUCLE_choixSection>
    161                                         </BOUCLE_selectOptions>
    162                                         </select>
    163                  
    164                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    165                                 </td>   
    166                         </tr>
     26            <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     27            <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    16728
    168         <BOUCLE_fieldChamps(POUR){tableau #ENV{mes_saisies}}>
    169                         #SET{id_fieldset, #CLE}
    170                        
    171                         <tr id="#GET{id_fieldset}_field" style="display:[(#CLE|match{^([(#ENV{ncTypeSection})]|Cr)$}|?{'table-row','none'})];">                         
    172                                 <td colspan="4"><div class="hyd_formulaire_chapitre">[(#VALEUR|table_valeur{0}|traduction_hydraulic)]</div></td>
    173                         </tr>
    174                        
    175                 <BOUCLE_affichageParamCal(CONDITION){si #GET{id_fieldset}|!== {'Cr'}}>
    176                         <tr id="#GET{id_fieldset}_optionCal_nc" style="display:[(#CLE|match{^([(#ENV{ncTypeSection})]|Cr)$}|?{'table-row','none'})];">
    177                                 <td colspan="2"></td>
    178                                 <td align="center"><:hydraulic:varier_val:></td>
    179                                 <td align="center"><:hydraulic:fixer_val:></td>
    180                         </tr>
    181                 </BOUCLE_affichageParamCal>
     29            <tr>
     30                <td colspan="4" class="hyd_bouton_submit">
     31                   <input type="submit" value="<:hydraulic:calculer:>">
     32                </td>
     33            </tr>
    18234
    183 
    184                 <BOUCLE_champsLib(POUR){tableau (#VALEUR|table_valeur{1})}>
    185                         #SET{clefield, #GET{id_fieldset}|concat{_, #CLE}}
    186 
    187                         <tr id="#GET{clefield}" style="display:[(#GET{id_fieldset}|match{^([(#ENV{ncTypeSection})]|Cr)$}|?{'table-row','none'})];">
    188                                 <td align="right">
    189                                         [(#VALEUR|table_valeur{0}|traduction_hydraulic)] :
    190                                 </td>
    191 
    192                                 <td>
    193                                         <input id="caract_#GET{clefield}" type="text" value="[(#ENV{#GET{clefield}})]" maxlength="30" name="#GET{clefield}" [(#ENV{choix_champs_#GET{clefield}}|=={varier_val_#GET{clefield}}|?{'disabled="true"',''})]/>
    194                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#GET{clefield}})</div>]
    195                                 </td>
    196                        
    197                                 <BOUCLE_val_var_existe(CONDITION){si #ENV{choix_champs_#GET{clefield}}|== {varier_val_#GET{clefield}}}>
    198                                         #SET{val_var, #CLE}                                                     
    199                                 </BOUCLE_val_var_existe>
    200 
    201                                 <td align="center">
    202                                         <input type="radio" id="varier_val_#GET{clefield}" name="choix_champs_#GET{clefield}" value="varier_val_#GET{clefield}" onclick="gestion_radios('#GET{clefield}', 'varier_val_#GET{clefield}')" [(#ENV{choix_champs_#GET{clefield}}|=={varier_val_#GET{clefield}}|?{'checked',''})]/>
    203                                 </td>   
    204                                        
    205                                 <td align="center">
    206                                         <input type="radio" id="val_fixe_#GET{clefield}" name="choix_champs_#GET{clefield}" value="val_fixe_#GET{clefield}" onclick="gestion_radios('#GET{clefield}', 'val_fixe_#GET{clefield}')" [(#ENV{choix_champs_#GET{clefield}}|=={val_fixe_#GET{clefield}}|?{'checked',''})]/>
    207                                 </td>
    208                         </tr>
    209                        
    210                         <tr class="champs_var_#GET{clefield}"  style="display:[(#ENV{choix_champs_#GET{clefield}}|=={varier_val_#GET{clefield}}|?{'table-row','none'})];">
    211                                 <td colspan="2" align="right"><:hydraulic:val_min:> : </td>
    212                                 <td colspan="2">
    213                                         <input name="val_min_#GET{clefield}" type="text" value="[(#ENV{val_min_#GET{clefield}})]"/>
    214                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#GET{clefield}})</div>]
    215                                 </td>
    216                         </tr>
    217                                                
    218                         <tr class="champs_var_#GET{clefield}" style="display:[(#ENV{choix_champs_#GET{clefield}}|=={varier_val_#GET{clefield}}|?{'table-row','none'})];">
    219                                 <td colspan="2" align="right"><:hydraulic:val_max:> : </td>
    220                                 <td colspan="2">
    221                                         <input name="val_max_#GET{clefield}" type="text" value="[(#ENV{val_max_#GET{clefield}})]"/>
    222                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#GET{clefield}})</div>]
    223                                 </td>
    224                         </tr>
    225                        
    226                         <tr class="champs_var_#GET{clefield}" style="display:[(#ENV{choix_champs_#GET{clefield}}|=={varier_val_#GET{clefield}}|?{'table-row','none'})];">
    227                                 <td colspan="2" align="right"><:hydraulic:pas_var:> : </td>
    228                                 <td colspan="2">
    229                                         <input name="pas_var_#GET{clefield}" type="text" value="[(#ENV{pas_var_#GET{clefield}})]"/>
    230                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#GET{clefield}})</div>]
    231                                 </td>
    232                         </tr>
    233                        
    234                 </BOUCLE_champsLib>
    235         </BOUCLE_fieldChamps>
    236 
    237 
    238                         <tr id="param_calc_normale_critique">
    239                                 <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:param_calcul:></div></td>
    240                         </tr>
    241                        
    242                         <tr id="precision_normale_critique">
    243                                 <td align="right">
    244                                         <:hydraulic:precision:> :                       
    245                                 </td>                   
    246                                 <td>
    247                                         <input id="champs_Param_calc_rPrec" type="text" value="#ENV{Param_calc_rPrec}" maxlength="30" name="Param_calc_rPrec"/>
    248                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{Param_calc_rPrec})</div>]
    249                                 </td>   
    250                         </tr>
    251                        
    252                         <tr id="val_a_cal_field_nc" style="display:[(#GET{val_var}|!={''}|?{'table-row','none'})];">
    253                                 <td colspan="4"><div class="hyd_formulaire_chapitre"><:hydraulic:donnee_calc:></div></td>
    254                         </tr>
    255 
    256                         <tr id="val_a_cal_nc" style="display:[(#GET{val_var}|!={''}|?{'table-row','none'})];">
    257                                 <td align="right">
    258                                         <:hydraulic:choix_donnee_calc:> :
    259                                 </td>
    260                                        
    261                                 <td colspan="3">
    262                                         <select name="val_a_cal_nc" id="valeur_a_cal_nc">
    263                                                 <BOUCLE_champs_select_cal(POUR){tableau #ENV{choix_champs_select}}>
    264                                                         <option value="#CLE" [(#ENV{val_a_cal_nc}|=={#CLE}|?{'selected',''})]>[(#VALEUR|traduction_hydraulic)]</option>
    265                                                 </BOUCLE_champs_select_cal>
    266                                         </select>
    267                                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    268                                 </td>   
    269                                
    270                         </tr>
    271                        
    272                         <tr>
    273                                 <td colspan="4" class="hyd_bouton_submit">
    274                                    <input type="submit" value="<:hydraulic:calculer:>">
    275                                 </td>
    276                         </tr>
    277        
    27835      </tbody>
    27936   </table>
    28037</form>
    28138
    282 [<div class='hydraulic_resultat' id="resultat_nc">(#ENV*{message_ok})</div>]
     39<script language="javascript">
     40    // Affichage des champs du type de section sélectionné uniquement
     41    sectionDisplayFieldset();
     42</script>
     43[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/calcul_normale_critique.php

    r68484 r95765  
    2424
    2525
    26 /*
    27  * Découpe le champ $champ en plusieurs morceaux séparés par '_'
    28  * Ce découpage s'effectue à partir du $deb underscore et est de longueur $lg
    29  * Par exemple :
    30  * $test =  'petit_test_de_decoupage'
    31  * id_decoupe($test, 1, 2) renvoit 'test_de'
    32  */
    33 function id_decoupe($champ,$deb, $lg){
    34     $decoup = explode('_', $champ);
    35     $val = '';
    36     $selectElmt = array_slice($decoup, $deb, $lg);
    37     $val = join("_", $selectElmt);
     26include_spip('hyd_inc/form_calcul_section.class');
     27global $FCS;
     28$FCS = new form_calcul_section;
    3829
    39     return $val;
     30
     31function formulaires_calcul_normale_critique_charger_dist() {
     32    global $FCS;
     33    return $FCS->charger();
    4034}
    4135
    42 include_spip('hyd_inc/section');
    43 
    44 /*
    45  * Contient tous les champs relatifs au formulaire.
    46  * Les champs communs sont localisés ici: hyd_inc/section.php
    47  */
    48 function mes_saisies_normale_critique(){
    49 
    50     $fieldset_champs_nc = caract_communes();
    51 
    52     $fieldset_champs_nc['Cr'] = array(
    53                                            'caract_globale',
    54                                            array(
    55                                                  'rKs'      =>array('rugosite_nc',50),
    56                                                  'rIf'      =>array('pente_fond', 0.001),
    57                                                  'rQ'       =>array('debit', 1.2),
    58                                                  'rYB'      =>array('h_berge', 1),
    59                                                  'rY'       =>array('tirant_eau', 1)
    60                                                 )
    61                                          );
    62 
    63 
    64   return $fieldset_champs_nc;
    65 }
    66 
    67 function champs_select_calculer(){
    68     $champs_select_calc = array(
    69         'Hs'   => 'charge_spe',
    70         'Hsc'  => 'charge_critique',
    71         'B'    => 'larg_miroir',
    72         'P'    => 'perim_mouille',
    73         'S'    => 'surf_mouille',
    74         'R'    => 'rayon_hyd',
    75         'V'    => 'vit_moy',
    76         'Fr'   => 'froud',
    77         'Yc'   => 'tirant_eau_crit',
    78         'Yn'   => 'tirant_eau_norm',
    79         'Yf'   => 'tirant_eau_fluv',
    80         'Yt'   => 'tirant_eau_torr',
    81         'Yco'  => 'tirant_eau_conj',
    82         'J'    => 'perte_charge',
    83         'I-J'  => 'var_lin',
    84         'Imp'  => 'impulsion',
    85         'Tau0' => 'force_tract'
    86     );
    87 
    88     return $champs_select_calc;
    89 }
    90 
    91 function champs_obligatoires_nc() {
    92 
    93     $tSaisie = mes_saisies_normale_critique();
    94     $tChOblig = array();
    95     $sTypeSection = _request('ncTypeSection');
    96     // Cette variable va contenir le nom de la variable qui varie s'il y en a une.
    97     $ValVar = '';
    98 
    99     foreach($tSaisie as $IdFS=>$FieldSet) {
    100         // Si ce n'est pas une section ou alors celle selectionnée...
    101         if((substr($IdFS,0,1) != 'F') || ($IdFS == $sTypeSection)){
    102             foreach($FieldSet[1] as $Cle=>$Champ) {
    103                 //... alors on enresgistre les champs
    104                 if(substr(_request('choix_champs_'.$IdFS.'_'.$Cle), 0, 3) == 'var'){
    105                     $ValVar = $IdFS.'_'.$Cle;
    106                 }
    107                 if((!isset($Champ[2])) || (isset($Champ[2]) && $Champ[2])) {
    108                     $tChOblig[] = $IdFS.'_'.$Cle;
    109                 }
    110             }
    111         }
    112     }
    113 
    114     if($ValVar != ''){
    115         foreach($tChOblig as $cle=>$valeur){
    116             if($valeur == $ValVar){
    117                 unset($tChOblig[$cle]);
    118                 $tChOblig = array_values($tChOblig);
    119                 $tChOblig [] = 'val_min_'.$valeur;
    120                 $tChOblig [] = 'val_max_'.$valeur;
    121                 $tChOblig [] = 'pas_var_'.$valeur;
    122             }
    123         }
    124     }
    125 
    126    //On ajoute rPrec_nc car il ne fait pas partie des saisies de sections.
    127     $tChOblig[] = 'Param_calc_rPrec';
    128 
    129     return $tChOblig;
    130 }
    131 
    132 function formulaires_calcul_normale_critique_charger_dist() {
    133     // On charge les saisies et les champs qui nécessitent un accès par les fonctions
    134     $tSaisie_nc = mes_saisies_normale_critique();
    135     $champs_select = champs_select_calculer();
    136 
    137     $valeurs = array(
    138         'ncTypeSection' => 'FT',
    139         'mes_saisies'   => $tSaisie_nc,
    140         'val_a_cal_nc'  => 'Hs',
    141         'Param_calc_rPrec' => 0.001,
    142         'choix_champs_select' => $champs_select
    143     );
    144 
    145     foreach($tSaisie_nc as $CleFD=>$FieldSet) {
    146         foreach($FieldSet[1] as $Cle=>$Champ) {
    147             $valeurs[$CleFD.'_'.$Cle] = $Champ[1];
    148             $valeurs['choix_champs_'.$CleFD.'_'.$Cle] = 'val_fixe_'.$CleFD.'_'.$Cle;
    149             if($Cle == 'rIf'){
    150                 $valeurs['val_min_'.$CleFD.'_'.$Cle] = 0.001;
    151                 $valeurs['val_max_'.$CleFD.'_'.$Cle] = 0.005;
    152                 $valeurs['pas_var_'.$CleFD.'_'.$Cle] = 0.001;
    153             }
    154             else {
    155                 $valeurs['val_min_'.$CleFD.'_'.$Cle] = 1;
    156                 $valeurs['val_max_'.$CleFD.'_'.$Cle] = 2;
    157                 $valeurs['pas_var_'.$CleFD.'_'.$Cle] = 0.1;
    158             }
    159         }
    160     }
    161 
    162     return $valeurs;
    163 }
    16436
    16537function formulaires_calcul_normale_critique_verifier_dist(){
    166     $erreurs = array();
    167     $datas = array();
    168     $tChOblig= champs_obligatoires_nc();
    169     // Vérifier que les champs obligatoires sont bien là :
    170     foreach($tChOblig as $obligatoire) {
    171         if (_request($obligatoire) == NULL) {
    172             $erreurs[$obligatoire] = _T('hydraulic:champ_obligatoire');
    173         }
    174         else {
    175             $datas[$obligatoire] = _request($obligatoire);
    176         }
    177     }
    178 
    179     // Gestion des valeurs négatives
    180     foreach($datas as $champ=>$data){
    181         if($data < 0 && !strstr($champ, 'Cr_rIf')) $erreurs[$champ] = _T('hydraulic:valeur_positive_nulle');
    182     }
    183 
    184     if (count($erreurs)) {
    185         $erreurs['message_erreur'] = _T('hydraulic:saisie_erreur');
    186     }
    187 
    188     return $erreurs;
     38    global $FCS;
     39    return $FCS->verifier();
    18940}
    19041
    19142
    19243function formulaires_calcul_normale_critique_traiter_dist(){
    193     global $spip_lang;
    194     include_spip('hyd_inc/cache');
    195     include_spip('hyd_inc/log.class');
    196     include_spip('hyd_inc/graph.class');
    197     include_spip('hyd_inc/section.class');
    198     include_spip('hyd_inc/dessinSection.class');
    199 
    200     $datas = array();
    201     $echo = '';
    202     $tChUtil = champs_obligatoires_nc();
    203     $ncTypeSection = _request('ncTypeSection');
    204     $tVarCal = array();
    205     $VarVar = '';
    206     $result = array();
    207     $champs_select_nc = champs_select_calculer();
    208 
    209     foreach($tChUtil as $champ) {
    210         if (_request($champ)){
    211             $datas[$champ] = _request($champ);
    212         }
    213 
    214         if(id_decoupe($champ, 0, 2) == 'pas_var'){
    215             $VarVar = id_decoupe($champ, 2, 2);
    216         }
    217         $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574*/
    218     }
    219 
    220    // On ajoute la langue en cours pour différencier le fichier de cache par langue
    221     $datas['sLang'] = $spip_lang;
    222 
    223     // Nom du fichier en cache pour calcul déjà fait
    224     $CacheFileName=md5(serialize($datas));
    225 
    226     // Initialisation de la classe chargée d'afficher le journal de calcul
    227     $oLog = new cLog();
    228 
    229     //Transformation des variables contenues dans $datas
    230     foreach($datas as $champ=>$data) {
    231         ${$champ}=$data;
    232     }
    233 
    234     /***************************************************************************
    235     *                        Calcul normale critique
    236     ***************************************************************************/
    237     $oParam= new cParam($Cr_rKs, $Cr_rQ, $Cr_rIf, $Param_calc_rPrec, $Cr_rYB);
    238     switch($ncTypeSection) {
    239                 case 'FT':
    240                         include_spip('hyd_inc/sectionTrapez.class');
    241                         $oSection=new cSnTrapez($oLog,$oParam,$FT_rLargeurFond,$FT_rFruit);
    242                         break;
    243 
    244                 case 'FR':
    245                         include_spip('hyd_inc/sectionRectang.class');
    246                         $oSection=new cSnRectang($oLog,$oParam,$FR_rLargeurBerge);
    247                         break;
    248 
    249                 case 'FC':
    250                         include_spip('hyd_inc/sectionCirc.class');
    251                         $oSection=new cSnCirc($oLog,$oParam,$FC_rD);
    252                         break;
    253 
    254                 case 'FP':
    255                         include_spip('hyd_inc/sectionPuiss.class');
    256                         $oSection=new cSnPuiss($oLog,$oParam,$FP_rCoef,$FP_rLargBerge);
    257                         break;
    258 
    259                 default:
    260                         include_spip('hyd_inc/sectionTrapez.class');
    261                         $oSection=new cSnTrapez($oLog,$oParam,$FT_rLargeurfond,$FT_rFruit);
    262 
    263     }
    264     $oSection->rY = $Cr_rY;
    265 
    266     $min = 0;
    267     $max = 0;
    268     $pas = 1;
    269     $i = 0;
    270 
    271     $tChampsSect = mes_saisies_normale_critique();
    272     $champsSection = array();
    273 
    274     foreach($tChampsSect as $IdFS=>$FieldSet){
    275         if(substr($IdFS, 0, 1) == 'F'){
    276             foreach($FieldSet[1] as $Cle=>$Champ) {
    277                 $champsSection[] = $IdFS.'_'.$Cle;
    278             }
    279         }
    280     }
    281 
    282     if($VarVar != ''){
    283         $tVarCal[] = _request('val_a_cal_nc');
    284         $min = _request('val_min_'.$VarVar);
    285         $max = _request('val_max_'.$VarVar);
    286         $pas = _request('pas_var_'.$VarVar);
    287         $valACalculer = id_decoupe($VarVar, 1, 1);
    288         if($valACalculer == 'rY' or in_array($VarVar, $champsSection)){
    289             $oSection->{$valACalculer} = &$i;
    290         }
    291         else{
    292             $oParam->{$valACalculer} = &$i;
    293         }
    294     }
    295     else {
    296                 switch($ncTypeSection) {
    297                         case 'FR':
    298                                 $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'Yco', 'J', 'I-J', 'Imp', 'Tau0');
    299                                 break;
    300                         default:
    301                                 // Le calcul de la hauteur conjuguée n'est pas OK pour les sections autres que rectangulaire
    302                                 $tVarCal = array('Hs', 'Hsc', 'B', 'P', 'S', 'R', 'V', 'Fr', 'Yc', 'Yn', 'Yf', 'Yt', 'J', 'I-J', 'Imp', 'Tau0');
    303                 }
    304     }
    305 
    306     $max += $pas/2;
    307 
    308     $bNoCache = true; // true pour débugage
    309     if(!$bNoCache && is_file(HYD_CACHE_DIRECTORY.$CacheFileName)) {
    310         // On récupère toutes les données dans un cache déjà créé
    311         $result = ReadCacheFile($CacheFileName);
    312     }
    313     else{
    314         for($i = $min; $i <= $max; $i+= $pas){
    315             $oSection->Reset(true);
    316             foreach($tVarCal as $sCalc){
    317                 $rY = $oSection->rY;
    318                 if(!in_array($sCalc,array('Yn', 'Yc', 'Hsc'))){
    319                     $result[] = $oSection->Calc($sCalc);
    320                 }
    321                 else{
    322                     $result[] = $oSection->CalcGeo($sCalc);
    323                 }
    324                 $oSection->rY = $rY;
    325             }
    326         }
    327         //Enregistrement des données dans fichier cache
    328         WriteCacheFile($CacheFileName,$result);
    329     }
    330     /***************************************************************************
    331     *                             Une valeur varie
    332     ****************************************************************************/
    333     if($VarVar != ''){
    334 
    335     /***************************************************************************
    336     *                   Affichage du tableau de données
    337     ****************************************************************************/
    338 
    339         $tabClass = array();
    340         foreach($tChampsSect as $cleFD=>$champsFD){
    341             foreach($champsFD[1] as $cle=>$valeur){
    342                 if(substr($cleFD, 0, 1) != 'F' || $cleFD == _request('ncTypeSection')){
    343                     if(substr(_request('choix_champs_'.$cleFD.'_'.$cle), 0, 3) == 'var'){
    344                         $tabClass['var'] = $valeur[0];
    345                     }
    346                     else if(substr(_request('choix_champs_'.$cleFD.'_'.$cle), 0, 3) != 'var' && _request($cleFD.'_'.$cle)){
    347                         $tabClass['val'.$i] = $valeur[0];
    348                         $i++;
    349                     }
    350                 }
    351             }
    352         }
    353 
    354         $var_a_cal = '';
    355         foreach($champs_select_nc as $cle=>$valeur){
    356             if($cle == _request('val_a_cal_nc')){
    357                 $var_a_cal = _T('hydraulic:'.$valeur);
    358             }
    359         }
    360 
    361         $echo.='<table class="spip">
    362                 <thead>
    363                     <tr class="row_first">';
    364 
    365                     foreach($tabClass as $cle=>$valeur){
    366                         if(substr($cle, 0, 3) == 'val'){
    367                             $echo.= '<th scope="col" rowspan="2" style="text-align:center;">'._T('hydraulic:'.$tabClass[$cle]).'</th>';
    368                         }
    369                     }
    370 
    371         $echo.= '       <th style="text-align:center;" scope="col" rowspan="2">('._T('hydraulic:abscisse').')<br/>'._T('hydraulic:'.$tabClass['var']).'</th>
    372                         <th style="text-align:center;" scope="col" rowspan="2">('._T('hydraulic:ordonnee').')<br/>'.$var_a_cal.'</th>
    373                     </tr>
    374                 </thead>
    375                 <tbody>';
    376 
    377         $i=0;
    378         $tabAbs = array();
    379 
    380         $ValeurVarie = $min;
    381 
    382         foreach($result as $indice){
    383             $i++;
    384             $echo.= '<tr class="align_right ';
    385             $echo.=($i%2==0)?'row_even':'row_odd';
    386             $echo.='">';
    387 
    388                     foreach($datas as $cle=>$valeur){
    389                         if((substr($cle, 0, 1) == 'F' || substr($cle, 0, 2) == 'Cr') && $valeur != 0){
    390                             $echo.= '<td>';
    391                             $echo.= format_nombre($valeur, $oSection->oP->iPrec).'</td>';
    392                         }
    393                     }
    394 
    395             $echo.= '<td>'.format_nombre($ValeurVarie, $oSection->oP->iPrec).'</td><td>'.format_nombre($indice, $oSection->oP->iPrec).'</td>';
    396             $echo.= '</tr>';
    397             $tabAbs[] = $ValeurVarie;
    398             $ValeurVarie+= $pas;
    399         }
    400 
    401         $echo.= '</tbody>
    402             </table>';
    403 
    404      /***************************************************************************
    405     *                        Affichage du graphique
    406     ****************************************************************************/
    407         if(is_infinite($result[0])){
    408             unset($result[0]);
    409             $result = array_values($result);
    410             unset($tabAbs[0]);
    411             $tabAbs = array_values($tabAbs);
    412         }
    413 
    414         $oGraph = new cGraph();
    415         // Ligne Courbe normale critique
    416         if(isset($result)) {
    417             $oGraph->AddSerie(
    418                 $var_a_cal,
    419                 $tabAbs,
    420                 $result,
    421                 '#00a3cd',
    422                 'lineWidth:3, showMarker:true, markerOptions:{style:\'filledCircle\', size:8}');
    423         }
    424         // Récupération du graphique
    425         $echo .= $oGraph->GetGraph('ligne_normale_critique',400,600);
    426         $echo .= _T('hydraulic:'.$tabClass['var']);
    427 
    428     }
    429 
    430     /***************************************************************************
    431     *                   Aucune valeur ne varie
    432     ****************************************************************************/
    433     else{
    434 
    435     /***************************************************************************
    436     *                   Affichage du tableau de données
    437     ****************************************************************************/
    438         $lib_data = array();
    439         $test = champs_select_calculer();
    440         $par = 0;
    441 
    442         foreach($tVarCal as $champ){
    443             $lib_data[$champ][] = $result[$par];
    444             $lib_data[$champ][] = $test[$champ];
    445             $par++;
    446         }
    447 
    448         $idCla = 0;
    449 
    450         $echo.='<table class="spip" id="tableau_nc" style="display: inline-block;">
    451                 <tbody>';
    452 
    453         foreach($lib_data as $cal=>$datas){
    454             $idCla++;
    455             $echo.= '<tr class="align_right ';
    456             $echo.=($idCla%2==0)?'row_even':'row_odd';
    457             $echo.='">';
    458             $echo.= '<td class="varACal">';
    459             $echo.= $cal.': '._T('hydraulic:'.$datas[1]).'</td>';
    460             $echo.= '<td>'.format_nombre($datas[0], $oSection->oP->iPrec).'</td>';
    461             $echo.= '</tr>';
    462 
    463         }
    464         $echo.= '</tbody>
    465             </table>';
    466 
    467 
    468      /***************************************************************************
    469     *                        Affichage du graphique
    470     ****************************************************************************/
    471 
    472         $lib_datas = array();
    473         $par = 0;
    474 
    475         foreach($tVarCal as $champ){
    476             if(substr($test[$champ], 0, 6) == 'tirant' || $champ == 'Hs' || $champ == 'Hsc'){
    477                 $lib_datas[$champ] = $result[$par];
    478             }
    479             $par++;
    480         }
    481 
    482         $lib_datas['rYB'] = $oSection->oP->rYB;
    483         $dessinSection = new dessinSection(250, 200, $oSection, $lib_datas);
    484         $echo.= $dessinSection->GetDessinSection();
    485     }
    486 
    487     $res['message_ok'] = $echo;
    488     return $res;
     44    global $FCS;
     45    return $FCS->traiter();
    48946}
    49047?>
  • _plugins_/hydraulic/trunk/formulaires/calcul_ouvrages.html

    r83413 r95765  
    360360</script>
    361361
    362 <form method="post" action="#ENV{action}" id="form_calcul_ouvrages">
     362<form method="post" action="#ENV{action}#VAL{#resultat_ouvrages}" id="form_calcul_ouvrages">
    363363   #ACTION_FORMULAIRE{#ENV{action}}
    364364   <table class="hyd_formulaire">
     
    656656</form>
    657657
    658 [<div class='hydraulic_resultat'>(#ENV*{message_ok})</div>]
     658[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/courbe_remous.html

    r93248 r95765  
    2727</script>
    2828<div class="formulaire_spip form_courbe_remous">
    29 <form method="post" action="#ENV{action}" id="form_courbe_remous">
     29<form method="post" action="#ENV{action}#VAL{#resultat_courbe_remous}" id="form_courbe_remous">
    3030   #ACTION_FORMULAIRE{#ENV{action}}
    3131   <table class="hyd_formulaire">
     
    8383
    8484            </BOUCLE_fieldChamps>
     85            <tr>
     86                <td align="right">
     87                    <:hydraulic:choix_resolution:>
     88                </td>
     89
     90                <!-- On génére les options du select, correspondant aux types de section -->
     91                <td>
     92            [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{choix_resolution})</div>]
     93            <select name="choix_resolution" id="choix_resolution">
     94                <option value="RK4" [(#ENV{choix_resolution}|=={RK4}|?{'selected',''})]>
     95                    <:hydraulic:runge_kutta:>
     96                </option>
     97                <option value="Euler" [(#ENV{choix_resolution}|=={Euler}|?{'selected',''})]>
     98                    <:hydraulic:euler_explicite:>
     99                </option>
     100            </select>
     101                </td>
     102            </tr>
    85103
    86104         <tr>
     
    94112</form>
    95113</div>
    96 [<div class='hydraulic_resultat'>(#ENV*{message_ok})</div>]
     114[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/courbe_remous.php

    r93248 r95765  
    2323 */
    2424
    25 include_spip('hyd_inc/section');
    2625
    2726/* Tableau des champs à afficher dans le formulaire.
     
    2928 * le multilinguisme.
    3029 */
    31 function mes_saisies_section() {
     30function mes_saisies() {
    3231
    3332    // On récupère les champs communs à tous les formulaires à savoir les champs de section.
    34     $fieldset_champs = caract_communes();
     33    include_spip('hyd_inc/section');
     34    $fieldset_champs = mes_saisies_section(true);
    3535
    3636    $fieldset_champs['Cond_lim']    = array(
    37                                            'condition_limite',
    38                                            array(
    39                                                  'rQ'     =>array('debit_amont',2,'op'),
    40                                                  'rYaval' =>array('h_aval_imposee',0.6,'pn'),
    41                                                  'rYamont'=>array('h_amont_imposee',0.15,'pn')
    42                                                 )
    43                                        );
     37        'condition_limite',
     38        array(
     39            'rQ'     =>array('debit_amont',2,'op'),
     40            'rYaval' =>array('h_aval_imposee',0.4,'pn'),
     41            'rYamont'=>array('h_amont_imposee',0.15,'pn')
     42        )
     43    );
    4444
    4545    $fieldset_champs['Param_calc']  = array(
    46                                            'param_calcul',
    47                                            array(
    48                                                  'rDx'    =>array('pas_discret',5,'op'),
    49                                                  'rPrec'  =>array('precision_calc',0.001,'op')
    50                                                 )
    51                                        );
    52 
    53   return $fieldset_champs;
    54 
    55 }
     46        'param_calcul',
     47        array(
     48             'rDx'    =>array('pas_discret',5,'op'),
     49             'rPrec'  =>array('precision_calc',0.001,'op')
     50        )
     51    );
     52    return $fieldset_champs;
     53}
     54
    5655
    5756// Définition des champs à lire dans le formulaire
    5857function getChamps() {
    5958
    60     $tSaisie = mes_saisies_section();
     59    $tSaisie = mes_saisies();
    6160    $sTypeSection = _request('crTypeSection');
    6261    $tData = array();
     
    6766            // ... alors on parcourt notre deuxième tableau en ajoutant les champs nécessaires.
    6867            foreach($FieldSet[1] as $Cle=>$Champ) {
    69                 $tData[$IdFS.'_'.$Cle] = _request($IdFS.'_'.$Cle);
    70                 $tCtrl[$IdFS.'_'.$Cle] = $Champ[2];
     68                $tData[$IdFS.'_'.$Cle] = _request($IdFS.'_'.$Cle); // Valeur dans le formulaire
     69                $tCtrl[$IdFS.'_'.$Cle] = $Champ[2]; // Codes de vérification
    7170            }
    7271        }
     
    7877function formulaires_courbe_remous_charger_dist() {
    7978    // On charge les saisies et les champs qui nécessitent un accès par les fonctions
    80     $tSaisie_section = mes_saisies_section();
     79    $tSaisie_section = mes_saisies();
    8180    $valeurs = array(
    8281        'crTypeSection' => 'FT',
     
    9089        }
    9190    }
     91    $valeurs['choix_resolution'] = _request('choix_resolution');
    9292
    9393    return $valeurs;
     
    111111    $datas = array();
    112112    $echo = '';
    113     $tSaisie = mes_saisies_section();
     113    $tSaisie = mes_saisies();
    114114    $tChUtil = array();
    115115    $crTypeSection = _request('crTypeSection');
     
    156156
    157157    // Enregistrement des paramètres dans les classes qui vont bien
    158     $oParam= new cParam($c_bief_rKs,$Cond_lim_rQ,$c_bief_rIf,$Param_calc_rPrec,$c_bief_rYBerge,$Cond_lim_rYaval,$Param_calc_rDx,$c_bief_rLong);
     158    $oParam= new cParam($c_bief_rKs,$Cond_lim_rQ,$c_bief_rIf,$Param_calc_rPrec,$c_bief_rYB,$Cond_lim_rYaval,$Param_calc_rDx,$c_bief_rLong,_request('choix_resolution'));
    159159
    160160    // Création d'un objet de type Section selon la section choisie.
     
    167167        case 'FR':
    168168            include_spip('hyd_inc/sectionRectang.class');
    169             $oSection=new cSnRectang($oLog,$oParam,$FR_rLargeurBerge);
     169            $oSection=new cSnRectang($oLog,$oParam,$FR_rLargeurFond);
    170170            break;
    171171
  • _plugins_/hydraulic/trunk/formulaires/lechapt_calmon.html

    r68473 r95765  
    11[<div class='hyd_formulaire_erreur '><span>(#ENV*{message_erreur})</span></div>]
    22<script language="javascript" type="text/javascript" src="#CHEMIN{js/hyd_fonctions.js}"></script>
    3 <script>
    4 // Permet de switcher les valeur de L, M et N en fonction du matériau choisis
    5 function change_valeur() {
    6     /*
    7      * Le select commence à 1 donc on diminue son indice de 1 vu qu'on utilise un tableau pour stocker
    8      * les valeurs (on commence a 0)
    9      */
    10     var choix_mat = getSelectValue('choix_materiau')-1;
    11     var materiau = new Array();
    123
    13     <BOUCLE_mat1(POUR){tableau #ENV{mes_saisies_materiaux}}>
    14         <BOUCLE_mat2(POUR){tableau #VALEUR}>
    15             materiau.push('#VALEUR');
    16         </BOUCLE_mat2>
    17     </BOUCLE_mat1>
     4<form method="post" action="#ENV{action}#VAL{#resultat_lechapt_calmon}" id="form_lechapt_calmon">
     5   #ACTION_FORMULAIRE{#ENV{action}}
     6    <table class="hyd_formulaire">
     7        <tbody>
    188
    19    document.getElementById('champs_L').value=materiau[choix_mat*3];
    20    document.getElementById('champs_M').value=materiau[(choix_mat*3)+1];
    21    document.getElementById('champs_N').value=materiau[(choix_mat*3)+2];
    22 }
    23 
    24 // Retourne sous forme de tableau tous les élèments de la Class classe et de type tagName
    25 function elementsParClasse(classe, tagName){
    26     var divs = document.getElementsByTagName(tagName);
    27     var resultats = new Array();
    28     for(var i=0; i<divs.length; i++){
    29         if(divs[i].className == classe){
    30             resultats.push(divs[i]);
    31         }
    32     }
    33     return resultats;
    34 }
    35 
    36 // Tableau contenant tous les choix des groupes de boutons radios
    37 var glob = [];
    38 
    39 // Variables globales contenant le choix fait pour chaque ligne
    40 <BOUCLE_sans_coeff(POUR){tableau #ENV{tableau_caract}}>
    41     glob['#VALEUR'] = '#ENV{choix_champs_#VALEUR}';
    42 </BOUCLE_sans_coeff>
    43 
    44 // Mise a jour des variables globales
    45 function setVarGlob(){
    46     <BOUCLE_sans_coeff2(POUR){tableau #ENV{tableau_caract}}>
    47         // On récupère le choix effectué parmis les groupes de champs radios.
    48         glob['#VALEUR'] = getRadioValue('choix_champs_#VALEUR');
    49     </BOUCLE_sans_coeff2>
    50 }
    51 
    52 // Gére le comportement des boutons radios
    53 function gestion_radios(nom,valeur){
    54 
    55     // Ce tableau contiendra tous les indices , ainsi que leur valeur, excepté celle qui a été cliquée
    56     var tabPartiel = {
    57         <BOUCLE_sans_coeff3(POUR){tableau #ENV{tableau_caract}}>
    58             '#VALEUR' : glob['#VALEUR'],
    59         </BOUCLE_sans_coeff3>
    60     };
    61 
    62     // On supprime du tableau l'élément sur lequel on a cliqué
    63     delete(tabPartiel[nom]);
    64 
    65     // Tableau des indices
    66     var tabIndice = [
    67         <BOUCLE_sans_coeff4(POUR){tableau #ENV{tableau_caract}}>
    68             '#VALEUR',
    69         </BOUCLE_sans_coeff4>
    70     ];
    71 
    72     if(valeur.substr(0,3) == 'cal'){
    73         /*
    74          * Pour toutes les lignes autres que celle passée en paramètre,
    75          * on contrôle  si il y a déjà une valeur à calculer.
    76          * Si oui, alors on fais les modifications adéquates sur les champs:
    77          * sélection, visibilité
    78          */
    79         for(var cle in tabPartiel){
    80             if(document.getElementById('calcul_val_'+cle).checked){
    81                 document.getElementById('val_fixe_'+cle).checked=true;
    82                 document.getElementById('caract_'+cle).disabled=false;
    83                 document.getElementById('caract_'+nom).disabled=true;
    84                 setVarGlob();
    85             }
    86         }
    87     }
    88 
    89     // Si on appuit sur un bouton de type "varier_val" ou "val_fixe"
    90     else if(valeur.substr(0,3) == 'var' || valeur.substr(0,3)=='val'){
    91         for(var cle in tabPartiel){
    92             if(document.getElementById('varier_val_'+cle).checked && (glob[nom] != "calcul_val_"+nom)){
    93                 if(document.getElementById('varier_val_'+nom).checked){
    94                     document.getElementById('val_fixe_'+cle).checked=true;
    95                 }
    96                 setVarGlob();
    97             }
    98             else if(document.getElementById('varier_val_'+cle).checked && (glob[nom] == "calcul_val_"+nom) && valeur.substr(0,3) == 'var'){
    99                 document.getElementById('calcul_val_'+cle).checked=true;
    100                 document.getElementById('caract_'+cle).disabled=true;
    101                 document.getElementById('caract_'+nom).disabled=false;
    102                 setVarGlob();
    103             }
    104         }
    105 
    106         // Compte le nombre de calcul_val checké
    107         var cptValCal = 0;
    108         for(var cle in glob){
    109             if(document.getElementById('calcul_val_'+cle).checked){
    110                 cptValCal++;
    111             }
    112         }
    113         // Si aucune calcul_val n'est checké
    114         if(cptValCal == 0){
    115             // Alors on chercher l'indice suivant...
    116             indice = '';
    117             for(var i = 0; i < tabIndice.length; i++){
    118                 if(tabIndice[i] == nom){
    119                     // Si on est pas arrivé au dernier élément
    120                     if(i+1 <= tabIndice.length-1){
    121                         indice = tabIndice[i+1];
    122                     }
    123                     else{
    124                         indice = tabIndice[0];
    125                     }
    126                 }
    127 
    128             }
    129             // ... et on le met a calcul_val
    130             document.getElementById('calcul_val_'+indice).checked=true;
    131             document.getElementById('caract_'+nom).disabled=false;
    132             document.getElementById('caract_'+indice).disabled=true;
    133             var cacher = elementsParClasse('champs_var_'+indice, 'tr');
    134             for(var i in cacher){
    135                 cacher[i].style.display='none';
    136             }
    137             setVarGlob();
    138         }
    139     }
    140 
    141     // Si on appuis sur un bouton de type varier_val
    142     if(valeur.substr(0,3) == 'var'){
    143         setVarGlob();
    144         document.getElementById('caract_'+nom).disabled=true;
    145         for(var cle in glob){
    146             if(glob[cle].substr(0,3) == 'val'){
    147                 document.getElementById('caract_'+cle).disabled=false;
    148             }
    149         }
    150 
    151         // on affiche les champs correspondant au bouton sélectionné
    152         var afficher = elementsParClasse('champs_var_'+nom, 'tr');
    153         for(var i in afficher){
    154             afficher[i].style.display='table-row';
    155         }
    156         // On cache tous les autres champs de variations.
    157         for(var cle in tabPartiel){
    158             var cacher = elementsParClasse('champs_var_'+cle, 'tr');
    159             for(var i in cacher){
    160                 cacher[i].style.display='none';
    161             }
    162         }
    163 
    164         setVarGlob();
    165     }
    166 
    167     // Compte le nombre de varier_val checké
    168     var cptVarVal = 0;
    169     for(var cle in glob){
    170         if(document.getElementById('varier_val_'+cle).checked){
    171             cptVarVal++;
    172         }
    173     }
    174 
    175     if(cptVarVal == 0){
    176         for(var cle in glob){
    177             if(glob[cle].substr(0,3) != 'cal'){
    178                 document.getElementById('caract_'+cle).disabled=false;
    179             }
    180         }
    181         var cacher = elementsParClasse('champs_var_'+nom, 'tr');
    182         for(var i in cacher){
    183             cacher[i].style.display='none';
    184         }
    185     }
    186 
    187     setVarGlob();
    188 }
    189 </script>
    190 <form method="post" action="#ENV{action}" id="form_lechapt_calmon">
    191    #ACTION_FORMULAIRE{#ENV{action}}
    192    <table class="hyd_formulaire">
    193       <tbody>
    194             <tr id="type_materiau_field">
    195                 <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:type_materiau:></div></td>
    196             </tr>
    197 
    198             <tr id="type_materiau_choix">
    199                 <td align="right">
    200                     <:hydraulic:choix_materiau:> :
    201                 </td>
    202 
    203                 <td colspan="4">
    204                     <select name="typeMateriau" id="choix_materiau" onChange="change_valeur();">
    205                         <option value="1" [(#ENV{typeMateriau}|=={'1'}|?{'selected',''})]><:hydraulic:fonte_beton_corrosive:></option>
    206                         <option value="2" [(#ENV{typeMateriau}|=={'2'}|?{'selected',''})]><:hydraulic:fonte_beton_ncorrosive:></option>
    207                         <option value="3" [(#ENV{typeMateriau}|=={'3'}|?{'selected',''})]><:hydraulic:fonte_revt_ciment:></option>
    208                         <option value="4" [(#ENV{typeMateriau}|=={'4'}|?{'selected',''})]><:hydraulic:fonte_revt_bitume:></option>
    209                         <option value="5" [(#ENV{typeMateriau}|=={'5'}|?{'selected',''})]><:hydraulic:acier_lamine:></option>
    210                         <option value="6" [(#ENV{typeMateriau}|=={'6'}|?{'selected',''})]><:hydraulic:fonte_revt_centrifuge:></option>
    211                         <option value="7" [(#ENV{typeMateriau}|=={'7'}|?{'selected',''})]><:hydraulic:pvc:></option>
    212                         <option value="8" [(#ENV{typeMateriau}|=={'8'}|?{'selected',''})]><:hydraulic:tuyau_lisse1:></option>
    213                         <option value="9" [(#ENV{typeMateriau}|=={'9'}|?{'selected',''})]><:hydraulic:tuyau_lisse2:></option>
    214                     </select>
    215 
    216                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{[(#VALEUR|table_valeur{0})]})</div>]
    217 
    218                 </td>
    219             </tr>
    220 
    221             #SET{tableau_coeff,#ARRAY{1,L,2,M,3,N}}
    222             <BOUCLE_coeff(POUR) {tableau #GET{tableau_coeff}}>
    223                 <tr id="materiau_coeff_#VALEUR">
    224                     <td align="right">
    225                         #VALEUR :
    226                     </td>
    227 
    228                     <td>
    229                         <input id="champs_#VALEUR" type="text" value="#ENV{#VALEUR}" maxlength="30" name="#VALEUR"/>
    230                         [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#VALEUR})</div>]
    231                     </td>
    232                 </tr>
    233             </BOUCLE_coeff>
    234 
    235 
    236             <tr id="caract_lechapt_calmon">
    237                 <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:caract_lechapt_calmon:></div></td>
    238             </tr>
    239 
    240             <tr>
    241                 <td colspan="2"></td>
    242                 <td align="center"><:hydraulic:calcul_val:></td>
    243                 <td align="center"><:hydraulic:varier_val:></td>
    244                 <td align="center"><:hydraulic:fixer_val:></td>
    245             </tr>
    246 
    247         <!-- On génère les champs du formulaire en suivant le tableau caract -->
    248         <BOUCLE_caract(POUR) {tableau #ENV{tableau_caract}}>
    249 
    250             <tr id="type_materiau_caract_#VALEUR">
    251                 <td align="right">
    252                     [(#NUL|concat{param_,#VALEUR}|traduction_hydraulic)]
    253                 </td>
    254 
    255                 <td>
    256                     <input id="caract_#VALEUR" type="text" value="[(#ENV{choix_champs}|=={#VALEUR}|?{'',#ENV{#VALEUR}})]" maxlength="30" name="#VALEUR" [(#ENV{choix_champs_#VALEUR}|match{^((calcul_val_#VALEUR)|(varier_val_#VALEUR))$}|?{'disabled="true"',''})]/>
    257                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{#VALEUR})</div>]
    258                 </td>
    259 
    260                 <!-- Les 3 boutons radios pour le choix de la variable à calculer, varier, ou fixer -->
    261                 <td align="center">
    262                     <input type="radio" id="calcul_val_#VALEUR" name="choix_champs_#VALEUR" value="calcul_val_#VALEUR" onclick="gestion_radios('#VALEUR', 'calcul_val_#VALEUR')" [(#ENV{choix_champs_#VALEUR}|=={calcul_val_#VALEUR}?{'checked',''})]/>
    263                 </td>
    264 
    265                 <td align="center">
    266                     <input type="radio" id="varier_val_#VALEUR" name="choix_champs_#VALEUR" value="varier_val_#VALEUR" onclick="gestion_radios('#VALEUR', 'varier_val_#VALEUR')" [(#ENV{choix_champs_#VALEUR}|=={varier_val_#VALEUR}?{'checked',''})]/>
    267                 </td>
    268 
    269                 <td align="center">
    270                     <input type="radio" id="val_fixe_#VALEUR" name="choix_champs_#VALEUR" value="val_fixe_#VALEUR" onclick="gestion_radios('#VALEUR', 'val_fixe_#VALEUR')" [(#ENV{choix_champs_#VALEUR}|=={val_fixe_#VALEUR}?{'checked',''})]/>
    271                 </td>
    272             </tr>
    273 
    274             <!-- Champs pour les variations de calcul. Par défaut non visible. -->
    275             <tr class="champs_var_#VALEUR" style="display:[(#ENV{choix_champs_#VALEUR}|=={varier_val_#VALEUR}|?{'table-row','none'})];">
    276                 <td colspan="3" align="right"><:hydraulic:val_min:> : </td>
    277                 <td colspan="2">
    278                     <input name="val_min_#VALEUR" type="text" value="#ENV{val_min_#VALEUR}"/>
    279                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_min_#VALEUR})</div>]
    280                 </td>
    281             </tr>
    282 
    283             <tr class="champs_var_#VALEUR" style="display:[(#ENV{choix_champs_#VALEUR}|=={varier_val_#VALEUR}|?{'table-row','none'})];">
    284                 <td colspan="3" align="right"><:hydraulic:val_max:> :</td>
    285                 <td colspan="2">
    286                     <input name="val_max_#VALEUR" type="text" value="#ENV{val_max_#VALEUR}"/>
    287                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{val_max_#VALEUR})</div>]
    288                 </td>
    289             </tr>
    290 
    291             <tr class="champs_var_#VALEUR" style="display:[(#ENV{choix_champs_#VALEUR}|=={varier_val_#VALEUR}|?{'table-row','none'})];">
    292                 <td colspan="3" align="right"><:hydraulic:pas_var:> :</td>
    293                 <td colspan="2">
    294                     <input name="pas_var_#VALEUR" type="text" value="#ENV{pas_var_#VALEUR}"/>
    295                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{pas_var_#VALEUR})</div>]
    296                 </td>
    297             </tr>
    298 
    299         </BOUCLE_caract>
    300 
    301             <!-- Fieldset + champs sur la précision du calcul.-->
    302             <tr id="param_calc_lechapt_calmon">
    303                 <td colspan="5"><div class="hyd_formulaire_chapitre"><:hydraulic:param_calcul:></div></td>
    304             </tr>
    305 
    306             <tr id="precision_lechapt_calmon">
    307                 <td align="right">
    308                     <:hydraulic:precision:> :
    309                 </td>
    310                 <td>
    311                     <input id="champs_rPrec" type="text" value="#ENV{rPrec}" maxlength="30" name="rPrec"/>
    312                     [<div class='hyd_erreur'>(#ENV**{erreurs}|table_valeur{rPrec})</div>]
    313                 </td>
    314             </tr>
     9        <!-- On génère les champs du formulaire en suivant le tableau saisies -->
     10        <INCLURE{fond=hyd_inc/formulaire_champs,env}>
    31511
    31612            <tr>
     
    32016            </tr>
    32117
    322       </tbody>
    323    </table>
     18        </tbody>
     19    </table>
    32420</form>
    32521
    326 [<div class='hydraulic_resultat' id="resultat_lechapt_calmon">(#ENV*{message_ok})</div>]
     22[<div id="hyd_resultat">(#ENV*{message_ok})</div>]
  • _plugins_/hydraulic/trunk/formulaires/lechapt_calmon.php

    r68473 r95765  
    3939 */
    4040
    41 // Cette fonction renvoit tous les indices des champs présents dans le formulaire.
    42 function mes_champs_coeff_materiau() {
    43     $mes_champs_coeff = array('L','M','N','Q','D','J','Lg');
    44     return $mes_champs_coeff;
    45 }
     41include_spip('hyd_inc/form_lechapt_calmon.class');
     42global $FLC;
     43$FLC = new form_lechapt_calmon;
    4644
    47 // Cette fonction renvoit seulement les paramètres fixes, ainsi que leur code pour le dictionnaires des langues
    48 function mes_champs_sans_coeff_materiau(){
    49     $mes_champs_sans_coeff = array('Q','D','J','Lg');
    50 
    51     return $mes_champs_sans_coeff;
     45function formulaires_lechapt_calmon_charger_dist() {
     46    global $FLC;
     47    return $FLC->charger();
    5248}
    5349
    5450
    55 /*
    56  * Tableau des données pour chaque type de tuyau. Ces valeurs sont associées
    57  * aux numéros des options du select (voir page lechapt_calmon.php)
    58  */
    59 function mes_saisies_materiau() {
    60     $type_materiaux = array(
    61 
    62                 '1'          => array(
    63                                        'L' =>1.863,
    64                                        'M' =>2,
    65                                        'N' =>5.33
    66                 ),
    67 
    68                 '2'          => array(
    69                                        'L' =>1.601,
    70                                        'M' =>1.975,
    71                                        'N' =>5.25
    72                 ),
    73 
    74                 '3'          => array(
    75                                        'L' =>1.40,
    76                                        'M' =>1.96,
    77                                        'N' =>5.19
    78                 ),
    79 
    80                 '4'          => array(
    81                                        'L' =>1.16,
    82                                        'M' =>1.93,
    83                                        'N' =>5.11
    84                 ),
    85 
    86                 '5'          => array(
    87                                        'L' =>1.1,
    88                                        'M' =>1.89,
    89                                        'N' =>5.01
    90                 ),
    91 
    92                 '6'          => array(
    93                                        'L' =>1.049,
    94                                        'M' =>1.86,
    95                                        'N' =>4.93
    96                 ),
    97 
    98                 '7'          => array(
    99                                        'L' =>1.01,
    100                                        'M' =>1.84,
    101                                        'N' =>4.88
    102                 ),
    103 
    104                 '8'          => array(
    105                                        'L' =>0.916,
    106                                        'M' =>1.78,
    107                                        'N' =>4.78
    108                 ),
    109 
    110                 '9'          => array(
    111                                        'L' =>0.971,
    112                                        'M' =>1.81,
    113                                        'N' =>4.81
    114                 ),
    115     );
    116 
    117   return $type_materiaux;
    118 
     51function formulaires_lechapt_calmon_verifier_dist(){
     52    global $FLC;
     53    return $FLC->verifier();
    11954}
    12055
    121 function champs_obligatoires($bCalc = false){
    122     /*
    123      * Ce tableau contient la liste de tous les champs du formulaire.
    124      * La suite de cette fonction se chargera de supprimer les valeurs non obligatoires.
    125      */
    126     $tChOblig = mes_champs_coeff_materiau();
    127     $tChCalc = mes_champs_sans_coeff_materiau();
    128 
    129     $choix_champs = array();
    130     foreach($tChCalc as $valeur){
    131         $choix_champs[$valeur] = _request('choix_champs_'.$valeur);
    132     }
    133 
    134     foreach($choix_champs as $cle=>$valeur){
    135         // Si le choix du select est de calculer une valeur...
    136         if(substr($valeur, 0,3) != 'val'){
    137             foreach($tChOblig as $cle1=>$valeur1){
    138                 if($cle == $valeur1){
    139                     // ... alors on peut supprimer de notre tableau le champs calculé (il n'est pas obligatoire car grisé)
    140                     unset($tChOblig[$cle1]);
    141                     // Permet de tasser le tableau
    142                     $tChOblig = array_values($tChOblig);
    143                 }
    144             }
    145         }
    146         // Si le choix du select est de faire varier une valeur alors on ajoute les 3 champs nécessaires
    147         if(substr($valeur, 0, 3) == 'var'){
    148             $tChOblig[] = 'val_min_'.$cle;
    149             $tChOblig[] = 'val_max_'.$cle;
    150             $tChOblig[] = 'pas_var_'.$cle;
    151         }
    152     }
    153     $tChOblig[] = 'rPrec';
    154 
    155     if($bCalc) {
    156         return $tChCalc;
    157     }
    158     else {
    159         return $tChOblig;
    160     }
    161 }
    162 
    163 function formulaires_lechapt_calmon_charger_dist() {
    164     $valeurs = array(
    165         'mes_saisies_materiaux' => mes_saisies_materiau(),
    166         'tableau_caract' => mes_champs_sans_coeff_materiau(),
    167         'typeMateriau' => 1,
    168         'rPrec' => 0.001,
    169         'L' => 1.863,
    170         'M' => 2,
    171         'N' => 5.33,
    172         'Q' => 3,
    173         'D' => 1.2,
    174         'J' => 0.634482025,
    175         'Lg'=> 100
    176     );
    177 
    178     $mes_champs = mes_champs_sans_coeff_materiau();
    179     // On parcourt tous le tableau des indices, et on initialise les valeurs des boutons radios, et des champs de variation
    180     foreach($mes_champs as $cle){
    181         if($cle == 'Q'){
    182             $valeurs['choix_champs_'.$cle] = 'calcul_val_'.$cle;
    183         }
    184         else{
    185             $valeurs['choix_champs_'.$cle] = 'val_fixe_'.$cle;
    186         }
    187 
    188         $valeurs['val_min_'.$cle] = 1;
    189         $valeurs['val_max_'.$cle] = 2;
    190         $valeurs['pas_var_'.$cle] = 0.1;
    191     }
    192 
    193     return $valeurs;
    194 }
    195 
    196 function formulaires_lechapt_calmon_verifier_dist(){
    197     $erreurs = array();
    198     $datas = array();
    199     $tChOblig= champs_obligatoires();
    200     // Vérifier que les champs obligatoires sont bien là :
    201     foreach($tChOblig as $obligatoire) {
    202         if (_request($obligatoire) == NULL) {
    203             $erreurs[$obligatoire] = _T('hydraulic:champ_obligatoire');
    204         }
    205         // Les coefficients des matériaux doivent être strictement positifs
    206         else if(($obligatoire == 'L' || $obligatoire == 'M' || $obligatoire == 'N') && _request($obligatoire) == 0){
    207             $erreurs[$obligatoire] = _T('hydraulic:valeur_positive');
    208         }
    209         else {
    210             $datas[$obligatoire] = _request($obligatoire);
    211         }
    212     }
    213 
    214     // Gestion des valeurs négatives
    215     foreach($datas as $champ=>$data) {
    216         if ($data < 0) $erreurs[$champ] = _T('hydraulic:valeur_positive_nulle');
    217     }
    218 
    219     if (count($erreurs)) {
    220         $erreurs['message_erreur'] = _T('hydraulic:saisie_erreur');
    221     }
    222 
    223     return $erreurs;
    224 }
    22556
    22657function formulaires_lechapt_calmon_traiter_dist(){
    227      /***************************************************************************
    228     *                        Calcul de Lechapt et calmon
    229     ****************************************************************************/
    230     include_spip('hyd_inc/cache');
    231     include_spip('hyd_inc/log.class');
    232     include_spip('hyd_inc/charge_datas');
    233     $datas = charge_datas();
    234     //spip_log($datas,'hydraulic');
    235     // On transforme les champs du tableau en variables
    236     foreach($datas as $cle=>&$valeur){
    237         ${$cle} = &$valeur;
    238     }
    239 
    240     $bNoCache = true; // true pour débugage
    241     if(!$bNoCache && is_file(HYD_CACHE_DIRECTORY.$CacheFileName)) {
    242         // On récupère toutes les données dans un cache déjà créé
    243         list($tAbs,$tRes) = ReadCacheFile($CacheFileName);
    244     }
    245     else {
    246         /*
    247          * Selon la variable à calculer, on gère les valeurs = à 0  et les valeurs infinies
    248          * et on fait le valcul correspondant.
    249          */
    250         $tDiv0 = array('Q'=>'Lg', 'D'=>'J', 'J'=>'D', 'Lg'=>'Q');
    251         $Div0 = $tDiv0[$ValCal];
    252 
    253         if(${$Div0} == 0 && _request("choix_champs_$Div0") != "varier_val_$Div0"){
    254             $tRes[] = 0;
    255         }
    256         else{
    257             $tRes = array(); // Tableau des résultats (ordonnées)
    258             $tAbs = array(); // Tableau des abscisses
    259             for($i = $min; $i <= $max; $i+= $pas){
    260                 $tAbs[] = $i;
    261                 if($i == 0 && _request("choix_champs_$Div0") == "varier_val_$Div0"){
    262                     $tRes[] = INF;
    263                 }
    264                 else{
    265                     switch($ValCal){
    266                         case 'Q':
    267                             $tRes[] = pow(((($J*pow($D, $N))/$L)*(1000/$Lg)), 1/$M);
    268                             break;
    269                         case 'D':
    270                             $tRes[] = pow(((($L*pow($Q, $M))/$J)*($Lg/1000)), 1/$N);
    271                             break;
    272                         case 'J':
    273                             $tRes[] = (($L*pow($Q, $M))/pow($D, $N))*($Lg/1000);
    274                             break;
    275                         case 'Lg':
    276                             $tRes[] = (($J*pow($D, $N))/($L*pow($Q,$M)))*1000;
    277                     }
    278                 }
    279             }
    280         }
    281 
    282         //Enregistrement des données dans fichier cache
    283         WriteCacheFile($CacheFileName,array($tabs,$tRes));
    284     }
    285     /***************************************************************************
    286     *                   Affichage du tableau de données
    287     ****************************************************************************/
    288     spip_log($datas,'hydraulic');
    289     include_spip('hyd_inc/affiche_resultats');
    290     $res['message_ok'] = AfficheResultats($datas, $tAbs, $tRes);
    291     return $res;
     58    global $FLC;
     59    return $FLC->traiter();
    29260}
    29361?>
  • _plugins_/hydraulic/trunk/hyd_inc/affiche_resultats.php

    r95022 r95765  
    4646 * @param $tAbs Tableau contenant les abscisses du résultat (paramètre qui varie)
    4747 * @param $tRes Tableau contenant les résultats du calcul
    48  * @param $tRes Tableau contenant les flags du résultats du calcul
     48 * @param $tFlag Tableau contenant les flags du résultats du calcul
    4949 */
    5050function AfficheResultats($datas, $tAbs, $tRes, $tFlag=false) {
     51    $echo = '';
    5152    $tLib = $datas['tLib'];
    5253    if(!isset($datas['ValVar'])) {
     
    6970        }
    7071    }
    71     $echo = GetResultTable($tCnt,$tEnt);
     72    $tableau_fixe = GetResultTable($tCnt,$tEnt);
    7273
    7374    // Affichage d'un tableau pour un paramètre qui varie
     
    7879        }
    7980        $tEnt = array($tLib[$datas['ValVar']],$tLib[$datas['ValCal']]);
    80         $echo .= '<table class="hyd_graph"><tr><td>'.GetResultTable($tCnt,$tEnt).'</td>';
     81        $tableau_variable = GetResultTable($tCnt,$tEnt);
    8182
    8283        // Si la première valeur est infinie alors ...
     
    9697        ****************************************************************************/
    9798        include_spip('hyd_inc/graph.class');
    98         $oGraph = new cGraph();
    99         // Ligne de Lechapt et calmon
     99        $oGraph = new cGraph('',$tLib[$datas['ValVar']],'');
    100100        if(isset($tRes)) {
    101101            $oGraph->AddSerie(
     
    107107        }
    108108        // Récupération du graphique
    109         $echo .= '<td>'.$oGraph->GetGraph('ligne_lechapt_calmon',400,600);
    110         $echo .= $tLib[$datas['ValVar']].'</td></tr></table>';
     109        $graph = $oGraph->GetGraph('graphique',400,600);
     110        $echo = $graph."\n";
    111111    }
     112    $echo .= '<table class="hyd_graph"><tr><td>'.$tableau_fixe.'</td>';
     113    if(isset($tableau_variable)) {
     114        $echo .= '<td width="5%">&nbsp;</td><td>'.$tableau_variable.'</td>';
     115    }
     116    $echo .= '</tr></table>';
    112117    return $echo;
    113118}
  • _plugins_/hydraulic/trunk/hyd_inc/cache.php

    r95022 r95765  
    11<?php
    22
    3 define('HYD_CACHE_DIRECTORY', _NOM_TEMPORAIRES_INACCESSIBLES.'hydraulic/');
    4 define('HYD_CACHE_MAX_SIZE', 1024*1024);
     3define('_HYD_CACHE_DIRECTORY', _NOM_TEMPORAIRES_INACCESSIBLES.'hydraulic/');
     4define('_HYD_CACHE_MAX_SIZE', 1024*1024);
    55
    66function WriteCacheFile($file_name, $file_content) {
    7    if(!is_dir(HYD_CACHE_DIRECTORY)) {
    8       mkdir(HYD_CACHE_DIRECTORY);
     7   if(!is_dir(_HYD_CACHE_DIRECTORY)) {
     8      mkdir(_HYD_CACHE_DIRECTORY);
    99   }
    10    if(is_dir(HYD_CACHE_DIRECTORY)) {
     10   if(is_dir(_HYD_CACHE_DIRECTORY)) {
    1111      if(mt_rand(0,5)==0) {
    12          if(CacheSize()>HYD_CACHE_MAX_SIZE) {
     12         if(CacheSize()>_HYD_CACHE_MAX_SIZE) {
    1313            CacheCleanAll();
    1414         }
    1515      }
    16       $file_name =HYD_CACHE_DIRECTORY.$file_name;
     16      $file_name =_HYD_CACHE_DIRECTORY.$file_name;
    1717      if($fichier_cache = fopen($file_name,'w')) {
    1818         fwrite($fichier_cache,serialize($file_content));
     
    2424
    2525function ReadCacheFile($FileName) {
    26    $FileName = HYD_CACHE_DIRECTORY.$FileName;
     26   $FileName = _HYD_CACHE_DIRECTORY.$FileName;
    2727   $aRetour = @unserialize(file_get_contents($FileName));
    2828   return $aRetour;
     
    3535 */
    3636function CacheSize() {
    37    $directory=HYD_CACHE_DIRECTORY;
     37   $directory=_HYD_CACHE_DIRECTORY;
    3838    $size = 0;
    3939    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
     
    4545
    4646function CacheCleanAll() {
    47     $dp = opendir(HYD_CACHE_DIRECTORY);
     47    $dp = opendir(_HYD_CACHE_DIRECTORY);
    4848    while($file = readdir($dp)) {
    4949        if($file !== '.' and $file != '..') {
    50             unlink(HYD_CACHE_DIRECTORY."/".$file);
     50            unlink(_HYD_CACHE_DIRECTORY."/".$file);
    5151        }
    5252    }
  • _plugins_/hydraulic/trunk/hyd_inc/charge_datas.php

    r68473 r95765  
    11<?php
    22
     3/**
     4 * Charge les données d'un formulaire avec choix des variables fixées, qui varient et à calculer
     5 * @param $bLibelles Remplit la clé tlib avec les libellés traduits des variables
     6 * @return un tableau avec les clés suivantes:
     7 *      - Couples clés/valeur des champs du formulaire
     8 *      - iPrec : nombre de décimales pour la précision des calculs
     9 *      - tLib: tableau avec couples clés/valeurs des libellés traduits des champs du formulaire
     10 *      - sLang : la langue en cours
     11 *      - CacheFileName : Le nom du fichier de cache
     12 *      - min, max, pas : resp. le min, le max et le pas de variation de la variable qui varie
     13 *      - i : pointeur vers la variable qui varie
     14 *      - ValCal : Nom de la variable à calculer
     15 *      - ValVar : Nom de la variable qui varie
     16 * @author David Dorchies
     17 * @date Juillet 2012
     18 */
    319function charge_datas($bLibelles = true) {
    420    global $spip_lang;
     
    622    $tChOblig = champs_obligatoires();
    723    $tChCalc = champs_obligatoires(true);
    8     //spip_log($tChOblig,'hydraulic');
    9     //spip_log($tChCalc,'hydraulic');
     24    spip_log($tChOblig,'hydraulic',_LOG_DEBUG);
    1025    $choix_radio = array();
    1126    $tLib = array();
     
    1732        if (_request($champ)){
    1833            $datas[$champ] = _request($champ);
     34        } else {
     35            $datas[$champ] = 0.;
    1936        }
    2037        $datas[$champ] = str_replace(',','.',$datas[$champ]); // Bug #574
  • _plugins_/hydraulic/trunk/hyd_inc/courbe_remous.php

    r59892 r95765  
    2121
    2222   // Boucle de calcul de la courbe de remous
    23    for($x = $xDeb + $dx; ($dx > 0 && $x <= $xFin) || ($dx < 0 && $x >= $xFin); $x += $dx) {
    24       $trX[] = round($x,$iPrec);
    25       $trY[] = (real)$oSection->CalcY_M1(end($trY));
    26       if($oParam->rDx > 0 xor !(end($trY) < $oSection->rHautCritique)) {
    27          $oLog->Add(_T('hydraulic:arret_calcul').' '.$x. ' m');
    28          break;
    29       }
    30    }
    31    return array($trX,$trY);
     23    for($x = $xDeb + $dx; ($dx > 0 && $x <= $xFin) || ($dx < 0 && $x >= $xFin); $x += $dx) {
     24        $rY = (real)$oSection->CalcY(end($trY));
     25        if($rY) {
     26            if(end($trY) > $oSection->rHautNormale xor $rY > $oSection->rHautNormale) {
     27                $oLog->Add(_T('hydraulic:pente_forte').' '.$x. ' m ('._T('hydraulic:reduire_pas').')',true);
     28            }
     29            $trX[] = round($x,$iPrec);
     30            $trY[] = $rY;
     31        } else {
     32            $oLog->Add(_T('hydraulic:arret_calcul').' '.$x. ' m');
     33            break;
     34        }
     35    }
     36    return array($trX,$trY);
    3237}
    3338?>
  • _plugins_/hydraulic/trunk/hyd_inc/dessinSection.class.php

    r95022 r95765  
    4949    private $hauteurDessin; // Hauteur du dessin en px
    5050    private $largeurDessin; // Largeur du dessin en px
    51     private $mesCouleurs = array('red', 'blue', 'orange', 'green', 'grey', 'black');  // Couleur des différentes lignes
     51    private $marges; // Marge à gauche et à droite du dessin pour le texte
     52    private $mesCouleurs = array('red', 'blue', 'orange', 'green', 'grey', 'black', 'pink');  // Couleur des différentes lignes
    5253    private $sectionClass;
    5354    private $donnees = array();
     
    5556    private $rSnXmax = 0; // Largeur maximum en m à figurer dans le dessin
    5657
    57     function __construct($hauteur, $largeur, &$section, $lib_data) {
     58    function __construct($hauteur, $largeur, $marges, &$section, $lib_data) {
    5859        $this->hauteurDessin = (real) $hauteur;
    59         $this->largeurDessin = (real) $largeur;
     60        $this->largeurDessin = (real) $largeur - $marges*2;
     61        $this->marges = (real) $marges;
    6062        $this->sectionClass = &$section;
    6163        $this->donnees = $lib_data;
    6264        // On détermine la valeur la plus grande dans le tableau
    6365        foreach($this->donnees as $val){
    64             if($val > $this->ValMax){
    65                 $this->ValMax = $val;
     66            if($val > $this->rValMax){
     67                $this->rValMax = $val;
    6668            }
    6769        }
     
    7274     * Rajoute une ligne à notre dessin.
    7375     * $color correspond à la couleur de la ligne
    74      * $val correspond à l'ordonnée exprimée en pixel de la ligne
    75      */
    76     function AddRow($color, $val){
    77         $ligneDessin = '$("#dessinSection").drawLine(0,'.$val.','.$this->largeurDessin.','.$val.', {color: "'.$color.'"});';
     76     * $y correspond à l'ordonnée exprimée en pixel de la ligne
     77     */
     78    function AddRow($color, $y){
     79        $gauche = $this->marges;
     80        $droite = round($gauche + $this->largeurDessin);
     81        $y = round($y);
     82        $ligneDessin = "
     83            cx.strokeStyle = \"$color\";
     84            cx.beginPath();
     85            cx.moveTo($gauche, $y);
     86            cx.lineTo($droite, $y);
     87            cx.stroke();";
    7888        return $ligneDessin;
    7989    }
     
    8494    private function GetDessinY($val) {
    8595        // La valeur maximum de l'échelle  en px correspondant à 10% de la hauteur afin de faire plus propre
    86         return round($this->hauteurDessin * (1- 0.9*$val/$this->ValMax), 1)-2;
     96        return round($this->hauteurDessin * (1- 0.9*$val/$this->rValMax), 1)-2;
    8797    }
    8898
     
    93103     */
    94104    private function GetDessinX($val,$Axe) {
    95         return round(($this->largeurDessin-14) * (1/2 + $Axe*$val/$this->SnXmax), 1)+7;
     105        return $this->marges + round(($this->largeurDessin-14) * (1/2 + $Axe*$val/$this->SnXmax), 1)+7;
    96106    }
    97107
     
    123133
    124134        // On définit le style de notre dessin
    125         $dessin = '<style type="text/css">
    126                     .canvas{
    127                         position: relative;
    128                         width:'.$this->largeurDessin.'px;
    129                         height:'.$this->hauteurDessin.'px;
    130                     }
    131                     </style>';
     135        $dessin = '<canvas id="cvsSection" width="'.($this->largeurDessin+2*$this->marges).'" height="'.$this->hauteurDessin.'"></canvas>';
    132136
    133137        // On créé la base de notre dessin de section
    134         $dessin.= '<script type="text/javascript">
    135                     $(document).ready(function(){';
     138        $dessin.= '
     139        <script type="text/javascript">
     140            var cx = document.getElementById("cvsSection").getContext("2d");
     141            cx.strokeStyle = "black";';
    136142        // Récupération des coordonnées de la section à dessiner
    137143        $tCoordSn = $this->sectionClass->DessinCoordonnees();
     
    144150        $xBergeGauche = $this->GetDessinX($LargeurBerge,-1);
    145151        $xBergeDroite = $this->GetDessinX($LargeurBerge,1);
    146         $dessin.= '$("#dessinSection").drawLine('.$xBergeGauche.', 0, '.$xBergeGauche.','.$diffHautBerge.', {stroke: 1});
    147                    $("#dessinSection").drawLine('.$xBergeDroite.', 0,'.$xBergeDroite.','.$diffHautBerge.', {stroke: 1});';
     152        $dessin.= "
     153            cx.setLineDash([5]);
     154            cx.beginPath();
     155            cx.moveTo($xBergeGauche, 0);
     156            cx.lineTo($xBergeGauche, $diffHautBerge);
     157            cx.moveTo($xBergeDroite, 0);
     158            cx.lineTo($xBergeDroite, $diffHautBerge);
     159            cx.stroke();
     160            cx.setLineDash([]);";
    148161
    149162        // Dessin de la section
    150 
    151163        $tSnX = array();
    152164        $tSnY = array();
     
    161173            $tSnY[] = $this->GetDessinY($tCoordSn['y'][$i]);
    162174        }
    163         $dessin.=   '$("#dessinSection").drawPolyline(
    164                         ['.implode(',',$tSnX).'],
    165                         ['.implode(',',$tSnY).'], {stroke: 4});';
    166 
    167         // On ajoute les différentes lignes avec couleur + valeur
    168         foreach($mesDonnees as $cle=>$valeur){
    169             if($cle != 'rYB'){
    170                 $dessin.= $this->AddRow($valeur[1], $valeur[0]);
    171             }
    172         }
    173 
    174         $dessin.= '});
    175             </script>';
    176 
    177         //Div qui va contenir notre dessin de section
    178         $dessin.='<div id="dessinSection" class="canvas">';
    179 
    180         // Pour alterner le placement des libellés
    181         $droiteGauche = 0;
     175        $dessin .= sprintf('
     176            cx.lineWidth = 4;
     177            cx.beginPath();
     178            cx.moveTo(%d,%d);',$tSnX[0],$tSnY[0]);
     179        for($i=1; $i<count($tSnX); $i++) {
     180            $dessin .= sprintf('
     181            cx.lineTo(%d,%d);',$tSnX[$i],$tSnY[$i]);
     182        }
     183        $dessin .= '
     184            cx.stroke();
     185            cx.lineWidth = 1.0;';
     186
     187        // Affichage des valeurs pour chaque trait
     188        $dessin .= '
     189            cx.font = "12px sans-serif";';
     190        $bDroiteGauche = true; // Pour alterner le placement des libellés
    182191        // On rajoute les différents libelles avec la couleur qui va bien
    183192        foreach($mesDonnees as $cle=>$valeur){
    184193            if($cle != 'rYB'){
    185                 $placement = ($droiteGauche%2==0)?'left: -80px':'right: -80px;';
    186                 $dessin.= '<p style="position: absolute; top:'.($valeur[0]-8).'px;'.$placement.'; width: auto; display: inline-block; color:'.$valeur[1].'">'.$cle.' = '.round($this->donnees[$cle], $this->sectionClass->oP->iPrec).'</p>';
    187                 $droiteGauche++;
     194                list($y,$color) = $valeur;
     195                // Ajout du trait
     196                $dessin .= $this->AddRow($color, $y);
     197                // Ajout du texte
     198                $dessin .= '
     199            cx.fillStyle = "'.$color.'";
     200            cx.textAlign="'.((!$bDroiteGauche)?'left':'right').'";';
     201                $x = ($bDroiteGauche)?($this->marges-5):($this->marges+$this->largeurDessin+5);
     202                $texte = $cle.' = '.round($this->donnees[$cle], $this->sectionClass->oP->iPrec);
     203                $y += 4;
     204                $dessin.= "
     205            cx.fillText(\"$texte\",$x,$y);";
     206                $bDroiteGauche = !$bDroiteGauche;
    188207            }
    189208        }
    190209
    191         $dessin.= '</div>';
     210        $dessin.= '
     211            </script>';
    192212
    193213        return $dessin;
  • _plugins_/hydraulic/trunk/hyd_inc/formulaire.php

    r93248 r95765  
    99 */
    1010function hyd_formulaires_verifier($tData,$tCtrl) {
     11
     12    $erreurs = array();
    1113
    1214    foreach($tCtrl as $Cle=>$Ctrl) {
  • _plugins_/hydraulic/trunk/hyd_inc/graph.class.php

    r60821 r95765  
    4949    private $tSeries;   //!< Tableau des séries
    5050    private $echo;  //!< Chaine contenant le script jqPlot
     51    private $tLabels; /// Respectivement les titres du graphique, des abscisses, des ordonnées
    5152    ///@todo Transférer les deux constantes de graduation dans la configuration du plugin
    5253    const nbTickXmax = 10; // Nbre max de graduation sur l'axe des abscisses
    5354    const nbTickYmax = 10; // Nbre max de graduation sur l'axe des ordonnées
    5455
    55     function __construct() {
     56    function __construct($Title = '', $Xlabel='', $Ylabel='') {
    5657        $this->tSeries = array();
     58        $this->tLabels = array(
     59            'title' =>  $Title,
     60            'X'     =>  $Xlabel,
     61            'Y'     =>  $Ylabel
     62        );
    5763    }
    5864
     
    8591        $Xmin = min($tX);
    8692        $Xmax = max($tX);
    87        
     93
    8894        if($Xmin == $Xmax){
    89                         $Xmin = $Xmin * 0.9;
    90                         $Xmax = $Xmax * 1.1;
    91                 }
    92                
    93                 if($xMin == 0 && $Xmax == 0){
    94                         $Xmin = -1;
    95                         $Xmax = 1;
    96                 }
    97                
     95            $Xmin = $Xmin * 0.9;
     96            $Xmax = $Xmax * 1.1;
     97        }
     98
     99        if($Xmin == 0 && $Xmax == 0){
     100            $Xmin = -1;
     101            $Xmax = 1;
     102        }
     103
    98104        $r1 = ($Xmax - $Xmin) / floatval($Tmax);
    99105        $r2 = floor($r1 * pow(10,(-floor(log10($r1))))*10)/10;
     
    167173            implode(', ',$tS));
    168174        $this->echo .= '
    169             {
     175            {';
     176        if($this->tLabels['title']) {
     177            $this->echo .= '
     178                title:\''.$this->tLabels['title'].'\',';
     179        }
     180        $this->echo .= '
    170181                seriesDefaults: {showMarker:false},';
    171182        $tS = array();
     
    196207        $this->echo .= sprintf('
    197208                axes:{
    198                     xaxis:{min:%s,
     209                    xaxis:{
     210                        label:\'%s\',
     211                        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
     212                        min:%s,
    199213                        max:%s,
    200214                        tickInterval:%s},
    201                     yaxis:{min:%s,
     215                    yaxis:{
     216                        label:\'%s\',
     217                        labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
     218                        min:%s,
    202219                        max:%s,
    203220                        tickInterval:%s,
     
    206223                }
    207224            });
    208         </script>', $Xmin, $Xmax, $XTick, $Ymin, $Ymax, $YTick);
     225        </script>',
     226            $this->tLabels['X'],$Xmin,$Xmax,$XTick,
     227            $this->tLabels['Y'],$Ymin,$Ymax,$YTick);
    209228
    210229        return $this->echo;
  • _plugins_/hydraulic/trunk/hyd_inc/ouvrage.class.php

    r95022 r95765  
    7272     * - CT : Coefficient de débit partie triangulaire pour les trapézoïdales
    7373     * - CS : Coefficient de débit de la surverse
    74      * - P : Précision du calcul
     74     * - rPrec : Précision du calcul
    7575     */
    7676    private $tP = array();
     
    222222                    $rVarC=$X;
    223223                    list($Q,$nFlag) = $this->OuvrageQ();
    224                     if($QT!=0 && abs($Q/$QT-1.) <= $this->tP['P']) {break;}
     224                    if($QT!=0 && abs($Q/$QT-1.) <= $this->tP['rPrec']) {break;}
    225225                    if($QT < $Q xor $Q1 <= $Q2) {
    226226                        // QT < IQ et Q(X1) > Q(X2) ou pareil en inversant les inégalités
  • _plugins_/hydraulic/trunk/hyd_inc/section.class.php

    r95022 r95765  
    4040    public $iPrec;  /// Précision en nombre de décimales
    4141    public $rYB;    /// Hauteur de berge
    42 
    43     function __construct($rKs, $rQ, $rIf, $rPrec, $rYB, $rYCL = 0, $rDx = 0, $rLong = 0) {
     42    public $sResolution; /// Méthode de résolution "Euler" ou "RK4"
     43
     44    function __construct($rKs, $rQ, $rIf, $rPrec, $rYB, $rYCL = 0, $rDx = 0, $rLong = 0, $sResolution = '') {
     45        $this->sResolution = $sResolution;
    4446        $this->rYCL=(real) $rYCL;
    4547        $this->rKs=(real) $rKs;
     
    149151        }
    150152        //~ spip_log($this->arCalc,'hydraulic.'._LOG_DEBUG);
    151         if(!isset($this->arCalc[$sDonnee]) | !$this->arCalc[$sDonnee]) {
     153        if(!isset($this->arCalc[$sDonnee]) | (isset($this->arCalc[$sDonnee]) && !$this->arCalc[$sDonnee])) {
    152154            // La donnée a besoin d'être calculée
    153155            switch($sDonnee) {
     
    378380    * @return Tirant d'eau
    379381    */
    380     public function CalcY_M1($Y) {
     382    public function CalcY_Euler($Y) {
    381383        // L'appel à Calc('J') avec Y en paramètre réinitialise toutes les données dépendantes de la ligne d'eau
    382         return $Y+ $this->oP->rDx * $this->CalcdYdX($Y);
    383     }
     384        $Y2 = $Y+ $this->oP->rDx * $this->CalcdYdX($Y);
     385        if($this->oP->rDx > 0 xor !($Y2 < $this->rHautCritique)) {
     386            return false;
     387        } else {
     388            return $Y2;
     389        }
     390    }
     391
    384392
    385393   /**
     
    391399        $rDx = $this->oP->rDx;
    392400        $rk1 = $this->CalcdYdX($Y);
     401        if($this->oP->rDx > 0 xor !($Y + $rDx / 2 * $rk1 < $this->rHautCritique)) {return false;}
    393402        $rk2 = $this->CalcdYdX($Y + $rDx / 2 * $rk1);
     403        if($this->oP->rDx > 0 xor !($Y + $rDx / 2 * $rk2 < $this->rHautCritique)) {return false;}
    394404        $rk3 = $this->CalcdYdX($Y + $rDx / 2 * $rk2);
     405        if($this->oP->rDx > 0 xor !($Y + $rDx / 2 * $rk3 < $this->rHautCritique)) {return false;}
    395406        $rk4 = $this->CalcdYdX($Y + $rDx * $rk3);
     407        if($this->oP->rDx > 0 xor !($Y + $rDx / 6 * ($rk1 + 2 * ($rk2 + $rk3) + $rk4) < $this->rHautCritique)) {return false;}
    396408        return $Y + $rDx / 6 * ($rk1 + 2 * ($rk2 + $rk3) + $rk4);
     409    }
     410
     411
     412   /**
     413    * Calcul du point suivant d'une courbe de remous
     414    * @return Tirant d'eau
     415    */
     416    public function CalcY($rY) {
     417        $funcCalcY = 'CalcY_'.$this->oP->sResolution;
     418        if(method_exists($this,$funcCalcY)) {
     419            return $this->$funcCalcY($rY);
     420        } else {
     421            return false;
     422        }
    397423    }
    398424
  • _plugins_/hydraulic/trunk/hyd_inc/section.php

    r93248 r95765  
    2828 * - Caractéristiques des différents types de section
    2929 * - Caractéristiques du bief
     30 * @param $bCourbe Pour ajouter la longueur du bief dans la liste des champs (calcul courbe de remous)
    3031 */
    31 function caract_communes() {
    32     // Tableau niveau 1 : Composantes
    33     // pour chaque variable, a clé est le nom de la variable dans le formulaire, et la valeur contient un tableau avec le code de langue, la valeur par défaut et les tests de de vérification à effectuer sur le champ (o : obligatoire, p : positif, n : nul)
    34 
     32function mes_saisies_section($bCourbe=false) {
     33    /* Tableau niveau 1 : Composantes pour chaque variable, la clé est le nom de
     34     * la variable dans le formulaire, et la valeur contient un tableau avec le
     35     * code de langue, la valeur par défaut et les tests de de vérification à
     36     * effectuer sur le champ (o : obligatoire, p : positif, n : nul accepté)
     37     */
    3538    $caract_com = array(
    3639        'FT' => array(
     
    4548            'def_section_rect',
    4649            array(
    47                 'rLargeurBerge'  =>array('largeur_fond',2.5,'op'),
     50                'rLargeurFond'  =>array('largeur_fond',2.5,'op'),
    4851            )
    4952        ),
     
    6871       'caract_bief',
    6972       array(
    70              'rKs'    =>array('coef_strickler',50,'op'),
    71              'rLong'  =>array('longueur_bief',50,'op'),
    72              'rIf'    =>array('pente_fond',0.005,'opn'),
    73              'rYBerge'=>array('h_berge',1,'opn')
    74             )
    75    );
     73             'rKs'    =>array('coef_strickler',40,'op')));
     74    if($bCourbe) {
     75        // Pour la courbe de remous, on a besoin de la longueur du bief en plus
     76        $caract_com['c_bief'][1]['rLong'] = array('longueur_bief',100,'op');
     77    }
     78    $caract_com['c_bief'][1]['rIf'] = array('pente_fond',0.001,'opn');
     79    $caract_com['c_bief'][1]['rYB'] = array('h_berge',1,'opn');
    7680
    7781    return $caract_com;
  • _plugins_/hydraulic/trunk/hydraulic.css.html

    r93248 r95765  
    4242.hyd_erreur {
    4343    background-color: #FBE3E4;
    44 }
    45 
    46 
    47 .hyd_erreur {
    4844    color: red;
    4945}
     
    6662    width: 60%;
    6763    padding: 0.5em;
    68     align: center;
     64    text-align: center;
    6965    margin: 0.5em;
    7066}
     
    9692}
    9793
    98 #jqplot_ligne_lechapt_calmon, #jqplot_courbe_remous, #jqplot_ligne_normale_critique{
     94#jqplot, #jqplot, #jqplot{
    9995    margin: 0 auto;
    10096}
     
    121117}
    122118
    123 #tableau_nc {
    124     margin: 0 auto;
    125 }
    126 
    127 #resultat_nc, #resultat_lechapt_calmon {
     119#hyd_resultat {
    128120    text-align: center;
    129121}
     
    132124    vertical-align:top;
    133125}
     126
     127.hyd_inlineblock {
     128    display: inline-block;
     129    vertical-align: top;
     130    margin: 0px 5px;
     131}
  • _plugins_/hydraulic/trunk/lang/hydraulic_en.php

    r95022 r95765  
    2121    'calculer_lechapt_calmon' => "Calculation with Lechapt and Calmon formula",
    2222    'calcul_val'        => "Value to calculate",
    23     'choix_section'     => "Choice of section type",
    2423    'caract'            => "Features",
    2524    'caract_globale'    => "Overall features",
     25    'caract_hydraulique'=> "Hydraulic features",
    2626    'caract_ouvrages'   => "Device features",
    2727    'charge_spe'        => "Specific head (m)",
    2828    'choix_donnee_calc' => "Choice of the data to compute",
    2929    'choix_ouvrage'     => "Device",
     30    'choix_resolution'  => "Resolution method",
     31    'choix_section'     => "Choice of section type",
    3032    'charge_critique'   => "Critical head (m)",
    3133    'cote_eau'          => "Water level (m)",
     
    4648    'erreur_val_positive' => "This value must be strictly positive",
    4749    'erreur_val_positive_nulle' => "This value must be positive or null",
     50    'euler_explicite'   => "Explicit Euler",
    4851     // F
    4952    'flag_erreur_calcul'=> "Calculation error",
     
    120123    'param_ZM'          => "Cote de l'eau à l'amont (m)",
    121124    'param_ZV'          => "Côte de l'eau à l'aval (m)",
     125    'pente_forte'       => "The water line slope is too steep at abscissa",
    122126    'precision'         => "Display accuracy (m)",
    123127    'perim_mouille'     => "Wetted perimeter",
     
    125129    //R
    126130    'rayon_hyd'         => "Hydraulic radius",
     131    'reduire_pas'       => "The discretisation step should be reduced",
    127132    'rugosite_nc'       => "Roughness (Strickler m<sup>1/3</sup>s<sup>-1</sup>)",
     133    'runge_kutta'       => "Runge–Kutta fourth-order",
    128134    //S
    129135    'saisie_erreur'     => "Your entry contains errors!",
  • _plugins_/hydraulic/trunk/lang/hydraulic_fr.php

    r95022 r95765  
    2121    'calculer_lechapt_calmon' => "Calcul avec la formule de Lechapt et Calmon",
    2222    'calcul_val'        => "Paramètre à calculer",
    23     'choix_section'     => "Choix du type de section",
    2423    'caract'            => "Caractéristiques",
    2524    'caract_globale'    => "Caractéristiques globales",
     25    'caract_hydraulique'=> "Caractéristiques hydrauliques",
    2626    'caract_ouvrages'   => "Caractéristiques de l'ouvrage",
    2727    'charge_spe'        => "La charge spécifique (m)",
    2828    'choix_donnee_calc' => "Choix de la donnée à calculer",
    2929    'choix_ouvrage'     => "Ouvrage",
     30    'choix_resolution'  => "Méthode de résolution",
     31    'choix_section'     => "Choix du type de section",
    3032    'charge_critique'   => "La charge critique (m)",
    3133    'cote_eau'          => "Cote de l'eau (m)",
     
    4648    'erreur_val_positive' => "Cette valeur doit être strictement positive",
    4749    'erreur_val_positive_nulle' => "Cette valeur doit être positive ou nulle",
     50    'euler_explicite'   => "Euler explicite",
    4851    // F
    4952    'flag_erreur_calcul'=> "Erreur de calcul",
     
    120123    'param_ZM'          => "Cote de l'eau à l'amont (m)",
    121124    'param_ZV'          => "Côte de l'eau à l'aval (m)",
     125    'pente_forte'       => "La pente de la ligne d'eau est trop forte à l'abscisse",
    122126    'precision'         => "Précision de calcul(m)",
    123127    'perim_mouille'     => "Le périmètre mouillé (m)",
     
    125129    //R
    126130    'rayon_hyd'         => "Le rayon hydraulique (m)",
     131    'reduire_pas'       => "Il faudrait réduire le pas de discrétisation",
    127132    'rugosite_nc'       => "Rugosité (Strickler en m<sup>1/3</sup>s<sup>-1</sup>)",
     133    'runge_kutta'       => "Runge Kutta d'ordre 4",
    128134    //S
    129135    'saisie_erreur'     => "Votre saisie contient des erreurs !",
  • _plugins_/hydraulic/trunk/plugin.xml

    r95022 r95765  
    55    <auteur>David Dorchies, Médéric Dulondel</auteur>
    66    <licence>GNU/GLP</licence>
    7     <version>0.7.2</version>
     7    <version>0.7.3</version>
    88    <necessite id="lib:dist" src="https://bitbucket.org/cleonello/jqplot/downloads/jquery.jqplot.1.0.8r1250.zip" />
    99    <slogan>
Note: See TracChangeset for help on using the changeset viewer.